2.2 KiB
2.2 KiB
CRM07 — Powiązania
Wspólne fakty o typie, podstawowe typy i szablon wzorca: ../crm.md.
CRM-W14 — Powiązania i opiekunowie
Cel: zarządzać opiekunami i relacjami między kontrahentami.
Warianty:
| Wariant | Operacja / worker |
|---|---|
| Opiekun (dodanie / główny) | Opiekunowie: SubTable<Opiekun>, worker UstawOpiekunaGlownegoWorker |
| Sprawdzenie opieki na dzień | metody JestOpiekunemNaDzis(...), OpiekunowieWOkresie(...) |
| Podmiot nadrzędny / podrzędny | workery NowyPodmiotNadrzednyWorker, NowyPodmiotPodrzednyWorker |
| Relacje podmiotów | Podrzedni: SubTable<RelacjaPodmiotu>, PodmiotNadrzedny: IPodmiot |
| Połącz / rozłącz | workery PolaczKontrahentowWorker, RozlaczKontrahentaWorker |
Pola i typy (Opiekun): Kontrahent: Kontrahent, Operator: Operator, Typ: TypOpiekuna
(Glówny=0, Zastępca=1), Rola: RolaOpiekun, OddzialFirmy, DataOd: Date, DataDo: Date,
Aktywny: bool.
Snippet:
var crm = session.GetCRM();
var k = crm.Kontrahenci.WgKodu["FIRMA001"];
using (var t = session.Logout(editMode: true))
{
var op = new Opiekun();
crm.Opiekunowie.AddRow(op);
op.Kontrahent = k;
op.Operator = oper; // Operator pobrany z modułu Business
op.Typ = TypOpiekuna.Glówny;
op.DataOd = Date.Today;
op.DataDo = Date.MaxValue;
op.Aktywny = true;
t.Commit();
}
session.Save();
// Odczyt relacji podmiotów:
foreach (RelacjaPodmiotu r in k.Podrzedni)
{
// r.Nadrzedny, r.PowiazaniePodmiotu.Rola, r.PowiazaniePodmiotu.RodzajPowiazania
}
IPodmiot nadrzedny = k.PodmiotNadrzedny;
Pułapki:
Opiekun.Operatorto rekord operatora (dane konfiguracyjne) — w kodzie biznesowym pobieraj go spójnie z bieżącą sesją; nie mieszaj rekordów z różnych sesji (safe-code §2.1, użyjsession.Get(...)).- Do sprawdzania opieki „na dziś"/„w okresie" używaj metod publicznych
JestOpiekunemNaDzis,OpiekunowieWOkresiezamiast ręcznego filtrowania dat. - Relacje podmiotów (nadrzędny/podrzędny, płatnik/odbiorca) zakładaj workerami
NowyPodmiotNadrzednyWorker/NowyPodmiotPodrzednyWorker— mają walidatory spójności.