Poprawki w scan-xxxx
This commit is contained in:
@@ -45,15 +45,25 @@ Algorytm:
|
||||
w l.mn. („Dokumenty handlowe"), bo opisują tabelę. Fallback: jeśli klasy `*Table` brak
|
||||
lub nie ma atrybutu, czytane są te same atrybuty z klasy `*Row`. Wartością jest pierwszy
|
||||
parametr `string` konstruktora atrybutu.
|
||||
- `Guided` = `tak`, gdy klasa `*Table` dziedziczy (bezpośrednio lub pośrednio) z `GuidedTable`
|
||||
albo `ExportedTable`. Tabele oznaczone `Guided=tak` są **rootami drzewa obiektów** —
|
||||
stanowią korzeń paczki danych (`Datapack`/`GuidedRow`/`ExportedRow`) i to one są obsługiwane
|
||||
przez mechanizm synchronizacji i eksportu/importu. Tabele bez tej flagi to elementy
|
||||
szczegółowe (subrowy, info-rowy), które są częścią paczki danej tabeli-korzenia, ale nie
|
||||
stanowią samodzielnego rootu.
|
||||
- `Guided` — rozróżnia trzy stany:
|
||||
- `root` — klasa `*Table` dziedziczy (bezpośrednio lub pośrednio) z `GuidedTable`
|
||||
albo `ExportedTable`. Tabele te są **korzeniami drzewa obiektów** — stanowią root
|
||||
paczki danych (`Datapack`/`GuidedRow`/`ExportedRow`) i to one są obsługiwane
|
||||
przez mechanizm synchronizacji i eksportu/importu.
|
||||
- `child: Pole→TypRow` — tabela jest częścią drzewa innego rootu; pole rekordu
|
||||
z atrybutem `[ColumnInfo(GuidedRelation=…)]` wskazuje na tabelę nadrzędną.
|
||||
`Pole` to nazwa pola w `*Record`, `TypRow` to konkretny typ `*Row` odczytany
|
||||
z odpowiadającej property w klasie `*Row` (w `*Record` pole ma zwykle typ `IRow`).
|
||||
- pusta wartość — tabela szczegółowa (subrow, info-row) niewchodząca w skład żadnego
|
||||
drzewa guided.
|
||||
- `Konfig` = `konfig`, gdy `*Table` ma `[TableInfo(IsConfig=true)]`. Tabele konfiguracyjne
|
||||
żyją w osobnej sesji (`ExecuteConfig`) i mają inne reguły zapisu niż tabele operacyjne.
|
||||
- `Interfaces` = lista nazw interfejsów zadeklarowanych w `[TableInfo(Interfaces = new[] { … })]`.
|
||||
Soneta używa ich jako **relacji interfejsowych** — pole typu `IXxx` może referować rekord
|
||||
z dowolnej tabeli deklarującej `IXxx` w swoim `TableInfo`.
|
||||
- Dla samego modułu (`*Module`) Tytuł/Opis czytane są analogicznie z atrybutów na klasie modułu.
|
||||
6. Wypisz markdown: sekcja `##` per moduł (z jego `Caption`/`Description` jeśli są), w każdej
|
||||
sekcji tabela `RowType | TableType | Tytuł | Opis`.
|
||||
sekcji tabela `RowType | TableType | Guided | Konfig | Interfaces | Tytuł | Opis`.
|
||||
|
||||
## Wymagania
|
||||
|
||||
@@ -89,14 +99,14 @@ Znaleziono modułów: 37
|
||||
- Opis: Moduł handlowy obsługujący dokumenty sprzedaży, zakupu, zamówień i innych operacji handlowych...
|
||||
- Tabel: 62
|
||||
|
||||
| RowType | TableType | Guided | Tytuł | Opis |
|
||||
|---------|-----------|--------|-------|------|
|
||||
| DefDokHandlowego | DefDokHandlowych | tak | Definicje dokumentów handlowych | Konfigurowalna definicja (szablon) dokumentu handlowego... |
|
||||
| DefRelacjiHandlowej | DefRelHandlowych | tak | Definicje relacji handlowych | Konfigurowalna definicja relacji między dokumentami handlowymi... |
|
||||
| DokumentHandlowy | DokHandlowe | tak | Dokumenty handlowe | Główna tabela dokumentów handlowych (faktury, paragony, zamówienia, korekty, umowy itp.)... |
|
||||
| DokumentHandlowyKoszt | DokHandloweKoszt | | Koszty dodatkowe | Koszt dodatkowy przypisany do dokumentu handlowego... |
|
||||
| DrukarkaFiskalna | DrukarkiFiskalne | tak | Lista drukarek fiskalnych | Konfiguracja drukarki fiskalnej... |
|
||||
| ... | ... | ... | ... | ... |
|
||||
| RowType | TableType | Guided | Konfig | Interfaces | Tytuł | Opis |
|
||||
|---------|-----------|--------|--------|------------|-------|------|
|
||||
| DefDokHandlowego | DefDokHandlowych | root | konfig | | Definicje dokumentów handlowych | Konfigurowalna definicja (szablon) dokumentu handlowego... |
|
||||
| DefRelacjiHandlowej | DefRelHandlowych | root | konfig | | Definicje relacji handlowych | Konfigurowalna definicja relacji między dokumentami handlowymi... |
|
||||
| DokumentHandlowy | DokHandlowe | root | | IDokument, IKontrahentRef | Dokumenty handlowe | Główna tabela dokumentów handlowych (faktury, paragony, zamówienia, korekty, umowy itp.)... |
|
||||
| DokumentHandlowyKoszt | DokHandloweKoszt | child: Dokument→DokumentHandlowy | | | Koszty dodatkowe | Koszt dodatkowy przypisany do dokumentu handlowego... |
|
||||
| DrukarkaFiskalna | DrukarkiFiskalne | root | konfig | | Lista drukarek fiskalnych | Konfiguracja drukarki fiskalnej... |
|
||||
| ... | ... | ... | ... | ... | ... | ... |
|
||||
|
||||
_Łącznie tabel: 1196_
|
||||
```
|
||||
|
||||
@@ -41,7 +41,24 @@ Algorytm:
|
||||
- znajdź klasę biznesową (`DefinicjaNumeracji`) oraz typ `*Module+DefinicjaNumeracjiRow` (mogą być w innym module — np. `CoreModule`);
|
||||
- powtórz całą procedurę (kroki 5–8) dla tego rekordu, używając prefiksu `Numeracja.` w kluczach wyników (`Numeracja.Pole1`, `Numeracja.Pole2`, …).
|
||||
Rekurencja działa dowolnie głęboko (subrow w subrowie). Pętle (rekord zawierający siebie pośrednio) są zabezpieczone przez zbiór odwiedzonych typów.
|
||||
10. Wypisz tabelę markdown na stdout (kolumny: `Pole | Typ | Rodzaj | Tytuł | Opis`).
|
||||
10. **Metadane tabeli** — dodatkowo do nagłówka trafiają:
|
||||
- `Tabela konfiguracyjna: Tak/Nie` — czytane z `[TableInfo(IsConfig=true)]` na zagnieżdżonej
|
||||
klasie `*Module.*Table` (atrybut siedzi tam, nie na top-levelowym typie zwracanym przez
|
||||
property `Table` w `*Row`).
|
||||
- `Guided: root` — gdy `*Table` dziedziczy z `GuidedTable`/`ExportedTable`.
|
||||
- `Guided: child — nadrzędna przez pole \`X\` → \`Y\`` — gdy w rekordzie istnieje pole
|
||||
z `[ColumnInfo(GuidedRelation=…)]` wskazujące tabelę nadrzędną w drzewie obiektów.
|
||||
- `Implementuje interfejsy: …` — lista interfejsów z `[TableInfo(Interfaces=…)]` tej tabeli.
|
||||
11. **Relacje interfejsowe** — skrypt buduje globalny indeks `interfejs → lista tabel implementujących`
|
||||
(iteracja po wszystkich `*Module.*Table` we wszystkich referencjach). Dla każdego pola, którego
|
||||
typ jest interfejsem występującym w tym indeksie (heurystyka: nazwa zaczyna się od `I` + wielka
|
||||
litera), kolumna `Rodzaj` dostaje znacznik `iface-ref`, a po głównej tabeli pól wypisywana
|
||||
jest sekcja `## Relacje interfejsowe` z listą `Pole | Interfejs | Tabele implementujące`.
|
||||
Pozwala to od razu zobaczyć alternatywy, do których pole może wskazywać.
|
||||
12. **Znacznik `guided-parent`** — pole rekordu z atrybutem `[ColumnInfo(GuidedRelation=…)]`
|
||||
dostaje w kolumnie `Rodzaj` dodatkowy tag `guided-parent`, sygnalizując, że to ono trzyma
|
||||
referencję do rootu drzewa.
|
||||
13. Wypisz tabelę markdown na stdout (kolumny: `Pole | Typ | Rodzaj | Tytuł | Opis`).
|
||||
|
||||
## Wymagania
|
||||
|
||||
@@ -70,6 +87,9 @@ dotnet script ~/.claude/skills/soneta-programming/scripts/scan-props.csx \
|
||||
```markdown
|
||||
# Pola i właściwości klasy biznesowej: `Soneta.Handel.DokumentHandlowy`
|
||||
Nazwa tabeli: `DokHandlowe`
|
||||
Tabela konfiguracyjna: Nie
|
||||
Guided: root
|
||||
Implementuje interfejsy: `IDokument`, `IKontrahentRef`
|
||||
|
||||
- pola bazodanowe: 128
|
||||
- pola kalkulowane (z klas biznesowych): 388
|
||||
@@ -78,14 +98,28 @@ Nazwa tabeli: `DokHandlowe`
|
||||
|------|-----|--------|-------|------|
|
||||
| Brutto | `decimal` | bazodanowe | Brutto | Wartość brutto dokumentu |
|
||||
| DataDokumentu | `System.DateTime` | bazodanowe | Data dokumentu | |
|
||||
| Kontrahent | `Soneta.Kontrahenci.Kontrahent` | bazodanowe | Kontrahent | |
|
||||
| Kontrahent | `Soneta.Kontrahenci.Kontrahent` | bazodanowe, iface-ref | Kontrahent | |
|
||||
| Netto | `decimal` | bazodanowe | Netto | |
|
||||
| Numer | `string` | bazodanowe | Numer | |
|
||||
| SaldoWaluta | `decimal` | | Saldo w walucie | |
|
||||
| ... | ... | ... | ... | ... |
|
||||
|
||||
## Relacje interfejsowe
|
||||
|
||||
Pola, których typ jest interfejsem zadeklarowanym w `[TableInfo(Interfaces=...)]` innych tabel.
|
||||
Pole może wskazywać na rekord dowolnej z poniższych tabel.
|
||||
|
||||
| Pole | Interfejs | Tabele implementujące |
|
||||
|------|-----------|------------------------|
|
||||
| Kontrahent | `IKontrahent` | `Kontrahent`, `Pracownik`, `Urzad` |
|
||||
```
|
||||
|
||||
Kolumna `Rodzaj` ma wartość `bazodanowe` dla pól rekordu lub jest pusta dla właściwości kalkulowanych.
|
||||
Kolumna `Rodzaj` jest kombinacją znaczników rozdzielonych przecinkami:
|
||||
- `bazodanowe` — pole rekordu (`*Record`); brak znacznika = property kalkulowana klasy biznesowej.
|
||||
- `guided-parent` — pole z `[ColumnInfo(GuidedRelation=…)]` trzymające referencję do nadrzędnej
|
||||
tabeli w drzewie obiektów guided.
|
||||
- `iface-ref` — typ pola jest interfejsem zadeklarowanym w `[TableInfo(Interfaces=…)]` innej tabeli;
|
||||
konkretne tabele docelowe są wymienione w sekcji `## Relacje interfejsowe` pod tabelą pól.
|
||||
|
||||
## Kody wyjścia
|
||||
|
||||
|
||||
Reference in New Issue
Block a user