<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SmartDukaan &#x2013; /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/</title><description>WebSVN RSS feed &#x2013; SmartDukaan</description><lastBuildDate>Thu, 17 Sep 2026 04:21:10 +0530</lastBuildDate><generator>WebSVN 2.8.6-DEV</generator><language>en</language><link>https://svn.smartdukaan.com/log.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;max=40&amp;</link><atom:link href="https://svn.smartdukaan.com/rss.php?isdir=1&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;repname=SmartDukaan" rel="self" type="application/rss+xml" />
<item><pubDate>Fri, 21 Aug 2026 15:27:23 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37379 – Restore insurance lines on invoice PDFs dropped by the r37066 ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 8 file(s) modified&lt;/strong&gt;&lt;br/&gt;Restore insurance lines on invoice PDFs dropped by the r37066 renderer refactor&lt;br /&gt;
&lt;br /&gt;
The modular doc-generation extraction moved the item table into ItemsTableSection,&lt;br /&gt;
which iterates only DocumentData.items() -&gt; model.getOrderItems(). The legacy&lt;br /&gt;
renderer also emitted a row per CustomInsurancePolicy (PdfUtils r36674, lines&lt;br /&gt;
241-261); that block was lost in the extraction and nothing consumed&lt;br /&gt;
getInsurancePolicies() any more.&lt;br /&gt;
&lt;br /&gt;
Effect: an extended-warranty policy is not a catalog item, so it has no&lt;br /&gt;
fofo_order_item row. Insurance sold after the device sale gets its own invoice&lt;br /&gt;
whose only line is the policy, so the whole table came out empty and the totals&lt;br /&gt;
- which SummarySection derives from the table, not from FofoOrder.totalAmount -&lt;br /&gt;
printed as 0.00 / &apos;Zero Rupees Only&apos; (e.g. HRJND1424/94). On a combined&lt;br /&gt;
device+insurance invoice the policy line vanished silently and the invoice total&lt;br /&gt;
and GST were understated by the premium. InsuranceController&apos;s insurer document&lt;br /&gt;
pack, whose model carries policies and no order items at all, hit an NPE.&lt;br /&gt;
&lt;br /&gt;
Fold the policies in at DocumentData.items(), the single accessor every section&lt;br /&gt;
reads, so the fix covers all callers at once. Column mapping mirrors the legacy&lt;br /&gt;
renderer: quantity 1, no discount, taxable value repeated in the Rate column.&lt;br /&gt;
Only the applicable tax side is populated (CGST/SGST or IGST) rather than both&lt;br /&gt;
as the policy model carries them, matching how real order items are built, so&lt;br /&gt;
ItemsTableSection&apos;s taxAmount = cgst+sgst+igst stays correct on margin-scheme&lt;br /&gt;
invoices. With no policies the model&apos;s own list is returned untouched.&lt;br /&gt;
&lt;br /&gt;
Tests: InsuranceInvoiceRenderTest asserts on extracted PDF text (insurance-only,&lt;br /&gt;
intra/inter-state GST split, combined invoice, and a no-insurance control), so it&lt;br /&gt;
holds on any machine unlike the pixel goldens; three golden baselines added.&lt;br /&gt;
Verified all 14 pre-existing golden fixtures render byte-identical before and&lt;br /&gt;
after.&lt;br /&gt;
&lt;br /&gt;
Also set java.awt.headless=true on the test JVM: the golden harness rasterizes&lt;br /&gt;
through PDFBox, whose font handling calls&lt;br /&gt;
GraphicsEnvironment.getLocalGraphicsEnvironment() and made the forked JVM attach&lt;br /&gt;
to the macOS window server as a Foreground app, stealing focus on every run.&lt;br /&gt;
Test-only property, no effect on the built war.&lt;/div&gt;~ /trunk/profitmandi-common/build.gradle&lt;br /&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/DocumentData.java&lt;br /&gt;~ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenInvoiceV2Test.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/InsuranceInvoiceRenderTest.java&lt;br /&gt;~ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/PdfFixtures.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-insurance-combined-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-insurance-only-inter-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-insurance-only-p0.png&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37379</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37379</guid></item>
<item><pubDate>Tue, 04 Aug 2026 15:27:27 +0530</pubDate><dc:creator>ranu</dc:creator><title>Rev 37220 – invoice logo changed</title><description>&lt;div&gt;&lt;strong&gt;ranu – 4 file(s) modified&lt;/strong&gt;&lt;br/&gt;invoice logo changed&lt;/div&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/PartiesSection.java&lt;br /&gt;~ /trunk/profitmandi-common/src/main/resources/sdlogo.png&lt;br /&gt;+ /trunk/profitmandi-common/src/main/resources/sdlogoNew.png&lt;br /&gt;+ /trunk/profitmandi-common/src/main/resources/sdlogoold.png&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37220</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37220</guid></item>
<item><pubDate>Fri, 10 Jul 2026 19:55:22 +0530</pubDate><dc:creator>amit</dc:creator><title>Rev 37066 – Modular invoice/note PDF generation: extract DocumentRenderer + reusable sections + ...</title><description>&lt;div&gt;&lt;strong&gt;amit – 60 file(s) modified&lt;/strong&gt;&lt;br/&gt;Modular invoice/note PDF generation: extract DocumentRenderer + reusable sections + two-axis tax abstraction out of PdfUtils (now thin shims); folded per-tax invoice columns; note Invoice-Ref + type detection; golden-image test harness&lt;/div&gt;~ /trunk/profitmandi-common&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/DocumentData.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/DocumentDataAdapter.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/DocumentRenderer.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/PdfContext.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/FooterSection.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/HeaderSection.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/ItemsTableSection.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/PartiesSection.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/Section.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/section/SummarySection.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/Styles.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/support&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/support/Assets.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/support/CancelledStamp.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/support/Formatting.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/support/SectionHelpers.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax/InterStateTaxColumns.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax/IntraStateTaxColumns.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax/TaxColumns.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax/TaxColumnsFactory.java&lt;br /&gt;+ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/document/tax/TaxTotals.java&lt;br /&gt;~ /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/util/PdfUtils.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/DocumentDataAdapterTest.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenCreditNoteTest.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenDebitNoteTest.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenInvoiceV1Test.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenInvoiceV2Test.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/GoldenPdfHarness.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/PdfFixtures.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/golden/SampleDocumentGeneratorTest.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/tax&lt;br /&gt;+ /trunk/profitmandi-common/src/test/java/com/spice/profitmandi/common/document/tax/TaxColumnsTest.java&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/cn-inter-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/cn-intra-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/dn-inter-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/dn-intra-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/dn-po-suppressed-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v1-inter-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v1-intra-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v1-margin-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-dc-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-inter-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-intra-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-margin-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-multiorder-p0.png&lt;br /&gt;+ /trunk/profitmandi-common/src/test/resources/golden/v2-po-orderdate-p0.png&lt;br /&gt;</description><link>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37066</link><guid>https://svn.smartdukaan.com/revision.php?repname=SmartDukaan&amp;path=%2Ftrunk%2Fprofitmandi-common%2Fsrc%2Fmain%2Fjava%2Fcom%2Fspice%2Fprofitmandi%2Fcommon%2Fdocument%2F&amp;isdir=1&amp;rev=37066</guid></item>
</channel></rss>