COGF64 - Scheda ordini di vendita distribuzione¶
Funzione¶
Griglia interattiva per la gestione degli ordini di vendita in fase di distribuzione. Mostra le righe consegna degli ordini aperti con quantita residue, permettendo evasione, creazione BdP, fatturazione, packing list e operazioni ausiliarie.
File: cbl/cogf64.cbl (8585 righe)
Modalita di funzionamento¶
Standalone (interattivo)¶
Lancio diretto: l'operatore imposta i filtri, naviga la griglia, esegue operazioni.
Standalone con locazione (TASK-2669)¶
L'operatore inserisce un codice locazione di magazzino: il programma mostra solo gli ordini evadibili con le giacenze presenti su quella locazione, e crea BdP con movimenti di scarico dalla locazione. Vedi sezione dedicata sotto.
Called (w-dc-called = "S")¶
Chiamato da altri programmi con due operazioni:
| Operazione | Costante | Descrizione |
|---|---|---|
COMPLETA-CARICO |
k-ope-completa-carico |
Riceve un DDT di carico: mostra solo gli ordini con merci presenti nel carico, pre-filtrando per giacenza |
ACCANTONA-VERS |
w-ope-accantona-vers |
Riceve un DDT di versamento: crea BdP provvisori, movimenti di magazzino e collega i lotti tra magazzino principale e logistico |
Flusso principale¶
apri
├── x99-confi (caricamento configurazione)
├── setup griglia, bitmap buttons
└── accept filtri (a-tm-data-da ... a-tm-locazione ... a-tm-filtro-add)
└── a-fine-dati
├── z-grid-det-crea-transito
│ ├── a2-leggi-carico (se COMPLETA-CARICO)
│ ├── a10-leggi-locazione (se locazione valorizzata)
│ ├── b1-write-tran (scrittura file transito)
│ │ └── b13-consegne (consegne per ordine)
│ └── b-calcola-qta-dsp (cascata disponibilita)
└── a-grid (interazione griglia)
├── F1 → Crea BdP (modo A/B/C)
├── F1 → Evadi (modo pasticceria)
├── F2 → Blocca/sblocca ordine
├── F3 → Gestione ordine (COGMA1)
├── F5 → Dettaglio merce
├── F6 → Note operative
├── F7 → Packing list
├── F9 → Dettaglio produzione
├── F10 → Packing list (alternativo)
├── F11 → Fatturazione (COGM88)
├── SF6 → Chiudi ordine (COGO45)
└── SF9 → Riconsegna
Filtri¶
| Filtro | Variabile | Note |
|---|---|---|
| Periodo | tm-data-da, tm-data-a |
Per data ordine o consegna |
| Tipo periodo | tm-tipo-periodo |
"O"=ordine, "C"=consegna |
| Merce/sottogruppo | tm-ms-* |
Gruppo, sottogruppo, codice singolo |
| Cliente | tm-cli-* |
Codice, anche con gerarchia padre |
| Destinazione | tm-dst |
Destinazione consegna |
| Agente | tm-age-* |
Codice agente |
| Ordini bloccati | tm-fl-blocco |
"S"=solo bloccati, "N"=escludi, " "=tutti |
| Ordini lavorati | tm-fl-lavorato |
"S"=solo lavorati, "N"=escludi, " "=tutti |
| Canale spedizione | tm-canale-spe |
Filtro per canale |
| Confezionamento | tm-filtro-pack |
Filtro per tipo imballo |
| Disponibilita | tm-filtro-disp |
"S"=solo disponibili, "N"=non disponibili, "F"=solo con giacenza piena |
| RMA | tm-filtro-rma |
"S"=solo RMA |
| Conto anticipo | tm-filtro-add |
"S"=solo con anticipo |
| Zona | tm-zona |
Zona geografica |
| Sovrapprezzi | tm-filtro-sovrapprezzi |
"S"=con sovrapprezzo, "N"=senza |
| Locazione | tm-locazione |
Codice locazione magazzino (F8=lookup WMS002). Se valorizzato, filtra ordini per giacenza locazione |
Creazione BdP - Tre modalita¶
La configurazione bdp.prg-creazione-bdp determina la modalita:
Modo "A" - Standard (COGM86)¶
Chiama COGM86 passando il file transito con le consegne selezionate. COGM86 gestisce interattivamente la creazione.
Modo "B" - Via COGG6A¶
Chiama COGG6A con le stesse informazioni. Usato per scenari specifici.
Modo "C" - Creazione diretta dalla griglia¶
Il programma crea direttamente i BdP leggendo le quantita impostate dall'operatore nelle colonne editabili della griglia.
Flusso modo C (c-creazione-bdp-diretta):
c-creazione-bdp-diretta
├── c-controlli-bdp-diretti (validazione quantita)
├── Loop consegne dal transito:
│ ├── c-crea-bdp-con-lotto (se bdp-merci-lotto = "B")
│ │ ├── c-cerca-lotto-versamento (da DDT carico)
│ │ ├── c-cerca-prenotato-lotto (verifica disponibilita)
│ │ └── c-crea-bdp / c-aggiungi-a-bdp
│ │ └── invio lista a Modula (COGD53)
│ └── c-crea-bdp (se non gestione lotti)
├── c-stampa-bdp-creati (stampa BdP)
└── c-etichetta-accantonamento (se ACCANTONA-VERS)
Operazione ACCANTONA-VERS¶
Flusso specifico per versamenti componenti con accantonamento su magazzino logistico:
- Creazione BdP provvisorio (
c-crea-bdp): BdP con flag provvisorio "P" - Movimento magazzino (
c-crea-versamento-accantonato): crea documento via COGS26 con causaletm-cfg-cau-ava-pf - Collegamento lotti (
c-collega-lotti): inserisce record COGLGLOT che collega lotto padre (mag principale) a lotto figlio (mag logistico) - Raccordo BdP-DDT (
c-crea-bdp): scrive COGGENER(EB) per legare BdP al DDT di carico - Invio a Modula (se configurato): invia picking list via COGD53
Evasione da locazione (TASK-2669)¶
Flusso per la creazione di BdP di accantonamento partendo da una locazione di magazzino. Pensato per l'uso da tablet/app nella gestione locazioni.
Concetto operativo¶
L'operatore si trova fisicamente davanti a una locazione di magazzino e vuole evadere gli ordini con la merce disponibile in quella locazione. Il sistema: 1. Mostra solo gli ordini evadibili con le giacenze della locazione 2. Crea BdP di accantonamento 3. Registra un'uscita dalla locazione di magazzino 4. Registra un'entrata su una locazione di partenza "fittizia" (tramite WMSW01) 5. L'operatore poi effettuera' lo spostamento fisico e assegnera' la locazione definitiva
Flusso dettagliato¶
a-tm-locazione (input codice locazione, F8=lookup WMS002)
|
v
a10-leggi-locazione
|-- WMSW01 "esporta-giacenze-loc" (classe "M")
| -> esporta giacenze locazione in file transito cogtrans3
|-- Carica cogtrans3 in tab-dm (merce + quantita')
|
v
b13-10-loop (filtro griglia)
|-- Per ogni riga ordine: cerca cor-merce in tab-dm
|-- Se non trovata -> riga nascosta
|-- Se trovata -> a2-qta-carico = giacenza locazione
|
v
a-grid (selezione operatore, F1=Crea BdP)
|
v
c-creazione-bdp-diretta
|-- c-controlli-bdp-da-carico (quantita' <= giacenza locazione)
|-- Creazione BdP via COGSA0
|
v
c10-scarico-locazione (post-creazione BdP)
|-- Loop 1: WMSW01 classe "P" (associa BdP a locazione di partenza)
|-- Loop 2: WMSW01 classe "M" + "scarico-locazione" (uscita da locazione)
Mutua esclusivita' dei percorsi¶
I tre percorsi post-BdP sono mutuamente esclusivi:
| Condizione | Percorso | Paragrafi |
|---|---|---|
w-dc-called = "S" e COMPLETA-CARICO/ACCANTONA-VERS |
Da DDT carico | c6 + c9 |
tm-locazione <> spaces |
Da locazione | c10 |
| Nessuna delle precedenti | Standalone puro | nessun movimento locazione |
Variabili specifiche¶
| Variabile | PIC | Descrizione |
|---|---|---|
tm-locazione |
X(20) | Codice locazione inserito dall'utente |
tm-cfg-gestione-tablet |
X(01) | Config "S"=abilita locazioni/tablet |
w-trs3-name |
X(70) | Path file transito giacenze locazione |
cogtrans3 |
indexed | File transito con merce+quantita' per locazione |
Note implementative e punti aperti¶
- Nessun controllo errore su WMSW01 in c10: le CALL a WMSW01 (righe 8459, 8480) non verificano
wmsw01-o-esito. Un errore di scarico locazione passa inosservato - Nessuna validazione del codice locazione:
x-controlla-tm-locazione(riga 4989) accetta qualsiasi valore. Un codice errato produce "nessuna giacenza" anziche' "locazione inesistente" - BdP non marcati come provvisori: nel flusso locazione standalone i BdP non ricevono
tbp-fl-provvisorio = "P"(impostato solo per COMPLETA-CARICO). Da verificare se intenzionale - Locazione fittizia di entrata: la creazione dell'entrata sulla locazione fittizia e' delegata interamente a WMSW01 (non visibile in COGF64)
Completamento carico (COMPLETA-CARICO)¶
a2-leggi-carico: legge il DDT di carico (COGMOMAG), costruiscetab-dmcon le merci e quantita- Espande distinte base (COGDBASE) per trovare i componenti
- Sottrae quantita gia evase su BdP collegati (
cerca-bdp-collegati) - Filtra la griglia: mostra solo ordini con merci presenti nel carico
- Pre-compila le quantita da evadere
Disponibilita (b-calcola-qta-dsp)¶
Calcolo a cascata della giacenza disponibile per ogni merce:
- Legge giacenza da COGTRANS (gia calcolata in
a2-aggiorna-cogtrans) - Per ogni riga del transito in ordine di priorita:
qta-dsp = giacenza - somma(qta gia assegnate alle righe precedenti)- Se
tm-filtro-disp = "S"eqta-dsp <= 0: nasconde la riga - Se
tm-filtro-disp = "F"eqta-dsp < qta-residua: nasconde la riga - Se
modula-db-frontiera = "S"ebdp-merci-lotto = "B": pre-compilaqta-eva = min(qta-residua, qta-dsp)
Sdoppia riga (x5-sdoppia-riga)¶
Permette di dividere una riga consegna in due:
- Crea nuova riga ordine (COGRIGOR) con quantita residua
- Copia record collegati (COGRORA2, COGRORAG, COGRIGCM)
- Crea nuova consegna (COGCONOR) con numero progressivo successivo
- Aggiorna la riga originale con la quantita ridotta
Riconsegna (SF9 - z-riconsegna-riga)¶
- Aggiorna registro ISIR (COGISIRR): marca come reso (
isr-fl-reso = "S") - Rimuove flag provvisorio dal BdP (COGTESBP):
tbp-fl-provv = " "
Fatturazione (F11 - a6-fattura)¶
- Raccoglie BdP congruenti: stesso magazzino, causale, condizioni pagamento, porto, vettore, destinazione
- Invia al programma COGM88 che genera la fattura
Configurazione (x99-confi)¶
| # | Gruppo | Chiave | Variabile | Descrizione |
|---|---|---|---|---|
| 1 | AZIENDA | NEGOZIO | tm-cfg-ges-negozio |
Gestione negozio (S/N) |
| 2 | MERCE | QTA-D | tm-cfg-qta-d |
Decimali quantita |
| 3 | PRODUZIONE | PRODUZIONE | tm-cfg-uso-cma |
Usa cicli e materiali |
| 4 | ORDINI | BLOCCO-AMM | tm-cfg-ges-blocco-amm |
Gestione blocco amministrativo |
| 5 | ORDINI | CAU-CONTO-ANT | tm-cfg-cau-conto-ant |
Causale conto anticipo |
| 6 | CLIENTI | GES-PADRE | tm-cfg-padre |
Gestione padre-figlio |
| 7 | CLIENTI | GES-PADRE-2 | tm-cfg-padre2 |
Gerarchia padre livello 2 |
| 8 | BDP | PRG-CREAZIONE-BDP | tm-cfg-prg-creazione-bdp |
Modo creazione BdP (A/B/C) |
| 9 | ORDINI | GESTIONE-FL-LAVORATO | tm-cfg-gestione-fl-lavorato |
Flag ordine lavorato |
| 10 | ORDINI | GESTIONE-TABLET | tm-cfg-gestione-tablet |
Gestione tablet/locazioni |
| 11 | MODULA | DB-FRONTIERA | tm-cfg-modula-db-frontiera |
Integrazione Modula |
| 12 | BDP | BDP-MERCI-LOTTO | tm-cfg-bdp-merci-lotto |
BdP per lotto ("B"=si) |
| 13 | PRODUZIONE | CAU-AVA-PF | tm-cfg-cau-ava-pf |
Causale avanzamento PF |
| 14 | PRODUZIONE | MAG-LOGISTICO | tm-cfg-mag-logistico |
Magazzino logistico |
| 15 | - | CMA.N-SEQUENZA | tm-cfg-tab-cma |
Sequenza tabella CMA (10 elem.) |
Chiave aggiuntiva letta separatamente:
| # | Gruppo | Chiave | Variabile | Descrizione |
|---|--------|--------|-----------|-------------|
| - | ORDINI | TAB-OPE-SBLOCCO | tm-cfg-tab-ope-sblocco | Operatori abilitati allo sblocco (max 10) |
Programmi chiamati¶
| Programma | Operazione | Contesto |
|---|---|---|
| COGM86 | Creazione BdP (modo A) | F1 standard |
| COGG6A | Creazione BdP (modo B) | F1 alternativo |
| COGMA1 | Gestione ordine / Evasione DDT | F3 / F1 pasticceria |
| COGM88 | Fatturazione | F11 |
| COGO45 | Chiusura ordine | SF6 |
| COGD53 | Invio picking list Modula | Dopo creazione BdP con lotto |
| COGSA0 | Operazioni BdP | CREA-BDP-SINGOLO, AGGIUNGI-A-BDP |
| COGS26 | Creazione documenti magazzino | ACCANTONA-VERS |
| COGD27 | Preparazione transito DDT | Evasione pasticceria |
| COGD76 | Stampa BdP | Dopo creazione |
| WMSW01 | Gestione locazioni WMS | "esporta-giacenze-loc" (classe M), assoc. partenza (classe P), "scarico-locazione" (classe M), "scarico-entrata" (classe A) |
| WMS002 | Browser/selettore locazioni | F8 su campo locazione (classe "M" = locazioni merce) |
Tabelle coinvolte¶
| Tabella | Prefisso | Utilizzo |
|---|---|---|
| COGTESOR | tor- | Testata ordini (lettura, filtro) |
| COGRIGOR | ror- | Righe ordini (lettura, creazione su sdoppia) |
| COGCONOR | cor- | Consegne ordini (lettura, creazione su sdoppia) |
| COGTESBP | tbp- | Testata BdP (lettura, aggiornamento provvisorio) |
| COGRIGBP | rbp- | Righe BdP (ricerca collegati, verifica lotto) |
| COGMOMAG | mom- | Movimenti magazzino (lettura DDT carico) |
| COGTRANS | - | File transito per griglia |
| COGDBASE | dba- | Distinta base (espansione componenti) |
| COGGENER | gen- | Raccordo generico (tipo "EB" = BdP-DDT) |
| COGMERLT | mlt- | Lotti merce |
| COGLGLOT | lgl- | Legame lotti (padre-figlio cross-magazzino) |
| COGISIRR | isr- | Registro ISIR (riconsegne) |
| COGMERCI | mer- | Anagrafica merci |
| COGRORA2 | r2- | Righe ordine estese |
| COGRORAG | rag- | Righe ordine aggiuntive |
| COGRIGCM | rcm- | Cicli/materiali riga |
| COGPRENO | prn- | Prenotazioni |
Costanti griglia¶
k-max-ele-tab = 900: massimo righe transitotab-merci-ordine: max 800 elementi (per cascata disponibilita)tab-bdp: max 999 (BdP creati nella sessione)wtab-bdp: max 9999 (BdP collegati a DDT carico)tab-dm: max 999 (merci da DDT carico o da giacenza locazione — struttura condivisa)