Add --print to regenerate PDFs from invoices.json without ledger writes. Support optional dueDate on ledger rows (default remains invoice date + 14 days) and persist dueDate when saving new production rows. Data: limmud_fsu_canada client with invoiceFileName, cruise_event_av_it product, 2026-LFSU01 sample invoice, Levkin contact fields in sender.json. README and project.md describe CLI, schema, and May 2026 changelog. Co-authored-by: Cursor <cursoragent@cursor.com>
192 lines
4.7 KiB
JSON
192 lines
4.7 KiB
JSON
{
|
||
"invoices": [
|
||
{
|
||
"number": "2025-0001",
|
||
"date": "2025-07-04",
|
||
"sender": "Your Company Name",
|
||
"client": "Second Client",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1
|
||
}
|
||
],
|
||
"amount": 250
|
||
},
|
||
{
|
||
"number": "2025-0002",
|
||
"date": "2025-07-04",
|
||
"sender": "Your Company Name",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1
|
||
}
|
||
],
|
||
"amount": 250
|
||
},
|
||
{
|
||
"number": "2025-0003",
|
||
"date": "2025-07-04",
|
||
"sender": "Your Company Name",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 250,
|
||
"taxTotal": 32.5,
|
||
"total": 282.5
|
||
},
|
||
{
|
||
"number": "2025-0004",
|
||
"date": "2025-07-04",
|
||
"sender": "Another Sender",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
},
|
||
{
|
||
"description": "Website Design",
|
||
"price": 1200,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 1450,
|
||
"taxTotal": 188.5,
|
||
"total": 1638.5
|
||
},
|
||
{
|
||
"number": "2025-0005",
|
||
"date": "2025-07-04",
|
||
"sender": "Your Company Name",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 250,
|
||
"taxTotal": 32.5,
|
||
"total": 282.5
|
||
},
|
||
{
|
||
"number": "2025-0006",
|
||
"date": "2025-07-04",
|
||
"sender": "Your Company Name",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 250,
|
||
"taxTotal": 32.5,
|
||
"total": 282.5
|
||
},
|
||
{
|
||
"number": "2025-0007",
|
||
"date": "2025-07-06",
|
||
"sender": "Levkin Inc.",
|
||
"client": "Client Company",
|
||
"products": [
|
||
{
|
||
"description": "LinkedIn Scraper Bot",
|
||
"price": 250,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 250,
|
||
"taxTotal": 32.5,
|
||
"total": 282.5
|
||
},
|
||
{
|
||
"number": "2026-JRCC10",
|
||
"date": "2026-04-30",
|
||
"sender": "Levkin Inc.",
|
||
"client": "JRCC - Jewish Russian Community Centre",
|
||
"products": [
|
||
{
|
||
"description": "Design and development of PunimTag Web: full-stack facial recognition photo management platform (FastAPI backend, React frontend) with DeepFace-based face detection and identification, PostgreSQL/SQLite data storage, Redis/RQ background processing, advanced search and tagging, and deployment-ready configuration and documentation.",
|
||
"price": 10000,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 10000,
|
||
"taxTotal": 1300,
|
||
"total": 11300
|
||
},
|
||
{
|
||
"number": "2026-INNO16",
|
||
"date": "2026-03-31",
|
||
"sender": "Levkin Inc.",
|
||
"client": "Innosphere SDG Ltd.",
|
||
"products": [
|
||
{
|
||
"description": "Javascript Developer - Mar 1 - Mar 31, 2026",
|
||
"price": 85,
|
||
"quantity": 136,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 11560,
|
||
"taxTotal": 1502.8,
|
||
"total": 13062.8
|
||
},
|
||
{
|
||
"number": "2026-INNO17",
|
||
"date": "2026-04-30",
|
||
"sender": "Levkin Inc.",
|
||
"client": "Innosphere SDG Ltd.",
|
||
"products": [
|
||
{
|
||
"description": "Javascript Developer - Apr 1 - Apr 30, 2026",
|
||
"price": 85,
|
||
"quantity": 176,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 14960,
|
||
"taxTotal": 1944.8,
|
||
"total": 16904.8
|
||
},
|
||
{
|
||
"number": "2026-LFSU01",
|
||
"date": "2026-03-22",
|
||
"dueDate": "2026-05-31",
|
||
"sender": "Levkin Inc.",
|
||
"client": "Limmud FSU Canada",
|
||
"products": [
|
||
{
|
||
"description": "March 15–22, 2026 — Cruise event IT — audio/video and stage tech: microphones, speakers, video projection and signage, presenter feeds, cabling and rack setup, sound checks and on-site troubleshooting for onboard Limmud FSU programming.",
|
||
"price": 500,
|
||
"quantity": 1,
|
||
"taxRate": 13
|
||
}
|
||
],
|
||
"subtotal": 500,
|
||
"taxTotal": 65,
|
||
"total": 565
|
||
}
|
||
]
|
||
} |