campo-sirio/cg/iva.txt
alex cbb608d183 Patch level : xx.811
Files correlati     :
Ricompilazione Demo : [ ]
Commento           : Riportata la versione 1.5 fino alla patch 811


git-svn-id: svn://10.65.10.50/trunk@8985 c028cbd2-c16b-5b4b-a496-9718f37d4682
2000-05-05 15:25:49 +00:00

829 lines
38 KiB
Plaintext
Executable File

IVA.TXT
=======
AZIONE DATA CHI COMMENTO
=======================================================================================================
creato 1996/07/19 angelo descrizione dei file usati nei programmi di liquidazione
aggiornato 1996/10/22 angelo descrizione generica del funzionamento del programma di liquidazione
aggiornato 1996/11/13 angelo modifiche per trasferimento ad IVA 11'96
aggiornato 1996/11/20 angelo modifiche per aggiungere codice A36 in stampa riepilogo progressivi
aggiornato 1996/12/01 angelo modifiche per trasferimento IVA11. Corretto il trasferimento di piu' attivita'
aggiornato 1997/10/20 angelo modifiche per implementazione progressivi (PIM) sulla 13a liquidazione
aggiornato 1997/10/31 angelo modifiche per nuovo prospetto agricolo
aggiornato 1997/12/01 angelo modifiche per IVA11'97
aggiornato 1997/12/05 angelo modifiche per PRORATA dal 1998
aggiornato 1999/02/10 angelo modifiche per Sospensione IVA, PLAFOND & PRORATA dal 1998
PROPOSITO
=========
Il seguente file non e' niente di ufficiale e pertanto da ritenersi valido cosi com'e'.
La documentazione che segue sono varie note sul funzionamento dei programmi IVA, descrizione
delle tabelle utilizzate ecc. di modo che' chicchessia possa subentrare senza troppi
problemi in questo sconfinato mondo di imposte sul valore aggiunto.
Sarebbe cosa buona e giusta che eventuali importanti modifiche ai programmi siano qui
dettagliatamente spiegate, onde evitare avere sempre un documento a portata di mano che
tutti possano consultare, senza dover scorrere disperatamente 10000 linee di C++
19 Luglio 1996
TABELLE PROGRESSIVI
-------------------
Ecco qui, tanto per cominciare un elenco riassuntivo delle tabelle utilizzate dai programmi
di calcolo liquidazione, visualizzazione e stampe varie.
%DEL: tabella comune per memorizzare i versamenti effettuati (deleghe IVA)
CODTAB = CODDITTA(Z)[0-4]+ANNO[5-8]+MESE(Z)[9-10]+TIPO[11,11]
S6 = Codice tributo
S7 = Codice ABI banca
S8 = Codice CAB banca
S9 = Codice concessione
D0 = Data delega
R0 = Importo versamento (esclusi interessi)
R1 = Interessi da pagare
R2 = Importo del versamento inclusi interessi
B0 = Stampato
Nota: l'ultimo carattere di CODTAB (TIPO) si riferisce al tipo di versamento:
1 = normale
2 = annuale
3 = art.74
4 = cessazione attivita'
5 = integrativa
7 = acconti IVA
Il campo R2 in realta' non e' la somma di R0 + R1, poiche' R0 = ROUND(R2 - R1).
Pertanto e' utile tenere l'importo lordo non arrotondato in un campo separato
visto che in alcuni casi la liquidazione richiede di stampare proprio questo valore.
%LIA: tabella comune per memorizzare i risultati della Liquidazione IVA Annuale
CODTAB = DITTA[0-4](Z)+ANNO[5-8]
S1 = Credito precedente e acquisti intracomunitari separati da !
S7 = Frequenza versamenti per anno liquidazione (M,T)
S8 = Tipo acconto ("S"aldo oppure "A"cconto)
R0 = Credito anno precedente
R1 = Volume di affari lordo
R2 = Volume di affari attivita' 1
R3 = Volume di affari attivita' 2
R4 = Acconto dicembre
R5 = Credito di costo agenzie di viaggio
R6 = Credito utilizzato
R7 = Iva sulle vendite annotate fino al 20/12
R8 = Iva sugli acquisti annotati fino al 20/12
R9 = Rettifica
R10 = Iva chiesta a rimborso
R11 = Ulteriori detrazioni
R12 = Pro-rata indetraibile
R13 = Iva su operaz. fino al 20 dic., ma non fatturate
R14 = Iva su operaz. fino al 20 dic., ma non annotate
B1 = Liquidazione differita
B2 = Regime agricoltore minimo
LAM: tabella di ditta per memorizzare i risultati Liquidazione Attivita' Mensile
CODTAB = ANNO[0-3]+MESE(Z)[4-5]
R0 = Totale IVA vendite in regime IVA su tutte le attivita'
R1 = Totale IVA acquisti in regime IVA su tutte le attivita'
R2 = Credito precedente o inizio anno
R3 = Debito precedente da liquidazione a debito < 50.000
LIM: tabella di ditta per memorizzare i risultati della Liquidazione Iva Mensile
CODTAB = ANNO[0-3]+MESE(Z)[4-5]
S0 = Descrizione rettifica (1)
S1 = Descrizione rettifica (2)
S4 = Codice ABI presso cui e' effettuato il versamento
S5 = Codice CAB presso cui e' effettuato il versamento
S6 = Codice concessione a cui e' intestato il versamento
S7 = D = rettifica a debito; C = rettifica a credito
R0 = Risultato mese ( < 0 = credito): comprende tutto
R1 = Rimborso richiesto (immesso da visualizzazione)
R2 = Credito di costo agenzie di viaggio
R3 = Debito mensile agenzie di viaggio
R4 = Percentuale di ripartizione agenzie di viaggio
R5 = Importo rettifica ( < 0 = a credito)
R6 = Totale ulteriori detrazioni
R7 = Totale conguaglio prorata (solo in annuale)
R8 = Totale versamenti effettuati
R9 = Totale versamenti integrativi effettuati
R10 = Tasso di interesse applicato
R11 = Acconto versato a dicembre (solo per dicembre!)
R12 = Risultato totale a credito (segno +)
R13 = Risultato totale a debito
R14 = Interesse versato
D0 = Data versamento
B0 = Mese calcolato (invalidato da primanota)
B1 = Stampato su registro bollato
B2 = Diritto al rimborso infraannuale per il mese
PIM: Tabella di ditta per memorizzare i progressivi IVA
CODTAB = ANNO[0-3]+ATT(Z)[4-8]+TIPATT[9,9]+REG[10,12]+MESE(Z)[13,14]+
TIPOCR[15,15]+CODIVA[16,19]+TIPODET[20,20]
S0 = Imponibile/IVA importi relativi art40 c.5/6/8 a.i.(separati da "!")
S1 = Imponibile/IVA fatture in ritardo (separati da "!")
S2 = Imponibile/IVA corrispettivi registrati al netto dell'IVA (separati da "!")
S4 = Codice IVA a cui ventilare (corrispettivi)
S5 = Tipo IVA (da tabella IVA)
I0 = Tipo importi (1 = netto, 2 = lordo)
I1 = Tipo movimento (1 = vendita, 2 = acquisto)
R0 = Imponibile totale
R1 = IVA totale
R2 = Lordo corrispettivi
R5 = Imponibile fatture con scontrino (<= R0)
R6 = IVA fatture con scontrino (<= R1)
R7 = Imponibile autofatture non resid. art. 17 (<= R0)
R8 = IVA autofatture non resid. art. 17 (<= R1)
R9 = Imponibile bolle doganali relative (compreso in R0)
R10 = IVA bolle doganali relative (compreso in R1)
R11 = Totale imponibile fatture sospensione imposta (indipendente da R0)
R12 = Totale IVA fatture sospensione imposta (indipendente da R1)
R13 = Totale imponibili falsi corrispettivi (reg corr ma doc come FS)
R14 = Totale IVA falsi corrispettivi (reg corr ma doc come FS)
B1 = Codice IVA corrispettivi da ventilare
B2 = Valido per calcolo volume di affari
B3 = Validi per calcolo rimb. infraanuuale
B4 = Riporta il flag RicAcq dei parametri ditta
Dove: ANNO e' l'anno di riferimento
ATT e' il codice attivita'(zerofilled)
TIPOATT e' il tipo di attivita' (1 default, 2 se ci sono anche altre attivita')
REG e' il registro (ACQ, VEN, COR)
MESE e' il mese di riferimento
TIPOCR e' il tipo di costo/ricavo (0,1,2,3,4,5,6,7,8,9: vedi piano dei conti)
CODIVA e' il codice IVA relativo
TIPODET e' il tipo di detrazione (" " = regime normale, "1" = IVA ind. su acquisti riferiti
a ricavi esenti, "3" = IVA indicata per passaggi interni al solo fine di calcolo
ventilazione, "9" IVA non detrabile per articolo 19)
PUM: Tabella di ditta per memorizzare i progressivi IVA
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE[10,11]
R0 = Totale cessioni beni ammortizzabili
R1 = Totale IVA su cessioni ammortizzabili
R2 = Tot. acquisti ammortizzabili detraz. 6%
R3 = IVA su beni ammortizz. detr. 6%
R4 = Totale vendite esenti IVA riga B1 (C1)
R5 = Totale vendite esenti IVA riga B2 (C2)
R6 = Totale vendite esenti IVA riga B3 (C3)
R7 = Totale acquisti esenti IVA riga B14
R8 = Totale imponibile passaggi interni
R9 = Totale IVA passaggi interni
R10 = Totale imponibile reg. agricolo tipo 1
R11 = Totale imponibile reg. agricolo tipo 2
R12 = Totale imponibile vendite esenti IVA
R13 = Totale vendite esenti iva riga B4 (C1A)
PAM: Tabella di ditta per memorizzare i progressivi IVA
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE(Z)[10,11]
R0 = Totale acquisti in regime IVA
R1 = Totale vendite in regime IVA (Vol Aff. Lordo Mensile)
R2 = Totale lordo acquisti beni per rivendita da inizio anno
R3 = Totale corrispettivi da ventilare
R4 = Totale imponibile bolle doganali (acquisti)
R5 = Totale IVA bolle doganali (acquisti)
R6 = Totale imponibile acquisti in sosp. imposta
R7 = Totale IVA acquisti in sosp. imposta
R8 = Totale imponibile vendite in sosp. imposta
R9 = Totale IVA vendite in sosp. imposta
R10 = Totale imponibile spese generali
R11 = Totale IVA spese generali
R12 = Totale Imponibile acquisti a esig. diff da detrarre
R13 = Totale IVA acquisti a esig. differita da detrarre
R14 = Totale Imponibile vendita a esig. differita da pagare
R15 = Totale IVA vendita a esig. differita da pagare
POM: Tabella di ditta per memorizzare i progressivi IVA
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE[10,11]
R0 = Totale IVA acquisti intracomunitari (flag INTRA su rmoviva)
R1 = Totale imponibile acquisti non detraibili art. 19
R2 = Totale IVA acquisti non detraibili art. 19
R3 = Totale imponibile acquisti beni ammortizzabili detraibili
R4 = Totale IVA acquisti beni ammortizzabili detraibili
R5 = Totale imponibile acquisti beni per rivendita (non sono tutti base per ventilazione)
R6 = Totale IVA acquisti beni per rivendita
R7 = Totale imponibile beni acquisiti in leasing
R8 = Totale IVA beni acquisiti in leasing
R9 = Totale imponibile acquisti indetraibili su ricavi esenti
R10 = Totale IVA acquisti indetraibili su ricavi esenti
R11 = Totale imponibile acq. beni ammortizz. non detraibili
R12 = Totale IVA acq. beni ammortizz. non detraibili
R13 = IVA a debito agenzie viaggio
PLM: Tabella di ditta per memorizzare i Progressivi Liquidazione Mensili
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE[10,11]
R0 = IVA vendite
R1 = IVA acquisti
R2 = Pro-rata indetraibile totale (acq. rif. anno attuale + acq. rif. anni precedenti)
R3 = Ulteriori detrazioni (6%)
R4 = % pro-rata anno precedente
R5 = se AG.VIAGGIO: Corrispettivi CEE; se AGRICOLO: tipo agr. == 1
R6 = se AG.VIAGGIO: Corrispettivi extra CEE; se AGRICOLO: tipo agr. == 2
R7 = se AG.VIAGGIO: Acquisti CEE; se AGRICOLO: tipo agr. == 3
R8 = se AG.VIAGGIO: Acquisti fuori CEE; se AGRICOLO: tipo agr. == 4
R9 = se AG.VIAGGIO: Corrispettivi misti CEE; se AGRICOLO: tipo agr. == 5
R10 = se AG.VIAGGIO: Acquisti misti CEE; se AGRICOLO: tipo agr. == 6
R11 = se AG.VIAGGIO: Acquisti misti fuori CEE;
R12 = % pro-rata corrente
R13 = se AGRICOLO: totale iva in detrazione Ia parte tabella A
R14 = Pro-rata indetraibile acq. rif. doc. 2 anni precedenti (ma con % prorata anno addietro)
R15 = Pro-rata indetraibile acq. rif. doc. 3 anni precedenti (ma con % prorata 2 anni addietro)
R16 = % pro-rata 2 anni addietro
B0 = Attivita' calcolata
B1 = TRUE se vi sono documenti con riferimento anno prec. ma manca la tabella (solo dal 1998)
PPA: Tabella di ditta per memorizzare i Progressivi Plafond Attivita mensili
CODTAB = ANNO[0-3]+CODATT(Z)[4-8]+TIPOATT[9,9](sempre = 1)+MESE(Z)[10,11]TIPOESENZIONE[12,12]
R0 = Totale acquisti Italia
R1 = Totale acquisti estero (bolle doganali)
R2 = Rimanenza plafond mese precedente (non conteggia il mese in corso)
%PLA: Tabella comune per memorizzare i dati annuali per i PLAfond
CODTAB = DITTA[0-4]+ANNO[5-8]+CODATT(Z)[9-13]+TIPOATT(sempre = 1)[14,14]
S1 = (real)Volume di affari attivita' 2
S2 = (Non utilizzati)
S3 = (Non utilizzati)
S3 = (Non utilizzati)
S7 = Tipo attivita' ("S"ervizio, "M", "E")
R0 = Totale vendite in regime IVA (valido per calcolo prorata)
R1 = Totale acquisti esenti riga B1 (C1)
R2 = Totale acquisti esenti riga B2 (C2)
R3 = Totale acquisti esenti riga B3 (C3)
R4 = Totale cessioni beni ammortizzabili
R5 = Ammontare iniziale plafond art. 8
R6 = Ammontare iniziale plafond art. bis
R7 = Ammontare iniziale plafond art. 9
R8 = % pro-rata
R9 = conguaglio pro-rata
R10 = % pro-rata ricalcolato (vale per l'anno successivo)
R11 = Totale IVA acquisti attivita' (senza pro-rata pagato nell'anno)
R12 = Totale pro-rata pagato nell'anno
R13 = Totale lordo vendite attivita'
R14 = Volume affari attivita' 1
R15 = Totale acquisti esenti riga B4 (C1A)
%IVA: Tabella comune per memorizzare i dati relativi ai codici iva
CODTAB = Codice
S0 = Descrizione
S1 = Tipo codice ("" = Regime normale, "VE" = ricavi da ventilare, "ES" = operazioni esenti"
"NI" = operazioni non imponibili, "NS" = Non soggetti
S3 = Tipo di gestione plafond ("" = gestione normale, "1" Op. art. 8, "2" op. art. 8bis,
"3" op. art. 9)
S4 = Tipo di gestione regime agricolo ("" = regime normale, "1" vendite regime agr.,
"2" = vendite accessorie/acquisti non agr., "3" = acquisti ad uso promiscuo)
S5 = Tipo di gestione per ag. viaggio ("" = regime normale, "1" = op. interno CEE,
"2" = op. fuori CEE, "3" = vendite miste CEE, "4" = acquisti misti parte CEE,
"5" acquisti misti parte fuori CEE)
S6 = Codice IVA a cui ventilare
S7 = Numero della colonna allegato clienti ("" = non in allegato, "1" = imponibili,
"3" = non imponibili)
S8 = Numero della colonna allegato fornitori ("" = non in allegato "1" = imponibili,
"3" = senza app. imp., "4" = Non imponibili)
R0 = Aliquota
I0 = Percentuale IVA teorica
S2 = N.ro di riga vendite IVA11 per op. esenti e non imponibili
"" Nessuno
"20" Operazioni non imponibili (comma 1, artt.8, 8bis e 9)
"21" Operazioni non imponibili a seguito di dich. d'intento
"22" Altre operazioni non imponibili
"24" Operazioni non soggette (art. 74 comma 7)
"25" Op. non sogg. effettuate nei confronti di terremotati
"B1" Ammontare op. es. escluse da nr. 1 a 9 e 11 art. 10
"B2" Ammontare op. es. di cui al nr. 11 art. 10
"B3" Ammontare op. es. di cui ai nr. 1 a 9 art. 10
"B4" Ammontare op. es. di cui ai nr.
"B5" Ammontare op. es. di cui ai nr.
"G7A" Cessioni intracomunitarie non imponibili
"G7B" Prestazioni di servizi non soggette all'imposta
S9 = N.ro di riga acquisti IVA11 per op. esenti e non imponibili
"" Nessuno
"10" Acquisti non imponibili (comma 2, artt8, 8bis e 9)
"11" Altri acquisti non imponibili
"12" Acquisti esenti
"13" Acquisti non soggetti (art. 74 comma 7)
"14" Acquisti non soggetti all'imposta effettuati dai terremotati
B0 = TRUE se il codice deve comparire nel modello 101
B1 = TRUE se il codice deve comparire nel modello 102
B2 = Codice IVA sospeso (TRUE se vero)
B3 = Codice escluso dal calcolo rimborso infrannuale (TRUE se vero)
B4 = Codice escluso dal calcolo rimborso per aliquota media (TRUE se escluso)
ESC: tabella di ditta per memorizzare gli esercizi contabili
CODTAB = Codice esercizio
D0 = Data inizio esercizio
D1 = Data fine esercizio
D2 = Data di scarico
RMB: tabella di ditta per memorizzare i rimborsi (obsolete?)
CODTAB = ANNO[0-3]+MESE(Z)[4-5]+CODIVA(Z)[6-9]+TIPOREG[10,10]
R0 = Imponibile per rimborso
R1 = IVA per rimborso
R2 = Percentuale IVA relativa
%VER: tabella comune per memorizzare i parametri relativi agli interessi ed ai versamenti.
CODTAB = ANNO[0,3]+MESE[4,5]
R0 = Percentuale interesse primo trimestre
R1 = Percentuale interesse secondo trimestre
R2 = Percentuale interesse terzo trimestre
R3 = Percentuale interesse quarto trimestre
R4 = Percentuale interesse annuale
R5 = Importo minimo versamento periodico
R6 = Importo minimo versamento annuale
R7 = Importo minimo versamento acconto
R8 = Importo minimo versamento integrativo
R9 = Importo minimo versamento cessazione
R10 = Importo minimo versamento Art. 74
R11 = Percentuale per calcolo acconti su liquidazione normale
R12 = Percentuale per calcolo acconti su liquidazione differita
PIA: Tabella di ditta per memorizzare i Progressivi IVA compensazione Agricoli
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE[10,11]+IVAORD[12,15]+IVACOM[16,19]
R0 = Totale imponibile
R1 = Totale IVA secondo codice IVA di compensazione
22 Ottobre 1996
SEQUENZA DELLE CHIAMATE A FUNZIONE (FLUSSO GENERICO DEL PROGRAMMA)
==================================================================
Parte I: elaborazioni e calcoli:
-------------------------------
schema generico di flusso:
- set_print() :
* selezione input/ditte
- recalc_all()
* ciclo per ditte selezionate
* setta ditta corrente
* reperisce dati dalla ditta
* controlla sulle lim(B0) dei mesi preceddenti se devono essere ricalcolate
* ciclo da 1 al mese selezionato in input (_month)
- update_firm() per ogni mese del ciclo
* carica alcuni dati della ditta
* ciclo per ogni attivita' della ditta
* ciclo per tipo di attivita' (1 o 2)
* reperisce dati per l'attivita' corrente,
inizializzando tabelle per memorizzare progressivi e calcoli
* scorre i registri per settare flag per ventilazione (_isvent)
* se e' necessario il calcolo chiama:
- update_att()
* se sta calcolando la 13a chiama:
- recalc_annual()
* se e' richiesto il riepilogo liq ed e' l'ultimo mese
in elaborazione chiama:
- describe_att()
** fine ciclo
* se attivita' mista stampa il riepilogo:
- describe_att()
** fine ciclo
* se quater stampa il riepilogo:
- describe_att()
* se mese compatibile con il regime frequenza IVA:
- write_liq()
* se e' l'ultimo mese in elaborazione del ciclo:
- recalc_rimborso()
* se e' l'ultimo mese in elaborazione del ciclo e deve stampare la liquidazione:
- describe_firm()
- describe_liq()
* se e' stampa registri ed e' stato calcolato l'acconto
- describe_liq_acc();
* fine ciclo per mese
* fine ciclo per ditte
dettagli di funzioni:
- update_att() // aggiorna i progressivi per la ditta/mese/attivita' corrente
- zero_att() // scorre i pim/pum/pam/plm... e azzera quelli del mese/attivita' corrente
- recalc_att()
- recalc_ventilation()
- recalc_corripettivi()
- recalc_annual() // ricalcola progressivi annuali liq.
* legge dalla PLA alcuni dati
* scorre i PIM dell'anno corrente
* esegue la sommatoria di PIM->R0 per calcolare i volumi d'affari
* scorre i PLM della corrente attivita'
* esegue la sommatoria di alcuni campi di PLM/PUM/PAM
* scrive in PLA i dati calcolati
- describe_att()
// setta i vari DescrItem, che aggiunge a _descr_arr per la stampa successiva
- describe_name()
- describe_plafond()
- describe_ventilation()
- describe_agricolo()
- describe_viaggio()
- describe_pims()
- describe_consistence()
- write_liq() // Calcolo liq. mensili e liq. annuali. Scrive le lim
* posiziona tabella %VER
* calcola mese di rif. per liq. differita
* azzera variabili per totali vari
* ciclo sulle attivita' passate come parametro
* se differita e primo mese setta l'anno precedente
* ciclo su tutti i mesi (1..13)
* posiziona PLM
* totalizza vari importi
* fine ciclo sui mesi
* se agenzia di viaggio e non liq. diff.
* calcola credito costo, debito mensile, perc. ripart.
* fine ciclo su attivita'
* rettifica il risultato con credito prec. in base al mese corrente.
* se e' 13a liq.
* ciclo sulle attivita'
* totalizza volumi d'affari e calcola nuovo prorata, riscrivi PLA e LIA
solo se tipo di attivita' e' 1
* fine ciclo
* riscrive i volumi d'affari in LIA (R1,R2,R3)
* azzera record corrente di LIM, tranne R1, R5, S1, S0, S7
* rettifica il risultato con versamenti, acconto di dicembre...
* schiaffa dentro LIM/LAM vari risultati di calcoli
* mette il flag di ricalcolato sul record LIM del mese corrente(B1)
* se 13a liq. arrotonda alle 1000 lire sup. diversi importi e li rischiaffa in LIM/LAM
* riscrive LIM/LAM
- recalc_rimborso() // calcola condizioni per il diritto al rimborso infrannuale
// chiamata soltanto per i trimestri anche se annuale
// aggiornata a normative per anno liq. > 1994
* ciclo sulle attivita'
* totalizza volume d'affari ed es. non impon. (varia se usare 3 mesi oppure no)
// Prima condizione per il rimborso
* se rapporto tra esenti e vol. d'affari e > minima parte esente (0.25)
crea il _DescrItem del RIMBORSO
// Seconda condizione per il rimborso
* scorre i PIM per totalizzare imponibile/imposta acquisti/vendite
* se (iva acquisti/totale acquisti) > (iva vendite/ totale vendite),
ovvero se l'aliquota medit adegli acquisti e' > dell'aliquota media
delle vendite, allora...
* se l'aliquota acquisti eccede la soglia minima (10%) allora si ha diritto al rimborso.
* genera un _DescrItem con totale acquisti/vendite, rispettivi totali
imposte ed aliquota media.
* se sono state riscontrate le condizioni per il rimborso riscrive LIM.
* ritorna il _DescrItem generato.
- describe_firm()
* genera un _DescrItem con i dati della ditta:
rag. soc., freq. iva, mese corrente.
* aggiunge il _DescrItem generato all'array _descr_arr
- describe_liq()
* genera un _DescrItem con i dati finali della liquidazione
con eventuale satellite per il rimborso e prospettino
per i versamenti
* aggiunge il _DescrItem all'array _descr_arr
- describe_liq_acc()
* genera un _DescrItem con i dati per la liquidazione dell'acconto
* aggiunge il _DescrItem a _descr_arr
dettagli di update_att()
************************
// funzioni chiave per il calcolo
- recalc_att()
* azzera variabili contenenti i progressivi
* ciclo per gli elementi del cursore impostato.
Il cursore e' cosi' fatto:
LF_MOV
|------->LF_RMOVIVA
|------->LF_CAUSALI
Quindi il ciclo sara' sui movimenti,
controlla se il registro e' presente, la relativa
riga di rmoviva e' presente e se la data deve essere considerata.
* ciclo per ogni riga IVA del movimento corrente
* qui totalizza nei vari casi, sottocasi, casi particolari,
tutte le imposte/imponibili, memorizzandoli nei progressivi IVA.
* fine ciclo per righe IVA
* fine ciclo per movimenti
* calcolati tutti i movimenti e aggiornati i pim
se necessario risistema le imposte acquisti beni
per rivendita (scorre i PIM dal primo all'ultimo ricalcolando l'iva e riscrivendoli)
* calcola il prorata solo se liq. periodica, e lo memorizza in PLM->R2
* se e' agenzia di viaggio memorizza i relativi progressivi
* se e' agricolo memorizza i relativi progressivi
* memorizza sempre e comunque altri progressivi comuni
* riscrive i record delle tabelle mensili(PLM,PAM,PUM,POM)
- recalc_ventilation() // ricalcolo della ventilazione
* ricalcola i pim dei mesi dal primo al corrente se necessario:
esegue un ciclo da 1 al mese corrente e chiama ogni volta update_att()
(sembra una storia ricorsiva, in realta' lo e' poco)
* ciclo da 1 al mese corrente
// aggiunge gli acquisti del mese m operando sui pim
* ciclo per tutti i PIM relativi. Per i codici != da NS, NI ed ES
aggiunge all'array _vent_arr i progressivi.
* calcola totale acquisti su tutte le aliquote (scorre tutti gli elementi di _vent_arr,
sommando l'elemento _totale.
* calcola totale vendite (solo se mese 13 e si sta calcolando la 13a)
* ricalcola (solo per il mese in corso!) operando sull'array _vend_arr, ove sono
memorizzate le vendite.
* scorre gli elementi di _vend_arr
* calcola la percentuale di ripartizione:
se siamo in annuale si deve ripartire il totale vendite annuale tra i vari mesi,
altrimenti il totale del mese.
L'importo cosi' preparato viene affettato a seconda degli elementi di
_vent_arr, le percentuali di ripartizione sono ottenute dal rapporto
tra il totale acquisti del mese e il totale acquisti
* scorre ancora gli elementi di _vent_arr e calcola l'imposta/imponibile
da ventilar. Corregge l'iva vendite nei PLM->R0 ed il volume
d'affari nei PAM->R1 ed aggiorna i PIM->(R0,R1)
* se siamo in annuale, dopo aver ripartito una prima volta, esce dal ciclo
(in pratica viene eseguito una sola volta)
* fine ciclo
* memorizza i totali per il prospettino di ventilazione
* riscrive il tot. acq e vendite in PAM
- recalc_corrispettivi() // ricalcolo dei corrispettivi
* viene eseguita solo se ci sono elementi in _corr_arr (modificato
tramite add_corrisp() in recalc_att())
* scorre tutti gli elementi di _corr_arr
* per ogni _CorrItem estrae imponibile, imposta
* aggiusta l'IVA vendite in PLM->R0
* aggiusta il volume d'affari in PAM->R1
* aggiorna i PIM->(R0,R1)
* riscrive i records modificati
Parte II: stampa:
-------------------------------
schema generico di flusso.
* La stampa, avviene dopo aver creato tutti gli opportuni
_DescrItem e memorizzati in _descr_arr.
Per far cio' si utilizza il meccanismo della TPrint_application
pur non utilizzando nessun cursore o relazione di stampa,
basta ridefinire preprocess_page(), postprocess_page() e la
set_page(). Si utilizza quest'ultima come fulcro centrale della stampa
sfruttando il parametro cnt che viene passato alla stessa, visto
che in casi come questi esso e' sempre incrementale.
Per farla in breve, sappiamo tutti che una TPrint_applicatione e' cosi'
fatta:
* ciclo fintantoche' set_print() [vedi sopra] ritorna TRUE
* ciclo fintantoche' si vuol ripetere la stampa.
* ciclo per il numero di copie della stampa
* ciclo (almeno una volta) fino a quando postprocess_print() ritorna la ripetizione
* se preprocess_print() ritorna TRUE allora
* ciclo (almeno una volta) fino a quando postprocess_page() ritorna la ripetizione
* se preprocess_page() ritorna TRUE allora
* set_page()
* print_one()
* fine ciclo
* fine ciclo
* fine ciclo
* fine ciclo
* fine ciclo
Nel nostro caso la preprocess_page() ritorna TRUE se il numero di elementi di
_descr_arr e' != da 0.
La postprocess_page() ritorna NEXT_PAGE solo se non ci sono elementi in
_descr_arr o se l'elemento che tiene il conteggio (cnt) e' arrivato alla fine (_descr_arr.items()-1)
Ecco quindi che la set_page() assume una importanza fondamentale per settare le righe di
stampa:
- set_page()
* reperisce il _DescrItem corrente grazie a cnt da _descr_arr.
* resetta tutte le righe di stampa
* setta il salto foglio automatico a FALSE
* esegue una selezione multipla in base al membro _flags di
_DescrItem:
CHG_PARMS
SET_FIRM
PIM_ROW
PIM_HEAD
MISC_LIQ
TOT_ROW
PLAFOND
VENTILA
REGAGR
REGVIA
THE_END
LIQACC
ACCONTO
ACCHEAD
DELDEB
DELCRED
in base ad ognuno di questi flags viene chiamata una diversa funzione di
set delle righe di stampa.
13 Novembre 1996
TRASFERIMENTO IVA11
===================
Nuova feature aggiunta in occasione delle modifiche per il trasferimento IVA11:
- cache di lettura per i codici IVA e tabella registri.
Vengono semplicemente mantenuti 2 assoc array (1 per i codici iva ed uno
per i registri) dove ogni volta che viene letto un record nuovo (quindi
non presente nell'array) viene memorizzato. Quando viene richiesta la lettura
di un record viene prima controllato che esso non sia gia' presente in cache.
Le modifiche sono state effettuate nelle funzioni look_iva() e look_reg().
Per il trasferimento IVA 11 sono state implementate 3 nuove funzioni:
iva11_set_arr(), iva11_set_arr_pim(), iva11_write() ed aggiunto un assoc array: _iva11_arr.
Il procedimento e relativamente semplice:
viene utilizzato un assoc array dove memorizzare i valori da trasferire sui
files tab1100a e tab1100b. La chiave per memorizzare i valori viene posta uguale
al nome campo relativo, facilitando cosi' l'accesso e senza troppi sprechi di memoria
essendo al massimo 125 campi.
Il filling dei campi viene effettuato in 2 procedure (iva11_set_arr e iva11_set_arr_pim).
La prima viene chiamata quando vengono scorse le righe di movimento IVA (recalc_att());
la seconda viene chiamata alla fine del calcolo dell'attivita', prima dello spostamento della
relazione sulla prossima (update_firm()).
La scrittura dei campi avviene in iva11_write(), chiamata subito dopo la iva11_set_arr_pim().
Particolarita':
iva11_set_arr_pim():
esegue un ciclo per tutti i PIM della ditta, scartando quelli che non servono
e raggruppando quelli che rispondono alle condizioni di trasferimento.
iva11_write():
esegue un ciclo per tutti i campi settati in _iva11_arr, facendo la put() per ognuno
sul rispettivo campo nel file opportuno (LF_TAB1100A o LF_TAB1100B).
Siccome i campi da trasferire sono piu' di 100 e per ora tale limite non puo' essere
superato il trasferimento viene effettuato su 2 files, collegati tramite relazione.
In realta' _iva11_arr e' un _BolgArray, derivato da TAssoc_array,
dove sono definiti i metodi add() e sub(), per aggiungere o sottrarre
importi all'elemento indicato. Gli elementi stessi di _iva11_arr in realta'
non sono solamente real, ma classi derivate da TObject, che contengono un real ed un
int identificante il numero logico del file al quale appartiene il campo.
20 Novembre 1996
AGGIUNTA STAMPA A36 NEI PROGRESSIVI
===================================
Per stampare cio' si e' seguito l'esempio della stampa di AF (ex A35).
Da rilevare, percio', la condizione di raggruppamento di tali progressivi
e la memorizzazione in PIM, nel campo S0. Naturalmente, siccome S0 e' una stringa e
siccome vanno memorizzati sia imponibile che imposta, il campo sara' una TToken_string
i cui elementi (2 real) sono separati da un "!", e non da un "|" per non creare
situazione spiacevoli in caso di scarico/carico da un file testo.
01 Dicembre 1996
CORRETTO TRASFERIMENTO DI PIU' ATTIVITA' SUL FILE TAB1100
=========================================================
La correzione riguarda lo spostamento della funzione iva11_write():
- iva11_write() viene ora chiamata dalla describe_liq(), per aver maggior
controllo sull'azzeramento dei campi R1 ed R2
Ma la modifica principale riguarda la struttura dati utilizzata per memorizzare i dati
trasferire.
Ora si utilizza un assoc_array principale (_iva11_arr) la cui chiave e'
il codice attivita' della ditta. Ogni elemento di _iva11_arr e' a sua
volta un assoc_array, la cui chiave e' come nella versione precedente e' il
nome del campo da trasferire. Per cui le modifiche fatte in iva11_set_arr(),
iva11_set_arr_pim() e iva11_write() riguardano la diversa gestione per
memorizzare e scorrere gli elementi dell'assoc_array _iva11_arr.
20 Ottobre 1997
IMPLEMENTAZIONE PIM13
=========================================================
Implementato il PIM 13, in modo tale da poter eliminare i precedenti
errori relativi al calcolo ventilazione annuale/corrispettivi.
Prima andava a sommare i risultati dei singoli mesi/trimestri: in
realta' per la liquidazione annuale, i mesi vanno considerati
come un tutt'uno. Le modifiche operate sono quindi relative al
ciclo di scansione ed elaborazione del cursore sui movimenti IVA.
Ora non scorre piu' un cursore prima sul mese 1 poi 2, 3, ecc.
ma uno unico da 1 a 13, schiaffando i risultati nel relativo PIM del
mese 13. Nella fase dei calcoli per ventilazione/scorporo scorrispettivi,
non si dovranno piu' fare ripartizioni di importo sui vari mesi precedenti.
Inoltre da ora in avanti per calcolare la liquidazione annuale non sara'
piu' necessario ricalcolare anche i periodi precedenti.
Tutto cio' velocizza un poco il calcolo liquidazione ed il trasferimento ad IVA11.
31 Ottobre 1997
NUOVO PROSPETTO REGIME AGRICOLO
===============================
Queste modifiche valgono dal 1998 in poi.
Aggiunto nuovo FLAG sulla tabella LIA (campo B2), per indicare se
trattasi di agricoltore con volume d'affari minimo: sono stati
quindi modificati programmi di impostazione parametri liquidazione,
apertura anno IVA, oltre a calcolo/stampa.
Il nuovo flag di agricoltore minimo serve per selezionare le ditte
in calcolo liquidazione: se l'anno e' 1998 o successivi E la liquidazione
da calcolare non e' annuale E tale flag e' settato, una determinata ditta
non puo' essere inclusa nella lista dei calcoli da effettuare.
Viene aggiunta una nuova tabella di progressivi (tabella PIA: Progressivi Iva compensazione
Agricoli), il cui tracciato e' il seguente (riportato anche all'inizio)
PIA: Tabella di ditta per memorizzare i Progressivi IVA compensazione Agricoli
CODTAB = ANNO[0-3]+CODATT[4,8]+TIPOATT[9,9]+MESE[10,11]+IVAORD[12,15]+IVACOM[16,19]
R0 = Totale imponibile
R1 = Totale IVA secondo codice IVA di compensazione
Memorizzazione dei progressivi:
tutte le vendite in regime agricolo con "segnalino" a 1 (che termine di merda che usano su
sistema..), vanno sommate distintamente per codice IVA principale + codice IVA compensato.
L'imposta (PIA->R1) va calcolata sul totale imponibile (PIA->R0) per ogni record della tabella,
una volta finita la sommatoria.
Il codice IVA di compensazione, (udite udite!), viene memorizzato sul
PIANO DEI CONTI (nel campo IVACOMP) per ogni SOTTOCONTO di RICAVO(campo INDBIL).
Attenzione: per effettiva congruenza il campo INDBIL e' significativo solo sul
relativo CONTO, indi si procedera' ad una ulteriore rottura/mazzata sui coglioni, in quanto
per ogni movimento IVA si dovranno fare 2 accessi al file del PIANO DEI CONTI:
uno per leggere il codice IVA di compensazione (campo IVACOMP)
uno per leggere se il conto e' di ricavo (campo INDBIL).
Una volta completata la tabella (fatta in recalc_att()), si procedera'
alla descrizione di tali progressivi (describe_agricolo()). Il nuovo prospetto
viene messo poco prima del prospetto agricolo, ma comunque nella stessa pagina.
Nel prospetto agricolo viene aggiunta una riga in piu':
IVA ammessa in detrazione I parte tabella A, il cui importo riguarda il totale
dell'iva vendite compensata. Tale importo (PLM->R13) viene sommato al vecchio totale IVA ammessa
in detrazione, per avere l'importo corretto.
Attenzione, il nuovo calcolo viene applicato solo dal 1998 in poi!!
01 Dicembre 1997
IVA11 '97
=========
- cambiato A13 in VA7
- aggiunte aliquote 7,5% e 20%
Variazioni ai campi di trasferimento
rimossi : EC206, FBC* e FC117
aggiunti FC115 FC116 FC209 FC210
SBI07 SBI08 SBF12 SBF13
XC101...XC111 XC201...XC208 (al posto di FBC*)
AGVE05 AGVE06 ABVE05 ABVE06
AGME05 AGME06 ABME05 ABME06
AGME*, AGVE*, ABME* ABVE* sono stati spostati su TAB1100B
L2, L2BIS sono stati spostati su TAB1100B
05 Dicembre 1997
PRORATA dal 1998
================
Dal 1998 sara' possibile registrare fatture in ritardo con anno data documento
precedente all'anno di registrazione stesso.
In questo caso ll'importo PRORATA del PERIODO (non annuale) deve essere calcolato
applicando la percentuale corrispondente all'anno del documento.
Tutti gli acquisti soggetti a pro-rata devono essere distinti in base all'anno della
data documento e di conseguenza la detraibilita' deve essere evidenziata e
calcolata con due possibili percentuali: una dell'anno attuale e una dell'anno
precedente. Se in fase di liquidazione la tabella dell'anno precedente non esiste
ma esistono acquisti con anno documento relativo all'anno precedente si calcola il
pro-rata con la percentuale corrente, segnalando tuttavia la mancata presenza
di tale tabella per l'anno precedente.
Per far questo e' stato implementato un oggettino: _ProrataItem, cui vengono
settate la percentuale attuale e la percentuale precedente. E' stato implementato
anche un metodo calc_prorata() cui si passa il valore degli acquisti ed un flag
per calcolare con percentuale attuale o precedente. Nella tabella PLM
e' stato recuperato R4 per memorizzare la percentuale pro-rata precedente, inoltre
viene memorizzato in R14 il prorata relativo agli acquisti con riferimento anno
precedente. In B1, infine, viene settato il flag a TRUE se in stampa
esistono documenti dell'anno precedente man non esiste la percentuale
pro-rata ad essa relativi.
Casistiche: (vedi _ProrataItem::set())
- il calcolo vale solo a partire dal 1998
- se le % sono uguali oppure non siamo ancora nel 1998 considera
tutto sull'anno corrente
- se non ha trovato la percentuale anno prec usa quella corrente,
segnalando pero' l'errore.
10 Febbraio 1999
================
Mannaja!
Ecco quindi svelati i piu' reconditi misteri del programma di liquidazione.
Auguro a chiunque buon divertimento.