diff --git a/src/bs/bs0500.cpp b/src/bs/bs0500.cpp index fcac69fa0..06c1b94ec 100644 --- a/src/bs/bs0500.cpp +++ b/src/bs/bs0500.cpp @@ -6,19 +6,16 @@ #include #include #include - #include "../mg/mglib.h" #include "../cg/cglib.h" #include "../ve/velib.h" #include #include - #include "bs0.h" - +#include "bs0500a.h" #include "../fe/felib.h" #include "../ve/condv.h" #include "../ve/rcondv.h" - #include #include #include @@ -87,7 +84,7 @@ public: TMask_field* f = find_by_fieldname(fld); return TDate(f ? f->get() : EMPTY_STRING); } - TImporta_mask() : TAutomask("bs0500a") { autoload(); } + TImporta_mask() : TAutomask("bs0500a") { autoload(); } ~TImporta_mask() { autosave(); } }; @@ -131,8 +128,16 @@ void TImporta_mask::autoload() FOR_EACH_MASK_FIELD(*this, i, f) { const TFieldref* fr = f->field(); - if (fr != NULL) - f->set(ini_get_string(CONFIG_DITTA, "bs", fr->name())); + if (fr != NULL) + { + const TString & name = fr->name(); + + if ( (name == "SyncIMPPARTDOC") || (name == "SyncDoc") ) + f->set(ini_get_bool(CONFIG_DITTA, "bs", name,true) ? "X" : " "); + else + f->set(ini_get_string(CONFIG_DITTA, "bs", name)); + } + } } @@ -192,12 +197,11 @@ protected: void sync_corrisp(const TDate& dal, const TDate& al); void sync_mov(int tipotestata, const TDate& dal, const TDate& al); void sync_scontrini(const TDate& dal, const TDate& al) { sync_mov(3, dal, al); } - void sync_doc(const TDate& dal, const TDate& al); + void sync_doc(const TDate& dal, const TDate& al, int tipotestata, bool importadoc); void sync_carscar(const TDate& dal, const TDate& al) { sync_mov(1, dal, al); } void sync_generici(const TDate& dal, const TDate& al) { sync_mov(4, dal, al); } void sync_clifo(int cfmask, const TDate& dal, const TDate& al); void sync_listino(const TString& listino); - void sync_fatbol(const TDate& dal, const TDate& al); public: virtual bool create(); @@ -942,9 +946,10 @@ void TImporta_sync::sync_clifo(int cfmask, const TDate& dal, const TDate& al) TString str(255); TODBC_recordset clifo(str); clifo.connect(_dsn, _usr, _psw); + /* str << "DELETE FROM tieAnagCFP WHERE Origine=1;"; clifo.exec(str); // Elimina tutte le anagrafiche importate da BeeStore - + */ save_clifo(cfmask, dal, al); } @@ -1134,154 +1139,6 @@ void TImporta_sync::add_rmov(TMovimentoPN& mov, const real& importo, const TCaus } } -void TImporta_sync::sync_doc(const TDate& dal, const TDate& al) -{ - const TString8 codcausdef = ini_get_string(CONFIG_DITTA, "bs", MOVMAG_CODCAUS, "", 2); - - if (codcausdef.blank()) - { - _log->log(2, "Configurare parametri per movimenti Bee Store"); - return; - } - - TString str(255); - str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=2 AND tieDMovMag.CodTestata=tieTBolFat.Cod_PK"; // verificare - if (dal.ok() || al.ok()) - { - str << " AND DataMov"; - if (dal.ok() && al.ok()) - str << " BETWEEN " << date2sql(dal) << " AND " << date2sql(al); - else - { - if (dal.ok()) - str << ">=" << date2sql(dal); - else - str << "<=" << date2sql(al); - } - } - str << "\nORDER BY NumMov,NumRiga"; - - TODBC_recordset docs(str); - docs.connect(_dsn, _usr, _psw); - TProgress_monitor pi(docs.items(), str); - - long num_doc = -1, nd, codcf; - TString4 tipocf; - TDocumento* doc = NULL; - - for (bool ok = docs.move_first(); ok; ok = docs.move_next()) - { - TToken_string test(docs.get("CodTestata").as_string(), '\\'); - - nd = atol(test.get()); - TString wrk = docs.get("CodCliente").as_string(); - - while (wrk[0] >= 'A') - wrk.ltrim(1); - - codcf = atol(wrk); - tipocf = docs.get("TipoIntestatario").as_string(); - if (tipocf != "C") // verificare - tipocf = "F"; - - if (nd != num_doc) - { - if (num_doc > 0 && !save_and_delete_doc(doc)) - break; - num_doc = nd; - const TDate datadoc = docs.get("DataMov").as_date(); - TString8 numdoc = docs.get("TipoDocCE").as_string(); - TString8 tipodoc = docs.get("TipoDocCE").as_string(); - - TTipo_documento tipo(tipodoc); - const TString8 codcaus = tipo.caus_mov().blank() ? codcausdef : tipo.caus_mov(); - - doc = new TDocumento(); - doc->put(DOC_ANNO, datadoc.year()); - doc->put(DOC_DATADOC, datadoc); - doc->put(DOC_NDOC, nd); - doc->put(DOC_PROVV, "D"); - doc->put(DOC_CODNUM, numdoc); - doc->put(DOC_TIPODOC, tipodoc); - doc->put(DOC_TIPOCF, tipocf); - doc->put(DOC_CODCF, codcf); - doc->cli2doc(); - - const TString8 codval = docs.get("CodValuta").as_string(); - const real cambio = docs.get("CambioValuta").as_real(); - const TString asp = docs.get("AspettoBeni").as_string(); - const int ncolli = docs.get("NumeroColli").as_int(); - - doc->put(DOC_CODVAL, codval); - doc->put(DOC_CAMBIO, cambio); - doc->put(DOC_ASPBENI1, asp.sleft(50)); - doc->put(DOC_ASPBENI2, asp.smid(50)); - doc->put(DOC_NCOLLI, ncolli); - doc->put(DOC_CAUSMAG, codcaus); - } - const int tipoart = docs.get("TipoArticolo").as_int(); - TString4 tiporiga = tipoart == 2 ? "04" : "02"; - TRectype& rdoc = doc->new_row("01"); - const TString80 codart = docs.get("CodArticolo").as_string(); - - rdoc.put(RDOC_CODART, codart); - - if (tipoart == 2) - { - if (cache().get("SPP", codart).not_empty()) - rdoc.put(RDOC_CODARTMAG, codart); - } - else - { - if (cache().get(LF_ANAMAG, codart).not_empty()) - rdoc.put(RDOC_CODARTMAG, codart); - } - - rdoc.put(RDOC_CODARTMAG, codart); - // rdoc.check_row(); - - const TString descr = docs.get("DSRiga").as_string(); - - rdoc.put(RDOC_DESCR, descr.sleft(50)); - if (descr.len() > 50) - { - rdoc.put(RDOC_DESCLUNGA, "X"); - rdoc.put(RDOC_DESCEST, descr.smid(50)); - } - rdoc.put(RDOC_CODMAG, docs.get("CodMagazzino").as_string().left(5)); - rdoc.put(RDOC_CODMAGC, docs.get("CodMagazDest").as_string().left(5)); - rdoc.put(RDOC_UMQTA, docs.get("CodUntMis").as_string()); - rdoc.put(RDOC_QTA, docs.get("Quantita").as_real()); - rdoc.put(RDOC_PREZZO, docs.get("PrzNettoSede").as_real()); // o PrzNettoValuta ?? - - real valsconto1(docs.get("Sconto1").as_real()); - real valsconto2(docs.get("Sconto2").as_real()); - real valsconto3(docs.get("Sconto3").as_real()); - TString80 sconto; - - if (valsconto1 != ZERO) - sconto << valsconto1.stringa(6, 2); - if (valsconto2 != ZERO) - { - if (sconto.full()) - sconto << "+"; - sconto << valsconto2.stringa(6, 2); - } - if (valsconto3 != ZERO) - { - if (sconto.full()) - sconto << "+"; - sconto << valsconto3.stringa(6, 2); - } - rdoc.put(RDOC_SCONTO, sconto); - rdoc.put(RDOC_CODIVA, docs.get("CodIva").as_string()); - - if (!pi.add_status()) - break; - } - save_and_delete_doc(doc); // Salva ultimo documento in sospeso -} - void TImporta_sync::sync_corrisp(const TDate&, const TDate&) { const TString8 codcaus = ini_get_string(CONFIG_DITTA, "bs", "CODCAUSC"); @@ -1419,20 +1276,11 @@ void TImporta_sync::sync_corrisp(const TDate&, const TDate&) } } -void TImporta_sync::sync_fatbol(const TDate& dal, const TDate& al) +void TImporta_sync::sync_doc(const TDate& dal, const TDate& al , int tipotestata, bool importadoc) { - const TString8 codcausdef = ini_get_string(CONFIG_DITTA, "bs", MOVMAG_CODCAUS, "", 2); - /* - if (codcausdef.blank()) - { - _log->log(2, "Configurare parametri per movimenti Bee Store"); - return; - } - */ - TString str(255); - str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=2 AND tieDMovMag.CodTestata=tieTBolFat.Cod_PK"; // verificare + str << "SELECT tieDMovMag.*,tieTBolFat.* FROM tieDMovMag,tieTBolFat WHERE tieDMovMag.Origine=1 AND tieDMovMag.TipoTestata=" <new_row("01"); const TString80 codart = docs.get("CodArticolo").as_string(); rdoc.put(RDOC_CODART, codart); + if (importadoc && tipoart == 0) + { + rdoc.put(RDOC_CODARTMAG, codart); + rdoc.put(RDOC_CHECKED, "X"); + if (cache().get(LF_ANAMAG, codart).empty()) + { + TArticolo articolo; + articolo.put(ANAMAG_CODART, codart); + articolo.put(ANAMAG_DESCR, docs.get("DSRiga").as_string()); + articolo.put(ANAMAG_CLASSDOG, docs.get("CodDogana").as_string()); + TRectype& umart = articolo.new_row(LF_UMART); + umart.put(UMART_UM, docs.get("CodUntMis").as_string()); + umart.put(UMART_FC, 1); + articolo.write(); + } + } if (tipoart == 2) //righe libere { if (cache().get("SPP", codart).not_empty()) @@ -1666,6 +1534,7 @@ void TImporta_sync::main_loop() const TDate dal = mask.get_date("SyncDateFrom"); const TDate al = mask.get_date("SyncDateTo"); + const bool importa_artdoc = mask.get_bool("SyncIMPPARTDOC"); if (mask.get_bool("SyncUMS")) sync_ums(dal, al); @@ -1695,14 +1564,12 @@ void TImporta_sync::main_loop() if (mask.get_bool("SyncCorr")) sync_corrisp(dal, al); if (mask.get_bool("SyncDoc")) - sync_doc(dal, al); + sync_doc(dal, al, mask.get_int(F_TIPODOC), importa_artdoc); + if (mask.get_bool("SyncCarScar")) sync_carscar(dal, al); if (mask.get_bool("SyncGenerici")) sync_generici(dal, al); - if (mask.get_bool("SyncFatBol")) - sync_fatbol(dal, al); - _log->preview(); delete _log; _log = NULL; diff --git a/src/bs/bs0500a.h b/src/bs/bs0500a.h index ae6a67e6c..a1fb49e97 100644 --- a/src/bs/bs0500a.h +++ b/src/bs/bs0500a.h @@ -17,8 +17,12 @@ #define F_FORNITORI 116 #define F_BARCODE 117 -#define F_FATBOL 121 -#define F_CANCART 122 +#define F_FATTURE 121 +#define F_BOLLE 122 +#define F_ORDINI 123 +#define F_IMPPARTDOC 124 +#define F_CANCART 125 +#define F_TIPODOC 126 #define F_C_CARSCAR 201 #define F_D_CARSCAR 202 diff --git a/src/bs/bs0500a.uml b/src/bs/bs0500a.uml index 35359afeb..f11ec3cf0 100644 --- a/src/bs/bs0500a.uml +++ b/src/bs/bs0500a.uml @@ -4,7 +4,7 @@ TOOLBAR "topbar" 0 0 0 2 #include ENDPAGE -PAGE "Sincronizzazione Bee Store" 0 2 0 0 +PAGE "Importazioni da BeeStore" 0 2 0 0 GROUPBOX DLG_NULL 78 9 BEGIN @@ -111,19 +111,26 @@ GROUPBOX DLG_NULL 78 4 BEGIN PROMPT 1 10 "@bDocumenti" END -BOOLEAN F_FATBOL -BEGIN - PROMPT 2 11 "Importa le Fatture" - FIELD SyncFatBol -END BOOLEAN F_DOCUMENTI BEGIN - PROMPT 2 12 "Documenti " + PROMPT 2 11 "Documenti " FIELD SyncDoc + MESSAGE FALSE CLEAR,F_TIPODOC + MESSAGE TRUE ENABLE,F_TIPODOC END -GROUPBOX DLG_NULL 78 4 +LISTBOX F_TIPODOC 1 15 +BEGIN + PROMPT 2 12 "Tipo Documento" + ITEM "2|Fatture" + ITEM "6|Note di credito" + ITEM "1|Bolle" + ITEM "9|Ordini" + FIELD SyncTIPODOC +END + +GROUPBOX DLG_NULL 78 3 BEGIN PROMPT 1 14 "@bFiltri" END @@ -144,14 +151,33 @@ ENDPAGE PAGE "Parametri" 0 2 0 0 -GROUPBOX DLG_NULL 78 7 +GROUPBOX DLG_NULL 78 3 BEGIN - PROMPT 1 1 "@bMovimenti" + PROMPT 1 1 "@bParametri" +END + +BOOLEAN F_IMPPARTDOC +BEGIN + PROMPT 2 2 "Importazione Articoli da Documenti" + FIELD SyncIMPPARTDOC + MESSAGE TRUE CLEAR,F_CANCART|CLEAR,F_ART + MESSAGE FALSE ENABLE,F_CANCART|ENABLE,F_ART +END + +BOOLEAN F_CANCART +BEGIN + PROMPT 40 2 "Elimina Articoli Sospesi" + FIELD SyncCANCART +END + +GROUPBOX DLG_NULL 78 6 +BEGIN + PROMPT 1 4 "@bMovimenti" END STRING F_C_CARSCAR 4 BEGIN - PROMPT 2 2 "Causale magazzino car./scar. " + PROMPT 2 5 "Causale magazzino car./scar. " USE %CAU SELECT (S2[8,8]=1)&&(S6="P") INPUT CODTAB F_C_CARSCAR DISPLAY "Codice" CODTAB @@ -165,13 +191,13 @@ END STRING F_D_CARSCAR 50 36 BEGIN - PROMPT 40 2 "" + PROMPT 40 5 "" FLAGS "D" END STRING F_C_DOCUMENTI 4 BEGIN - PROMPT 2 3 "Causale magazzino documenti " + PROMPT 2 6 "Causale magazzino documenti " USE %CAU SELECT (S2[8,8]=1)&&(S6="P") INPUT CODTAB F_C_DOCUMENTI DISPLAY "Codice" CODTAB @@ -185,13 +211,13 @@ END STRING F_D_DOCUMENTI 50 36 BEGIN - PROMPT 40 3 "" + PROMPT 40 6 "" FLAGS "D" END STRING F_C_SCONTRINI 4 BEGIN - PROMPT 2 4 "Causale magazzino scontrini " + PROMPT 2 7 "Causale magazzino scontrini " USE %CAU SELECT (S2[8,8]=1)&&(S6="P") INPUT CODTAB F_C_SCONTRINI DISPLAY "Codice" CODTAB @@ -205,13 +231,13 @@ END STRING F_D_SCONTRINI 50 36 BEGIN - PROMPT 40 4 "" + PROMPT 40 7 "" FLAGS "D" END STRING F_C_GENERICI 4 BEGIN - PROMPT 2 5 "Causale magazzino mov.generici " + PROMPT 2 8 "Causale magazzino mov.generici " USE %CAU SELECT (S2[8,8]=1)&&(S6="P") INPUT CODTAB F_C_GENERICI DISPLAY "Codice" CODTAB @@ -225,18 +251,18 @@ END STRING F_D_GENERICI 50 36 BEGIN - PROMPT 40 5 "" + PROMPT 40 8 "" FLAGS "D" END -GROUPBOX DLG_NULL 78 4 +GROUPBOX DLG_NULL 78 3 BEGIN - PROMPT 1 8 "@bCorrispettivi" + PROMPT 1 10 "@bCorrispettivi" END STRING F_C_CORRISPETTIVI 4 BEGIN - PROMPT 2 9 "Causale contabile " + PROMPT 2 11 "Causale contabile " USE LF_CAUSALI SELECT TIPODOC="CR" INPUT CODCAUS F_C_CORRISPETTIVI DISPLAY "Codice" CODCAUS @@ -250,21 +276,10 @@ END STRING F_D_CORRISPETTIVI 50 36 BEGIN - PROMPT 40 9 "" + PROMPT 40 11 "" FLAGS "D" END -GROUPBOX DLG_NULL 78 3 -BEGIN - PROMPT 1 12 "@bParametri" -END - -BOOLEAN F_CANCART -BEGIN - PROMPT 2 13 "Cancellazione degli Articoli in sospeso" - FIELD SyncCANCART -END - ENDPAGE ENDMASK \ No newline at end of file diff --git a/src/bs/bsmenu.men b/src/bs/bsmenu.men index 534cc65aa..e681844f9 100644 --- a/src/bs/bsmenu.men +++ b/src/bs/bsmenu.men @@ -5,7 +5,7 @@ Module = bs Flags = "F" Item_01 = "Configurazione", "bs0 -0", "F", 9015 Item_02 = "Sincronizzazione", "bs0 -1", "F", 9015 -Item_03 = "Importazione Fatture", "bs0 -4", "F", 9015 +Item_03 = "Importazione", "bs0 -4", "F", 9015 Item_04 = "SKNET Importer", "bs0 -2", "F", 9015 Item_05 = "Tabelle di conversione", [BSMENU_002]