Vai al contenuto

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

  1. Inizializzazione: move 'COGO05CS' to prog-err, open-files, rd-azi (lettura dati azienda). Apertura file gestita da search-file (COGTABEL/COGTESOR/COGRIGOR in I-O, gli altri in input).
  2. Prima maschera (testata, mm-1): caricamento della maschera 24x80 e richiesta campi di testata:
  3. Anno ordine (validato rispetto all'anno di sistema +/- 1) e flag Impegno Merce (SI/NO).
  4. 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.
  5. Magazzino (lettura COGMAGAZ), data inizio ordine e data termine (COGS52).
  6. Dalla data inizio si ricava la divisa del documento tramite COGU10 (GetDivisaConto).
  7. 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).
  8. Campi specifici Cantina: vasche, grado, ritiro, analisi acquisto, arbitro.
  9. 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).
  10. Duplicazione (F6): send-scr-d chiede anno/numero/progressivo di un ordine esistente (verifica su COGTESOR); se confermato, fl-duplica = "S" e a-carica-righe rilegge le righe da COGRIGOR, ricalcolando i prezzi in divisa corrente via COGU10 quando la divisa differisce.
  11. 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:
  12. 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.
  13. Riferimento listino (il 5 richiede password su COGMERCI record 999999999, send-scr-1), sconto (COGU20), quantita' (COGU20) con controllo giacenza (ctr-gia su COGSLMAG: giacenza + ordinato - impegnato), prezzo calcolato da COGS01 (listino/cliente/data) ed editato in valuta via COGU10.
  14. Controlli finali (a900): almeno un elemento merce significativo (M11), altrimenti blocco.
  15. Registrazione:
  16. Numero ordine assegnato da COGS25 (tipo 10).
  17. 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).
  18. 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.
  19. 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

Vedi anche