Patch level : 12.0 592

Files correlati     : bs
Commento            : Corretto controllo clifo_has_conai e importazione codici varianti


git-svn-id: svn://10.65.10.50/branches/R_10_00@24513 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2018-06-07 12:25:24 +00:00
parent 81f839eafa
commit 13650d7166
5 changed files with 174 additions and 161 deletions

View File

@ -181,7 +181,7 @@ void TSknet_sync::load_their_origine(TISAM_recordset& out_set, const char* in_ta
str << row->get(0) << ','; str << row->get(0) << ',';
str.rtrim(1); // toglie ultima virgola str.rtrim(1); // toglie ultima virgola
str << "\nFROM " << in_table << " WHERE (Origine=" << their_origin() << ") AND " << where_time_import() << ";"; str << "\nFROM " << in_table << " WHERE (Origine=" << their_origin() << ") AND " << where_time_import() << ";";
//_log->log(0, str);
TODBC_recordset odbc(str); TODBC_recordset odbc(str);
odbc.connect(_dsn, _usr, _psw); odbc.connect(_dsn, _usr, _psw);
const TRecnotype n = odbc.items(); const TRecnotype n = odbc.items();
@ -415,6 +415,7 @@ void TSknet_sync::sync_anamag()
// Sincronizzo le unità di misura // Sincronizzo le unità di misura
{ {
query.cut(0) << "SELECT * from tieArticoli where Origine=" << their_origin() << " AND " << where_time_import() << ";"; query.cut(0) << "SELECT * from tieArticoli where Origine=" << their_origin() << " AND " << where_time_import() << ";";
//_log->log(0, query);
TODBC_recordset odbcunit(query); TODBC_recordset odbcunit(query);
odbcunit.connect(_dsn, _usr, _psw); odbcunit.connect(_dsn, _usr, _psw);
TProgress_monitor p(odbcunit.items(), "Aggiornamento unità di misura"); TProgress_monitor p(odbcunit.items(), "Aggiornamento unità di misura");
@ -444,6 +445,7 @@ void TSknet_sync::sync_anamag()
{ {
// Controllo se esistono varianti e le aggiungo // Controllo se esistono varianti e le aggiungo
query.cut(0) << "SELECT * FROM tieArtVarianti where origine=" << their_origin() << " AND " << where_time_import() << ";"; query.cut(0) << "SELECT * FROM tieArtVarianti where origine=" << their_origin() << " AND " << where_time_import() << ";";
//_log->log(0, query);
TODBC_recordset odbc(query); TODBC_recordset odbc(query);
odbc.connect(_dsn, _usr, _psw); odbc.connect(_dsn, _usr, _psw);
@ -477,7 +479,7 @@ void TSknet_sync::sync_anamag()
// Azzero // Azzero
ccor.first(); // Useless?? ccor.first(); // Useless??
rccor.zero(); rccor.zero();
bool add = false; bool add = true;
int riga = 1; int riga = 1;
const TString& codpadre = odbc.get("CodPadre").as_string(); const TString& codpadre = odbc.get("CodPadre").as_string();
const TString& codarticolo = odbc.get("CodArticolo").as_string(); const TString& codarticolo = odbc.get("CodArticolo").as_string();
@ -485,7 +487,6 @@ void TSknet_sync::sync_anamag()
rccor.put(CODCORR_NRIGA, riga); rccor.put(CODCORR_NRIGA, riga);
if (codpadre != codarticolo && ccor.read(rccor, _isequal) == NOERR) if (codpadre != codarticolo && ccor.read(rccor, _isequal) == NOERR)
{ {
add = true;
while (add && rccor.get(CODCORR_CODART) == codpadre) while (add && rccor.get(CODCORR_CODART) == codpadre)
{ {
riga = rccor.get_int(CODCORR_NRIGA); riga = rccor.get_int(CODCORR_NRIGA);
@ -512,6 +513,7 @@ void TSknet_sync::sync_anamag()
TLocalisamfile art(LF_ANAMAG); TLocalisamfile art(LF_ANAMAG);
TRectype rart(LF_ANAMAG); TRectype rart(LF_ANAMAG);
query.cut(0) << "SELECT * FROM tieArtCONAI where origine=" << their_origin() << " AND " << where_time_import() << ";"; query.cut(0) << "SELECT * FROM tieArtCONAI where origine=" << their_origin() << " AND " << where_time_import() << ";";
//_log->log(0, query);
TODBC_recordset odbc(query); TODBC_recordset odbc(query);
odbc.connect(_dsn, _usr, _psw); odbc.connect(_dsn, _usr, _psw);
TProgress_monitor p(odbc.items(), "Aggiornamento CONAI"); TProgress_monitor p(odbc.items(), "Aggiornamento CONAI");
@ -727,6 +729,7 @@ void TSknet_sync::load_clifo(const char tipocf)
TFast_isamfile clifo(LF_CLIFO); TFast_isamfile clifo(LF_CLIFO);
//_log->log(0, str);
TODBC_recordset odbc(str); TODBC_recordset odbc(str);
odbc.connect(_dsn, _usr, _psw); odbc.connect(_dsn, _usr, _psw);
const TRecnotype n = odbc.items(); const TRecnotype n = odbc.items();
@ -862,7 +865,7 @@ void TSknet_sync::load_clifo(const char tipocf)
split_phone(odbc, "CellulareSMS", clifo, CLI_PTEL3, CLI_TEL3); split_phone(odbc, "CellulareSMS", clifo, CLI_PTEL3, CLI_TEL3);
split_phone(odbc, "Fax", clifo, CLI_PFAX, CLI_FAX); split_phone(odbc, "Fax", clifo, CLI_PFAX, CLI_FAX);
clifo.put(CLI_MAIL, odbc.get("EMail").as_string()); clifo.put(CLI_MAIL, odbc.get("EMail").as_string());
clifo.put(CLI_CODPAG, odbc.get("Cli_CodPagamento").as_string()); clifo.put(CLI_CODPAG, odbc.get(tipocf == 'F' ? "For_CodPagamento" : "Cli_CodPagamento").as_string());
if (_hasConai) if (_hasConai)
{ {
@ -916,7 +919,7 @@ void TSknet_sync::load_clifo(const char tipocf)
cab = odbc.get("For_Cab").as_string(); cab = odbc.get("For_Cab").as_string();
contcor = odbc.get("For_ContoCorr").as_string(); contcor = odbc.get("For_ContoCorr").as_string();
} }
if (!abi.blank() && !cab.blank() && !contcor.blank()) if (!abi.blank() && !cab.blank())
{ {
int err = 1; int err = 1;
// Calcolo il CIN // Calcolo il CIN
@ -958,13 +961,15 @@ void TSknet_sync::load_clifo(const char tipocf)
cfb.put("NUMCC", contcor); cfb.put("NUMCC", contcor);
cfb.put("IBAN", iban); cfb.put("IBAN", iban);
} }
else if (!odbc.get("Cli_ContoCorr").as_string().blank()) else
{ {
TString msg; msg << "L'IBAN del contatto " << tipocf << " " << codcf << "non è corretto, non ho sovrascritto nulla"; TString msg; msg << "L'IBAN del contatto " << tipocf << " " << codcf << "non è corretto, verranno importati solo ABI e CAB";
cfb.put("NUMCC", "");
cfb.put("IBAN", "");
_log->log(1, msg); _log->log(1, msg);
} }
else
cfb.write_rewrite(); cfb.write_rewrite();
} }
// Always true // Always true
cfv.put(CFV_RAGGEFF, true); cfv.put(CFV_RAGGEFF, true);
@ -1131,6 +1136,7 @@ void TSknet_sync::clean()
if (ini_get_bool(CONFIG_DITTA, "BS", "SKSyncUMS")) if (ini_get_bool(CONFIG_DITTA, "BS", "SKSyncUMS"))
str << "DELETE FROM tieUntMisura WHERE Origine=" << their_origin() << " AND " << where_time_delete() << ";\n"; str << "DELETE FROM tieUntMisura WHERE Origine=" << their_origin() << " AND " << where_time_delete() << ";\n";
//_log->log(0, str);
voldemort.exec(str); // Elimina tutte le anagrafiche importate da BeeStore voldemort.exec(str); // Elimina tutte le anagrafiche importate da BeeStore
voldemort.commit(); voldemort.commit();
} }
@ -1139,14 +1145,14 @@ void TSknet_sync::clean()
void TSknet_sync::set_time() void TSknet_sync::set_time()
{ {
// Prelevo il tempo dell'ultima importazione // Prelevo il tempo dell'ultima importazione
sprintf_s(_lastUpdate, sizeof(_lastUpdate), ini_get_string(CONFIG_DITTA, "BS", "LAST_IMPORT", "1990-01-01 00:00:00.000")); sprintf_s(_lastUpdate, sizeof(_lastUpdate), ini_get_string(CONFIG_DITTA, "BS", "LAST_IMPORT", "19900101 00:00:00.000"));
// Preparo il tempo attuale // Preparo il tempo attuale
time_t rt = time(NULL); time_t rt = time(NULL);
struct tm * now = localtime(&rt); struct tm * now = localtime(&rt);
sprintf_s(_thisUpdate, sizeof(_thisUpdate), sprintf_s(_thisUpdate, sizeof(_thisUpdate),
"%d-%02d-%02d %02d:%02d:%02d.999", "%d%02d%02d %02d:%02d:%02d.999",
now->tm_year + 1900, now->tm_year + 1900,
now->tm_mon + 1, now->tm_mon + 1,
now->tm_mday, now->tm_mday,
@ -1169,6 +1175,13 @@ const TString TSknet_sync::where_time_delete()
return time_delete; return time_delete;
} }
const bool TSknet_sync::clifo_has_conai(const TString4& tipocf, const long codcf)
{
TString keyCli; keyCli << tipocf << "|" << codcf;
TRectype clifo = cache().get(LF_CFVEN, keyCli);
return clifo.get_bool("ADDCONAI") || !clifo.get("PRODCONAI").blank();
}
bool TSknet_sync::save_and_delete_movmag(TMov_mag*& doc) const bool TSknet_sync::save_and_delete_movmag(TMov_mag*& doc) const
{ {
int err = 0; int err = 0;
@ -1248,7 +1261,7 @@ void TSknet_sync::sync_doc()
str << "WHERE tieTBolFat.Origine = " << their_origin() << " AND tieTBolFat." << where_time_import(); str << "WHERE tieTBolFat.Origine = " << their_origin() << " AND tieTBolFat." << where_time_import();
//str << "WHERE tieDMovMag.Origine = " << their_origin() << " AND tieDMovMag.TipoTestata = 2"; // verificare //str << "WHERE tieDMovMag.Origine = " << their_origin() << " AND tieDMovMag.TipoTestata = 2"; // verificare
str << "\nORDER BY tieTBolFat.Cod_PK,tieDMovMag.NumRiga"; str << "\nORDER BY tieTBolFat.Cod_PK,tieDMovMag.NumRiga";
//_log->log(0, str);
TODBC_recordset docs(str); TODBC_recordset docs(str);
docs.connect(_dsn, _usr, _psw); docs.connect(_dsn, _usr, _psw);
TProgress_monitor pi(docs.items(), str); TProgress_monitor pi(docs.items(), str);
@ -1513,8 +1526,7 @@ void TSknet_sync::sync_doc()
// "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET" // "CONSCACC", "CONSCALL", "CONSCCAR", "CONSCPLA", "CONSCLEG", "CONSCVET"
TString keyCli; keyCli << tipocf << "|" << codcf; if (_hasConai && clifo_has_conai(tipocf, codcf))
if (_hasConai && cache().get(LF_CFVEN, keyCli, "ADDCONAI") == "X")
{ {
// In base al conai che ha abilitato controllo // In base al conai che ha abilitato controllo
if (ini_get_bool(CONFIG_DITTA, "ve", "CONFACC")) // Acciaio if (ini_get_bool(CONFIG_DITTA, "ve", "CONFACC")) // Acciaio

View File

@ -97,6 +97,7 @@ private:
void set_time(); void set_time();
const TString where_time_import(); const TString where_time_import();
const TString where_time_delete(); const TString where_time_delete();
const bool clifo_has_conai(const TString4& tipocf, const long codcf);
protected: protected:
bool save_and_delete_movmag(TMov_mag*& doc) const; bool save_and_delete_movmag(TMov_mag*& doc) const;

View File

@ -1,95 +1,95 @@
// gestione tabelle passaggio pack // gestione tabelle passaggio pack
#include <automask.h> #include <automask.h>
#include <tabapp.h> #include <tabapp.h>
class TMask_tabtp : public TAutomask class TMask_tabtp : public TAutomask
{ {
protected: protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly); bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public: public:
TMask_tabtp(const char* name); TMask_tabtp(const char* name);
virtual ~TMask_tabtp(); virtual ~TMask_tabtp();
}; };
TMask_tabtp::TMask_tabtp(const char* name) : TAutomask(name) TMask_tabtp::TMask_tabtp(const char* name) : TAutomask(name)
{ {
} }
TMask_tabtp::~TMask_tabtp() TMask_tabtp::~TMask_tabtp()
{ {
} }
bool TMask_tabtp::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TMask_tabtp::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ {
return true; return true;
} }
class Tab_app_sk : public Tab_application class Tab_app_sk : public Tab_application
{ {
protected: // TRelation_application protected: // TRelation_application
virtual bool user_destroy(); virtual bool user_destroy();
virtual bool user_create(); virtual bool user_create();
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
virtual TString& get_mask_name(TString& name) const; virtual TString& get_mask_name(TString& name) const;
virtual TMask* set_mask(TMask * m = NULL); virtual TMask* set_mask(TMask * m = NULL);
public: public:
Tab_app_sk(); Tab_app_sk();
virtual ~Tab_app_sk() {} virtual ~Tab_app_sk() {}
}; };
HIDDEN inline Tab_app_sk& app() { return (Tab_app_sk&)main_app(); } HIDDEN inline Tab_app_sk& app() { return (Tab_app_sk&)main_app(); }
// costruttore // costruttore
Tab_app_sk::Tab_app_sk() {} Tab_app_sk::Tab_app_sk() {}
TString& Tab_app_sk::get_mask_name(TString& name) const TString& Tab_app_sk::get_mask_name(TString& name) const
{ {
name = get_tabname(); name = get_tabname();
if (name[0] == '%') if (name[0] == '%')
name = name.mid(1); name = name.mid(1);
name.insert("bstb", 0); name.insert("bstb", 0);
return name; return name;
} }
TMask* Tab_app_sk::set_mask(TMask* m) TMask* Tab_app_sk::set_mask(TMask* m)
{ {
if (m == NULL) if (m == NULL)
{ {
TFilename name; get_mask_name(name); TFilename name; get_mask_name(name);
m = new TMask_tabtp(name); m = new TMask_tabtp(name);
} }
return TTable_application::set_mask(m); return TTable_application::set_mask(m);
} }
bool Tab_app_sk::user_create() bool Tab_app_sk::user_create()
{ {
bool ok = Tab_application::user_create(); bool ok = Tab_application::user_create();
if (ok) if (ok)
{ {
TMask& mask = *set_mask(); TMask& mask = *set_mask();
} }
return ok; return ok;
} }
bool Tab_app_sk::user_destroy() bool Tab_app_sk::user_destroy()
{ {
return Tab_application::user_destroy(); return Tab_application::user_destroy();
} }
int Tab_app_sk::rewrite(const TMask& m) int Tab_app_sk::rewrite(const TMask& m)
{ {
return Tab_application::rewrite(m); return Tab_application::rewrite(m);
} }
int bs0400(int argc, char* argv[]) int bs0400(int argc, char* argv[])
{ {
Tab_app_sk a; Tab_app_sk a;
a.run(argc, argv, TR("Tabella")); a.run(argc, argv, TR("Tabella"));
return 0; return 0;
} }

View File

@ -1,3 +1,3 @@
#define FLD_TABTPI_CODTAB 101 #define FLD_TABTPI_CODTAB 101
#define FLD_TABTPI_DESCR 102 #define FLD_TABTPI_DESCR 102
#define FLD_TABTPI_CODIVA 103 #define FLD_TABTPI_CODIVA 103

View File

@ -1,49 +1,49 @@
#include "bstbski.h" #include "bstbski.h"
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
#include <relapbar.h> #include <relapbar.h>
ENDPAGE ENDPAGE
PAGE "Conversione tabella IVA SKNET" 0 2 0 0 PAGE "Conversione tabella IVA SKNET" 0 2 0 0
STRING FLD_TABTPI_CODTAB 15 STRING FLD_TABTPI_CODTAB 15
BEGIN BEGIN
PROMPT 3 1 "Cod. IVA SKNET " PROMPT 3 1 "Cod. IVA SKNET "
FIELD CODTAB FIELD CODTAB
KEY 1 KEY 1
USE %SKI USE %SKI
FLAGS "U" FLAGS "U"
INPUT CODTAB FLD_TABTPI_CODTAB INPUT CODTAB FLD_TABTPI_CODTAB
DISPLAY "Cod. IVA SKNET@15" CODTAB DISPLAY "Cod. IVA SKNET@15" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT FLD_TABTPI_CODTAB CODTAB OUTPUT FLD_TABTPI_CODTAB CODTAB
OUTPUT FLD_TABTPI_DESCR S0 OUTPUT FLD_TABTPI_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING FLD_TABTPI_DESCR 50 STRING FLD_TABTPI_DESCR 50
BEGIN BEGIN
PROMPT 3 2 "Descrizione " PROMPT 3 2 "Descrizione "
USE %TPI USE %TPI
KEY 2 KEY 2
FIELD S0 FIELD S0
END END
STRING FLD_TABTPI_CODIVA 4 STRING FLD_TABTPI_CODIVA 4
BEGIN BEGIN
PROMPT 3 3 "Cod. corrispondente " PROMPT 3 3 "Cod. corrispondente "
HELP "Codice IVA" HELP "Codice IVA"
FIELD S6 FIELD S6
FLAGS "U" FLAGS "U"
USE %IVA KEY 1 USE %IVA KEY 1
INPUT CODTAB FLD_TABTPI_CODIVA INPUT CODTAB FLD_TABTPI_CODIVA
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Codice IVA@50" S0 DISPLAY "Codice IVA@50" S0
OUTPUT FLD_TABTPI_CODIVA CODTAB OUTPUT FLD_TABTPI_CODIVA CODTAB
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK