Hey guys, how’s going? I have plenty of things to do, but coding is still one of my favorite activities, so I always try to save some time for it.This time I worked again on FatturaPA, which is the Italian electronic invoice.What I did, is that now, first of all, the CRM can now generate the FatturaPa XML directly from an invoice and validate it against the official XSD, before saving it. I also added the whole invoice lifecycle, from draft, to setn, delivered, accepted or rejected. The CRM can read the recepits from the SDI and show ufseful information when something goes wrong.Another important change is that invoices now become locked once they’re sent to the SDI. If something needs to be changed, the correct way is to create a credit note instead. This is much efficient in my opinion.I also started working on the SDI integration itself. For now there’s only a manual transport, but the system is built so that adding an actual provider later shouldn’t require changing the rest of the CRM. I did it this way, so I can decide which provider use, and not have to change everything.Besides invoicing, I added time tracking. You can start a timer from the top bar and see your hours directly on records. Timers also automatically close after a maximum amount of time, so nobody ends up with a 80-hour ticket because they forgot to stop it.Finally, I worked on email campaigns. You can create a campaign from a saved filter, send emails through a queue and manage unsubscribes. I also added some protections against things like open redirects and accidental unsubscribes.And now, the honest part: before writing this devlog, I ran the tests and guess what, the app didn’t even start.I used claude for debugging, cause I wans’t finding the error. Silly me, it was just a typo.
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.