Vai al contenuto

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 Screens
  • tran-s26.fd, tran-s26.cpy -- File di transito per righe movimenti
  • cogmerlt.cpy, cogmerlt.fd, cogmerlt.k01 -- Lotti merce (con replacing per duplicato d-cogmerlt)
  • logfile.fd, logfile.cpy -- Gestione log operazioni
  • k-u10.cpy, utilu10.cpy -- Definizioni utility valute
  • cogazien.cpy -- Dati azienda
  • utils26.cpy -- Interfaccia per COGS26
  • utilw36.cpy -- Interfaccia per WIN036 (selezione magazzino)
  • utilw64.cpy -- Interfaccia per finestre accessorie
  • utilncnf.cpy -- Interfaccia per RNEWCONF
  • utilnpad.cpy -- Interfaccia per NOTEPAD
  • utildlg.cpy -- Interfaccia per DIALOGS
  • l-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)

  1. Scansione magazzini (a-10-loop): scorre tutti i magazzini di tipo "V" (viaggiante) su COGMAGAZ
  2. Per ogni magazzino viaggiante (a-20-ini / a-20-loop):
  3. Posiziona su COGSLMAG con chiave 2 (magazzino + merce) per il magazzino viaggiante
  4. 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"), esegue search-lotti-sub-msal
    • Altrimenti aggiunge la riga direttamente al file di transito S26
  5. 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:

  1. Ricerca con capienza (cerca-lotto-su-sede-sub-qta-cercata con k-ricerca-con-capienza): cerca sul magazzino sede un lotto con lo stesso codice e d-mlt-qta > 0 (giacenza positiva)
  2. Ricerca senza capienza (k-ricerca-senza-capienza): se non trova capienza sufficiente, accetta anche lotti con giacenza negativa
  3. 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