Juniper Corner Cafe: Procure-to-pay chain README
Procure-to-pay chain README for Juniper Corner Cafe. Names all 28 files in this folder, tabulates the seven-step chain from price list to remittance advice, and states all 6 deliberate disagreements with the exact numbers and the assertion that detects each. It also separates those defects from three traps that are modelling rather than errors: case price against unit price, the unreachable contract tier at 250 units, and the two legitimate tax-total conventions.
# Juniper Corner Cafe: procure-to-pay document chain
One month of ordering, receiving, invoicing, crediting, reconciling and paying between Juniper Corner Cafe and its two suppliers. Every document references the supplier ids, ingredient ids, dates, quantities and unit prices that already exist in the `restaurant-cafe` business kit's `purchases` table, so this chain and that table agree.
Fixed snapshot 2026-09-08. All amounts in CAD. GST at 5 percent applies to every line.
## The chain
| Step | Document | Number | Date | Value |
| --- | --- | --- | --- | ---: |
| 1 | Price list | 48 rows | 2026-08-05, 2026-08-12, 2026-08-19, 2026-08-26 | list, case and contract tier prices |
| 2 | Purchase order | PO-CAF-1001 | 2026-08-05 | 347.22 |
| 2 | Purchase order | PO-CAF-1002 | 2026-08-12 | 348.83 |
| 2 | Purchase order | PO-CAF-1003 | 2026-08-19 | 218.60 |
| 2 | Purchase order | PO-CAF-1004 | 2026-08-26 | 200.62 |
| 3 | Goods received | GRN-CAF-2001 | 2026-08-07 | 48 units delivered |
| 3 | Goods received | GRN-CAF-2002 | 2026-08-14 | 59 units delivered |
| 3 | Goods received | GRN-CAF-2003 | 2026-08-21 | 87 units delivered |
| 3 | Goods received | GRN-CAF-2004 | 2026-08-28 | 66 units delivered |
| 4 | Supplier invoice | INV-CAF-5001 | 2026-08-07 | 347.22 |
| 4 | Supplier invoice | INV-CAF-5002 | 2026-08-14 | 348.83 |
| 4 | Supplier invoice | INV-CAF-5003 | 2026-08-21 | 805.99 |
| 4 | Supplier invoice | INV-CAF-5004 | 2026-08-28 | 200.62 |
| 4 | Supplier invoice | INV-CAF-5002 | 2026-08-17 | 291.50 |
| 5 | Credit note | CN-CAF-7001 | 2026-08-21 | -10.92 |
| 5 | Credit note | CN-CAF-7002 | 2026-08-29 | -7.98 |
| 6 | Statement | STM-CAF-6001 | 2026-08-31 | 1726.12 |
| 6 | Statement | STM-CAF-6002 | 2026-08-31 | 1449.94 |
| 7 | Remittance advice | REM-CAF-8001 | 2026-09-05 | 1235.99 |
## What deliberately disagrees
These six disagreements are on purpose. Each one is a failure a real accounts-payable system has to detect, and each is stated here with the exact numbers so a test can assert the detection rather than merely the parse.
### 1. Stated tax total is one cent above the sum of the line tax amounts
Affects: INV-CAF-5003 dated 2026-08-21.
Invoice INV-CAF-5003 states a tax total of 38.39 CAD and a total due of 805.99 CAD. Its three line tax amounts sum to 38.38 CAD, one cent less. The document-level calculation round(net x 0.05, 2) on a net of 767.60 gives 38.38 CAD.
Assertion: `statedTaxTotal - lineTaxSum == 0.01`.
### 2. Invoice bills the ordered quantity after a recorded short delivery
Affects: INV-CAF-5002 line 2, GRN-CAF-2002 line 2.
Purchase order PO-CAF-1002 line 2 ordered 21 l of ING-03. Goods-received note GRN-CAF-2002 records 17 l delivered. Invoice INV-CAF-5002 line 2 bills 21 l, a variance of 4 l and 10.40 CAD net.
Assertion: `invoicedQuantity - deliveredQuantity == 4`.
Specifications
- Kit
- restaurant-cafe
- Schema Version
- 1
- Synthetic
- true
- As Of
- 2026-09-08
- Currency
- CAD
- Tax Name
- GST
- Tax Rate
- 0.05
- Files
- 28
- Deliberate Defects
- 6
- Encoding
- UTF-8
- Line Endings
- LF
Testing contract
Reference control- Scenario
- Read before using any other file in this folder.
- Expected result
- Names all 28 files in this folder, tabulates the seven-step chain from price list to remittance advice, and states all 6 deliberate disagreements with the exact numbers and the assertion that detects each. It also separates those defects from three traps that are modelling rather than errors: case price against unit price, the unreachable contract tier at 250 units, and the two legitimate tax-total conventions.
What is a .md file?
Markdown (MD) is a lightweight plain-text markup language that uses simple punctuation conventions to denote headings, lists, links, emphasis, and code. It is designed to be readable as-is and to convert cleanly to HTML. It is widely used for documentation, READMEs, and content authoring.
How to use this file
Use an example Markdown file to test parsers and renderers, verify GitHub-Flavored Markdown extensions like tables and fenced code, and exercise HTML-conversion pipelines.
How to use this file for testing
“Juniper Corner Cafe: Procure-to-pay chain README” is a deterministic Testaroo fixture for Data import, Error handling. Realistic faker-generated datasets with documented schemas for testing import and ETL flows.
Documented properties for this file: UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such, expect parsers to fail loudly rather than silently accept them.
Document fixtures list their internal structure (pages, fields, tracked changes, embedded objects) in the spec table. Test extractors, converters, and OCR against that known structure, and compare searchable↔scanned or format-twin companions when present.
Code examples
import markdown # pip install markdown
html = markdown.markdown(open("README.md").read())
print(html[:200])Generated by generation/restaurant_procurement.py. Free for any use, no attribution required, license.
Related files
- ediAlder Table Bistro: ANSI X12 810 invoice with a wrong SE segment countANSI X12 810 invoice with a wrong SE segment count for Alder Table Bistro. Identical to edi-810-invoice.edi except for one element: SE declares 11 segments where 13 are present between ST and SE inclusive. The ISA, GS, GE and IEA control numbers, every data segment and the TDS total of 32953 are unchanged, so a parser that checks only syntax accepts the file and only a parser that recounts segments rejects it.

- pdfAlder Table Bistro: Credit note PDFCredit note PDF for Alder Table Bistro. Credit note CN-BST-7002 dated 2026-08-29 against invoice INV-BST-5004 dated 2026-08-28: 5 l at 7.79, net 38.95 and 40.90 CAD including GST. Goods-received note GRN-BST-2004 records only 3 units returned, so the credit is 2 units too large.

- mdAlder Table Bistro: Procure-to-pay chain READMEProcure-to-pay chain README for Alder Table Bistro. Names all 28 files in this folder, tabulates the seven-step chain from price list to remittance advice, and states all 6 deliberate disagreements with the exact numbers and the assertion that detects each. It also separates those defects from three traps that are modelling rather than errors: case price against unit price, the unreachable contract tier at 250 units, and the two legitimate tax-total conventions.

- pdfAlder Table Bistro: Statement of account PDFStatement of account PDF for Alder Table Bistro. Statement STM-BST-6002 for Harbour Food Supply at 2026-08-31: 8 transactions closing at 1559.75 CAD. The printed ageing analysis totals 1566.76 CAD, which is 7.01 CAD more, because credit note CN-BST-7001 is listed in the transactions but was never applied to the buckets.

- pdfAlder Table Bistro: Supplier invoice PDFSupplier invoice PDF for Alder Table Bistro. Invoice INV-BST-5002 dated 2026-08-14, due 2026-09-13: 3 lines, net 313.84, GST 15.69 and 329.53 CAD due. Line 2 bills the ordered quantity even though the goods-received note records a short delivery of 4 kg.

- pdfAlder Table Bistro: Supplier invoice PDF reusing an invoice numberSupplier invoice PDF reusing an invoice number for Alder Table Bistro. A second document issued under invoice number INV-BST-5002, dated 2026-08-17 with 2 lines totalling 294.46 CAD. The first document of that number is dated 2026-08-14 with 3 lines totalling 329.53 CAD. Both are listed on statement STM-BST-6002 and both are inside its closing balance.
