Vai al contenuto

COGO40 — Visualizzazione ordini per cliente/fornitore

Intestazione

Campo Valore
Sorgente cbl/cogo40.cbl
Program-ID cogo40
Tipo Programma GUI interattivo (maschera con griglia paginata)

Posizione menu

  • Ordini > Clienti > Visualizzazioni > Elenco per Cliente
  • Ordini > Clienti > Offerte > Visualizzazione
  • Ordini > Fornitori > Visualizzazioni > Elenco x Fornitore
  • Ordini > Buoni di versamento > Visualizzazione

Scopo

COGO40 e' la maschera di consultazione degli ordini/offerte per cliente o per fornitore. L'operatore imposta un insieme di filtri (periodo, stato, tipo consegna, cliente/fornitore di consegna e di fatturazione, conferma, brand, magazzino, causale, azienda del gruppo) e ottiene una griglia paginata con le testate ordine che soddisfano i criteri; da qui puo' aprire il dettaglio dell'ordine, la ristampa, la packing list, la filiera del documento, ecc.

Lo stesso sorgente serve piu' funzioni di menu distinte, discriminate dai parametri di chiamata (wo-parametro/wo-tipo, sw-offerta) e dall'area di richiamo ri-link:

  • Ordini clienti (wo-tipo = "C"), offerte (sav-offerta valorizzato → sw-offerta = "*"), ordini fornitori (wo-tipo = "F").
  • Quando ri-caller = "COGG28" la maschera si trasforma in visualizzazione contratti per cliente e filtra le righe su un transito TRANSG28 passato dal chiamante (ri-transg28).
  • Quando ri-operazione = "SELEZIONE" la maschera funziona in modalita' di selezione: alla pressione di INVIO su una riga restituisce al chiamante la chiave ordine in util-o40 (o40-tor-tipo/anno/numero/progr) e termina.

I titoli maschera e le etichette dei campi (Cli./For. Fatt./Cons.) sono impostati dinamicamente in base a queste modalita'.


Struttura / Flusso

L'elaborazione e' organizzata come catena di paragrafi di ACCEPT sui campi filtro (uso di GO TO tra i paragrafi di accept, tipico delle maschere legacy generate da Screens) seguita dalla costruzione della griglia:

  1. apri — inizializzazione: z-99-init-program, ctr-abil, rd-azi (lettura azienda), lettura configurazione x99-confi, apertura file (open-files), composizione dei nomi dei file di transito temporanei (w-trs-name, transito note operative su LODTMDES, transito agenti su TRAN-COGS96), abilitazione tasti funzione e pulsanti custom (bitmap ordini/magazzino/assist/varie), caricamento controlli maschera. Se richiamato con ri-caller precompila i filtri da ri-link. Chiama carica-agenti per la restrizione per agente.
  2. a4 — reset del transito COGTRANS (close/open output/open i-o), svuotamento griglia, valorizzazione dei filtri di default (anno di sistema, periodo 01/01–31/12, stato da tm-cfg-stato-default, consegna "T", ordinamento "C", tipi ordine/preordine/preventivo, magazzino principale az-main-mag).
  3. ACCEPT dei filtri — paragrafi a-tm-da-data, a-tm-a-data, a-tm-chiusi, a-tm-consegna, a-tm-tp-ord/a-tm-tp-pre-ord/a-tm-tp-pre-pre, a-tm-ordinamento, a-tm-confe, a-tm-clifat, a-tm-brand, a-tm-cliente, a-tm-grp-az-cod, a-tm-mag-cod, a-tm-causale-cod. Ogni campo gestisce F2 (indietro), F3 (conferma → a-fine-dati), F8 (aiuto/calendario), controllo di validita' (x-controlla-*). Alcuni campi hanno lookup dedicati (COGS52 calendario, COGS65 anagrafiche, COGMAH brand, GRP002 gruppo aziende, WIN036 magazzino, WIN001 causale).
  4. a-fine-dati — validazione complessiva (x-controlla-dati) e estrazione dati nel transito COGTRANS scegliendo il percorso di scansione (vedi sotto).
  5. a-grid-ini / a-grid — riempimento della griglia leggendo dal transito COGTRANS con paginazione (z-99-accept-paged-grid, copybook fscrol2/utilpggr), gestione PgUp/PgDn (pg-after-pg-up/pg-after-pg-dwn), e gestione dei tasti funzione sulla griglia.
  6. fine / z-chiudi — chiusura file, cancellazione dei file di transito temporanei (COGTRANS, LODTMDES, TRAN-COGS96), z-99-exit-program, goback.

Percorsi di estrazione (scelta in a-fine-dati)

A seconda dei filtri impostati, la scansione delle testate ordine COGTESOR usa chiavi secondarie diverse:

  • carica-confe (carica-confe-loop) — se e' valorizzato il numero di conferma d'ordine tm-confe: scansione per chiave st-cogtesor-notmin-chia6 (tipo + numero conferma).
  • carica-clifat — se e' valorizzato il cliente/fornitore di fatturazione tm-clifat, esegue due giri:
  • giro-clidest — chiave st-cogtesor-notmin-chi1 (tipo1 + clifor) per gli ordini in cui il clifat compare come intestatario senza destinatario diverso (tor-destina = 0);
  • giro-clifat — chiave st-cogtesor-notmin-chia4 (tipo1 + destinatario + anno decorrenza) per gli ordini con destinatario = clifat.
  • x1-write-tran (x1-00/x1-10/x1-20) — percorso generale (nessuna conferma, nessun clifat): scansione per chiave primaria st-cogtesor-notmin (tipo + anno) partendo da tm-da-aa (ottimizzazione TASK-2828: la scansione parte sempre dalla chiave primaria per anno anche quando il cliente e' valorizzato, con controllo sequenziale sull'anno/tipo).

Tutti e tre i percorsi applicano gli stessi filtri su ogni testata (periodo di decorrenza tor-datdecor compreso tra tm-da-data e tm-a-data, cliente tor-clifor, fatturazione tor-destina, magazzino tor-magaz, causale tor-causale, brand tar-brand da COGTORAG, gruppo aziende tar-grp-az-cod, restrizioni CRM via CRMS12, restrizione per agente via ctrl-age) e i controlli comuni controlli-su-ord (anno tor-anno1, stato aperto/chiuso/chiuso-manuale via tm-chiusi, tipo consegna singola/multipla via tor-valuni/tm-consegna), poi scrivono un record nel transito COGTRANS (insert-temp / x1-20) con la chiave di ordinamento calcolata da x-imposta-ordinamento.

Ordinamento (x-imposta-ordinamento)

La chiave secondaria di COGTRANS (trs-chia2, campi trs-ord-1/2/3) e' popolata in base a tm-ordinamento:

  • "A" — per anagrafica (trs-ana) + data decorrenza + chiave;
  • "B" — per anagrafica + data scadenza + chiave;
  • "C" — per anno/numero decrescenti (9999 − anno, 9999999 − numero).

Per la personalizzazione Artic Seals le date sono invertite (99999999 − data) per ottenere ordine decrescente.

Riempimento griglia (rd1-ft-go / x-riempi-grid-record)

Dal transito COGTRANS ogni riga viene caricata nella tabella di maschera tm-tab (rd1-ft-go): descrizione anagrafica letta da COGGEANA, dati fatturazione (carica-dati-clifat), stato (Aperto/Chiuso/Chiuso manual.), tipo consegna (Singola/Multipla), note operative, destinazioni diverse (via WIN092). In fase di visualizzazione della griglia (x-riempi-grid-record) vengono inoltre calcolati/risolti:

  • totale peso per taglio lamiere/profilati (config taglio-lamiere), sommando trpr-peso-netto/trpp-peso-netto da TGLPRRIG/TGLPRRIP;
  • flag "Pronto" per Siderpress leggendo lo stato di chiusura commesse da COGLAVOR (cla-fl-cls);
  • numero dossier da CRMDOSSR (prefisso da config PREFISSO-ID-DOSSIER);
  • buono di prelievo collegato, risalendo COGRIGOR → COGCONOR → COGRIGBP → COGTESBP (cerca-bp, buono in stato tbp-fl-cls = "A");
  • stato blocco amministrativo/produzione (grd-bloc-am/grd-bloc-pr).

File e tabelle principali

File logico Record / chiavi Modalita' Uso
COGTESOR tor-rec (chiavi: primaria per tipo/anno/numero; chi1 tipo1+clifor; chia4 tipo1+destina+anno decorr.; chia6 tipo1+numero conferma) Input Testate ordine/offerta cliente-fornitore (sorgente principale della scansione)
COGTORAG tar-rec (tar-testa) Input Dati ragionati/estesi della testata ordine: brand, gruppo aziende, blocco amm./prod., destinazioni AM, id web
COGGEANA ana-rec (ana-tipo+ana-cod) Input Anagrafica clienti/fornitori (descrizioni)
COGRIGOR ror-rec Input Righe ordine (ricerca buono di prelievo collegato)
COGCONOR cor-rec (chia5) Input Consegne/collegamenti riga ordine
COGRIGBP rbp-rec (chia4) Input Righe buono di prelievo
COGTESBP tbp-rec Input Testate buono di prelievo
COGLAVOR cla-rec (chia5 su ordine) Input Commesse di lavorazione (stato "Pronto" personalizzazione Siderpress)
COGDESCR cde-rec (OO + chiave ordine) Input Note operative sull'ordine (varying)
CRMDOSSR dsa-rec (chia2) Input Dossier CRM collegati all'ordine
GRPAZIEN ao-azi-rec (ao-azi-cod) Input Descrizione azienda del gruppo
PRNTOPER ptop-rec (ptop-cod) Input Parametri operatore (agente associato per restrizione)
TGLPRRIG / TGLPRRIP trpr-rec / trpp-rec (chia2) Input Righe taglio lamiere / profilati (totale peso)
COGTABEL, COGMAGAZ, COGCNDCF, COGANCAP, COGRORA2, COGBRAND vari Input File di supporto inclusi dai lookup/controlli
COGTRANS trs-rec (chiave1 tipo/anno/numero/progr; chiave2 trs-chia2 di ordinamento) I-O, temporaneo Transito delle testate estratte, base della griglia paginata (dichiarato manualmente nel SELECT/FD del sorgente, cancellato in uscita)
TRANSG28 g28-rec (g28-clifor+g28-ordine+g28-merce) Input, esterno Transito contratti passato da COGG28 (filtro righe quando ri-caller = "COGG28")
TRAN-COGS96 trs-cogs96-rec (trs-cogs96-age) I-O, temporaneo Elenco agenti abilitati all'operatore (restrizione visibilita' ordini)
LODTMDES ltd-rec I-O, temporaneo Transito testo note operative per la vista di sola lettura (COGO08)
FEURTAB cogfiles.cpy Input Tabella file Eurosystem
EXP-GRID line sequential Output File di esportazione griglia (Excel, S-F5)

Copybook principali

Generati da Screens

Copybook Contenuto
cogo40.select SELECT dei file (COGTABEL, COGGEANA, COGMAGAZ, COGTESOR, COGRIGOR, COGLAVOR, COGCONOR, COGCNDCF, COGTESBP, COGRIGBP, COGDESCR, COGTORAG, COGANCAP, COGRORA2, COGBRAND, CRMDOSSR, GRPAZIEN, PRNTOPER, TGLPRRIG, TGLPRRIP, EXP-GRID)
cogo40.fd FD dei file
cogo40.wrk Working storage maschera
cogo40.decla Declaratives
cogo40.prc Procedure ausiliarie di maschera
cogo40-01.scr Screen section

Il transito COGTRANS e le sue chiavi (cogtrans.k01/cogtrans.k02) sono dichiarati manualmente nel sorgente (trattandosi di file temporaneo non gestibile da Screens); analogamente TRANSG28, TRAN-COGS96 e LODTMDES.

Chiavi secondarie incluse a fine procedure

cogtrans.k01, cogtrans.k02, cogtesor.k02, cogtesor.k05, cogtesor.k07, cogconor.k05, cogrigbp.k04, crmdossr.k02, tglprrig.k02, tglprrip.k02, coglavor.k05, transg28.k01, tran-cogs96.k01, lodtmdes.k01.

Interfacce sottoprogrammi / utility

utilo40, utilo10, utilo65, utilo08, utilncnf, utilcogs96, utilcogma3, utilasns11, utilcrms12, utilcogmah, utilw92, utilw15, utilw27, utilp86, utilgrp002, utilcogs0b, utils52, utils65, utilgdad, utildlg, utilgrp002, sendw92, sendw36, sendw01.

Working storage comuni

wgrave, wnscr, wopenf, wstato, cogazien, k-personal, wgrid, wcont/wcont1, mmmask, grave, opengen, stato/stato1, winmsg, dtab, fscrol2, utilpggr.


Sottoprogrammi chiamati (CALL)

Programma Contesto Scopo
RNEWCONF x99-confi Lettura configurazioni (7 chiavi)
CRMS12 filtri estrazione Restrizioni CRM sul nominativo (PREPARA, CONTROLLA-NOM); attivo solo per ordini cliente
COGS0B filtri estrazione Abilitazione operatore sull'azienda del gruppo (cogs0b-abilitato)
COGS96 carica-agenti Carica nel transito TRAN-COGS96 gli agenti visibili all'operatore
COGO10 call-gest (cliente) Gestione/dettaglio ordine cliente
COGG16 call-gest (cliente, pers. "GU") Variante gestione ordine cliente
COGO60 call-gest (fornitore) Gestione/dettaglio ordine fornitore
COGO65 F9 (cliente) Ristampa ordine cliente
COGO25 F9 (fornitore) Ristampa / non disponibili ordine fornitore (NODISP)
COGO08 F4 (cliente) Vista note operative (sola lettura, o08-readonly = "S")
COGP86 F7 (cliente) Packing list ordine
WIN027 F5 Dettaglio rimanenza
WIN015 F8 Dettaglio ordine
COGMA3 S-F2 Consultazione filiera del documento
COGV14 S-F7 (fornitore) Inserimento carico da ordine (CREA-DA-ORDINE)
ASNS11 S-F6 Creazione chiamata di assistenza da ordine (CREA-CHIAMATA)
COGMAH F8 su brand Lookup brand/marchio
GRP002 F8 su azienda Lookup gruppo aziende
GRIDADMN S-F4 Amministrazione colonne griglia
WIN092 riempimento transito Risoluzione destinazioni diverse
WIN036 / WIN001 F8 magazzino/causale Lookup magazzino / causale (send-w36/send-w01)
COGS52 ACCEPT date Calendario / gestione date
COGS65 ACCEPT clifat/cliente Lookup anagrafica cliente/fornitore

I paragrafi a1-sblocca-amm/a2-blocca-amm gestiscono lo sblocco/blocco amministrativo e produzione dell'ordine (via util-dlg per la scelta modalita'), attivi solo per ordini cliente e per gli operatori abilitati dalla configurazione.


Configurazione (RNEWCONF)

Lette in x99-confi (ncnf-pnt = 7, pacchetto "C", suddivisione = sav-tipo):

# Gruppo Chiave Campo interno Uso
01 ordini cogo40-stato-default tm-cfg-stato-default Stato ordini proposto di default nel filtro (tm-chiusi)
02 abilita taglio-lamiere tm-cfg-taglio-lamiere Se "S" calcola e mostra il totale peso (colonna dedicata) da TGLPRRIG/TGLPRRIP
03 ORDCLI PREFISSO-ID-DOSSIER tm-cfg-dsr-prefisso-id Prefisso per la ricerca del dossier CRM collegato
04 azienda gestione-brand-marchio tm-cfg-gestione-brand Abilita il filtro/campo brand
05 ABILITA GRUPPO-AZIENDE tm-cfg-gruppo-aziende Abilita il filtro/campo azienda del gruppo
06 ordini blocco-amministrativo-oc tm-cfg-ges-blocco-amm Abilita la gestione blocco amministrativo (solo ordini cliente); forzato "N" per fornitori
07 ordini utenti-sblocco-amm tm-cfg-osb-string Elenco operatori abilitati allo sblocco amministrativo (blocchi di 3 cifre); l'esito e' in tm-cfg-osb-abi

Riferimenti pagine configurazioni: ordini, ordcli, azienda, abilita.


Note

  • Programma di sola consultazione: non modifica le testate ordine; le uniche scritture su dati permanenti avvengono tramite i sottoprogrammi richiamati dai tasti funzione (COGV14, ASNS11, sblocco/blocco). Tutte le scritture dirette del programma sono su file temporanei di transito (COGTRANS, TRAN-COGS96, LODTMDES), che vengono cancellati in uscita.
  • I file di transito sono resi univoci per operatore/processo tramite ext-tmp-dir, ext-pid e l'operatore (wo-oper); in apertura viene verificato che la funzione non sia gia' in uso dallo stesso operatore.
  • La restrizione per agente (carica-agenti/ctrl-age) e' attiva solo per gli ordini cliente (sav-parametro not = "F"): se l'operatore ha un agente associato in PRNTOPER, vede solo gli ordini del proprio portafoglio agenti caricato via COGS96.
  • Numerose personalizzazioni cliente presidiano il flusso: Artic Seals (ordinamento decrescente per data, esclusione cliente/fornitore interno), Siderpress (colonna "Pronto"), Pasticceria MO / Sanitel / GU (ordinamento e gestione ordine dedicati).
  • TASK-2828: ottimizzazione della scansione principale (x1-write-tran) che parte sempre dalla chiave primaria per anno anche con cliente valorizzato, filtrando poi in memoria, per ridurre i tempi di estrazione.
  • La chiave secondaria di COGTRANS (.k02) e' inclusa manualmente perche' il transito temporaneo non e' gestito da Screens.