COGMAM -- Compensazione Giacenze¶
Sorgente: cbl/cogmam.cbl | Tipo: Programma con interfaccia grafica | Program-ID: COGMAM
Menu: Magazzino > Giacenze & Sottoscorta > Compensazione Giacenze
Scopo¶
Crea automaticamente i movimenti di trasferimento per compensare le giacenze negative nei magazzini viaggianti. Per ogni magazzino di tipo "V" (viaggiante), scorre i saldi e, dove la giacenza e' negativa, genera un documento di trasferimento dal magazzino sede al magazzino viaggiante.
Interfaccia utente¶
Maschera di filtro (tab-maschera)¶
| Campo | Tipo | Descrizione |
|---|---|---|
tm-mag |
x(01) | Magazzino sede di partenza (obbligatorio, deve essere sede operativa) |
tm-da-data |
9(08) | Data operazione (AAAAMMGG) |
tm-n-mer-elab |
9(08) | Contatore merci elaborate |
tm-n-lot-elab |
9(08) | Contatore lotti elaborati |
tm-n-doc-crea |
9(08) | Contatore documenti creati |
tm-n-mov-crea |
9(08) | Contatore movimenti creati |
tm-note |
x(2000) | Area note di avanzamento elaborazione |
Tasti funzione¶
| Tasto | Funzione |
|---|---|
| F1 | Modifica configurazioni (RNEWCONF) |
| F3 | Conferma e avvia elaborazione |
| F8 | Aiuto selezione magazzino (WIN036) |
| ESC | Uscita |
File e Tabelle¶
| File/Tabella | Copybook | Uso |
|---|---|---|
| COGSLMAG | cogmam.fd (via select) | Saldi magazzino (scansione per mag + merce, chiave 2) |
| COGMAGAZ | cogmam.fd (via select) | Anagrafica magazzini |
| COGMAGAG | cogmagag.fd | Dati aggiuntivi magazzino (flag sede operativa) |
| COGMERCI | cogmam.fd (via select) | Anagrafica merci |
| COGMERLT | cogmerlt.fd (duplicato come d-cogmerlt) | Lotti merce (lettura sede, scrittura nuovo lotto) |
| TRAN-S26 | tran-s26.fd, tran-s26.cpy | File di transito per righe documento |
| LOGFILE | logfile.fd, logfile.cpy | File di log per anomalie |
| FEURTAB | feurtab.fd / cogfiles.cpy | File tabelle Euro |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| COGS26 | Inserimento documento di trasferimento |
| COGU10W | Utility valute/divisioni |
| RNEWCONF | Lettura configurazioni |
| COPIAF | Copia file (per log su client) |
| NOTEPAD | Apertura file di log |
| DIALOGS | Finestra di dialogo (log anomalie) |
| FESTA | Verifica giorno festivo (non usato direttamente, presente nel codebase) |
Copybook principali¶
cogmam.select,cogmam.fd,cogmam.wrk,cogmam.prc,cogmam.decla,cogmam-01.scr-- Definizioni generate da Screenstran-s26.fd,tran-s26.cpy-- File di transito per righe movimenticogmerlt.cpy,cogmerlt.fd,cogmerlt.k01-- Lotti merce (con replacing per duplicato d-cogmerlt)logfile.fd,logfile.cpy-- Gestione log operazionik-u10.cpy,utilu10.cpy-- Definizioni utility valutecogazien.cpy-- Dati aziendautils26.cpy-- Interfaccia per COGS26utilw36.cpy-- Interfaccia per WIN036 (selezione magazzino)utilw64.cpy-- Interfaccia per finestre accessorieutilncnf.cpy-- Interfaccia per RNEWCONFutilnpad.cpy-- Interfaccia per NOTEPADutildlg.cpy-- Interfaccia per DIALOGSl-copiaf.cpy,u-copiaf.cpy-- Interfaccia per COPIAF
Logica di Elaborazione¶
Prerequisito¶
Il programma verifica all'avvio che la configurazione areaapp / modo-trasferimento sia "N" (a consuntivo). Se il valore e' diverso, mostra un messaggio e non consente di proseguire.
Flusso principale (a-elabora thru ex-a)¶
- Scansione magazzini (
a-10-loop): scorre tutti i magazzini di tipo"V"(viaggiante) su COGMAGAZ - Per ogni magazzino viaggiante (
a-20-ini/a-20-loop): - Posiziona su COGSLMAG con chiave 2 (magazzino + merce) per il magazzino viaggiante
- Per ogni saldo con
msal-qta < 0(giacenza negativa):- Calcola la quantita' da compensare (
w-qta-tot = -1 * msal-qta) - Se l'articolo e' gestito a lotti (
mer-lotti = "S"), eseguesearch-lotti-sub-msal - Altrimenti aggiunge la riga direttamente al file di transito S26
- Calcola la quantita' da compensare (
- Quando ha accumulato abbastanza righe (max 200 per documento), crea il documento di trasferimento
Gestione lotti (search-lotti-sub-msal)¶
Per ogni lotto con giacenza negativa sul magazzino viaggiante:
- Ricerca con capienza (
cerca-lotto-su-sede-sub-qta-cercataconk-ricerca-con-capienza): cerca sul magazzino sede un lotto con lo stesso codice ed-mlt-qta > 0(giacenza positiva) - Ricerca senza capienza (
k-ricerca-senza-capienza): se non trova capienza sufficiente, accetta anche lotti con giacenza negativa - Creazione nuovo lotto (
crea-lotto-su-sede-sub-mlt): se nemmeno la ricerca senza capienza basta, crea un nuovo record lotto sul magazzino sede con giacenza zero
Creazione documento (create-s26-doc)¶
Chiama COGS26 con operazione "Inserimento":
- s26-mag = magazzino sede (partenza)
- s26-mag-ent = magazzino viaggiante (arrivo)
- s26-fl-trasferimento = "S"
- s26-fl-gia = "S" (aggiornamento immediato giacenze)
- Note: "Trasferimento su magazzino viaggiante: X"
File di transito S26¶
Il file di transito (tran-s26) e' un file indicizzato temporaneo che accumula le righe del documento. Ogni riga contiene:
- trs-s26-segno = "E" (entrata)
- trs-s26-merce = codice merce
- trs-s26-qta = quantita' da trasferire
- trs-s26-lotto-entrata / trs-s26-lotto-uscita = progressivi lotto
Viene ricreato ad ogni cambio documento (max 200 righe per documento).
Configurazioni¶
| Gruppo | Parametro | Note |
|---|---|---|
| areaapp | modo-trasferimento | Deve essere "N" (a consuntivo) per poter usare la funzione |
| trascogm20 | euta-c024-cau-usc | Causale di uscita per i trasferimenti |
| trascogm20 | euta-c024-cau-ent | Causale di entrata per i trasferimenti |
Storico modifiche¶
| Build | Descrizione |
|---|---|
| 2026/0426 | TASK-4553: ripristinato controllo sede operativa sul magazzino. Il vecchio controllo su magz-fl-sede (disattivato da TASK-1157) e' stato sostituito con la lettura di magg-fl-sede-operativa dalla tabella COGMAGAG. Se il magazzino non e' marcato come sede operativa, la validazione blocca l'elaborazione con messaggio "Il Magazzino deve essere sede operativa". |
Documentazione tecnica -- 2026-04-19