Patch level : NO PATCH
Files correlati : Ricompilazione Demo : [ ] Commento : Aggiunti i filtri per le eventuali decodifiche Aggiunta la decodifica dove prevista Manca la gestione dei Conti git-svn-id: svn://10.65.10.50/branches/R_10_00@21195 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
861e33ad2f
commit
b3fd590f4b
143
lv/lv4500.cpp
143
lv/lv4500.cpp
@ -144,6 +144,120 @@ TImporta_fat_rec::TImporta_fat_rec(const TFilename& filename)
|
||||
TText_recordset::load_file(filename);
|
||||
}
|
||||
|
||||
class TDecodifica_codici : public TObject
|
||||
{
|
||||
TAssoc_array _causali;
|
||||
TAssoc_array _condpag;
|
||||
TAssoc_array _codiva;
|
||||
TAssoc_array _regiva;
|
||||
TAssoc_array _valute;
|
||||
|
||||
protected:
|
||||
void riempi_array(const char* codice);
|
||||
|
||||
public:
|
||||
TString80 decodifica_causali(const int cau_cog);
|
||||
const TString80 decodifica_condpag(const int condpag_cog);
|
||||
const TString80 decodifica_codiva(const int codiva_cog);
|
||||
const TString80 decodifica_regiva(const int regiva_cog);
|
||||
const TString80 decodifica_valute(const int val_cog);
|
||||
|
||||
TDecodifica_codici();
|
||||
};
|
||||
|
||||
void TDecodifica_codici::riempi_array(const char* codice)
|
||||
{
|
||||
TString query;
|
||||
query << "USE MULTIREL\n"
|
||||
<< "FROM COD=\"" << codice << "\"\n"
|
||||
<< "TO COD=\"" << codice << "\"";
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
//mi piace molto poco; da migliorare
|
||||
for(bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
if(codice == "CGCAU")
|
||||
_causali.add(recset.get("DATA").as_string(), recset.get("FIRST").as_string());
|
||||
|
||||
if(codice == "CGCDP")
|
||||
_condpag.add(recset.get("DATA").as_string(), recset.get("FIRST").as_string());
|
||||
|
||||
if(codice == "CGIVA")
|
||||
_codiva.add(recset.get("DATA").as_string(), recset.get("FIRST").as_string());
|
||||
|
||||
if(codice == "CGREG")
|
||||
_regiva.add(recset.get("DATA").as_string(), recset.get("FIRST").as_string());
|
||||
|
||||
if(codice == "CGVAL")
|
||||
_valute.add(recset.get("DATA").as_string(), recset.get("FIRST").as_string());
|
||||
}
|
||||
}
|
||||
|
||||
TString80 TDecodifica_codici::decodifica_causali(const int cau_cog)
|
||||
{
|
||||
if(_causali.empty())
|
||||
riempi_array("CGCAU");
|
||||
|
||||
TString8 key; key << cau_cog;
|
||||
|
||||
TString& codcau = *(TString*)_causali.objptr(key);
|
||||
return codcau;
|
||||
}
|
||||
|
||||
|
||||
const TString80 TDecodifica_codici::decodifica_condpag(const int condpag_cog)
|
||||
{
|
||||
if(_condpag.empty())
|
||||
riempi_array("CGCDP");
|
||||
|
||||
TString8 key; key << condpag_cog;
|
||||
|
||||
TString& codcdp = *(TString*)_condpag.objptr(key);
|
||||
return codcdp;
|
||||
}
|
||||
|
||||
const TString80 TDecodifica_codici::decodifica_codiva(const int codiva_cog)
|
||||
{
|
||||
if(_codiva.empty())
|
||||
riempi_array("CGIVA");
|
||||
|
||||
TString8 key; key << codiva_cog;
|
||||
|
||||
TString& codiva = *(TString*)_codiva.objptr(key);
|
||||
return codiva;
|
||||
}
|
||||
|
||||
const TString80 TDecodifica_codici::decodifica_regiva(const int regiva_cog)
|
||||
{
|
||||
if(_regiva.empty())
|
||||
riempi_array("CGREG");
|
||||
|
||||
TString8 key; key << regiva_cog;
|
||||
|
||||
TString& regiva = *(TString*)_regiva.objptr(key);
|
||||
return regiva;
|
||||
}
|
||||
|
||||
const TString80 TDecodifica_codici::decodifica_valute(const int val_cog)
|
||||
{
|
||||
if(_valute.empty())
|
||||
riempi_array("CGVAL");
|
||||
|
||||
TString8 key; key << val_cog;
|
||||
|
||||
TString& codval = *(TString*)_valute.objptr(key);
|
||||
return codval;
|
||||
}
|
||||
|
||||
TDecodifica_codici::TDecodifica_codici()
|
||||
{
|
||||
_causali.destroy();
|
||||
_condpag.destroy();
|
||||
_codiva.destroy();
|
||||
_regiva.destroy();
|
||||
_valute.destroy();
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//// TIMPORTA_FAT_MSK ////
|
||||
@ -200,7 +314,8 @@ bool TImporta_fat_msk::on_field_event(TOperable_field& f, TField_event e, long j
|
||||
//Classe TImporta_fat_app
|
||||
class TImporta_fat_app : public TSkeleton_application
|
||||
{
|
||||
TImporta_fat_msk* _msk;
|
||||
TImporta_fat_msk* _msk;
|
||||
TDecodifica_codici* _codici;
|
||||
|
||||
protected:
|
||||
bool search_gr_sp_ca(const int gruppo, const char* specie, const int categoria);
|
||||
@ -214,11 +329,7 @@ protected:
|
||||
|
||||
const TString80 riclassifica_pconti();
|
||||
|
||||
const TString80 riclassifica_causali(const int cau_cog) const;
|
||||
const TString80 riclassifica_condpag(const int condpag_cog) const;
|
||||
const TString80 riclassifica_codiva(const int codiva_cog) const;
|
||||
const TString80 riclassifica_regiva(const int regiva_cog) const;
|
||||
const TString80 riclassifica_valute(const int val_cog) const;
|
||||
|
||||
|
||||
void genera_testata(TImporta_fat_rec& recset, TConfig* conf, TFilename& tmpdir);
|
||||
//void genera_contropartite(TImporta_fat_rec& recset, TConfig* configfile);
|
||||
@ -284,7 +395,7 @@ const TString16 TImporta_fat_app::genera_real(const TVariant importo, const int
|
||||
return imp.string();
|
||||
}
|
||||
|
||||
|
||||
//GENERA_TESTATA: genero il paragrafo testata
|
||||
void TImporta_fat_app::genera_testata(TImporta_fat_rec& recset, TConfig* conf, TFilename& tmpdir)
|
||||
{
|
||||
const long ndoc = recset.get("NDOC").as_int();
|
||||
@ -308,17 +419,18 @@ void TImporta_fat_app::genera_testata(TImporta_fat_rec& recset, TConfig* conf, T
|
||||
conf->set(MOV_DATACOMP, datadoc);
|
||||
conf->set(MOV_DATADOC, datadoc);
|
||||
conf->set(MOV_NUMDOC, ndoc);
|
||||
conf->set(MOV_CODCAUS, recset.get("CODCAU").as_int()); //da codificare se mappato
|
||||
conf->set(MOV_CODCAUS, _msk->get_bool(F_DECCAU) ? atol(_codici->decodifica_causali(recset.get("CODCAU").as_int())) : recset.get("CODCAU").as_int());
|
||||
conf->set(MOV_ANNOIVA, datadoc.year());
|
||||
conf->set(MOV_REG, recset.get("REGIVA").as_int()); //da codificare se mappato
|
||||
conf->set(MOV_REG, _codici->decodifica_regiva(recset.get("REGIVA").as_int()));
|
||||
conf->set(MOV_PROTIVA, recset.get("NREGIVA").as_int());
|
||||
conf->set(MOV_CODVAL, recset.get("CODVAL").as_string()); //da codificare se mappato
|
||||
conf->set(MOV_CODVAL, _msk->get_bool(F_DECVAL) ? _codici->decodifica_valute(recset.get("CODVAL").as_int()) : recset.get("CODVAL").as_string());
|
||||
conf->set(MOV_TIPO, 'C');
|
||||
conf->set(MOV_CODCF, recset.get("CODCF").as_int());
|
||||
conf->set(MOV_TOTDOC, genera_real(recset.get("IMPORTO"), segno));
|
||||
conf->set(MOV_CODPAG, recset.get("CODPAG").as_int()); //da codificare se mappato
|
||||
conf->set(MOV_CODPAG, _msk->get_bool(F_DECCDP) ? atol(_codici->decodifica_condpag(recset.get("CODPAG").as_int())) : recset.get("CODPAG").as_int());
|
||||
}
|
||||
|
||||
//GENERA_RIGHE_IVA: genero le righe IVA
|
||||
void TImporta_fat_app::genera_righe_iva(TImporta_fat_rec& recset, TConfig* conf, int nriga, const TCausale& cau)
|
||||
{
|
||||
const TDate datadoc = recset.get("DATADOC").as_date();
|
||||
@ -329,13 +441,14 @@ void TImporta_fat_app::genera_righe_iva(TImporta_fat_rec& recset, TConfig* conf,
|
||||
conf->set_paragraph(paragraph);
|
||||
|
||||
conf->set(RMI_ANNOES, datadoc.year());
|
||||
conf->set(RMI_CODIVA, recset.get("CODIVA").as_int()); //da codificare se mappato
|
||||
conf->set(RMI_CODIVA, _msk->get_bool(F_DECCODIVA) ? atol(_codici->decodifica_codiva(recset.get("CODIVA").as_int())) : recset.get("CODIVA").as_int());
|
||||
conf->set(RMI_IMPONIBILE, genera_real(recset.get("IMPONIBILE"), segno));
|
||||
conf->set(RMI_IMPOSTA, genera_real(recset.get("IMPOSTA")));
|
||||
|
||||
/*Mancano Codice mastro e codice conto*/
|
||||
}
|
||||
|
||||
//GENERA_RATE: genero le righe su SCAD
|
||||
void TImporta_fat_app::genera_rate(TImporta_fat_rec& recset, TConfig* conf, int nriga)
|
||||
{
|
||||
TString paragraph;
|
||||
@ -356,6 +469,7 @@ void TImporta_fat_app::genera_rate(TImporta_fat_rec& recset, TConfig* conf, int
|
||||
//??? ABI CAB GRUPPO CONTO SOTTOCONTO ???//
|
||||
}
|
||||
|
||||
//ELABORA_FILE: chiamo la prima nota su tutti gli ini che ho generato
|
||||
void TImporta_fat_app::elabora_file(const TFilename& tmpdir)
|
||||
{
|
||||
TString app;
|
||||
@ -364,6 +478,7 @@ void TImporta_fat_app::elabora_file(const TFilename& tmpdir)
|
||||
primanota.run(true);
|
||||
}
|
||||
|
||||
//ELIMINA_FILE: elimino tutti i file che ho elaborato DA IMPLEMENTARE
|
||||
void TImporta_fat_app::elimina_file(const TFilename& tmpdir)
|
||||
{
|
||||
|
||||
@ -392,7 +507,6 @@ void TImporta_fat_app::transfer(const TFilename& file)
|
||||
switch(tipomov)
|
||||
{
|
||||
case 'C': genera_testata(recset, configfile, tmpdir); nrigai = nrigar = 0; break;
|
||||
//case 'G': genera_contropartite(recset, configfile); break;
|
||||
case 'I': genera_righe_iva(recset, configfile, nrigai, cau); break;
|
||||
case 'R': genera_rate(recset, configfile, nrigar); break;
|
||||
default: break;
|
||||
@ -404,7 +518,8 @@ void TImporta_fat_app::transfer(const TFilename& file)
|
||||
|
||||
bool TImporta_fat_app::create()
|
||||
{
|
||||
_msk = new TImporta_fat_msk();
|
||||
_msk = new TImporta_fat_msk();
|
||||
_codici = new TDecodifica_codici();
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
//campi maschera lv4500a
|
||||
#define F_PATH 101
|
||||
#define F_NAME 102
|
||||
|
||||
#define F_DECCAU 103
|
||||
#define F_DECCDP 104
|
||||
#define F_DECCODIVA 105
|
||||
#define F_DECVAL 106
|
@ -36,6 +36,31 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 4
|
||||
BEGIN
|
||||
PROMPT 1 5 "@bParametri"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCAU
|
||||
BEGIN
|
||||
PROMPT 2 6 "Decodifica Causali"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCDP
|
||||
BEGIN
|
||||
PROMPT 30 6 "Decodifica Cond. di Pagamento"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCODIVA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Decodifica Codici IVA"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECVAL
|
||||
BEGIN
|
||||
PROMPT 30 7 "Decodifica Causali"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user