Vai al contenuto

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:

  1. Scorre la contabilita' contabilizzata e la non contabilizzata calcolando il riepilogo per causale (importo + IVA);
  2. Compila il modello Word lettera-addebiti.doc tramite WORDMDL (XML di sostituzione tag);
  3. Converte la lettera in PDF;
  4. 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 designer
  • cogfiles.cpy, cogcoatt.cpy, k-u10.cpy
  • utilmymail.cpy, utilpost.cpy -- Interfaccia client posta MyMail
  • utilwordmdl.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)

  1. apri-word -> apri-xml: apre il file XML di scambio (<mod-dir>/soso82_<oper>.txt).
  2. intesta-mod: scrive tag intestazione (DATA-LET, PROTOC, NFOGLIO, COD-ANAG, COGNOME-NOME, indirizzo, ecc.).
  3. Per ogni causale del socio con saldo non zero (wri-corpo): scrive tag riga (causale, descrizione, importo).
  4. wri-totali: tag totali.
  5. wri-saluti: tag saluti.
  6. chiudi-emi-lettera: chiude l'XML; chiama WORDMDL operazione Esegui con modello lettera-addebiti.doc e save-as PDF (C:\ecoge\allegato.pdf se ha email, altrimenti stampa).

Invio email

Solo se anas-mail <> spaces (o ana-email per societa' SRL):

  1. POSTA operazione MyMail-Prepara: destinatario = anas-mail (o w-anas-email come "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.
  2. mymail-invio-auto = "S", esamina-esito = "F" (forzato).
  3. A fine invio aggiornamento anas-data-email-addebiti = tm-adata su 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 TO interni 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.