Corretta gestione righe IVA negative in fatture positive

git-svn-id: svn://10.65.10.50/branches/R_10_00@22805 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-02-12 16:54:56 +00:00
parent e9250397b0
commit 6cac0698e0
4 changed files with 69 additions and 50 deletions

View File

@ -54,6 +54,7 @@ class TListaMov_application : public TPrintapp
int _ae, _anno, _annoes, _annoeser;
bool _noseparator, _competence_only;
real _totdocumenti, _totdoc, _totimponibile, _totimposta, _importo;
real _totritenute, _ritenute, _gen_totritenute; // Aggiunte 11/02/2013
real _gen_totdocumenti, _gen_totimponibile, _gen_totimposta, _gen_op_esenti, _gen_op_non_imp;
real _op_esenti, _op_non_imp; //, _impo, _impos;
@ -1042,7 +1043,7 @@ bool TListaMov_application::preprocess_page(int file,int counter)
_numr = curmov.get_long(MOV_NUMREG);
_tipo_elenco = curmov.get(MOV_TIPO);
_codcf = curmov.get_long(MOV_CODCF);
int tiporeg = tipo_registro (codreg, anno);
const int tiporeg = tipo_registro (codreg, anno);
const TString8 attreg = AttivitaRegistro (codreg, anno);
if (tiporeg == 1 || tiporeg == 2)//se si tratta di un movimento iva
@ -1054,6 +1055,7 @@ bool TListaMov_application::preprocess_page(int file,int counter)
_tipodoc = curmov.get(MOV_TIPODOC);
_codval = curmov.get(MOV_CODVALI);
_totdoc = curmov.get_real(MOV_TOTDOC);
_ritenute = curmov.get_real(MOV_RITFIS) + curmov.get_real(MOV_RITSOC);
if (_tipo_elenco != _tipo_clifo_prec && _tipo_clifo_prec != "")
printer().formfeed();
@ -1348,6 +1350,7 @@ print_action TListaMov_application::postprocess_page(int file,int count)
int rr = 1;
print_intra(rr);
_totdocumenti += _totdoc;
_totritenute += _ritenute;
TRecnotype pos, items;
bool FINITO = FALSE;
@ -1361,8 +1364,8 @@ print_action TListaMov_application::postprocess_page(int file,int count)
cur->save_status();
++(*cur);
// long numrsucc = cur->file(LF_MOV).get_long(MOV_NUMREG);
_tipoelsucc = cur->file(LF_MOV).get(MOV_TIPO);
_codclifosucc = cur->file(LF_MOV).get_long(MOV_CODCF);
_tipoelsucc = cur->curr(LF_MOV).get(MOV_TIPO);
_codclifosucc = cur->curr(LF_MOV).get_long(MOV_CODCF);
--(*cur);
cur->restore_status();
}
@ -1370,24 +1373,26 @@ print_action TListaMov_application::postprocess_page(int file,int count)
if (FINITO || (_tipo_elenco != _tipoelsucc)||(_codcf != _codclifosucc))
{
set_row(rr++,"");
if ((_tipo_elenco == "C")||(_tipo_elenco == "c"))
set_row(rr++, FR("@bTotali Cliente@18gDocumenti Totale documenti@47gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp."));
if (_tipo_elenco == "C")
set_row(rr++, FR("@bTotali Cliente@18gDocumenti Totale documenti@45gRitenute/IVA CEE@68gImponibile@86gImposta@102gop. esenti@119gop. non imp."));
else
set_row(rr++, FR("@bTotali Fornitore@18gDocumenti Totale documenti@49gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp."));
set_row(rr++, FR("@bTotali Fornitore@18gDocumenti Totale documenti@45gRitenute/IVA CEE@68gImponibile@86gImposta@102gop. esenti@119gop. non imp."));
set_row(rr, "@b@18g%9d", _documenti);
set_row(rr, "@b@28g%r", &_totdocumenti);
set_row(rr, "@b@57g%r", &_totimponibile);
set_row(rr, "@b@73g%r", &_totimposta);
set_row(rr, "@b@92g%r", &_op_esenti);
set_row(rr, "@b@110g%r", &_op_non_imp);
set_row(rr, "@b@45g%r", &_totritenute);
set_row(rr, "@b@62g%r", &_totimponibile);
set_row(rr, "@b@79g%r", &_totimposta);
set_row(rr, "@b@96g%r", &_op_esenti);
set_row(rr, "@b@113g%r", &_op_non_imp);
//incrementa i totali generali di stampa!!!
_gen_documenti += _documenti;
_gen_totdocumenti += _totdocumenti;
_gen_totimponibile += _totimponibile;
_gen_totimposta += _totimposta;
_gen_op_esenti += _op_esenti;
_gen_op_non_imp += _op_non_imp;
_gen_documenti += _documenti;
_gen_totdocumenti += _totdocumenti;
_gen_totritenute += _totritenute;
_gen_totimponibile += _totimponibile;
_gen_totimposta += _totimposta;
_gen_op_esenti += _op_esenti;
_gen_op_non_imp += _op_non_imp;
_totimposta = 0;
_totimponibile = 0;
@ -1395,33 +1400,36 @@ print_action TListaMov_application::postprocess_page(int file,int count)
_op_non_imp = 0;
_documenti = 0;
_totdocumenti = 0;
_totritenute = 0;
//return REPEAT_PAGE;
}
if (FINITO) //ha veramente finito questa stupida stampa: stampa i totali generali!
{
TString blank = "";
set_row(rr++,(const char*)blank);
set_row(rr++,(const char*)blank);
set_row(rr++,(const char*)blank);
{
const TString& blank = EMPTY_STRING;
set_row(rr++,(const char*)blank);
set_row(rr++,(const char*)blank);
set_row(rr++,(const char*)blank);
set_row(rr++, FR("@bTOTALI GENERALI @18gDocumenti Totale documenti@47gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp."));
set_row(rr++, FR("@bTOTALI GENERALI @18gDocumenti Totale documenti@45gRitenute/IVA CEE@68gImponibile@88gImposta@102gop. esenti@119gop. non imp."));
set_row(rr, "@b@18g%9d", _gen_documenti);
set_row(rr, "@b@28g%r", &_gen_totdocumenti);
set_row(rr, "@b@57g%r", &_gen_totimponibile);
set_row(rr, "@b@73g%r", &_gen_totimposta);
set_row(rr, "@b@89g%r", &_gen_op_esenti);
set_row(rr, "@b@104g%r", &_gen_op_non_imp);
set_row(rr, "@b@18g%9d", _gen_documenti);
set_row(rr, "@b@28g%r", &_gen_totdocumenti);
set_row(rr, "@b@45g%r", &_gen_totritenute);
set_row(rr, "@b@62g%r", &_gen_totimponibile);
set_row(rr, "@b@79g%r", &_gen_totimposta);
set_row(rr, "@b@96g%r", &_gen_op_esenti);
set_row(rr, "@b@113g%r", &_gen_op_non_imp);
//alla fine della stampa azzera i totali generali
_gen_documenti = 0;
_gen_totdocumenti = 0;
_gen_totimponibile = 0;
_gen_totimposta = 0;
_gen_op_esenti = 0;
_gen_op_non_imp = 0;
}
//alla fine della stampa azzera i totali generali
_gen_documenti = 0;
_gen_totdocumenti = 0;
_gen_totritenute = 0;
_gen_totimponibile = 0;
_gen_totimposta = 0;
_gen_op_esenti = 0;
_gen_op_non_imp = 0;
}
if (rr > 1)
return REPEAT_PAGE;
@ -1894,7 +1902,7 @@ void TListaMov_application::incrementa_totali()
const TString4 codiva = rmoviva.get(RMI_CODIVA);
const TRectype& tabiva = cache().get("%IVA", codiva);
if ((_tipo_elenco == "C")||(_tipo_elenco == "c"))
if (_tipo_elenco == "C")
{
const int colonna = tabiva.get_int("S7");
if ((colonna == 1)||(colonna == 3))
@ -1910,14 +1918,16 @@ void TListaMov_application::incrementa_totali()
const int colonna = tabiva.get_int("S8");
if ((colonna == 1)||(colonna == 3)||(colonna == 4))
_totimposta += imposta;
if (colonna == 1)
_totimponibile += imponibile;
else
if (colonna == 3)
_op_esenti += imponibile;
else
if (colonna == 4)
_op_non_imp += imponibile;
switch (colonna)
{
case 1: _totimponibile += imponibile; break;
case 3: _op_esenti += imponibile; break;
case 4: _op_non_imp += imponibile; break;
default:
TString msg; msg << TR("Codice IVA senza colonna allegato fornitori '") << codiva << "'";
xvtil_statbar_set(msg);
break;
}
}
}
@ -2214,12 +2224,14 @@ void TListaMov_application::init_print(const TMask& msk)
_numeroregp = 0;
_documenti = 0;
_totdocumenti = 0;
_totritenute = 0;
_totimponibile = 0;
_totimposta = 0;
_op_esenti = 0;
_op_non_imp = 0;
_gen_documenti = 0;
_gen_totdocumenti = 0;
_gen_totritenute = 0;
_gen_totimponibile = 0;
_gen_totimposta = 0;
_gen_op_esenti = 0;

View File

@ -683,7 +683,14 @@ bool TLiquidazione_app::residuo_da_liquidare(long numreg, int numrig, const TDat
imposta += TImporto(sez, id.get(RMI_IMPOSTA).as_real());
}
}
if (imponib.valore() > ZERO)
bool is_good = imponib.valore() > ZERO;
if (!is_good)
{
const real totdoc = cache().get(LF_MOV, numreg, MOV_TOTDOC);
is_good = totdoc > ZERO;
}
if (is_good)
{
importo_res = importo.valore();
imponib_res = imponib.valore();
@ -972,7 +979,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const bool cau_intra = rcs.get_bool("INTRACOM");
const bool cau_valintra = rcs.get_bool("VALINTRA");
if (_mov->get_long(MOV_NUMREG) == 31838)
if (_mov->get_long(MOV_NUMREG) == 63630)
int cazzone = 1;
// Inizio gestione IVA differita

View File

@ -554,9 +554,9 @@ bool TLiquidazione_app::recalc_acconto(real& inf, real& ina)
// determina casistica
enum { mm, tt, mt, tm, boh } history = boh;
real divide_by_three = 1.0;
char thh = *_freqviva;
const char thh = *_freqviva;
const TString16 thyear = _year;
const TString4 thyear = _year;
_year.format("%d", atoi(_year)-1);
if (!look_lia())

View File

@ -1936,7 +1936,7 @@ bool TStampa_registri_app::print_IVAxCassa(int da_month, int a_month)
}
TString query;
query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(TIPOMOV>2)&&(STR(IMPONIBILE>0))";
query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(TIPOMOV>2)&&(STR(MOV.TOTDOC>0))";
query << "\nBY DATAREGP DATAREG";
query << "\nJOIN MOV INTO NUMREG==NUMREG";
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";