Vai al contenuto

COSW78 -- Invio fatture via email

Sorgente: cbl/cosw78.cbl | Tipo: Programma interattivo (anche richiamabile in batch da altri programmi) | Program-ID: COSW78

Menu: Contabilita' > Unione soci/clienti > Operazioni mensili


Scopo

Estrazione massiva delle fatture di un periodo (o di un range di numeri) e gestione del loro invio al cliente in una o piu' modalita':

  1. Email: generazione PDF della fattura (da stampa formattata PCL convertita con SVIEW) e invio via client MyMail.
  2. Stampa: stampa cartacea per i clienti che non hanno email codificata o per i quali e' richiesto cartaceo.
  3. EDI / FatturaPA: creazione del file XML di fattura elettronica tramite COGSA3 e trasporto/invio verso il SDI o un servizio di interscambio.

Le tre modalita' sono mutuamente non esclusive e configurabili a runtime tramite la maschera.

File e tabelle

File/Tabella Tipo Descrizione
COGTABEL (FEURTAB) Indexed, I-O Tabella generale: tipi documento IVA (k-euta-tipo-doc-iva), parametri batch
COGFATTU Indexed, Input Testata fatture (scansione con chiave alternata 8: per data movimento)
COGRACCO / CAPRACCO Indexed, Input Raccordo fattura -> bolle (CAPRACCO per aziende consorzi)
UNANASO Indexed, Input Anagrafica clienti (email primaria)
COGGEANA Indexed, Input Anagrafica generale (email alternativa)
COGAPPOG Indexed, Input Coordinate bancarie / preferenze invio (app-tip-stt)
COGTRANS Indexed temp, I-O File di lavoro fatture estratte (chiave: tipo+codice cliente + tipo+anno+numero fattura)
COGTRANS2 Indexed temp, Input File di lavoro fornito dal chiamante in modalita' batch (lista fatture pre-estratte)
FLSTA Sequential File di stampa

Indici secondari usati

  • cogfattu.k08 -- scansione fatture per data
  • cogtrans.k02 -- chiave alternata su nome anagrafica + fattura + cliente (per a5-stampa)
  • cogtrans.k03 -- chiave alternata su fattura + cliente
  • cogtran2.k01 -- chiave su fattura per il file di transito esterno

Copybook principali

  • cosw78.wrk / cosw78.select / cosw78.fd / cosw78.prc / cosw78.decla -- Screen designer
  • cogfiles.cpy, cogazien.cpy, capazien.cpy
  • k-personal.cpy, k-tipi-cogtabel.cpy -- Costanti per varianti per cliente
  • utilrcnf.cpy, utilncnf.cpy -- Lettura configurazioni
  • utilcn18.cpy, utilp41.cpy -- Interfacce stampa fattura
  • utilsview.cpy, l-copiaf.cpy, u-copiaf.cpy -- Conversione file e gestione client/server
  • utilmymail.cpy, utilpost.cpy -- Client posta MyMail
  • utils13.cpy, utilcaps13.cpy, utilv52.cpy, utilcapv52.cpy -- Interfacce a programmi di stampa
  • utilz82.cpy, utilcogsa3.cpy -- Interfaccia COGSA3 (fattura elettronica)
  • utilcogw78.cpy -- Linkage per chiamata da altri programmi

Parametri di chiamata (linkage)

utilcogw78.cpy definisce i campi di chiamata batch: - w-dc-fl-called: k-yes se chiamato da altro programma - w-dc-called: nome programma chiamato (atteso "COSW78") - w-dc-caller: program-id del chiamante - w-dc-transito-in: path del file COGTRANS2 con la lista fatture pre-estratte

Se chiamato in batch, salta la maschera e va direttamente a elabora-dati.

Configurazioni RNEWCONF lette (gruppo fatturaz e altri)

Gruppo Chiave Uso
fatturaz invio-mail-oggetto Oggetto della mail
fatturaz invio-mail-testo (idx 1..10) Righe del testo email (template)
fatturaz path-mail-fatture Cartella dei PDF di output
fatturaz invio-mail-modello Modello mail MyMail (opzionale)
fatturaz invio-mail-cartella-allegati Cartella allegati comuni / per anagrafica
fatturaz invio-mail-pulisci-all-ana "S" per pulire allegati anagrafica dopo invio
fatturaz invio-mail-pulisci-all-com "S" per pulire allegati comuni dopo invio
fatturaz edi-output-type "S"=singolo, "M"=multiplo, "X"=disabilitato
fatturaz invio-mail-max-attach Numero max allegati per mail (default 8)
cogesys mymail-prg Programma client posta (es. MYMAIL)
abilita fatmail "S" abilita invio email
abilita fatturapa "S" abilita generazione FatturaPA
FATTBATCH EUTA-C055-TIP-CRE Modalita' creazione fatture batch
stampe PATH-STAMPA-FILE Path file di stampa

Paragrafi principali

Paragrafo Funzione
apri Init, lettura x-configurazione, verifica abilitazioni, apertura file
a4 Init maschera (per az-personal-artic-seals propone "una fattura alla volta")
a-tm-fl-sel-man ... a-tm-fl-make-edi Accept maschera
a-fine-dati Validazione + chiamata acc-conf per conferma
elabora-dati Orchestratore principale: estrae le fatture (a2/a2b/tratta-fattura), poi invoca le fasi (a4-invia, a5-stampa, a6-invia-singola, a7-edi)
a2-estrai-fatture Estrae fatture per periodo: COGFATTU chiave 8, filtra fat-tip = "SD" (cliente non in conto) e tipo doc IVA "C" o "CO"
a2b-estrai-fatture Estrae fatture da COGTRANS2 (lista esterna in modalita' batch)
tratta-fattura Singola fattura (modalita' "selezione manuale")
a3-bool-aggiungi-cogtrans Aggiunge la fattura a COGTRANS, valorizzando flag invio in base a email/preferenze cliente
a4-invia Loop fatture con flag "E" (email): per ogni cliente accumula PDF fino a tm-cfg-mail-max-attach, poi mymail-aggiungi
a5-stampa Loop fatture con flag "S" (stampa cartacea): stampa-con-cogp41 o stampa-con-cogs13
a6-invia-singola Loop fatture: invia una mail per ogni fattura (modalita' alternativa)
a7-edi Loop fatture con flag "P" (PA) o "D" (digitale): chiama COGSA3 per creare/trasportare/inviare il file EDI
cogsa3-crea Chiama COGSA3A (B/C per consorzi) per generare l'XML; operazione "add" o "add+trasp" o "make-all"
cogsa3-trasporta / cogsa3-invia Trasporto su cartella di output e invio FTP/PEC
mymail-aggiungi Prepara mail con MyMail-Prepara: oggetto, corpo personalizzato (associazione vs SRL), allegati raccolti in ri-mail-files, eventuali file dalla cartella allegati
mymail-send Esegue invio con MyMail-Esegui
prepara-con-cogp41 / prepara-con-cogs13 / prepara-con-caps13 / prepara-con-capv52 Generazione PCL della fattura tramite il programma di stampa appropriato
x-configurazione Lettura RNEWCONF di tutti i parametri

Logica di elaborazione

Estrazione fatture (a3-bool-aggiungi-cogtrans)

Per ogni fattura selezionata viene letta: - UNANASO per anas-mail - COGGEANA per ana-email (fallback se anas-mail vuoto) - COGAPPOG per app-tip-stt

Calcolo flag trs-fl-stampa-fat: - "E" se ha email valida -> verra' inviata via mail - "S" se nessuna email o app-tip-stt = "NE" o tm-fl-make-mail = "N" -> verra' stampata - (modificato successivamente in a7-edi a "P" per PA o "D" per fatturazione digitale a seconda della FatturaPA)

Fase email (a4-invia o a6-invia-singola)

Per a4-invia (raggruppata): 1. Loop su COGTRANS filtrato per trs-fl-stampa-fat = "E". 2. Al cambio cliente (ri-ana <> trs-ana) si chiama mymail-aggiungi per inviare la mail in corso e resettare. 3. Per ogni fattura: chiama prepara-con-cogp41 -> genera PCL (path: <dir-stampa>/<trs-fattura>.pcl); poi SVIEW CONVERTI PCL -> PDF (path: <path-output>\<postazione>\<trs-fattura>.pdf). 4. Aggiunge PDF a ri-mf-file (ri-mf-pnt); se raggiunti tm-cfg-mail-max-attach, chiama mymail-aggiungi e resetta. 5. A fine loop: invia eventuali allegati pendenti.

Per a6-invia-singola: una mail per fattura (chiama mymail-aggiungi + mymail-send per ciascuna).

Fase stampa (a5-stampa)

Loop su COGTRANS chiave 2 (trs-ana-nome + fattura) per stampare in ordine di ragione sociale cliente. Per ogni fattura con flag "S": - Chiama COGS54 una sola volta in apertura per selezionare la stampante. - Per ogni fattura: stampa-con-cogp41 (o COGS13 per varianti).

Fase EDI / FatturaPA (a7-edi)

Per ogni fattura con flag "P" (PA) o "D" (digitale): 1. cogsa3-crea -> chiama COGSA3A (o COGSA3B/COGSA3C per consorzi/PA) con operazione "add" / "add+trasp" / "make-all" a seconda di tm-cfg-edi-out-type e della presenza di email/file FTP. 2. Al cambio cliente: cogsa3-trasporta (sposta i file XML su cartella di output) e cogsa3-invia (FTP/PEC). 3. Se invece di FTP il trs-mail-address contiene una vera mail (presenza di "@"), aggiunge l'XML come allegato a una mail tramite mymail-aggiungi.

Branch per personalizzazioni cliente

Il sorgente discrimina su az-personal e su az-consorzi: - az-consorzi = "S" (consorzi cap): usa CAPS13 / CAPV52 / CAPRACCO / COGSA3C, salta tm-fl-make-stampa - az-personal = k-personal-cap-piacenza: stampa con CAPS13/CAPV52 - az-personal = k-personal-modena-funghi: stampante hardcoded p41-prf-sel = 888, p41-stm-sel = 9 - az-personal = k-personal-artic-seals: default invio una fattura alla volta

Testo email (mymail-aggiungi)

Costruzione discriminata su w-count-srl = inspect az-int for all "SRL": - w-count-srl = 0 (associazione): testo standard con "Sede Centrale - Confagricoltura Bologna" - w-count-srl > 0 (SRL): testo SRL con "Sede Centrale - Confagricoltura Bologna SRL" - Oggetto: tm-cfg-mail-oggetto (sovrascritto a "Invio Fatture per servizi e/o prestazioni gia saldate") - Se tm-cfg-mail-cartella-all <> spaces: aggiunge come allegati anche <cartella>\comune\*.* e <cartella>\<ri-ana>\*.*, con eventuali clausole |deleteiflast / |deleteafteruse

CALL esterne

Programma Scopo
COGS52W Accept date
COGS54 Selezione stampante (anche per s54-after-print)
COGS60W2 Accept tipo
COGS65W Accept codice cliente / agente
COGS95W Accept flag
COGS99W Accept causali con aiuto
COGU06W Accept numero documento
COGU10W Accept importi
COGS13A Stampa fattura COGS13 (varianti batch / immediata)
cogp41un Stampa fattura COGP41 unione
CAPS13 Stampa fattura per consorzi
CPC357PC Stampa fattura immediata per consorzi (variante CAPV52)
COGSA3A Generazione/trasporto/invio file EDI fattura digitale
COGSA3B Variante COGSA3 per FatturaPA
COGSA3C Variante COGSA3 per consorzi
SVIEW Conversione PCL -> PDF
POSTA Invio email tramite MyMail (MyMail-Prepara / MyMail-Aggiungi / MyMail-Esegui)
COPIAF Manipolazione file lato server (delete dopo invio)
RNEWCONF Lettura configurazioni
WORDMDL (linkato ma non usato direttamente in questo programma)

Note implementative

  • Path COGTRANS temporaneo: ext-tmp-dir/#$COGW13_<operatore> (notare il nome storico "COGW13").
  • Il file COGTRANS2 viene aperto solo se ricevuto in linkage (modalita' batch).
  • L'invio EDI/PA usa branching su tm-cfg-edi-out-type:
  • "S" = singolo: l'invio FTP/PEC e' fatto subito dopo l'add
  • "M" = multiplo: trasporto su cartella + invio in blocco a fine cliente
  • "X" = disabilitato
  • Il flag trs-fl-cogstfat (impostato in a3-bool-aggiungi-cogtrans) discrimina tra fattura batch (PCL gia' esistente, da rileggere) e fattura immediata (da rigenerare).
  • Per le fatture immediate consorzi (prepara-con-capv52) e' richiesta una bolla collegata in CAPRACCO: altrimenti viene emesso errore "Fattura X senza bolla!!".
  • I PDF non vengono cancellati dopo l'invio: solo i file EDI lato server (COPIAF delete su wordmdl-save-as -- non applicabile qui, usato in altre fasi).
  • L'operazione mymail-att (pnt) con tag |deleteiflast / |deleteafteruse delega al client posta la pulizia dei file della cartella allegati.
  • Non sono presenti marcatori *>DOC: nel sorgente.