COGX19 - Fatturazione Veicoli¶
Scopo¶
Programma di fatturazione del parco veicoli (Bercar). Presenta in griglia i veicoli pronti per la fatturazione (movimenti BCMOVIM con acquirente o contratto BCCONTRA, non ancora fatturati), consente la selezione e produce due flussi di fatturazione separati:
- "V" Vendita: fattura intestata al cliente acquirente o leasing, con pattuito e IVA dal contratto
- "P" Provvigione: fattura intestata alla controparte con provvigione configurata sul contratto
Le righe di fattura vengono accumulate in un file COGTRANS temporaneo e passate alla subroutine COGX20 che esegue effettivamente l'emissione. Al ritorno, se la fattura e' stata emessa, i movimenti veicolo vengono aggiornati con i riferimenti alla fattura.
Posizioni menu¶
- Magazzino > Gestione Veicoli > Fatturazione
File e Tabelle¶
| File | Copybook | Utilizzo |
|---|---|---|
| FEURTAB | cogfiles.cpy | Tabella file di sistema |
| LODTMDES | lodtmdes.cpy | File di lavoro temporaneo descrizioni (lock per operatore) |
| COGTRANS | (inline FD nel sorgente) | File di transito ISAM per le righe di fattura passate a COGX20 |
| COGTABEL | (da cogx19.select) | Tabella codici |
| COGMERCI | (da cogx19.select) | Anagrafica articoli |
| COGGEANA | (da cogx19.select) | Anagrafica clienti/fornitori |
| COGTESBO | (da cogx19.select) | Testate bolle |
| COGMOMAG | (da cogx19.select) | Movimenti magazzino |
| COGFATTU | (da cogx19.select) | Testate fatture |
| COGFTRAG | (da cogx19.select) | Fatture ragruppamento |
| COGCNDCF | (da cogx19.select) | Condizioni di pagamento cliente/fornitore |
| COGRACMT | (da cogx19.select) | Raccolta mezzi di trasporto |
| COGMERCL | (da cogx19.select) | Codici articolo cliente |
| COGDESCR | (da cogx19.select) | Descrizioni estese |
| BCMOVIM | (da cogx19.select) | Movimenti veicolo (chiave di scansione principale) |
| BCCONTRA | (da cogx19.select) | Contratti veicolo |
Tabella COGTRANS (definita inline)¶
Chiave primaria trs-chia1: tipo registro + numero registro + chiave merce + progressivo.
Contenuto record: prezzo, IVA, articolo esenzione, contropartita coge, 8 righe di descrizione.
Path: <ext-tmp-dir>/#COGX19.<operatore>.
Copybook¶
Working storage¶
cogx19.wrk,k-u10.cpywgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpywgrid.cpy,utilgdad.cpyutils25.cpy,utils56.cpy(ricerca veicoli),utils65.cpy(cliente),utils68.cpy(merce)utilu10.cpy,utilu11.cpy,utilu12.cpy(utility divisa/cambio)utilw76.cpy(lookup W76)utilx18.cpy(contratto),utilx20.cpy(emissione fattura veicoli)utilzde.cpy
Linkage¶
wcont.cpy,wcont1.cpy
Procedure¶
grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpycogx19.prc,getdcont.cpy,sendw76.cpy,utilgrid.cpy- Chiavi:
cogracmt.k02,lodtmdes.k01,cogtrans.k01
CALL¶
| Programma | Scopo |
|---|---|
| GRIDADMN | Amministrazione griglia |
| COGS25 | Servizio standard |
| COGS56 | Ricerca avanzata veicoli (F9) |
| COGS65W | Lookup cliente |
| COGU10W | Conversione divisa / GetDivisaConto |
| COGU11 | Utility divisa/cambio |
| COGU12 | Utility divisa/cambio |
| COGX18 | Apertura contratto (F6) |
| COGX20 | Emissione fattura veicoli (motore di fatturazione) |
| COGZDEW | Servizio standard |
Logica di elaborazione¶
Costanti chiave¶
k-marca = "MA",k-targa = "TA",k-tm-tip = "NV"k-euta-tipo-agenti = 21k-max-ele-tab = 900(griglia)
Flusso principale¶
apri: init, apertura file, lettura azienda,get-divisa-conto, caricamento bitmap F6, preparazione lookupCOGS68a4: apertura LODTMDES e COGTRANS inoutputpoii-o(lock di sessione)a-tm-targa→a-tm-marca→a-tm-modello→a-tm-merce→a-tm-gia-fat→a-tm-cli: accept filtri (con F8 aiuto e F9 ricerca avanzata COGS56)a-inizio-dati: validazione filtri,carica-datiper popolare la tab-maschera con i veicoli candidatia-grid/a-accept-grid: griglia di selezione; Invio toggletm-sel; F6 apre contratto viaCOGX18; F3lancia-fatlancia-fat: due passate (tipo "V" Vendita, tipo "P" Provvigione); per ogni passata costruisce righe in COGTRANS e chiamaCOGX20- Se
COGX20ritorna esito OK:reg-bcmovimaggiorna i movimenti BCMOVIM con i riferimenti alla fattura emessa
Selezione dei veicoli (carica-dati)¶
Scansione di BCMOVIM filtrata per merce (se indicata):
- Se non
gia-fat: scarta movimenti conbcm-fat-ven-tip(vendita gia' fatturata) e — per movimentireg-tipo = "C"(contratto) — anche conbcm-fat-pro-tip(provvigione gia' fatturata) - Deve esserci o
bcm-acquirenteo un contratto BCCONTRA collegato - Se filtro cliente: deve coincidere con
bcm-acquirente, oppure conbcc-codiceobcc-cod-leasingdel contratto
Per ogni veicolo selezionato carica-collegati arricchisce con dati da COGRACMT (marca, modello, telaio).
Costruzione riga COGTRANS per fattura ("V" o "P")¶
Per ogni riga selezionata (tm-sel = "S"):
- Lettura BCMOVIM corrente; check che la voce sia ammissibile per il tipo corrente
- Per "V": skip se
bcm-fat-ven-tipgia' valorizzato (salvogia-fat) - Per "P": skip se
bcm-fat-pro-tipgia' valorizzato; ammessi solo movimenti conreg-tipo = "C" - Composizione delle 8 righe descrittive:
- "V": "VENDITA DELLA SEGUENTE AUTOVETTURA USATA NELLO STATO D'USO IN CUI SI TROVA:" + modello + targa + telaio
- "P": "PROVVIGIONE PER LA VENDITA DELLA SEGUENTE AUTOVETTURA USATA NELLO STATO D'USO IN CUI SI TROVA:" + modello + targa + telaio
- Prezzo da contratto:
bcc-pattuito(V) obcc-provvigione(P) - IVA:
bcc-iva(V) o "20" forzato (P) - Articolo esenzione:
bcc-art-ese(V) - Contropartita coge:
mer-codcontr - Se IVA numerica e non zero:
scorpora-ivacalcola imponibile e IVA da prezzo lordo - Scrittura su COGTRANS con
wr-cogtrans - Cliente target:
tm-acquirente (k)per acquirente, oppuretm-cli-leasing (k)se valorizzato (solo "V")
Chiamata COGX20¶
- Input:
util-x20conx20-tipo-fat("V" o "P"),x20-cli(cliente target) - COGX20 legge le righe da COGTRANS e produce la fattura
- Se
x20-esito-ok = "S":reg-bcmovimaggiornabcm-fat-ven-tip/bcm-fat-ven-numero(V) obcm-fat-pro-tip/bcm-fat-pro-numero(P) sui movimenti coinvolti
Scorporo IVA (scorpora-iva)¶
w-totale = trs-prezzo; w-ali = trs-iva; w-div = 1 + w-ali/100; w-imponibile = w-totale / w-div. Iterazione minima con fl-min per recupero arrotondamenti.
Note tecniche¶
- Programma GUI (~2334 righe), screen
cogx19-01.scr - Sessione utente vincolata: LODTMDES e COGTRANS nominati per operatore (
#$COGX19.<operatore>e#COGX19.<operatore>), apertura inoutputcome lock - Cancellazione di COGTRANS alla chiusura (
delete file cogtrans) - Pulsante custom F6 "Stampa Contratto" con bitmap
- Le due passate "V" → "P" sono in cascata: se la prima conclude (anche senza emissione), si avvia la seconda