COGF70 - Controllo Trasporti¶
Sorgente: cbl/cogf70.cbl | Program-ID: COGF70 | Tipo: Consultazione/stampa con parametri di selezione e griglia paginata
Menu: Vendite > Ristorni > Controllo Trasporti
Scopo¶
Estrae, visualizza e stampa i movimenti (bolle) su cui e' addebitato un costo di trasporto, ai fini del controllo dei ristorni. Per un intervallo di date ed eventualmente un singolo cliente/vettore, scandisce le testate bolle marcate come "trasporto" (tes-fl-tra = "S"), recupera il costo del trasporto dalla tabella trasporti (COGTRASP), risolve il riferimento fattura (COGRACCO -> COGFATTU) e presenta i dati in griglia raggruppati per cliente con totali. Supporta stampa e esportazione Excel.
Gli importi sono espressi nella divisa di conto e formattati tramite COGU10W.
Struttura della maschera¶
Screen definita in cogf70-01.scr. Due fasi: parametri e griglia paginata (e-tm-tab, ID k-id-grid).
Fase parametri (campi tab-maschera)¶
| Campo | Descrizione |
|---|---|
tm-tra-vet / tm-nome |
Codice e nome cliente/vettore (COGS65W; 0 = tutti i clienti) |
tm-da-data / tm-a-data |
Intervallo date (COGS52) |
tm-divisa |
Divisa (impostata alla divisa di conto) |
tm-totale |
Totale trasporti (read-only, formattato via COGU10W) |
Sequenza accept: a-tm-tra-vet -> a-tm-da-data -> a-tm-a-data -> a-richiesta-conferma.
Fase griglia (array tm-ele, max k-max-ele-tab = 100)¶
Colonne (record grid-record): data bolla, cliente, bolla (mag/anno/tipo/numero), riferimento fattura, importo trasporto, flag accantonamento (fl-acc). Righe di rottura "Totale cliente" (identificate da tm-mm = 99).
Griglia paginata (z-99-accept-paged-grid) con Pag+/Pag- su file di transito indicizzato. Tasti funzione: F3 conferma, F9 stampa (COGS54), S-F4 griglia, S-F5 esporta Excel, F8 aiuto/calendario, F2 campo precedente.
Logica di elaborazione¶
Apertura (apri): init, lettura azienda, apertura file, lettura divisa di conto (get-divisa-conto). Attiva i tasti funzione. Crea il file di transito indicizzato cogtrans con nome #$COGF70.<operatore> in temp-dir; se apertura in output fallisce (stato non 00) segnala "Funzione gia' in uso dall'operatore".
Reset (a4): svuota la griglia, imposta il periodo di default (1/1 - 31/12 dell'anno corrente), la divisa di conto e azzera il totale.
Estrazione (a-ricerca): scandisce COGTESBO per data (chiave 2) nell'intervallo tm-da-data..tm-a-data. Per ogni testata:
- ammette solo movimenti verso cliente (tes-tipocf = "C") marcati trasporto (tes-fl-tra = "S");
- se filtrato per vettore, richiede tm-tra-vet = tes-nonno;
- legge il costo trasporto da COGTRASP (rd-cogtrasp, tes-chia3);
- il primo trasporto del vettore viene lasciato a costo zero (regola commentata nel sorgente);
- risolve il nome cliente (COGGEANA), imposta la divisa di conto e cerca il riferimento fattura (search-fattu);
- scrive il record su cogtrans (wr-cogtrans) e aggiorna/scrive un record di totale per vettore (chiave con trs-data = 99999999).
Riferimento fattura (search-fattu): da COGRACCO (chiave 2 per bolla) ricava tipo/anno/numero fattura, il nome intestatario (COGGEANA) e, da COGFATTU, la descrizione pagamento/Ri.Ba. (COGU22, sendu22.cpy).
Griglia (carica-tab / a-grid): carica una pagina dal file di transito (x-spaginamento-start -> rst-not-less) e la costruisce via GRIDADMN. Le righe con tm-mm = 99 diventano righe "Totale cliente". Pag+/Pag- ripaginano (pg-after-pg-dwn / pg-after-pg-up), S-F5 esporta Excel, F9 stampa.
Stampa (stampa): dialogo COGS54, poi scan completo di cogtrans con testata di pagina/vettore, righe di dettaglio e code con totale per cliente e totale generale. Se le divise dei movimenti non sono omogenee, il totale mostra "!!".
Chiusura (fine / z-chiudi): chiude i file, chiude ed elimina cogtrans, chiude la finestra.
File utilizzati¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Parametri generali azienda |
| COGTESBO | ISAM | Input | Testate bolle/documenti (chiave 2 per data; filtro trasporto) |
| COGTRASP | ISAM | Input | Tabella costi trasporto per documento |
| COGRACCO | ISAM | Input | Raccordo bolla/fattura (chiave 2 per bolla) |
| COGFATTU | ISAM | Input | Fatture (per descrizione pagamento/Ri.Ba.) |
| COGGEANA | ISAM | Input | Anagrafica clienti (nomi) |
| cogtrans | Temp I-O | File di transito indicizzato (chiave trs-chia1, chiave alt. trs-vet-cod; creato/eliminato a runtime) |
|
| FLSTA | Temp | File di stampa |
Programmi chiamati¶
| Programma | Utilizzo |
|---|---|
COGS65W |
Accept codice cliente/vettore con aiuto (F8) |
COGS52W |
Accept campo data (F8 calendario) |
COGU10W |
Formattazione/edit importi in divisa |
COGU22 |
Descrizione tipo pagamento/Ri.Ba. (via sendu22.cpy) |
COGS54 |
Dialogo e gestione stampa (F9) |
GRIDADMN |
Gestione/personalizzazione griglia |
Copybook principali¶
| Copybook | Contenuto |
|---|---|
cogf70.select, cogf70.fd, cogf70.wrk, cogf70-01.scr, cogf70.decla, cogf70.prc |
Screen Designer: select, FD, working, screen, declaratives, procedure |
cogfiles.cpy, flsta.fd, flsta.cpy |
Layout FEURTAB e file di stampa |
cogtrans.k01 |
Chiave primaria file di transito (dichiarato manualmente nel sorgente: SELECT/FD) |
cogtesbo.k02, cogracco.k02 |
Chiavi secondarie testate bolle / raccordo (data e bolla) |
k-u10.cpy |
Costanti divise |
utils65.cpy, utils52.cpy, utils54.cpy, utils68.cpy, utils20.cpy, utile35.cpy, utilu09.cpy, utilu10.cpy, utilu22.cpy, utils15.cpy |
Linkage subroutine di accept/utility/stampa |
sendu22.cpy |
Chiamata a COGU22 (descrizione pagamento) |
dtab.cpy, fscrol2.cpy, utilpggr.cpy, GetDCont.cpy |
Utility date, scroll, griglia paginata, divisa di conto |
wgrave, wnscr, wopenf, wstato, cogazien |
Working storage standard + dati azienda |
wgrid.cpy, utilgdad.cpy |
Working griglia + linkage GRIDADMN |
mmmask.cpy |
Programma standalone (init/exit) |
Note tecniche¶
- Il file di transito
cogtranse' dichiarato manualmente (SELECT, FD,.k01) perche' file temporaneo non gestibile da Screens; il nome include l'operatore (wo-oper) per l'univocita' ed e' eliminato in uscita. - Il record di totale per vettore e' distinto dai record di dettaglio impostando
trs-data = 99999999; in griglia la riga di rottura "Totale cliente" e' riconosciuta datm-mm = 99. - Il primo trasporto di ogni vettore viene lasciato a costo zero (comportamento previsto,
tra-imp= 0 su invalid key nella lettura per chiavetrs-vet-cod). - Tutti gli importi sono riportati nella divisa di conto (
w-currency-conto); in stampa, se i movimenti hanno divise diverse, il totale evidenzia l'incongruenza con"!!". - Il programma e' in formato sorgente originale (source-computer
acu-cobol,gobackfinale), convertito a interfaccia Windows con griglia GRIDADMN.