Vai al contenuto

COGD59 -- Importazione riordino (Modula)

Sorgente: cbl/cogd59.cbl | Tipo: Programma maschera (mmmask) | Program-ID: COGD59

Menu: Magazzino > Modula


Scopo

Importa un file di esportazione dal magazzino automatico Modula (formato delimitato da "|", estensione .EXP), aggiorna le scorte minime sulle merci e genera automaticamente le proposte di riordino per gli articoli sotto scorta.

File e tabelle

File/Tabella Tipo Descrizione
FEURTAB Input File tabelle di sistema (path file)
FILSEQ Input File sequenziale di import Modula (formato testo delimitato da "|")
COGMERCI I-O Anagrafica merci; aggiornati: mer-modula ("S"), mer-sco-min
COGRIORD I-O Tabella riordini; inserimento proposte
COGSLMAG Input Saldi di magazzino (msal-qta, msal-qta-ordinata, msal-qta-impegnata)
COGCNDCF Input Condizioni commerciali; chiave secondaria 2, tipo "FP" = fornitore preferenziale

Copybook principali

  • cogd59.select, cogd59.fd, cogd59.wrk, cogd59.decla, cogd59.prc, cogd59-01.scr -- File screen-generated
  • cogfiles.cpy -- Record FD di FEURTAB
  • k-u10.cpy -- Costanti unita' di misura
  • l-copiaf.cpy, u-copiaf.cpy -- COPIAF (copia file client/server)
  • utilncnf.cpy -- Utility configurazione (RNEWCONF)
  • utilw92.cpy, sendw92.cpy -- Utility varie
  • utilestrxls.cpy -- Utility estrazione XLS (ESTRXLS)
  • opensave.def -- Definizioni C$OPENSAVEBOX
  • cogcndcf.k02 -- Chiave secondaria 2 di COGCNDCF (condizioni commerciali)

Struttura del programma

main section
  apri              -- Init, open file, carica configurazioni
  a4                -- Init maschera, precompila percorso
  a-tm-filein       -- Accept nome file (F1=config, F5=browse, F3=conferma)
  a-richiesta-conferma -- Validazione e avvio elaborazione
  fine / z-chiudi   -- Chiusura file e uscita

Elaborazione:
  tratta-file       -- Open COGRIORD, loop lettura FILSEQ
  tratta-file-loop  -- Parsing riga: unstring campi delimitati da "|"
  tratta-file-fine  -- Close COGRIORD
  ins-riordino      -- Calcolo quantita' da riordinare, inserimento in COGRIORD
  cerca-for-pref    -- Ricerca fornitore preferenziale in COGCNDCF (tipo "FP", chiave secondaria 2)

Configurazioni:
  x99-confi         -- Legge RNEWCONF: gruppo SISTMGA001, chiave "euta-c077-path-scambio-a" -> w-path
  x99-load-config   -- Legge RNEWCONF: gruppo "cogesys", chiave "delimitatore-colonne-excel" -> tm-cfg-delimiter

Validazione:
  x-controlla-tm-filein     -- Verifica estensione .EXP, esistenza file (via COPIAF fileinfo)
  x-controlla-tm-filein-bis -- Copia file su server (thin client), eventuale conversione XLS
  x-imposta-conferma        -- Validazione complessiva prima di elaborare

Logica di elaborazione

  1. Configurazione: carica il percorso di scambio da RNEWCONF (SISTMGA001 / euta-c077-path-scambio-a) e il delimitatore colonne (default ";").

  2. Selezione file: l'utente puo' modificare il percorso, usare F5 per browse, F1 per modificare la configurazione. Il file deve avere estensione .EXP.

  3. Validazione: verifica esistenza file tramite COPIAF con operazione "fileinfo". In thin client, copia il file dal client al server. Se il file e' in formato XLS, lo converte tramite ESTRXLS.

  4. Elaborazione (tratta-file):

  5. Apre COGRIORD in output (svuota) poi in I-O con mass-update.
  6. Per ogni riga del file: parsing con UNSTRING ... DELIMITED BY "|" nei campi: articolo, descrizione, 2 campi inutilizzati, giacenza, 2 campi inutilizzati, scorta minima, campo residuo.
  7. Decodifica articolo: primi 2 char = gruppo (dt-gru), char 3-4 = sottogruppo (dt-sot), char 5-9 = codice numerico. Se "00" viene convertito a spaces.
  8. Conversione decimali: INSPECT ... REPLACING ALL "." BY "," per compatibilita' NUMVAL.
  9. Legge merce da COGMERCI: se non trovata, segnala e salta.
  10. Aggiorna merce: mer-modula = "S", mer-sco-min = dt-scorta-min, rewrite.

  11. Generazione riordino (ins-riordino):

  12. Se dt-giacenza >= dt-scorta-min: nessun riordino necessario.
  13. Altrimenti: legge saldi magazzino (az-mag-modula) da COGSLMAG.
  14. Calcolo quantita':
    • Se mer-sco-max > 0: rio-qta = mer-sco-max - dt-giacenza - msal-qta-ordinata + msal-qta-impegnata
    • Altrimenti: rio-qta = mer-sco-min - dt-giacenza - msal-qta-ordinata + msal-qta-impegnata
  15. Se rio-qta <= 0: nessun riordino.
  16. Cerca fornitore preferenziale in COGCNDCF (tipo "FP", chiave = merce). Se trovato: rio-for = cnd-cod, rio-ok = "*".
  17. Write su COGRIORD.

  18. Post-elaborazione: chiede se cancellare il file di importazione (DELETE FILE filseq).

  19. CALL chain: RNEWCONF (configurazioni), COPIAF (copia file), ESTRXLS (conversione XLS), COGS52/COGS68/COGS93 (utility screen).