COGU50 - Pagamento Multiplo Fornitori¶
Sorgente: cbl/cogu50.cbl | Program-ID: COGU50 | Tipo: Programma interattivo con griglia
Menu: Contabilita' > Fornit. a Part.Aperte > Pagamento Multiplo
Scopo¶
Programma interattivo per il pagamento multiplo di partite aperte fornitori. Consente di selezionare un range di date di valuta e una banca, visualizzare tutte le partite aperte in una griglia, selezionarle (integralmente o parzialmente) e confermare il pagamento multiplo delegando l'elaborazione contabile al sottoprogramma COGU51.
Il programma puo' essere chiamato autonomamente dal menu oppure da un programma chiamante che passa parametri precompilati tramite la linkage utilu50.cpy (campo u50-caller).
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | ISAM | Input | Tabella features/abilitazioni utente |
| COGTABEL | ISAM | Input | Tabella parametri contabili (tipo 66 = esercizio, tipo 45 = conti p.aperte, tipo 16 = contropartita banca) |
| COGGEANA | ISAM | Input | Anagrafica clienti/fornitori |
| COGWPNO | ISAM | Input | Movimenti partite aperte (fonte dei dati da visualizzare) |
| COGPARTI | ISAM | Input/Update | Partite: lettura per avviso ricevuta, update tramite COGU49 |
| NUTBANAS | ISAM | Input | Anagrafica banche |
| COGFATTU | ISAM | Input | Fatture: lettura numero fattura fornitore (fat-num-fat-for) |
| COGDESOR | ISAM | Input | Descrizioni ordinamento: lettura note sospensione (dor-des, dor-um) |
| NUTARIBA | ISAM | Input | Archivio RiBa emesse |
| NUTSRIBA | ISAM | Input | Archivio SRiBa |
| COGTRANS2 | ISAM temp. | I/O | File temporaneo di lavoro: raccoglie le partite filtrate dalla scansione COGWPNO (chiave1: partita; chiave2: nome+codice+data) |
| COGTRANS | ISAM temp. | I/O | File temporaneo di lavoro: dati normalizzati per visualizzazione griglia e selezione (chiave1: progressivo; chiave2: nome+codice+data) |
| COGTRANS3 | ISAM temp. | I/O | File temporaneo di lavoro: usato per salvare/recuperare lo stato della griglia tra una sessione e l'altra |
| COGPNCON | ISAM | Input | Piano dei conti: verifica validita' contropartita banca |
| COGSLPCO | ISAM | Input | Saldi partite per conto: non utilizzato attivamente nella logica corrente |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
cogu50.select |
Definizioni SELECT dei file ISAM del programma |
cogu50.fd |
FD dei file principali |
cogu50.wrk |
Working storage specifica: tab-maschera, grid-record, record temporanei |
cogu50-01.scr |
Schermata principale (Screen Designer): griglia + pannello parametri |
cogu50.decla |
Declaratives I/O |
cogu50.prc |
Procedure di I/O sui file del programma |
cogwpno.cpy |
Record COGWPNO (movimenti partite aperte) |
cogmovpa.cpy |
Struttura record movimento partite aperte (mov-rec) |
cogconta.cpy |
Record COGTABEL (euta-rec, conta-rec) |
cogazien.cpy |
Dati azienda (az-personal, az-ges-ip) |
wgrave.cpy, wstato.cpy, wopenf.cpy, wnscr.cpy |
Standard di programma |
wgrid.cpy |
Strutture per gestione griglia paginata |
utilgdad.cpy |
Strutture per chiamate a GRIDADMN |
utilu10.cpy |
Strutture per COGU10W (editing importi) |
utilu22.cpy |
Strutture per combo tipo pagamento |
utilu51.cpy |
Strutture per COGU51 (conferma pagamento) |
utilu49.cpy |
Strutture per COGU49 (modifica banca su partita) |
utils51.cpy |
Strutture per COGS51 (gestione sospensioni) |
utils52.cpy |
Strutture per COGS52W (editing date) |
utils54.cpy |
Strutture per COGS54 (selezione stampante/destinazione) |
utils65.cpy |
Strutture per COGS65W (ricerca anagrafica) |
utils77.cpy |
Strutture per COGS77 (caricamento partite aperte) |
utilw62.cpy |
Strutture per WIN062 (dettaglio partita) |
utilgdad.cpy |
Strutture per GRIDADMN |
k-u10.cpy |
Costanti operazioni COGU10W |
wcont.cpy, wcont1.cpy |
Linkage section standard |
utilu50.cpy |
Linkage section per chiamante esterno: u50-caller, u50-ana-tipo, u50-ban-cod, u50-data-da, u50-data-a, u50-tipag |
cogtrans.k01, cogtrans.k02 |
Chiavi file COGTRANS |
cogtran2.k01, cogtran2.k02 |
Chiavi file COGTRANS2 |
cogtran3.k01 |
Chiave file COGTRANS3 |
grave.cpy, mmmask.cpy, opengen.cpy, stato.cpy, stato1.cpy, winmsg.cpy |
Infrastruttura standard |
dtab.cpy, fscrol2.cpy, utilpggr.cpy |
Supporto griglia paginata |
getdcont.cpy |
Gestione contatori di controllo |
sendu22.cpy |
Invio combo tipo pagamento |
Struttura della working storage¶
tab-maschera (tm-*)¶
Struttura dati della maschera, divisa in:
- tm-dati: parametri di filtro (tipo anagrafica tm-tipo, divisa tm-tipo-divisa, date tm-datada/tm-dataa, banca tm-ban-cod/tm-ban-des, flag solo avviso ricevuta tm-solo-avviso-ric, tipo pagamento tm-tipag, totale importo selezionato tm-tot-impo-sel)
- tm-ele-sav: salvataggio riga corrente per ripristino su ESC nel dettaglio
- tm-tab: array di righe (tm-righe), max 100 elementi (k-max-ele-tab), ciascuna con:
- tm-ele-partita: chiave partita (codice cliente, partita, data scadenza)
- tm-ind-tot/tm-des-tot: indicatore riga di totale ("T")
- tm-pag-anag, tm-rb, tm-impo, tm-segno, tm-sosp, tm-sigla
- tm-impo-sel: importo selezionato per il pagamento (modificabile via F11)
- tm-sel: flag selezione ("S" = selezionata)
- tm-avv-ric: flag avviso ricevuta bancaria
File temporanei¶
I file temporanei vengono creati in ext-tmp-dir con nomi costruiti tramite STRING:
- COGTRANS2 (#$u50<oper><time>.DAT): fase 1 - raccolta partite da COGWPNO
- COGTRANS (#$cogu50.<oper>): fase 2 - partite normalizzate per griglia
- COGTRANS3 (#$cogu50-3.<oper>): salvataggio stato griglia
Logica di elaborazione¶
Flusso principale¶
Fase 1 - Caricamento parametri (apri → a4 → a-tm-ban-cod → a-inizio-dati)
- Inizializzazione standard, caricamento dati azienda ed esercizio contabile (COGTABEL tipo 66).
- Apertura/reset dei file temporanei COGTRANS2 e COGTRANS (verifica che non siano in uso).
- Acquisizione parametri: banca (
a-tm-ban-cod), flag avviso ricevuta (a-tm-solo-avviso-ric), date (a-tm-datada,a-tm-dataa), tipo pagamento (a-tm-tipag). - Se il programma e' chiamato da un chiamante esterno (
u50-caller not = spaces), i parametri vengono precaricati dalla linkageutilu50.cpye si salta direttamente ada-inizio-dati-ok.
Fase 2 - Ricerca partite (a-inizio-dati-ok → una-pre-0 → una-20a → loop)
- Chiamata a COGS77 con parametro
s77-fun = "R-VAL-BAN"per preparare il file temporaneonf-name-prcon le partite filtrate per banca e data valuta. - Apertura di COGWPNO e scansione sequenziale:
- Skip dei record gia' chiusi (
wpn-fl-chiu = "C") - Lettura anagrafica fornitore (COGGEANA) per nome
- Filtro sul tipo pagamento (
tm-tipag) - Se
az-personal = "PC"e filtro avviso ricevuta attivo: lettura COGPARTI per verifica banca - Skip delle partite in divisa diversa dalla divisa di conto
- Ricerca RiBa associate (NUTARIBA / NUTSRIBA) per le partite di tipo "I" o "R"
- Lettura numero fattura fornitore da COGFATTU per le partite fornitore
- Scrittura record in COGTRANS2 (chiave: partita; dati: importo, segno, tipo pagamento, nome, divisa, avviso ric.)
- Chiusura COGWPNO e riapertura COGTRANS2 in lettura.
Fase 3 - Normalizzazione (ela-10 → ela-20 → loop)
Scansione di COGTRANS2 (ordinato per nome+codice+data scadenza):
- Per ogni partita: lettura note sospensione da COGDESOR (dor-tip = "PA")
- Scrittura record normalizzato in COGTRANS con flag sospensione e descrizione
- Calcolo totalizzatori per nome (totalizza)
- Al cambio nominativo: scrittura riga totale in COGTRANS con trs-ind-tot = "T" e high-value come chiave per posizionarla in fondo
Fase 4 - Visualizzazione griglia (a35-0 → vis-tabella → vis-tabella-disp)
Griglia paginata gestita da GRIDADMN. Per ogni pagina vengono letti i record da COGTRANS (chiave2: nome+codice+data) e riempita la griglia con x-riempi-grid-record.
Gestione eventi nella griglia:
- Invio: seleziona/deseleziona partita (toggle tm-impo-sel e tm-sel); aggiorna COGTRANS e ricalcola totale selezionato
- F11: apre il dettaglio riga (a-riga-dettaglio → a-tm-impo-sel) per inserire importo parziale
- F7: chiama COGS51 per gestire sospensione della partita
- F6: chiama COGU49 per modificare la banca associata a una partita RiBa (solo se dep-tipo = "F" e tm-tip-pag = "R")
- F8: chiama WIN062 per visualizzare il dettaglio della partita
- F9: avvia la stampa dello scadenzario (st-stampa)
- F3: avvia la conferma del pagamento (COGU51)
- Shift+F4: personalizzazione colonne griglia (GRIDADMN)
- Shift+F5: esporta griglia in Excel
- Esc: salva stato in COGTRANS3 (salva-cogtrans) e ritorna ai parametri
Fase 5 - Conferma pagamento (F3 in griglia)
- Verifica che
tm-tot-impo-sel > 0 - Chiama
COGU51 using stringhe util-u51passando: nome file COGTRANS, tipo anagrafica, codice banca, tipo pagamento - Se COGU51 non ritorna ESC: reset COGTRANS3, torna ai parametri
- Se COGU51 ritorna ESC: resta nella griglia
Paragrafi principali¶
| Paragrafo | Descrizione |
|---|---|
apri |
Inizializzazione, apertura file, caricamento configurazioni |
apri-sr-03/04 |
Apertura NUTARIBA / NUTSRIBA (con gestione assenza archivio) |
a4 |
Reset griglia e file temporanei; reinizializzazione per nuova ricerca |
a-tm-ban-cod |
Acquisizione codice banca con validazione e lettura contropartita |
a-tm-datada / a-tm-dataa |
Acquisizione range date con COGS52W |
a-tm-tipag |
Acquisizione tipo pagamento con combo U22 |
a-inizio-dati |
Verifica campi obbligatori e richiesta conferma |
a-inizio-dati-ok |
Avvio ricerca partite |
una-pre-0 |
Chiamata COGS77 per prefiltraggio banca/data valuta |
una-20a/una-20b/una-20c |
Loop scansione COGWPNO e scrittura COGTRANS2 |
ela-10/ela-20/ela-100 |
Loop normalizzazione COGTRANS2 → COGTRANS con totali |
a35-0 |
Avvio visualizzazione griglia |
vis-tabella |
Setup paginazione griglia |
vis-tabella-disp |
Loop eventi griglia (Invio, F3, F6, F7, F8, F9, F11) |
a-riga-dettaglio / a-tm-impo-sel |
Dettaglio riga per pagamento parziale |
st-stampa |
Stampa scadenzario tramite COGS54 |
salva-cogtrans |
Salvataggio stato selezione in COGTRANS3 |
recupera-cogtrans3 |
Ripristino stato selezione da COGTRANS3 |
totalizza |
Calcolo saldi (w-tot-saldi: dare/avere per totale riga) |
calcola-tot-selezionato |
Ricalcolo tm-tot-impo-sel sommando gli importi selezionati |
x-imposta-conferma |
Verifica tutti i campi obbligatori per abilitare F3 |
z-prepara-tm-grid |
Inizializzazione colonne griglia tramite GRIDADMN |
z-costruisci-grid |
Riempimento griglia con i dati di tm-tab |
fine / z-chiudi |
Chiusura file, delete file temporanei COGTRANS e COGTRANS2 |
Chiamate a sottoprogrammi¶
| Programma | Utilizzo |
|---|---|
COGS77 |
Caricamento partite aperte filtrate per banca/data in file temporaneo; parametro s77-fun = "R-VAL-BAN" |
COGU51 |
Conferma ed esecuzione del pagamento multiplo; riceve nome file COGTRANS, tipo, banca, tipo pagamento |
COGU49 |
Modifica banca su partita RiBa (F6 in griglia) |
COGS51 |
Gestione sospensione partita (F7 in griglia); parametro s51-upd = "U" |
WIN062 |
Visualizzazione dettaglio partita (F8 in griglia) |
GRIDADMN |
Gestione completa della griglia: Prepara, Add-Record, Modify-Record, Svuota, personalizzazione |
COGU10W |
Editing e display importi (importo selezionato, totale) |
COGS52W |
Editing date (tm-datada, tm-dataa) |
COGS54 |
Selezione destinazione stampa e stampa scadenzario |
Note implementative¶
- Il
dep-tipoe' sempre forzato a"F"a runtime (riga 568:move 'F' to dep-tipo), indipendentemente da quanto ricevuto dal chiamante, rendendo il programma esclusivo per i fornitori. - I file temporanei vengono cancellati (
delete file) alla chiusura; in caso di crash possono rimanere bloccati: il programma lo rileva all'apertura successiva e segnala "Funzione gia' in uso dall'operatore". - La griglia usa
k-max-ele-tab = 100come dimensione massima della pagina. - La riga di "Totale del periodo" e' riconoscibile dal flag
trs-ind-tot = "T"(etm-ind-tot (i) = "T"nella tabella): su queste righe Invio, F8, F11, F7 sono disabilitati con messaggio. - Per
az-personal = "PC", il campotm-solo-avviso-ricviene inizializzato a "S" e la griglia include solo le partite con avviso ricevuta.