Panoramica
Programma di inserimento bolle di vendita (prefatture) per i contratti mediatori. Gestisce la compilazione manuale o assistita (da ordini o buoni di prelievo) di un documento di uscita merci, con calcolo automatico di prezzi, sconti, IVA e totali. Il documento prodotto viene scritto su COGTESBO (testata) e COGRIGBP (righe).
Tipo: Programma gestionale a maschera DOS-style con due schermate principali (mm-1 testata, mm-2 righe), 23 file aperti.
| Menu |
Percorso |
| Vendite |
Mediatori > Inserimento Prefattura |
Struttura del programma
File e tabelle utilizzati
| File/Tabella |
Tipo |
Descrizione |
| FEURTAB (cogfiles) |
Input |
Parametri generali / percorsi file |
| COGTABEL |
Input |
Tabella generica (causali, aliquote IVA, agenti, vettori, divise) |
| COGMERCI |
Input |
Anagrafica merci |
| COGGEANA |
Input |
Anagrafica generale (clienti/fornitori) |
| COGMAGA2 |
Input |
Anagrafica magazzini |
| COGTESBO |
I/O |
Testate bolle vendita |
| COGMOMAG |
I/O |
Movimenti magazzino |
| COGSLMAG |
I/O |
Saldi magazzino |
| COGTESOR |
Input |
Testate ordini |
| COGRIGOR |
Input |
Righe ordini |
| COGPREOR |
Input |
Prezzi aggiuntivi ordini |
| COGTESBP |
Input |
Testate buoni di prelievo |
| COGRIGBP |
I/O |
Righe bolle / prefatture (scrittura documento) |
| COGCAUZI |
Input |
Causali aziendali |
| COGDESAG |
Input |
Descrizioni aggiuntive anagrafiche |
| COGCONOR |
Input |
Consegne su ordine (sorgente righe) |
| COGDESOR |
Input |
Descrizioni aggiuntive righe ordine |
| COGTESLS |
Input |
Listini |
| COGGENER |
Input |
Relazioni generiche |
| COGCNDCF |
Input |
Condizioni commerciali |
| COGMERLT |
Input |
Merci per lotto |
| COGMLTAG |
Input |
Lotti magazzino |
| COGMOVLT |
I/O |
Movimenti lotti |
| COGTRASP |
Input |
Trasporti |
| TRAN-S16 |
Temp. |
File transito per COGS16 (esplosione distinta base) |
| TRAN-S47 |
Temp. |
File transito per descrizioni aggiuntive righe |
| TRAN-M96 |
Temp. |
File transito per COGM96 (distinta temporanea) |
| COGTRANS |
Temp. |
File transito righe da ordine (chiave ordine+merce+consegna) |
| COGTRANS2 |
Temp. |
File transito righe bolla per prezzo (chiave bolla+merce) |
| INPFIL |
Input |
File EAN barcode (import quantita' da lettore) |
Copybook principali (working-storage)
| Copybook |
Descrizione |
| wstato.cpy |
Stato I/O e flag verbo |
| wgrave.cpy |
Gestione errori gravi |
| wopenf.cpy |
Apertura file generica |
| wnscr.cpy |
Costanti video |
| utilf23.cpy |
Utility COGF23 |
| utilm12.cpy |
Utility COGM12 |
| utils21.cpy |
Utility COGS21 (selezione opzione S/N) |
| utils23.cpy |
Utility COGS23 |
| utils25.cpy |
Utility COGS25 |
| utils47.cpy |
Utility COGS47 (descrizioni aggiuntive) |
| utils52.cpy |
Utility COGS52 (input data) |
| utils58.cpy |
Utility COGS58 (descrizione AVA merci) |
| utils60.cpy |
Utility COGS60 |
| utils65.cpy |
Utility COGS65 (ricerca anagrafica) |
| utils68.cpy |
Utility COGS68 (ricerca merce) |
| utils86.cpy |
Utility COGS86 (controllo fido) |
| utilm56.cpy |
Utility COGM56 |
| utilm96.cpy |
Utility COGM96 (distinta temporanea) |
| utilu01.cpy |
Utility COGU01 (lettera d'intento) |
| utilu02.cpy |
Utility COGU02 (dati anagrafica IVA) |
| utilu03.cpy |
Utility COGU03 |
| utilu09.cpy |
Utility COGU09 |
| utilu10.cpy |
Utility COGU10 (cambio divisa) |
| utilu12.cpy |
Utility COGU12 (aggiornamento giacenza) |
| utilu20.cpy |
Utility COGU20 |
| utilu22.cpy |
Utility COGU22 |
| utilv64l.cpy |
Utility COGV64 |
| utilw01.cpy |
Utility W01 (lookup causale) |
| utilw02.cpy |
Utility W02 |
| utilw03.cpy |
Utility W03 |
| utilw06.cpy |
Utility W06 |
| utilw36.cpy |
Utility W36 |
| utilw80.cpy |
Utility W80 |
| utilw92.cpy |
Utility W92 (destinazione spedizione) |
| utilw96.cpy |
Utility W96 |
| utilw97.cpy |
Utility W97 (selezione lotto) |
| cogazien.cpy |
Dati azienda corrente |
| utilncnf.cpy |
Utility NCNF (configurazione) |
| k-u10.cpy, wrk-u10.cpy |
Costanti e working per COGU10 |
Copybook linkage section
| Copybook |
Descrizione |
| wcont.cpy |
Area comunicazione con chiamante (stringhe) |
| utilf45.cpy |
Utility F45 |
| utill14.cpy |
Utility L14 |
| utils01.cpy |
Utility COGS01 (gestione sessione) |
| utils08.cpy |
Utility COGS08 |
| utils16.cpy |
Utility COGS16 (esplosione distinta) |
| utilv52.cpy |
Utility COGV52 |
| utilv71.cpy |
Utility COGV71 |
| utilw35.cpy |
Utility W35 (lookup divisa) |
| wcont1.cpy |
Area comunicazione estesa |
Chiamate a sottoprogrammi (CALL)
| Programma |
Paragrafo/contesto |
Scopo |
| COGS52 |
a10, a6-read-ord (data), send-s52 |
Input e validazione date |
| COGS21 |
a6, a8 |
Selezione opzione S/N |
| COGS65 |
a16 |
Ricerca e selezione anagrafica destinatario |
| COGS86 |
check-fido |
Controllo fido cliente |
| COGU02 |
a16, nonno-40 |
Determinazione tipo IVA cliente (esportatore, ecc.) |
| COGU10 |
vari |
Conversione valuta / cambio divisa |
| COGM96 |
a61-cogm96-, b3-cogm96- |
Gestione distinta base temporanea |
| COGS16 |
c-aggiorna (aggiornamento giacenze) |
Esplosione distinta base |
| COGU12 |
c-aggiorna (aggiornamento giacenze) |
Aggiornamento giacenza/impegno magazzino |
| COGU09 |
vari |
Utility generica |
| COGS01 |
z-chiudi |
Gestione sessione utente |
| COGS58 |
z-chiudi, x7-des-ava |
Descrizione AVA merci |
| COGA09 |
k-trasporti-id |
Calcolo importo trasporti (az-trasporti = 'S') |
| COGF22 |
integrazione distribuzione |
Precompilazione da funzione distribuzione (az-personal = "QS") |
Logica di elaborazione
Flusso principale
- m-00: inizializzazione, costruzione nomi file temporanei, lettura configurazione NCNF.
- a0: apertura file, lettura dati azienda (rd-azi), lettura configurazione.
- a1: caricamento maschera testata (mm-1, 8 righe).
- a4: inizializzazione strutture, valorizzazione defaults (magazzino, tipo bolla, data odierna).
- a5 / a5-m96: apertura file transito (TRAN-S47, TRAN-M96) con gestione lock.
- a6: eventuale precompilazione da ordini (risposta S -> invio S14 per selezione ordini).
- a8: eventuale precompilazione da buoni di prelievo (risposta S -> invio S61).
- a108 / a10: input data documento, determinazione divisa di conto (COGU10).
- a15: input causale con verifica tipo uscita e flag fatturazione.
- a16: input destinatario (COGS65), verifica fido (COGS86), determinazione tipo IVA (COGU02), struttura padre/nonno.
- a78: input divisa documento (con lookup W35).
- a95: input codice raggruppamento per fattura.
- b-accept: loop di accettazione righe (merce, quantita', prezzo, sconti).
- c-aggiorna: scrittura documento (testata COGTESBO, righe COGRIGBP), aggiornamento giacenze e impegni magazzino.
- fine / z-chiudi: pulizia file temporanei, cancel programmi caricati, exit.
Precompilazione da ordine (paragrafi a-ordini / a1-righe / a2-consegne)
- Legge le righe ordine (COGRIGOR) per ciascun ordine selezionato e scrive i record nel file temporaneo COGTRANS (chiave: testata-ordine + merce + rig-pro + consegna).
- Se l'ordine ha consegne associate (tm-to-ind > 0), legge le consegne su COGCONOR e propone solo la quantita' residua (cor-qta - cor-qtacons).
- Poi
fill-tabella / a6-car-tab legge COGTRANS e popola tab-righe con le righe trovate.
Paragrafi chiave
| Paragrafo |
Descrizione |
| a6-read-ord |
Legge la testata del primo ordine selezionato e valorizza i defaults della testata bolla (destinatario, causale, porto, vettori, ecc.) |
| a8-bdp |
Legge la testata del primo buono di prelievo e valorizza i defaults |
| nonno-30 / nonno-40 |
Risale la gerarchia cliente (figlio -> padre -> nonno) per la determinazione del soggetto fatturato e del fido |
| b-accept |
Loop principale di accettazione righe; gestisce tutte le funzionalita' (omaggio, distinta base, lotti, descrizioni aggiuntive, chiusura consegna) |
| b21-applica-sconti |
Applica gli sconti di listino o da ordine alla riga |
| c-aggiorna |
Scrittura definitiva del documento e aggiornamento magazzino |
| a4-fill-resto |
Popola i campi non derivati dall'ordine (codice IVA, aliquota, colli, imballi) |
| a5-dor |
Copia le descrizioni aggiuntive dell'ordine (COGDESOR) nel file transito TRAN-S47 |
| a3-src-pre |
Cerca prezzi aggiuntivi da COGPREOR per la riga ordine corrente |
Struttura tab-maschera (testata)
| Campo |
Tipo |
Descrizione |
| tm-magazzino |
x(01) |
Magazzino documento |
| tm-tipobolla |
x(01) |
Tipo bolla (I=immediata, D=differita) |
| tm-triangolare |
x(01) |
Flag triangolare (T=si') |
| tm-dataop |
9(08) |
Data operazione |
| tm-destina |
9(05) |
Codice destinatario |
| tm-causale |
9(02) |
Codice causale |
| tm-pagamento |
9(02) |
Codice pagamento |
| tm-raggruppa |
9(02) |
Raggruppamento per fattura |
| tm-vet1/2/3 |
x(29) |
Vettori |
| tm-agente |
9(05) |
Agente |
| tm-committente |
9(05) |
Committente (padre anagrafico) |
| tm-nonno |
9(05) |
Nonno (padre del committente) |
| tm-divisa |
x(02) |
Codice divisa documento |
| tm-fattura |
x(01) |
Flag fatturazione dalla causale |
| tm-commessa |
|
Riferimento commessa (tsc + sottoc.) |
Struttura tab-righe (array 100 elementi)
| Campo |
Tipo |
Descrizione |
| tamerce |
x(09) |
Codice merce (gru+sot+cod) |
| tadesc |
x(43) |
Descrizione merce |
| taum |
x(02) |
Unita' di misura |
| taqta |
9(07)v999 |
Quantita' |
| taprezzo |
9(12)v999999 |
Prezzo unitario |
| taprensc |
9(12)v999999 |
Prezzo netto sconti |
| tasc1/sc2 |
s9(02)v99 |
Sconti |
| taimpo |
s9(12)v999999 |
Importo riga |
| taiva / taali |
x/9 |
Codice e aliquota IVA |
| tarigcons |
|
Riferimento consegna (mag/ann/tip/num/pro) |
| tariford |
|
Riferimento ordine (ann/num/pro) |
| taclose |
x(01) |
Stato chiusura consegna: C=chiusa, R=riapre, spazio=chiude cons. |
| taomaggio |
x(01) |
Flag omaggio (O=omaggio) |
| talotto |
9(06) |
Numero lotto |
Configurazione (tm-cfg, letta da NCNF)
| Campo |
Valori |
Significato |
| tm-cfg-acc-sco |
N/L |
Visualizzazione sconti: N=non mostrare, L=mostrare |
| tm-cfg-tip-tra |
M/D/V |
Tipo trasporto default |
| tm-cfg-tip-prv |
P/Q |
Tipo provvigione |
| tm-cfg-qta-dec |
S/N |
Quantita' con decimali |
| tm-cfg-vis-um |
S/N |
Visualizza unita' di misura |
| tm-cfg-sca-ord |
S/O/N/M |
Modalita' precompilazione ordini |
| tm-cfg-sca-bdp |
S/O/N |
Modalita' precompilazione buoni di prelievo |
| tm-cfg-rag-bdp |
x(02) |
Raggruppamento merci da buoni |
| tm-cfg-distrib |
S/N |
Modalita' distribuzione (az-personal = "QS") |
| tm-cfg-mod |
x(01) |
Modalita' specifica per personalizzazione |
File temporanei
| File |
Scopo |
| TRAN-S47 |
Descrizioni aggiuntive righe (chiave: bolla-riga + progressivo) |
| TRAN-S16 |
Transito per COGS16 (esplosione distinta base) |
| TRAN-M96 |
Transito per COGM96 (distinta temporanea); condiviso tra sessioni; viene bloccato all'apertura per evitare conflitti |
| COGTRANS |
Righe da ordine per precompilazione (chiave 1: ordine+merce+consegna; chiave 2: merce+bolla) |
| COGTRANS2 |
Dati prezzo riga per bolla (chiave 1: bolla+merce) |
Note tecniche
- Il programma supporta piu' personalizzazioni aziendali (az-personal): "GU" (Guidetti, che da' il nome al sorgente), "QS" (Quality Seed, con integrazione COGF22 per distribuzione), "EC" (Eurocold), "BN", "BE", "FX".
- La gestione del fido cliente risale la gerarchia figlio-padre-nonno: il controllo viene effettuato sul soggetto al vertice (nonno se esiste, altrimenti padre, altrimenti destinatario).
- Il blocco su TRAN-M96 (open output + verifica stato = '00') serve a impedire che due operatori usino contemporaneamente la funzione su COGM96.
- I
PERFORM ... THRU (es. a-ordini thru ex-a, b-accept thru ex-b, c-aggiorna thru ex-c) sono pattern legacy; i paragrafi ex-* sono marker di uscita del blocco.
- Massimo 100 righe per documento (k-max-ele-bdp = 100, t-size = 100).
- La gestione della divisa di conto usa COGU10 con operazione "GetDivisaConto" alla data documento; i prezzi da ordini in divisa diversa vengono convertiti con "Cambio".
- Il programma puo' essere richiamato da COGF22 (distribuzione ordini) passando il file transito COGTRANS gia' precompilato nella linkage section (util-f22).