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-offertavalorizzato →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 inutil-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:
apri— inizializzazione:z-99-init-program,ctr-abil,rd-azi(lettura azienda), lettura configurazionex99-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 (bitmapordini/magazzino/assist/varie), caricamento controlli maschera. Se richiamato conri-callerprecompila i filtri dari-link. Chiamacarica-agentiper la restrizione per agente.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 datm-cfg-stato-default, consegna "T", ordinamento "C", tipi ordine/preordine/preventivo, magazzino principaleaz-main-mag).- 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). a-fine-dati— validazione complessiva (x-controlla-dati) e estrazione dati nel transito COGTRANS scegliendo il percorso di scansione (vedi sotto).a-grid-ini/a-grid— riempimento della griglia leggendo dal transito COGTRANS con paginazione (z-99-accept-paged-grid, copybookfscrol2/utilpggr), gestione PgUp/PgDn (pg-after-pg-up/pg-after-pg-dwn), e gestione dei tasti funzione sulla griglia.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'ordinetm-confe: scansione per chiavest-cogtesor-notmin-chia6(tipo + numero conferma).carica-clifat— se e' valorizzato il cliente/fornitore di fatturazionetm-clifat, esegue due giri:giro-clidest— chiavest-cogtesor-notmin-chi1(tipo1 + clifor) per gli ordini in cui il clifat compare come intestatario senza destinatario diverso (tor-destina = 0);giro-clifat— chiavest-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 primariast-cogtesor-notmin(tipo + anno) partendo datm-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), sommandotrpr-peso-netto/trpp-peso-nettoda 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 statotbp-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-pide 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.