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.