Posts

InvoiceX-GUI: Google Summer of Code Project

Image
Most of you might be aware that this summer I have working as a Google Summer of Code student at Debian. It has been an enjoyable and satisfying journey so far. Full of anxiety, anxiousness and arousal if I may say so. I have been working of project which involves making GUI for Factur-X library. Factur-X library reads a PDF invoices to discover attached XML file which follows a certain e-invoicing standard such as Factur-X, Zugferd or UBL. It enables validating the xml, reading the values and also allows to edit them.
Most of the GUI related work has been completed and I thought it is the ripe time to explain this project and giving intricate working of the same. I will go through tech stack used, dependencies, writing tests, difficulties faced. FeaturesPreview the PDF opened.Search for any attached standard XML.Display fields in dock.Edit FieldsExport metadata in form of XML, JSON, YAMLSave the PDFAutomatically discover fields values for an empty XML Framework and Packaging For Inv…

GSoC 2018: Week 8

Image
It's been 54 days since Coding Period of Google Summer of Code 2018 started and 14 days since my last blog. Debian's GSoC admin have decided to ask for a weekly log from students working with Debian (every Friday). So here is what I did from 30th June to 6ndJuly.


This week I worked on the GUI, for invoice-x (invoicex-gui) and Factur-X. The on Factur-X was related to searching, learning and knowing. Here is what I did in this time:

Squashed bugs in invoicex-gui which were OS dependent.Add support to export metadata in form of YAML in Factur-XImplemented, Standardization and validation for currencies, countries, etc. For this I read about ISO standards (ISO: 3166 for country codes and ISO: 4217 for currency codes)Then I have been studying UBL (Universal Business Language) Standards. This will be another standard Factur-X will be supporting in addition to factur-x and zugferd Here is what I intend to do next week:
Complete integration of UBLIf possible make package for Factur-X for…

GSoC 2018: Week 6

Image
It's been 40 days since Coding Period of Google Summer of Code 2018 started and 7 days since my last blog. Debian's GSoC admin have decided to ask for a weekly log from students working with Debian (every Friday). So here is what I did from 16th June to 22ndJune.



This week, I was working on Graphical User Interface (GUI) for Factur-X. The work is done in invoicex-gui repository under invoice-x organisation. 

Earlier I had planned using Kivy as UI framework. But I dropped that idea because of Kivy's bug with default Debian 9 (Stretch) touchpad driver. So, now I am using PyQt5 as UI framework for this project. I spent a few days reading and using PyQt5. I have to admit the learning curve is very steep, due to unavailability of proper documentation. For most part I had to rely on Qt5's documentation in C++ and other sources such as StackOverflow and some personal blogs.

I have done the following things for GUI:

 Added basic layout for GUI, including Menubar, Toolbar, Right Si…

GSoC 2018: Week 5

Image
It's been 33 days since Coding Period of Google Summer of Code 2018 started and 7 days since my last blog. Debian's GSoC admin have decided to ask for a weekly log from students working with Debian (every Friday). So here is what I did from 9th June to 15th June.




This week was more about planning GUI and I tried to add a few features to factur-x library. Here is what I did: I worked on the script for nested attributes (issue-7). I made a Pull Request for the same (PR-31). I guess, it will be reviewed soon.I read about argparse and obtparse in detail to implement command line options for factur-x library and chose argparse for this. We have planned to implement them as sub commands (issue-3). Then, I implemented command line options. The work is done in branch issue/3.I have been playing with tesseract module and tried tesseract 4.0 (alpha). It shows promising results.Apart from all this, we planned the work for GUI, including mock-ups, packaging, adding new features and choosing…

GSoC 2018: Week 4

Image
It's been 26 days since Coding Period of Google Summer of Code 2018 started and 7 days since my last blog. Debian's GSoC admin have decided to ask for a weekly log from students working with Debian (every Friday). So here is what I did from 2nd June to 8th June.


This week, I worked on factur-x library and I can say it was the most exhilarating week to date since the commencement of coding period. I faced a few difficulties, discovered new facts and learned many things. I made three Pull Requests in week 3, but improved them this week and brought them to a level where they can be used. Manuel (my mentor), helped me with the designs of PRs and was very motivating. This is what I practically did this week:
 I worked on my three PRs from last week: Implementing JSON export, Adding preliminary Tests and Cleaning XML template files. We were finally able to merge all three PR. My initial JSON PR had about 130 lines of code but we reduced it to 19!I then implemented validation in form o…

GSoC 2018: Week 3

Image
It's been 19 days since Coding Period of Google Summer of Code 2018 started and 7 days since my last blog. Debian's GSoC admin have decided to ask for a weekly log from students working with Debian (every Friday). So here is what I did from 26th May to 1st June.


This week, I worked on factur-x library, adding more features and resolving existing bugs/issues. I haven't mentioned how we keep track of our work. My mentor Manuel, created issues in factur-x repository with description to let me know what features should be added and the enhancements to be made.

Here is what I did this week:
I have cleaned XML templates to remove dummy data and replace them with empty tags. Issue:22We (Manuel and I), converted all markdown documents to reStructuredText format. This involved changing three to four files in invoice2data library and a README file in factur-x library. PR:25Enhancement: I added more tests to the tests added last week. For this I learned about lxml library, how to navig…