Přeskočit na hlavní obsah

Kapitola 4: Technická Reference - Datový Model

4.1 Finanční Doklady

4.1.1 Faktura (Invoice)

  • Status (status): Návrh, Vystaveno, V procesu, Odesláno, Potvrzeno, Částečně uhrazeno, Uhrazeno, Přeplaceno, Zrušeno (z entityDefs/Invoice.json).
  • Součty a platby: grandTotalAmount, paid, paidAdvances, remainingToPay, remainingToPayCurrency, invoicedAmount. isOverdue, isDueSoon, numberOfOverdueDays jsou nastaveny pomocí Tools\Invoice\InvoiceLikeOverdueChecker, když existuje dueDate a status je Potvrzeno/Částečně uhrazeno.
  • Vazby: items (řádkové položky používané InvoiceLike::recalculate), summaryVatRates (přestavěno při každém uložení), payments, proformaInvoices (odpočty záloh).
  • Compliance hooks: Common\ManageDuzp automaticky vyplní duzp (datum zdanitelného plnění) na dateInvoiced nebo maximálně 14 dní před; Common\SetInvoiceName přiřadí referenceIdentifier a name při vytvoření, pokud jsou prázdné.

4.1.2 Zálohová faktura (ProformaInvoice)

  • Status: Vystavená, Odeslaná, Částečně uhrazená, Uhrazená, Zrušená, Po splatnosti, Přeplacená.
  • Odkaz na odpočet zálohy: Při propojení s Invoice vytvoří Entities\ProformaInvoice::onInvoiceLink záznam AdvanceDeductionItem vázaný na oba záznamy; odpojení jej odstraní.
  • Platby: Záznamy Payment používají parentType = ProformaInvoice; Hooks\Payment\SetOrderNumber čísluje platby sekvenčně pro každou proformu.

4.1.3 Dobropis (CreditNote)

  • Status: Vystavený, Odeslaný, Uhrazený, Zrušený, Po splatnosti.
  • Chování: Rozšiřuje InvoiceLike; účastní se ManageDuzp (auto duzp) a InvoiceLike přepočtů/zaokrouhlování.

4.1.4 Daňový doklad k platbě (IssuedTaxDocument)

  • Účel: Daňový doklad generovaný z plateb Proformy (viz Services\Payment::createTaxDocumentFromProforma), agregující zaplacené položky podle sazby daně.
  • Vazby: proformaInvoice, payment, items (vytvořeno z poměru částky platby).

4.1.5 Přijatá faktura (SupplierInvoice)

  • Status: Návrh, V procesu, Potvrzeno, Částečně uhrazeno, Zaplaceno, Zamítnuto, Po splatnosti, Přijatá.
  • Příznaky splatnosti: InvoiceLikeOverdueChecker vyhodnocuje dueDate se statusy Potvrzeno/Částečně uhrazeno pro nastavení isOverdue/isDueSoon.
  • Compliance: Zahrnuto v ManageDuzp pro automatickou správu duzp.

4.1.6 Nákupní objednávka (PurchaseOrder)

  • Status: Návrh, Připraveno, Objednáno, Částečně dodáno, Dodáno, Zamítnuto, Zrušeno. Konečné statusy (Dodáno/Zamítnuto/Zrušeno/Částečně dodáno) jsou uzamčeny pomocí Hooks\PurchaseOrder\PreventInvalidStatusChange; status nelze vrátit z Objednáno na Připraveno/Návrh.
  • Data a číslování: dateOrdered se automaticky vyplní, když status dosáhne Ordered (Hooks\PurchaseOrder\SetDefaultFields).
  • Vazby: items (PurchaseOrderItem), discounts, receivedDeliveryNotes. Náklady na dopravu/balné a slevy generují syntetické řádky položek prostřednictvím Core\Hooks\AbstractRecalculate.

4.1.7 Položka nákupní objednávky (PurchaseOrderItem)

  • Status: Čeká na dodání, Přijato, Připraveno k uzavření, Uzavřeno. Finalizované položky (Přijato/Připraveno k uzavření/Uzavřeno) nelze vrátit (Hooks\PurchaseOrderItem\PreventInvalidStatusChange).
  • Množství: quantityDelivered řídí změny statusu a deliveryDate; aktualizace se propagují do statusu rodiče, když je povoleno automateStatusChange (Hooks\PurchaseOrderItem\UpdateStatus, Hooks\PurchaseOrderItem\ProcessPurchaseOrderItem).

4.1.8 Prodejní objednávka (SalesOrder)

  • Status: Návrh, Připraveno, Aktivní, Dokončeno, Zamítnuto, Zrušeno.
  • Vazby: items, quote, volitelně project.
  • Automatizace: Uložení SalesOrder s propojenou Nabídkou (Quote) nastaví status Nabídky na Ordered (Hooks\SalesOrder\SetQuoteStatus). Pokud je zapnuto enableAutomaticProjectCreation a je nainstalován Project Management, při prvním uložení se vytvoří Projekt s naklonovanými položkami (Hooks\SalesOrder\ProjectManagementIntegration).

4.2 Řádkové Položky a Vypočítané Tabulky

4.2.1 Položky typu Faktura (InvoiceItem, ProformaInvoiceItem, CreditNoteItem, atd.)

  • Pole: product, quantity, unitPrice, discount, taxRate, withTax, amount (netto), taxAmount, amountWithTax, weight, priceMargin.
  • Odvození: Hodnoty jsou přepočítávány pomocí InvoiceLike::recalculateItem (řeší přenesenou daňovou povinnost, s/bez daně, slevy, alokaci dodatečných nákladů a zaokrouhlování).
  • Dodatečné náklady a slevy: Náklady na dopravu/balné a procentuální slevy jsou materializovány do extra řádků položek prostřednictvím Core\Hooks\AbstractRecalculate.

4.2.2 Položka nákupní objednávky (PurchaseOrderItem)

  • Kopíruje pole položek faktury plus quantityDelivered, confirmedDeliveryDate, deliveryDate.
  • Přechody statusů reagují na dodávky a status rodičovské Nákupní objednávky (WaitingForDelivery při Ordered, Delivered při Delivered rodiče).

4.2.3 Souhrn sazeb DPH (SummaryVatRates)

  • Odvozená rekapitulační tabulka DPH pro doklad: taxRate, basis, vat, total (s měnou).
  • Vždy přestavěno při uložení z summaryVatRatesRecordList produkovaného InvoiceLike::recalculateTotals; staré řádky jsou smazány a nahrazeny.

4.3 Platby a Zálohy

4.3.1 Platba (Payment)

  • Vazby: parent (Invoice/Proforma/SupplierInvoice), proformaInvoice (volitelné), paymentId na IssuedTaxDocument.
  • Pole: amount, amountCurrency, date, variableSymbol, orderNumber (sekvenční dle ProformaInvoice).
  • Efekt: Services\Payment::createPaymentFor* nastaví status rodiče na Částečně uhrazeno nebo Uhrazeno, poté spustí přepočet.

4.3.2 Položka odpočtu zálohy (AdvanceDeductionItem)

  • Generováno, když se ProformaInvoice propojí s Fakturou; kopíruje zaplacené částky (v měně Faktury) a je odečteno během přepočtu.