Vai al contenuto

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.cpy
  • wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy
  • wgrid.cpy, utilgdad.cpy
  • utils25.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.cpy
  • cogx19.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 = 21
  • k-max-ele-tab = 900 (griglia)

Flusso principale

  1. apri: init, apertura file, lettura azienda, get-divisa-conto, caricamento bitmap F6, preparazione lookup COGS68
  2. a4: apertura LODTMDES e COGTRANS in output poi i-o (lock di sessione)
  3. a-tm-targaa-tm-marcaa-tm-modelloa-tm-mercea-tm-gia-fata-tm-cli: accept filtri (con F8 aiuto e F9 ricerca avanzata COGS56)
  4. a-inizio-dati: validazione filtri, carica-dati per popolare la tab-maschera con i veicoli candidati
  5. a-grid / a-accept-grid: griglia di selezione; Invio toggle tm-sel; F6 apre contratto via COGX18; F3 lancia-fat
  6. lancia-fat: due passate (tipo "V" Vendita, tipo "P" Provvigione); per ogni passata costruisce righe in COGTRANS e chiama COGX20
  7. Se COGX20 ritorna esito OK: reg-bcmovim aggiorna 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 con bcm-fat-ven-tip (vendita gia' fatturata) e — per movimenti reg-tipo = "C" (contratto) — anche con bcm-fat-pro-tip (provvigione gia' fatturata)
  • Deve esserci o bcm-acquirente o un contratto BCCONTRA collegato
  • Se filtro cliente: deve coincidere con bcm-acquirente, oppure con bcc-codice o bcc-cod-leasing del 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-tip gia' valorizzato (salvo gia-fat)
  • Per "P": skip se bcm-fat-pro-tip gia' valorizzato; ammessi solo movimenti con reg-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) o bcc-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-iva calcola imponibile e IVA da prezzo lordo
  • Scrittura su COGTRANS con wr-cogtrans
  • Cliente target: tm-acquirente (k) per acquirente, oppure tm-cli-leasing (k) se valorizzato (solo "V")

Chiamata COGX20

  • Input: util-x20 con x20-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-bcmovim aggiorna bcm-fat-ven-tip/bcm-fat-ven-numero (V) o bcm-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 in output come 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