Vai al contenuto

COGM45 - Duplicazione Bolle

Funzione

Crea una copia esatta di una bolla di consegna gia' emessa su un magazzino e cliente di destinazione diversi. Duplica la testata (COGTESBO), tutte le righe di movimento (COGMOMAG) e le descrizioni aggiuntive (COGDESAG). Per ogni riga duplicata aggiorna la giacenza del magazzino di destinazione tramite COGU12.

  • Magazzino > Uscite > Bolle Accompagnatorie > Duplicazione bolle

Tabelle e file principali

Tabella Descrizione Accesso
FEURTAB Tabella file/directory R
COGTESBO Testata bolle (file origine, prefisso oritesbo) R - tramite directory configurata
COGMOMAG Righe movimenti magazzino (file origine, orimomag) R - tramite directory configurata
COGDESAG Descrizioni aggiuntive (file origine, oridesag) R - tramite directory configurata
COGTESBO Testata bolle (file destinazione) W - da cogm45.select
COGMOMAG Righe movimenti (file destinazione) W - da cogm45.select
COGDESAG Descrizioni aggiuntive (file destinazione) W - da cogm45.select

Il programma apre due istanze separate di COGTESBO, COGMOMAG e COGDESAG: una in lettura (il file di origine dalla directory configurata, con prefisso ori-) e una in scrittura (il file principale del gestionale, da cogm45.select).

Chiavi di accesso ai file origine

  • oritesbo: chiave primaria o-tes-chia3 (mag+anno+tipob+bolla), chiavi secondarie per data, agente, numero bolla fornitore, tipo cliente/nonno/flagfat.
  • orimomag: chiave primaria o-mag-chiap (mag+anno+tipob+bolla+prog), chiavi secondarie per articolo e giacenza.
  • oridesag: chiave o-dag-chia (R/M + mag + anno + tipo + bolla + prog).

Logica principale

Flusso di elaborazione

  1. Configurazione directory: il programma legge la directory di origine degli archivi (a4-conf) tramite x99-src-cfg e x99-rd-cfg. Se non configurata, chiede all'operatore. Apre i tre file origine in input.

  2. Raccolta dati (maschera cogm45-01.scr):

  3. a-tm-cli: cliente destinatario (util-s65, F1 per configurazione)
  4. a-tm-doc-mag: magazzino della bolla origine
  5. a-tm-doc-ann: anno della bolla origine (F8 calendario, util-s52)
  6. a-tm-doc-tip: tipo documento origine
  7. a-tm-doc-num: numero bolla origine
  8. a-tm-new-mag: magazzino di destinazione (F8 ricerca tramite send-w36)

  9. Conferma e ricerca numerazione: dopo la conferma (acc-conf), il programma:

  10. Copia i dati della bolla origine in tm-ori-bolla
  11. Chiama COGS25 per ottenere il prossimo numero progressivo per il magazzino/anno/tipo destinazione (codice 3 per tipo "I", 6 altrimenti)
  12. Se la numerazione non viene trovata o e' zero, interrompe con messaggio di errore

  13. Duplicazione testata (c-05-wr): legge o-tes-rec da oritesbo e scrive tes-rec su COGTESBO destinazione, aggiornando magazzino, numero bolla e cliente (tes-nonno).

  14. Duplicazione righe (loop s1-20-loop): scorri orimomag con start sulla chiave primaria (mag+anno+tipob+bolla, prog=0), per ogni riga:

  15. Verifica che la riga appartenga ancora alla bolla origine (rottura su mag/anno/tipo/bolla)
  16. Copia o-mag-recz in mag-recz, aggiorna magazzini (mag-mag1/2/3/5), numeri bolla (mag-bolla1-6), cliente (mag-nonno, mag-nonno6)
  17. Scrive su COGMOMAG destinazione
  18. Aggiorna la giacenza tramite COGU12 (u12-tipo = "G", usa mag-qtamagaz, tes-causale, mag-entrusc)

  19. Duplicazione descrizioni aggiuntive (c15-dag, loop c50-dag): scorri oridesag con start su o-dag-chia (R + mag + anno + tipo + bolla + prog=0), per ogni descrizione:

  20. Verifica appartenenza alla bolla origine
  21. Copia o-dag-rec in dag-rec, aggiorna magazzino e numero bolla
  22. Scrive su COGDESAG destinazione

  23. Finestra di esito (c99-dag): mostra il numero della bolla creata tramite DIALOGS. Opzioni:

  24. Esc: torna all'inizio per nuova duplicazione
  25. F3: apre COGV56 sulla nuova bolla (tramite v11-called = "COGV56-CALLED")

Struttura di linkage

Il programma puo' ricevere in linkage (da wcont.cpy) la struttura util-v11 con: - v11-called: stringa chiamante - v11-doc: riferimento documento (mag, ann, tip, num)

Al termine, se F3, popola v11-called = "COGV56-CALLED" e v11-doc con i dati della bolla creata prima di chiamare COGV56.

Chiamate principali

Programma Scopo
COGS25 Ricerca prossimo numero progressivo bolla
COGU12 Aggiornamento giacenza per ogni riga duplicata
COGV56 Gestione bolla creata (apertura opzionale al termine)
DIALOGS Finestra di dialogo esito duplicazione

Note tecniche

  • I tre file di origine (oritesbo, orimomag, oridesag) usano la copybook standard (cogtesbo.cpy, cogmomag.cpy, cogdesag.cpy) con replacing per rinominare tutti i campi con prefisso o-, evitando conflitti con i file destinazione dichiarati in cogm45.select.
  • La directory di origine e' configurabile: in ambienti con archivi separati (es. storico vs. corrente) il programma puo' duplicare bolle da un archivio diverso da quello di produzione.
  • Il campo tm-tip-ana e' inizializzato a "C" (cliente) ad ogni ciclo.
  • Il codice personalizzazione k-personal.cpy e' incluso ma non risulta attivamente utilizzato nella logica di duplicazione.
  • L'aggiornamento giacenza usa sempre il tipo "G" (scarico normale); la quantita' e' mag-qtamagaz (quantita' di magazzino gia' con segno dalla riga originale).