Vai al contenuto

COGM02 — Importazione listino generale fornitori da supporto/file esterno

Intestazione

Campo Valore
Sorgente cbl/cogm02.cbl
Program-ID cogm02
Tipo Programma interattivo GUI (maschera con griglia dei campi)
Posizione menu Magazzino > Archivi & Tabelle > Merci Fornitori > Importazione listino generale
Magazzino > Archivi & Tabelle > Listini Fornitori > Importazione da Fonti Esterne
Magazzino > Archivi & Tabelle > Supp. Magnetici > Ins. Listini Gen.Fornitori

Scopo

COGM02 importa il listino generale di un fornitore da un file esterno (supporto magnetico, file di testo o file Excel) e lo carica nell'archivio del listino generale fornitori COGGENMF, con i relativi dati aggiuntivi in COGGMFAG e la testata di listino in COGTESGF.

Il programma e' flessibile sul formato del file di input e gestisce tre modalita' di tracciato:

  • Larghezza fissa (tm-formato = "F"): l'operatore indica in griglia la posizione di inizio/fine e la dimensione di ogni campo, oppure la seleziona direttamente dalla riga di esempio (tasto F7).
  • Delimitato (delimitatore ;, , o TAB): l'operatore indica in griglia solo l'ordine dei campi (colonna "Inizio").
  • Metel (formato standardizzato di settore): riconosciuto automaticamente quando il primo record contiene l'identificativo "LISTINO METEL" con versione "020" o "021".

I file Excel (.xls/.xlsx) vengono prima convertiti in testo delimitato (via ESTRXLS); in tal caso ci si aspetta che il primo record contenga i tag dei nomi campo (es. CM, DM, PL, ...), con cui il programma costruisce automaticamente la tabella dei campi.

Al termine, se richiesto, il programma puo':

  • aggiornare in cascata le merci collegate (COGS31, se AGGIORNA-MERCI-IN-IMPORTAZIONE <> "N");
  • ricalcolare i listini di vendita delle merci collegate al fornitore (COGM04, se l'opzione "Aggiornamento prezzi" tm-agg-listini = "S");
  • collegare automaticamente il codice merce fornitore importato a un articolo esistente e impostarlo come fornitore preferenziale (opzioni "Collego automaticamente?" / "Imposta preferenziale?", introdotte l'08/03/2017).

Struttura e flusso

Il programma e' a interfaccia GUI con navigazione a campi (go to tra paragrafi a-...) e una griglia editabile (GRID-PAR) che descrive il tracciato campo per campo.

  1. Inizializzazione (main/gooo): controllo abilitazione, apertura file, lettura azienda, lettura configurazione RNEWCONF (x99-configurazione), determinazione divisa conto (COGU10), caricamento bitmap/pulsanti custom (F7 "Segna posizione campo"), preparazione della griglia dei 23 campi previsti (tabella tab-id).
  2. Accept parametri:
  3. a-tm-for — codice fornitore di cui importare il listino (aiuto anagrafico via COGS65W);
  4. a-tm-agg-listini — flag aggiornamento prezzi di vendita;
  5. a-tm-seq-name — nome del file da importare (dialog di sistema C$OPENSAVEBOX);
  6. a-tm-formato — formato del tracciato (F/;/,/TAB);
  7. a-tm-collego-aut, a-tm-imposta-pref — opzioni collegamento automatico/preferenziale.
  8. Copia e preparazione del file: il file selezionato viene copiato in ext-tmp-dir (C$COPY, gestione thin-client con prefisso @[DISPLAY]:); se e' Excel viene convertito in testo (ESTRXLS + a1-converti-excel, che legge il primo record e costruisce la tabella dei tag tab-campi).
  9. Lettura primo record: viene mostrato in tm-esempio come riga di esempio e si verifica il formato Metel (a-controlla-metel).
  10. Configurazione tracciato (a-carica-configurazione-fornitore): per ogni campo viene letto da COGTABEL (tipo 19) il tracciato precedentemente salvato per quel fornitore e caricato in griglia.
  11. Gestione griglia (a-grid-par / a-accept-grid-par): l'operatore definisce posizioni/ordine dei campi; con F7 su tm-esempio puo' selezionare la posizione direttamente dalla riga di esempio; sotto-F4 richiama l'amministrazione griglia (GRIDADMN).
  12. Conferma ed elaborazione (a-richiesta-conferma / a-acc-conf): con F3 e conferma custom si salva il tracciato (a3-aggiorna-tracciato su COGTABEL, solo per formati non Metel/non Excel) e si esegue l'aggiornamento vero e proprio scegliendo il paragrafo in base al formato:
  13. g-aggiorna (Metel),
  14. h-aggiorna (Excel o delimitato),
  15. f-aggiorna (testo a larghezza fissa).
  16. Post-elaborazione: se tm-agg-listini = "S" e almeno un CMF e' stato aggiornato, chiamata a COGM04 per ricalcolare i listini; messaggio "Elaborazione terminata" e uscita (fine/z-chiudi, con cancellazione dei sottoprogrammi COGS40/41/42/31).

Estrazione dei dati

  • a21-estrai-dato distingue tra estrazione a posizione fissa (a21-estrai-dato-posizione-fissa, con function numval e scalatura decimale per i campi numerici) ed estrazione delimitata (a21-estrai-dato-delimitato).
  • f2-move-field mappa il singolo campo generico sul corrispondente campo del record (COGGENMF/COGGMFAG) in base al tipo campo (costanti k-ti-*).
  • Nel ramo Excel/delimitato, h1-fill-rec popola il record leggendo i tag (CM, DM, PL, PN, SC, GR, MP, CE, QC, CT, FA, MA, PS, F1-F5, f1-f5); i prezzi vengono convertiti da formato editato a dato tramite COGU20 (EditToDato).

Pulizia listino (f1-del-old)

Se la configurazione PULIZIA-LISTINO vale "S", dopo il caricamento il programma riscorre COGGENMF del fornitore e cancella i record non aggiornati in questa importazione (gmf-fl-new <> "S"), con gestione differenziata dei collegamenti merce/fornitore (COGMERFO) e dello stato merce (COGMERCI, mer-val) in base alle chiavi CANCELLAZIONE-COLLEGATI / CANCELLAZIONE-AGGIORNO-STATO.

Collegamento automatico (x1-aggiorna-cogmerfo, dall'08/03/2017)

Se tm-collego-aut = "S", per ogni CMF importato cerca su COGMERFO (chiave 3, per codice merce fornitore) un articolo gia' collegato ad altri fornitori; se non trovato lo cerca come codice merce avanzato su COGRACMC / COGRACMT (gestione CMA semplificata o completa, guidata dalle chiavi COMPONI-CM-AVANZATO, CMA-TAB-MARCHIO, CMA-TAB-CMF e dal flag azienda az-mer-ava). Se trova la merce, scrive il nuovo COGMERFO per il fornitore corrente e, se tm-imposta-pref = "S", aggiorna la condizione fornitore preferenziale su COGCNDCF (condizione FP).


File e tabelle principali

File logico Record Copybook Uso
COGGENMF gmf-rec coggenmf.cpy Listino generale fornitori (archivio di destinazione). Chiave 1: gmf-cf + gmf-cmf
COGGMFAG gma-rec coggmfag.CPY Dati aggiuntivi del listino (peso gma-peso, tabella fornitori gma-tf-*). Chiave: gma-cf + gma-cmf
COGTESGF tgf-rec cogtesgf.cpy Testata listino generale fornitore (tgf-n-lis, tgf-piv, tgf-data-dec...) — aggiornata da g1-testata nel ramo Metel
COGTABEL euta-rec cogtabel.cpy Memorizzazione del tracciato per fornitore (tipo 19, euta-codso3 = fornitore, euta-prod = tag campo, euta-md-dim-v/-dim-h/-piste = inizio/fine/decimali)
COGMERFO mfr-rec cogmerfo.cpy Legame codice merce interno / codice merce fornitore (chiavi .k03/.k04)
COGMERCI mer-rec cogmerci.cpy Anagrafica merci (aggiornamento mer-val in pulizia)
COGRACMC rcm-rec cogracmc.cpy Raccordo merce / codice avanzato (ricerca CMA, chiave rcm-tip + rcm-cod-ava)
COGRACMT rtm-rec cogracmt.cpy Raccordo merce / tabelle per codice avanzato (ricerca CMA completa marchio+CMF)
COGCNDCF cnd-rec COGCNDCF.CPY Condizioni cliente/fornitore (fornitore preferenziale FP, chiave .k02)
cogseque seq-rec dichiarato nel sorgente File sequenziale di lavoro (line sequential) su cui viene copiato/convertito il file di input
FEURTAB feurtab.fd / cogfiles.cpy Tabella file Eurosystem

Il file cogseque e' un file line sequential con nome dinamico w-seq-name (record seq-rec pic x(4096)), non gestito da Screen Designer e dichiarato manualmente nella file-control / file section.


Copybook principali

Generati da Screen Designer

Copybook Contenuto
cogm02.select SELECT dei file
cogm02.fd FD dei file
cogm02.wrk Working storage della maschera
cogm02.decla Declaratives
cogm02.prc Procedure generate (gestione maschera/griglia)
cogm02-01.scr Screen section (maschera principale)

Strutture dati e file

cogfiles.cpy, coggenmf.cpy, coggmfag.CPY, cogtesgf.cpy, cogtabel.cpy, cogmerfo.cpy (+ cogmerfo.k03/.k04), cogmerci.cpy, cogracmc.cpy, cogracmt.cpy, COGCNDCF.CPY (+ cogcndcf.k02), cogazien.cpy, wcont.cpy/wcont1.cpy.

Utility / interfacce sottoprogrammi

Copybook Interfaccia
utilncnf.cpy Struttura parametri RNEWCONF
utilm04.cpy Interfaccia COGM04 (aggiornamento listini di vendita)
utilu10.cpy Interfaccia COGU10 (divisa conto)
utilu20.cpy Interfaccia COGU20 (conversione edit ↔ dato, EditToDato)
utils40.cpy/utils41.cpy/utils42.cpy Interfaccia COGS40/COGS41/COGS42 (indici di ricerca CMF/descrizioni)
utils31.cpy Interfaccia COGS31 (aggiornamento merci collegate)
utils65.cpy Interfaccia COGS65W (aiuto anagrafica fornitore)
utilestrxls.cpy Interfaccia ESTRXLS (conversione Excel → testo)
utilgesstr.cpy Interfaccia GESSTR (trim campi)
utilgdad.cpy Interfaccia GRIDADMN (amministrazione griglia)
wgrid.cpy Working storage gestione griglia
utilxls.cpy, utilw06.cpy, opensave.def Utility XLS / invio finestra / dialog file di sistema
wgrave.cpy, wstato.cpy, wopenf.cpy, wnscr.cpy Working storage comuni
utils21.cpy, utils23.cpy, utils38.cpy, utils39.cpy Interfacce controlli maschera (COGS21/23/38/39...)
Fine procedure stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, sendw06.cpy, cogm02.prc

Sottoprogrammi chiamati (CALL)

Programma Scopo
RNEWCONF Lettura configurazione (x99-configurazione)
COGU10 Recupero divisa di conto (GetDivisaConto)
COGU20 Conversione dato editato → dato numerico (EditToDato) per prezzi/sconti/moltiplicatori
COGS65W Aiuto/ricerca anagrafica fornitore
ESTRXLS Conversione file Excel (.xls/.xlsx) in file di testo delimitato
GESSTR Trim a sinistra dei campi tag (TRIM-LEFT)
GRIDADMN Preparazione e amministrazione griglia dei campi (Prepara, sotto-F4)
COGS40 Aggiornamento indice ricerca per codice merce fornitore (ope I/C)
COGS41 Aggiornamento indice ricerca CMF (ope I/C)
COGS42 Aggiornamento indice ricerca su descrizione merce (ope I/C/V)
COGS31 Aggiornamento dati delle merci gia' collegate all'articolo importato
COGM04 Ricalcolo listino fornitore/listino di vendita delle merci collegate
C$OPENSAVEBOX Routine di sistema: dialog selezione file
C$COPY Routine di sistema: copia del file in ext-tmp-dir

Configurazione (RNEWCONF)

Letta in x99-configurazione (pacchetto "C", 9 chiavi):

# Gruppo Chiave Campo interno Uso
01 LISTGENF PULIZIA-LISTINO tm-cfg-clr Se "S", cancella i record non aggiornati (f1-del-old)
02 LISTGENF CANCELLAZIONE-COLLEGATI tm-cfg-clr-mfr Gestione cancellazione dei collegamenti COGMERFO in pulizia
03 LISTGENF CANCELLAZIONE-AGGIORNO-STATO tm-cfg-clr-stato-c Aggiornamento stato merce (mer-val = "C") in pulizia
04 COGESYS DELIMITATORE-COLONNE-EXCEL tm-cfg-delimiter Delimitatore usato per interpretare il file convertito da Excel
05 LISTGENF PREFISSO-CMA tm-cfg-prefisso Composizione del codice merce ("N " = CMF diretto, "PM" = marchio+CMF)
06 LISTGENF AGGIORNA-MERCI-IN-IMPORTAZIONE tm-cfg-aggiorna-merci Se <> "N", aggiorna le merci collegate (COGS31)
07 LISTGENF COMPONI-CM-AVANZATO tm-cfg-componi-cma Modalita' composizione codice avanzato ("MA+CMF" / altro)
08 LISTGENF CMA-TAB-MARCHIO tm-cfg-tab-cma-marchio Tipo tabella marchio per ricerca CMA completa (COGRACMT)
09 LISTGENF CMA-TAB-CMF tm-cfg-tab-cma-cmf Tipo tabella CMF per ricerca CMA completa (COGRACMT)

Le chiavi 05, 07, 08, 09 e il flag azienda az-mer-ava governano la logica di collegamento automatico dell'articolo (x1-aggiorna-cogmerfo / x1-ricerca-tab-marchio-e-cmf).


Note

  • Il tracciato dei campi importabili e' definito staticamente nella tabella tab-id (23 campi: codice merce, descrizione, prezzo lordo/netto, sconto, gruppo sconto, moltiplicatore, EAN, confezione, categoria, marchio, famiglia, peso, fino a 5 coppie fornitore/CMF). I campi obbligatori minimi per un file Excel sono CM, DM e PL.
  • Nel formato Metel vengono elaborati solo i record con divisa "ITL" o "EUR"; la divisa viene tradotta in gmf-currency ("L"/"E").
  • Il tracciato configurato per fornitore e' persistito su COGTABEL tipo 19; per i file delimitati/Excel viene ricostruito automaticamente dai tag presenti nel primo record.
  • Il programma segue la convenzione legacy con navigazione a go to fra i paragrafi di accept e uso di paragrafi ... thru ex-... (a1-converti-excel thru ex-a1, f-aggiorna thru ex-f, g-aggiorna thru ex-g, h-aggiorna thru ex-h, f1-del-old thru ex-f1, x1-aggiorna-cogmerfo thru ex-x1).
  • Le chiavi secondarie usate sono incluse manualmente a fine procedure: cogmerfo.k04, cogmerfo.k03, cogcndcf.k02.

Storico modifiche

  • 08/03/2017 — Aggiunte le opzioni "Collego automaticamente?" (tm-collego-aut) e "Imposta preferenziale?" (tm-imposta-pref) con la relativa logica x1-aggiorna-cogmerfo (collegamento automatico del CMF a un articolo esistente e impostazione fornitore preferenziale su COGCNDCF).
  • 09/12/2016 — Attivazione sistematica dell'aggiornamento di COGGMFAG per non perdere data/ora di aggiornamento visualizzate in COGM03.
  • 02/12/2019 — Nel ramo Metel il prezzo netto viene valorizzato da w-mr-pre-net (in precedenza forzato a 0).
  • 11/12/2019 / 13/02/2023 — Estensione della ricerca del codice merce avanzato (CMA): ricerca come CMA su COGRACMC e, con gestione CMA completa (az-mer-ava = "S"), ricerca mirata marchio+CMF su COGRACMT.
  • 20/07/2009 (PCASE-1501) — Per i file delimitati (;/,) le eventuali modifiche fatte in griglia non vengono piu' annullate ricaricando la configurazione fornitore quando il formato non e' a larghezza fissa.