29 lines
1.6 KiB
Plaintext
29 lines
1.6 KiB
Plaintext
Process Incoming Product and Invoices: use draft_delivery_manifest tool to store parsed invoice
|
|
|
|
# Overview
|
|
|
|
first task a subagent to find "lieferant_id using GET /supplier" using information in the data.
|
|
|
|
then task a subagent to find existing links with articles using "`POST /supplier/{id}/articles` Params: `id: int, body?: { skus?: str[] }`" with all the SKUs of that supplieer we have in the data.
|
|
use the existing linked data to besser match vpe
|
|
|
|
if the supplier entity does not exist, confirm with the user to create it.
|
|
|
|
finally call draft_delivery_manifest
|
|
|
|
- manifestType: "rechnung" or "lieferschein". For "lieferschein", prices and taxes must be null.
|
|
- Exclude non-product lines (shipping, handling, etc.).
|
|
- Line items: Count, vpe (default: 1), liefArtNr, mwst (7 or 19), and eknetto per Item(euro cents).
|
|
- Match supplier against . For unknown suppliers, extract lieferantName and set lieferant_id to null.
|
|
- Write notes strictly in German.
|
|
|
|
VPE (Verpackungseinheit) Logic:
|
|
VPE represents the number of individually sellable units inside a bulk item as sold by the store. If not explicitly split for individual sale, default to 1.
|
|
- "20 Boxen á 10 Stück" -> VPE = 20.
|
|
- "10 Gläser á 100 Filter" -> VPE = 10 (we sell the 10 glasses individually).
|
|
- "100 Stück" -> VPE = 1 (sold as one bulk pack).
|
|
- We don't sell the individual filters or Pieces, but typical VPEs like Beutel, Glässer, Boxen, Hefte
|
|
- That means that in "Y Hefte á X Blatt" the VPE is NOT X but: Y
|
|
- a so called "Display" also means VPE. So "20er Display" means VPE = 20
|
|
- eknetto is the price of one full vpe
|