ASN058 - Fatturazione contratti "a matricola"¶
Sorgente: cbl/asn058.cbl (5.534 righe) | Tipo: Programma interattivo con griglia paginata, file di transito e generazione DDT
Menu: Assist 2.0 > Archivi > Contratti > Fatturazione contratti matricole
Scopo¶
Estrae le matricole gestite dai contratti di assistenza (ASNCNMTR) che risultano da fatturare in un dato mese/anno di competenza, ne calcola l'importo (canone per il periodo di validita', con i ratei giornalieri per i mesi non interi), le mostra in griglia per selezione, e per le matricole selezionate genera i DDT di vendita (COGTESBO + COGMOMAG + descrizioni COGDESAG), aggiornando le date di ultima fatturazione sulle matricole (ASNCNMTR) e creando il raccordo matricola/DDT (ASNCNMTB).
Rispetto ad ASN052 (fatturazione a rata di piano), ASN058 fattura il canone delle singole matricole del contratto. La modalita' di raggruppamento delle righe DDT dipende dalla configurazione:
- Standard (
a1-aggiorna): una testata DDT per contratto/cliente, una riga aggregata con la prestazione del tipo contratto (importo a zero) e una riga descrittiva per ogni matricola (SN, modello, periodo, prezzo). - Canone matricole (
fatturazione-canone-matricole = "M",b1-aggiorna-m): righe DDT valorizzate a rottura di merce/canone (una riga per gruppo di matricole con stessa merce e stesso canone), fatturazione limitata al solo mese di competenza. - Firewall (
tipo-mtr-firewall,a111-testata-ddt): ogni matricola di quel tipo genera un DDT autonomo con riga "contenitore" e una riga per ciascun componente della distinta base matricola (ASNMTRDB).
Supporta IVA agevolata (condizione "IA" del cliente), ritenuta d'acconto, sconto finanziario (COGSA7) e legame movimento-commessa (COGU18).
File acceduti¶
Input/lettura¶
| File | Copybook | Uso |
|---|---|---|
| ASNCNMTR | acnc-rec |
Matricole gestite dal contratto. Chiave di scansione principale in carica-file. Update acnc-data-ult-fatt/acnc-data-ult-fatt-prec in fase di generazione |
| ASNCNTES | acnt-rec |
Testata contratto: cliente fatturazione/assistito, tipo, modello, acnt-commessa, acnt-ordine-cliente, flag chiuso/disdetto/rinnovato |
| ASNCNTIP | acnp-rec |
Tipo contratto: acnp-prestazione (merce riga standard) |
| ASNCNMOD | acnm-rec |
Modello contratto (descrizione) |
| ASNCNCND | acnd-rec |
Condizioni contratto: acnd-tip-fatt (filtro "M"), condizioni di pagamento |
| ASNMATRI | amtr-rec |
Anagrafica matricola: SN, descrizione, ubicazione, n. inventario, merce, tipo, modello |
| ASNMTRTP | amtp-rec |
Tipo matricola: amtp-prestazione (merce per config canone-matricole), descrizione |
| ASNMODEL | amod-rec |
Modello matricola (descrizione) |
| ASNMTRLK | amlk-rec |
Legame matricola figlia/padre |
| ASNMTRDB | amdb-rec |
Distinta base matricola (componenti): merce, qta, tariffa, sconto, qta scalare (righe firewall) |
| COGGEANA | ana-rec |
Cliente: pagamento, agenti, ritenuta acconto, listino |
| COGCNDCF | cnd-rec |
Condizione "IA": IVA agevolata attiva/codice/data |
| COGTABEL | euta-rec |
Tabella IVA agevolata (tipo "D1"), tabella ritenuta acconto (tipo 46) |
| COGMERCI | mer-rec |
Anagrafica merci/prestazioni: codice IVA, contropartita, UM |
| PRNTOPER | via ctr-abil |
Abilitazioni |
Output/scrittura¶
| File | Copybook | Scrittura |
|---|---|---|
| COGTESBO | tes-rec |
Testata DDT (mag config, tipo "D", cliente fatturazione = nonno, assistito = padre) |
| COGMOMAG | mag-rec* |
Righe movimento magazzino |
| COGMOAGG | moa-rec |
Dati aggiuntivi riga: contenitore, UM/qta/prezzo alternativi (righe firewall e componenti) |
| COGTESAP | tsa-rec |
Dati aggiuntivi documento: tsa-tipo-fat, tsa-sconto-fin (da COGSA7) |
| COGDESOR | dor-rec |
Dati origine fattura: IVA agevolata, ritenuta acconto |
| COGDESAG | dag-rec |
Righe descrittive DDT (periodo, matricola SN, modello, ubicazione, prezzo, note IVA agev.) |
| ASNCNMTB | amtb-rec |
Raccordo matricola-contratto/DDT (progressivo, importo, cadenza, date) |
| ASNCNMTR | acnc-rec |
Update data ultima fatturazione matricola |
Transito e log¶
| File | Scopo |
|---|---|
cogtrans (#$trs_asn058.{oper}) |
Buffer matricole estratte. Chiave 1 id-contr+id-matr, chiave 2 ordinamento per nome cliente, chiave 3 cli-fat+id-contr+seq+id-matr, chiave 4 cli-fat+id-contr+merce+canone+id-matr (raggruppamento canone-matricole) |
filelog (#$asn058_{oper}.txt) |
File di log dell'elaborazione |
Chiavi secondarie¶
cogtrans.k01/k02/k03/k04asncntes.k05asncnmtr.k02
Copybook principali¶
Working-storage: wgrave, wnscr, wopenf, wstato, cogazien, utilu10, utilu20, utilcogsa7, utilu18, wgrid, utilgdad, utils25, utils52, utils65, utils68, utilasn043, utilasn044, utilasn050, utildlg, utilopenfile, utilncnf, utilgesstr.
Linkage: wcont, wcont1.
Fine procedure: grave, mmmask, opengen, stato, stato1, winmsg, chiavi, asn058.prc, dtab, fscrol2, getdcont.
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| COGS25 | s25-i-cod = 6 |
Numeratore bolla per magazzino/tipo/anno |
| COGU10W | (init) | Divisa di conto |
| COGSA7 | CERCA-SCONTO |
Sconto finanziario da pagamento per tsa-sconto-fin |
| COGU18 | crea-legame |
Legame movimento magazzino → commessa contratto (tipo "RD", PBUG-1555) |
| RNEWCONF | Lettura configurazioni (e modifica con F1); magazzino specifico cliente | |
| ASN043 | (lookup tipo contratto) | F8 su tm-acnp-cod |
| ASN044 | (lookup modello contratto) | F8 su tm-acnm-cod |
| COGS65W | Lookup cliente per tm-ana-cod-cf |
|
| DTPRG / PRGDT | Conversione data ↔ progressivo giorni (calcolo ratei) | |
| GRIDADMN | Personalizzazione griglia |
Configurazioni RNEWCONF (x99-confi)¶
| Idx | Gruppo | Parametro | Variabile | Effetto |
|---|---|---|---|---|
| 01 | assist |
magaz-vendita |
tm-cfg-mag-ven |
Magazzino di default per i DDT |
| 02 | assist |
cau-vendita |
tm-cfg-cau-ven |
Causale di vendita di default |
| 03 | PROGCOGV51 |
IVA-AGEVOLATA-DATA-DESCR |
tm-cfg-iva-agev-data-descr |
Testo descrizione data IVA agevolata |
| 04 | ass-contr |
fatturazione-canone-matricole |
tm-cfg-fatturazione-canone-matricole |
"M" → percorso b1-aggiorna-m (righe a rottura merce/canone, solo mese competenza) |
| 05 | ass-contr |
tipo-mtr-licenze-sw |
tm-cfg-tipo-mtr-licenze-sw |
Tipo matricola escluso dall'estrazione |
| 06 | ass-contr |
cau-ddt-fat-contratti |
tm-cfg-cau-ven (override) |
Causale specifica DDT contratti; fallback al 02 se 0/non numerico |
| 07 | ass-contr |
tipo-mtr-firewall |
tm-cfg-tipo-mtr-firewall |
Tipo matricola "firewall": ogni matricola → DDT autonomo con riga contenitore + componenti da ASNMTRDB |
Inoltre, per il cliente di fatturazione (leggi-rnewconf / b11-leggi-rnewconf / a111-leggi-rnewconf): C/<cli-fat>/assist/magaz-cliente → tm-cfg-mag-cli, se valorizzato sovrascrive il magazzino della bolla.
Logica di elaborazione¶
Testata (accept)¶
Campi filtro: mese/anno di competenza (tm-mese/tm-anno), data creazione documenti (tm-data-bol), cliente di fatturazione (tm-ana-cod-cf), tipo contratto (tm-acnp-cod), modello (tm-acnm-cod), ordinamento. Su F3 (a-fine-dati) richiesta conferma estrazione.
Estrazione (carica-file)¶
In base al mese/anno viene calcolata la data di riferimento fine periodo per ogni cadenza (mensile/trimestrale/semestrale/annuale, campi tm-data-mens/tm-data-trim/tm-data-seme/tm-data-anno). Scansione ASNCNMTR con questi scarti:
- Tipo matricola
M(muletto): saltata - Righe non confermate (
acnc-da-confermare != "C") - Matricole con tipo =
tipo-mtr-licenze-sw: saltate - Contratto non attivo (
fl-chiusoC/D), rinnovato (acnt-rinnovato = "S") - Filtri per tipo/modello/cliente della testata
acnd-tip-fatt != "M"(fattura solo condizioni "a matricola")- Data inizio validita' oltre la data di controllo della cadenza
- Data fine validita' minore della data inizio periodo selezionato (case 6600)
- Data ultima fatturazione >= data competenza
Per ogni matricola non scartata calcola l'importo (w-importo): numero mesi pieni × canone + ratei giornalieri (canone/30 × giorni) sui mesi non interi, con partenza dalla data ultima fatturazione (o dalla data inizio validita'). Per config M la fatturazione e' sempre di 1 mese pieno. Per matricole "firewall" il canone e' la somma delle tariffe × qta dei componenti della distinta base. Scrive il record su cogtrans gia' selezionato.
Griglia e selezione¶
La griglia paginata (fscrol2/dtab) mostra le matricole con importo. INVIO seleziona/deseleziona (con controllo che la merce di fatturazione sia codificata; per config M avviso se ci sono mesi arretrati non fatturati). F5 seleziona/deseleziona tutto.
Generazione (F3 aggiorna)¶
a1-controlli verifica che le prestazioni siano codificate e che il totale del DDT per contratto non sia zero. Poi in base alla configurazione si esegue a1-aggiorna (standard, con eventuale segmento firewall in a1-100-loop) oppure b1-aggiorna-m (canone-matricole). Vengono creati testata DDT, righe merce e descrizioni; aggiornate le date di ultima fatturazione su ASNCNMTR; scritto il raccordo ASNCNMTB; e, se il contratto ha commessa, il legame via COGU18. Le note IVA agevolata (c-ins-note-iva-agv) sono spezzate in righe da 40 char via GESSTR e agganciate come descrizioni aggiuntive.
Note implementative¶
- Le righe descrittive "Vs.ordine n." e ubicazione/inventario sono condizionate a
az-personal = k-personal-array-system(personalizzazione cliente Perini). - La riga aggregata standard viene scritta con qta/prezzo/valore a zero: gli importi effettivi sono sulle righe descrittive (
dag-tip-des = "Q"). - Il
filler-xdella chiave alternativatrs-chia2e' composto incarica-filecomenome-cliente + cli-fat + id-contratto + seq + prog + chiave1per l'ordinamento per nome. - L'etichetta di menu ("Fatturazione contratti matricole") corrisponde alla funzione reale: fatturazione del canone delle matricole di assistenza.