Vai al contenuto

SWA018: Importazione trasferimenti da APP

Programma che dovrà essere schedulato ed esportare

Origine Destinazione Cosa estrarre
COGMAGAZ APCOGMAGAZ Anagrafica magazzini
COGSLMAG ARPARMAG Giacenze per magazzino
Ultimo trasferimento ARPARMAG Le quantità dell'ultimo trasferimento effettuato per ciascun magazzino vengono aggiornate su un apposito campo di ARPARMAG
ARPTRTES
ARPTRRIG
COGTESBO
COGMOMAG
Trasferimenti effettuati da APP verso il gestionale

Importazione trasferimenti

A - Importazione trasferimenti da APP * Eseguire un comando SQL diretto che permetta di selezionare i record di ARPTRTES con A-TRTES-AGG-APP = "A". * Per ciascun record trovato preparare e inizializzare il file temporaneo COGMAE-T-DETTAGLIO * Eseguire un comando SQL diretto che permetta di selezionare tutti i record di ARPTRRIG collegati alla testata letta; per ciascuno creare un record sul file temporaneo:

Nome campo Note
T-D-COGMAE-PROG Nuovo progressivo di riga
T-D-COGMAE-MERCE A_TRRIG_MERCE
T-D-COGMAE-QTA A_TRRIG_QTA
T-D-COGMAE-SN A_TRRIG_SN
  • Al termine eseguire una chiamata a COGMAE passando i parametri
Nome campo Note
COGMAE-OPE "INS-BATCH"
COGMAE-I-MAG-SEDE A-TRTES-MAG-SEDE
COGMAE-I-MAG-VIAG A-TRTES-MAG-VIAGGIANTE
COGMAE-I-TIPO-TRASF A-TRTES-TIPO
COGMAE-I-DATA A-TRTES-DATA

All'uscita restituirà COGMAE-O-ESITO; se contiene: * "N": inserimento non riuscito: * Inviare una mail all'indirizzo configurato in email-segnalazioni-operative, allegando il file di log generato da COGMAE * Proseguire con il trasferimento da aggiornare successivo * "S": inserimento andato a buon fine; proseguire A questo punto aggiornare il record ARPRTES impostando:

Nome campo Note
A-TRTES-AGG-APP "N"
A-TRTES-KEY-SEDE Se A-TRTES-TIPO vale:


A-TRTES-KEY-MAG-VIAGGIANTE Se A-TRTES-TIPO vale:


A.1 - Stampa tentata vendita Dopo l'acquisizione di un trasferimento per tentata vendita, si dovrà eseguire la stampa sulla periferica configurata in periferica-stampa-tentata-vendita. Questo processo deve essere eseguito se la configurazione è <> 0 I trasferimenti da stampare sono quelli di tentata vendita, ovvero: * Magazzino di destinazione = magazzino viaggiante "non furgone attrezzato": * Cercare sulla tabella ASNVEICL un veicolo avente AVEI-MAG = codice magazzino di destinazione * Se AVEI-TIPO-VEICOLO <> "F", allora innescare la stampa: * chiamata a COGPA4 passandogli il riferimento al documento da stampare, e la periferica trovata in configurazione. C - Aggiornamento APSTATOSYN Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAG"

e aggiornare i dati:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAG"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO Sommare 1 all'ultimo ID aggiornato

Esportazione magazzini

A - Esportazione magazzini Id Sincronizzazione magazzini Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "COGMAGAZ"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMAGAZ"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO 1

Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) A.0 - Gestione interventi pre-chiusi La giacenza dei magazzini viaggianti potrebbe non essere corretta: non comprende le quantità già movimentate dagli interventi pre-chiusi: il movimento di magazzino e la modifica alla giacenza avvengono al momento della chiusura vera e propria dell'intervento. In questa sezione quindi dovremo cercare i materiali movimentati sugli interventi pre-chiusi e creare con questi un file di transito "T-INTERVENTI-PRE-CHIUSI" composto da: * T-IPC-CHIA1: * T-IPC-CLASSE: classe magazzino (Principale/Secondario) * T-IPC-TIPO: Tipo magazzino (per i magazzini secondari) * T-IPC-MAG: Codice Magazzino * T-IPC-MERCE Merce * T-IPC-QTA: quantità A.0.1 - Ricerca interventi pre-chiusi Ricerca su ASNINTES per tutti gli interventi con ACIT-STATO = "P", usando ACIT-CHIA6. Per ciascun intervento valido cerchiamo le righe materiali su ASNAPPMT. Qui, per ciascuna riga dovremo fare le stesse valutazioni fatte da ASN351 per capire se la riga deve movimentare la giacenza, su quale magazzino, e con quale segno (entrata/uscita). Quindi per ciascun movimento che interessa la giacenza, aggiorniamo il file di transito con le quantità "pre-chiuse". Il risultato potrebbe essere il seguente:

Tipo magazzino Codice magazzino Merce Qta Note
Principale 1 M1 5 Uscita di 5 pezzi dal magazzino principale (solitamente se la causale di movimentazione prevede la movimentazione diretta di un magazzino)
Principale A M1 3 Uscita di 3 pezzi dal magazzino "A" (magazzino viaggiante): il caso più tipico
Principale A M2 -1 Entrata di 1 pezzi su magazzino "A" (magazzino viaggiante): causale di movimentazione di entrata
Secondario EABC M1 4 Uscita di 4 pezzi dal magazzino secondario di tipo "Esterno" "ABC" (magazzino viaggiante): potrebbe essere se configurata la gestione dei magazzini secondari, come progresso; vedi configurazione tecnici-uso-mag-secondari

Il contenuto del file sarà usato nelle fasi di esportazione giacenze "B" e "D" A.1 - Esportazione magazzini principali A.1.1 Id Sincronizzazione giacenze magazzini principali Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPARMAG"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAG"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO 1

Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) A.1.2 Ricerca dati * Scorrere COGMAGAZ con MAGZ-TIPO = "M"; per ciascun record letto: * Ricerca del record estensione su COGMAGAG * Ricerca del corrispondente record su APCOGMAGAZ per l'azienda attiva;

Dato Descrizione
A-MAGZ-AZIENDA Codice azienda
A-MAGZ-TIPO MAGZ-TIPO
A-MAGZ-COD MAGZ-COD
    • se: * Non esiste: inserirlo * Esiste: * confrontare il contenuto dei dati variabili: * *-NOME * *-VAL * Se almeno uno è diverso, aggiornare il record Informazioni con cui inserire/aggiornare un record su APCOGMAGAZ:
Nome campo Note
A-MAGZ-AZI Codice azienda
A-MAGZ-TIPO MAGZ-TIPO
A-MAGZ-COD MAGZ-COD
A-MAGZ-NOME MAGZ-NOME
A-MAGZ-ID-SINCRO A-SYN-ID-SINCRO
A-MAGZ-FL-CANC MAGZ-VAL
A-MAGZ-FL-TIP MAGZ-FL-TIP

Per ciascun magazzino considerato, effettuare anche * B - Esportazione giacenze magazzini interni A.1.3 Aggiornamento id sincronizzazione Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAG"

e aggiornare i dati:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAG"
A_SYN_DA_GES_DATA Data/ora di aggiornamento maggiore trovata sui record esportati
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Sommare 1 al valore precedente

Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMAGAZ"

e aggiornare i dati:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMAGAZ"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Sommare 1 al valore precedente

A.2 - Esportazione magazzini secondari A.2.1 Id Sincronizzazione giacenze magazzini principali Su POSTGRES, tabella APSTATOSYN, leggere il record relativo alla tabella/oggetto da sincronizzare "ARPARMAGEXT"; se il record non esiste, crearlo impostando

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAGEXT"
A_SYN_DA_GES_DATA 0
A_SYN_DA_GES_ORA 0
A_SYN_DA_ID_SINCRO 1

Qui otterremo due informazioni importanti: * Data/ora ultima esportazione da gestionale a postgres (A_SYN_DA_GES_DATA e A_SY_DA_GES_ORA) * Prossimo ID sincronizzazione da memorizzare sulla tabella (A_SYN_ID_SINCRO) A.2.2 Ricerca dati * Scorrere COGMAGPE, per tutti i magazzini "esterni" (MGP-TIP = "E"); per ciascun record letto, * Ricerca del corrispondente record su APCOGMAGAZ per l'azienda attiva;

Dato Descrizione
A-MAGZ-AZIENDA Codice azienda
A-MAGZ-TIPO MGP-TIP
A-MAGZ-COD MGP-COD
    • se il record su APCOGMAGAZ: * Non esiste: inserirlo * Esiste: * confrontare il contenuto dei dati variabili: * MGP-NOME <-> A-MAGZ-NOME * Se diverso, aggiornare il record Informazioni con cui inserire/aggiornare un record su APCOGMAGAZ:
Nome campo Note
A-MAGZ-AZI Codice azienda
A-MAGZ-TIPO MGP-TIP
A-MAGZ-COD MGP-COD
A-MAGZ-NOME MGP-NOME
A-MAGZ-ID-SINCRO A-SYN-ID-SINCRO (COGMAGAZ)
A-MAGZ-FL-CANC Impostare a "C" se MGP-FL-CLOSE = "C" o "D"
A-MAGZ-FL-TIP MGP-FL-UBICAZIONE

Per ciascun magazzino considerato, effettuare anche * D - Esportazione giacenze magazzini secondari A.2.3 Aggiornamento id sincronizzazione Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAGEXT"

e aggiornare i dati:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "ARPARMAGEXT"
A_SYN_DA_GES_DATA Data/ora di aggiornamento maggiore trovata sui record esportati
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Sommare 1 al valore precedente

C - Aggiornamento APSTATOSYN Aggiornare il record APSTATOSYN relativo a:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMAGAZ"

e aggiornare i dati:

Dato Contenuto
A_SYN_AZIENDA Codice azienda
A_SYN_TABELLA "COGMAGAZ"
A_SYN_DA_GES_DATA Data/ora di aggiornamento maggiore trovata sui record esportati
A_SYN_DA_GES_ORA
A_SYN_DA_ID_SINCRO Sommare 1 al valore precedente

B - Esportazione giacenze magazzini principali

Lo scopo di questa parte è di aggiornare la base dati esterna con le merci contenute nei magazzini principali. B.2 - Ricerca record da esportare * Sul record APCOGMAGAZ relativo al magazzino in esame, impostare * A-MAGZ-FL-TIP = "v" ("V" minuscola) * Eseguire B.2.1 - Esportazione giacenze * Eseguire B.2.2 - Esportazione ultimo trasferimento * Infine aggiornare nuovamente il record APCOGMAGAZ relativo al magazzino in esame, e impostare * A-MAGZ-FL-TIP = tipo magazzino originale B.2.1 - Esportazione giacenze Se la data odierna cade nello stesso mese della data contenuta in A_SYN_DA_GES_DATA, allora si esegue B.2.1.1; altrimenti si eseguira' l'esportazione mensile completa: B.2.1.2 B.2.1.1 - Esportazione giacenze aggiornate * Eseguire una query che azzeri A-ARMAG-QTA-ULTIMA-ENTRATA per tutti i record dove è > 0; contestualmente deve anche impostare A-ARMAG-ID-SINCRO = Id sincro attuale + 1 * Scansione di COGSLMAG per il magazzino in esame; considerare solo i record con * MSAL-FL-AGG = "S" oppure presenti nel file di transito T-INTERVENTI-PRECHIUSI (altrimenti quando si effettua la seconda parte dell'aggiornamento le qta pre-chiuse vengono continuamente tolte) * Per ciascun record valido: * Ricerca di un record su ARPARMAG impostando: * A-ARMAG-AZIENDA = azienda attiva * A-ARMAG-MAG = magazzino in elaborazione * A-ARMAG-MERCE = MSAL-MERCE * Se il record non esiste crearlo, poi aggiornare:

Nome campo Note
A-ARMAG-QTA-GIACENZA MSAL-QTA
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAG) + 1
A-ARMAG-QTA-IMPEGNATA MSAL-QTA-IMPEGNATA
A-ARMAG-QTA-ORDINATA MSAL-QTA-ORDINATA
A-ARMAG-QTA-PRENOTATA MSAL-QTA-PRENOTATA
      • Infine variare il record giacenza per azzerare il flag "aggiornato" MSAL-FL-AGG = "N" B.2.1.2 - Esportazione completa mensile
  • Eseguire una query che azzeri A-ARMAG-QTA-ULTIMA-ENTRATA per tutti i record dove è > 0; contestualmente deve anche impostare A-ARMAG-ID-SINCRO = Id sincro attuale + 1
  • Eseguire una query che azzeri A-ARMAG-QTA-GIACENZA per tutti i record dove e' > 0; contestualmente deve anche impostare A-ARMAG-ID-SINCRO = Id sincro attuale + 1
  • Scansione di COGSLMAG per il magazzino in esame; considerare tutti i record presenti
    • Per ciascun record valido:
      • Ricerca di un record su ARPARMAG impostando:
        • A-ARMAG-AZIENDA = azienda attiva
        • A-ARMAG-MAG = magazzino in elaborazione
        • A-ARMAG-MERCE = MSAL-MERCE
      • Se il record non esiste crearlo, poi aggiornare:
Nome campo Note
A-ARMAG-QTA-GIACENZA MSAL-QTA
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAG) + 1

Al termine aggiornare il record di APSTATOSYN relativo ad "ARPARMAG", aggiornando A_SYN_DA_GES_DATA con la data odierna B.2.2 - Esportazione ultimo trasferimento Come prima cosa, ricerca dell'ultimo trasferimento verso il magazzino viaggiante in esame: * Posizionarsi su COGTESBO impostando: * TES-MAG = magazzino in esame * TES-ANNO = 9999 * Scorrere all'indietro i record fino a trovare un documento con: * TES-TIPOB = "T" * Il primo movimento con MAG-ENTRUSC = "E" * Il documento che corrisponde sarà l'ultimo trasferimento di carico del magazzino viaggiante, quindi dovremo esportare le quantità sull'apposito campo di ARPARMAG: * Lettura di tutti i record di COGMOMAG del documento trovato; per ciascuno: * Leggere ARPARMAG: * A-ARMAG-AZIENDA = azienda attiva * A-ARMAG-MAG = magazzino in elaborazione * A-ARMAG-MERCE = MSAL-MERCE * Se il record non esiste crearlo, poi aggiornare:

Nome campo Note
A-ARMAG-QTA-ULTIMA-ENTRATA MAG-QTAMAGAZ
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAG) + 1

B.2.3 - Aggiornamento qta pre-chiuse Rileggere il file di transito T-INTERVENTI-PRE-CHIUSI, per tutti i record relativi al magazzino in elaborazione:

Nome campo Note
T-IPC-CLASSE "P"
T-IPC-TIPO " "
T-IPC-MAG Codice magazzino

Per ciascun record trovato con T-IPC-QTA <> 0: * Ricerca di un record su ARPARMAG impostando: * * * A-ARMAG-AZIENDA = azienda attiva * A-ARMAG-MAG = T-IPC-MAG * A-ARMAG-MERCE = T-IPC-MERCE * Se il record non esiste crearlo, poi aggiornare:

Nome campo Note
A-ARMAG-QTA-GIACENZA A-ARMAG-QTA-GIACENZA - T-IPC-QTA
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAG) + 1

D - Esportazione giacenze magazzini secondari

Lo scopo di questa parte è di aggiornare la base dati esterna con le merci contenute nei magazzini secondari. D.2 - Ricerca record da esportare * Sul record APCOGMAGAZ relativo al magazzino in esame, impostare * A-MAGZ-FL-TIP = "v" ("V" minuscola) * Eseguire B.2.1 - Esportazione giacenze * Infine aggiornare nuovamente il record APCOGMAGAZ relativo al magazzino in esame, e impostare * A-MAGZ-FL-TIP = tipo magazzino originale D.2.1 - Esportazione giacenze Per ora in questo giro non effettuamo il giro mensile come viene invece fatto nel punto B D.2.1.1 - Esportazione giacenze aggiornate * Scansione di COGSLKEY per il magazzino in esame, usando la chiave SLK-CHIA2 e impostando

Nome campo Note
SLK-TIP "M"
SLK-KEY-TIP MGP-TIP
SLK-KEY-COD MGP-COD

Considerare solo i record aggiornati dopo la data/ora memorizzata su APSTATOSYN(ARPARMAGEXT) (qui per ora non c'è il flag di aggiornamento come COGSLMAG), oppure presenti nel file di transito T-INTERVENTI-PRECHIUSI (altrimenti quando si effettua la seconda parte dell'aggiornamento le qta pre-chiuse vengono continuamente tolte) Per ciascuna record valido effettuare la lettura del record corrispondente su ARPARMAGEXT:

Nome campo Note
A-MGE-AZI Azienda attiva
A-MGE-MAG-TIP SLK-KEY-TIP
A-MGE-MAG-COD SLK-KEY-COD
A-MGE-MERCE SLK-MERCE

Se il record non esiste crearlo, poi aggiornare:

Nome campo Note
A-ARMAG-QTA-GIACENZA SLK-GIA
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAGext) + 1
A-ARMAG-QTA-IMPEGNATA 0
A-ARMAG-QTA-ORDINATA 0
A-ARMAG-QTA-PRENOTATA 0

D.3 - Aggiornamento qta pre-chiuse Rileggere il file di transito T-INTERVENTI-PRE-CHIUSI, per tutti i record relativi al magazzino in elaborazione:

Nome campo Note
T-IPC-CLASSE "S"
T-IPC-TIPO MGP-TIP
T-IPC-MAG MGP-COD

Per ciascun record trovato con T-IPC-QTA <> 0 effettuare la lettura del record corrispondente su ARPARMAGEXT:

Nome campo Note
A-MGE-AZI Azienda attiva
A-MGE-MAG-TIP T-IPC-TIPO
A-MGE-MAG-COD T-IPC-MAG
A-MGE-MERCE T-IPC-MERCE

Se il record non esiste crearlo, poi aggiornare:

Nome campo Note
A-ARMAG-QTA-GIACENZA A-ARMAG-QTA-GIACENZA - T-IPC-QTA
A-ARMAG-ID-SINCRO ID sincro attuale (ARPARMAGext) + 1

Estratto da documentazione interna ClickUp