Vai al contenuto

COGF21 - Stampa Situazione Distribuzione

Panoramica

Programma di stampa per la situazione della distribuzione ordini. Raccoglie i dati di distribuzione in tre file di transito temporanei, poi produce un report con tre possibili dettagli: per ordine, per merce o per cliente. Include totali parziali per ogni livello di raggruppamento e totale generale con quantita' consegnata, distribuita e residua.

Posizione nel menu

Menu Percorso
Ordini Clienti > Distribuzione > Stampa Situazione

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB Input Tabella di sistema
COGTESOR Input Testata ordini (tor-chia, tor-tipo, tor-anno, tor-clifor, tor-chiu, tor-datdecor)
COGRIGOR Input Righe ordini (ror-testa, ror-merce, ror-rig-pro, ror-qtaord)
COGCONOR Input Consegne ordini (cor-chia1, cor-o-testa, cor-merce, cor-qta, cor-mag/anno/tipo/numero)
COGDISOR Input Distribuzione ordini (dis-tipo, dis-merce, dis-consegna-cli/for, dis-qta)
COGGEANA Input Anagrafica generale
COGMERCI Input Anagrafica merci (mer-chia, mer-descr)
COGTRANS I/O Transito 1: dettaglio per consegna (#COGF21A)
COGTRANS2 I/O Transito 2: riepilogo per ordine (#COGF21B)
COGTRANS3 I/O Transito 3: riepilogo per consegna (#COGF21C)
FLSTA Output File di stampa

Copybook principali

Copybook Descrizione
cogf21.select / .fd / .wrk / .decla / .prc File generati Screen Designer
cogf21-01.scr Screen section
flsta.fd / flsta.cpy File di stampa
k-u10.cpy Costanti COGU10
wrk-u10.cpy Working COGU10
utils50.cpy COGS50
utils52.cpy COGS52 (date)
utils54.cpy COGS54 (anteprima stampa)
utils65.cpy COGS65
utilu10.cpy COGU10 (divise)
utilncnf.cpy Configurazioni RNEWCONF
cogazien.cpy Dati azienda
printer.cpy Routine di stampa
GetDCont.cpy Get divisa conto

Chiavi secondarie utilizzate

Copybook Descrizione
cogtrans.k01 Chiave primaria transito 1
cogtrans.k02 Chiave 2 transito 1 (per merce)
cogtrans.k03 Chiave 3 transito 1 (per ordine cliente)
cogtran2.k01 Chiave primaria transito 2
cogtran2.k02 Chiave 2 transito 2 (per anagrafica)
cogtran3.k01 Chiave primaria transito 3
cogdisor.k02 Chiave 2 COGDISOR
cogdisor.k04 Chiave 4 COGDISOR
cogconor.k02 Chiave 2 COGCONOR

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS54 Gestione anteprima/stampa (scelta destinazione)
COGU10W Gestione divise e importi
RNEWCONF Lettura configurazioni
AZVALIDA.COB Validazione date

Costanti

Costante Valore Descrizione
k-tipo-distrib "DO" Tipo distribuzione ordini
k-stato-nonevaso space Stato non evaso
k-det-merce "M" Dettaglio per merce
k-det-ordine "O" Dettaglio per ordine
k-det-cliente "C" Dettaglio per cliente
k-ord-aperti "A" Solo ordini aperti
k-ord-chiusi "C" Solo ordini chiusi
k-ord-tutti "T" Tutti gli ordini
k-tor-chiuso "C" Stato testata ordine chiuso
k-max-rig 52 Righe massime per pagina di stampa
k-mer-descr-null " Merce Cancellata " Descrizione merce inesistente
k-ana-nome-null " Codice Anagrafico Cancellato " Descrizione anagrafica inesistente
w-siz-stampa 164 Larghezza stampa in caratteri

Configurazioni RNEWCONF

Chiave Gruppo Descrizione
LIMITE DI TUTELA ORDINI Quantita' limite per la tutela (tm-cfg-lim-tut)

Linkage section

Il programma riceve parametri tramite user-area (util-f21):

Campo Tipo Descrizione
uf21-tipo x(01) Tipo anagrafica (C=cliente, F=fornitore)
uf21-ordine Anno+numero+progressivo dell'ordine
uf21-caller x(08) Programma chiamante
uf21-called x(08) Programma chiamato

Logica principale

Maschera di selezione (a4 -> a-richiesta-conferma)

Campi di input in tab-maschera:

  • tm-da-data / tm-a-data: periodo di selezione (YYYYMMDD), validato con AZVALIDA.COB, coerenza date verificata
  • tm-ord: selezione ordini (A=aperti, C=chiusi, T=tutti)
  • tm-det: tipo dettaglio stampa (O=ordine, M=merce, C=cliente)

Default: data odierna - 31/12/anno corrente, ordini aperti, dettaglio per ordine.

Elaborazione (b-elabora)

Il giro e' organizzato in due passate:

Passata 1 - Scansione ordini cliente:

  • Scandisce COGTESOR filtrando per tipo cliente (tor-tipo = "C"), periodo (tor-datdecor tra tm-da-data e tm-a-data), e stato ordine (aperto/chiuso/tutti)
  • Per ogni ordine: scrive su COGTRANS2 (testata ordine con anagrafica e quantita' totale), poi scandisce COGRIGOR per le righe ordine
  • Per ogni riga ordine: scandisce COGCONOR (consegne) e per ogni consegna scandisce COGDISOR (distribuzione) per trovare i legami fornitore
  • Scrive su COGTRANS (dettaglio: consegna cli + consegna for + merce + quantita') e su COGTRANS3 (riepilogo quantita' per consegna)

Passata 2 - Completamento dati fornitore:

  • Scandisce COGTRANS e per ogni record con consegna fornitore valorizzata, legge COGCONOR per recuperare l'ordine fornitore
  • Aggiorna COGTRANS con ordine fornitore e quantita' consegna fornitore

File di transito

COGTRANS (transito 1): chiave primaria = consegna-cli + consegna-for. Chiave 2 = merce + chiave1. Chiave 3 = ordine-cli + chiave1. Campi: ordine-cli, ordine-for, merce, merce-des, cc-qta, cf-qta, dis-qta.

COGTRANS2 (transito 2): chiave = ordine (tipo+anno+numero+progressivo). Chiave 2 = ana-cod + chiave1. Campi: ana-cod, ana-des, qta-totale, stato.

COGTRANS3 (transito 3): chiave = consegna (mag+anno+tipo+numero). Campi: qta-totale.

Stampa (c-stampa)

In base a tm-det il cursore parte dalla chiave opportuna del transito:

  • Per ordine (k-det-ordine): scandisce COGTRANS per chiave 3 (ordine-cli). Ad ogni rottura ordine stampa testata ordine con dati da COGTRANS2. Per ogni consegna stampa testata consegna con quantita' da COGTRANS3. Le righe dettaglio mostrano merce, quantita' consegna, quantita' distribuita, consegna e ordine fornitore
  • Per merce (k-det-merce): scandisce COGTRANS per chiave 2 (merce). Ad ogni rottura merce stampa testata merce. Le righe dettaglio mostrano cliente, consegna cliente, ordine cliente, quantita', consegna e ordine fornitore
  • Per cliente (k-det-cliente): scandisce COGTRANS2 per chiave 2 (ana-cod). Per ogni cliente, per ogni ordine legge COGTRANS per chiave 3 e stampa il dettaglio come nel caso "per ordine"

Totali

Variabili di accumulazione a piu' livelli:

Livello Variabili
Generale w-tot-gen-qta-con, w-tot-gen-qta-dis
Ordine / Merce w-tot-qta-con, w-tot-qta-dis
Cliente w-cli-qta-con, w-cli-qta-dis
Residuo w-residuo (calcolato come qta-con - qta-dis)

I totali vengono stampati in paragrafi dedicati: totale-ordine, totale-merce, totale-cliente, totale-generale1 (per merce), totale-generale2 (per ordine/cliente).

Layout stampa

Larghezza: 164 caratteri. Massimo 52 righe per pagina.

Strutture di stampa definite come record in working-storage: testa-init, ts-ordine, ts-consegna, ts-merce, riga-ordine, riga-merce, coda-ordine, coda-merce, coda-cliente, coda-generale-1, coda-generale-2.