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':
- Email: generazione PDF della fattura (da stampa formattata PCL convertita con SVIEW) e invio via client MyMail.
- Stampa: stampa cartacea per i clienti che non hanno email codificata o per i quali e' richiesto cartaceo.
- 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 datacogtrans.k02-- chiave alternata su nome anagrafica + fattura + cliente (pera5-stampa)cogtrans.k03-- chiave alternata su fattura + clientecogtran2.k01-- chiave su fattura per il file di transito esterno
Copybook principali¶
cosw78.wrk/cosw78.select/cosw78.fd/cosw78.prc/cosw78.decla-- Screen designercogfiles.cpy,cogazien.cpy,capazien.cpyk-personal.cpy,k-tipi-cogtabel.cpy-- Costanti per varianti per clienteutilrcnf.cpy,utilncnf.cpy-- Lettura configurazioniutilcn18.cpy,utilp41.cpy-- Interfacce stampa fatturautilsview.cpy,l-copiaf.cpy,u-copiaf.cpy-- Conversione file e gestione client/serverutilmymail.cpy,utilpost.cpy-- Client posta MyMailutils13.cpy,utilcaps13.cpy,utilv52.cpy,utilcapv52.cpy-- Interfacce a programmi di stampautilz82.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 ina3-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 deletesuwordmdl-save-as-- non applicabile qui, usato in altre fasi). - L'operazione
mymail-att (pnt)con tag|deleteiflast/|deleteafterusedelega al client posta la pulizia dei file della cartella allegati. - Non sono presenti marcatori
*>DOC:nel sorgente.