Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21430 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-01-14 11:36:14 +00:00
parent 3160be041e
commit c4a1c0fa16
2 changed files with 72 additions and 34 deletions

View File

@ -482,7 +482,7 @@ DATACOMP =
DATADOC = DataDocumento
DATA74TER =
MESELIQ =
NUMDOC = NumDocumento
NUMDOC = _STREXPR,LEFT(NumDocumento; 7)
//TIPODOC = *** conversione FlTipoDocumento
CODCAUS = IdCausale
DESCR = Descrizione1
@ -572,6 +572,7 @@ CLI_CONTO = 101
FOR_GRUPPO = 5
FOR_CONTO = 601
GRUPPI_MOV = 7|8
IVA_ESENTE = 999
// parametri generali della maschera (dns user password)
[Main]

View File

@ -32,6 +32,7 @@ class THardy_movimenti : public THardy_transfer
TArray* _righeiva; // array dele righe iva hardy
TArray* _righecont; // array delle righe contabili hardy
TAssoc_array* _ivaind; // array dei codici iva con % di indetraibilità
TAssoc_array* _ivaoma; // array dei codici iva per gli omaggi
protected:
bool scrivi_righe();
@ -349,6 +350,7 @@ bool THardy_movimenti::scrivi_righe()
TString paragraph;
int nrigai = 1; // contatore righe iva
TConfig& ini = config();
TString8 ivaesente = ini.get("IVA_ESENTE", "Mastri");
TToken_string gruppi_mov = ini.get("GRUPPI_MOV", "Mastri");
// se è un movimento iva metto in atto il meccanismo di ricerca per assegnare le aliquote ai conti
if (_righeiva->items()>0)
@ -358,9 +360,10 @@ bool THardy_movimenti::scrivi_righe()
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(i);
const char* gruppo = rec_rmov.get(RMV_GRUPPO);
if (!gruppi_mov.find(gruppo))
_righecont->destroy(i, true);
if ((gruppi_mov.find(gruppo))<0)
_righecont->destroy(i);
}
_righecont->pack();
// secondo passo: per ogni riga iva cerco importo uguale in righe contabili,
// se lo trovo assegno quel codice iva al conto contabile trovato e cancello la riga iva e la riga contabile
for (int i=0;i<_righeiva->items();i++)
@ -368,7 +371,6 @@ bool THardy_movimenti::scrivi_righe()
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
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);
@ -382,44 +384,60 @@ bool THardy_movimenti::scrivi_righe()
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
const char* codiva = rec_rmoviva.get(RMI_CODIVA);
// se iva utilizzata per gli omaggi, devo fare un'altra riga iva identica ma con importo avere con iva esente
if (_ivaoma->is_key(codiva))
{
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
// sostituisco codice iva e importo (-)
importo = -importo;
_conf->set(RMI_CODIVA, ivaesente); // codice iva esente per quadrare il movimento
_conf->set(RMI_IMPONIBILE, importo.string(0,2)); // imponibile negativo
_conf->set(RMI_IMPOSTA, ""); // imposta zero
}
_righecont->destroy(j, true);
_righeiva->destroy(i, true);
i = _righeiva->items();
j = _righecont->items();
// _righeiva->destroy(i);
rec_rmoviva.zero();
}
}
}
_righecont->pack();
// terzo passo: per ogni riga iva rimasta distribuisco importo su tutti i conti rimasti in righe cont.
for (int i=0;i<_righeiva->items();i++)
{
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE);
real imposta = rec_rmoviva.get_real(RMI_IMPOSTA);
TGeneric_distrib dimponibile(imponibile, ndec);
TGeneric_distrib dimposta(imposta, ndec);
for (int j=0;j<_righecont->items();j++)
if (!rec_rmoviva.empty())
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
real importo = rec_rmov.get_real(RMV_IMPORTO);
dimponibile.add(importo);
dimposta.add(importo);
real imponibile = rec_rmoviva.get_real(RMI_IMPONIBILE);
real imposta = rec_rmoviva.get_real(RMI_IMPOSTA);
TGeneric_distrib dimponibile(imponibile, ndec);
TGeneric_distrib dimposta(imposta, ndec);
for (int j=0;j<_righecont->items();j++)
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
real importo = rec_rmov.get_real(RMV_IMPORTO);
dimponibile.add(importo);
dimposta.add(importo);
}
for (int j=0;j<_righecont->items();j++)
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
real importo = dimponibile.get();
real imposta = dimposta.get();
rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
rec_rmoviva.put(RMI_IMPONIBILE, importo);
rec_rmoviva.put(RMI_IMPOSTA, imposta);
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
}
}
for (int j=0;j<_righecont->items();j++)
{
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
real importo = dimponibile.get();
real imposta = dimposta.get();
rec_rmoviva.put(RMI_TIPOC, rec_rmov.get(RMV_TIPOC));
rec_rmoviva.put(RMI_GRUPPO, rec_rmov.get(RMV_GRUPPO));
rec_rmoviva.put(RMI_CONTO, rec_rmov.get(RMV_CONTO));
rec_rmoviva.put(RMI_SOTTOCONTO, rec_rmov.get(RMV_SOTTOCONTO));
rec_rmoviva.put(RMI_IMPONIBILE, importo);
rec_rmoviva.put(RMI_IMPOSTA, imposta);
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
_conf->set_paragraph(paragraph); // riga iva
rec2ini(rec_rmoviva);
}
//_righeiva->destroy(i, true);
}
_righecont->destroy();
}
@ -431,9 +449,10 @@ bool THardy_movimenti::scrivi_righe()
// procedura principale di conversione
bool THardy_movimenti::trasferisci()
{
// creazione array delle aliquote iva con % indetraibilitaà
// creazione array delle aliquote iva con % indetraibilità e degli omaggi
// leggere la tabella hardy AliquoteIVA
_ivaind->destroy();
_ivaoma->destroy();
TString query_iva;
query_iva << query_header();
query_iva << "SELECT * "
@ -443,11 +462,17 @@ bool THardy_movimenti::trasferisci()
{
const char* codiva = recset_iva.get("IdIva").as_string();
real ind = recset_iva.get("Indetraibilita").as_real();
const int flomaggio = recset_iva.get("FlOmaggio").as_int();
if (ind != ZERO)
{
real* oggetto = new real();
_ivaind->add(codiva, (TObject*)oggetto);
}
if (flomaggio > 0)
{
real* oggetto = new real();
_ivaoma->add(codiva, (TObject*)oggetto);
}
}
// query su testate movimenti
@ -510,17 +535,19 @@ bool THardy_movimenti::trasferisci()
test_movcont();
// scrive RMOV e /o RMOVIVA a partire da array righe letti da db hardy
bool ok = scrivi_righe();
#ifdef DBG
TString msg;
if (ok)
msg << (iva ? TR("Movimento iva "): TR("Movimento contabile ")) << _kmovcont << " generato nel file " << temp;
msg << (iva ? TR("Movimento iva "): TR("Movimento contabile ")) << _kmovcont << TR(" generato nel file ") << temp;
else
{
ntran--;
if (temp.exist())
temp.fremove();
msg << (iva ? TR("Il movimento iva "): TR("Il movimento contabile ")) << _kmovcont << " ha generato un errore, non è stato convertito ";
msg << (iva ? TR("Il movimento iva "): TR("Il movimento contabile ")) << _kmovcont << TR(" ha generato un errore, non è stato convertito ");
}
log(msg);
#endif
}
if (_conf != NULL)
delete _conf;
@ -530,7 +557,16 @@ bool THardy_movimenti::trasferisci()
app << "cg2 -0 -i" << outdir << "/ha*.ini";
TExternal_app primanota(app);
primanota.run(true);
TString msg;
msg << TR("Importazione completata");
log(msg);
}
else
{
TString msg;
msg << TR("Importazione annullata");
log(msg);
}
return true;
}
@ -539,6 +575,7 @@ THardy_movimenti::THardy_movimenti(const int anno, const TDate dadata, const TDa
_righeiva = new TArray;
_righecont = new TArray;
_ivaind = new TAssoc_array;
_ivaoma = new TAssoc_array;
}
///////////////////////////////////////////////////////////