Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21509 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-25 13:44:27 +00:00
parent 65e7761630
commit aa5cb2e27f
2 changed files with 33 additions and 25 deletions

View File

@ -575,6 +575,16 @@ CONTI_MOV = 3,1,0|3,5,0|3,45,2|3,45,3|5,601,127|5,601,137|5,601,295|6,1,8|6,1,9|
IVA_ESENTE = 999 IVA_ESENTE = 999
CONTO_OMAGGI=8|15|22 CONTO_OMAGGI=8|15|22
[Indetraibilita]
072=9
076=9
079=9
210=E
215=D
220=A
320=C
I50=B
// parametri generali della maschera (dns user password) // parametri generali della maschera (dns user password)
[Main] [Main]
201 = hardy 201 = hardy

View File

@ -45,7 +45,6 @@ protected:
void rec2ini(const TRectype& rec); void rec2ini(const TRectype& rec);
void recset2rec(const 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); real get_imponibile(const TRectype& rec);
real get_netto(const TRectype& rec, const real & lordo);
public: public:
virtual bool trasferisci(); virtual bool trasferisci();
@ -338,31 +337,16 @@ real THardy_movimenti::get_imponibile(const TRectype& rec)
const TString& gruppo = cache().get(LF_RCAUSALI, causale, RCA_GRUPPO); const TString& gruppo = cache().get(LF_RCAUSALI, causale, RCA_GRUPPO);
if (gruppo.blank()) if (gruppo.blank())
{ {
real& perc = (real&)_ivaind->find(codiva); real imposta = rec.get_real(RMI_IMPOSTA);
imponibile = imponibile+(imponibile*perc)/CENTO; TString& codind = (TString&)_ivaind->find(codiva);
real perc(cache().get("%DET", codind, "R0"));
imposta = (imposta*perc)/CENTO + 0,01;
imposta.round(2);
} }
} }
return imponibile; return imponibile;
} }
real THardy_movimenti::get_netto(const TRectype& rec, const real & lordo)
{
real val = lordo;
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);
val = (val * CENTO)/(CENTO + perc);
}
}
return val;
}
// gestisce tutto il procedimento di scrittura su ini delle righe iva e contabili // gestisce tutto il procedimento di scrittura su ini delle righe iva e contabili
bool THardy_movimenti::scrivi_righe() bool THardy_movimenti::scrivi_righe()
{ {
@ -426,6 +410,8 @@ bool THardy_movimenti::scrivi_righe()
{ {
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i); TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
const char* codiva = rec_rmoviva.get(RMI_CODIVA); const char* codiva = rec_rmoviva.get(RMI_CODIVA);
const TString* codind = (TString*)_ivaind->objptr(codiva);
TCodiceIVA c(codiva); TCodiceIVA c(codiva);
const bool riga_omaggio = _ivaoma->is_key(codiva); const bool riga_omaggio = _ivaoma->is_key(codiva);
real imponibile = get_imponibile(rec_rmoviva); real imponibile = get_imponibile(rec_rmoviva);
@ -439,11 +425,19 @@ bool THardy_movimenti::scrivi_righe()
const real impon = rec_rmoviva.get_real(RMI_IMPONIBILE); const real impon = rec_rmoviva.get_real(RMI_IMPONIBILE);
const real iva = rec_rmoviva.get_real(RMI_IMPOSTA); const real iva = rec_rmoviva.get_real(RMI_IMPOSTA);
c.imposta(importo); c.imposta(importo);
// se il codice iva ha una indetraibilità, metto il codice di ind. nella riga iva
if (codind != NULL)
rec_rmoviva.put(RMI_TIPODET, *codind);
rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC)); rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO)); rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO)); rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO)); rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
const real wimp = get_netto(rec_rmoviva, importo); real wimp = impon ;
if (importo < imponibile)
{
wimp *= importo / imponibile;
wimp.round(2);
}
const real wiva = c.imposta(wimp); const real wiva = c.imposta(wimp);
if (importo < imponibile) if (importo < imponibile)
{ {
@ -474,6 +468,9 @@ bool THardy_movimenti::scrivi_righe()
if (!rec_rmoviva.empty()) if (!rec_rmoviva.empty())
{ {
const char* codiva = rec_rmoviva.get(RMI_CODIVA); const char* codiva = rec_rmoviva.get(RMI_CODIVA);
const TString* codind = (TString*)_ivaind->objptr(codiva);
if (codind != NULL)
rec_rmoviva.put(RMI_TIPODET, *codind);
const bool riga_omaggio = _ivaoma->is_key(codiva); const bool riga_omaggio = _ivaoma->is_key(codiva);
real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE); real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE);
real imposta = rec_rmoviva.get_real(RMI_IMPOSTA); real imposta = rec_rmoviva.get_real(RMI_IMPOSTA);
@ -529,6 +526,8 @@ bool THardy_movimenti::scrivi_righe()
// procedura principale di conversione // procedura principale di conversione
bool THardy_movimenti::trasferisci() bool THardy_movimenti::trasferisci()
{ {
TConfig& ini = config();
// creazione array delle aliquote iva con % indetraibilità e degli omaggi // creazione array delle aliquote iva con % indetraibilità e degli omaggi
// leggere la tabella hardy AliquoteIVA // leggere la tabella hardy AliquoteIVA
_ivaind->destroy(); _ivaind->destroy();
@ -545,8 +544,8 @@ bool THardy_movimenti::trasferisci()
const int flomaggio = recset_iva.get("FlOmaggio").as_int(); const int flomaggio = recset_iva.get("FlOmaggio").as_int();
if (ind != ZERO) if (ind != ZERO)
{ {
real* oggetto = new real(); TString4 oggetto = ini.get(codiva, "Indetraibilita");
_ivaind->add(codiva, (TObject*)oggetto); _ivaind->add(codiva, oggetto);
} }
if (flomaggio > 0) if (flomaggio > 0)
{ {
@ -572,7 +571,6 @@ bool THardy_movimenti::trasferisci()
query << "' ORDER BY DataMovimento "; query << "' ORDER BY DataMovimento ";
TRecordset& recset = create_recordset(query); TRecordset& recset = create_recordset(query);
TConfig& ini = config();
TString_array lista_campi; TString_array lista_campi;
ini.list_variables(lista_campi, true, "MOV", true); ini.list_variables(lista_campi, true, "MOV", true);