Patch level : 12.0 488
Files correlati : cg0.exe cg0500a.msk cg2.exe cg4.exe Reverse charge : Implemetata la possibilità di mettere il fornitore sulla regolarizzazione. Nelle causali di sola iva si può mettere un fornitore anche se identificano un registro delle vendite. Il movimento di regolarizzazione viene creato come prima se inserisco un cliente corrispondente altrimenti viene usato il codice del fornitore stesso. Fatture in ritardo : implementata la gestione delle fatture in ritardo (con data documento anno precedente). Fino ad aprile le fatture non vengono detratte e vengono poi detratte a Maggio come credito. Da maggio in poi sono indetraibili. Sul registro le fatture vengono identificate con tipo documento e "CD" quelle fino ad aprile e con tipo documento e "CI" quelle fino da maggio in poi. git-svn-id: svn://10.65.10.50/branches/R_10_00@24241 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6072e16b98
commit
ead18cd8f5
@ -588,7 +588,12 @@ bool TCaus_app::conto_hndl (TMask_field& f, KEY k)
|
||||
if (full && sezione == ' ')
|
||||
sezione_consigliata = app().ss().row(0).get_char(1) == 'D' ? 'A' : 'D';
|
||||
}
|
||||
|
||||
|
||||
const bool solaIVA = (TipoIVA)app().curr_mask().get_bool(F_SOLAIVA);
|
||||
|
||||
if (!ok && solaIVA && cf == 'F')
|
||||
ok = true; // le regolarizzazioni possono avere un fornitore sulla vendita fittizia
|
||||
|
||||
if (!ok)
|
||||
return cfld.error_box(
|
||||
FR("%s non valido con registro %s"), cf == 'C' ? TR("Cliente") : TR("Fornitore"), iva2name(tpr));
|
||||
|
@ -172,6 +172,12 @@ BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
BOOLEAN F_SOLAIVA
|
||||
BEGIN
|
||||
PROMPT 2 6 "Movimento di sola IVA"
|
||||
FIELD SOLOIVA
|
||||
END
|
||||
|
||||
SPREADSHEET F_SHEET_GCS
|
||||
BEGIN
|
||||
PROMPT 0 7 "Righe"
|
||||
@ -288,12 +294,6 @@ BEGIN
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_SOLAIVA
|
||||
BEGIN
|
||||
PROMPT 34 11 "Movimento di sola IVA"
|
||||
FIELD SOLOIVA
|
||||
END
|
||||
|
||||
BOOLEAN F_MOV_SEZ
|
||||
BEGIN
|
||||
PROMPT 34 11 "Movimento solo sezionale"
|
||||
|
@ -832,6 +832,14 @@ void TPrimanota_application::init_insert_mode(TMask& m)
|
||||
{
|
||||
occas_mask().reset();
|
||||
m.hide(F_OCCASEDIT);
|
||||
|
||||
const TString& tipo = clifo();
|
||||
|
||||
m.set(F_CLIFO, tipo);
|
||||
m.show(F_CLIENTE, tipo == "C");
|
||||
m.show(F_RAGSOCCLIENTE, tipo == "C");
|
||||
m.show(F_FORNITORE, tipo == "F");
|
||||
m.show(F_RAGSOCFORNITORE, tipo == "F");
|
||||
#ifdef PRORATA100
|
||||
m.hide(F_ADJUST_PRORATA); // In inserimento non puo' esistere un pro-rata errato!
|
||||
#endif
|
||||
@ -931,7 +939,18 @@ void TPrimanota_application::init_modify_mode(TMask& m)
|
||||
// Determina se il movimento è stato trasferito da AS/400:
|
||||
// praticamente controlla che non ci sia nessun tipo movimento sulle righe contabili.
|
||||
_as400 = false;
|
||||
if (is_saldaconto() || iva() != nessuna_iva)
|
||||
if (iva() != nessuna_iva)
|
||||
{
|
||||
const TString& tipo = clifo();
|
||||
|
||||
m.set(F_CLIFO, tipo);
|
||||
m.show(F_CLIENTE, tipo == "C");
|
||||
m.show(F_RAGSOCCLIENTE, tipo == "C");
|
||||
m.show(F_FORNITORE, tipo == "F");
|
||||
m.show(F_RAGSOCFORNITORE, tipo == "F");
|
||||
}
|
||||
|
||||
if (is_saldaconto() || iva() != nessuna_iva)
|
||||
{
|
||||
if (cg.items() > 0)
|
||||
{
|
||||
@ -1649,12 +1668,21 @@ void TPrimanota_application::genera_automatico(int tipo, const char* causimm)
|
||||
break;
|
||||
case 2: // Regolarizzazione IVA
|
||||
{
|
||||
TCausale caus_reg(_automatico->_causale);
|
||||
TBill contocf; caus_reg.bill(1, contocf);
|
||||
char tcf_reg = contocf.tipo();
|
||||
|
||||
// Reperisce l'eventuale cliente associato al fornitore e lo propone
|
||||
TString8 forn; forn.format("F|%ld", _automatico->_clifo.codclifo());
|
||||
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
||||
m.set(F_CLIENTE, clnt);
|
||||
m.set(F_TOTALE, _automatico->_totale); // Imposta il totale documento e ...
|
||||
m.set(F_CODIVA, _automatico->_codiva, true); // ... scatena creazione prima riga IVA
|
||||
if (tcf_reg == 'F')
|
||||
m.set(F_FORNITORE, _automatico->_clifo.codclifo());
|
||||
else
|
||||
{
|
||||
TString8 forn; forn.format("F|%ld", _automatico->_clifo.codclifo());
|
||||
const TString& clnt = cache().get(LF_CLIFO, forn, CLI_CODCFASS);
|
||||
m.set(F_CLIENTE, clnt);
|
||||
}
|
||||
m.set(F_TOTALE, _automatico->_totale); // Imposta il totale documento e ...
|
||||
m.set(F_CODIVA, _automatico->_codiva, true); // ... scatena creazione prima riga IVA
|
||||
if (TRelation_application::is_transaction())
|
||||
m.send_key(K_CTRL+'R', 0);
|
||||
|
||||
|
@ -1672,7 +1672,9 @@ bool TPrimanota_application::iva_notify(TSheet_field& iva, int r, KEY k)
|
||||
TMask& m = a.curr_mask();
|
||||
|
||||
// Controllo split-payment (dalla versione 12)
|
||||
if (m.get_int(F_ANNOIVA) >= 2015 && a.clifo() == 'C' && a.get_version() >= 12)
|
||||
const TString4 tipocf(a.clifo());
|
||||
|
||||
if (m.get_int(F_ANNOIVA) >= 2015 && (tipocf == "C") && a.get_version() >= 12)
|
||||
{
|
||||
const int r_norm = type2pos('D');
|
||||
const bool split_needed = r_norm >= 0 && a.is_split_payment();
|
||||
@ -1821,12 +1823,13 @@ bool TPrimanota_application::cg_conto_handler(TMask_field& f, KEY key)
|
||||
TMask& m = f.mask();
|
||||
if (m.get(CG_ROWTYPE)[0] == 'T' && !app().causale().corrispettivi())
|
||||
{
|
||||
const char tipo = app().clifo(); // Tipo conto richiesto dal movimento
|
||||
char cf = m.get(f.dlg()-2)[0];
|
||||
if (cf < ' ') cf = ' '; // Tipo conto della riga
|
||||
const TString4 tipo = app().clifo(); // Tipo conto richiesto dal movimento
|
||||
TString4 cf = m.get(f.dlg()-2);
|
||||
|
||||
if (cf[0] < ' ') cf = " "; // Tipo conto della riga
|
||||
if (cf != tipo) // Incongruenza!
|
||||
{
|
||||
const char* d = tipo == 'C' ? TR("clienti") : TR("fornitori");
|
||||
const char* d = tipo == "C" ? TR("clienti") : TR("fornitori");
|
||||
ok = f.error_box(FR("La riga totale richiede un conto %s."), d);
|
||||
}
|
||||
}
|
||||
@ -2714,7 +2717,7 @@ bool TPrimanota_application::occas_handler(TMask_field& f, KEY key)
|
||||
void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
{
|
||||
const bool corri = causale().corrispettivi();
|
||||
const char tipo = corri ? ' ' : app().clifo();
|
||||
const TString4 tipo = corri ? " " : app().clifo();
|
||||
int gruppo = 0, conto = 0;
|
||||
long codice = corri ? 0L : m.get_long(tipo == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||
|
||||
@ -2742,7 +2745,7 @@ void TPrimanota_application::add_cgs_tot(TMask& m)
|
||||
}
|
||||
}
|
||||
|
||||
TBill nuovo(gruppo, conto, codice, tipo);
|
||||
TBill nuovo(gruppo, conto, codice, tipo[0]);
|
||||
if (!corri && (gruppo == 0 || conto == 0))
|
||||
nuovo.find(); // Compila anche gruppo e conto in base al codice clifo
|
||||
|
||||
@ -2838,15 +2841,15 @@ bool TPrimanota_application::clifo_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
}
|
||||
|
||||
const char cf = a.clifo();
|
||||
const TString4 cf = a.clifo();
|
||||
const long codice = atol(f.get());
|
||||
|
||||
if (codice == 0)
|
||||
{
|
||||
m.hide(F_OCCASEDIT); // Spegni bottone occasionali
|
||||
m.show(F_STATOPAIV); // Stato partita IVA
|
||||
m.show(cf == 'C' ? F_PIVACLIENTE : F_PIVAFORNITORE); // Partita IVA
|
||||
m.show(cf == 'C' ? F_COFICLIENTE : F_COFIFORNITORE); // Codice Fiscale
|
||||
m.show(cf == "C" ? F_PIVACLIENTE : F_PIVAFORNITORE); // Partita IVA
|
||||
m.show(cf == "C" ? F_COFICLIENTE : F_COFIFORNITORE); // Codice Fiscale
|
||||
a.activate_numrif(m, true);
|
||||
return true;
|
||||
}
|
||||
@ -3100,7 +3103,7 @@ bool TPrimanota_application::activate_split_payment(TMask& m)
|
||||
TMask_field* sp = m.find_by_id(F_SPLITPAY);
|
||||
if (sp != NULL)
|
||||
{
|
||||
if (clifo() == 'C' && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge())
|
||||
if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge())
|
||||
{
|
||||
const TRectype& cliente = cache().get_rec(LF_CLIFO, "C", m.get(F_CLIENTE));
|
||||
yes = cliente.get_bool(CLI_SPLITPAY);
|
||||
@ -3120,6 +3123,16 @@ bool TPrimanota_application::activate_split_payment(TMask& m)
|
||||
return yes;
|
||||
}
|
||||
|
||||
const TString & TPrimanota_application::clifo() const
|
||||
{
|
||||
TCausale & caus = causale();
|
||||
TBill conto; caus.bill(1, conto);
|
||||
TString & tipo = get_tmp_string();
|
||||
|
||||
tipo << conto.tipo();
|
||||
return tipo;
|
||||
}
|
||||
|
||||
bool TPrimanota_application::is_split_payment() const
|
||||
{
|
||||
const TMask& m = curr_mask();
|
||||
@ -3135,7 +3148,7 @@ bool TPrimanota_application::is_split_payment() const
|
||||
if (s != 'N' && s != 'S')
|
||||
{
|
||||
s = 'N';
|
||||
if (clifo() == 'C' && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge())
|
||||
if (clifo() == "C" && m.get_int(F_ANNOIVA) >= 2015 && !causale().reverse_charge())
|
||||
{
|
||||
const TRectype& cliente = cache().get_rec(LF_CLIFO, "C", m.get(F_CLIENTE));
|
||||
if (cliente.get_bool(CLI_SPLITPAY))
|
||||
|
@ -9,6 +9,10 @@
|
||||
#include "cgpagame.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MOV_H
|
||||
#include "mov.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CGSALDAC_H
|
||||
#include "cgsaldac.h"
|
||||
#endif
|
||||
@ -21,6 +25,13 @@
|
||||
#include "cg2101.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2101_H
|
||||
#include "cg2101.h"
|
||||
#endif
|
||||
|
||||
#ifndef __CG2100_H
|
||||
#include "cg2100.h"
|
||||
#endif
|
||||
class TDati_mov_auto;
|
||||
|
||||
class TPrimanota_application : public TRelation_application
|
||||
@ -206,7 +217,7 @@ protected:
|
||||
void mask2rel(const TMask& m);
|
||||
|
||||
TipoIVA iva() const { return _iva; }
|
||||
char clifo() const { return iva() == iva_vendite ? 'C' : 'F'; }
|
||||
const TString & clifo() const;
|
||||
bool gestione_valuta() const { return _ges_val; }
|
||||
bool gestione_saldaconto() const { return _ges_sal; }
|
||||
bool npart_is_month() const { return _npart_is_month; }
|
||||
|
@ -337,8 +337,8 @@ bool TPrimanota_application::codpag_handler(TMask_field& f, KEY key)
|
||||
// Nella maschera iva cerco di reperirlo dal cliente
|
||||
if (m.id2pos(F_CLIENTE) > 0)
|
||||
{
|
||||
const char typ = a.clifo();
|
||||
const long cod = m.get_long(typ == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||
const TString4 typ = a.clifo(m);
|
||||
const long cod = m.get_long(typ == "C" ? F_CLIENTE : F_FORNITORE);
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
clifo.put(CLI_TIPOCF, typ);
|
||||
clifo.put(CLI_CODCF, cod);
|
||||
@ -929,16 +929,16 @@ int TPrimanota_application::cerca_conto_cf(TBill& bill) const
|
||||
TString_array& a = cgs().rows_array();
|
||||
if (iva() != nessuna_iva)
|
||||
{
|
||||
const char tipocf = clifo();
|
||||
const TString4 tipocf = clifo(curr_mask());
|
||||
const long codcf = curr_mask().get_long(tipocf == 'C' ? F_CLIENTE : F_FORNITORE);
|
||||
for (int r = 0; r < a.items(); r++)
|
||||
{
|
||||
TToken_string& row = a.row(r);
|
||||
bill.get(row, 2, 0x1);
|
||||
if (bill.tipo() == tipocf && bill.codclifo() == codcf)
|
||||
if (bill.tipo() == tipocf[0] && bill.codclifo() == codcf)
|
||||
return r;
|
||||
}
|
||||
bill.set(0, 0, codcf, tipocf);
|
||||
bill.set(0, 0, codcf, tipocf[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -909,6 +909,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
real esenti_c1a_bam = ZERO; // Beni ammorizzabili esenti c1a
|
||||
real esenti_b14 = ZERO;
|
||||
real vendite_rev = ZERO; // Vendire in reverse charge (da escludere in prorata)
|
||||
real cred_fattrit;
|
||||
|
||||
/* Comunicazione dati iva annuale dal 2016 calcolata in cg5
|
||||
// Comunicazione dati iva annuale (dal 2003)
|
||||
@ -1048,7 +1049,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
}
|
||||
}
|
||||
|
||||
const TDate fromdate(1, month == 13 ? 1 : month, year_int);
|
||||
const TDate fromdate(1, (month == 5) || (month == 13) ? 1 : month, year_int);
|
||||
TDate t;
|
||||
|
||||
if (_recalc_regis) // Vecchia selezione prima del 1998 o calcolo progressivi per stampa registri bollati
|
||||
@ -1119,8 +1120,8 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
#ifdef DBG
|
||||
const long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
if (nr == 214882)
|
||||
int i = 1 ;
|
||||
if (nr == 1931434 || nr == 1931437)
|
||||
int i = 1;
|
||||
#endif
|
||||
|
||||
const int liqmonth = _mov->get_int(MOV_MESELIQ);
|
||||
@ -1148,10 +1149,10 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
const TRectype& rcs = _cur->curr(LF_CAUSALI);
|
||||
const TDate datareg = _mov->get_date(MOV_DATAREG);
|
||||
const TDate datadoc = _mov->get_date(MOV_DATADOC);
|
||||
const bool dataritind = ((datareg.year() - datadoc.year()) > 1 ) ||
|
||||
const bool dataritind = ((tipomov == acquisto) && (_year >= 2018)) && ((datareg.year() - datadoc.year()) > 1 ) ||
|
||||
(((datareg.year() - datadoc.year()) == 1) && datareg.month() >= 5);
|
||||
const bool datarit = !dataritind && ((datareg.year() - datadoc.year()) == 1);
|
||||
const bool fattritind = rcs.get_bool(CAU_RITFATTIND) || dataritind;
|
||||
const bool datarit = ((tipomov == acquisto) && !dataritind) && ((datareg.year() - datadoc.year()) == 1);
|
||||
const bool fattritind = (_year >= 2018) && (rcs.get_bool(CAU_RITFATTIND) || dataritind);
|
||||
const bool fattrit = rcs.get_bool(CAU_RITFATT) || datarit;
|
||||
const bool cau_intra = rcs.get_bool(CAU_INTRACOM);
|
||||
const bool cau_valintra = rcs.get_bool(CAU_VALINTRA);
|
||||
@ -1196,12 +1197,13 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
TPointer_array pagscatt; // Righe di pagsca interessate
|
||||
|
||||
#ifdef DBG
|
||||
// const long nr = _mov->get_long(MOV_NUMREG);
|
||||
|
||||
if (nr == 214882 )
|
||||
int i = 1 ;
|
||||
if (nr == 1931434 || nr == 1931437)
|
||||
int i = 1;
|
||||
#endif
|
||||
|
||||
if (fattrit && _month == 5)
|
||||
dok = true;
|
||||
|
||||
if (bIsMovDiff && tm == tm_fattura)
|
||||
{
|
||||
const bool id_chiusa = ivadiff_chiusa(_mov->curr(), TDate(31,12,inizio.year()-1));
|
||||
@ -1965,300 +1967,302 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
}
|
||||
|
||||
// Le fatture in ritardo non vanno considerate nel periodo ma solo nell'annuale
|
||||
if (!fattrit || (fattrit && _month == 13)) // normale
|
||||
{
|
||||
|
||||
// *****************************************
|
||||
// casi particolari
|
||||
// *****************************************
|
||||
if (_year >= 2018 && fattrit && _month == 5)
|
||||
cred_fattrit += imposta;
|
||||
else
|
||||
if (!fattrit || (fattrit && _month == 13)) // normale
|
||||
{
|
||||
// *****************************************
|
||||
// casi particolari
|
||||
// *****************************************
|
||||
|
||||
// imposta acquisti intracomunitari
|
||||
if (tipomov == acquisto && intra)
|
||||
totintra += imposta;
|
||||
// imposta acquisti intracomunitari
|
||||
if (tipomov == acquisto && intra)
|
||||
totintra += imposta;
|
||||
|
||||
// Altre cose di cui tener conto
|
||||
// Separo pazientemente per movimenti d'acquisto e movimenti di vendita
|
||||
// onde evitare rompicapi, rompicazzi ecc...
|
||||
// Altre cose di cui tener conto
|
||||
// Separo pazientemente per movimenti d'acquisto e movimenti di vendita
|
||||
// onde evitare rompicapi, rompicazzi ecc...
|
||||
|
||||
switch (tipomov)
|
||||
{
|
||||
case acquisto: // ACQUISTO (per chi non l'avesse capito)
|
||||
// Per le anguille delle Antille e le Saracche delle Molucche...
|
||||
// Gli acquisti con tipocr 1,2,3,5,8 vanno totalizzati se e solo se
|
||||
// il tipo iva e' diverso da NON SOGGETTO,
|
||||
if (tipoiva != "NS")
|
||||
{
|
||||
if (tipocr == 1 || tipocr ==5)
|
||||
// Acquisto beni per rivendita
|
||||
{
|
||||
acq_riv += imponibile;
|
||||
acq_riv_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 2 && tipodet == 0)
|
||||
// Acquisto beni ammortizzabili detraibili
|
||||
{
|
||||
ammort_det += imponibile;
|
||||
ammort_det_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 2 && tipodet != 0)
|
||||
// Acquisto beni ammortizzabili indetraibili
|
||||
{
|
||||
ammort_indet += imponibile;
|
||||
ammort_indet_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 3)
|
||||
// Acquisto beni ammortizzabili detr. 6%
|
||||
{
|
||||
ammort_6 += imponibile;
|
||||
ammort_6_iva += imposta;
|
||||
// ult_detr += imponibile * real(DETRAZIONE_6PERCENTO); // CM500159
|
||||
}
|
||||
else if (tipocr == 8)
|
||||
// Acquisto beni strum. acquisiti in leasing
|
||||
{
|
||||
leasing += imponibile;
|
||||
leasing_iva += imposta;
|
||||
}
|
||||
} // fine if per tipo iva != da NON SOGGETTO
|
||||
switch (tipomov)
|
||||
{
|
||||
case acquisto: // ACQUISTO (per chi non l'avesse capito)
|
||||
// Per le anguille delle Antille e le Saracche delle Molucche...
|
||||
// Gli acquisti con tipocr 1,2,3,5,8 vanno totalizzati se e solo se
|
||||
// il tipo iva e' diverso da NON SOGGETTO,
|
||||
if (tipoiva != "NS")
|
||||
{
|
||||
if (tipocr == 1 || tipocr ==5)
|
||||
// Acquisto beni per rivendita
|
||||
{
|
||||
acq_riv += imponibile;
|
||||
acq_riv_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 2 && tipodet == 0)
|
||||
// Acquisto beni ammortizzabili detraibili
|
||||
{
|
||||
ammort_det += imponibile;
|
||||
ammort_det_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 2 && tipodet != 0)
|
||||
// Acquisto beni ammortizzabili indetraibili
|
||||
{
|
||||
ammort_indet += imponibile;
|
||||
ammort_indet_iva += imposta;
|
||||
}
|
||||
else if (tipocr == 3)
|
||||
// Acquisto beni ammortizzabili detr. 6%
|
||||
{
|
||||
ammort_6 += imponibile;
|
||||
ammort_6_iva += imposta;
|
||||
// ult_detr += imponibile * real(DETRAZIONE_6PERCENTO); // CM500159
|
||||
}
|
||||
else if (tipocr == 8)
|
||||
// Acquisto beni strum. acquisiti in leasing
|
||||
{
|
||||
leasing += imponibile;
|
||||
leasing_iva += imposta;
|
||||
}
|
||||
} // fine if per tipo iva != da NON SOGGETTO
|
||||
|
||||
// Mi chiedo se effettivamente il tipo 9 sia esente da qualsiasi criterio...
|
||||
if (tipocr == 9)
|
||||
// Spese generali
|
||||
{
|
||||
spgen += imponibile;
|
||||
spgen_iva += imposta;
|
||||
}
|
||||
// else fuck it up, dirty dick head.
|
||||
break;
|
||||
case vendita: // VENDITA
|
||||
if (tipoiva != "NS") /* Segnalazione CM000219: I non soggetti non vanno considerati */
|
||||
{
|
||||
if (tipocr == 4)
|
||||
/*
|
||||
* Vendite strum. art 17 (cess. amm.)
|
||||
* Comprende anche autofatture, anche nell'annuale
|
||||
* (Sergio 1995)
|
||||
*/
|
||||
{
|
||||
// Invece non le deve comprendere nell'annuale (Vladimiro 1995, piu' tardi)
|
||||
if (!(_month == 13 && autodafe))
|
||||
{
|
||||
cess_amm += imponibile;
|
||||
cess_amm_iva += imposta;
|
||||
}
|
||||
}
|
||||
// Mi chiedo se effettivamente il tipo 9 sia esente da qualsiasi criterio...
|
||||
if (tipocr == 9)
|
||||
// Spese generali
|
||||
{
|
||||
spgen += imponibile;
|
||||
spgen_iva += imposta;
|
||||
}
|
||||
// else fuck it up, dirty dick head.
|
||||
break;
|
||||
case vendita: // VENDITA
|
||||
if (tipoiva != "NS") /* Segnalazione CM000219: I non soggetti non vanno considerati */
|
||||
{
|
||||
if (tipocr == 4)
|
||||
/*
|
||||
* Vendite strum. art 17 (cess. amm.)
|
||||
* Comprende anche autofatture, anche nell'annuale
|
||||
* (Sergio 1995)
|
||||
*/
|
||||
{
|
||||
// Invece non le deve comprendere nell'annuale (Vladimiro 1995, piu' tardi)
|
||||
if (!(_month == 13 && autodafe))
|
||||
{
|
||||
cess_amm += imponibile;
|
||||
cess_amm_iva += imposta;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_detraibile && !imponibile.is_zero() && is_reverse_charge(_mov->curr()))
|
||||
vendite_rev += imponibile;
|
||||
}
|
||||
break;
|
||||
default: // Chissa'... forse in futuro vi sara' un ulteriore tipo di movimento...
|
||||
break;
|
||||
} // Fine del malefico switch
|
||||
if (is_detraibile && !imponibile.is_zero() && is_reverse_charge(_mov->curr()))
|
||||
vendite_rev += imponibile;
|
||||
}
|
||||
break;
|
||||
default: // Chissa'... forse in futuro vi sara' un ulteriore tipo di movimento...
|
||||
break;
|
||||
} // Fine del malefico switch
|
||||
|
||||
|
||||
// operazioni per calcolo rimborso infraanale
|
||||
// Scudler 1995 e molti dopo di lei
|
||||
// La breve estate vissuta dal metodo del 51% rende
|
||||
// oramai superflua la tabella rimborsi, eliminata
|
||||
// senza entusiasmo ed interrogandomi sul senso della vita
|
||||
if (ivarimb)
|
||||
{
|
||||
bool ok = _isagricolo ? tipoagr == 2 : false;
|
||||
// operazioni per calcolo rimborso infraanale
|
||||
// Scudler 1995 e molti dopo di lei
|
||||
// La breve estate vissuta dal metodo del 51% rende
|
||||
// oramai superflua la tabella rimborsi, eliminata
|
||||
// senza entusiasmo ed interrogandomi sul senso della vita
|
||||
if (ivarimb)
|
||||
{
|
||||
bool ok = _isagricolo ? tipoagr == 2 : false;
|
||||
|
||||
if (tipomov == acquisto && !ok)
|
||||
ok = (tipocr == 0 || tipocr == 1 || tipocr == 5 || tipocr == 9);
|
||||
if (tipomov == acquisto && !ok)
|
||||
ok = (tipocr == 0 || tipocr == 1 || tipocr == 5 || tipocr == 9);
|
||||
|
||||
if (tipomov == vendita && !ok)
|
||||
ok = tipoiva != "NS" && tipocr != 4;
|
||||
if (tipomov == vendita && !ok)
|
||||
ok = tipoiva != "NS" && tipocr != 4;
|
||||
|
||||
ivarimb = ok;
|
||||
}
|
||||
ivarimb = ok;
|
||||
}
|
||||
|
||||
// operazioni esenti
|
||||
if (tipoiva == "ES" && !imponibile.is_zero())
|
||||
{
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
if (sosp_imp != normale && sosp_imp != vol_affari) // CM500308
|
||||
{
|
||||
if (tipoes_v == "B1") // C1
|
||||
esenti_c1 += imponibile;
|
||||
else if (tipoes_v == "B2") // C2
|
||||
esenti_c2 += imponibile;
|
||||
else if (tipoes_v == "B3") // C3
|
||||
{
|
||||
esenti_c3 += imponibile;
|
||||
if (tipocr == 4)
|
||||
esenti_c3_bam += imponibile;
|
||||
}
|
||||
else if (tipoes_v == "B4") // C1A
|
||||
{
|
||||
esenti_c1a += imponibile;
|
||||
if (tipocr == 4)
|
||||
esenti_c1a_bam += imponibile;
|
||||
}
|
||||
// se e' il caso sommare esenti per rimborso
|
||||
if (isrimbinfr)
|
||||
esni_rimb += imponibile;
|
||||
}
|
||||
}
|
||||
else if (tipoes_a == "14")
|
||||
esenti_b14 += imponibile;
|
||||
}
|
||||
// operazioni esenti
|
||||
if (tipoiva == "ES" && !imponibile.is_zero())
|
||||
{
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
if (sosp_imp != normale && sosp_imp != vol_affari) // CM500308
|
||||
{
|
||||
if (tipoes_v == "B1") // C1
|
||||
esenti_c1 += imponibile;
|
||||
else if (tipoes_v == "B2") // C2
|
||||
esenti_c2 += imponibile;
|
||||
else if (tipoes_v == "B3") // C3
|
||||
{
|
||||
esenti_c3 += imponibile;
|
||||
if (tipocr == 4)
|
||||
esenti_c3_bam += imponibile;
|
||||
}
|
||||
else if (tipoes_v == "B4") // C1A
|
||||
{
|
||||
esenti_c1a += imponibile;
|
||||
if (tipocr == 4)
|
||||
esenti_c1a_bam += imponibile;
|
||||
}
|
||||
// se e' il caso sommare esenti per rimborso
|
||||
if (isrimbinfr)
|
||||
esni_rimb += imponibile;
|
||||
}
|
||||
}
|
||||
else if (tipoes_a == "14")
|
||||
esenti_b14 += imponibile;
|
||||
}
|
||||
|
||||
// non imponibili per rimborso
|
||||
if (tipoiva == "NI" && tipomov == vendita && isrimbinfr)
|
||||
esni_rimb += imponibile;
|
||||
// non imponibili per rimborso
|
||||
if (tipoiva == "NI" && tipomov == vendita && isrimbinfr)
|
||||
esni_rimb += imponibile;
|
||||
|
||||
// bolle doganali
|
||||
if (tipodoc == "BD")
|
||||
{
|
||||
bolld_imp = imponibile;
|
||||
bolld_iva = imposta;
|
||||
// bolle doganali
|
||||
if (tipodoc == "BD")
|
||||
{
|
||||
bolld_imp = imponibile;
|
||||
bolld_iva = imposta;
|
||||
|
||||
bdog_imp += bolld_imp;
|
||||
bdog_iva += bolld_iva;
|
||||
}
|
||||
bdog_imp += bolld_imp;
|
||||
bdog_iva += bolld_iva;
|
||||
}
|
||||
|
||||
// plafond
|
||||
if (_isplafond && tipomov == acquisto && month != 13 &&
|
||||
tipoiva == "NI" && tipopla != 0)
|
||||
{
|
||||
add_plafond(month, codatt, tipopla, imponibile, tipodoc == "BD");
|
||||
}
|
||||
// plafond
|
||||
if (_isplafond && tipomov == acquisto && month != 13 &&
|
||||
tipoiva == "NI" && tipopla != 0)
|
||||
{
|
||||
add_plafond(month, codatt, tipopla, imponibile, tipodoc == "BD");
|
||||
}
|
||||
|
||||
// agenzie viaggio (CHECK imponibili etc.)
|
||||
if (_isviaggio)
|
||||
switch (tipoag)
|
||||
{
|
||||
case 1:
|
||||
if (tipomov == acquisto) acq_CEE += imponibile + imposta;
|
||||
else corr_CEE += imponibile + imposta;
|
||||
break;
|
||||
case 2:
|
||||
if (tipomov == acquisto) acq_noCEE += imponibile + imposta;
|
||||
else corr_noCEE += imponibile + imposta;
|
||||
break;
|
||||
case 3: if (tipomov == vendita)
|
||||
corr_misCEE += imponibile + imposta;
|
||||
break;
|
||||
case 4: if (tipomov == acquisto)
|
||||
acq_misCEE += imponibile + imposta;
|
||||
break;
|
||||
case 5: if (tipomov == acquisto)
|
||||
acq_misnoCEE += imponibile + imposta;
|
||||
break;
|
||||
}
|
||||
// agenzie viaggio (CHECK imponibili etc.)
|
||||
if (_isviaggio)
|
||||
switch (tipoag)
|
||||
{
|
||||
case 1:
|
||||
if (tipomov == acquisto) acq_CEE += imponibile + imposta;
|
||||
else corr_CEE += imponibile + imposta;
|
||||
break;
|
||||
case 2:
|
||||
if (tipomov == acquisto) acq_noCEE += imponibile + imposta;
|
||||
else corr_noCEE += imponibile + imposta;
|
||||
break;
|
||||
case 3: if (tipomov == vendita)
|
||||
corr_misCEE += imponibile + imposta;
|
||||
break;
|
||||
case 4: if (tipomov == acquisto)
|
||||
acq_misCEE += imponibile + imposta;
|
||||
break;
|
||||
case 5: if (tipomov == acquisto)
|
||||
acq_misnoCEE += imponibile + imposta;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (_isagricolo)
|
||||
{
|
||||
/*
|
||||
* rifatto sensu Scudler 1995 con invidiabile sicurezza
|
||||
* senza porsi domande e mettendo NUMERI uguali
|
||||
* al TIPO RECORD del frigorifero
|
||||
*/
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
if (!noninc) // Salta i non incassati
|
||||
{
|
||||
agr_imp = imponibile;
|
||||
agr_iva = imposta;
|
||||
const real p = perciva;
|
||||
const bool is_not_fs = tipodoc != "FS";
|
||||
if (_isagricolo)
|
||||
{
|
||||
/*
|
||||
* rifatto sensu Scudler 1995 con invidiabile sicurezza
|
||||
* senza porsi domande e mettendo NUMERI uguali
|
||||
* al TIPO RECORD del frigorifero
|
||||
*/
|
||||
if (tipomov == vendita)
|
||||
{
|
||||
if (!noninc) // Salta i non incassati
|
||||
{
|
||||
agr_imp = imponibile;
|
||||
agr_iva = imposta;
|
||||
const real p = perciva;
|
||||
const bool is_not_fs = tipodoc != "FS";
|
||||
|
||||
// Se si tratta di Fattura Fiscale o Fattura Scontrino, non scorpora
|
||||
// In particolare le FS non vengono incluse ne' nello specchietto ne' nel totale
|
||||
if (corrisp && tipodoc != "FF" && is_not_fs)
|
||||
lordo2netto(agr_imp,agr_iva,p);
|
||||
// Se si tratta di Fattura Fiscale o Fattura Scontrino, non scorpora
|
||||
// In particolare le FS non vengono incluse ne' nello specchietto ne' nel totale
|
||||
if (corrisp && tipodoc != "FF" && is_not_fs)
|
||||
lordo2netto(agr_imp,agr_iva,p);
|
||||
|
||||
if (tipoagr == 1 && is_not_fs) // Ora si utilizza solo il segnalino 1
|
||||
{
|
||||
agr_1 += agr_iva;
|
||||
agr_1i += agr_imp;
|
||||
if (tipoagr == 1 && is_not_fs) // Ora si utilizza solo il segnalino 1
|
||||
{
|
||||
agr_1 += agr_iva;
|
||||
agr_1i += agr_imp;
|
||||
|
||||
// Nuovo regime agricolo dal 1998: si sommino per codice iva di compensazione (da reperire su PCON)
|
||||
TString ivacomp("00"); // Se non esiste o non si trova il conto questo e' il default (fa un poco schifo ma e' cosi')
|
||||
// Nuovo regime agricolo dal 1998: si sommino per codice iva di compensazione (da reperire su PCON)
|
||||
TString ivacomp("00"); // Se non esiste o non si trova il conto questo e' il default (fa un poco schifo ma e' cosi')
|
||||
|
||||
if (_cur->is_first_match(-AGR_PCON1)) // Esiste il conto ?
|
||||
// Bien, allora controlliamo se e' un ricavo...
|
||||
if (_pcon_1_r->get_int(PCN_INDBIL) == 4)
|
||||
if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ?
|
||||
{
|
||||
if (look_iva(_pcon_2_r->get(PCN_IVACOMP)))
|
||||
ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione
|
||||
}
|
||||
look_pia(month, codatt, codiva, ivacomp, true); // Crea il record in tabella se non esiste
|
||||
real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna...
|
||||
_pia->put("R0", pia_imp);
|
||||
_pia->put("B0", true); // Seguo l'esempio dei PIM per il ricalcolo acquisti alla fine del ciclo
|
||||
_pia->rewrite(); // infine scrive
|
||||
}
|
||||
else if (tipoagr == 2 && is_not_fs)
|
||||
{
|
||||
agr_2 += agr_iva;
|
||||
agr_2i += agr_imp;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (tipodet == 0)
|
||||
{
|
||||
if (tipoagr == 2)
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_3 += imposta;
|
||||
else
|
||||
agr_4 += imposta;
|
||||
}
|
||||
else if (tipoagr == 3)
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_7 += imposta;
|
||||
}
|
||||
else // ne' 2 ne' 3
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_5 += imposta;
|
||||
else
|
||||
agr_6 += imposta;
|
||||
}
|
||||
}
|
||||
} // __end of _agricolo
|
||||
if (_cur->is_first_match(-AGR_PCON1)) // Esiste il conto ?
|
||||
// Bien, allora controlliamo se e' un ricavo...
|
||||
if (_pcon_1_r->get_int(PCN_INDBIL) == 4)
|
||||
if (_cur->is_first_match(-AGR_PCON2)) // Esiste il sottoconto ?
|
||||
{
|
||||
if (look_iva(_pcon_2_r->get(PCN_IVACOMP)))
|
||||
ivacomp = _iva->get("CODTAB"); // Ecco il codice IVA di compensazione
|
||||
}
|
||||
look_pia(month, codatt, codiva, ivacomp, true); // Crea il record in tabella se non esiste
|
||||
real pia_imp = _pia->get_real("R0") + agr_imp; // Aggiorna...
|
||||
_pia->put("R0", pia_imp);
|
||||
_pia->put("B0", true); // Seguo l'esempio dei PIM per il ricalcolo acquisti alla fine del ciclo
|
||||
_pia->rewrite(); // infine scrive
|
||||
}
|
||||
else if (tipoagr == 2 && is_not_fs)
|
||||
{
|
||||
agr_2 += agr_iva;
|
||||
agr_2i += agr_imp;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (tipodet == 0)
|
||||
{
|
||||
if (tipoagr == 2)
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_3 += imposta;
|
||||
else
|
||||
agr_4 += imposta;
|
||||
}
|
||||
else if (tipoagr == 3)
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_7 += imposta;
|
||||
}
|
||||
else // ne' 2 ne' 3
|
||||
{
|
||||
if (tipocr != 2 && tipocr != 3 && tipocr != 8)
|
||||
agr_5 += imposta;
|
||||
else
|
||||
agr_6 += imposta;
|
||||
}
|
||||
}
|
||||
} // __end of _agricolo
|
||||
|
||||
if (tipodet == 1) // acquisti indeducibili su ricavi esenti art. 10
|
||||
{
|
||||
if (is_reverse_charge(_mov->curr()))
|
||||
{
|
||||
acquisti += imponibile;
|
||||
acquisti_iva += imposta;
|
||||
if (tipodet == 1) // acquisti indeducibili su ricavi esenti art. 10
|
||||
{
|
||||
if (is_reverse_charge(_mov->curr()))
|
||||
{
|
||||
acquisti += imponibile;
|
||||
acquisti_iva += imposta;
|
||||
}
|
||||
else
|
||||
{
|
||||
acq_ies += imponibile;
|
||||
acq_ies_iva += imposta;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
acq_ies += imponibile;
|
||||
acq_ies_iva += imposta;
|
||||
}
|
||||
}
|
||||
|
||||
if (tipodet == 3) // passaggi interni (solo per ventilaz)
|
||||
{
|
||||
acq_pint += imponibile;
|
||||
acq_pint_iva += imposta;
|
||||
}
|
||||
if (tipodet == 3) // passaggi interni (solo per ventilaz)
|
||||
{
|
||||
acq_pint += imponibile;
|
||||
acq_pint_iva += imposta;
|
||||
}
|
||||
|
||||
// acquisti non detraibili art. 19
|
||||
// possono valere per la ventilazione
|
||||
if (tipodet == 9)
|
||||
{
|
||||
nond19_imp += imponibile;
|
||||
nond19_iva += imposta;
|
||||
}
|
||||
// acquisti non detraibili art. 19
|
||||
// possono valere per la ventilazione
|
||||
if (tipodet == 9)
|
||||
{
|
||||
nond19_imp += imponibile;
|
||||
nond19_iva += imposta;
|
||||
}
|
||||
|
||||
// *****************************************
|
||||
// Fine casi particolari
|
||||
// Non che i casi normali siano tanto meglio
|
||||
// *****************************************
|
||||
} // non sosp_imp ne' altre casistiche che escludono la liq.
|
||||
// *****************************************
|
||||
// Fine casi particolari
|
||||
// Non che i casi normali siano tanto meglio
|
||||
// *****************************************
|
||||
} // non sosp_imp ne' altre casistiche che escludono la liq.
|
||||
|
||||
/*
|
||||
* se ign == true non bisogna neppure PROGRESSIVARLI
|
||||
@ -2862,6 +2866,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt, TAssoc_array &
|
||||
_plm->put("R12", _prorata.percentuale(_year));
|
||||
_plm->put("R4", percentuale1);
|
||||
_plm->put("R16", percentuale2);
|
||||
_plm->put("R17", cred_fattrit);
|
||||
_plm->put("R0", vendite_iva);
|
||||
_plm->put("R1", acquisti_iva);
|
||||
_plm->put("R3", ult_detr);
|
||||
@ -3707,6 +3712,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
real fdiff_iva_acq = ZERO;
|
||||
real fdiffinc_imp_acq = ZERO;
|
||||
real fdiffinc_iva_acq = ZERO;
|
||||
real cred_fattrit;
|
||||
|
||||
// totali per annuali
|
||||
real vol_aff_1 = ZERO;
|
||||
@ -3842,6 +3848,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
fdiffinc_imp_acq += diffinc_imp_acq;
|
||||
fdiffinc_iva_acq += diffinc_iva_acq;
|
||||
}
|
||||
cred_fattrit += _plm->get_real("R17");
|
||||
risultato -= _plm->get_real("R17");
|
||||
detrazioni+= (_plm->get_real("R3"));
|
||||
|
||||
// detrazioni solo non in regime agricolo
|
||||
@ -4001,7 +4009,9 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
// toglie credito precedente
|
||||
cred_prec = credito_prec(month+deltam);
|
||||
risultato -= cred_prec;
|
||||
risultato -= cred_fattrit;
|
||||
res_cred += cred_prec;
|
||||
res_cred += cred_fattrit;
|
||||
// vedi se c'era un debito precedente per debiti < 50.000
|
||||
debt_precd = debt_prec(month+deltam);
|
||||
risultato += debt_precd;
|
||||
@ -4225,11 +4235,13 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
lim.put("R2", cred_cost);
|
||||
lim.put("R3", deb_mens);
|
||||
lim.put("R4", perc_r);
|
||||
lim.put("R25", cred_fattrit);
|
||||
|
||||
if (almeno_una_normale)
|
||||
lim.put("R6", detrazioni);
|
||||
else // per evitare sbagli nei ricalcoli esterni
|
||||
lim.zero("R6");
|
||||
|
||||
|
||||
if (month == 13 || differita)
|
||||
{
|
||||
@ -4361,6 +4373,7 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
||||
res_cred += detrazioni;
|
||||
|
||||
risultato = res_debt - res_cred;
|
||||
risultato -= cred_fattrit;
|
||||
|
||||
// tut ricalcule', riscrivem
|
||||
_lam->put("R0", iva_vend);
|
||||
|
@ -1237,6 +1237,7 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem*
|
||||
d->_r6 = lim.get_real("R6");
|
||||
d->_r7 = lim.get_real("R14");
|
||||
d->_r9 = lim.get_real("R9");
|
||||
d->_r25 = lim.get_real("R25"); // credito per fatture in ritardo
|
||||
d->_r29 = lim.get_real("R29"); // fdiffinc_iva_ven
|
||||
d->_r33 = lim.get_real("R33"); // fdiffinc_iva_acq
|
||||
|
||||
@ -1273,6 +1274,7 @@ void TLiquidazione_app::describe_liq(int month, const char* codatts, _DescrItem*
|
||||
d->_r18 = lim.get_real("R18"); // Imposta non versata
|
||||
d->_r19 = lim.get_real("R19"); // Crediti speciali
|
||||
d->_r20 = lim.get_real("R20"); // Credito autorizzato in F24
|
||||
d->_r25 = lim.get_real("R25"); // Credito da fatture in ritardo
|
||||
|
||||
d->_d1 = lim.get_date("D1"); // Data autorizzazione
|
||||
|
||||
@ -2564,6 +2566,7 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
|
||||
real& imposta_non_versata = d._r18;
|
||||
real& crediti_speciali = d._r19;
|
||||
real& credito_autorizzato_F24 = d._r20;
|
||||
real& cred_fattrit = d._r25;
|
||||
const TDate &data_autorizzazione = d._d1;
|
||||
|
||||
if (credito_autorizzato_F24 < ZERO) credito_autorizzato_F24 = ZERO;
|
||||
@ -2622,6 +2625,8 @@ void TLiquidazione_app::set_grand_2000(_DescrItem& d, int &rw)
|
||||
cre_deb_per = risultato + crediti_speciali + acc_dec + vers_int;
|
||||
if (cred_prec > ZERO)
|
||||
set_row(rw++,FR("@11gCredito da liquidazione precedente@58g%r"), &cred_prec);
|
||||
if (cred_fattrit > ZERO)
|
||||
set_row(rw++,FR("@11gCredito da fatture in ritardo@58g%r"), &cred_fattrit);
|
||||
|
||||
if (_month < 13 && credito_compensabile && credito_autorizzato_F24 > ZERO)
|
||||
{
|
||||
|
@ -44,7 +44,7 @@ bool TStampa_registri_app::filter_func (const TRelation * r)
|
||||
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
||||
const TString& codreg = mov.get(MOV_REG);
|
||||
|
||||
if (codreg != (app()._codreg) || annoiva != (app()._annoes))
|
||||
if (codreg != (app()._codreg) || annoiva != (app()._annoIVA))
|
||||
return false;
|
||||
|
||||
if (app()._tipo_stampa != prova) //stampa di bollato
|
||||
@ -195,7 +195,7 @@ const TRectype& TStampa_registri_app::look_lia(long ditta)
|
||||
if (ditta <= 0)
|
||||
ditta = get_firm();
|
||||
|
||||
TString16 y; y.format("%05ld%04d", ditta, _annoes);
|
||||
TString16 y; y.format("%05ld%04d", ditta, _annoIVA);
|
||||
const TRectype& lia = cache().get("%LIA", y);
|
||||
|
||||
_credito = lia.get_real("R0");
|
||||
@ -221,7 +221,7 @@ bool TStampa_registri_app::ricalcola(int mese)
|
||||
//dei trimestri a cui appartiene il mese modificato)
|
||||
if (_frequiva == 'M' || (m == 3 || m == 6 || m == 9 || m == 12))
|
||||
{
|
||||
TString8 key; key.format("%04d%02d", _annoes, m);
|
||||
TString8 key; key.format("%04d%02d", _annoIVA, m);
|
||||
lim.put("CODTAB", key);
|
||||
if (lim.read() != NOERR)
|
||||
return true;
|
||||
@ -230,7 +230,7 @@ bool TStampa_registri_app::ricalcola(int mese)
|
||||
//controllo il mese passato
|
||||
if (_frequiva == 'M')
|
||||
{
|
||||
TString8 key; key.format("%04d%02d", _annoes, mese);
|
||||
TString8 key; key.format("%04d%02d", _annoIVA, mese);
|
||||
lim.put("CODTAB", key);
|
||||
if (lim.read() != NOERR)
|
||||
return true;
|
||||
@ -239,7 +239,7 @@ bool TStampa_registri_app::ricalcola(int mese)
|
||||
{
|
||||
//aggiusta il mese al trimestre a cui appartiene
|
||||
mese += 2 - ((mese-1) % 3);
|
||||
TString8 key; key.format("%04d%02d", _annoes, mese);
|
||||
TString8 key; key.format("%04d%02d", _annoIVA, mese);
|
||||
lim.put("CODTAB", key);
|
||||
if (lim.read() != NOERR)
|
||||
return true;
|
||||
@ -290,11 +290,11 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
|
||||
{
|
||||
const TString& codtab = _tabreg->get("CODTAB");
|
||||
const int anno = atoi(codtab.mid(0,4));
|
||||
if (anno > _annoes)
|
||||
if (anno > _annoIVA)
|
||||
{
|
||||
if (_tipo_stampa != libro_unico) //per il libro unico e' gia' stato controllato nell'handler
|
||||
warning_box(FR("Non esistono registri IVA della Ditta %ld per l'anno %d"),
|
||||
_ditta, _annoes);
|
||||
_ditta, _annoIVA);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -302,7 +302,7 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
|
||||
else // stampa un solo registro
|
||||
{
|
||||
_stampa_tutti_i_registri = false;
|
||||
TString8 codtab; codtab << _annoes << _codreg;
|
||||
TString8 codtab; codtab << _annoIVA << _codreg;
|
||||
_tabreg->zero();
|
||||
_tabreg->put("CODTAB", codtab);
|
||||
if (_tabreg->read() != NOERR)
|
||||
@ -378,7 +378,7 @@ bool TStampa_registri_app::compila_reg(const TMask& m)
|
||||
|
||||
bool TStampa_registri_app::compila_lib()
|
||||
{
|
||||
TString8 cod; cod << _annoes << _codlib;
|
||||
TString8 cod; cod << _annoIVA << _codlib;
|
||||
const TRectype& lib = cache().get("%LBU", cod);
|
||||
_stampa_ind_ditta = lib.get_bool("B1");
|
||||
return !lib.empty();
|
||||
@ -389,7 +389,7 @@ bool TStampa_registri_app::cerca_libro_gio(TDate& datas, bool& good)
|
||||
TRelation reg("REG");
|
||||
TRectype& curr = reg.curr();
|
||||
TString16 filter;
|
||||
filter.format("%04d", _annoes);
|
||||
filter.format("%04d", _annoIVA);
|
||||
curr.put("CODTAB", filter);
|
||||
filter.format("I0=%d", giornale);
|
||||
TCursor cur(®, filter, 1, &curr, &curr);
|
||||
@ -918,7 +918,7 @@ bool TStampa_registri_app::user_create()
|
||||
__firm = TApplication::get_firm();
|
||||
|
||||
const TDate oggi(TODAY);
|
||||
_annoes = oggi.year(); // Anno per frequenza IVA ditte
|
||||
_annoIVA = oggi.year(); // Anno per frequenza IVA ditte
|
||||
build_ditte_sheet(0x3);
|
||||
|
||||
add_cursor(_cur);
|
||||
@ -953,9 +953,9 @@ void TStampa_registri_app::calcola_progressivi()
|
||||
num = _datareg.month();
|
||||
|
||||
// Chiave per selezione records progressivi
|
||||
chiave << _annoes << _codatt;
|
||||
chiave << _annoIVA << _codatt;
|
||||
|
||||
//calcolo i totali del periodo; calcola anche i totali da Periodo Precedente (se _annoes > 1997)
|
||||
//calcolo i totali del periodo; calcola anche i totali da Periodo Precedente (se _annoIVA > 1997)
|
||||
//_codatt e' gia' Z perche' lo leggo dal registro
|
||||
//calcolo i totali progressivi e del periodo (tra questi anche quelli di cui periodo precedente)
|
||||
for (int i=1; i<=num; i++)
|
||||
@ -1033,7 +1033,7 @@ void TStampa_registri_app::calcola_progressivi()
|
||||
} // for i to num
|
||||
}
|
||||
|
||||
int TStampa_registri_app::riga_rmoviva()
|
||||
int TStampa_registri_app::riga_rmoviva(const bool fattrit)
|
||||
{
|
||||
int nrec = 0;
|
||||
|
||||
@ -1068,6 +1068,8 @@ int TStampa_registri_app::riga_rmoviva()
|
||||
|
||||
if (is_split_payment(mov))
|
||||
_riga_split.add_riga(impo, impos, codiva);
|
||||
if (_tipo_reg == acquisto && fattrit)
|
||||
_riga_competenza.add_riga(impo, impos, codiva);
|
||||
|
||||
//stampa di prova, cumula progressivi dai movimenti, anziche' dalle tabelle (solo bollato)
|
||||
if (_tipo_stampa == prova)
|
||||
@ -1175,7 +1177,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
|
||||
{
|
||||
for (int i=3; i<=mese; i+=3)
|
||||
{
|
||||
chiave.format("%04d%02d", _annoes, i);
|
||||
chiave.format("%04d%02d", _annoIVA, i);
|
||||
lim.put("CODTAB", chiave);
|
||||
if (lim.read() != NOERR || lim.get_bool("B0"))
|
||||
{
|
||||
@ -1190,7 +1192,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
|
||||
{
|
||||
for (int i=1; i<=mese; i++)
|
||||
{
|
||||
chiave.format("%04d%02d", _annoes, i);
|
||||
chiave.format("%04d%02d", _annoIVA, i);
|
||||
lim.put("CODTAB", chiave);
|
||||
if (lim.read() != NOERR || lim.get_bool("B0"))
|
||||
{
|
||||
@ -1217,7 +1219,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
|
||||
}
|
||||
else if (_tipo_riepilogativo == 'A')
|
||||
{
|
||||
chiave.format("%04d%02d", _annoes, 13);
|
||||
chiave.format("%04d%02d", _annoIVA, 13);
|
||||
lim.put("CODTAB", chiave);
|
||||
if (lim.read() != NOERR || lim.get_bool("B0"))
|
||||
{
|
||||
@ -1235,7 +1237,7 @@ messaggio TStampa_registri_app::controlla_liquidazione()
|
||||
if (_frequiva == 'M' ||
|
||||
(m==3 || m==6 || m==9 || m==12))
|
||||
{
|
||||
chiave.format("%04d%02d", _annoes, m);
|
||||
chiave.format("%04d%02d", _annoIVA, m);
|
||||
lim.put("CODTAB", chiave);
|
||||
if (lim.read() != NOERR || lim.get_bool("B0"))
|
||||
need_refresh |= !lim.get_bool("B1");
|
||||
@ -1276,7 +1278,7 @@ bool TStampa_registri_app::controlla_mov()
|
||||
{
|
||||
const TDate datareg = mov.get_date(MOV_DATAREG);
|
||||
const bool stampato = mov.get_bool(MOV_REGST);
|
||||
if ( datareg.year() < _annoes )
|
||||
if ( datareg.year() < _annoIVA )
|
||||
{
|
||||
const long numreg = mov.get_long(MOV_NUMREG);
|
||||
if (!stampato)
|
||||
@ -1291,7 +1293,7 @@ bool TStampa_registri_app::controlla_mov()
|
||||
tiporeg TStampa_registri_app::cerca_reg(const TString& c)
|
||||
{
|
||||
tiporeg t = vendita;
|
||||
TString8 cod; cod << _annoes << c;
|
||||
TString8 cod; cod << _annoIVA << c;
|
||||
_tabreg->zero();
|
||||
_tabreg->put("CODTAB", cod);
|
||||
if (_tabreg->read() == NOERR)
|
||||
@ -1316,7 +1318,7 @@ int TStampa_registri_app::stampa_prospetto_IVA(int rr, int tipo_prosp)
|
||||
riga << TR("; 4=liquidazione differita");
|
||||
if (has_module(ICAUT))
|
||||
riga << TR("; 5=IVA per cassa");
|
||||
if (_annoes >= 2015)
|
||||
if (_annoIVA >= 2015)
|
||||
riga << TR("; 6=Scissione pagamenti art.17 ter");
|
||||
set_row(rr++, riga);
|
||||
*/
|
||||
@ -1349,47 +1351,50 @@ int TStampa_registri_app::stampa_prospetto_IVA(int rr, int tipo_prosp)
|
||||
if (_esiste_riga_iva && _stampa)
|
||||
{
|
||||
if (tipo_prosp == 2)
|
||||
{
|
||||
set_row(++rr, FR("@30g---- DI CUI SCISSIONE PAGAMENTI ----"));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (print_prec)
|
||||
set_row(++rr, TR("DI CUI PERIODO PRECEDENTE"));
|
||||
{
|
||||
if (_tipo_reg == vendita)
|
||||
set_row(++rr, FR("@30g---- DI CUI SCISSIONE PAGAMENTI ----"));
|
||||
else
|
||||
set_row(++rr, format(FR("@30g---- DI CUI COMPETENZA %04d ----"), _annoIVA - 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (print_prec)
|
||||
set_row(++rr, TR("DI CUI PERIODO PRECEDENTE"));
|
||||
|
||||
if (_tipo_reg == vendita && _corrispettivi)
|
||||
set_row(++rr, FR("@30g------------------ P E R I O D O -------------------"));
|
||||
else
|
||||
set_row(++rr, FR("@30g---------- P E R I O D O -----------"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
{
|
||||
if (_tipo_reg == vendita && _corrispettivi)
|
||||
set_row(rr,FR("@84g----------- P R O G R E S S I V I --------------"));
|
||||
else
|
||||
set_row(rr,FR("@82g------ P R O G R E S S I V I ------"));
|
||||
}
|
||||
rr++;
|
||||
set_row(rr, TR("Cod."));
|
||||
if (_tipo_reg == acquisto)
|
||||
{
|
||||
set_row(rr, FR("@40gA C Q U I S T I"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
set_row(rr, FR("@92gA C Q U I S T I"));
|
||||
} else
|
||||
if (_tipo_reg == vendita) //un registro corrispettivi puo' solo essere un registro vendite
|
||||
{
|
||||
set_row(rr, FR("@41gV E N D I T E"));
|
||||
if (_corrispettivi)
|
||||
set_row(rr, FR("@67gCORRISPETTIVI"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
{
|
||||
if (_corrispettivi)
|
||||
set_row(rr, FR("@94gV E N D I T E@118gCORRISPETTIVI"));
|
||||
else
|
||||
set_row(rr, FR("@93gV E N D I T E"));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (_tipo_reg == vendita && _corrispettivi)
|
||||
set_row(++rr, FR("@30g------------------ P E R I O D O -------------------"));
|
||||
else
|
||||
set_row(++rr, FR("@30g---------- P E R I O D O -----------"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
{
|
||||
if (_tipo_reg == vendita && _corrispettivi)
|
||||
set_row(rr,FR("@84g----------- P R O G R E S S I V I --------------"));
|
||||
else
|
||||
set_row(rr,FR("@82g------ P R O G R E S S I V I ------"));
|
||||
}
|
||||
rr++;
|
||||
set_row(rr, TR("Cod."));
|
||||
if (_tipo_reg == acquisto)
|
||||
{
|
||||
set_row(rr, FR("@40gA C Q U I S T I"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
set_row(rr, FR("@92gA C Q U I S T I"));
|
||||
} else
|
||||
if (_tipo_reg == vendita) //un registro corrispettivi puo' solo essere un registro vendite
|
||||
{
|
||||
set_row(rr, FR("@41gV E N D I T E"));
|
||||
if (_corrispettivi)
|
||||
set_row(rr, FR("@67gCORRISPETTIVI"));
|
||||
if (_tipo_stampa != prova && !print_prec)
|
||||
{
|
||||
if (_corrispettivi)
|
||||
set_row(rr, FR("@94gV E N D I T E@118gCORRISPETTIVI"));
|
||||
else
|
||||
set_row(rr, FR("@93gV E N D I T E"));
|
||||
}
|
||||
}
|
||||
}
|
||||
rr++;
|
||||
set_row(rr, FR("IVA Descrizione@34gImponibile@53gImposta"));
|
||||
if (_tipo_reg == vendita && _corrispettivi)
|
||||
@ -1556,9 +1561,9 @@ void TStampa_registri_app::set_page_tot_reg()
|
||||
|
||||
if (_esiste_riga_iva && _stampa)
|
||||
{
|
||||
for (int tipo_prosp = 0; tipo_prosp <= (_tipo_reg == vendita ? 2 : 1); tipo_prosp++)
|
||||
for (int tipo_prosp = 0; tipo_prosp <= 2/* (_tipo_reg == vendita ? 2 : 1) */; tipo_prosp++)
|
||||
{
|
||||
TRiga_array& arriva = tipo_prosp == 0 ? _tot_iva_array : (tipo_prosp == 1 ? _tot_prec_iva_array : _riga_split);
|
||||
TRiga_array& arriva = tipo_prosp == 0 ? _tot_iva_array : (tipo_prosp == 1 ? _tot_prec_iva_array : (_tipo_reg == vendita ? _riga_split : _riga_competenza));
|
||||
if (arriva.empty())
|
||||
continue;
|
||||
if (!printed)
|
||||
@ -1673,7 +1678,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
|
||||
// forza il tipoatt a 1
|
||||
chiave.format("%05ld", get_firm());
|
||||
chiave << _annoes << _codatt << "1";
|
||||
chiave << _annoIVA << _codatt << "1";
|
||||
pla.put("CODTAB", chiave);
|
||||
|
||||
const bool print_now = r == -1;
|
||||
@ -1742,7 +1747,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
real pri = ZERO;
|
||||
real pre = ZERO;
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "1" << nm << "1";
|
||||
chiave << _annoIVA << _codatt << "1" << nm << "1";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1750,7 +1755,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
pre = ppa.get_real("R1");
|
||||
}
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "2" << nm << "1";
|
||||
chiave << _annoIVA << _codatt << "2" << nm << "1";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1792,7 +1797,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
real pri = ZERO;
|
||||
real pre = ZERO;
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "1" << nm << "2";
|
||||
chiave << _annoIVA << _codatt << "1" << nm << "2";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1800,7 +1805,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
pre = ppa.get_real("R1");
|
||||
}
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "2" << nm << "2";
|
||||
chiave << _annoIVA << _codatt << "2" << nm << "2";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1841,7 +1846,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
real pri = ZERO;
|
||||
real pre = ZERO;
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "1" << nm << "3";
|
||||
chiave << _annoIVA << _codatt << "1" << nm << "3";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1849,7 +1854,7 @@ bool TStampa_registri_app::stampa_plafonds(int r, bool test_mode)
|
||||
pre = ppa.get_real("R1");
|
||||
}
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "2" << nm << "3";
|
||||
chiave << _annoIVA << _codatt << "2" << nm << "3";
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1909,7 +1914,7 @@ real TStampa_registri_app::stampa_valori_plafonds(const real& r1, const int mese
|
||||
{
|
||||
chiave = "";
|
||||
TString16 m; m.format("%02d", i);
|
||||
chiave << _annoes << _codatt << "1" << m << tipo;
|
||||
chiave << _annoIVA << _codatt << "1" << m << tipo;
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -1917,7 +1922,7 @@ real TStampa_registri_app::stampa_valori_plafonds(const real& r1, const int mese
|
||||
se8 += ppa.get_real("R1");
|
||||
}
|
||||
chiave = "";
|
||||
chiave << _annoes << _codatt << "2" << m << tipo;
|
||||
chiave << _annoIVA << _codatt << "2" << m << tipo;
|
||||
ppa.put("CODTAB", chiave);
|
||||
if (ppa.read() == NOERR)
|
||||
{
|
||||
@ -2290,7 +2295,7 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
||||
if (!_st_liq[m])
|
||||
if (stampo_liquidazione(m))
|
||||
{
|
||||
_datareg = TDate(1, m, _annoes); // Meglio cosi'
|
||||
_datareg = TDate(1, m, _annoIVA); // Meglio cosi'
|
||||
TFilename t;
|
||||
t.temp("reg");
|
||||
if (_scelta == B0_settato || _scelta == prosegui_stampa)
|
||||
@ -2334,13 +2339,13 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
||||
|
||||
_dataregp = _datareg;
|
||||
|
||||
TDate datadoc = mov.get_date(MOV_DATADOC);
|
||||
long numreg = mov.get_long(MOV_NUMREG);
|
||||
long protiva = mov.get_long(MOV_PROTIVA);
|
||||
long uprotiva = mov.get_long(MOV_UPROTIVA);
|
||||
TString16 numdoc = mov.get(MOV_NUMDOC);
|
||||
int meseliq = mov.get_int(MOV_MESELIQ);
|
||||
char tipocf = mov.get(MOV_TIPO)[0];
|
||||
const TDate datadoc = mov.get_date(MOV_DATADOC);
|
||||
const long numreg = mov.get_long(MOV_NUMREG);
|
||||
const long protiva = mov.get_long(MOV_PROTIVA);
|
||||
const long uprotiva = mov.get_long(MOV_UPROTIVA);
|
||||
const TString16 numdoc = mov.get(MOV_NUMDOC);
|
||||
const int meseliq = mov.get_int(MOV_MESELIQ);
|
||||
const char tipocf = mov.get(MOV_TIPO)[0];
|
||||
TString16 ocfpi = mov.get(MOV_OCFPI);
|
||||
long codcf = mov.get_long(MOV_CODCF);
|
||||
long numgio = mov.get_long(MOV_NUMGIO);
|
||||
@ -2348,7 +2353,11 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
||||
TString4 codval = mov.get(MOV_CODVALI);
|
||||
real corrval = mov.get_real(MOV_CORRVALUTA);
|
||||
const bool autof = caus.get_bool(CAU_AUTOFATT);
|
||||
|
||||
const bool dataritind = ((_tipo_reg == acquisto) && (_annoIVA >= 2018)) && ((_datareg.year() - datadoc.year()) > 1 ) ||
|
||||
(((_datareg.year() - datadoc.year()) == 1) && _datareg.month() >= 5);
|
||||
const bool datarit = ((_tipo_reg == acquisto) && !dataritind) && ((_datareg.year() - datadoc.year()) == 1);
|
||||
const bool fattritind = (_annoIVA >= 2018) && (caus.get_bool(CAU_RITFATTIND) || dataritind);
|
||||
const bool fattrit = caus.get_bool(CAU_RITFATT) || datarit;
|
||||
const bool splitpay = tipocf == 'C' && is_split_payment(mov.curr());
|
||||
|
||||
const bool liqdiff = !splitpay && mov.get_bool(MOV_LIQDIFF) && is_IVA_diff(mov.curr());
|
||||
@ -2454,7 +2463,12 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
||||
set_row(_r, "@31g%6ld", codcf);
|
||||
if (meseliq > 0)
|
||||
set_row(_r, "@62g%02d", meseliq);
|
||||
set_row(_r, "@68g%2s", (const char*) _tipodoc);
|
||||
set_row(_r, "@65g%2s", (const char*) _tipodoc);
|
||||
if (fattrit)
|
||||
set_row(_r, "@67gCD");
|
||||
else
|
||||
if (fattritind)
|
||||
set_row(_r, "@67gCI");
|
||||
if (_stampa_width == 132)
|
||||
set_row(_r, "@70g%r", &totdoc);
|
||||
else
|
||||
@ -2521,7 +2535,7 @@ bool TStampa_registri_app::preprocess_page(int file, int counter)
|
||||
_progr_doc = 0;
|
||||
_progr_impn = 0;
|
||||
_progr_imps = 0;
|
||||
const TRecnotype nrec = riga_rmoviva();
|
||||
const TRecnotype nrec = riga_rmoviva(fattrit);
|
||||
if (nrec > 0L)
|
||||
{
|
||||
_esiste_riga_iva = true;
|
||||
@ -2673,7 +2687,7 @@ void TStampa_registri_app::fine_mese()
|
||||
const int m2 = _dataregs.month();
|
||||
for (int kk = m1; kk < m2; kk++)
|
||||
{
|
||||
_datareg = TDate(1, kk, _annoes);
|
||||
_datareg = TDate(1, kk, _annoIVA);
|
||||
if (stampa_plafonds(-1, true))
|
||||
{
|
||||
printer().formfeed();
|
||||
@ -2736,7 +2750,7 @@ void TStampa_registri_app::fine_mese()
|
||||
int a = _data_a.month();
|
||||
for (int m=da; m<=a; m++)
|
||||
{
|
||||
TDate data(1, m, _annoes);
|
||||
TDate data(1, m, _annoIVA);
|
||||
data.set_end_month();
|
||||
scrivi_reg(data);
|
||||
}
|
||||
@ -2827,7 +2841,7 @@ void TStampa_registri_app::preprocess_header()
|
||||
else //se _tipo_stampa == 3 (su libro unico) sto stampando un solo mese
|
||||
{
|
||||
mese = _fino_a_mese;
|
||||
anno = _annoes;
|
||||
anno = _annoIVA;
|
||||
}
|
||||
|
||||
TString data;
|
||||
@ -2849,7 +2863,7 @@ void TStampa_registri_app::preprocess_header()
|
||||
if (_stampa_num_pag) // Stampa numero di pagina in alto a destra
|
||||
{
|
||||
TString16 numpag, riga;
|
||||
numpag.format("%d/%d", _annoes, _numini+printer().getcurrentpage());
|
||||
numpag.format("%d/%d", _annoIVA, _numini+printer().getcurrentpage());
|
||||
const int tab = _stampa_width - numpag.len();
|
||||
riga.format("@%dg%s", tab, (const char*)numpag);
|
||||
set_header(1, riga); // Sempre sulla prima riga!
|
||||
@ -2880,7 +2894,7 @@ void TStampa_registri_app::preprocess_header()
|
||||
(const char*)_desc_lib, (const char*) data);
|
||||
else
|
||||
{
|
||||
if (_annoes > 2007)
|
||||
if (_annoIVA > 2007)
|
||||
{
|
||||
TString key;
|
||||
|
||||
@ -3054,7 +3068,7 @@ void TStampa_registri_app::preprocess_footer()
|
||||
riga << TR("; 4=liquidazione differita");
|
||||
if (has_module(ICAUT))
|
||||
riga << TR("; 5=IVA per cassa");
|
||||
if (_annoes >= 2015)
|
||||
if (_annoIVA >= 2015)
|
||||
riga << TR("; 6=Scissione pagamenti art.17 ter");
|
||||
set_footer(r++, riga);
|
||||
|
||||
@ -3115,7 +3129,7 @@ void TStampa_registri_app::liq_b0_settato()
|
||||
|
||||
void TStampa_registri_app::liq_other_case()
|
||||
{
|
||||
const bool calc_reg = _annoes > 1997; // Flag per effettuare nuovo calcolo registri
|
||||
const bool calc_reg = _annoIVA > 1997; // Flag per effettuare nuovo calcolo registri
|
||||
char tipo_messaggio; // Tipo messaggio per chiamata a programma calcolo/stampa liquidazione
|
||||
|
||||
switch (_scelta)
|
||||
@ -3175,7 +3189,7 @@ void TStampa_registri_app::stampa_vidi()
|
||||
printer().open();
|
||||
|
||||
IndBil.zero();
|
||||
IndBil.put("ANNO", _annoes);
|
||||
IndBil.put("ANNO", _annoIVA);
|
||||
IndBil.put("CODLIB", _codlib);
|
||||
TRectype rec (IndBil.curr());
|
||||
IndBil.read (_isgteq);
|
||||
@ -3236,7 +3250,7 @@ void TStampa_registri_app::scrivi_reg(const TDate& data)
|
||||
TString16 codtab;
|
||||
TTable Tabreg ("REG");
|
||||
|
||||
codtab << _annoes << _codreg;
|
||||
codtab << _annoIVA << _codreg;
|
||||
Tabreg.zero();
|
||||
Tabreg.put("CODTAB", codtab);
|
||||
if (Tabreg.read() == NOERR)
|
||||
@ -3267,7 +3281,7 @@ void TStampa_registri_app::scrivi_reg(const TDate& data)
|
||||
TString16 cod = "";
|
||||
TTable lbu ("%LBU");
|
||||
|
||||
cod << _annoes << _codlib;
|
||||
cod << _annoIVA << _codlib;
|
||||
lbu.zero();
|
||||
lbu.put("CODTAB", cod);
|
||||
if (lbu.read() == NOERR)
|
||||
@ -3284,7 +3298,7 @@ void TStampa_registri_app::aggiorna_reg(const bool aggiorna_vidi)
|
||||
TTable Tabreg ("REG");
|
||||
TLocalisamfile IndBil (LF_INDLIB);
|
||||
|
||||
codtab << _annoes << _codreg;
|
||||
codtab << _annoIVA << _codreg;
|
||||
Tabreg.zero();
|
||||
Tabreg.put("CODTAB", codtab);
|
||||
if (Tabreg.read() == NOERR)
|
||||
@ -3335,7 +3349,7 @@ void TStampa_registri_app::aggiorna_reg(const bool aggiorna_vidi)
|
||||
|
||||
TRectype nuovo(IndBil.curr());
|
||||
|
||||
IndBil.put("ANNO", _annoes);
|
||||
IndBil.put("ANNO", _annoIVA);
|
||||
IndBil.put("CODLIB", _codlib);
|
||||
TRectype rec (IndBil.curr());
|
||||
|
||||
@ -3348,7 +3362,7 @@ void TStampa_registri_app::aggiorna_reg(const bool aggiorna_vidi)
|
||||
long cditta = IndBil.get_long("CODDITTA");
|
||||
TString16 codreg = IndBil.get("CODREG");
|
||||
TString16 codvid = IndBil.get("CODVID");
|
||||
if (_annoes == annoreg && _fino_a_mese == mesereg
|
||||
if (_annoIVA == annoreg && _fino_a_mese == mesereg
|
||||
&& _ditta == cditta && codreg == _codreg && _codice_vidi == codvid)
|
||||
{
|
||||
trovato = true;
|
||||
@ -3360,11 +3374,11 @@ void TStampa_registri_app::aggiorna_reg(const bool aggiorna_vidi)
|
||||
// due righe per lo stesso mese e registro => la stampa di vidimazione
|
||||
// mi sballa!!!,
|
||||
}
|
||||
nuovo.put("ANNO", _annoes);
|
||||
nuovo.put("ANNO", _annoIVA);
|
||||
nuovo.put("CODLIB", _codlib);
|
||||
nuovo.put("NUMREG", numero_riga);
|
||||
|
||||
nuovo.put("ANNOREG", _annoes);
|
||||
nuovo.put("ANNOREG", _annoIVA);
|
||||
nuovo.put("MESEREG", _fino_a_mese); // su libro unico ho un solo mese in gioco!
|
||||
nuovo.put("PAGINI", _primast + 1); // numero iniziale pagina libro unico
|
||||
nuovo.put("PAGFIN", _u_stampata); // numero finale pagina libro unico
|
||||
@ -3387,7 +3401,7 @@ void TStampa_registri_app::aggiorna_lib()
|
||||
TString16 cod = "";
|
||||
TTable lbu ("%LBU");
|
||||
|
||||
cod << _annoes << _codlib;
|
||||
cod << _annoIVA << _codlib;
|
||||
lbu.zero();
|
||||
lbu.put("CODTAB", cod);
|
||||
if (lbu.read() == NOERR)
|
||||
@ -3475,7 +3489,7 @@ void TStampa_registri_app::no_movimenti()
|
||||
//a causa della separazione dei progressivi per registri, ma
|
||||
//solo se l'anno in questione e oltre il 1997, cioè prima della effettiva
|
||||
//separazione dei progressivi.
|
||||
const bool calc = _tipo_reg == riepilogativo && _annoes > 1997;
|
||||
const bool calc = _tipo_reg == riepilogativo && _annoIVA > 1997;
|
||||
if (ricalcola(a) || calc)
|
||||
{
|
||||
TFilename app;
|
||||
@ -3520,7 +3534,7 @@ void TStampa_registri_app::no_movimenti()
|
||||
if (_freq_riepilogo == 'M' ||
|
||||
(m == 3 || m == 6 || m == 9 || m == 12))
|
||||
{
|
||||
_datareg = TDate(1, m, _annoes);
|
||||
_datareg = TDate(1, m, _annoIVA);
|
||||
if (stampa_riepilogo(m))
|
||||
printer().formfeed();
|
||||
}
|
||||
@ -3534,7 +3548,7 @@ void TStampa_registri_app::no_movimenti()
|
||||
{
|
||||
if (! printer().isopen())
|
||||
printer().open();
|
||||
_datareg = TDate(1, m, _annoes);
|
||||
_datareg = TDate(1, m, _annoIVA);
|
||||
if (stampa_plafonds(-1)) // Con -1 compone e stampa printrows all'istante
|
||||
printer().formfeed();
|
||||
}
|
||||
@ -3555,7 +3569,7 @@ void TStampa_registri_app::no_movimenti()
|
||||
|
||||
TFilename f;
|
||||
f.temp("rgp");
|
||||
_datareg = TDate(1, m, _annoes); // serve alla preprocess_header
|
||||
_datareg = TDate(1, m, _annoIVA); // serve alla preprocess_header
|
||||
if (_scelta == B0_settato || _scelta == prosegui_stampa)
|
||||
{
|
||||
if (_tipo_stampa == prova)
|
||||
@ -3596,7 +3610,7 @@ void TStampa_registri_app::stampa_liq_mesi_succ()
|
||||
int a = _data_a.month();
|
||||
for (int m = da; m <= a; m++)
|
||||
{
|
||||
_datareg = TDate(1, m, _annoes);
|
||||
_datareg = TDate(1, m, _annoIVA);
|
||||
if (_stampa_plafonds && stampa_plafonds(-1, true))
|
||||
{
|
||||
printer().formfeed();
|
||||
@ -3647,7 +3661,7 @@ void TStampa_registri_app::send_message(char tipo, const TFilename& nome, int me
|
||||
app = "cg4 -2";
|
||||
|
||||
TToken_string ss(36);
|
||||
ss.add(_annoes);
|
||||
ss.add(_annoIVA);
|
||||
if (_tipo_riepilogativo == 'A' && mese == 12)
|
||||
ss.add(13);
|
||||
else
|
||||
@ -3710,10 +3724,10 @@ bool TStampa_registri_app::set_print(int n)
|
||||
_riporti = false;
|
||||
_totali_stampati = false;
|
||||
|
||||
_annoes = m.get_int(ANNO);//in realta' e' l'anno IVA !!!
|
||||
_annoIVA = m.get_int(ANNO);//in realta' e' l'anno IVA !!!
|
||||
_tipo_stampa = (tipo_stampa) m.get_int(TIPO_STAMPA);
|
||||
_stampa_len = m.get_int(STAMPA_LEN);
|
||||
_tabname = (_annoes > 1997) ? "PRM" : "PIM"; // Dal 1998 in poi utilizza i PRM e non i PIM
|
||||
_tabname = (_annoIVA > 1997) ? "PRM" : "PIM"; // Dal 1998 in poi utilizza i PRM e non i PIM
|
||||
if (m.get_int(STAMPA_WIDTH) == 1)
|
||||
_stampa_width = 132;
|
||||
else
|
||||
@ -3729,12 +3743,12 @@ bool TStampa_registri_app::set_print(int n)
|
||||
_data_a = m.get(A_DATA);
|
||||
|
||||
if (!_data_da.ok())
|
||||
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
|
||||
_data_da = TDate(1, 1, _annoIVA); // Meglio cosi'
|
||||
|
||||
if (!_data_a.ok())
|
||||
_data_a = TDate(31, 12, _annoes); // Meglio cosi'
|
||||
_data_a = TDate(31, 12, _annoIVA); // Meglio cosi'
|
||||
|
||||
const TDate d(31,12,_annoes);
|
||||
const TDate d(31,12,_annoIVA);
|
||||
if (_data_a == d)
|
||||
_tipo_riepilogativo = m.get(TIPO_RIEPILOGATIVO)[0];
|
||||
else
|
||||
@ -3746,7 +3760,7 @@ bool TStampa_registri_app::set_print(int n)
|
||||
if (_tipo_stampa == bollato || _tipo_stampa == rif_giornale)
|
||||
{
|
||||
_fino_a_mese = m.get_int(FINO_A_MESE);
|
||||
_data_da = TDate(1, 1, _annoes); // Meglio cosi'
|
||||
_data_da = TDate(1, 1, _annoIVA); // Meglio cosi'
|
||||
}
|
||||
else //stampa su libro unico
|
||||
{
|
||||
@ -3755,7 +3769,7 @@ bool TStampa_registri_app::set_print(int n)
|
||||
_u_stampata = m.get_int(ULTIMA_PAGINA);
|
||||
_rif_vid = m.get_bool(RIF_VID);
|
||||
_primast = _u_stampata;
|
||||
_data_da = TDate(1, _fino_a_mese, _annoes); // Meglio cosi'
|
||||
_data_da = TDate(1, _fino_a_mese, _annoIVA); // Meglio cosi'
|
||||
}
|
||||
|
||||
int giorni_del_mese = 31;
|
||||
@ -3767,11 +3781,11 @@ bool TStampa_registri_app::set_print(int n)
|
||||
else
|
||||
{
|
||||
_tipo_riepilogativo = ' ';
|
||||
TDate primo(1, _fino_a_mese, _annoes);
|
||||
TDate primo(1, _fino_a_mese, _annoIVA);
|
||||
primo.set_end_month(); // Meglio cosi'
|
||||
giorni_del_mese = primo.day();
|
||||
}
|
||||
_data_a = TDate(giorni_del_mese, _fino_a_mese, _annoes); // Meglio cosi'
|
||||
_data_a = TDate(giorni_del_mese, _fino_a_mese, _annoIVA); // Meglio cosi'
|
||||
}
|
||||
_stampa_data_reg = stampa_datareg();
|
||||
if (_tipo_stampa == libro_unico)
|
||||
@ -3877,9 +3891,9 @@ bool TStampa_registri_app::stampa_registri_IVA(const TMask& m)
|
||||
_tipo_reg = (tiporeg)_tabreg->get_int("I0");
|
||||
const TString16 codtab = _tabreg->get("CODTAB");
|
||||
const int anno = atoi(codtab.left(4));
|
||||
if (anno > _annoes)
|
||||
if (anno > _annoIVA)
|
||||
break;
|
||||
if (anno == _annoes)
|
||||
if (anno == _annoIVA)
|
||||
//registro iva
|
||||
if (_tipo_reg == vendita || _tipo_reg == acquisto || _tipo_reg == riepilogativo)
|
||||
{
|
||||
@ -4013,17 +4027,17 @@ bool TStampa_registri_app::stampa_riepilogo(int m)
|
||||
if (!printer().isopen())
|
||||
printer().open();
|
||||
|
||||
_tabreg->put("CODTAB", _annoes);
|
||||
_tabreg->put("CODTAB", _annoIVA);
|
||||
for (int err = _tabreg->read(_isgteq); err == NOERR; err = _tabreg->next()) // Scorre i registri
|
||||
{
|
||||
const TString8 codtab = _tabreg->get("CODTAB");
|
||||
const int a = atoi(codtab.mid(0,4));
|
||||
if (a > _annoes)
|
||||
if (a > _annoIVA)
|
||||
break;
|
||||
|
||||
const tiporeg tipo = (tiporeg)_tabreg->get_int("I0");
|
||||
|
||||
if (a == _annoes && (tipo == vendita || tipo == acquisto))
|
||||
if (a == _annoIVA && (tipo == vendita || tipo == acquisto))
|
||||
{
|
||||
const TString4 codreg = codtab.mid(4,3);
|
||||
const TString8 codatt = _tabreg->get("S8");
|
||||
@ -4032,7 +4046,7 @@ bool TStampa_registri_app::stampa_riepilogo(int m)
|
||||
vect.destroy();
|
||||
vect_prec.destroy();
|
||||
vect_det.destroy();
|
||||
TString80 chiave; chiave << _annoes << _tabreg->get("S8");
|
||||
TString80 chiave; chiave << _annoIVA << _tabreg->get("S8");
|
||||
|
||||
// Calcolo riepilogo del periodo e progressivi in caso di stampa su bollato
|
||||
for (int i=1; i<=m; i++)
|
||||
@ -4134,7 +4148,7 @@ void TStampa_registri_app::stampa_prospetto_riepilogo(tiporeg tipo, const TStrin
|
||||
row.put(format("%-.40s",(const char*)_tabreg->get("S0")), 18);
|
||||
row.put(TR("Attività"), 60);
|
||||
|
||||
if (_annoes > 2007)
|
||||
if (_annoIVA > 2007)
|
||||
{
|
||||
TString16 key;
|
||||
key.format("%ld|%s", _ditta, (const char*)codatt);
|
||||
|
@ -37,7 +37,7 @@ class TStampa_registri_app : public TPrintapp
|
||||
TRelation *_rel, *_nditte;
|
||||
TTable *_tabreg;
|
||||
TRigaiva_array _iva_array, _riga_rmi;
|
||||
TRiga_array _riga_prospettoXcassa, _riga_split;
|
||||
TRiga_array _riga_prospettoXcassa, _riga_split,_riga_competenza;
|
||||
TTipodoc_array _doc_array;
|
||||
TRiga_array _tot_iva_array, _tot_prec_iva_array;
|
||||
TArray_sheet *_ditte;
|
||||
@ -57,7 +57,7 @@ class TStampa_registri_app : public TPrintapp
|
||||
long _u_stampata, _primast, __firm, _uprotivap, _ditta;
|
||||
long _numini, _pagine_stampate;
|
||||
int _fino_a_mese, _cod_un_loc;
|
||||
int _annoes, _r, _stampa_width, _mese_ultima_liq, _mese_credito;
|
||||
int _annoIVA, _r, _stampa_width, _mese_ultima_liq, _mese_credito;
|
||||
int _stampa_len, _stampa_mese, _size_header;
|
||||
real _totale_doc, _credito;
|
||||
real _totdoc_prog, _totimpn_prog, _totimps_prog; //totali progressivi
|
||||
@ -99,7 +99,7 @@ public:
|
||||
const TRectype& look_comuni(const char* cod);
|
||||
TArray_sheet* get_ditte_sheet() { return _ditte; }
|
||||
int setta_riga (int, const TRigaiva&, real&, real&, real&, real&);
|
||||
int riga_rmoviva();
|
||||
int riga_rmoviva(const bool fattrit);
|
||||
bool set_print(int);
|
||||
bool set_ditte(TMask&);
|
||||
bool compila_reg(const TMask&);
|
||||
@ -151,7 +151,7 @@ public:
|
||||
bool print_IVAxCassa(int da_month, int a_month);
|
||||
|
||||
void build_nomiditte();
|
||||
void set_year(int y) { if (_annoes != y) { _annoes = y; build_nomiditte(); } }
|
||||
void set_year(int y) { if (_annoIVA != y) { _annoIVA = y; build_nomiditte(); } }
|
||||
void clear_stliq();
|
||||
virtual bool preprocess_print(int, int);
|
||||
virtual bool user_create();
|
||||
|
Loading…
x
Reference in New Issue
Block a user