Vai al contenuto

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

  1. Inizializzazione (inizio): controllo abilitazione, apertura file, creazione file transito COGTRANS, lettura azienda, lettura divisa conto
  2. Selezione merce padre (a7): accept codice merce tramite COGS22, ricerca merci temporanee via WIN046 (F4)
  3. Validazione (a8): verifica mtp-padre = 'P', assenza in COGMERCI
  4. Gestione note (ck-note): chiede se copiare le note sulla distinta base definitiva (S/N) tramite COGS21
  5. Conferma (a11): richiesta conferma (F3); se confermato:
  6. cont-padre: verifica assenza pre-distinte figlie da trasformare
  7. x1-e000: creazione merci definitive (COGS31) + listini (COGS32), salvataggio codici su COGTRANS
  8. x1-f000: creazione distinta base COGDBASE da COGDBPRE
  9. x1-note (se richiesto): copia note da COGDBAGG tipo 'P' a tipo 'N'
  10. x1-g000: cancellazione pre-distinta, merci temporanee e note provvisorie
  11. x1-h000: aggiornamento flag dbp-fl-mt = 'M' su pre-distinte che referenziano i codici migrati
  12. 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