Vai al contenuto

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 (apria4a-tm-ban-coda-inizio-dati)

  1. Inizializzazione standard, caricamento dati azienda ed esercizio contabile (COGTABEL tipo 66).
  2. Apertura/reset dei file temporanei COGTRANS2 e COGTRANS (verifica che non siano in uso).
  3. 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).
  4. Se il programma e' chiamato da un chiamante esterno (u50-caller not = spaces), i parametri vengono precaricati dalla linkage utilu50.cpy e si salta direttamente ad a-inizio-dati-ok.

Fase 2 - Ricerca partite (a-inizio-dati-okuna-pre-0una-20a → loop)

  1. Chiamata a COGS77 con parametro s77-fun = "R-VAL-BAN" per preparare il file temporaneo nf-name-pr con le partite filtrate per banca e data valuta.
  2. Apertura di COGWPNO e scansione sequenziale:
  3. Skip dei record gia' chiusi (wpn-fl-chiu = "C")
  4. Lettura anagrafica fornitore (COGGEANA) per nome
  5. Filtro sul tipo pagamento (tm-tipag)
  6. Se az-personal = "PC" e filtro avviso ricevuta attivo: lettura COGPARTI per verifica banca
  7. Skip delle partite in divisa diversa dalla divisa di conto
  8. Ricerca RiBa associate (NUTARIBA / NUTSRIBA) per le partite di tipo "I" o "R"
  9. Lettura numero fattura fornitore da COGFATTU per le partite fornitore
  10. Scrittura record in COGTRANS2 (chiave: partita; dati: importo, segno, tipo pagamento, nome, divisa, avviso ric.)
  11. Chiusura COGWPNO e riapertura COGTRANS2 in lettura.

Fase 3 - Normalizzazione (ela-10ela-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-0vis-tabellavis-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-dettaglioa-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)

  1. Verifica che tm-tot-impo-sel > 0
  2. Chiama COGU51 using stringhe util-u51 passando: nome file COGTRANS, tipo anagrafica, codice banca, tipo pagamento
  3. Se COGU51 non ritorna ESC: reset COGTRANS3, torna ai parametri
  4. 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-tipo e' 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 = 100 come dimensione massima della pagina.
  • La riga di "Totale del periodo" e' riconoscibile dal flag trs-ind-tot = "T" (e tm-ind-tot (i) = "T" nella tabella): su queste righe Invio, F8, F11, F7 sono disabilitati con messaggio.
  • Per az-personal = "PC", il campo tm-solo-avviso-ric viene inizializzato a "S" e la griglia include solo le partite con avviso ricevuta.