Patch level : 10.0 hardy

Files correlati     : hacnv.exe
Ricompilazione Demo : [ ]


git-svn-id: svn://10.65.10.50/branches/R_10_00@21596 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-02-08 14:20:36 +00:00
parent 3f62e9654e
commit 53166666e3

View File

@ -12,6 +12,7 @@
#include <tabutil.h>
#include <utility.h>
#include <causali.h>
#include <pconti.h>
#include <mov.h>
#include <rmov.h>
@ -257,7 +258,7 @@ bool THardy_movimenti::test_moviva()
totdoc_calc+=recset_righe.get("Imponibile").as_real();
totdoc_calc+=recset_righe.get("Imposta").as_real();
}
if (totdoc == ZERO)
if (totdoc == ZERO && totdoc_calc != ZERO)
{
_conf->set("SOLAIVA", " ");
_conf->set(MOV_TOTDOC, totdoc_calc.string(0,2));
@ -378,15 +379,19 @@ bool THardy_movimenti::scrivi_righe()
const int gruppo_omaggi = sconto_omaggi.get_int(0);
const int conto_omaggi = sconto_omaggi.get_int(1);
const long sottoconto_omaggi = sconto_omaggi.get_long(2);
real saldo;
// la sezione della riga 1 mi serve per verificare il segno e la sezione delle righe contabili
TString16 causale = get_str("IdCausale");
causale << "|1";
const char sez_cau = (cache().get(LF_RCAUSALI, causale, RCA_SEZIONE)[0] == 'D' ? 'A' : 'D');
bool has_iva_omaggio = false;
// se è un movimento iva metto in atto il meccanismo di ricerca per assegnare le aliquote ai conti
if (_righeiva->items()>0)
if (_righeiva->items() > 0)
{
for (int i = 0; !has_iva_omaggio && i<_righeiva->items(); i++)
has_iva_omaggio = _ivaoma->is_key(((TRectype*)_righeiva->objptr(i))->get(RMI_CODIVA));
// primo passo: scartare le righe contabili con gruppi non presenti nella lista GRUPPI_MOV
for (int i=_righecont->items() - 1;i>=0;i--)
{
@ -410,7 +415,27 @@ bool THardy_movimenti::scrivi_righe()
else
if (riga_omaggio)
{
_righecont->destroy(i);
if (!has_iva_omaggio)
{
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(*(TRectype*)_righeiva->objptr(0));
// sostituisco codice iva e importo (-) e gruppo conto sottoconto
const char sezione = rec_rmov.get_char(RMV_SEZIONE);
real importo = rec_rmov.get_real(RMV_IMPORTO);
if (sezione != sez_cau)
importo = -importo;
saldo += importo;
_conf->set(RMI_CODIVA, iva_esente); // codice iva esente per quadrare il movimento
_conf->set(RMI_TIPODET, "");
_conf->set(RMI_IMPONIBILE, importo.string(0,2)); // imponibile negativo
_conf->set(RMI_IMPOSTA, ""); // imposta zero
_conf->set(RMI_TIPOC, "");
_conf->set(RMI_GRUPPO, sconto_omaggi.get(0));
_conf->set(RMI_CONTO, sconto_omaggi.get(1));
_conf->set(RMI_SOTTOCONTO, sconto_omaggi.get(2));
}
_righecont->destroy(i);
}
else
{
@ -586,6 +611,16 @@ bool THardy_movimenti::scrivi_righe()
else
_righecont->destroy(j, true);
}
if (saldo != ZERO)
{
TString paragraph;
paragraph.format("%d",LF_MOV);
real totdoc(_conf->get(MOV_TOTDOC, paragraph));
totdoc += saldo;
_conf->set(MOV_TOTDOC, totdoc.string(0,2), paragraph);
}
//_righecont->destroy();
}
// scrivo su ini le righe contabili rimaste (tutte se il mov non è iva)
@ -676,6 +711,14 @@ bool THardy_movimenti::trasferisci()
paragraph.format("%d",LF_MOV);
_conf->set_paragraph(paragraph); // testata movimento
aggiorna_ini(*_conf, lista_campi);
TString codcaus = _conf->get(MOV_CODCAUS);
if (cache().get(LF_CAUSALI, codcaus, CAU_MOVAP) == "C")
{
const TDate d(_conf->get(MOV_DATAREG));
const TDate datacomp(31, 12, d.year() - 1);
_conf->set(MOV_DATACOMP, datacomp.string());
}
// verifica se è un mov. iva e nel caso aggiorna testata e array righe iva
bool iva = test_moviva();
// legge righe contabili e aggiorna array righe cont.