9.3 KiB
Dokument handlowy — receptury kodu biznesowego (Soneta / enova365)
Zbiór gotowych wzorców kodu dla obiektu biznesowego Soneta.Handel.DokumentHandlowy
(tabela DokHandlowe, moduł HandelModule). Dokument jest częścią skilla soneta-programming.
Celem jest, aby agent pisał bezbłędny kod biznesowy operujący na dokumencie handlowym — fakturach,
dokumentach magazynowych, zamówieniach, ofertach i korektach — trafiający w realne pola, kolekcje i workery
platformy.
Format zwarty: każdy wzorzec opisuje ogólny przypadek + tabelę wariantów, zamiast wielu wąskich pozycji. Fundamenty (sesja, transakcja, blokada optymistyczna, praca z
SubTable, obsługa błędów) są opisane wsafe-code.md,session-login.mdorazworker-extender.md— tutaj się do nich odwołujemy, nie powtarzamy ich.Cały kod w tym dokumencie jest zgodny z C# 10 (target-typed
new,var, wyrażeniaswitch, nazwane parametrybool). Snippety operują wyłącznie na publicznym kontrakcie platformy — nie ma odwołań do prywatnych klas ani kodu źródłowego aplikacji.
Fakty o typie (zweryfikowane skanem DLL — scan-props.csx / scan-workers.csx)
- Klasa biznesowa:
Soneta.Handel.DokumentHandlowy—GuidedRow(root), tabelaSoneta.Handel.DokHandlowe(„Dokumenty handlowe"). - Jeden typ — wiele rodzajów dokumentów. Faktury (FV, FZ, PAR), dokumenty magazynowe (PZ, WZ, PW, RW, MM),
zamówienia (ZO, ZD), oferty (OD, OO), korekty i inne — różni je wyłącznie
Definicja(DefDokHandlowego). To definicja wyznacza kierunek magazynu, numerację, sposób liczenia VAT itd. - Moduł:
Soneta.Handel.HandelModule, dostępsession.GetHandel(). Tabela dokumentów:Handel.DokHandlowe. Definicje:Handel.DefDokHandlowych(kluczWgSymbolu["FV"]). - Implementuje:
IDokumentPlatny,IDokumentKsiegowalny,IDokumentKasowy,IDaneKontrahentaHost,IDokumentCRM,IKodowany,IExportImportXmlHost,IElementSlownika,IKomunikatEDIHost,IEmailElement,IProceduraVATHost,IZrodloOpisuAnalitycznego. - Pola: 128 bazodanowych + 388 kalkulowanych.
Kluczowe pola bazodanowe (zapisywalne)
| Pole | Typ | Znaczenie |
|---|---|---|
Definicja |
Soneta.Handel.DefDokHandlowego |
definicja dokumentu — wyznacza rodzaj/zachowanie (ustaw jako pierwszą) |
Kontrahent |
Soneta.CRM.Kontrahent |
kontrahent (nabywca/dostawca) dokumentu |
Odbiorca |
Soneta.CRM.Kontrahent |
odbiorca towarów (gdy inny niż kontrahent) |
Magazyn |
Soneta.Magazyny.Magazyn |
magazyn, na który wpływa dokument |
Data |
Soneta.Types.Date |
data wystawienia |
DataOperacji |
Soneta.Types.Date |
faktyczna data sprzedaży/zakupu |
Numer |
Soneta.Core.NumerDokumentu |
numeracja dokumentu (zob. wzorzec numeracji) |
Seria |
string |
seria dokumentu |
Stan |
Soneta.Handel.StanDokumentuHandlowego |
Bufor=0, Zatwierdzony=1, Zablokowany=2, Anulowany=3 |
LiczonaOd |
Soneta.Handel.SposobLiczeniaVAT |
liczenie wartości od netto/brutto |
KorektaVAT |
bool |
sumy VAT zmienione ręcznie (niezależne od pozycji) |
Waluta (przez BruttoCy) |
Soneta.Types.Currency |
kwota płatności w walucie |
TabelaKursowa |
Soneta.Waluty.TabelaKursowa |
tabela kursów dla dokumentu walutowego |
RodzajTransakcji |
Soneta.Handel.KodRodzajuTransakcji |
rodzaj transakcji Intrastat |
Opis |
Soneta.Business.MemoText |
opis na wydruku |
Suma |
Soneta.Handel.BruttoNetto |
podsumowana wartość dokumentu |
Kluczowe kolekcje i właściwości kalkulowane (tylko do odczytu, o ile nie zaznaczono)
| Składowa | Typ | Znaczenie |
|---|---|---|
Pozycje |
LpSubTable<PozycjaDokHandlowego> |
pozycje dokumentu |
SumyVAT |
SubTable<SumaVAT> |
tabelka VAT (netto/VAT/brutto wg stawek) |
Platnosci |
SubTable<Soneta.Kasa.Platnosc> |
płatności dokumentu |
Obroty |
SubTable |
obroty magazynowe bezpośrednie dokumentu |
ObrotyWszystkie |
ListWithView |
obroty łącznie z dokumentami zależnymi |
Zasoby |
SubTable |
zasoby magazynowe utworzone przez dokument |
DokumentyMagazynowe |
DokumentHandlowy[] |
dokumenty magazynowe powiązane z fakturą |
DokumentyHandlowe |
DokumentHandlowy[] |
faktury powiązane z dokumentem magazynowym |
DokumentKorygowany |
DokumentHandlowy |
dokument korygowany (kalkulowane — tworzy relacja/UI) |
DokumentyKorygujące |
IEnumerable<DokumentHandlowy> |
korekty tego dokumentu |
DokumentyZaliczkowe |
DokumentHandlowy[] |
nadrzędne dokumenty zaliczkowe |
Rezerwacja |
DokumentHandlowy |
dokument rezerwacji towarów |
SumaPozycji |
BruttoNettoPozycji |
wyliczona suma wartości pozycji |
Bufor / Zatwierdzony / Anulowany |
bool |
skróty stanu (kalkulowane z Stan) |
Features |
Soneta.Business.FeatureCollection |
cechy definiowalne dokumentu |
Pozycja dokumentu — Soneta.Handel.PozycjaDokHandlowego
| Pole | Typ | Znaczenie |
|---|---|---|
Towar |
Soneta.Towary.Towar |
towar pozycji (ustaw pierwszy — inicjuje jednostkę na Ilosc/Cena) |
Ilosc |
Soneta.Towary.Quantity |
ilość; twórz new Quantity(wartość, poz.Ilosc.Symbol) |
Cena |
Soneta.Types.DoubleCy |
cena (netto/brutto wg LiczonaOd); new DoubleCy(wartość, poz.Cena.Symbol) |
Rabat |
Soneta.Types.Percent |
procent rabatu |
Features |
FeatureCollection |
cechy pozycji (m.in. przeniesione z partii/towaru) |
Konstruktor pozycji wymaga dokumentu: new PozycjaDokHandlowego(dokument).
Podstawowe typy i obiekty pomocnicze
| Typ | Rola |
|---|---|
Soneta.Handel.HandelModule |
moduł Handel: DokHandlowe, DefDokHandlowych |
Soneta.Magazyny.MagazynyModule |
magazyny, zasoby, obroty, partie (GrupaDostaw) — session.GetMagazyny() |
Soneta.Towary.TowaryModule |
towary, jednostki, ceny — session.GetTowary() |
Soneta.CRM.CRMModule |
kontrahenci — session.GetCRM() |
Soneta.Handel.DefDokHandlowego |
definicja dokumentu (symbol, kierunek, numeracja, flagi) |
Soneta.Types.Quantity |
ilość z jednostką miary |
Soneta.Types.DoubleCy |
wartość zmiennoprzecinkowa z walutą (cena) |
Soneta.Types.Currency |
kwota z walutą (wartości, płatności) |
Soneta.Types.Percent |
procent (rabat, stawka) |
Soneta.Types.Date |
data biznesowa |
Soneta.Handel.StanDokumentuHandlowego |
stan cyklu życia dokumentu |
Szablon wzorca
Każdy wzorzec (HANDEL-Wn) ma stałą strukturę:
- Cel — co robi i kiedy go użyć.
- Warianty — tabela odmian przypadku.
- Pola i typy — realne właściwości/kolekcje i ich typy.
- Snippet — kod C# 10 na publicznym kontrakcie.
- Pułapki — typowe błędy i zasady safe-code.
Mapa receptur
| Rozdział | Plik | Receptury |
|---|---|---|
| HANDEL01 — Fundamenty i identyfikacja | handel/HANDEL01-fundamenty.md | HANDEL-W1–W3 |
| HANDEL02 — Wystawianie dokumentów | handel/HANDEL02-wystawianie.md | HANDEL-W4–W11 |
| HANDEL03 — Stany dokumentu i cykl życia | handel/HANDEL03-cykl-zycia.md | HANDEL-W12–W16 |
| HANDEL04 — Relacje i generowanie dokumentów | handel/HANDEL04-relacje.md | HANDEL-W17–W24 |
| HANDEL05 — Odczyt i wyszukiwanie | handel/HANDEL05-odczyt.md | HANDEL-W25–W30 |
| HANDEL06 — Magazyn, zasoby, partie, obroty | handel/HANDEL06-magazyn.md | HANDEL-W31–W39 |
| HANDEL07 — Cechy (Features) | handel/HANDEL07-cechy.md | HANDEL-W40–W42 |
| HANDEL08 — VAT, wartości i waluty | handel/HANDEL08-vat-waluty.md | HANDEL-W43–W47 |
| HANDEL09 — Korekty i dokumenty specjalne | handel/HANDEL09-korekty.md | HANDEL-W48–W52 |
| HANDEL10 — Operacje zbiorcze (batch) | handel/HANDEL10-batch.md | HANDEL-W53–W55 |
| HANDEL11 — Operacje pomocnicze (przekrojowe) | handel/HANDEL11-pomocnicze.md | HANDEL-W56–W61 |
| HANDEL12 — Wydruki i raporty | handel/HANDEL12-wydruki.md | HANDEL-W62–W66 |
| HANDEL13 — Tematy specjalistyczne (KSeF, fiskalizacja, kompletacja, Intrastat) | handel/HANDEL13-specjalistyczne.md | HANDEL-W67–W74 |
| HANDEL14 — Płatności dokumentu handlowego | handel/HANDEL14-platnosci.md | HANDEL-W75–W82 |
Powiązane dokumenty
safe-code.md— sesja, transakcje, blokada optymistyczna, zasady bezpiecznego kodu.session-login.md—Session,Login,Database.worker-extender.md— workery, akcje menu Czynności, bindowanie.rowcondition.md— serwerowy LINQ,RowCondition,SubTable[condition].features.md— cechy (Features), typy, dostęp typowany/nietypowany.datapack-guidedrow.md— eksport/import,GuidedRow.crm.md— receptury dlaKontrahent(nabywca/odbiorca/płatnik dokumentu).scan-props.md/scan-workers.md— inwentaryzacja pól i workerów.