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
|
||||
FOR_GRUPPO = 5
|
||||
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
|
||||
CONTO_OMAGGI=8|15|22
|
||||
|
||||
|
117
ha/hacnv200.cpp
117
ha/hacnv200.cpp
@ -12,6 +12,7 @@
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <pconti.h>
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
@ -44,6 +45,7 @@ protected:
|
||||
void rec2ini(const TRectype& rec);
|
||||
void recset2rec(const TODBC_recordset& recset, TRectype& rec, const TString_array& lista_campi);
|
||||
real get_imponibile(const TRectype& rec);
|
||||
real get_netto(const TRectype& rec, const real & lordo);
|
||||
|
||||
public:
|
||||
virtual bool trasferisci();
|
||||
@ -337,12 +339,30 @@ real THardy_movimenti::get_imponibile(const TRectype& rec)
|
||||
if (gruppo.blank())
|
||||
{
|
||||
real& perc = (real&)_ivaind->find(codiva);
|
||||
imponibile = imponibile+(imponibile*perc)/100;
|
||||
imponibile = imponibile+(imponibile*perc)/CENTO;
|
||||
}
|
||||
}
|
||||
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
|
||||
bool THardy_movimenti::scrivi_righe()
|
||||
{
|
||||
@ -352,7 +372,7 @@ bool THardy_movimenti::scrivi_righe()
|
||||
TConfig& ini = config();
|
||||
TString8 iva_esente = ini.get("IVA_ESENTE", "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
|
||||
if (_righeiva->items()>0)
|
||||
{
|
||||
@ -360,13 +380,34 @@ bool THardy_movimenti::scrivi_righe()
|
||||
for (int i=_righecont->items() - 1;i>=0;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 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));
|
||||
if (((gruppi_mov.find(gruppo)) < 0) || (riga_omaggio))
|
||||
TToken_string key;
|
||||
|
||||
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();
|
||||
// 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
|
||||
@ -374,6 +415,7 @@ bool THardy_movimenti::scrivi_righe()
|
||||
{
|
||||
TRectype& rec_rmoviva = *(TRectype*)_righeiva->objptr(i);
|
||||
const char* codiva = rec_rmoviva.get(RMI_CODIVA);
|
||||
TCodiceIVA c(codiva);
|
||||
const bool riga_omaggio = _ivaoma->is_key(codiva);
|
||||
real imponibile = get_imponibile(rec_rmoviva);
|
||||
|
||||
@ -381,19 +423,35 @@ bool THardy_movimenti::scrivi_righe()
|
||||
{
|
||||
TRectype& rec_rmov = *(TRectype*)_righecont->objptr(j);
|
||||
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_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));
|
||||
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++);
|
||||
_conf->set_paragraph(paragraph); // riga iva
|
||||
rec2ini(rec_rmoviva);
|
||||
_righecont->destroy(j, true);
|
||||
j = _righecont->items();
|
||||
// _righeiva->destroy(i);
|
||||
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;
|
||||
outdir = ini.get("PATH", "Main");
|
||||
TString80 listfiles = outdir;
|
||||
listfiles << "\\ha*.ini";
|
||||
TFilename listfiles = outdir; listfiles.add("ha*.ini");
|
||||
TString_array transactions;
|
||||
list_files(listfiles, transactions);
|
||||
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
||||
@ -546,37 +603,36 @@ 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 << TR(" generato nel file ") << temp;
|
||||
else
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
ntran--;
|
||||
if (temp.exist())
|
||||
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);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
if (_conf != NULL)
|
||||
delete _conf;
|
||||
show_log();
|
||||
if (yesno_box(FR("Si desidera confermare l'importazione di %ld movimenti"), ntran-1))
|
||||
{
|
||||
TString app;
|
||||
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;
|
||||
}
|
||||
@ -632,25 +688,16 @@ void TConvMovimentiHardy_mask::trasferisci()
|
||||
TString query_header;
|
||||
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 TDate dadata = get_date(F_DADATA);
|
||||
const TDate adata = get_date(F_ADATA);
|
||||
if (go_on && (anno!=0))
|
||||
if (anno!=0)
|
||||
{
|
||||
THardy_log log;
|
||||
THardy_movimenti pc(anno, dadata, adata);
|
||||
pc.init(TR("Movimenti contabili"), query_header, log);
|
||||
go_on = pc.trasferisci();
|
||||
book.add(log);
|
||||
rep_to_print = true;
|
||||
pc.trasferisci();
|
||||
}
|
||||
if (rep_to_print && book.pages() > 0)
|
||||
book.preview();
|
||||
}
|
||||
|
||||
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"));
|
||||
}
|
||||
|
||||
void THardy_transfer::show_log()
|
||||
{
|
||||
_log->preview();
|
||||
_log->destroy();
|
||||
}
|
||||
|
||||
bool THardy_transfer::test_write(TBaseisamfile& file)
|
||||
{
|
||||
int err = NOERR;
|
||||
|
@ -77,6 +77,8 @@ public:
|
||||
void log(const char* msg, int sev = 0) const;
|
||||
bool log_error(const char* msg);
|
||||
bool log_cancelled();
|
||||
void show_log();
|
||||
|
||||
const TRecordset& recordset() const;
|
||||
TRecordset& recordset();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user