From 763df4c40733807ee8b266b4b222ca5a4009bc9f Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 28 Oct 2010 13:27:37 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/branches/R_10_00@21086 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ha/hacnv100.cpp | 238 ++++++++++++++++++++++++++++++++++++++++++++++- ha/hacnv100.h | 14 ++- ha/hacnv100a.ini | 157 ++++++++++++++++++------------- 3 files changed, 339 insertions(+), 70 deletions(-) diff --git a/ha/hacnv100.cpp b/ha/hacnv100.cpp index aec77f8dd..965fa72cf 100755 --- a/ha/hacnv100.cpp +++ b/ha/hacnv100.cpp @@ -9,6 +9,9 @@ #include #include +#include +#include + const char* const APPNAME = TR("Importazione anagrafiche HARDY"); /////////////////////////////////////////////////////////// @@ -387,6 +390,24 @@ void THardy_transfer::aggiorna_record(TRectype& rec, const TString_array& lista_ } else if (str == "FISSO") valore = elabora.get(); // valore fisso indicato in configurazione + else if (str == "TRADUCI") + { + const TString80 campo = elabora.get(); + const TString80 contenuto = get_str(campo); + TConfig& ini = config(); + valore = ini.get(contenuto,campo); + } + if (str == "_STREXPR") // formato _STREXPR, espressione + { + TExpression expr(campo_orig.after(','), _strexpr); + for (int v = 0; v < expr.numvar(); v++) + { + const char* varname = expr.varname(v); + expr.setvar(v, get_str(varname)); + } + valore = expr.as_string(); + valore.trim(); + } } else valore = get_str(campo_orig); @@ -458,7 +479,7 @@ bool THardy_catmerc::trasferisci() TConfig& ini = config(); TString_array lista_campi; ini.list_variables(lista_campi, true, "GMC", true); - TTable table("%GMC"); + TTable table("GMC"); TRectype& rec = table.curr(); THardy_iterator hi(this); while (++hi) @@ -672,6 +693,204 @@ bool THardy_art::trasferisci() return write_enabled(); } +/////////////////////////////////////////////////////////// +// THardy_conti +/////////////////////////////////////////////////////////// + +bool THardy_pcon::trasferisci() +{ + if (trasferisci_gruppi()) + if (trasferisci_conti()) + return trasferisci_sottoconti(); + return false; +} + +bool THardy_pcon::trasferisci_gruppi() +{ + TString query = + "SELECT * " + "FROM dbo.Mastri " + "WHERE Livello=2"; + + TRecordset& recset = create_recordset(query); + TConfig& ini = config(); + + TString_array lista_campi; + ini.list_variables(lista_campi, true, "MASTRI", true); + + TSystemisamfile pcon(LF_PCON); + pcon.open(_lock); + TRectype& rec = pcon.curr(); + THardy_iterator hi(this); + while (++hi) + { + // costruisco la chiave gr.co.sc + const TString16 key = get_str("IdMastro"); + const TString& gruppo = key.mid(0,2); + rec.zero(); + rec.put(PCN_GRUPPO, gruppo); + aggiorna_record(rec, lista_campi); + test_write(pcon); + } + pcon.close(); + return write_enabled(); +} +long THardy_clienti::get_codcf(const TString &key) +{ + long codcf = 0; + const char first = key[0]; + const long cod_hardy = atoi(key.mid(2,6)); + switch (first) + { + case 'H': + { + codcf = 130000+cod_hardy; + } + break; + case 'P': + { + codcf = 140000+cod_hardy; + } + break; + case '0': + { + const char second = key[1]; + if (second == '1') + codcf = 120000+cod_hardy; + else if (second == '0') + { + const char third = key[2]; + if (third == '4') + codcf = 110000+cod_hardy; + else if (third == '3') + codcf = 100000+cod_hardy; + else + codcf = cod_hardy; + } + } + break; + default: + codcf = cod_hardy; + } + return codcf; +} + +bool THardy_clienti::trasferisci() +{ + TString query = + "SELECT * " + "FROM dbo.Clienti "; + + TRecordset& recset = create_recordset(query); + TConfig& ini = config(); + + TString_array lista_campi; + ini.list_variables(lista_campi, true, "CLIENTI", true); + + TSystemisamfile clienti(LF_CLIFO); + clienti.open(_lock); + TRectype& rec = clienti.curr(); + THardy_iterator hi(this); + while (++hi) + { + // costruisco la chiave + const TString16 key = get_str("IdConto"); + long codcf = get_codcf(key); + rec.zero(); + rec.put(CLI_TIPOCF, "C"); + rec.put(CLI_CODCF, codcf); + aggiorna_record(rec, lista_campi); + test_write(clienti); + } + clienti.close(); + return write_enabled(); +} + +bool THardy_pcon::trasferisci_conti() +{ + TString query = + "SELECT * " + "FROM dbo.Mastri " + "WHERE Livello=1"; + + TRecordset& recset = create_recordset(query); + TConfig& ini = config(); + + TString_array lista_campi_pcon; + ini.list_variables(lista_campi_pcon, true, "MASTRI", true); + const TString& esclusi = ini.get("PCON", "PARAMETRI"); + + TSystemisamfile pcon(LF_PCON); + pcon.open(_lock); + TRectype& rec_pcon = pcon.curr(); + THardy_iterator hi(this); + while (++hi) + { + // costruisco la chiave gr.co + const TString16 key = get_str("IdMastro"); + const int gr = atoi(key.mid(0,2)); + int co = atoi(key.mid(2,2)); + const int so = atoi(key.mid(4,3)); + if ((gr != 0) && (co != 0)) + { + if (esclusi.find(key.mid(0,2))>=0) + co = co*10+so; + rec_pcon.zero(); + rec_pcon.put(PCN_GRUPPO, gr); + rec_pcon.put(PCN_CONTO, co); + aggiorna_record(rec_pcon, lista_campi_pcon); + test_write(pcon); + } + } + pcon.close(); + return write_enabled(); +} + +bool THardy_pcon::trasferisci_sottoconti() +{ + TString query = + "SELECT * " + "FROM dbo.Conti "; + + TRecordset& recset = create_recordset(query); + TConfig& ini = config(); + + TString_array lista_campi_pcon, lista_cf; + ini.list_variables(lista_campi_pcon, true, "CONTI", true); + const TString& esclusi = ini.get("PCON", "PARAMETRI"); + + TSystemisamfile pcon(LF_PCON); + pcon.open(_lock); + TRectype& rec_pcon = pcon.curr(); + THardy_iterator hi(this); + while (++hi) + { + // costruisco la chiave gr.co.sc + const TString16 key = get_str("IdConto"); + const int gr = atoi(key.mid(1,2)); + const int co = atoi(key.mid(3,2)); + const int so = atoi(key.mid(5,3)); + + rec_pcon.zero(); + rec_pcon.put(PCN_GRUPPO, gr); + + if ((gr != 0) && (co != 0) && (so!= 0)) + { + if (esclusi.find(key.mid(1,2))>=0) + rec_pcon.put(PCN_CONTO, co*10+so); + else + { + rec_pcon.put(PCN_CONTO, co); + rec_pcon.put(PCN_SOTTOCONTO, so); + } + aggiorna_record(rec_pcon, lista_campi_pcon); + test_write(pcon); + } + } + pcon.close(); + return write_enabled(); +} + /////////////////////////////////////////////////////////// // TImportazioneHardy_mask /////////////////////////////////////////////////////////// @@ -795,6 +1014,22 @@ void TImportazioneHardy_mask::trasferisci() book.add(log); rep_to_print = true; } + if (go_on && get_bool(F_PCON)) + { + THardy_pcon pc; + pc.init(TR("Piano dei conti"), query_header, log); + go_on = pc.trasferisci(); + book.add(log); + rep_to_print = true; + } + if (go_on && get_bool(F_CLI)) + { + THardy_clienti pc; + pc.init(TR("Clienti"), query_header, log); + go_on = pc.trasferisci(); + book.add(log); + rep_to_print = true; + } if (rep_to_print && book.pages() > 0) book.preview(); @@ -822,7 +1057,6 @@ TImportazioneHardy_mask::TImportazioneHardy_mask() : TAutomask("hacnv100a") TImportazioneHardy_mask::~TImportazioneHardy_mask() { } - /////////////////////////////////////////////////////////// // TImportazioneHardy /////////////////////////////////////////////////////////// diff --git a/ha/hacnv100.h b/ha/hacnv100.h index cf1777b4a..98a34d73c 100755 --- a/ha/hacnv100.h +++ b/ha/hacnv100.h @@ -184,8 +184,20 @@ public: virtual bool trasferisci(); }; -class THardy_conti : public THardy_transfer +class THardy_pcon : public THardy_transfer { +protected: + bool trasferisci_gruppi(); + bool trasferisci_conti(); + bool trasferisci_sottoconti(); +public: + virtual bool trasferisci(); +}; + +class THardy_clienti : public THardy_transfer +{ +protected: + long get_codcf(const TString& key); public: virtual bool trasferisci(); }; diff --git a/ha/hacnv100a.ini b/ha/hacnv100a.ini index f661c0516..44d252026 100755 --- a/ha/hacnv100a.ini +++ b/ha/hacnv100a.ini @@ -1,47 +1,57 @@ // tabella condizioni di pagamento = Pagamenti [CPG] -CODTAB=IdPagamento -S0=DsPagamento -S1= -S3= -S4=IdTipoMovimento -S5= -I0= -I1= -I2= -I3= -B0= -B1= +CODTAB = IdPagamento +S0 = DsPagamento +S1 = _TRADUCI,FlTipoScadenza +S3 = +S4 = _TRADUCI,IdTipoMovimento +S5 = +I0 = +I1 = +I2 = +I3 = +B0 = +B1 = +//Conversione IdTipoMovimento [IdTipoMovimento] -BO=9 -RB=3 -RD=1 -RI=8 +BO = 9 +RB = 3 +RD = 1 +RI = 8 + +//Conversione FlTipoScadenza +[FlTipoScadenza] +0 = F +1 = M +2 = I +3 = I +4 = I // tabella codici IVA = AliquoteIVA [IVA] -CODTAB=IdIva -S0=DsIvaEstesa -S1= -S2= -S3= -S5= -S6= -S7= -S8= -S9= -S10= -S11= -I0= -I1= -R0=Aliquota -B0= -B1= -B2= -B3= -B4= +CODTAB = IdIva +S0 = DsIvaEstesa +S1 = +S2 = +S3 = +S5 = +S6 = +S7 = +S8 = +S9 = +S10 = +S11 = +I0 = +I1 = +R0 = Aliquota +B0 = +B1 = +B2 = +B3 = +B4 = +//conversione per campo [RComunicazioneIvaVen] 1=CD11 2=CD12 @@ -56,13 +66,13 @@ B4= // tabella gruppi merceologici = CategorieMerc [GMC] -CODTAB=IdCategoria -S0=DsCategoria +CODTAB = IdCategoria +S0 = DsCategoria // tabella classi fiscali = CategorieFisc [ASF] -CODTAB=IdCategoria -S0=DsCategoria +CODTAB = IdCategoria +S0 = DsCategoria // tabella Banche ABI = Banche [ABI] @@ -72,36 +82,49 @@ S0=DsBanca S0=DsDocumento [CAUCONT] -CODCAUS=IdCausale -DESCR=DsCausaleEstesa +CODCAUS = IdCausale +DESCR = DsCausaleEstesa [CAUMAG] -CODTAB=IdCausale -S0=DsCausaleEstesa +CODTAB = IdCausale +S0 = DsCausaleEstesa [UM] -CODTAB=IdUm -S0=DsUm +CODTAB = IdUm +S0 = DsUm [ANAMAG] -CODART=IdProdotto -DESCR=DsProdotto -CODIVA=IdIva -GRMERC=IdCategoria +CODART = IdProdotto +DESCR = DsProdotto +CODIVA = IdIva +GRMERC = IdCategoria [UMART] -CODART=IdProdotto -NRIGA=_FISSO,1 -UM=IdUM1 +CODART = IdProdotto +NRIGA = _FISSO,1 +UM = IdUM1 -[CLIFO] -RAGSOC = _STREXPR,LEFT(TradeName1+" "+TradeName2; 50) -INDCF = Address +[MASTRI] +DESCR = DsMastro + +[CONTI] +DESCR = RagioneSociale + +[FlTipoMastro] +1 = C +5 = F + +[PARAMETRI] +PCON=04|05 + +[CLIENTI] +RAGSOC = RagioneSociale +INDCF = Indirizzo CIVCF = LOCALITACF = -STATOCF = _TAB,%TPS,State,S6 +STATOCF = _TAB,%TPS,IdIso,S6 COMCF = -CAPCF = ZipCode +CAPCF = CAP COFI = CodiceFiscale STATOPAIV = PAIV = PartitaIVA @@ -116,23 +139,23 @@ SOTTOCRIC = TIPOAPER = CODANAGPER = PTEL = -TEL = TelNumber +TEL = Telefono1 PTEL2 = -TEL2 = +TEL2 = Telefono2 PTEL3 = -TEL3 = +TEL3 = TelCellulare PFAX = -FAX = FaxNumber +FAX = TelFax PTELEX = TELEX = -MAIL = EMailAddress +MAIL = EMail DATANASC = STATONASC = COMNASC = CODSTAT = -CODABI = ABICode -CODCAB = CABCode -NUMCC = CC +CODABI = +CODCAB = +NUMCC = IBAN = OCCAS = STATO = @@ -144,7 +167,7 @@ RICALT = OGGETTI = SOSPESO = DIRTY = -REFERENTE = Reference +REFERENTE = Referente VALINTRA = [CFVEN]