COGO10CS - Gestione ordini clienti (standard)¶
Sorgente: cbl/cogo10cs.cbl | Program-ID: COGO10CS | Tipo: Programma interattivo carattere (worker)
Menu: Ordini > Clienti > Gestione
Scopo¶
COGO10CS e' la versione "standard" (carattere) della gestione/variazione degli ordini cliente gia' esistenti, delegata dal launcher COGO10. Il programma richiama un ordine per anno/numero/progressivo, ne visualizza la testata e le righe, permette di modificare i dati di testata (intestatario, committente, magazzino, validita', pagamento, causale, ecc.) e la tabella righe (merce, quantita', sconto, prezzo), quindi riscrive testata, righe (COGRIGOR), prezzi (COGPREOR) e consegne (COGCONOR) e ricalcola l'impegno di magazzino tramite COGU12. Sono presenti anche la cancellazione completa dell'ordine e la stampa (COGO65).
Nota: l'intestazione del sorgente riporta "Versione personalizzata per CANTINA"; la maschera di testata include campi specifici (vasche, grado, ritiro, analisi, arbitro, mediatore, provvigione) memorizzati riutilizzando campi della testata ordine (tor-vasche, tor-grado, tor-vettore1/2/3, tor-agente, tor-fl-prv).
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed | Input | Tabella nomi file |
| COGTABEL | Indexed | Input | Tabella generica (pagamenti tipo 14, causali tipo 15, agenti tipo 21) |
| COGMERCI | Indexed | Input | Anagrafica merci (accesso per chiave primaria e chiave EAN mer-chia2) |
| COGGEANA | Indexed | Input | Anagrafica clienti/fornitori (intestatario, committente, mediatore) |
| COGMAGAZ | Indexed | Input | Anagrafica magazzini |
| COGSLMAG | Indexed | Input | Saldi di magazzino (controllo giacenza) |
| COGTESOR | Indexed | I-O | Testate ordini (record letto, riscritto, cancellato) |
| COGRIGOR | Indexed | I-O | Righe ordine (riscritte/cancellate) |
| COGPREOR | Indexed | I-O | Prezzi ordine |
| COGCONOR | Indexed | I-O | Consegne ordine (cancellate in fase di eliminazione) |
Copybook utilizzate¶
| Copybook | Descrizione |
|---|---|
| feurtab.fd | SELECT tabella nomi file |
| cogtabel.fd | SELECT COGTABEL |
| cogmerci.fd | SELECT COGMERCI |
| coggeana.fd | SELECT COGGEANA |
| cogmagaz.fd | SELECT COGMAGAZ |
| cogslmag.fd | SELECT COGSLMAG |
| cogtesor.fd | SELECT COGTESOR |
| cogrigor.fd | SELECT COGRIGOR |
| cogpreor.fd | SELECT COGPREOR |
| cogconor.fd | SELECT COGCONOR |
| COGFILES.CPY | FD FEURTAB (record nomi file) |
| COGTABEL.CPY | FD COGTABEL |
| COGTESOR.CPY | FD COGTESOR (testata ordine) |
| COGGEANA.CPY | FD COGGEANA |
| COGRIGOR.CPY | FD COGRIGOR (riga ordine) |
| COGPREOR.CPY | FD COGPREOR |
| COGMERCI.CPY | FD COGMERCI |
| COGMAGAZ.CPY | FD COGMAGAZ |
| COGSLMAG.CPY | FD COGSLMAG (saldi) |
| COGCONOR.CPY | FD COGCONOR |
| wstato.cpy | Stato I/O |
| wgrave.cpy | Gestione errori gravi |
| wopenf.cpy | Apertura file |
| wnscr.cpy | Dati schermo |
| cogazien.cpy | Dati azienda |
| utils52.cpy | Interfaccia COGS52 (date) |
| utils65.cpy | Interfaccia COGS65 (ricerca anagrafica) |
| utilu10.cpy | Interfaccia COGU10 (importi) |
| utilu12.cpy | Interfaccia COGU12 (impegno merce) |
| utilu20.cpy | Interfaccia COGU20 (input numerico) |
| utilu22.cpy | Interfaccia COGU22 (tipo pagamento/RB) |
| utile35.cpy | Interfaccia COGE35 (ricerca agente/mediatore) |
| wcont.cpy | Linkage stringhe comuni |
| utilo65.cpy | Linkage COGO65 (stampa ordine) |
| utils01.cpy | Linkage COGS01 (calcolo prezzo di listino) |
| wcont1.cpy | Linkage area utente 2 |
| stato.cpy / stato1.cpy | Controllo stato I/O |
| winmsg.cpy | Messaggi/box a video |
| grave.cpy | Paragrafi errori gravi |
| open1.cpy | Apertura file |
| mmmask.cpy | Paragrafi init/exit programma e gestione maschera |
| sendu22.cpy | Paragrafi COGU22 |
| cogtabel.k01 | Accesso COGTABEL per chiave k01 |
Logica di elaborazione¶
- Inizializzazione:
open-files, lettura dati azienda (rd-azi), impostazione maschera di testatamm-1(24x80) e display iniziale. - Selezione ordine: input anno (via COGS52 con controllo anno = anno sistema +/- 1), numero e progressivo;
read cogtesor. Se l'ordine non esiste viene segnalato e si torna alla richiesta. La testata letta viene mostrata dametti-testata(intestatario, committente, magazzino, pagamento, causale, mediatore, campi cantina) e le righe collegate vengono caricate nella tabella internatael1(fino a 100 elementi) leggendo COGRIGOR, COGMERCI e COGPREOR. - Variazione testata: sequenza di paragrafi (a6c...a62) che permettono di modificare impegno merce, intestatario/committente (COGS65 con controllo su COGGEANA), magazzino (COGMAGAZ), date di validita' e scadenza (COGS52), tipo ordine (C/A), codice pagamento (COGTABEL tipo 14, consulta con WIN002), tipo pagamento/raggruppamento RB (COGU22), causale di uscita (COGTABEL tipo 15, consulta con WIN001, verifica
euta-cb-fl-eu = 'U'), porto, cura trasporto (M/D), campi specifici cantina, mediatore (COGE35 o COGGEANA tipo 'F' con verifica codifica agente su COGTABEL tipo 21) e tipo provvigione (P/Q). - Variazione righe (maschera
mm-2): per ogni riga input di gruppo/sottogruppo/codice merce o bar code (lettura COGMERCI per chiave primaria e chiave EAN), descrizione con ricerca alfabetica (WIN004), riferimento listino (con richiesta password per listino 5 tramite record COGMERCI '999999999'), sconto (COGU20), quantita' (COGU20) con controllo giacenza su COGSLMAG (ctr-gia), prezzo di listino ricalcolato da COGS01 e prezzo editato in valuta (COGU10). Navigazione tabella con F2/frecce/PgUp/PgDwn, cancellazione riga (F5) e ricerca merce per codice (WIN005). - Registrazione (F3): controllo che almeno una riga sia significativa;
rewrite cogtesor(con incremento progressivo su invalid key); cancellazione delle vecchie righe COGRIGOR con storno dell'impegno via COGU12 (u12-qta-old); riscrittura delle righe dalla tabella con aggiunta all'impegno via COGU12 (u12-qta-new). A fine aggiornamento possibilita' di stampa (F9 -> COGO65). - Cancellazione ordine (F4): conferma, quindi
deletedi COGTESOR, delle righe COGRIGOR (con storno impegno via COGU12), dei prezzi COGPREOR e delle consegne COGCONOR. - Uscita: chiusura file, chiamata a COGS01 con
s01-open = 'C',z-99-exit-program,exit program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGS52 | Input e validazione date (anno ordine, validita', scadenza) |
| COGS65 | Ricerca/selezione anagrafica cliente (intestatario, committente) |
| COGS01 | Calcolo prezzo netto di listino per la riga; apertura/chiusura contesto listini |
| COGU10 | Input e visualizzazione importi in valuta (prezzo riga) |
| COGU12 | Aggiornamento impegno merce di magazzino (storno/aggiunta) |
| COGU20 | Input numerico editato (sconto, quantita') |
| COGE35 | Ricerca agente/mediatore |
| WIN001 | Popup scelta causale |
| WIN002 | Popup scelta codice pagamento |
| WIN004 | Popup ricerca alfabetica merce |
| WIN005 | Popup ricerca merce per codice |
| COGO65 | Stampa dell'ordine (opzionale, F9 dopo la registrazione) |
Nota: COGU22 e' invocato tramite i paragrafi della copybook sendu22.cpy (gestione tipo pagamento/raggruppamento RB).