Files
soneta-erp-skills/soneta-programming/references/domeny/crm/CRM07-powiazania.md
T

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.Operator to 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żyj session.Get(...)).
  • Do sprawdzania opieki „na dziś"/„w okresie" używaj metod publicznych JestOpiekunemNaDzis, OpiekunowieWOkresie zamiast ręcznego filtrowania dat.
  • Relacje podmiotów (nadrzędny/podrzędny, płatnik/odbiorca) zakładaj workerami NowyPodmiotNadrzednyWorker/NowyPodmiotPodrzednyWorker — mają walidatory spójności.