COSO59 -- Invio addebiti con email¶
Sorgente: cbl/coso59.cbl | Tipo: Programma interattivo | Program-ID: COSO59
Menu: Contabilita' > Unione soci/clienti > Attivita' in Zona
Scopo¶
Generazione e invio via email della lettera di notifica addebiti per i soci/clienti di una zona. Per ciascun socio nel range selezionato:
- Scorre la contabilita' contabilizzata e la non contabilizzata calcolando il riepilogo per causale (importo + IVA);
- Compila il modello Word
lettera-addebiti.doctramite WORDMDL (XML di sostituzione tag); - Converte la lettera in PDF;
- Invia il PDF in allegato all'indirizzo email del socio tramite il client MyMail (programma POSTA).
Se il socio e' privo di email, la lettera viene stampata su carta.
File e tabelle¶
| File/Tabella | Tipo | Descrizione |
|---|---|---|
| COGTABEL (FEURTAB) | Indexed, I-O | Tabella generale: contabilita' (tipo 66), zone (tipo 06/90), postazione (tipo "AH"), IVA (tipo 67) |
| COGCOATT | Indexed, Input | Prima Nota contabilizzata |
| COGPNONC | Indexed, Input | Prima Nota non contabilizzata (chiave alternata 2: mastro/conto/sottoconto) |
| UNANASO | Indexed, I-O | Anagrafica soci (aggiornato anas-data-email-addebiti a fine invio) |
| COGGEANA | Indexed, Input | Anagrafica generale (per recupero email "alternativa" in caso azienda SRL) |
| COGAPPOG | Indexed, Input | Coordinate bancarie azienda (IBAN per testo email) |
| COGTRANS | Indexed temp, I-O | File di lavoro per aggregazione partite per socio + causale |
| PERSTEXT | Line sequential | File di personalizzazione testo (path = tm-path, modello Word) |
| FLSTA | Sequential | File di stampa |
Copybook principali¶
coso59.wrk/coso59.select/coso59.fd/coso59.prc/coso59.decla-- Screen designercogfiles.cpy,cogcoatt.cpy,k-u10.cpyutilmymail.cpy,utilpost.cpy-- Interfaccia client posta MyMailutilwordmdl.cpy-- Interfaccia generazione documenti Word con sostituzione tag XML- Chiavi:
cogcoatt.k02,cogpnonc.k02,cogtrans.k01
Configurazioni RNEWCONF lette¶
| Gruppo | Chiave | Uso |
|---|---|---|
| SOCI | conto-di-sconto | Conto contabile dei soci |
| SOCI | email-oggetto | Oggetto della mail di addebito |
| STAMPE | PERIFERICA-STAMPA-FILE | Periferica per stampa cartacea |
| STAMPE | PATH-STAMPA-FILE | Path file di stampa |
| ARC-OTT | path-apri-file | Path per apertura file generati |
Paragrafi principali¶
| Paragrafo | Funzione |
|---|---|
apri |
Inizializzazione, apertura file, lettura tabella contabilita' tipo 66, lettura email azienda per "from" |
a4 |
Inizializzazione maschera (zona da postazione AH, default mastro 28 / conto 01) |
a-tm-socioda ... a-tm-reinvio |
Accept dei campi maschera |
a-richiesta-conferma |
Validazione e avvio: chiama COGS54 per stampa, poi scansiona UNANASO chiamando mail per ogni socio in zona |
mail |
Per il socio corrente: scansione COGCOATT, aggregazione in COGTRANS per causale, chiamata emibol |
conteggia-cogpnonc |
Aggiunge a COGTRANS anche i movimenti della Prima Nota non contabilizzata |
emibol |
Verifica totale > 0, scansione COGTRANS per generare la lettera, chiamata scrivi-lettera per ogni causale, wri-totali + wri-saluti + chiudi-emi-lettera |
apri-xml / intesta-mod / wri-corpo / wri-totali / wri-saluti |
Riempimento del documento Word tramite tag XML scritti su file di scambio per WORDMDL |
chiudi-emi-lettera |
Chiude XML, esegue WORDMDL per generare il PDF (C:\ecoge\allegato.pdf), prepara mail con MyMail-Prepara, invia con POSTA |
Logica di elaborazione¶
Selezione soci¶
Scansione di UNANASO con anas-tipo = "C" e anas-cod in [tm-socioda..tm-socioa]. Per ogni socio:
- Filtro su anas-zona2 = tm-zona
- Filtro su tm-tipo-soci (1=tutti, 2=anas-dadimis <> 0, 3=anas-dadimis = 0)
- Salta se tm-reinvio <> "S" e anas-data-email-addebiti = tm-adata (gia' inviato oggi)
Calcolo aperti per socio¶
Paragrafo mail:
1. Apertura I-O di COGTRANS (svuotato per ogni socio con init-cogtrans).
2. Lettura COGCOATT per mastro/conto/sottoconto del socio (chiave alternata 2).
3. Per ogni movimento del socio (con esclusioni: causali 080/081/022, data > tm-adata se non in avere):
- Lettura/scrittura record COGTRANS chiave (causocio + caucomp)
- Accumulo importo: +att-importo se D, -att-importo se A
- Calcolo IVA dalla causale (cogtabel tipo 67) e accumulo
- Aggiornamento trs-all (totale generale del socio)
4. Al cambio socio: chiamata emibol.
Paragrafo conteggia-cogpnonc: stesso processo su COGPNONC (escluse causali 080/081/022) per includere movimenti non ancora contabilizzati.
Generazione lettera (Word -> PDF)¶
apri-word->apri-xml: apre il file XML di scambio (<mod-dir>/soso82_<oper>.txt).intesta-mod: scrive tag intestazione (DATA-LET, PROTOC, NFOGLIO, COD-ANAG, COGNOME-NOME, indirizzo, ecc.).- Per ogni causale del socio con saldo non zero (
wri-corpo): scrive tag riga (causale, descrizione, importo). wri-totali: tag totali.wri-saluti: tag saluti.chiudi-emi-lettera: chiude l'XML; chiama WORDMDL operazioneEseguicon modellolettera-addebiti.doce save-as PDF (C:\ecoge\allegato.pdfse ha email, altrimenti stampa).
Invio email¶
Solo se anas-mail <> spaces (o ana-email per societa' SRL):
POSTAoperazioneMyMail-Prepara: destinatario =anas-mail(ow-anas-emailcome "from"), oggetto =<tm-cfg-mail-oggetto> <zona-des>(sovrascritto a"Elenco periodico addebiti da saldare"), corpo testo personalizzato per ramo associazione vs SRL, allegato = PDF generato.mymail-invio-auto = "S", esamina-esito = "F" (forzato).- A fine invio aggiornamento
anas-data-email-addebiti = tm-adatasu UNANASO.
Aziende SRL vs Associazione¶
Discriminante: inspect az-int tallying w-srl for all "SRL". Se positivo:
- Email "from" letta da COGGEANA invece che UNANASO
- Testo email contiene riferimento "Confagricoltura Bologna SRL" e IBAN diverso
- Hardcoded IBAN: IT59R0508036760CC0070007639 (associazione), IT63Z0538702408000000975981 (SRL)
CALL esterne¶
| Programma | Scopo |
|---|---|
COGS52W |
Accept date con calendario |
COGS54 |
Selezione stampante |
COGS65W |
Accept codice socio con ricerca |
COGS60W2 |
Accept tipologie con aiuto (tipo soci) |
COGS95W |
Accept flag S/N |
COGS99W |
Accept codici causale con aiuto (e attributo IVA) |
COGU10W |
Accept importi |
WORDMDL |
Riempimento modello Word con tag XML + export PDF |
POSTA |
Invio email tramite MyMail (operazioni MyMail-Prepara, MyMail-Esegui) |
COPIAF |
Manipolazione file (verifica esistenza modello, copia client/server) |
RNEWCONF |
Lettura configurazioni per gruppo/chiave |
Note implementative¶
- Il file COGTRANS temporaneo ha path
ext-tmp-dir/#$coso59-<datasis>-<timesis>.<operatore>per evitare collisioni multi-sessione. - I PDF generati sono fissati in
C:\ecoge\allegato.pdf(path lato client). - Il programma usa pesantemente
GO TOinterni ai paragrafi loop (m210,next-emi-cogtrans), pattern legacy non in linea con le convenzioni attuali. - L'IBAN di destinazione e' hardcoded nel sorgente: ogni cambio richiede modifica del codice.
- Il flag
trs-in-data(in COGTRANS) traccia se la causale ha movimenti nel periodo, ma di fatto e' sempre impostato a "S" perche' il test commentato. - Non sono presenti marcatori
*>DOC:nel sorgente.