Vai al contenuto

SWA017 - Importazione DDT/documenti di magazzino da AreaAPP

Sorgente: cbl/swa017.cbl | Program-ID: SWA017 | Tipo: Batch/interattivo (importazione SQL -> ISAM)

Menu: Magazzino > Archivi & Tabelle > Importazioni > DDT da APP


Scopo

Legge dalla base dati AreaAPP (tabelle SQL apcogtesbo e apcogmomag) i documenti di magazzino marcati a_tes_agg_app = "A" per l'azienda configurata, esegue i controlli formali, scrive la testata DDT (cogtesbo) e i movimenti (cogmomag) nel gestionale, marca i record AreaAPP come trasferiti (a_tes_agg_app = "N"), archivia gli eventuali PDF e notifica via email le anomalie.


File e tabelle

Lato AreaAPP (SQL via sql-interface)

Tabella Tipo Modalita' Descrizione
APCOGTESBO SQL (postgres via apcogtesbo-sql-*) Select / Update Testate documenti AreaAPP
APCOGMOMAG SQL (postgres via apcogmomag-sql-*) Select Movimenti documento AreaAPP

Lato gestionale (ISAM)

File Tipo Modalita' Descrizione
FEURTAB ISAM Input Parametri azienda
COGTESBO ISAM I-O Testata DDT/documento magazzino (scrittura)
COGMOMAG ISAM I-O Movimenti magazzino (scrittura)
COGGEANA ISAM Input Anagrafica clienti (controllo nonno/padre)
COGTABEL ISAM Input Tabelle (causali 15, pagamenti 14, tipo riscossione 22, contatori 66)
COGMERCI ISAM Input Anagrafica articoli
COGNUMER ISAM I-O Contatore numerazione DDT
COGMERLT ISAM Input Merci-lotti (chiave k02)

Copybook utilizzate

Copybook Descrizione
swa017.select, swa017.fd, swa017.wrk, swa017.prc, swa017.decla Screen designer
apcogtesbo.fd/cpy, apcogmomag.fd/cpy Record AreaAPP (con direttiva $xfd file=... per generazione XFD per SQL)
apcogtesbo.k01/k02/k03, apcogmomag.k01 Chiavi
apcogtesbo.k01-agg, apcogmomag.k01-agg Stub di aggiornamento (auto-inclusi da Screens)
sql-decla-ws.cpy, sql-interface-prc.cpy Interfaccia SQL generica
apcogtesbo-sql-ws.cpy, apcogtesbo-sql-prc.cpy, apcogmomag-sql-ws.cpy, apcogmomag-sql-prc.cpy Layer SQL specifico per le 2 tabelle (marcati deb)
k-u10.cpy, k-personal.cpy Costanti divisa / personalizzazioni
wstato, wgrave, wopenf, wnscr, cogazien Working storage standard
utilncnf RNEWCONF
utilu06 COGU06 (archiviazione PDF)
utilu10, utilu12 Utility divisa / contabilita'
utilv64l, utilp41 Stampa label / etichette
utilcrms08, utilsview CRM / SView
utilmymail, utilpost Mail / POSTA
utilftp, l-copiaf.cpy, u-copiaf.cpy FTP / COPIAF
utilgesdebug, gesdebug.cpy, statolog.cpy Tracciatura log (gesdebug-apri-principale, gesdebug-write-info, gesdebug-chiudi)
utilf45, getdcont.cpy, cogmerlt.k02 Linkage utility
wcont, wcont1 Linkage standard
stato, stato1, winmsg, grave, opengen, mmmask Infrastruttura standard

Logica di elaborazione

Inizializzazione (m-00)

  • ctr-abil, open-files, rd-azi, x99-src-cfg (lettura RNEWCONF).
  • Se wo-parametro = "D" -> chiede data via maschera (w-richiedo-date = "D").
  • Apre tracciatura log (gesdebug-apri-principale).
  • Verifica tm-cfg-attiva-areaapp = "S" (chiave abilita.attiva-areaapp); se non attivo -> messaggio e uscita.
  • Stabilisce connessione SQL (init-bin-sub-tm-cfg-bin-tipo).

Configurazione RNEWCONF (x99-src-cfg)

Legge 18 chiavi da RNEWCONF: - abilita.attiva-areaapp - areaapp.cod-azienda - areaapp.db-conn-string (idx 1, 2, 3) - areaapp.db-log-level - areaapp.swa017-path-spedizione, swa017-crea-ftp, swa017-codice-server-ftp - arc-ott.path-apri-file - areaapp.email-segnalazioni-operative (idx 1-5) - causali.causale-ins-uscita-i - progcogv51.euta-c041-asp - AWS.ATTIVAZIONE-BUCKET

Elaborazione (b-elabora)

  1. Scan apcogtesbo: query SQL SELECT * FROM apcogtesbo WHERE a_tes_azi = $1 AND a_tes_agg_app = $2 con valori tm-cfg-cod-azienda e "A", ordinato per azienda.
  2. Per ogni record con a_tes_agg_app = "A" e a_tes_tip = "I":
  3. controlli-vari: accumula errori in w-txt (4000 byte):
    • DDT gia' presente su COGTESBO (chiave mag/anno/tipo/numero)
    • Cliente nonno inesistente in COGGEANA
    • Cliente padre inesistente (se valorizzato)
    • Causale inesistente in COGTABEL tipo 15
    • Anno (a-tes-ann) diverso da anno della data
    • Se a-tes-fl-crea-fat = "S": pagamento (tipo 14) e tipo riscossione (tipo 22) devono esistere
    • Documento senza righe valide (calcola-imp-pagato verifica almeno una riga con a-mag-segno = "U" e merce esistente)
  4. Se ok-valido = "S": scrivi-cogtesbo (write testata, agente da COGGEANA, porto FRANCO, ecc.) + scrivi-cogmomag (write righe movimenti) + marca a-tes-agg-app = "N" (update SQL) + altre-operazioni
  5. Se w-txt contiene errori -> invia-email via POSTA agli indirizzi tm-cfg-segnalazioni-op1..5
  6. Se az-arc-ott = "S": importazione-pdf-e-archiviazione (scarica PDF da AreaAPP e archivia via COGU06)
  7. Riallineamento contatore: legge COGNUMER tipo 12 (chiave mag/anno/cod=3); se tes-bolla3 > num-num + 1 riallinea il contatore.

Calcolo importo (calcola-imp-pagato)

Scan SQL SELECT * FROM apcogmomag WHERE a_mag_azi/mag/ann/tip/num = .... Per ogni riga con a_mag_segno = "U" e merce esistente in COGMERCI, somma a_mag_valore in w-a-mag-valore e conta in w-conta.

Chiusura (fine / z-chiudi)

  • Chiude file, connessione SQL (close-bin-sub-tm-cfg-bin-tipo).
  • Chiude tracciatura log.

Chiamate a sottoprogrammi

Programma Utilizzo
RNEWCONF Lettura configurazioni
COGU12 Calcolo importi/totali documento
COGV64L Stampa label/etichette per documento
COGP41 Stampa formati P41
COPIAF Copia file (PDF, output)
SVIEW Visualizzazione file
FTP Trasferimento FTP per spedizione documenti
POSTA Invio email di segnalazione
COGU06 Archiviazione PDF nell'archivio ottico
Layer SQL apcogtesbo-sql-*, apcogmomag-sql-* Operazioni CRUD verso PostgreSQL (rdnxt, rwr, ecc.)

Note implementative

  • Programma del filone SWA* (importazioni da AreaAPP / AreaGate): vedi anche ASN015 per altri pattern simili.
  • Pattern SQL standard: sql-precall -> sql-format-val-d-... -> sql-setp-... (parametri posizionali) -> sql-statement -> sql-prepare-id-... -> sql-select -> sql-set-statusfi. Lo scan e' un perform until w-fine-file or chiavi non corrispondono con rdnxt interno.
  • Filtro fisso a-tes-tip = "I": vengono importati solo inserimenti (le altre operazioni AreaAPP non sono gestite da questo programma).
  • Il flag a-tes-agg-app ha valori "A" (da aggiornare) -> "N" (gia' aggiornato).
  • Lo schema XFD per le tabelle SQL e' generato tramite la direttiva $xfd file=apcogtesbo / $xfd file=apcogmomag davanti alle FD.
  • Tracciatura su file di log gestito da gesdebug.cpy (chiamate gesdebug-write-info).
  • Email di errore: viene inviata con il contenuto di w-txt (max 4000 byte, righe da 200 con newline) tramite POSTA a tutti gli indirizzi configurati non vuoti.
  • Riallineamento progressivo COGNUMER: se la testata importata ha tes-bolla3 (numero DDT) maggiore del contatore corrente, il contatore viene avanzato a tes-bolla3 + 1 per evitare collisioni successive.
  • Causale di default: se a-tes-causale = spaces il programma sostituisce con tm-cfg-causale (chiave causali.causale-ins-uscita-i).