Patch level : 10.0 PATCH ???
Files correlati : lv4 lv4500.msk Ricompilazione Demo : [ ] Commento : Importatore movimenti da COGECO git-svn-id: svn://10.65.10.50/branches/R_10_00@21205 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c36d824a52
commit
404b0230cb
495
lv/lv4500.cpp
495
lv/lv4500.cpp
@ -1,4 +1,5 @@
|
||||
#include <applicat.h>
|
||||
#include <assoc.h>
|
||||
#include <automask.h>
|
||||
#include <execp.h>
|
||||
#include <progind.h>
|
||||
@ -19,6 +20,7 @@
|
||||
#include "lv4.h"
|
||||
#include "lv4100.h"
|
||||
#include "lv4500a.h"
|
||||
#include "lvlib.h"
|
||||
|
||||
#define T_N "N"
|
||||
#define T_X "X"
|
||||
@ -38,15 +40,15 @@ public:
|
||||
//ADD_FIELD: aggiunge i campi al recordset
|
||||
void TLaundry_recordset::add_field(const char* name, const char* tipo, int pos, int len)
|
||||
{
|
||||
CHECK(name[1]=='.', "Campo orfano di tracciato");
|
||||
const TFixed_string str_tipo(tipo);
|
||||
TFieldtypes ft = _alfafld;
|
||||
if (str_tipo.ends_with("N"))
|
||||
{
|
||||
create_field(name, pos-1, len, _intzerofld);
|
||||
return;
|
||||
}
|
||||
create_field(name, pos-1, len, _alfafld);
|
||||
ft = _intzerofld;
|
||||
create_field(name, -1, len, ft);
|
||||
}
|
||||
|
||||
//costruttore
|
||||
TLaundry_recordset::TLaundry_recordset(const int rec_lenght)
|
||||
: TAS400_recordset("AS400()")
|
||||
{
|
||||
@ -56,6 +58,156 @@ TLaundry_recordset::TLaundry_recordset(const int rec_lenght)
|
||||
parse_query(query, cazzone);
|
||||
}
|
||||
|
||||
////////////////////////////
|
||||
//// TCONTI_CACHE ////
|
||||
////////////////////////////
|
||||
|
||||
//classe TConti_cache
|
||||
class TConti_cache : public TCache
|
||||
{
|
||||
protected:
|
||||
virtual TObject* key2obj(const char* key);
|
||||
public:
|
||||
const TBill& decodifica_conti(const long mastro, const long conto);
|
||||
};
|
||||
|
||||
//KEY2OBJ: ridefinisco il metodo virtuale key2obj in modo che mi restituisca quello di cui ho bisogno
|
||||
TObject* TConti_cache::key2obj(const char* key)
|
||||
{
|
||||
TLocalisamfile riclpdc(LF_RICLPDC);
|
||||
riclpdc.setkey(3);
|
||||
riclpdc.put("TIPORIC", "CGCONTI");
|
||||
riclpdc.put("CODICE", key);
|
||||
if(riclpdc.read() == NOERR)
|
||||
return new TBill(riclpdc.get_int("GRUPPO"), riclpdc.get_int("CONTO"), riclpdc.get_long("SOTTOCONTO"));
|
||||
return new TBill;
|
||||
}
|
||||
|
||||
//DECODIFICA_CONTI: restituisce il TBill dato codice mastro e conto del COGECO
|
||||
const TBill& TConti_cache::decodifica_conti(const long mastro, const long conto)
|
||||
{
|
||||
TString16 codice;
|
||||
codice.format("%06ld%06ld", mastro, conto);
|
||||
const TBill* bill = (TBill*)objptr(codice);
|
||||
|
||||
return *bill;
|
||||
}
|
||||
|
||||
//////////////////////////////////
|
||||
//// TDECODIFICA_CODICI ////
|
||||
//////////////////////////////////
|
||||
|
||||
//classe TDecodifica_codici
|
||||
class TDecodifica_codici : public TObject
|
||||
{
|
||||
TAssoc_array _tab;
|
||||
TConti_cache _conti;
|
||||
|
||||
protected:
|
||||
void riempi_array();
|
||||
const TString& decodifica(const char* tabella, const int codice);
|
||||
|
||||
public:
|
||||
const TString& decodifica_causali(const int cau_cog);
|
||||
const TString& decodifica_condpag(const int condpag_cog);
|
||||
const TString& decodifica_codiva(const int codiva_cog);
|
||||
const TString& decodifica_regiva(const int regiva_cog);
|
||||
const TString& decodifica_valute(const int val_cog);
|
||||
const TBill& decodifica_conto(const long mastro, const long conto);
|
||||
|
||||
TDecodifica_codici();
|
||||
};
|
||||
|
||||
//RIEMPI_ARRAY: riempe l'Assoc_array che contiene i dati per fare la decodifica
|
||||
void TDecodifica_codici::riempi_array()
|
||||
{
|
||||
TString query;
|
||||
query << "USE MULTIREL\n"
|
||||
<< "FROM COD=\"CG\"\n"
|
||||
<< "TO COD=\"CG\"";
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
|
||||
for(bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||
{
|
||||
const TString& codice = recset.get("COD").as_string().mid(2);
|
||||
const TString& data = recset.get("DATA").as_string();
|
||||
const TString& first = recset.get("FIRST").as_string();
|
||||
|
||||
//faccio un Assoc_array di Assoc_array
|
||||
TAssoc_array* tab = (TAssoc_array*)_tab.objptr(codice);
|
||||
|
||||
if(tab == NULL)
|
||||
{
|
||||
tab = new TAssoc_array;
|
||||
_tab.add(codice, tab);
|
||||
}
|
||||
|
||||
tab->add(data, first);
|
||||
}
|
||||
}
|
||||
|
||||
//DECODIFICA: fa la decodica vera e propria
|
||||
const TString& TDecodifica_codici::decodifica(const char* tabella, const int codice)
|
||||
{
|
||||
//se non ho ancora caricato l'array, lo faccio
|
||||
if(_tab.empty())
|
||||
riempi_array();
|
||||
|
||||
TAssoc_array* tab = (TAssoc_array*)_tab.objptr(tabella);
|
||||
|
||||
//se esite, restituisco la decodifica, altrimenti stringa vuota
|
||||
if(tab != NULL && codice > 0)
|
||||
{
|
||||
TString8 cod; cod << codice;
|
||||
const TString* data = (const TString*)tab->objptr(cod);
|
||||
|
||||
if(data != NULL)
|
||||
return *data;
|
||||
}
|
||||
return EMPTY_STRING;
|
||||
}
|
||||
|
||||
//DECODIFICA_CAUSALI: decodifico da COGECO a Campo la causale
|
||||
const TString& TDecodifica_codici::decodifica_causali(const int cau_cog)
|
||||
{
|
||||
return decodifica("CAU", cau_cog);
|
||||
}
|
||||
|
||||
//DECODIFICA_CONDPAG: decodifico da COGECO a Campo la condizione di pagamento
|
||||
const TString& TDecodifica_codici::decodifica_condpag(const int condpag_cog)
|
||||
{
|
||||
return decodifica("CDP", condpag_cog);
|
||||
}
|
||||
|
||||
//DECODIFICA_CODIVA: decodifico da COGECO a Campo il codice IVA
|
||||
const TString& TDecodifica_codici::decodifica_codiva(const int codiva_cog)
|
||||
{
|
||||
return decodifica("IVA", codiva_cog);
|
||||
}
|
||||
|
||||
//DECODIFICA_REGIVA: decodifico da COGECO a Campo il registro IVA
|
||||
const TString& TDecodifica_codici::decodifica_regiva(const int regiva_cog)
|
||||
{
|
||||
return decodifica("REG", regiva_cog);
|
||||
}
|
||||
|
||||
//DECODIFICA_VALUTE: decodifico da COGECO a Campo la valuta
|
||||
const TString& TDecodifica_codici::decodifica_valute(const int val_cog)
|
||||
{
|
||||
return decodifica("VAL", val_cog);
|
||||
}
|
||||
|
||||
//DECODIFICA_CONTO: decodifico da COGECO a Campo il conto
|
||||
const TBill& TDecodifica_codici::decodifica_conto(const long mastro, const long conto)
|
||||
{
|
||||
return _conti.decodifica_conti(mastro, conto);
|
||||
}
|
||||
|
||||
//costruttore
|
||||
TDecodifica_codici::TDecodifica_codici()
|
||||
{}
|
||||
|
||||
////////////////////////////////
|
||||
//// TIMPORTA_FAT_REC ////
|
||||
////////////////////////////////
|
||||
@ -90,175 +242,60 @@ TImporta_fat_rec::TImporta_fat_rec(const TFilename& filename)
|
||||
{
|
||||
TFilename cazzone;
|
||||
//as400 con lunghezza 89 e chiave lunga 1 (a partire dal ventesimo carattere): è il tipo record
|
||||
parse_query("AS400(89,20,1)", cazzone);
|
||||
parse_query("AS400(89,1,20)", cazzone);
|
||||
|
||||
//Tipo record C
|
||||
add_field("NDOC", T_N, 1, 6);
|
||||
add_field("DATADOC", T_N, 7, 8);
|
||||
add_field("NPART", T_N, 15, 6);
|
||||
add_field("TIPOMOV", T_X, 21, 1);
|
||||
add_field("SEZIONE", T_X, 22, 1);
|
||||
add_field("CODCF", T_N, 23, 6);
|
||||
add_field("IMPORTO", T_X, 29, 13);
|
||||
add_field("CODVAL", T_X, 42, 4);
|
||||
add_field("CODPAG", T_X, 46, 4);
|
||||
add_field("DATASCAD", T_N, 50, 8);
|
||||
add_field("ABICAB", T_N, 58, 12);
|
||||
add_field("CODCAU", T_N, 70, 4);
|
||||
add_field("REGIVA", T_X, 74, 1);
|
||||
add_field("NREGIVA", T_N, 75, 2);
|
||||
add_field("NPROG", T_N, 77, 11);
|
||||
add_field("C.NDOC", T_N, 1, 6);
|
||||
add_field("C.DATADOC", T_N, 7, 8);
|
||||
add_field("C.NPART", T_N, 15, 6);
|
||||
add_field("C.TIPOMOV", T_X, 21, 1);
|
||||
add_field("C.SEZIONE", T_X, 22, 1);
|
||||
add_field("C.CODCF", T_N, 23, 6);
|
||||
add_field("C.IMPORTO", T_X, 29, 13);
|
||||
add_field("C.CODVAL", T_X, 42, 4);
|
||||
add_field("C.CODPAG", T_X, 46, 4);
|
||||
add_field("C.DATASCAD", T_N, 50, 8);
|
||||
add_field("C.ABICAB", T_N, 58, 12);
|
||||
add_field("C.CODCAU", T_N, 70, 4);
|
||||
add_field("C.REGIVA", T_X, 74, 1);
|
||||
add_field("C.NREGIVA", T_N, 75, 2);
|
||||
add_field("C.NPROG", T_N, 77, 11);
|
||||
|
||||
//Tipo record G
|
||||
add_field("NDOC", T_N, 1, 6);
|
||||
add_field("DATADOC", T_N, 7, 8);
|
||||
add_field("NPART", T_N, 15, 6);
|
||||
add_field("TIPOMOV", T_X, 21, 1);
|
||||
add_field("SEZIONE", T_X, 22, 1);
|
||||
add_field("IMPORTO", T_X, 23, 13);
|
||||
add_field("CODMASTRO", T_N, 36, 6);
|
||||
add_field("CODCONTO", T_N, 42, 6);
|
||||
add_field("G.NDOC", T_N, 1, 6);
|
||||
add_field("G.DATADOC", T_N, 7, 8);
|
||||
add_field("G.NPART", T_N, 15, 6);
|
||||
add_field("G.TIPOMOV", T_X, 21, 1);
|
||||
add_field("G.SEZIONE", T_X, 22, 1);
|
||||
add_field("G.IMPORTO", T_X, 23, 13);
|
||||
add_field("G.CODMASTRO", T_N, 36, 6);
|
||||
add_field("G.CODCONTO", T_N, 42, 6);
|
||||
|
||||
//Tipo record I
|
||||
add_field("NDOC", T_N, 1, 6);
|
||||
add_field("DATADOC", T_N, 7, 8);
|
||||
add_field("NPART", T_N, 15, 6);
|
||||
add_field("TIPOMOV", T_X, 21, 1);
|
||||
add_field("SEZIONE", T_X, 22, 1);
|
||||
add_field("IMPONIBILE", T_X, 23, 13);
|
||||
add_field("IMPOSTA", T_X, 36, 11);
|
||||
add_field("CODIVA", T_N, 47, 4);
|
||||
add_field("CODMASTRO", T_N, 36, 6);
|
||||
add_field("CODCONTO", T_N, 42, 6);
|
||||
add_field("I.NDOC", T_N, 1, 6);
|
||||
add_field("I.DATADOC", T_N, 7, 8);
|
||||
add_field("I.NPART", T_N, 15, 6);
|
||||
add_field("I.TIPOMOV", T_X, 21, 1);
|
||||
add_field("I.SEZIONE", T_X, 22, 1);
|
||||
add_field("I.IMPONIBILE", T_X, 23, 13);
|
||||
add_field("I.IMPOSTA", T_X, 36, 11);
|
||||
add_field("I.CODIVA", T_N, 47, 4);
|
||||
add_field("I.CODMASTRO", T_N, 36, 6);
|
||||
add_field("I.CODCONTO", T_N, 42, 6);
|
||||
|
||||
//Tipo record R
|
||||
add_field("NDOC", T_N, 1, 6);
|
||||
add_field("DATADOC", T_N, 7, 8);
|
||||
add_field("NPART", T_N, 15, 6);
|
||||
add_field("TIPOMOV", T_X, 21, 1);
|
||||
add_field("NRATA", T_N, 22, 6);
|
||||
add_field("IMPRATA", T_X, 28, 13);
|
||||
add_field("TIPORATA", T_X, 41, 1);
|
||||
add_field("DATASCAD", T_N, 42, 8);
|
||||
add_field("R.NDOC", T_N, 1, 6);
|
||||
add_field("R.DATADOC", T_N, 7, 8);
|
||||
add_field("R.NPART", T_N, 15, 6);
|
||||
add_field("R.TIPOMOV", T_X, 21, 1);
|
||||
add_field("R.NRATA", T_N, 22, 6);
|
||||
add_field("R.IMPRATA", T_X, 28, 13);
|
||||
add_field("R.TIPORATA", T_X, 41, 1);
|
||||
add_field("R.DATASCAD", T_N, 42, 8);
|
||||
|
||||
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 ////
|
||||
////////////////////////////////
|
||||
@ -274,36 +311,10 @@ public:
|
||||
};
|
||||
|
||||
TImporta_fat_msk::TImporta_fat_msk() :TAutomask ("lv4500a")
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
bool TImporta_fat_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
|
||||
{
|
||||
switch (f.dlg())
|
||||
{
|
||||
//giochetto per avere la lista dei files validi nella directory di trasferimento!
|
||||
case F_NAME:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TArray_sheet as(-1, -1, 72, 20, TR("Selezione file"), "File@32");
|
||||
TFilename path = get(F_PATH);
|
||||
path.add("*.txt"); //files delle testate
|
||||
list_files(path, as.rows_array());
|
||||
TFilename name;
|
||||
FOR_EACH_ARRAY_ROW(as.rows_array(), i, row)
|
||||
{
|
||||
name = *row;
|
||||
*row = name.name();
|
||||
}
|
||||
if (as.run() == K_ENTER)
|
||||
{
|
||||
f.set(as.row(as.selected()));
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -328,13 +339,10 @@ protected:
|
||||
const TString16 genera_real(const TVariant importo, const int segno = 1) const;
|
||||
|
||||
const TString80 riclassifica_pconti();
|
||||
|
||||
|
||||
|
||||
void genera_testata(TImporta_fat_rec& recset, TConfig* conf, TFilename& tmpdir);
|
||||
//void genera_contropartite(TImporta_fat_rec& recset, TConfig* configfile);
|
||||
void genera_righe_iva(TImporta_fat_rec& recset, TConfig* conf, int nriga, const TCausale& cau);
|
||||
void genera_rate(TImporta_fat_rec& recset, TConfig* conf, int nriga);
|
||||
TConfig* genera_testata(TImporta_fat_rec& recset, TFilename& tmpdir);
|
||||
void genera_righe_iva(TImporta_fat_rec& recset, TConfig& conf, int nriga, const TCausale& cau);
|
||||
void genera_rate(TImporta_fat_rec& recset, TConfig& conf, int nriga);
|
||||
|
||||
void elabora_file(const TFilename& tmpdir);
|
||||
void elimina_file(const TFilename& tmpdir);
|
||||
@ -366,7 +374,7 @@ const TFilename TImporta_fat_app::crea_tmpdir() const
|
||||
const TFilename TImporta_fat_app::crea_nomefile(const long ndoc) const
|
||||
{
|
||||
TString strname;
|
||||
strname.format("%06l", ndoc);
|
||||
strname.format("%06ld", ndoc);
|
||||
strname << ".ini";
|
||||
|
||||
return strname;
|
||||
@ -396,17 +404,17 @@ const TString16 TImporta_fat_app::genera_real(const TVariant importo, const int
|
||||
}
|
||||
|
||||
//GENERA_TESTATA: genero il paragrafo testata
|
||||
void TImporta_fat_app::genera_testata(TImporta_fat_rec& recset, TConfig* conf, TFilename& tmpdir)
|
||||
TConfig* TImporta_fat_app::genera_testata(TImporta_fat_rec& recset, TFilename& tmpdir)
|
||||
{
|
||||
const long ndoc = recset.get("NDOC").as_int();
|
||||
const TDate datadoc = recset.get("DATADOC").as_date();
|
||||
const TCausale cau(recset.get("CODCAU").as_string());
|
||||
const int segno = segno_testata(recset.get("SEZIONE").as_string()[0], cau);
|
||||
const long ndoc = recset.get("C.NDOC").as_int();
|
||||
const TDate datadoc = recset.get("C.DATADOC").as_date();
|
||||
const TCausale cau(recset.get("C.CODCAU").as_string());
|
||||
const int segno = segno_testata(recset.get("C.SEZIONE").as_string()[0], cau);
|
||||
|
||||
TFilename nomefile = tmpdir;
|
||||
nomefile << crea_nomefile(ndoc);
|
||||
nomefile << '\\' << crea_nomefile(ndoc);
|
||||
|
||||
conf = new TConfig(nomefile);
|
||||
TConfig* conf = new TConfig(nomefile);
|
||||
conf->set_paragraph("Transaction"); //setto il paragrafo [Transaction] del file ini
|
||||
conf->set("Action","INSERT");
|
||||
conf->set("Mode", "AUTO");
|
||||
@ -419,53 +427,57 @@ 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, _msk->get_bool(F_DECCAU) ? atol(_codici->decodifica_causali(recset.get("CODCAU").as_int())) : recset.get("CODCAU").as_int());
|
||||
conf->set(MOV_CODCAUS, _msk->get_bool(F_DECCAU) ? atol(_codici->decodifica_causali(recset.get("C.CODCAU").as_int())) : recset.get("C.CODCAU").as_int());
|
||||
conf->set(MOV_ANNOIVA, datadoc.year());
|
||||
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, _msk->get_bool(F_DECVAL) ? _codici->decodifica_valute(recset.get("CODVAL").as_int()) : recset.get("CODVAL").as_string());
|
||||
conf->set(MOV_REG, _codici->decodifica_regiva(recset.get("C.REGIVA").as_int()));
|
||||
conf->set(MOV_PROTIVA, recset.get("C.NREGIVA").as_int());
|
||||
conf->set(MOV_CODVAL, _msk->get_bool(F_DECVAL) ? _codici->decodifica_valute(recset.get("C.CODVAL").as_int()) : recset.get("C.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, _msk->get_bool(F_DECCDP) ? atol(_codici->decodifica_condpag(recset.get("CODPAG").as_int())) : recset.get("CODPAG").as_int());
|
||||
conf->set(MOV_CODCF, recset.get("C.CODCF").as_int());
|
||||
conf->set(MOV_TOTDOC, genera_real(recset.get("C.IMPORTO"), segno));
|
||||
conf->set(MOV_CODPAG, _msk->get_bool(F_DECCDP) ? atol(_codici->decodifica_condpag(recset.get("C.CODPAG").as_int())) : recset.get("C.CODPAG").as_int());
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
||||
//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)
|
||||
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();
|
||||
const int segno = segno_riga(recset.get("SEZIONE").as_string()[0], cau);
|
||||
const TDate datadoc = recset.get("I.DATADOC").as_date();
|
||||
const int segno = segno_riga(recset.get("I.SEZIONE").as_string()[0], cau);
|
||||
const TBill& conto = _codici->decodifica_conto(recset.get("I.CODMASTRO").as_int(), recset.get("I.CODCONTO").as_int());
|
||||
|
||||
TString paragraph;
|
||||
paragraph.format("%d,%d", LF_RMOVIVA, nriga++);
|
||||
conf->set_paragraph(paragraph);
|
||||
conf.set_paragraph(paragraph);
|
||||
|
||||
conf->set(RMI_ANNOES, datadoc.year());
|
||||
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*/
|
||||
conf.set(RMI_ANNOES, datadoc.year());
|
||||
conf.set(RMI_CODIVA, _msk->get_bool(F_DECCODIVA) ? atol(_codici->decodifica_codiva(recset.get("I.CODIVA").as_int())) : recset.get("I.CODIVA").as_int());
|
||||
conf.set(RMI_IMPONIBILE, genera_real(recset.get("I.IMPONIBILE"), segno));
|
||||
conf.set(RMI_IMPOSTA, genera_real(recset.get("I.IMPOSTA")));
|
||||
conf.set(RMI_GRUPPO, conto.gruppo());
|
||||
conf.set(RMI_CONTO, conto.conto());
|
||||
conf.set(RMI_SOTTOCONTO, conto.sottoconto());
|
||||
}
|
||||
|
||||
//GENERA_RATE: genero le righe su SCAD
|
||||
void TImporta_fat_app::genera_rate(TImporta_fat_rec& recset, TConfig* conf, int nriga)
|
||||
void TImporta_fat_app::genera_rate(TImporta_fat_rec& recset, TConfig& conf, int nriga)
|
||||
{
|
||||
TString paragraph;
|
||||
paragraph.format("%d,%d", LF_RMOVIVA, nriga++);
|
||||
conf->set_paragraph(paragraph);
|
||||
conf.set_paragraph(paragraph);
|
||||
|
||||
const TDate datadoc = recset.get("DATADOC").as_date();
|
||||
const TDate datadoc = recset.get("R.DATADOC").as_date();
|
||||
|
||||
conf->set(SCAD_ANNO, datadoc.year());
|
||||
conf->set(SCAD_NUMPART, recset.get("NPART").as_int());
|
||||
conf->set(SCAD_NRIGA, nriga);
|
||||
conf->set(SCAD_NRATA, recset.get("NRATA").as_int());
|
||||
conf.set(SCAD_ANNO, datadoc.year());
|
||||
conf.set(SCAD_NUMPART, recset.get("R.NPART").as_int());
|
||||
conf.set(SCAD_NRIGA, nriga);
|
||||
conf.set(SCAD_NRATA, recset.get("R.NRATA").as_int());
|
||||
//??? CODPAG ???//
|
||||
conf->set(SCAD_TIPOPAG, recset.get("TIPOPAG").as_int());
|
||||
conf->set(SCAD_IMPORTO, genera_real(recset.get("IMPORTO")));
|
||||
conf->set(SCAD_IMPORTOVAL, genera_real(recset.get("IMPORTO"))); //NON SO IN QUALE DEI DUE VADA
|
||||
conf->set(SCAD_DATASCAD, recset.get("DATASCAD").as_date());
|
||||
conf.set(SCAD_TIPOPAG, recset.get("R.TIPOPAG").as_int());
|
||||
conf.set(SCAD_IMPORTO, genera_real(recset.get("R.IMPORTO")));
|
||||
conf.set(SCAD_IMPORTOVAL, genera_real(recset.get("R.IMPORTO"))); //NON SO IN QUALE DEI DUE VADA
|
||||
conf.set(SCAD_DATASCAD, recset.get("R.DATASCAD").as_date());
|
||||
//??? ABI CAB GRUPPO CONTO SOTTOCONTO ???//
|
||||
}
|
||||
|
||||
@ -481,7 +493,6 @@ void TImporta_fat_app::elabora_file(const TFilename& tmpdir)
|
||||
//ELIMINA_FILE: elimino tutti i file che ho elaborato DA IMPLEMENTARE
|
||||
void TImporta_fat_app::elimina_file(const TFilename& tmpdir)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TImporta_fat_app::transfer(const TFilename& file)
|
||||
@ -506,13 +517,22 @@ void TImporta_fat_app::transfer(const TFilename& file)
|
||||
|
||||
switch(tipomov)
|
||||
{
|
||||
case 'C': genera_testata(recset, configfile, tmpdir); nrigai = nrigar = 0; break;
|
||||
case 'I': genera_righe_iva(recset, configfile, nrigai, cau); break;
|
||||
case 'R': genera_rate(recset, configfile, nrigar); break;
|
||||
case 'C':
|
||||
{
|
||||
if(configfile != NULL)
|
||||
delete configfile;
|
||||
configfile = genera_testata(recset, tmpdir); nrigai = nrigar = 0;
|
||||
}
|
||||
break;
|
||||
case 'I': genera_righe_iva(recset, *configfile, nrigai, cau); break;
|
||||
case 'R': genera_rate(recset, *configfile, nrigar); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
if(configfile != NULL)
|
||||
delete configfile;
|
||||
|
||||
elabora_file(tmpdir);
|
||||
}
|
||||
|
||||
@ -536,8 +556,7 @@ void TImporta_fat_app::main_loop()
|
||||
if (tasto == K_ENTER)
|
||||
{
|
||||
//genero il nome del file da caricare
|
||||
TFilename file = _msk->get(F_PATH);
|
||||
file.add(_msk->get(F_NAME));
|
||||
TFilename file = _msk->get(F_NAME);
|
||||
if(!file.exist())
|
||||
{
|
||||
error_box(TR("Il file selezionato non esiste; si prega di controllare"));
|
||||
|
11
lv/lv4500a.h
11
lv/lv4500a.h
@ -1,8 +1,7 @@
|
||||
//campi maschera lv4500a
|
||||
#define F_PATH 101
|
||||
#define F_NAME 102
|
||||
#define F_NAME 101
|
||||
|
||||
#define F_DECCAU 103
|
||||
#define F_DECCDP 104
|
||||
#define F_DECCODIVA 105
|
||||
#define F_DECVAL 106
|
||||
#define F_DECCAU 102
|
||||
#define F_DECCDP 103
|
||||
#define F_DECCODIVA 104
|
||||
#define F_DECVAL 105
|
@ -10,55 +10,49 @@ STRING DLG_PROFILE 50
|
||||
BEGIN
|
||||
PROMPT 9 -1 "Profilo "
|
||||
PSELECT
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Importazione fatture COGECO" 0 0 0 -3
|
||||
|
||||
GROUPBOX DLG_NULL 80 4
|
||||
GROUPBOX DLG_NULL 80 3
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bSorgente"
|
||||
END
|
||||
|
||||
STRING F_PATH 255 55
|
||||
STRING F_NAME 255 55
|
||||
BEGIN
|
||||
PROMPT 2 2 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD ComInPath
|
||||
END
|
||||
|
||||
STRING F_NAME 18
|
||||
BEGIN
|
||||
PROMPT 2 3 "File "
|
||||
FIELD ComInFile
|
||||
PROMPT 2 2 "File "
|
||||
FSELECT "*.txt"
|
||||
FIELD ComInFile
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 4
|
||||
BEGIN
|
||||
PROMPT 1 5 "@bParametri"
|
||||
PROMPT 1 4 "@bParametri"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCAU
|
||||
BEGIN
|
||||
PROMPT 2 6 "Decodifica Causali"
|
||||
PROMPT 2 5 "Decodifica Causali"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCDP
|
||||
BEGIN
|
||||
PROMPT 30 6 "Decodifica Cond. di Pagamento"
|
||||
PROMPT 30 5 "Decodifica Cond. di Pagamento"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECCODIVA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Decodifica Codici IVA"
|
||||
PROMPT 2 6 "Decodifica Codici IVA"
|
||||
END
|
||||
|
||||
BOOLEAN F_DECVAL
|
||||
BEGIN
|
||||
PROMPT 30 7 "Decodifica Causali"
|
||||
PROMPT 30 6 "Decodifica Causali"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
Loading…
x
Reference in New Issue
Block a user