Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21414 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-11 14:35:01 +00:00
parent e9611c895d
commit d318dbba65
2 changed files with 51 additions and 6 deletions

View File

@ -570,7 +570,7 @@ NAVP =
CLI_GRUPPO = 4
CLI_CONTO = 101
FOR_GRUPPO = 5
FOR_CONTO = 600
FOR_CONTO = 601
GRUPPI_MOV = 7|8
// parametri generali della maschera (dns user password)

View File

@ -15,6 +15,7 @@
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
#include <rcausali.h>
const char* const APPNAME = TR("Conversione movimenti");
@ -30,7 +31,7 @@ class THardy_movimenti : public THardy_transfer
long _kmovcont; // movimento contabile in esame
TArray* _righeiva; // array dele righe iva hardy
TArray* _righecont; // array delle righe contabili hardy
TAssoc_array* _ivaind; // array dei codici iva con % di indetraibilità
protected:
bool scrivi_righe();
@ -40,7 +41,8 @@ protected:
bool test_moviva();
void conto2campo(const TString& hd_tipoc, const TString& hd_key, TString4& tipoc, int& gr, int& co, long& so);
void rec2ini(const TRectype& rec);
void recset2rec(TODBC_recordset& recset, TRectype& rec, const TString_array& lista_campi);
void recset2rec(const TODBC_recordset& recset, TRectype& rec, const TString_array& lista_campi);
real get_imponibile(const TRectype& rec);
public:
virtual bool trasferisci();
@ -48,7 +50,7 @@ public:
};
// carica il record campo con il record hardy in base alla configurazione
void THardy_movimenti::recset2rec(TODBC_recordset& recset, TRectype& rec, const TString_array& lista_campi)
void THardy_movimenti::recset2rec(const TODBC_recordset& recset, TRectype& rec, const TString_array& lista_campi)
{
TString campo_dest, campo_orig, valore, str;
FOR_EACH_ARRAY_ROW(lista_campi,i,row)
@ -317,6 +319,29 @@ bool THardy_movimenti::scrivi_righecont()
return true;
}
// calcola imponibile della riga iva passata:
// 1. se è una riga con iva indetraibile verifico il conto 4 sulla causale
// se il conto c'è, l'imponibile è imponibile della riga
// se il conto non c'è calcolo iva indetraibile utilizzando la % e la sommo all'imponibile
// 2. se è una riga con iva normale, l'imponibile è imponibliie della riga
real THardy_movimenti::get_imponibile(const TRectype& rec)
{
real imponibile = rec.get_real(RMI_IMPONIBILE);
const char* codiva = rec.get(RMI_CODIVA);
if (_ivaind->is_key(codiva))
{
TString16 causale = get_str("IdCausale");
causale << "|4";
const TString& gruppo = cache().get(LF_RCAUSALI, causale, RCA_GRUPPO);
if (gruppo.blank())
{
real& perc = (real&)_ivaind->find(codiva);
imponibile = imponibile+(imponibile*perc)/100;
}
}
return imponibile;
}
// gestisce tutto il procedimento di scrittura su ini delle righe iva e contabili
bool THardy_movimenti::scrivi_righe()
{
@ -341,7 +366,9 @@ bool THardy_movimenti::scrivi_righe()
for (int i=0;i<_righeiva->items();i++)
{
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE);
real imponibile = get_imponibile(rec_rmoviva);
//real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE);
for (int j=0;j<_righecont->items();j++)
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
@ -392,7 +419,7 @@ bool THardy_movimenti::scrivi_righe()
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
}
_righeiva->destroy(i, true);
//_righeiva->destroy(i, true);
}
_righecont->destroy();
}
@ -406,7 +433,24 @@ bool THardy_movimenti::trasferisci()
{
// creazione array delle aliquote iva con % indetraibilitaà
// leggere la tabella hardy AliquoteIVA
_ivaind->destroy();
TString query_iva;
query_iva << query_header();
query_iva << "SELECT * "
"FROM dbo.AliquoteIVA ";
TODBC_recordset recset_iva(query_iva);
for (bool ok=recset_iva.move_first();ok;ok=recset_iva.move_next())
{
const char* codiva = recset_iva.get("IdIva").as_string();
real ind = recset_iva.get("Indetraibilita").as_real();
if (ind != ZERO)
{
real* oggetto = new real();
_ivaind->add(codiva, (TObject*)oggetto);
}
}
// query su testate movimenti
TString16 dastr, astr;
dastr.format("%4d-%2d-%2d", _dadata.year(), _dadata.month(), _dadata.day());
astr.format("%4d-%2d-%2d", _adata.year(), _adata.month(), _adata.day());
@ -494,6 +538,7 @@ THardy_movimenti::THardy_movimenti(const int anno, const TDate dadata, const TDa
{
_righeiva = new TArray;
_righecont = new TArray;
_ivaind = new TAssoc_array;
}
///////////////////////////////////////////////////////////