Vai al contenuto

Clienti padre/figlio

Concetto

Nel gestionale Eurocoge esiste una struttura gerarchica cliente padre / cliente figlio utilizzata per gestire: - Gruppi aziendali - Sedi multiple di uno stesso cliente - Destinazioni diverse

Struttura in COGTESOR (testata ordini)

Il campo tor-destina determina la modalita':

tor-destina tor-clifor Significato
= 0 cliente Cliente singolo (no gerarchia)
> 0 (padre) figlio tor-destina = padre, tor-clifor = figlio

Attenzione - illogicita' storica: i nomi dei campi sono fuorvianti. Quando c'e' gerarchia padre/figlio, tor-clifor (che suggerirebbe il cliente principale) contiene il figlio, e tor-destina (che suggerirebbe la destinazione) contiene il padre.

Esempio con padre=99, figlio=293:

Caso tor-clifor tor-destina
Solo padre 99 0
Padre + figlio 293 (figlio) 99 (padre)

Utilizzo in COGM65 (buoni prelievo)

Campi maschera

02 tm-cli              pic 9(05).     *> Cliente padre
02 tm-cli-f-cod        pic 9(05).     *> Cliente figlio

Controllo validità (riga 3188)

x-controlla-tm-cli-f.
   *> Se non c'è padre, non può esserci figlio
   if tm-cli = 0 and tm-cli-f-cod > 0
      move "In assenza di cliente padre, il cliente figlio non può essere selezionato"
      ...
   end-if

Controllo coerenza con ordine (righe 3751-3781)

Quando si seleziona un BDP collegato a un ordine, il programma verifica che la coppia padre/figlio sia coerente:

*> Legge la testata ordine
perform rd-cogtesor

if tor-destina = 0
   *> Cliente singolo: deve coincidere con tm-cli e non ci deve essere figlio
   if tor-clifor = tm-cli and tm-cli-f-cod = 0
      move "S" to w-bdp-ok
   end-if
else
   *> Padre/figlio: entrambi devono coincidere
   if tor-destina = tm-cli and tor-clifor = tm-cli-f-cod
      move "S" to w-bdp-ok
   end-if
end-if

Flag "figli tutti" (tm-figli-tutti)

Quando tm-figli-tutti = "S", accetta BdP per qualunque figlio del padre indicato, senza richiedere un figlio specifico. La verifica deve comunque controllare che il padre corrisponda:

if tm-figli-tutti = "S" and
   tor-destina = tm-cli
   move "S"        to w-bdp-ok
end-if

Senza il check su tor-destina = tm-cli, passerebbero ordini di padri diversi.

Nota: fallimento lettura ordine

Se la lettura di COGTESOR fallisce, il controllo viene bypassato (w-bdp-ok = "S"). Questo e' intenzionale per permettere BDP non collegati a ordini.

Programmi coinvolti

Programma Utilizzo
cogm65 Gestione BDP con filtro padre/figlio
cogtesor Tabella ordini con campi tor-destina e tor-clifor
coggeana Anagrafica generale (verifica esistenza cliente)