COGT51 — Impostazione fornitore preferenziale¶
Sorgente: cbl/cogt51.cbl | Tipo: Programma interattivo GUI con griglia paginata | Program-ID: COGT51
Menu: Magazzino > Archivi & Tabelle > Merci Fornitori > Impostazione forn.pref.
Scopo¶
Assegna in modo massivo un fornitore preferenziale (o "abituale") a un insieme di merci selezionate per filtro. L'operatore sceglie il fornitore, il criterio di estrazione delle merci e i filtri; il programma costruisce l'elenco delle merci corrispondenti, lo mostra in griglia e, alla conferma, imposta per ognuna la condizione "FP" (fornitore preferenziale) su COGCNDCF e aggiorna la relazione merce/fornitore su COGMERFO.
La selezione delle merci puo' avvenire per:
- codice (
tm-tipo = "C"): intervallo da merce / a merce; - gruppo (
"G"): tutte le merci del gruppo; - sottogruppo (
"S"): tutte le merci del gruppo/sottogruppo; - elenco (
"E"): merci scelte manualmente tramite la subroutine COGU05.
Un flag "Solo merci del fornitore" (tm-fl-for = "S") limita l'estrazione alle merci gia' collegate al fornitore selezionato.
Per i dettagli operativi lato utente vedere la pagina utente corrispondente in docs/user.
File e tabelle principali¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGMERCI | cogmerci |
Anagrafica merci; scansione per costruire l'elenco (mer-chia, mer-gru, mer-sot, mer-um) |
| COGGEANA | coggeana |
Anagrafica generale; validazione fornitore (k-ana-tipo-for, ana-cod, ana-nome) |
| COGMERFO | cogmerfo |
Relazione merce/fornitore; filtro merci del fornitore e scrittura finale (mfr-merce, mfr-for, mfr-um). Usa la chiave secondaria cogmerfo.k02 |
| COGCNDCF | cogcndcf (COGCNDCF.CPY) |
Condizioni cliente/fornitore; scrittura condizione "FP" (cnd-cnd, cnd-key, cnd-tip, cnd-cod). Usa la chiave secondaria cogcndcf.k02 |
| COGTRANS | (SELECT/FD inline) | File di lavoro temporaneo indicizzato: accumula le merci selezionate prima dell'aggiornamento. Record trs-rec (trs-merce, trs-um), chiave trs-chia1 |
COGTRANS e' definito manualmente nel sorgente (SELECT su w-trs-name, FD e copy "cogtrans.k01"), non essendo gestibile da Screens. Il nome file e' costruito in apri con directory temporanea + #$ + program-id + operatore, cosi' da essere univoco per operatore.
Struttura ed elaborazione¶
Programma su framework maschera standard (mmmask.cpy) con griglia paginata gestita via GRIDADMN (utilgdad.cpy) e utility di paginazione (fscrol2.cpy, utilpggr.cpy, z-99-accept-paged-grid).
Apertura e lock funzione (apri / a4)¶
All'ingresso viene costruito il nome del file temporaneo COGTRANS. In a4 il file viene aperto in output e, se lo stato non e' "00", il programma segnala "Funzione gia' in uso dall'operatore" ed esce: e' il meccanismo di lock che impedisce l'uso concorrente da parte dello stesso operatore. Poi COGTRANS viene riaperto in i-o per l'accumulo.
Selezione parametri¶
Sequenza di accept: fornitore (a-tm-for-cod, subroutine COGS65W), flag "solo merci del fornitore" (a-tm-fl-for), tipo estrazione (a-tm-tipo, combo COGS60), gruppo/sottogruppo (a-tm-gru / a-tm-sot), merce da / a (a-tm-merce-da / a-tm-merce-a, subroutine COGS68W). I campi gruppo/sottogruppo e merce da/a sono resi visibili/nascosti dinamicamente in base al tipo estrazione (z-cambia-tm-merce-da, z-cambia-tm-merce-a).
Per il tipo estrazione "E" (elenco) viene richiamata la subroutine COGU05 che presenta la selezione manuale delle merci; il risultato e' l'array u05-merce.
Costruzione elenco (carica-dati)¶
Alla conferma (a-fine-dati, F3) viene eseguita carica-dati, che popola il file temporaneo COGTRANS:
- tipo C/G/S: scansione di COGMERCI (
st-cogmerci-notmin+rdnxt-cogmerci) con rottura sul filtro (intervallo codice, gruppo, gruppo/sottogruppo). Esclude la merce"999999999". Se il flag "solo merci del fornitore" e' attivo, verifica su COGMERFO che la merce sia collegata al fornitore. - tipo E (
carica-da-u05): scorre l'arrayu05-merce(fino a 200 elementi), valida ogni merce su COGMERCI e (se richiesto) su COGMERFO.
Ogni merce valida viene scritta su COGTRANS (wr-cogtrans) con codice merce e unita' di misura.
Griglia (a-grid-ini / a-grid)¶
carica-tab legge COGTRANS e riempie la griglia paginata (z-costruisci-grid, x-riempi-grid-record); mostra solo il codice merce. Se non risultano merci si segnala "Nessuna merce trovata con i filtri forniti". Sono disponibili l'esportazione in Excel (Shift+F5, z-esporta-paged-grid) e la personalizzazione griglia (Shift+F4).
Aggiornamento (aggiorna)¶
Con F3 (previa conferma "verra' assegnato il fornitore abituale a tutte le merci nella tabella") viene eseguita aggiorna, che scorre COGTRANS e per ogni merce:
cancella— rimuove le eventuali condizioni"FP"gia' presenti per quella merce (scansione COGCNDCF su chiave secondariacnd-chia2filtrata sucnd-cnd = "FP"ecnd-key = trs-merce, condel-cogcndcf);- scrive la nuova condizione
"FP"su COGCNDCF (cnd-cnd = "FP",cnd-key = merce,cnd-tip = k-ana-tipo-for,cnd-cod = fornitore) conwr-cogcndcf; - scrive la relazione merce/fornitore su COGMERFO (
wr-cogmerfo).
Chiusura (fine / z-chiudi)¶
Chiude i file, chiude ed elimina il file temporaneo COGTRANS (close cogtrans + delete file cogtrans), chiude la finestra e termina con goback.
CALL a sottoprogrammi¶
| Sottoprogramma | Scopo |
|---|---|
| COGS65W | Aiuto/accept fornitore (z-s65-tm-for-cod) |
| COGS68W | Aiuto/accept merce (da / a) (z-s68-tm-merce-da / -a) |
| COGS60 / S95 | Combo tipo estrazione e check "solo merci del fornitore" |
| COGU05 | Selezione manuale elenco merci (tipo estrazione "E") |
| GRIDADMN | Gestione griglia paginata (prepara, add, svuota, esporta) |
Note¶
- Il file di lavoro COGTRANS e' temporaneo e univoco per operatore; funge sia da buffer delle merci selezionate sia da lock della funzione (se gia' aperto da un'istanza dello stesso operatore la funzione non parte).
- La condizione impostata e' la
"FP"su COGCNDCF: prima di riscriverla, le eventuali condizioni"FP"precedenti sulla stessa merce vengono cancellate, cosi' che ogni merce abbia un solo fornitore preferenziale. - Copybook chiavi secondarie inclusi manualmente a fine procedure:
cogtrans.k01,cogmerfo.k02,cogcndcf.k02.