@unisim/doc 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -90,6 +90,13 @@ const { blob, pages, dropped } = businessDocToPdf(doc) // the same numbers, pr
90
90
  - **Language and number style are separate.** `language: 'en' | 'fr'` picks the
91
91
  wording; `numberStyle: 'fr' | 'en'` picks `163 000 €` vs `€163,000`. The
92
92
  golden fixture is English text with French numbers.
93
+ - **Discounts (0.10.0, replacing `listPrice`):** `discount: { percent } |
94
+ { amount }` on a line (per unit — the catalogue `unitPrice` prints struck
95
+ through above the discounted one, with "-10%" for a percentage) and on the
96
+ whole document (off the subtotal, before tax; the totals read Subtotal,
97
+ Discount, then net/tax/gross). A document discount comes off each VAT rate in
98
+ proportion, each base rounded once and summing to the net. The client may
99
+ carry a `contact` (name, role, email), printed under their address.
93
100
  - **Tax modes:** `export-exempt` and `reverse-charge` print `taxNote` under the
94
101
  totals; `standard` prints net, one row per rate, then the gross.
95
102
  - **Two steps:** `layoutBusinessDoc` returns a display list in top-down points,
@@ -1,7 +1,7 @@
1
- export type { BusinessClient, BusinessDoc, BusinessDocKind, BusinessDocLanguage, BusinessIssuer, BusinessLine, BusinessParty, CurrencyCode, NumberStyle, TaxMode, } from './model.js';
1
+ export type { BusinessClient, BusinessDiscount, BusinessDoc, BusinessDocKind, BusinessDocLanguage, BusinessIssuer, BusinessLine, BusinessParty, CurrencyCode, NumberStyle, TaxMode, } from './model.js';
2
2
  export { BUSINESS_LABELS } from './labels.js';
3
3
  export type { BusinessLabels } from './labels.js';
4
- export { computeTotals, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, lineTotal, wantsDecimals, } from './totals.js';
4
+ export { computeTotals, discountOff, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, lineTotal, unitNet, wantsDecimals, } from './totals.js';
5
5
  export type { BusinessTotals, PricedDoc, PricedLine, TaxBand } from './totals.js';
6
6
  export { businessDocToPdf, layoutBusinessDoc, wrapText } from './layout.js';
7
7
  export type { BusinessPdfResult, LayoutOp, LayoutPage } from './layout.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3E,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,OAAO,GACR,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,OAAO,EACP,aAAa,GACd,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3E,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA"}
@@ -1,4 +1,4 @@
1
1
  export { BUSINESS_LABELS } from './labels.js';
2
- export { computeTotals, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, lineTotal, wantsDecimals, } from './totals.js';
2
+ export { computeTotals, discountOff, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, lineTotal, unitNet, wantsDecimals, } from './totals.js';
3
3
  export { businessDocToPdf, layoutBusinessDoc, wrapText } from './layout.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/business/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE7C,OAAO,EACL,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,UAAU,EACV,SAAS,EACT,OAAO,EACP,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA"}
@@ -3,6 +3,8 @@ export interface BusinessLabels {
3
3
  kind: Record<BusinessDocKind, string>;
4
4
  date: string;
5
5
  clientRef: string;
6
+ /** Before the client's contact person. */
7
+ attention: string;
6
8
  contact: string;
7
9
  phone: string;
8
10
  email: string;
@@ -14,6 +16,9 @@ export interface BusinessLabels {
14
16
  unitPrice: string;
15
17
  lineTotal: string;
16
18
  notes: string;
19
+ subtotal: string;
20
+ /** "Discount 10%", or "Discount" for an amount. */
21
+ discount: (rate: string) => string;
17
22
  totalNet: string;
18
23
  tax: (rate: string) => string;
19
24
  total: string;
@@ -1 +1 @@
1
- {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/business/labels.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;CACxC;AAgFD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAsB,CAAA"}
1
+ {"version":3,"file":"labels.d.ts","sourceRoot":"","sources":["../../src/business/labels.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IAC1C,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAA;CACxC;AAsFD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAsB,CAAA"}
@@ -12,6 +12,7 @@ const EN = {
12
12
  },
13
13
  date: 'Date:',
14
14
  clientRef: 'Client no.:',
15
+ attention: 'Attn:',
15
16
  contact: 'Your contact:',
16
17
  phone: 'Phone:',
17
18
  email: 'Email:',
@@ -23,6 +24,8 @@ const EN = {
23
24
  unitPrice: 'Unit price',
24
25
  lineTotal: 'Line total',
25
26
  notes: 'Notes:',
27
+ subtotal: 'Subtotal',
28
+ discount: (rate) => (rate ? `Discount ${rate}%` : 'Discount'),
26
29
  totalNet: 'Total excl. tax',
27
30
  tax: (rate) => `VAT ${rate}%`,
28
31
  total: 'Total',
@@ -50,6 +53,7 @@ const FR = {
50
53
  },
51
54
  date: 'Date :',
52
55
  clientRef: 'N° client :',
56
+ attention: 'À l’attention de :',
53
57
  contact: 'Votre contact :',
54
58
  phone: 'Tél. :',
55
59
  email: 'E-mail :',
@@ -61,6 +65,8 @@ const FR = {
61
65
  unitPrice: 'Prix unitaire',
62
66
  lineTotal: 'Total ligne',
63
67
  notes: 'Notes :',
68
+ subtotal: 'Sous-total',
69
+ discount: (rate) => (rate ? `Remise ${rate} %` : 'Remise'),
64
70
  totalNet: 'Total HT',
65
71
  tax: (rate) => `TVA ${rate} %`,
66
72
  total: 'Total',
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/business/labels.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,gCAAgC;AA+BhC,MAAM,EAAE,GAAmB;IACzB,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,eAAe;KACjC;IACD,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;IACvB,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,iBAAiB;IAC3B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,GAAG;IAC7B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE;QACT,KAAK,EAAE,uBAAuB;QAC9B,QAAQ,EAAE,uBAAuB;QACjC,QAAQ,EAAE,uBAAuB;QACjC,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,sCAAsC;KACxD;IACD,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,WAAW;IACpB,YAAY,EAAE,mBAAmB;IACjC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;CACrC,CAAA;AAED,MAAM,EAAE,GAAmB;IACzB,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,mBAAmB;QAC7B,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,kBAAkB;KACpC;IACD,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,iBAAiB;IAC1B,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,eAAe;IAC1B,SAAS,EAAE,aAAa;IACxB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI;IAC9B,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE;QACT,KAAK,EAAE,8BAA8B;QACrC,QAAQ,EAAE,8BAA8B;QACxC,QAAQ,EAAE,8BAA8B;QACxC,OAAO,EAAE,aAAa;QACtB,eAAe,EAAE,mCAAmC;KACrD;IACD,UAAU,EAAE,oBAAoB;IAChC,OAAO,EAAE,YAAY;IACrB,YAAY,EAAE,0BAA0B;IACxC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;CACrC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAgD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA"}
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../../src/business/labels.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/business/layout.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAiC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,eAAe,CAAA;AAEnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAW7C,MAAM,MAAM,QAAQ;AAClB,yEAAyE;AACvE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC5F;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACrH;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE3F,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,QAAQ,EAAE,CAAA;CAChB;AA8DD,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B1F;AAmED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,EAAE,CAkMhE;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CA6BtG"}
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/business/layout.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAiC,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,KAAK,GAAG,EAAE,MAAM,eAAe,CAAA;AAEnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAY7C,MAAM,MAAM,QAAQ;AAClB,yEAAyE;AACvE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,GAC5F;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACrH;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAA;AAE3F,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,QAAQ,EAAE,CAAA;CAChB;AA8DD,0FAA0F;AAC1F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA4B1F;AAmED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,EAAE,CAgNhE;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,iBAAiB,CA6BtG"}
@@ -19,7 +19,7 @@
19
19
  // ---------------------------------------------------------------------------
20
20
  import { PdfDocument, rgb, widthOfText } from '../pdfcore.js';
21
21
  import { BUSINESS_LABELS } from './labels.js';
22
- import { computeTotals, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, wantsDecimals, } from './totals.js';
22
+ import { computeTotals, formatAmount, formatDate, formatMoney, formatQuantity, formatRate, unitNet, wantsDecimals, } from './totals.js';
23
23
  const PAGE_W = 595.28;
24
24
  const PAGE_H = 841.89;
25
25
  const LEFT = 25.5;
@@ -194,6 +194,11 @@ export function layoutBusinessDoc(doc) {
194
194
  p.text(COL_RIGHT, clientTop, SMALL, 'helvB', client.name);
195
195
  for (const l of client.address)
196
196
  p.text(COL_RIGHT, (clientTop += SMALL_STEP), SMALL, 'helv', l);
197
+ const who = [client.contact?.name, client.contact?.role].map((s) => s?.trim()).filter(Boolean).join(', ');
198
+ if (who)
199
+ p.text(COL_RIGHT, (clientTop += SMALL_STEP), SMALL, 'helv', colon(labels.attention, who));
200
+ if (client.contact?.email?.trim())
201
+ p.text(COL_RIGHT, (clientTop += SMALL_STEP), SMALL, 'helv', colon(labels.email, client.contact.email.trim()));
197
202
  clientTop += SMALL_STEP;
198
203
  let y = Math.max(leftTop, clientTop) + 11.3;
199
204
  if (doc.subject) {
@@ -231,7 +236,9 @@ export function layoutBusinessDoc(doc) {
231
236
  if (columns.some((c) => c.key === 'code'))
232
237
  cells.set('code', wrapText(line.code ?? '', 'helv', BODY, inner('code')));
233
238
  cells.set('description', wrapText(line.description ?? '', 'helv', BODY, inner('description')));
234
- const struck = line.listPrice !== undefined && line.listPrice > line.unitPrice;
239
+ // A discounted line: the catalogue price struck through above what is charged.
240
+ const net = unitNet(line);
241
+ const struck = net !== line.unitPrice;
235
242
  const priceLines = (struck ? 2 : 1) + (line.unit ? 0.87 : 0);
236
243
  const textLines = Math.max(cells.get('code')?.length ?? 0, cells.get('description').length, doc.kind === 'delivery-note' ? 1 : priceLines);
237
244
  // The fixture's 45.4pt rows are the product picture's height plus padding,
@@ -264,13 +271,17 @@ export function layoutBusinessDoc(doc) {
264
271
  case 'unitPrice': {
265
272
  let t = top;
266
273
  if (struck) {
267
- const list = amount(line.listPrice);
274
+ const list = amount(line.unitPrice);
268
275
  const w = widthOfText('helv', list, BODY);
269
276
  p.textRight(right, t, BODY, 'helv', list);
270
277
  p.current.ops.push({ op: 'rect', x: right - w, top: t + 7.9, width: w, height: 0.5, fill: INK });
278
+ // "-10 %" beside it, for a percentage.
279
+ if (line.discount && 'percent' in line.discount) {
280
+ p.textRight(right - w - 4, t + 1, 8, 'helvI', `-${formatRate(line.discount.percent, doc.numberStyle)}${doc.language === 'fr' ? '\u00a0%' : '%'}`);
281
+ }
271
282
  t += BODY_STEP;
272
283
  }
273
- p.textRight(right, t, BODY, 'helv', amount(line.unitPrice));
284
+ p.textRight(right, t, BODY, 'helv', amount(net));
274
285
  if (line.unit)
275
286
  p.textRight(right, t + 12.7, 8, 'helvI', line.unit);
276
287
  break;
@@ -286,6 +297,11 @@ export function layoutBusinessDoc(doc) {
286
297
  // ── Notes (left) and totals (right) ──────────────────────────────────────
287
298
  const totalRows = [];
288
299
  if (doc.kind !== 'delivery-note') {
300
+ if (totals.discount) {
301
+ const d = doc.discount;
302
+ totalRows.push([labels.subtotal, money(totals.subtotal), 'helv']);
303
+ totalRows.push([labels.discount(d && 'percent' in d ? formatRate(d.percent, doc.numberStyle) : ''), money(-totals.discount), 'helv']);
304
+ }
289
305
  if (doc.taxMode === 'standard' && totals.taxes.length) {
290
306
  totalRows.push([labels.totalNet, money(totals.net), 'helv']);
291
307
  for (const band of totals.taxes)
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/business/layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/business/layout.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,12 @@ export interface BusinessIssuer extends BusinessParty {
37
37
  export interface BusinessClient extends BusinessParty {
38
38
  /** The client's number in the issuer's books ("No. client"). */
39
39
  reference?: string;
40
+ /** The person it is for, under the address: "Attn: Name, Role" and their email (0.11.0). */
41
+ contact?: {
42
+ name?: string;
43
+ role?: string;
44
+ email?: string;
45
+ };
40
46
  }
41
47
  export interface BusinessLine {
42
48
  image?: PdfImage | null;
@@ -46,16 +52,25 @@ export interface BusinessLine {
46
52
  quantity: number;
47
53
  /** "unité", "day", "kg" — printed in italics under the unit price. */
48
54
  unit?: string;
49
- /** Minor units. */
55
+ /** The catalogue price, before any discount. Minor units. */
50
56
  unitPrice: number;
51
57
  /**
52
- * The undiscounted price, minor units. When it is higher than `unitPrice`
53
- * it is printed struck through above it.
58
+ * Off this line's unit price (0.10.0, replacing `listPrice`): the
59
+ * catalogue price is printed struck through above the discounted one.
54
60
  */
55
- listPrice?: number;
61
+ discount?: BusinessDiscount;
56
62
  /** Percent, for `taxMode: 'standard'`. Ignored otherwise. */
57
63
  taxRate?: number;
58
64
  }
65
+ /**
66
+ * A discount: a percentage, or an amount in minor units — per unit on a
67
+ * line, off the subtotal on a whole document.
68
+ */
69
+ export type BusinessDiscount = {
70
+ percent: number;
71
+ } | {
72
+ amount: number;
73
+ };
59
74
  export interface BusinessDoc {
60
75
  kind: BusinessDocKind;
61
76
  language: BusinessDocLanguage;
@@ -77,6 +92,8 @@ export interface BusinessDoc {
77
92
  issuer: BusinessIssuer;
78
93
  client: BusinessClient;
79
94
  lines: BusinessLine[];
95
+ /** Off the whole document, after the lines' own discounts and before tax. */
96
+ discount?: BusinessDiscount;
80
97
  notes?: string;
81
98
  paymentTerms?: string;
82
99
  /** Defaults on for quotes, estimates and delivery notes. */
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/business/model.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,eAAe,CAAA;AAE7F,sFAAsF;AACtF,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;AAErC,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;AAEhD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,eAAe,GAAG,UAAU,GAAG,gBAAgB,CAAA;AAErE,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAA;IACZ,mCAAmC;IACnC,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAA;IACrB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,YAAY,CAAA;IACtB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,MAAM,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,EAAE,YAAY,EAAE,CAAA;IAErB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/business/model.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { BusinessDoc, BusinessLine, CurrencyCode, NumberStyle } from './model.js';
1
+ import type { BusinessDiscount, BusinessDoc, BusinessLine, CurrencyCode, NumberStyle } from './model.js';
2
2
  export interface TaxBand {
3
3
  /** Percent. */
4
4
  rate: number;
@@ -9,6 +9,11 @@ export interface TaxBand {
9
9
  export interface BusinessTotals {
10
10
  /** Per line, minor units, same order as `doc.lines`. */
11
11
  lines: number[];
12
+ /** The lines added up. */
13
+ subtotal: number;
14
+ /** The whole document's discount, as a positive amount (0 for none). */
15
+ discount: number;
16
+ /** `subtotal - discount`: what tax is charged on. */
12
17
  net: number;
13
18
  /** Empty unless `taxMode` is `standard`. Sorted by rate. */
14
19
  taxes: TaxBand[];
@@ -18,13 +23,18 @@ export interface BusinessTotals {
18
23
  * Only what the arithmetic reads. An app's own line records (with a stored
19
24
  * picture rather than a `PdfImage`, an id, a catalogue link) fit as they are.
20
25
  */
21
- export type PricedLine = Pick<BusinessLine, 'quantity' | 'unitPrice' | 'listPrice' | 'taxRate'>;
26
+ export type PricedLine = Pick<BusinessLine, 'quantity' | 'unitPrice' | 'discount' | 'taxRate'>;
22
27
  /** What the totals need from a document. */
23
28
  export interface PricedDoc {
24
29
  lines: readonly PricedLine[];
25
30
  taxMode: BusinessDoc['taxMode'];
26
31
  decimals?: BusinessDoc['decimals'];
32
+ discount?: BusinessDiscount;
27
33
  }
34
+ /** How much a discount takes off `of`: never more than all of it, never less than nothing. */
35
+ export declare function discountOff(of: number, discount: BusinessDiscount | undefined): number;
36
+ /** A line's unit price after its own discount. */
37
+ export declare function unitNet(line: Pick<PricedLine, 'unitPrice' | 'discount'>): number;
28
38
  export declare function lineTotal(line: PricedLine): number;
29
39
  /**
30
40
  * Tax is computed on each rate's summed base, then rounded — once per rate,
@@ -1 +1 @@
1
- {"version":3,"file":"totals.d.ts","sourceRoot":"","sources":["../../src/business/totals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEtF,MAAM,WAAW,OAAO;IACtB,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC,CAAA;AAE/F,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;IAC5B,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;CACnC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc,CAiB5D;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CASrD;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAUzF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAKhH;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAGtE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnE;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}
1
+ {"version":3,"file":"totals.d.ts","sourceRoot":"","sources":["../../src/business/totals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExG,MAAM,WAAW,OAAO;IACtB,eAAe;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,4DAA4D;IAC5D,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAA;AAE9F,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;IAC5B,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC5B;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAItF;AAED,kDAAkD;AAClD,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,UAAU,CAAC,GAAG,MAAM,CAEhF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc,CA+B5D;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAUrD;AAED,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAUzF;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAKhH;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAGtE;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAEnE;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C"}
@@ -1,7 +1,18 @@
1
1
  // Totals and number formatting. Pure, so the app's on-screen totals and the
2
2
  // PDF's printed totals are the same function — not two that agree today.
3
+ /** How much a discount takes off `of`: never more than all of it, never less than nothing. */
4
+ export function discountOff(of, discount) {
5
+ if (!discount)
6
+ return 0;
7
+ const off = 'percent' in discount ? Math.round((of * discount.percent) / 100) : Math.round(discount.amount);
8
+ return Math.max(0, Math.min(of, off));
9
+ }
10
+ /** A line's unit price after its own discount. */
11
+ export function unitNet(line) {
12
+ return line.unitPrice - discountOff(line.unitPrice, line.discount);
13
+ }
3
14
  export function lineTotal(line) {
4
- return Math.round(line.quantity * line.unitPrice);
15
+ return Math.round(line.quantity * unitNet(line));
5
16
  }
6
17
  /**
7
18
  * Tax is computed on each rate's summed base, then rounded — once per rate,
@@ -10,7 +21,10 @@ export function lineTotal(line) {
10
21
  */
11
22
  export function computeTotals(doc) {
12
23
  const lines = doc.lines.map(lineTotal);
13
- const net = lines.reduce((sum, v) => sum + v, 0);
24
+ const subtotal = lines.reduce((sum, v) => sum + v, 0);
25
+ // A negative subtotal (credit lines) takes no discount.
26
+ const discount = subtotal > 0 ? discountOff(subtotal, doc.discount) : 0;
27
+ const net = subtotal - discount;
14
28
  const taxes = [];
15
29
  if (doc.taxMode === 'standard') {
16
30
  const bases = new Map();
@@ -18,14 +32,26 @@ export function computeTotals(doc) {
18
32
  const rate = line.taxRate ?? 0;
19
33
  bases.set(rate, (bases.get(rate) ?? 0) + lines[i]);
20
34
  });
21
- for (const [rate, base] of [...bases].sort((a, b) => a[0] - b[0])) {
35
+ // The whole-document discount comes off every rate in proportion, each
36
+ // base rounded once; the largest takes the rounding so they add up to `net`.
37
+ const sorted = [...bases].sort((a, b) => a[0] - b[0]);
38
+ if (discount) {
39
+ let left = net;
40
+ const largest = sorted.reduce((k, b, i) => (Math.abs(b[1]) > Math.abs(sorted[k][1]) ? i : k), 0);
41
+ sorted.forEach((b, i) => {
42
+ if (i !== largest)
43
+ left -= b[1] = Math.round((b[1] * net) / subtotal);
44
+ });
45
+ sorted[largest][1] = left;
46
+ }
47
+ for (const [rate, base] of sorted) {
22
48
  if (rate === 0)
23
49
  continue;
24
50
  taxes.push({ rate, base, tax: Math.round((base * rate) / 100) });
25
51
  }
26
52
  }
27
53
  const gross = net + taxes.reduce((sum, b) => sum + b.tax, 0);
28
- return { lines, net, taxes, gross };
54
+ return { lines, subtotal, discount, net, taxes, gross };
29
55
  }
30
56
  const SYMBOL = { EUR: '€', GBP: '£', USD: '$' };
31
57
  /** U+00A0 — WinAnsi can spell it, and it stops "163 000" wrapping between digits. */
@@ -39,8 +65,9 @@ export function wantsDecimals(doc) {
39
65
  return true;
40
66
  const totals = computeTotals(doc);
41
67
  const amounts = [
42
- ...doc.lines.flatMap((l) => [l.unitPrice, l.listPrice ?? 0]),
68
+ ...doc.lines.flatMap((l) => [l.unitPrice, unitNet(l)]),
43
69
  ...totals.lines,
70
+ totals.discount,
44
71
  ...totals.taxes.map((t) => t.tax),
45
72
  ];
46
73
  return amounts.some((v) => v % 100 !== 0);
@@ -1 +1 @@
1
- {"version":3,"file":"totals.js","sourceRoot":"","sources":["../../src/business/totals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"totals.js","sourceRoot":"","sources":["../../src/business/totals.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unisim/doc",
3
- "version": "0.9.1",
3
+ "version": "0.11.0",
4
4
  "description": "The suite's document stack: read Word, OpenDocument, RTF, HTML, Markdown, CSV, JSON and text into one model, and write it back out as PDF, text, HTML, Markdown, CSV or JSON. No runtime dependencies.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",