Vai al contenuto

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:

  1. Creazione BdP provvisorio (c-crea-bdp): BdP con flag provvisorio "P"
  2. Movimento magazzino (c-crea-versamento-accantonato): crea documento via COGS26 con causale tm-cfg-cau-ava-pf
  3. Collegamento lotti (c-collega-lotti): inserisce record COGLGLOT che collega lotto padre (mag principale) a lotto figlio (mag logistico)
  4. Raccordo BdP-DDT (c-crea-bdp): scrive COGGENER(EB) per legare BdP al DDT di carico
  5. 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

  1. 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
  2. Nessuna validazione del codice locazione: x-controlla-tm-locazione (riga 4989) accetta qualsiasi valore. Un codice errato produce "nessuna giacenza" anziche' "locazione inesistente"
  3. 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
  4. Locazione fittizia di entrata: la creazione dell'entrata sulla locazione fittizia e' delegata interamente a WMSW01 (non visibile in COGF64)

Completamento carico (COMPLETA-CARICO)

  1. a2-leggi-carico: legge il DDT di carico (COGMOMAG), costruisce tab-dm con le merci e quantita
  2. Espande distinte base (COGDBASE) per trovare i componenti
  3. Sottrae quantita gia evase su BdP collegati (cerca-bdp-collegati)
  4. Filtra la griglia: mostra solo ordini con merci presenti nel carico
  5. Pre-compila le quantita da evadere

Disponibilita (b-calcola-qta-dsp)

Calcolo a cascata della giacenza disponibile per ogni merce:

  1. Legge giacenza da COGTRANS (gia calcolata in a2-aggiorna-cogtrans)
  2. Per ogni riga del transito in ordine di priorita:
  3. qta-dsp = giacenza - somma(qta gia assegnate alle righe precedenti)
  4. Se tm-filtro-disp = "S" e qta-dsp <= 0: nasconde la riga
  5. Se tm-filtro-disp = "F" e qta-dsp < qta-residua: nasconde la riga
  6. Se modula-db-frontiera = "S" e bdp-merci-lotto = "B": pre-compila qta-eva = min(qta-residua, qta-dsp)

Sdoppia riga (x5-sdoppia-riga)

Permette di dividere una riga consegna in due:

  1. Crea nuova riga ordine (COGRIGOR) con quantita residua
  2. Copia record collegati (COGRORA2, COGRORAG, COGRIGCM)
  3. Crea nuova consegna (COGCONOR) con numero progressivo successivo
  4. Aggiorna la riga originale con la quantita ridotta

Riconsegna (SF9 - z-riconsegna-riga)

  1. Aggiorna registro ISIR (COGISIRR): marca come reso (isr-fl-reso = "S")
  2. Rimuove flag provvisorio dal BdP (COGTESBP): tbp-fl-provv = " "

Fatturazione (F11 - a6-fattura)

  1. Raccoglie BdP congruenti: stesso magazzino, causale, condizioni pagamento, porto, vettore, destinazione
  2. 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 transito
  • tab-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)