KEkingsley ebube onohinkingsleyonoh.hashnode.dev·May 11 · 4 min readThe Document Number Is Reserved Before the PDF ExistsThe hard part of document numbering is not incrementing an integer. It is deciding what happens when the integer is reserved, rendering starts, and the render fails. PostgreSQL sequences are built for speed. They are not built for legal numbering. A ...00
KEkingsley ebube onohinkingsleyonoh.hashnode.dev·May 11 · 3 min readThe Audit Trail Is a Data Structure, Not a Log MessageLogs can explain what a service thought happened. They do not prove what happened. Klevar Docs needed an audit trail for rendered documents, invoice events, credit note applications, signatures, voids, and attachments. The usual answer is an events t...00
KEkingsley ebube onohinkingsleyonoh.hashnode.dev·May 11 · 4 min readWhy a Rendered Invoice Can Still Fail SendAn invoice PDF can exist and still not be an invoice package. That sentence shaped the send path. The easy implementation would render the invoice, store the PDF, try to build the XML, and log a warning if the compliance layer failed. The client stil...00
KEkingsley ebube onohinkingsleyonoh.hashnode.dev·May 11 · 4 min readThe PDF Looked Correct Because the Template Was WrongThe first FZE letterhead looked fine. That was the problem. The rendered PDF had the right legal name, the right registration label, the right address, the right contact line, and the right visual structure. It passed the visual check because every v...00
KEkingsley ebube onohinkingsleyonoh.hashnode.dev·May 11 · 3 min readReachable Is Not the Same as CorrectThe CLI could create a credit note. That was the bad news. The umbrella documents compose command was built to make all document types reachable through one stable surface. Pass a type, an entity, and a JSON body. The server looks up the per-type Zod...00