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¶
- Inizializzazione (
cin-cin): controllo abilitazione, apertura file, lettura azienda, lettura divisa conto (COGU10 op. "GetDivisaConto"), visualizzazione maschera - Accept parametri:
a100: codice magazzino → lettura COGMAGA2a102: solo bolle da fatturare (SI/blank)a104: salto pagina per cliente (SI/NO)a106: singolo cliente (zero = tutti) → lettura COGGEANAa110: data partenza (via COGS52)a140: data arrivo (via COGS52) + controllo dataini <= datafin- Conferma stampa (
a222): chiamata COGS54 per selezione destinazione - Ciclo stampa (
loop): scansione sequenziale COGTESBO per tipob = "I" o "D"; per ogni bolla: - Verifica causale bolla su COGTABEL tipo 15
- Verifica filtro data (dataini/datafin)
- Verifica filtro cliente singolo
- Rottura cliente:
wr-clial cambio cliente (tot-cli) loop1: scansione COGMOMAG per le righe della bolla- Per tipo 'D': calcolo IVA su COGTABEL tipo 67 + applicazione arrotondamento tipo "I" (COGU10 op. "Arrotonda")
- Formattazione valore riga con COGU10 op. "Edita"
- Scrittura riga su stampa
- Fine stampa (
fine-stampa): chiamata COGS54 cons54-after-print = "S" - 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 produceperform 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 |