Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@21501 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
47580c0264
commit
94bcffc72d
@ -571,7 +571,7 @@ CLI_GRUPPO = 4
|
|||||||
CLI_CONTO = 101
|
CLI_CONTO = 101
|
||||||
FOR_GRUPPO = 5
|
FOR_GRUPPO = 5
|
||||||
FOR_CONTO = 601
|
FOR_CONTO = 601
|
||||||
GRUPPI_MOV = 6|7|8
|
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|7,0,0|8,0,0|70,0,0
|
||||||
IVA_ESENTE = 999
|
IVA_ESENTE = 999
|
||||||
CONTO_OMAGGI=8|15|22
|
CONTO_OMAGGI=8|15|22
|
||||||
|
|
||||||
|
123
ha/hacnv200.cpp
123
ha/hacnv200.cpp
@ -12,6 +12,7 @@
|
|||||||
#include <tabutil.h>
|
#include <tabutil.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
|
|
||||||
|
#include <pconti.h>
|
||||||
#include <mov.h>
|
#include <mov.h>
|
||||||
#include <rmov.h>
|
#include <rmov.h>
|
||||||
#include <rmoviva.h>
|
#include <rmoviva.h>
|
||||||
@ -44,6 +45,7 @@ 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();
|
||||||
@ -337,12 +339,30 @@ real THardy_movimenti::get_imponibile(const TRectype& rec)
|
|||||||
if (gruppo.blank())
|
if (gruppo.blank())
|
||||||
{
|
{
|
||||||
real& perc = (real&)_ivaind->find(codiva);
|
real& perc = (real&)_ivaind->find(codiva);
|
||||||
imponibile = imponibile+(imponibile*perc)/100;
|
imponibile = imponibile+(imponibile*perc)/CENTO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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()
|
||||||
{
|
{
|
||||||
@ -352,7 +372,7 @@ bool THardy_movimenti::scrivi_righe()
|
|||||||
TConfig& ini = config();
|
TConfig& ini = config();
|
||||||
TString8 iva_esente = ini.get("IVA_ESENTE", "Parametri");
|
TString8 iva_esente = ini.get("IVA_ESENTE", "Parametri");
|
||||||
TToken_string conto_omaggi = ini.get("CONTO_OMAGGI", "Parametri");
|
TToken_string conto_omaggi = ini.get("CONTO_OMAGGI", "Parametri");
|
||||||
TToken_string gruppi_mov = ini.get("GRUPPI_MOV", "Parametri");
|
const TString conti_mov = ini.get("CONTI_MOV", "Parametri");
|
||||||
// se è un movimento iva metto in atto il meccanismo di ricerca per assegnare le aliquote ai conti
|
// 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)
|
||||||
{
|
{
|
||||||
@ -360,12 +380,33 @@ bool THardy_movimenti::scrivi_righe()
|
|||||||
for (int i=_righecont->items() - 1;i>=0;i--)
|
for (int i=_righecont->items() - 1;i>=0;i--)
|
||||||
{
|
{
|
||||||
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(i);
|
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(i);
|
||||||
const char* gruppo = rec_rmov.get(RMV_GRUPPO);
|
const int gruppo = rec_rmov.get_int(RMV_GRUPPO);
|
||||||
const int conto = rec_rmov.get_int(RMV_CONTO);
|
const int conto = rec_rmov.get_int(RMV_CONTO);
|
||||||
const long sottoconto = rec_rmov.get_long(RMV_SOTTOCONTO);
|
const long sottoconto = rec_rmov.get_long(RMV_SOTTOCONTO);
|
||||||
bool riga_omaggio = (atoi(gruppo) == conto_omaggi.get_int(0)) && (conto == conto_omaggi.get_int(1)) && (sottoconto == conto_omaggi.get_long(2));
|
TToken_string key;
|
||||||
if (((gruppi_mov.find(gruppo)) < 0) || (riga_omaggio))
|
|
||||||
_righecont->destroy(i);
|
key.add(gruppo);
|
||||||
|
key.add(conto);
|
||||||
|
|
||||||
|
const int tipoconto = atoi(cache().get(LF_PCON, key, PCN_INDBIL));
|
||||||
|
bool found = (tipoconto == 3) || (tipoconto == 4) ||
|
||||||
|
(gruppo == conto_omaggi.get_int(0)) && (conto == conto_omaggi.get_int(1)) && (sottoconto == conto_omaggi.get_long(2));
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
TToken_string cod("", ',');
|
||||||
|
cod.add(gruppo);
|
||||||
|
cod.add(conto);
|
||||||
|
cod.add(sottoconto);
|
||||||
|
|
||||||
|
// Provo il sottoconto ma se non riesco provo con conto e poi anche gruppo (formato -> 3,1,2 o 3,1,0 o 3,0,0)
|
||||||
|
for (int c = 2; !found && c >= 0; c--)
|
||||||
|
{
|
||||||
|
found = (conti_mov.find(cod)) >= 0;
|
||||||
|
cod.add(0, c);
|
||||||
|
}
|
||||||
|
if (!found)
|
||||||
|
_righecont->destroy(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_righecont->pack();
|
_righecont->pack();
|
||||||
// secondo passo: per ogni riga iva cerco importo uguale in righe contabili,
|
// secondo passo: per ogni riga iva cerco importo uguale in righe contabili,
|
||||||
@ -374,6 +415,7 @@ 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);
|
||||||
|
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);
|
||||||
|
|
||||||
@ -381,19 +423,35 @@ bool THardy_movimenti::scrivi_righe()
|
|||||||
{
|
{
|
||||||
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
|
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
|
||||||
real importo = rec_rmov.get_real(RMV_IMPORTO);
|
real importo = rec_rmov.get_real(RMV_IMPORTO);
|
||||||
if ((!riga_omaggio) && (importo == imponibile))
|
if ((!riga_omaggio) && (importo <= imponibile))
|
||||||
{
|
{
|
||||||
|
const real impon = rec_rmoviva.get_real(RMI_IMPONIBILE);
|
||||||
|
const real iva = rec_rmoviva.get_real(RMI_IMPOSTA);
|
||||||
|
c.imposta(importo);
|
||||||
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);
|
||||||
|
const real wiva = c.imposta(wimp);
|
||||||
|
if (importo < imponibile)
|
||||||
|
{
|
||||||
|
rec_rmoviva.put(RMI_IMPONIBILE, wimp);
|
||||||
|
rec_rmoviva.put(RMI_IMPOSTA, wiva);
|
||||||
|
}
|
||||||
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
|
paragraph.format("%d,%d",LF_RMOVIVA, nrigai++);
|
||||||
_conf->set_paragraph(paragraph); // riga iva
|
_conf->set_paragraph(paragraph); // riga iva
|
||||||
rec2ini(rec_rmoviva);
|
rec2ini(rec_rmoviva);
|
||||||
_righecont->destroy(j, true);
|
_righecont->destroy(j, true);
|
||||||
j = _righecont->items();
|
j = _righecont->items();
|
||||||
// _righeiva->destroy(i);
|
// _righeiva->destroy(i);
|
||||||
rec_rmoviva.zero();
|
if (importo == imponibile)
|
||||||
|
rec_rmoviva.zero();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rec_rmoviva.put(RMI_IMPONIBILE, impon - wimp);
|
||||||
|
rec_rmoviva.put(RMI_IMPOSTA, iva - wiva);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -510,8 +568,7 @@ bool THardy_movimenti::trasferisci()
|
|||||||
|
|
||||||
TFilename outdir;
|
TFilename outdir;
|
||||||
outdir = ini.get("PATH", "Main");
|
outdir = ini.get("PATH", "Main");
|
||||||
TString80 listfiles = outdir;
|
TFilename listfiles = outdir; listfiles.add("ha*.ini");
|
||||||
listfiles << "\\ha*.ini";
|
|
||||||
TString_array transactions;
|
TString_array transactions;
|
||||||
list_files(listfiles, transactions);
|
list_files(listfiles, transactions);
|
||||||
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
||||||
@ -546,38 +603,37 @@ bool THardy_movimenti::trasferisci()
|
|||||||
test_movcont();
|
test_movcont();
|
||||||
// scrive RMOV e /o RMOVIVA a partire da array righe letti da db hardy
|
// scrive RMOV e /o RMOVIVA a partire da array righe letti da db hardy
|
||||||
bool ok = scrivi_righe();
|
bool ok = scrivi_righe();
|
||||||
#ifdef DBG
|
|
||||||
TString msg;
|
if (!ok)
|
||||||
if (ok)
|
|
||||||
msg << (iva ? TR("Movimento iva "): TR("Movimento contabile ")) << _kmovcont << TR(" generato nel file ") << temp;
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
ntran--;
|
ntran--;
|
||||||
if (temp.exist())
|
if (temp.exist())
|
||||||
temp.fremove();
|
temp.fremove();
|
||||||
msg << (iva ? TR("Il movimento iva "): TR("Il movimento contabile ")) << _kmovcont << TR(" ha generato un errore, non è stato convertito ");
|
TString msg;
|
||||||
|
msg << (iva ? TR("Il movimento iva "): TR("Il movimento contabile ")) << _kmovcont
|
||||||
|
<< TR(" ha generato un errore, non è stato convertito ");
|
||||||
|
log(msg, 2); // Non uso log_error per non dare messaggi fuorvianti
|
||||||
|
}
|
||||||
|
#ifdef DBG
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TString msg;
|
||||||
|
msg << (iva ? TR("Movimento iva "): TR("Movimento contabile ")) << _kmovcont
|
||||||
|
<< TR(" generato nel file ") << temp;
|
||||||
|
log(msg);
|
||||||
}
|
}
|
||||||
log(msg);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (_conf != NULL)
|
if (_conf != NULL)
|
||||||
delete _conf;
|
delete _conf;
|
||||||
|
show_log();
|
||||||
if (yesno_box(FR("Si desidera confermare l'importazione di %ld movimenti"), ntran-1))
|
if (yesno_box(FR("Si desidera confermare l'importazione di %ld movimenti"), ntran-1))
|
||||||
{
|
{
|
||||||
TString app;
|
TString app;
|
||||||
app << "cg2 -0 -i" << outdir << "/ha*.ini";
|
app << "cg2 -0 -i" << outdir << "/ha*.ini";
|
||||||
TExternal_app primanota(app);
|
TExternal_app primanota(app);
|
||||||
primanota.run(true);
|
primanota.run(true);
|
||||||
TString msg;
|
|
||||||
msg << TR("Importazione completata");
|
|
||||||
log(msg);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
msg << TR("Importazione annullata");
|
|
||||||
log(msg);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -632,25 +688,16 @@ void TConvMovimentiHardy_mask::trasferisci()
|
|||||||
TString query_header;
|
TString query_header;
|
||||||
query_header << "ODBC(" << get(F_DSN) << ',' << get(F_USR) << ',' << get(F_PWD) << ")\n";
|
query_header << "ODBC(" << get(F_DSN) << ',' << get(F_USR) << ',' << get(F_PWD) << ")\n";
|
||||||
|
|
||||||
TReport_book book;
|
|
||||||
THardy_log log;
|
|
||||||
|
|
||||||
bool rep_to_print = false;
|
|
||||||
bool go_on = true;
|
|
||||||
|
|
||||||
const int anno = get_int(F_ANNO);
|
const int anno = get_int(F_ANNO);
|
||||||
const TDate dadata = get_date(F_DADATA);
|
const TDate dadata = get_date(F_DADATA);
|
||||||
const TDate adata = get_date(F_ADATA);
|
const TDate adata = get_date(F_ADATA);
|
||||||
if (go_on && (anno!=0))
|
if (anno!=0)
|
||||||
{
|
{
|
||||||
|
THardy_log log;
|
||||||
THardy_movimenti pc(anno, dadata, adata);
|
THardy_movimenti pc(anno, dadata, adata);
|
||||||
pc.init(TR("Movimenti contabili"), query_header, log);
|
pc.init(TR("Movimenti contabili"), query_header, log);
|
||||||
go_on = pc.trasferisci();
|
pc.trasferisci();
|
||||||
book.add(log);
|
|
||||||
rep_to_print = true;
|
|
||||||
}
|
}
|
||||||
if (rep_to_print && book.pages() > 0)
|
|
||||||
book.preview();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TConvMovimentiHardy_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TConvMovimentiHardy_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
|
@ -223,6 +223,12 @@ bool THardy_transfer::log_cancelled()
|
|||||||
return log_error(TR("Procedura interrotta dall'utente"));
|
return log_error(TR("Procedura interrotta dall'utente"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void THardy_transfer::show_log()
|
||||||
|
{
|
||||||
|
_log->preview();
|
||||||
|
_log->destroy();
|
||||||
|
}
|
||||||
|
|
||||||
bool THardy_transfer::test_write(TBaseisamfile& file)
|
bool THardy_transfer::test_write(TBaseisamfile& file)
|
||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
|
@ -77,6 +77,8 @@ public:
|
|||||||
void log(const char* msg, int sev = 0) const;
|
void log(const char* msg, int sev = 0) const;
|
||||||
bool log_error(const char* msg);
|
bool log_error(const char* msg);
|
||||||
bool log_cancelled();
|
bool log_cancelled();
|
||||||
|
void show_log();
|
||||||
|
|
||||||
const TRecordset& recordset() const;
|
const TRecordset& recordset() const;
|
||||||
TRecordset& recordset();
|
TRecordset& recordset();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user