Vai al contenuto

COGF13 — Copia dati merce fornitore su codici merce

Intestazione

Campo Valore
Sorgente cbl/cogf13.cbl
Program-ID cogf13
Tipo Programma interattivo con maschera GUI (Screen Designer)
Posizione menu Magazzino > Archivi & Tabelle > Varie > Copia Merci Fornitore

Scopo

COGF13 copia i dati di legame merce/fornitore da un fornitore di partenza a un fornitore di arrivo, su un intervallo di codici merce. Per ogni merce presente nell'archivio dei legami (COGMERFO) collegata al fornitore di partenza, il programma crea (o aggiorna) l'analogo legame verso il fornitore di arrivo, riportando:

  • l'aggancio codice merce ↔ codice merce fornitore,
  • il codice merce fornitore (mfr-cod-for),
  • la descrizione merce fornitore (mfr-desc),
  • la divisa (mfr-divisa).

Opzionalmente il programma:

  • sposta il fornitore preferenziale (condizione FP su COGCNDCF) dal fornitore di partenza a quello di arrivo, se richiesto (tm-fl-pref = "S");
  • copia le note legate al legame merce/fornitore (tipo "NM" di COGDESCR);
  • aggiunge un carattere iniziale al codice merce fornitore copiato, se indicato (tm-chr-mfr) e se c'e' spazio disponibile nel campo mfr-cod-for a 22 caratteri.

Al termine dell'elaborazione tiene aggiornati anche gli archivi delle stringhe di ricerca del codice merce fornitore, tramite le subroutine COGS38 e COGS39.


Struttura / Flusso

Il programma e' una maschera ad accept sequenziali (paragrafi a-tm-*) con navigazione tramite tasti funzione (F2 = campo precedente, ESC = torna al campo iniziale / esce, F3 = conferma). L'ordine di raccolta dati e':

  1. apri — inizializzazione: ctr-abil, z-99-init-program, caricamento lingua, apertura file (open-files), lettura azienda (rd-azi), composizione del nome del file temporaneo lodtmdes (#$BOGF13.<operatore> nella dir temporanea), abilitazione tasti funzione (invio, F8 aiuto, F9 ricerca avanzata, Shift+F4 griglia), preparazione dei controlli merce via COGS68W (z-s68-tm-da-merce / z-s68-tm-a-merce) e costruzione controlli (z-costruisci-controlli).
  2. a4 — reset della maschera; apre in modalita' esclusiva il file temporaneo lodtmdes per verificare che la funzione non sia gia' in uso dallo stesso operatore (se stato not = "00" avvisa e chiude), poi lo riapre in i-o.
  3. a-tm-da-merce — codice merce di partenza (controllo x-controlla-tm-da-merce).
  4. a-tm-a-merce — codice merce di arrivo (controllo x-controlla-tm-a-merce).
  5. a-tm-da-for — fornitore di partenza, selezionato via COGS65W (z-s65-tm-da-for); controllo esistenza su COGGEANA.
  6. a-tm-a-for — fornitore di arrivo, via COGS65W (z-s65-tm-a-for); controllo esistenza su COGGEANA.
  7. a-tm-fl-pref — flag "copio il fornitore preferenziale" (combo gestita da COGS95, z-s95-tm-fl-pref).
  8. a-tm-chr-mfr — carattere da aggiungere in testa al codice merce fornitore.
  9. a-tm-conf — validazione complessiva (x-imposta-conferma esegue tutti i controlli parziali) e richiesta di conferma (acc-conf-custom).
  10. ela-00-m — elaborazione vera e propria (vedi sotto).
  11. ela-end / fine / z-chiudi — messaggio di fine, chiusura file e uscita.

Elaborazione (ela-00-m)

Ciclo sull'intervallo di merci tm-da-mercetm-a-merce (scansione di COGMERCI per chiave mer-chia, con st-cogmerci-notmin + rdnxt-cogmerci). Per ogni merce:

  1. Incrementa il contatore di lettura tm-ctr-read.
  2. Legge il legame mfr-rec con chiave mfr-merce = mer-chia + mfr-for = tm-da-for (rd-cogmerfo). Se la merce non e' legata al fornitore di partenza, la salta (exit perform cycle).
  3. Cambia mfr-for in tm-a-for e tenta la scrittura (wr-cogmerfo):
  4. se ok, incrementa tm-ctr-write e inserisce le stringhe di ricerca (b1-ins-str);
  5. se il legame verso il fornitore di arrivo esiste gia', rilegge il record esistente e ne aggiorna codice/descrizione/divisa se il codice merce fornitore risulta vuoto (ramo "option 1", rwr-cogmerfo + b1-rew-str).
  6. Se tm-fl-pref = "S", cancella il riferimento preferenziale FP dal fornitore di partenza (b1-del-prf) e lo reinserisce sul fornitore di arrivo (b1-ins-prf).
  7. Copia le note (e1-note): travasa il blocco di descrizioni tipo "NM" (chiave "F" + merce + fornitore) da COGDESCR al temporaneo lodtmdes (a5-carica-des) e poi lo riscrive su COGDESCR (x4-aggiorna).
  8. Se richiesto (tm-chr-mfr not = space) e c'e' spazio libero in mfr-cod-for, antepone il carattere al codice merce fornitore e riscrive il record (rwr-cogmerfo + b1-rew-str).

I contatori letti/scritti sono mostrati in tempo reale (e-tm-ctr-read, e-tm-ctr-write); l'avanzamento e' visualizzato con il "clock" (view-clk).


File e tabelle principali

File logico Record Chiave / campi rilevanti Uso
COGMERCI mer-rec mer-chia = mer-gru + mer-sot + mer-cod Anagrafica merci; scansione dell'intervallo da–a merce
COGMERFO mfr-rec mfr-chia1 = mfr-merce + mfr-for; mfr-cod-for, mfr-desc, mfr-divisa Legame codice merce ↔ codice merce fornitore (archivio sorgente/destinazione della copia)
COGGEANA ana-rec ana-chia = ana-tipo + ana-cod; ana-nome Anagrafica cli/for/vettori; controllo esistenza fornitori (ana-tipo = "F")
COGCNDCF cnd-rec cnd-tip, cnd-cod, cnd-cnd, cnd-key, cnd-dati Condizioni cliente/fornitore; spostamento del preferenziale (cnd-cnd = "FP", cnd-tip = "F")
COGDESCR cde-rec cde-tip, cde-cod, cde-pro Descrizioni/note; note merce/fornitore (cde-tip = "NM")
COGLISFO Aperto in open-files, chiuso in z-chiudi (non movimentato direttamente qui)
COGTABEL Aperto/chiuso dal programma (tabelle di appoggio)
LODTMDES ltd-rec ltd-tip, ltd-cod, ltd-pro File temporaneo di transito per il travaso delle note (tipo "NM")

Il file temporaneo LODTMDES e' dichiarato manualmente nel sorgente (SELECT/FD/COPY e chiave lodtmdes.k01) e ha nome fisico specifico dell'operatore (#$BOGF13.<operatore>) per garantire l'univocita' e il lock di sessione.


Copybook principali

Screen Designer (cbl/screens/)

Copybook Contenuto
cogf13.select SELECT di COGTABEL, COGMERCI, COGGEANA, COGMERFO, COGLISFO, COGCNDCF, COGDESCR
cogf13.fd FD dei file gestiti da Screens
cogf13.wrk Working storage della maschera (variabili tm-*, handle controlli, util-s52/s95/u10)
cogf13-01.scr Screen section della maschera principale
cogf13.decla Declaratives
cogf13.prc Verbi di accesso ai file (st-/rd-/rdnxt-/wr-/rwr-/del- per cogmerci, cogmerfo, coggeana, cogcndcf, cogdescr)

Strutture dati

Copybook Contenuto
feurtab.fd / cogfiles.cpy Tabella file Eurosystem (FD feurtab)
cogmerfo.cpy Record legame merce/fornitore (mfr-rec)
coggeana.cpy Record anagrafico cli/for (ana-rec)
cogdescr.cpy Record descrizioni/note (cde-rec)
lodtmdes.fd / lodtmdes.cpy / lodtmdes.k01 File temporaneo descrizioni (ltd-rec)
cogazien.cpy Dati azienda (usa az-main-mag)
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Working storage comuni

Utility / interfacce subroutine

Copybook Contenuto
utils38.cpy Interfaccia COGS38 (util-s38: s38-merce, s38-for, s38-ope)
utils39.cpy Interfaccia COGS39 (util-s39: s39-merce, s39-for, s39-cmf-i, s39-cmf-c, s39-ope)
utils65.cpy Interfaccia COGS65W (selezione fornitore)
utils68.cpy Interfaccia COGS68W (selezione/controllo merce)
utils52.cpy Interfaccia COGS52 (calendario)
utils95.cpy Interfaccia COGS95 (gestione combo/valori)
utilu10.cpy Interfaccia COGU10
utilzde.cpy Utility di supporto
wcont.cpy / wcont1.cpy Aree di linkage (stringhe) passate dal chiamante

Sottoprogrammi chiamati (CALL)

Programma Contesto Scopo
COGS38 b1-ins-str Gestione archivio COGRACMF (ricerca merce/fornitore); operazione "I" (inserimento)
COGS39 b1-ins-str, b1-rew-str Gestione archivio COGSTCMF (stringhe di ricerca sul codice merce fornitore); operazioni "I" (inserimento) e "V" (variazione)
COGS65W z-s65-tm-da-for, z-s65-tm-a-for Selezione/ricerca fornitore su COGGEANA (con F8/F9, status bar)
COGS68W controlli merce (z-s68-tm-da-merce / z-s68-tm-a-merce) Selezione/validazione del codice merce

COGS38 e COGS39 sono richiamati con on overflow perform call-err e vengono scaricati con cancel subito dopo l'uso.


Note

  • La cancellazione delle note pre-esistenti sul fornitore di arrivo e' disattivata nel codice: in e1-note la perform c2-cancella (paragrafo che elimina i blocchi di descrizione via del-cogdescr) e' commentata, quindi le note vengono aggiunte senza rimuovere le eventuali gia' presenti.
  • Nel ramo di rewrite del legame gia' esistente e' presente un frammento "option 2" (perform rwr-cogmerfo) commentato: la seconda riscrittura non viene eseguita.
  • L'apertura esclusiva iniziale di lodtmdes in a4 funge da lock di sessione per operatore: se il file e' gia' in uso il programma avvisa e termina.
  • Il campo mfr-cod-for e' lungo 22 caratteri; l'aggiunta del carattere iniziale (tm-chr-mfr) avviene solo se l'ultimo carattere e' vuoto (mfr-cod-for (22:1) = space), spostando i primi 21 caratteri di una posizione a destra.