COGL12 - Passaggio a Distinta Base¶
Intestazione¶
| Campo | Valore |
|---|---|
| Programma | COGL12 |
| Titolo | Passaggio a distinta base |
| Autore | Stefano Ruozzi - Eurosystem |
| Posizione menu | Magazzino > Produzione > Distinte-Preventivo > Passaggio a Distinta Base |
Scopo e logica generale¶
COGL12 trasforma una pre-distinta temporanea in distinta base definitiva. Per ogni componente temporaneo crea una merce definitiva in COGMERCI (tramite COGS31) e il relativo listino fornitore (tramite COGS32), poi copia la struttura da COGDBPRE a COGDBASE. Al termine cancella la pre-distinta, le merci temporanee e le note provvisorie.
Utilizza un file di transito (COGTRANS) per tenere traccia dei codici merce gia' convertiti, in modo da poter aggiornare il flag dbp-fl-mt ('M' = gia' migrato) sulle pre-distinte che referenziano gli stessi componenti.
Flusso principale¶
- Inizializzazione (
inizio): controllo abilitazione, apertura file, creazione file transito COGTRANS, lettura azienda, lettura divisa conto - Selezione merce padre (
a7): accept codice merce tramite COGS22, ricerca merci temporanee via WIN046 (F4) - Validazione (
a8): verifica mtp-padre = 'P', assenza in COGMERCI - Gestione note (
ck-note): chiede se copiare le note sulla distinta base definitiva (S/N) tramite COGS21 - Conferma (
a11): richiesta conferma (F3); se confermato: cont-padre: verifica assenza pre-distinte figlie da trasformarex1-e000: creazione merci definitive (COGS31) + listini (COGS32), salvataggio codici su COGTRANSx1-f000: creazione distinta base COGDBASE da COGDBPREx1-note(se richiesto): copia note da COGDBAGG tipo 'P' a tipo 'N'x1-g000: cancellazione pre-distinta, merci temporanee e note provvisoriex1-h000: aggiornamento flagdbp-fl-mt = 'M'su pre-distinte che referenziano i codici migrati- Chiusura (
z-chiudi): close file, delete file COGTRANS, exit program
File e tabelle acceduti¶
| File logico | Record | Modalita' | Uso |
|---|---|---|---|
| COGMERCI | mer-rec | I-O | Anagrafica merci - creazione merci definitive, set mer-padre = 'P' e mer-tipo-distinta = 'P' |
| COGMERTP | mtp-rec | I-O | Merci temporanee - lettura dati e cancellazione |
| COGDBPRE | dbp-rec | I-O | Pre-distinta base - lettura struttura e cancellazione |
| COGDBASE | dba-rec | I-O | Distinta base - creazione struttura definitiva |
| COGDBAGG | dbg-rec | I-O | Note distinta - copia da tipo 'P' a 'N', cancellazione tipo 'P' |
| COGTRANS | trs-rec | I-O | Transito - traccia codici merce gia' convertiti |
| FEURTAB | feurtab | Input | Tabella generale Eurosystem |
Struttura COGTRANS¶
trs-chia1:
trs-merce:
trs-gru pic x(02) Gruppo merce
trs-sot pic x(02) Sottogruppo merce
trs-cod pic 9(05) Codice merce
Copybook inclusi¶
Strutture dati¶
| Copybook | Contenuto |
|---|---|
cogfiles.cpy / cogmerci.cpy / cogmertp.cpy / cogdbpre.cpy / cogdbase.cpy / cogdbagg.cpy |
Strutture record file |
cogazien.cpy |
Dati azienda |
k-u10.cpy |
Costanti COGU10 |
FD¶
| Copybook | Contenuto |
|---|---|
feurtab.fd / cogmerci.fd / cogmertp.fd / cogdbpre.fd / cogdbase.fd / cogdbagg.fd |
SELECT file |
Working e utility¶
| Copybook | Contenuto |
|---|---|
wstato.cpy / wopenf.cpy / wgrave.cpy / wnscr.cpy |
Working storage comuni |
utils21.cpy / utils22.cpy |
Interfaccia COGS21 (S/N) e COGS22 (selezione merce) |
utils31.cpy / utils32.cpy |
Interfaccia COGS31 (creazione merce) e COGS32 (creazione listino) |
utilu10.cpy |
Interfaccia COGU10 (conversione divisa) |
GetDCont.cpy |
Lettura divisa conto |
stato.cpy / stato1.cpy / winmsg.cpy / open1.cpy / mmmask.cpy / grave.cpy |
Standard di fine procedure |
Programmi chiamati (CALL)¶
| Programma | Scopo |
|---|---|
| COGS22 | Selezione codice merce (gruppo/sottogruppo/codice) |
| COGS21 | Accept campo singolo S/N (copia note) |
| COGS31 | Creazione merce in anagrafica (definisce codice definitivo, descrizione, prezzo) |
| COGS32 | Creazione listino fornitore per la nuova merce |
| COGU10 | Conversione importi tra divise |
| WIN046.COB | Ricerca merci temporanee per codice (F4) |
Logica di business¶
Creazione merci definitive (x1-e000)¶
Per ogni componente della pre-distinta (dbp-fl-mt <> 'M'), chiama COGS31 per creare la merce in COGMERCI. I dati passati a COGS31 includono: codice merce temporanea, descrizione, prezzo (con conversione divisa). Il codice definitivo restituito da COGS31 viene salvato in w-merce e scritto su COGTRANS.
Per il padre (fl-padre = 'Y'), oltre alla creazione della merce imposta mer-padre = 'P' e mer-tipo-distinta = 'P' con REWRITE.
Dopo la creazione merce, chiama COGS32 per creare il listino d'acquisto.
Creazione distinta base (x1-f000)¶
Scansiona COGDBPRE e crea record in COGDBASE con i nuovi codici padre (w-gru/w-sot/w-cod) e i codici figlio originali. I progressivi vengono rinumerati sequenzialmente.
Copia note (x1-note)¶
Scansiona COGDBAGG per dbg-tip = 'P' e dbg-db = tm-macro. Per ogni record, crea un nuovo record con dbg-tip = 'N' e dbg-db = nuovo codice padre.
Cancellazione (x1-g000)¶
Cancella note provvisorie (x1-del-note), poi scansiona COGDBPRE cancellando ogni record. Per ogni componente con dbp-fl-mt <> 'M', cancella anche il record COGMERTP corrispondente. Infine cancella il padre da COGMERTP.
Aggiornamento flag migrazione (x1-h000)¶
Scansiona COGTRANS per ottenere tutti i codici migrati. Per ognuno, cerca in COGDBPRE tutti i record con dbp-merce-f = codice migrato e imposta dbp-fl-mt = 'M' (migrato), in modo che future trasformazioni di pre-distinte che usano gli stessi componenti non tentino di creare merci duplicate.
Variabili di stato principali¶
| Variabile | Descrizione |
|---|---|
tab-maschera / tm-macro |
Codice merce padre selezionato |
tm-fl-note |
Flag copia note: 'S' / 'N' |
w-merce (w-gru / w-sot / w-cod) |
Codice merce definitivo restituito da COGS31 |
fl-padre |
'N' = componente figlio, 'Y' = padre |
w-currency-conto |
Divisa conto corrente |