Vai al contenuto

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'array u05-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:

  1. cancella — rimuove le eventuali condizioni "FP" gia' presenti per quella merce (scansione COGCNDCF su chiave secondaria cnd-chia2 filtrata su cnd-cnd = "FP" e cnd-key = trs-merce, con del-cogcndcf);
  2. scrive la nuova condizione "FP" su COGCNDCF (cnd-cnd = "FP", cnd-key = merce, cnd-tip = k-ana-tipo-for, cnd-cod = fornitore) con wr-cogcndcf;
  3. 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.