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:
luca83 2010-11-25 14:58:06 +00:00
parent 861e33ad2f
commit b3fd590f4b
3 changed files with 159 additions and 14 deletions

View File

@ -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();
}

View File

@ -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

View File

@ -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