SPB Git

spb/air Public MIT

AIR — The Language of Accounting.

Python 100%
4.9 KB · 149 lines yaml
Raw Blame History
1# Projet : AIR — Accounting Intermediate Representation2# Auteur : Simon-Pierre Boucher3# Contact : contact@spboucher.ai4#5# Golden cases — sales and refunds under CA-QC / CA-ON / CA-AB tax policies.6# Expected figures follow docs/research/canada-gst-qst.md:7#   GST 5%, QST 9.975% (both on the pre-GST price), half-up rounding to the8#   cent per Excise Tax Act s. 165.2(2) / RQ IN-203-V. Verified 2026-08-05.910cases:11  - name: sale_simple_qc12    description: "1000.00 CAD sale in Quebec on account: GST 50.00, QST 99.75 (research worked example)"13    air:14      events:15        - id: evt_sale_simple16          type: Sale17          date: 2026-07-1518          parties: {seller: "company:acme", buyer: "customer:cust_001"}19          amount: {amount: "1000.00", currency: CAD}20          tax: {jurisdiction: CA-QC}21    expected_entries:22      - id: je_evt_sale_simple23        lines:24          - ["1100", debit, "1149.75", CAD]25          - ["4000", credit, "1000.00", CAD]26          - ["2310", credit, "50.00", CAD]27          - ["2320", credit, "99.75", CAD]2829  - name: sale_multi_item_qc30    description: "CLAUDE.md flagship: 3 chairs at 333.33, paid by Visa immediately"31    air:32      events:33        - id: evt_sale_chairs34          type: Sale35          date: 2026-07-2036          description: "3 standard chairs"37          parties: {seller: "company:acme", buyer: "customer:cust_123"}38          items:39            - {sku: chair-std, qty: "3", unit_price: {amount: "333.33", currency: CAD}}40          payment: {method: card.visa, immediate: true}41          tax: {jurisdiction: CA-QC, codes: [GST, QST]}42    expected_entries:43      - id: je_evt_sale_chairs44        lines:45          - ["1000", debit, "1149.74", CAD]46          - ["4000", credit, "999.99", CAD]47          - ["2310", credit, "50.00", CAD]48          - ["2320", credit, "99.75", CAD]4950  - name: sale_rounding_qc51    description: "19.99 sale: GST 0.9995 rounds UP to 1.00; QST 1.9940 rounds DOWN to 1.99 (statute worked example)"52    air:53      events:54        - id: evt_sale_rounding55          type: Sale56          date: 2026-07-2157          amount: {amount: "19.99", currency: CAD}58          tax: {jurisdiction: CA-QC}59    expected_entries:60      - id: je_evt_sale_rounding61        lines:62          - ["1100", debit, "22.98", CAD]63          - ["4000", credit, "19.99", CAD]64          - ["2310", credit, "1.00", CAD]65          - ["2320", credit, "1.99", CAD]6667  - name: sale_exempt_qc68    description: "Exempt/zero-rated supply: no tax lines at all"69    air:70      events:71        - id: evt_sale_exempt72          type: Sale73          date: 2026-07-2274          amount: {amount: "500.00", currency: CAD}75          tax: {jurisdiction: CA-QC, exempt: true}76    expected_entries:77      - id: je_evt_sale_exempt78        lines:79          - ["1100", debit, "500.00", CAD]80          - ["4000", credit, "500.00", CAD]8182  - name: sale_ontario_hst83    description: "Ontario sale: single HST 13%"84    air:85      events:86        - id: evt_sale_on87          type: Sale88          date: 2026-07-2389          amount: {amount: "200.00", currency: CAD}90          tax: {jurisdiction: CA-ON}91    expected_entries:92      - id: je_evt_sale_on93        lines:94          - ["1100", debit, "226.00", CAD]95          - ["4000", credit, "200.00", CAD]96          - ["2330", credit, "26.00", CAD]9798  - name: sale_alberta_gst_only99    description: "Alberta sale: GST 5% only, no provincial tax"100    air:101      events:102        - id: evt_sale_ab103          type: Sale104          date: 2026-07-24105          amount: {amount: "300.00", currency: CAD}106          tax: {jurisdiction: CA-AB}107    expected_entries:108      - id: je_evt_sale_ab109        lines:110          - ["1100", debit, "315.00", CAD]111          - ["4000", credit, "300.00", CAD]112          - ["2310", credit, "15.00", CAD]113114  - name: refund_full_qc115    description: "Full refund of the 1000.00 QC sale: mirror entry, taxes reversed"116    air:117      events:118        - id: evt_refund_full119          type: Refund120          date: 2026-07-25121          related_event: evt_sale_simple122          amount: {amount: "1000.00", currency: CAD}123          tax: {jurisdiction: CA-QC}124    expected_entries:125      - id: je_evt_refund_full126        lines:127          - ["4000", debit, "1000.00", CAD]128          - ["2310", debit, "50.00", CAD]129          - ["2320", debit, "99.75", CAD]130          - ["1100", credit, "1149.75", CAD]131132  - name: refund_partial_qc133    description: "Partial refund 250.00: GST 12.50; QST 24.9375 rounds to 24.94"134    air:135      events:136        - id: evt_refund_partial137          type: Refund138          date: 2026-07-26139          related_event: evt_sale_simple140          amount: {amount: "250.00", currency: CAD}141          tax: {jurisdiction: CA-QC}142    expected_entries:143      - id: je_evt_refund_partial144        lines:145          - ["4000", debit, "250.00", CAD]146          - ["2310", debit, "12.50", CAD]147          - ["2320", debit, "24.94", CAD]148          - ["1100", credit, "287.44", CAD]149