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
FPsu 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 campomfr-cod-fora 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':
apri— inizializzazione:ctr-abil,z-99-init-program, caricamento lingua, apertura file (open-files), lettura azienda (rd-azi), composizione del nome del file temporaneolodtmdes(#$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).a4— reset della maschera; apre in modalita' esclusiva il file temporaneolodtmdesper verificare che la funzione non sia gia' in uso dallo stesso operatore (sestato not = "00"avvisa e chiude), poi lo riapre ini-o.a-tm-da-merce— codice merce di partenza (controllox-controlla-tm-da-merce).a-tm-a-merce— codice merce di arrivo (controllox-controlla-tm-a-merce).a-tm-da-for— fornitore di partenza, selezionato via COGS65W (z-s65-tm-da-for); controllo esistenza su COGGEANA.a-tm-a-for— fornitore di arrivo, via COGS65W (z-s65-tm-a-for); controllo esistenza su COGGEANA.a-tm-fl-pref— flag "copio il fornitore preferenziale" (combo gestita da COGS95,z-s95-tm-fl-pref).a-tm-chr-mfr— carattere da aggiungere in testa al codice merce fornitore.a-tm-conf— validazione complessiva (x-imposta-confermaesegue tutti i controlli parziali) e richiesta di conferma (acc-conf-custom).ela-00-m— elaborazione vera e propria (vedi sotto).ela-end/fine/z-chiudi— messaggio di fine, chiusura file e uscita.
Elaborazione (ela-00-m)¶
Ciclo sull'intervallo di merci tm-da-merce … tm-a-merce (scansione di COGMERCI
per chiave mer-chia, con st-cogmerci-notmin + rdnxt-cogmerci). Per ogni merce:
- Incrementa il contatore di lettura
tm-ctr-read. - Legge il legame
mfr-reccon chiavemfr-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). - Cambia
mfr-forintm-a-fore tenta la scrittura (wr-cogmerfo): - se ok, incrementa
tm-ctr-writee inserisce le stringhe di ricerca (b1-ins-str); - 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). - Se
tm-fl-pref = "S", cancella il riferimento preferenzialeFPdal fornitore di partenza (b1-del-prf) e lo reinserisce sul fornitore di arrivo (b1-ins-prf). - Copia le note (
e1-note): travasa il blocco di descrizioni tipo"NM"(chiave"F" + merce + fornitore) da COGDESCR al temporaneolodtmdes(a5-carica-des) e poi lo riscrive su COGDESCR (x4-aggiorna). - Se richiesto (
tm-chr-mfr not = space) e c'e' spazio libero inmfr-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-notelaperform c2-cancella(paragrafo che elimina i blocchi di descrizione viadel-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
lodtmdesina4funge da lock di sessione per operatore: se il file e' gia' in uso il programma avvisa e termina. - Il campo
mfr-cod-fore' 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.