Vai al contenuto

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/k04
  • asncntes.k05
  • asncnmtr.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-clientetm-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-chiuso C/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-x della chiave alternativa trs-chia2 e' composto in carica-file come nome-cliente + cli-fat + id-contratto + seq + prog + chiave1 per l'ordinamento per nome.
  • L'etichetta di menu ("Fatturazione contratti matricole") corrisponde alla funzione reale: fatturazione del canone delle matricole di assistenza.