Vai al contenuto

COGV80CS - Bolle da Fatturare (versione CANTINA)

Intestazione

Campo Valore
Programma COGV80CS
Titolo Stampa bolle da fatturare
Posizione menu Vendite → Fatturazione → Stampe → Bolle da Fatturare
Posizione menu alternativa Lab.Odont. → Fatturazione → Stampe → Bolle da Fatturare

Scopo e logica generale

COGV80CS e' un programma di stampa che produce l'elenco delle bolle di trasporto (documenti di consegna) non ancora fatturate. E' una versione personalizzata per clienti "CANTINA": la particolarita' consiste nel fatto che per le bolle di tipo 'D' (dettaglio), calcola il valore delle righe applicando l'aliquota IVA al prezzo, producendo importi comprensivi di imposta.

Il programma scansiona COGTESBO per tipologia "I" (DDT entrata) e "D" (dettaglio), verifica per ogni bolla se la causale risulta "con fattura" (campo euta-cb-con-fat) leggendo il tipo 15 di COGTABEL, e stampa solo le bolle non ancora fatturate (o tutte, a seconda del parametro scelta).

E' un programma standalone (usa mmmask.cpy) con maschera a caratteri (non Windows), struttura classica con GO TO e PERFORM THRU.


Flusso principale

  1. Inizializzazione (cin-cin): controllo abilitazione, apertura file, lettura azienda, lettura divisa conto (COGU10 op. "GetDivisaConto"), visualizzazione maschera
  2. Accept parametri:
  3. a100: codice magazzino → lettura COGMAGA2
  4. a102: solo bolle da fatturare (SI/blank)
  5. a104: salto pagina per cliente (SI/NO)
  6. a106: singolo cliente (zero = tutti) → lettura COGGEANA
  7. a110: data partenza (via COGS52)
  8. a140: data arrivo (via COGS52) + controllo dataini <= datafin
  9. Conferma stampa (a222): chiamata COGS54 per selezione destinazione
  10. Ciclo stampa (loop): scansione sequenziale COGTESBO per tipob = "I" o "D"; per ogni bolla:
  11. Verifica causale bolla su COGTABEL tipo 15
  12. Verifica filtro data (dataini/datafin)
  13. Verifica filtro cliente singolo
  14. Rottura cliente: wr-cli al cambio cliente (tot-cli)
  15. loop1: scansione COGMOMAG per le righe della bolla
  16. Per tipo 'D': calcolo IVA su COGTABEL tipo 67 + applicazione arrotondamento tipo "I" (COGU10 op. "Arrotonda")
  17. Formattazione valore riga con COGU10 op. "Edita"
  18. Scrittura riga su stampa
  19. Fine stampa (fine-stampa): chiamata COGS54 con s54-after-print = "S"
  20. Chiusura (fine): chiusura file, z-99-exit-program

File e tabelle acceduti

File logico Record Modalita' Uso
COGTESBO tes-rec Input Testate bolle/DDT
COGMOMAG mag-rec Input Movimenti di magazzino (righe bolla)
COGMERCI mer-rec Input Anagrafica merci (descrizione)
COGGEANA ana-rec Input Anagrafica generale (nome cliente)
COGMAGA2 magz-rec Input Anagrafica magazzini
COGTABEL euta-rec Input Tabelle di sistema (tipo 15: causali bolle; tipo 67: aliquote IVA; tipo 14: pagine)
COGCAUZI Input Cauzioni (scansione, sezione src-cau non attiva)
FEURTAB feurtab Input Tabella generica Eurosystem
FLSTA riga Output File di stampa

Chiave di accesso COGTESBO

La scansione usa tes-chia4 (START NOT LESS), composta da tes-mag + tes-tipocf + tes-nonno + tes-padre + tes-figlio + tes-anno4 + tes-tipob4 + tes-bolla4. Vengono filtrate solo le bolle con tes-tipob = "I" o "D".

Chiave di accesso COGMOMAG

Scansione sequenziale da mag-chiap = mag-mag1 + mag-tipob1 + mag-anno + mag-prog(=0) + mag-bolla1. Interruzione quando mag-bolla4 <> tes-bolla3.

Chiave COGTABEL tipo 15 (causali bolle con fattura)

euta-tipo = 15
euta-cod  = comkey (comcod = tes-causale a 2 cifre)

Campo determinante: euta-cb-con-fat. Se = "NO" la bolla viene saltata.

Chiave COGTABEL tipo 67 (aliquote IVA per tipo 'D')

euta-tipo = 67
euta-cod  = mag-alf

Campo utilizzato: euta-ivali (percentuale IVA).


Copybook inclusi

Strutture dati

Copybook Contenuto
feurtab.fd / cogtabel.fd / cogmerci.fd / coggeana.fd / cogmaga2.fd / cogtesbo.fd / cogmomag.fd / cogcauzi.fd / flsta.fd SELECT dei file
cogfiles.cpy FD feurtab
coggeana.cpy Record anagrafica generale
cogtabel.cpy Record tabelle
cogtesbo.cpy Record testate bolle
cogmaga2.cpy Record magazzini
cogmomag.cpy Record movimenti magazzino
cogmerci.cpy Record merci
cogcauzi.cpy Record cauzioni
flsta.cpy Record riga stampa
wstato.cpy / wgrave.cpy / wopenf.cpy / wnscr.cpy Working storage comuni
cogazien.cpy Dati azienda
k-u10.cpy Costanti COGU10 (non incluso direttamente ma usato via util-u10)

Utility

Copybook Contenuto
utils52.cpy Interfaccia COGS52 (calendario)
utils54.cpy Interfaccia COGS54 (gestione stampa)
utilu10.cpy Interfaccia COGU10

Linkage

Copybook Contenuto
wcont.cpy Stringhe comuni
wcont1.cpy Stringhe comuni 1

Routine comuni (COPY fine procedure)

Copybook Contenuto
stato.cpy Gestione stato file
winmsg.cpy Messaggi a video
grave.cpy Errori gravi
open1.cpy Apertura file (open-files)
mmmask.cpy Init/exit programma standalone

Programmi chiamati (CALL)

Programma Scopo
COGU10 Formattazione importi, conversione divisa, arrotondamento ("GetDivisaConto", "Cambio", "Arrotonda", "Edita")
COGS52 Calendario per selezione data partenza e data arrivo
COGS54 Selezione destinazione stampa e gestione after-print

Configurazione (RNEWCONF)

Il programma non legge RNEWCONF direttamente. Le uniche costanti sono: - k-program-id = "COGV80CS" (78 level) - k-chr-stampa = 122 (carattere stampa per COGS54)


Logica di business

Selezione bolle da fatturare

Il flag scelta: - Se = "SI": esclude le bolle gia' fatturate (tes-flagfat = "*") - Se blank/altro: include tutte le bolle di tipo "I" o "D"

Filtro per causale (tipo 15 COGTABEL)

Per ogni bolla, la causale tes-causale viene cercata nel tipo 15 di COGTABEL con chiave comcod = tes-causale. Se euta-cb-con-fat = "NO", la bolla non rientra nel ciclo di fatturazione e viene saltata.

Calcolo IVA per bolle tipo 'D'

Per le righe di bolle con mag-tipob1 = "D": 1. Lettura aliquota da COGTABEL tipo 67 con chiave mag-alf 2. Se la divisa del movimento (mag-currency) differisce dalla divisa del conto (w-currency-conto): conversione tramite COGU10 op. "Cambio" 3. Applicazione IVA: w-prezzo = w-prezzo + (w-prezzo * euta-ivali / 100) (arrotondamento tipo "I") 4. Calcolo valore: w-valore = mag-qtamagaz * w-prezzo (arrotondamento tipo standard)

Struttura dell'output stampato

  • Intestazione (intesta): titolo "SITUAZIONE BOLLE DA FATTURARE", data, numero pagina, descrizione magazzino, separatori
  • Righe dettaglio (r1): note (nome cliente), tipo bolla, data, numero bolla, quantita' carico, importo, codice merce (gru+sot+cod), descrizione
  • Subtotale cliente (wr-cli): totale-cli con "T O T A L E ----->"
  • Totale generale (wr-tot): tot-tot
  • Rottura pagina: se salto = "SI", ogni cambio cliente produce perform intesta (nuova pagina)

Paragrafo rotsocio

Legge COGTABEL tipo 14 (codice pagina sav-pag) per ottenere una descrizione da inserire come nota nelle righe stampate. Aggiunge anche il sottototale tot-val a fine pagina.


Variabili di stato principali

Variabile Descrizione
magazzino Codice magazzino (1 car.)
scelta "SI" = solo bolle non fatturate
salto "SI"/"NO" = salto pagina per cliente
single Codice cliente singolo (0 = tutti)
dataini / datafin Intervallo date (formato AAAAMMGG)
old-nonno Codice cliente precedente (per rottura)
tot-cli Totale importi cliente corrente
tot-tot Totale generale
tot-qta Totale quantita'
tot-val Totale valore pagina corrente
ct Contatore righe per pagina (intestazione ogni 50 righe)
ctpage Numero pagina
des Flag prima riga bolla (0=prima, 1=gia' stampato)
w-currency-conto Divisa del conto corrente