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.
- 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 (tabellatab-id). - Accept parametri:
a-tm-for— codice fornitore di cui importare il listino (aiuto anagrafico via COGS65W);a-tm-agg-listini— flag aggiornamento prezzi di vendita;a-tm-seq-name— nome del file da importare (dialog di sistemaC$OPENSAVEBOX);a-tm-formato— formato del tracciato (F/;/,/TAB);a-tm-collego-aut,a-tm-imposta-pref— opzioni collegamento automatico/preferenziale.- 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 tagtab-campi). - Lettura primo record: viene mostrato in
tm-esempiocome riga di esempio e si verifica il formato Metel (a-controlla-metel). - 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. - Gestione griglia (
a-grid-par/a-accept-grid-par): l'operatore definisce posizioni/ordine dei campi; con F7 sutm-esempiopuo' selezionare la posizione direttamente dalla riga di esempio; sotto-F4 richiama l'amministrazione griglia (GRIDADMN). - Conferma ed elaborazione (
a-richiesta-conferma/a-acc-conf): con F3 e conferma custom si salva il tracciato (a3-aggiorna-tracciatosu COGTABEL, solo per formati non Metel/non Excel) e si esegue l'aggiornamento vero e proprio scegliendo il paragrafo in base al formato: g-aggiorna(Metel),h-aggiorna(Excel o delimitato),f-aggiorna(testo a larghezza fissa).- 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-datodistingue tra estrazione a posizione fissa (a21-estrai-dato-posizione-fissa, confunction numvale scalatura decimale per i campi numerici) ed estrazione delimitata (a21-estrai-dato-delimitato).f2-move-fieldmappa il singolo campo generico sul corrispondente campo del record (COGGENMF/COGGMFAG) in base al tipo campo (costantik-ti-*).- Nel ramo Excel/delimitato,
h1-fill-recpopola 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 sonoCM,DMePL. - Nel formato Metel vengono elaborati solo i record con divisa
"ITL"o"EUR"; la divisa viene tradotta ingmf-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 tofra 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 logicax1-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.