COGO05CS - Inserimento ordini clienti (standard)¶
Sorgente: cbl/cogo05cs.cbl | Program-ID: COGO05CS | Tipo: Programma interattivo a carattere (worker)
Menu: Ordini > Clienti > Inserimento
Scopo¶
Inserimento di ordini clienti nella versione a carattere (interfaccia DOS 24x80), variante di gestione delegata dal launcher COGO05, che seleziona il worker di inserimento ordine in base alla configurazione aziendale. E' la versione standard (personalizzata per l'ambito "Cantina", come indicato nell'intestazione del sorgente): oltre alla testata e alle righe di ordine classiche, richiede campi specifici (vasche, grado, ritiro, analisi acquisto, arbitro, mediatore, tipo provvigione) memorizzati in campi della testata ordine (COGTESOR). Consente la duplicazione di un ordine esistente (F6) e, a fine registrazione, la stampa immediata (F9) tramite COGO65.
L'ordine viene scritto su testata (COGTESOR) e righe (COGRIGOR); il numero progressivo e' assegnato da COGS25; l'impegno merce a magazzino e' gestito da COGU12.
File e tabelle¶
| File/Tabella | Tipo | Modalita' | Descrizione |
|---|---|---|---|
| FEURTAB | Indexed | Input | Tabella nomi file (FD feurtab, record cogfiles.cpy) |
| COGTABEL | Indexed | I-O | Tabella generica (tipo 14 pagamenti, 15 causali, 21 agenti) |
| COGTESOR | Indexed | I-O | Testata ordini (scrittura testata ordine) |
| COGGEANA | Indexed | Input | Anagrafica clienti/fornitori |
| COGRIGOR | Indexed | I-O | Righe ordine (scrittura righe, lettura per duplicazione) |
| COGMERCI | Indexed | Input | Anagrafica merci (chiave codice, chia2 EAN/barcode) |
| COGMAGAZ | Indexed | Input | Anagrafica magazzini |
| COGSLMAG | Indexed | Input | Saldi di magazzino (controllo giacenza/impegnato/ordinato) |
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 |
| cogtesor.fd | SELECT COGTESOR |
| cogrigor.fd | SELECT COGRIGOR |
| cogslmag.fd | SELECT COGSLMAG |
| cogfiles.cpy | Record FD FEURTAB |
| cogtabel.cpy | Record FD COGTABEL |
| cogtesor.cpy | Record FD COGTESOR |
| coggeana.cpy | Record FD COGGEANA |
| cogrigor.cpy | Record FD COGRIGOR |
| cogmerci.cpy | Record FD COGMERCI |
| cogmagaz.cpy | Record FD COGMAGAZ |
| cogslmag.cpy | Record FD COGSLMAG |
| wstato.cpy | Stato I/O |
| wgrave.cpy | Gestione errori gravi |
| wopenf.cpy | Apertura file |
| wnscr.cpy | Dati schermo |
| cogazien.cpy | Dati azienda |
| utils25.cpy | Linkage COGS25 (numeratore) |
| utils52.cpy | Linkage COGS52 (input date) |
| utils65.cpy | Linkage COGS65 (ricerca anagrafica) |
| utilu10.cpy | Linkage COGU10 (importi/valuta) |
| utilu12.cpy | Linkage COGU12 (impegno magazzino) |
| utilu20.cpy | Linkage COGU20 (input numerici) |
| utilu22.cpy | Linkage COGU22 (raggruppamento/RB) |
| utile35.cpy | Linkage COGE35 (ricerca agente) |
| wcont.cpy | Linkage stringhe comuni |
| utilo65.cpy | Linkage COGO65 (stampa ordine) |
| utils01.cpy | Linkage COGS01 (calcolo prezzi/listini) |
| wcont1.cpy | Linkage area utente 2 |
| stato.cpy / stato1.cpy | Controllo stato I/O |
| winmsg.cpy | Messaggi a video |
| grave.cpy | Paragrafi errori gravi |
| open1.cpy | Apertura file |
| mmmask.cpy | Paragrafi init/exit programma |
| sendu22.cpy | Paragrafi gestione COGU22 |
| cogtabel.k01 | Accesso COGTABEL per chiave primaria |
Logica di elaborazione¶
- Inizializzazione:
move 'COGO05CS' to prog-err,open-files,rd-azi(lettura dati azienda). Apertura file gestita dasearch-file(COGTABEL/COGTESOR/COGRIGOR in I-O, gli altri in input). - Prima maschera (testata, mm-1): caricamento della maschera 24x80 e richiesta campi di testata:
- Anno ordine (validato rispetto all'anno di sistema +/- 1) e flag Impegno Merce (SI/NO).
- Intestatario e committente/padre tramite ricerca anagrafica COGS65; se esiste il cliente padre (
ana-padre) viene proposto. Vengono ereditati riferimento listino, agente, codice pagamento, flag RB dall'anagrafica. - Magazzino (lettura COGMAGAZ), data inizio ordine e data termine (COGS52).
- Dalla data inizio si ricava la divisa del documento tramite COGU10 (
GetDivisaConto). - Tipo ordine (C = chiuso/una consegna, A = aperto), codice pagamento (consulta con F8 -> WIN002), raggruppamento/RB (COGU22), causale (F8 -> WIN001; deve essere causale di uscita
euta-cb-fl-eu = 'U'), porto, a cura di (M/D). - Campi specifici Cantina: vasche, grado, ritiro, analisi acquisto, arbitro.
- Mediatore (F8 -> COGE35), con verifica che il fornitore sia codificato come agente (COGTABEL tipo 21); tipo provvigione (P/Q); note su (B/F/T) e raggruppamento fatture (0-99).
- Duplicazione (F6):
send-scr-dchiede anno/numero/progressivo di un ordine esistente (verifica su COGTESOR); se confermato,fl-duplica = "S"ea-carica-righerilegge le righe da COGRIGOR, ricalcolando i prezzi in divisa corrente via COGU10 quando la divisa differisce. - Seconda maschera (righe, mm-2): gestione tabellare fino a 100 righe (memoria interna
tael1), 14 righe per pagina, con navigazione su/giu, PgUp/PgDwn, F2 indietro, F3 registra. Per riga: - Merce per barcode (se
az-bar-code= P/T,send-scr-b), per gruppo/sotto/codice, per codice (F8 -> WIN005) o per descrizione alfabetica (WIN004). Lettura merce su COGMERCI. - Riferimento listino (il 5 richiede password su COGMERCI record
999999999,send-scr-1), sconto (COGU20), quantita' (COGU20) con controllo giacenza (ctr-giasu COGSLMAG: giacenza + ordinato - impegnato), prezzo calcolato da COGS01 (listino/cliente/data) ed editato in valuta via COGU10. - Controlli finali (a900): almeno un elemento merce significativo (M11), altrimenti blocco.
- Registrazione:
- Numero ordine assegnato da COGS25 (tipo 10).
- Scrittura testata su COGTESOR (write con gestione progressivo fino a 9); i campi specifici Cantina sono memorizzati in campi della testata riutilizzati (
tor-vasche,tor-grado,tor-vettore1/2/3,tor-agente(1),tor-fl-prv(1),tor-destina). - Scrittura righe su COGRIGOR per ogni elemento significativo; per ciascuna riga chiamata a COGU12 (tipo "I", entrata/uscita "U") per l'impegno merce a magazzino.
- Fine: messaggio "CREATO ORDINE N. ..."; ESC prosegue con nuovo ordine, F9 lancia la stampa via COGO65. Chiusura file, chiusura COGS01 (
s01-open = 'C'),z-99-exit-program,exit program.
Chiamate a sottoprogrammi¶
| Programma | Scopo |
|---|---|
| COGS65 | Ricerca e selezione anagrafica cliente/committente |
| COGS52 | Input e validazione date |
| COGU10 | Gestione/visualizzazione importi e divisa (GetDivisaConto, Cambio, Display) |
| COGU12 | Impegno merce a magazzino |
| COGU20 | Input campi numerici (sconto, quantita') |
| COGU22 | Gestione codice raggruppamento/RB |
| COGE35 | Ricerca agente/mediatore |
| COGS25 | Assegnazione numero ordine (numeratore) |
| COGS01 | Calcolo prezzo da listino |
| COGO65 | Stampa ordine (F9 a fine registrazione, COGO65.cob) |
| WIN001 | Popup scelta causale |
| WIN002 | Popup scelta codice pagamento |
| WIN004 | Popup ricerca alfabetica merce |
| WIN005 | Popup ricerca merce per codice |