diff --git a/scripts/idoklad.create-invoice-from-object.js b/scripts/idoklad.create-invoice-from-object.js index 12006f0..e8d7b8a 100644 --- a/scripts/idoklad.create-invoice-from-object.js +++ b/scripts/idoklad.create-invoice-from-object.js @@ -56,7 +56,14 @@ export async function run(inputs, ctx) { const { unwrap, pick, text, num, need } = ctx.util; const payload = inputs.payload; - const items = Array.isArray(payload.items) ? payload.items : []; + /* + * Polozky se hledaji pod obema jmeny. iDoklad je v tele ceka jako + * `IssuedInvoiceItems`, ale prevod je casto pojmenuje `items` podle toho, + * jak se jmenuji ve zdrojove objednavce. Trvat na jednom z nich by znamenalo, + * ze prevod projde kontrolou a doklad prijde do iDokladu bez radku. + */ + const rawItems = pick(payload, 'IssuedInvoiceItems', 'items'); + const items = Array.isArray(rawItems) ? rawItems : []; if ((inputs.requireItems ?? true) && items.length === 0) { ctx.fail('Tělo dokladu neobsahuje žádné položky. Zkontrolujte pravidla transformace.'); } @@ -70,7 +77,12 @@ export async function run(inputs, ctx) { ctx.retry('iDoklad nevrátil předvyplněný vzor faktury.'); } - const body = { ...defaults, ...payload }; + /* + * Vzor nese povinna pole, prevod prepise ta, kterym rozumime. Polozky se + * doplni pod jmenem, ktere ceka iDoklad, at uz prisly pojmenovane jakkoliv. + */ + const body = { ...defaults, ...payload, IssuedInvoiceItems: items }; + delete body.items; const response = await ctx.http.post('/issued-invoices', body); const invoice = unwrap(response.body);