Aggiornam,ento Listini Bee Store

git-svn-id: svn://10.65.10.50/branches/R_10_00@23017 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2014-12-10 16:02:01 +00:00
parent 87e8c62706
commit 885f9482de
4 changed files with 352 additions and 125 deletions

View File

@ -1,10 +1,47 @@
#include <applicat.h> #include <confapp.h>
#include <automask.h>
#include <sheet.h>
#include "bs0.h" #include "bs0.h"
#include <confapp.h> class TParametri_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TParametri_mask(const char* n) : TAutomask(n) {}
};
bool TParametri_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
if (e == fe_button && o.is_edit())
{
TConfig odbc("c:/windows/odbc.ini", "ODBC 32 bit Data Sources");
TAssoc_array& var = odbc.list_variables();
if (!var.empty())
{
TArray_sheet dsn(-1, -1, 78, 20, TR("Sorgenti dati ODBC"), HR("Nome@25|Driver@50"));
TToken_string row;
FOR_EACH_ASSOC_OBJECT(var, obj, key, itm)
{
row = key;
row.add(*(TString*)itm);
dsn.add(row);
}
if (dsn.run() == K_ENTER)
o.set(dsn.row(-1).get(0));
}
}
return true;
}
class TParametri_ditta : public TConfig_application class TParametri_ditta : public TConfig_application
{ {
protected:
virtual TMask* create_mask(const TFilename& fname);
public: public:
virtual bool check_autorization() const { return false; } virtual bool check_autorization() const { return false; }
virtual const char* get_mask_name() const { return "bs0100a"; } virtual const char* get_mask_name() const { return "bs0100a"; }
@ -12,6 +49,11 @@ public:
TParametri_ditta() : TConfig_application(CONFIG_DITTA) {} TParametri_ditta() : TConfig_application(CONFIG_DITTA) {}
}; };
TMask* TParametri_ditta::create_mask(const TFilename& fname)
{
return new TParametri_mask(fname);
}
int bs0100(int argc, char* argv[]) int bs0100(int argc, char* argv[])
{ {
TParametri_ditta appc; TParametri_ditta appc;

View File

@ -1,10 +1,10 @@
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
#include <stdbar.h> #include <stdbar.h>
ENDPAGE ENDPAGE
PAGE "Parametri Bee Store" 0 2 0 0 PAGE "Parametri Bee Store" 0 2 0 0
GROUPBOX DLG_NULL 78 3 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
PROMPT 1 1 "@bODBC" PROMPT 1 1 "@bODBC"
END END
@ -12,10 +12,16 @@ END
STRING 101 50 STRING 101 50
BEGIN BEGIN
PROMPT 2 2 "Data Source Name (DSN) " PROMPT 2 2 "Data Source Name (DSN) "
FLAGS "B"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD DSN FIELD DSN
END END
STRING 102 260 50
BEGIN
PROMPT 2 3 "File di log errori SQL "
FIELD Log
END
ENDPAGE ENDPAGE

View File

@ -1,13 +1,16 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <config.h>
#include <ODBCrset.h> #include <ODBCrset.h>
#include <progind.h> #include <progind.h>
#include <reputils.h> #include <reputils.h>
#include <../ve/velib.h> #include "../mg/mglib.h"
#include "bs0.h" #include "bs0.h"
#include "../ve/condv.h"
#include "../ve/rcondv.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// TBeeStore_mask // TBeeStore_mask
@ -22,20 +25,22 @@ public:
void autoload(); void autoload();
void autosave() const; void autosave() const;
bool get_bool(const char* fld) { TMask_field* f = find_by_fieldname(fld); return f ? f->get().full() : false; } bool get_bool(const char* fld)
TDate get_date(const char* fld) { TMask_field* f = find_by_fieldname(fld); return TDate(f ? f->get() : EMPTY_STRING); } { TMask_field* f = find_by_fieldname(fld); return f ? f->get().full() : false; }
TDate get_date(const char* fld)
{ TMask_field* f = find_by_fieldname(fld); return TDate(f ? f->get() : EMPTY_STRING); }
TBeeStore_mask() : TAutomask("bs0200a") { autoload(); } TBeeStore_mask() : TAutomask("bs0200a") { autoload(); }
~TBeeStore_mask() { autosave(); } ~TBeeStore_mask() { autosave(); }
}; };
bool TBeeStore_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TBeeStore_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{ { return true; }
return true;
}
void TBeeStore_mask::autoload() void TBeeStore_mask::autoload()
{ {
// Carica i valori default dei parametri dal [bs] in ditta,ini
FOR_EACH_MASK_FIELD(*this, i, f) FOR_EACH_MASK_FIELD(*this, i, f)
{ {
const TFieldref* fr = f->field(); const TFieldref* fr = f->field();
@ -46,12 +51,13 @@ void TBeeStore_mask::autoload()
void TBeeStore_mask::autosave() const void TBeeStore_mask::autosave() const
{ {
FOR_EACH_MASK_FIELD(*this, i, f) // Salva i valori dei parametri in [bs] in ditta,ini
{ FOR_EACH_MASK_FIELD(*this, i, f)
const TFieldref* fr = f->field(); {
if (fr != NULL) const TFieldref* fr = f->field();
ini_set_string(CONFIG_DITTA, "bs", fr->name(), f->get()); if (fr != NULL)
} ini_set_string(CONFIG_DITTA, "bs", fr->name(), f->get());
}
} }
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -61,48 +67,76 @@ void TBeeStore_mask::autosave() const
class TBeeStore_sync : public TSkeleton_application class TBeeStore_sync : public TSkeleton_application
{ {
TString16 _dsn; TString16 _dsn;
TFilename _sqlog;
TLog_report* _log; TLog_report* _log;
protected: protected:
bool save_doc(TDocumento* doc) const; bool save_and_delete_doc(TMov_mag*& doc) const;
void load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs); void load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs);
void save_origine_2(TISAM_recordset& in_set, const char* out_table, const TString_array& pairs); void save_origine_2(TISAM_recordset& in_set, const char* out_table, const TString_array& pairs);
void sync_table(TISAM_recordset& in_set, const char* out_table, const TString_array& pairs); void sync_table(TISAM_recordset& in_set, const char* out_table,
void sync_table(const char* in_table, const char* out_table, const TString_array& fields, const TDate& dal); const TString_array& pairs);
void sync_table(const int logicnum, const char* out_table, const TString_array& fields, const TDate& dal); void sync_table(const char* in_table, const char* out_table,
const TString_array& fields, const TDate& dal, const TDate& al);
void sync_iva(const TDate& dal); void sync_table(const int logicnum, const char* out_table,
void sync_ums(const TDate& dal); const TString_array& fields, const TDate& dal, const TDate& al);
void sync_lines(const TDate& dal);
void sync_catmer(const TDate& dal);
void sync_anamag(const TDate& dal);
void sync_scontrini(const TDate& dal);
void sync_iva (const TDate& dal, const TDate& al);
void sync_ums (const TDate& dal, const TDate& al);
void sync_lines (const TDate& dal, const TDate& al);
void sync_catmer (const TDate& dal, const TDate& al);
void sync_val (const TDate& dal, const TDate& al);
void sync_anamag (const TDate& dal, const TDate& al);
void sync_scontrini(const TDate& dal, const TDate& al);
void sync_listino (const TString& listino);
public: public:
virtual bool create();
virtual void main_loop(); virtual void main_loop();
}; };
// Converte una TDate in una data SQL
const TString& date2sql(const TDate& d) const TString& date2sql(const TDate& d)
{ {
TString& tmp = get_tmp_string(); TString& tmp = get_tmp_string();
tmp.format("DATEFROMPARTS(%d,%d,%d)", d.year(), d.month(), d.day()); if (d.ok())
tmp.format("'%02d-%02d-%04d'", d.day(), d.month(), d.year());
else
tmp = "NULL";
return tmp; return tmp;
} }
// Coverte un qualsiasi TVariant in stringa SQL
const TString& var2sql(const TVariant& var) const TString& var2sql(const TVariant& var)
{ {
TString& tmp = get_tmp_string(); TString& tmp = get_tmp_string();
switch (var.type()) switch (var.type())
{ {
case _nullfld:
tmp = "NULL";
break;
case _boolfld: case _boolfld:
tmp = var.as_bool() ? "1" : "0"; tmp = var.as_bool() ? "1" : "0";
break; break;
case _datefld: case _datefld:
tmp = date2sql(var.as_date()); tmp = date2sql(var.as_date());
break; break;
case _intfld:
case _longfld:
var.as_string(tmp);
break;
case _realfld:
if (var.is_empty())
tmp = "0";
else
{
tmp = var.as_real().string(0, 2);
if (tmp.ends_with(".00"))
tmp.rtrim(3);
}
break;
default: default:
{ {
var.as_string(tmp); var.as_string(tmp);
@ -124,8 +158,11 @@ const TString& var2sql(const TVariant& var)
void TBeeStore_sync::load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs) void TBeeStore_sync::load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs)
{ {
TString str(255); TString str(255);
str << "ODBC(" << _dsn << ")\n" str << "ODBC(" << _dsn << ")\nSELECT ";
<< "SELECT * FROM " << in_table << " WHERE Origine=1;"; FOR_EACH_ARRAY_ROW(pairs, f, row)
str << row->get(0) << ',';
str.rtrim(1); // toglie ultima virgola
str << "\nFROM " << in_table << " WHERE Origine=1;";
TODBC_recordset odbc(str); TODBC_recordset odbc(str);
const TRecnotype n = odbc.items(); const TRecnotype n = odbc.items();
if (n > 0) if (n > 0)
@ -282,6 +319,26 @@ void TBeeStore_sync::save_origine_2(TISAM_recordset& in_set, const char* out_tab
str << '\n'; str << '\n';
} }
const TFixed_string cfld = irow->get(1); const TFixed_string cfld = irow->get(1);
if (cfld.find("SCONTO")>=0)
{
real sconto;
const TString& exp = in_set.get(cfld).as_string();
if (exp.full())
{
if (real::is_natural(exp))
sconto = real(exp);
else
{
TString80 goodexp; real val_perc;
if (scontoexpr2perc(exp, false, goodexp, val_perc) && val_perc != UNO)
{
sconto = CENTO - CENTO*val_perc;
sconto.round(5);
}
}
}
str << var2sql(sconto);
} else
if (cfld[0] >= 'A' && cfld[0] <= 'Z') if (cfld[0] >= 'A' && cfld[0] <= 'Z')
{ {
const TVariant& var = in_set.get(cfld); const TVariant& var = in_set.get(cfld);
@ -314,29 +371,44 @@ void TBeeStore_sync::sync_table(TISAM_recordset& in_set, const char* out_table,
save_origine_2(in_set, out_table, fields); save_origine_2(in_set, out_table, fields);
} }
void TBeeStore_sync::sync_table(const char* table, const char* out_table, const TString_array& fields, const TDate& dal) TString& append_select_range(TString& q, const TDate& dal, const TDate& al)
{
q << "\nSELECT (UTENTE!=\"BEESTORE\")";
if (dal.ok() || al.ok())
{
q << "&&(BETWEEN(DATAAGG,"
<< dal.date2ansi() << ',' << al.date2ansi() << "))";
}
return q;
}
void TBeeStore_sync::sync_table(const char* table, const char* out_table,
const TString_array& fields, const TDate& dal, const TDate& al)
{ {
TString q; TString q;
q << "USE " << table << " SELECT BETWEEN(DATAAGG,"<< dal.date2ansi() << ",0)"; q << "USE " << table;
append_select_range(q, dal, al);
TISAM_recordset set(q); TISAM_recordset set(q);
sync_table(set, out_table, fields); sync_table(set, out_table, fields);
} }
void TBeeStore_sync::sync_table(const int logicnum, const char* out_table, const TString_array& fields, const TDate& dal) void TBeeStore_sync::sync_table(const int logicnum, const char* out_table,
const TString_array& fields, const TDate& dal, const TDate& al)
{ {
TString4 q; q << logicnum; TString4 q; q << logicnum;
sync_table(q, out_table, fields, dal); sync_table(q, out_table, fields, dal, al);
} }
void TBeeStore_sync::sync_ums(const TDate& dal) void TBeeStore_sync::sync_ums(const TDate& dal, const TDate& al)
{ {
TString_array fields; TString_array fields;
fields.add("CodUntMis|CODTAB"); fields.add("CodUntMis|CODTAB");
fields.add("DSUntMis|S0"); fields.add("DSUntMis|S0");
sync_table("%UMS", "tieUntMisura", fields, dal); sync_table("%UMS", "tieUntMisura", fields, dal, al);
} }
void TBeeStore_sync::sync_iva(const TDate& dal) void TBeeStore_sync::sync_iva(const TDate& dal, const TDate& al)
{ {
TString_array fields; TString_array fields;
fields.add("CodIva|CODTAB"); fields.add("CodIva|CODTAB");
@ -344,35 +416,35 @@ void TBeeStore_sync::sync_iva(const TDate& dal)
fields.add("DSIva|S0"); fields.add("DSIva|S0");
fields.add("Aliquota|R0"); fields.add("Aliquota|R0");
sync_table("%IVA", "tieIva", fields, dal); sync_table("%IVA", "tieIva", fields, dal, al);
} }
void TBeeStore_sync::sync_lines(const TDate& dal) void TBeeStore_sync::sync_lines(const TDate& dal, const TDate& al)
{ {
TString_array fields; TString_array fields;
fields.add("CodLinea|CODTAB"); fields.add("CodLinea|CODTAB");
fields.add("DSLinea|S0"); fields.add("DSLinea|S0");
TString query; TString query;
query << "USE GMC SELECT (CODTAB?='???')"; query << "USE GMC";
if (dal.ok()) append_select_range(query, dal, al);
query << "&&(BETWEEN(DATAAGG,"<< dal.date2ansi() << ",0))"; query << "&&(CODTAB?='???')";
TISAM_recordset lin(query); TISAM_recordset lin(query);
sync_table(lin, "tieLineeArt", fields); sync_table(lin, "tieLineeArt", fields);
} }
void TBeeStore_sync::sync_catmer(const TDate& dal) void TBeeStore_sync::sync_catmer(const TDate& dal, const TDate& al)
{ {
TString_array fields; TString_array fields;
fields.add("CodCategoriaMerceologica|CODTAB"); fields.add("CodCategoriaMerceologica|CODTAB");
fields.add("DSCategoriaMerceologica|S0"); fields.add("DSCategoriaMerceologica|S0");
fields.add("CodTipoEtichetta|''"); fields.add("CodTipoEtichetta|''");
sync_table("GMC", "tieCategorieMerceologiche", fields, dal); sync_table("GMC", "tieCategorieMerceologiche", fields, dal, al);
} }
void TBeeStore_sync::sync_anamag(const TDate& dal) void TBeeStore_sync::sync_anamag(const TDate& dal, const TDate& al)
{ {
TString_array fields; TString_array fields;
fields.add("CodPadre|"ANAMAG_CODART); fields.add("CodPadre|"ANAMAG_CODART);
@ -385,114 +457,209 @@ void TBeeStore_sync::sync_anamag(const TDate& dal)
fields.add("Bloccato|"ANAMAG_SOSPESO); fields.add("Bloccato|"ANAMAG_SOSPESO);
TString query; TString query;
query << "USE 47\nJOIN 49 INTO CODART==CODART"; query << "USE " << LF_ANAMAG;
if (dal.ok()) append_select_range(query, dal, al);
query << "\nSELECT BETWEEN(DATAAGG,"<< dal.date2ansi() << ",0)"; query << "\nJOIN " << LF_UMART << " INTO CODART==CODART";
TISAM_recordset art(query); TISAM_recordset art(query);
sync_table(art, "tieArticoli", fields); sync_table(art, "tieArticoli", fields);
fields.destroy();
fields.add("CodArticolo|"ANAMAG_CODART);
fields.add("CodPadre|"ANAMAG_CODART);
save_origine_2(art, "tieArtVarianti", fields);
} }
bool TBeeStore_sync::save_doc(TDocumento* doc) const bool TBeeStore_sync::save_and_delete_doc(TMov_mag*& doc) const
{ {
if (doc != NULL && doc->rows() > 0) int err = 0;
if (doc != NULL)
{ {
const int err = doc->write(); if (doc->rows() > 0)
if (err != NOERR) {
{ TLocalisamfile mm(LF_MOVMAG);
TString msg; err = doc->write(mm);
msg.format(FR("Errore %d in registrazione scontrino %s/%d del %s"), err, if (err != NOERR)
(const char*)doc->get(DOC_CODNUM), doc->get_long(DOC_NDOC), {
(const char*)doc->get(DOC_DATADOC)); TString msg;
_log->log(2, msg); msg.format(FR("Errore %d in registrazione scontrino %ld del %s"), err,
msg << TR("\nSi desidera proseguire ugualmente?"); doc->get_long(MOVMAG_NUMREG), (const char*)doc->get(MOVMAG_DATAREG));
if (!noyes_box(msg)) _log->log(2, msg);
return false; msg << TR("\nSi desidera proseguire ugualmente?");
if (noyes_box(msg))
err = 0;
}
} }
delete doc;
doc = NULL;
} }
return true; return err == 0;
} }
void TBeeStore_sync::sync_scontrini(const TDate& dal) void TBeeStore_sync::sync_val(const TDate& dal, const TDate& al)
{ {
const TString4 codnum = ini_get_string(CONFIG_DITTA, "bs", DOC_CODNUM); TString_array fields;
const TString4 tipodoc = ini_get_string(CONFIG_DITTA, "bs", DOC_TIPODOC); fields.add("CodValuta|CODTAB");
if (codnum.blank() || tipodoc.blank()) fields.add("DSValuta|S0");
fields.add("Simbolo|CODTAB");
sync_table("%VAL", "tieValute", fields, dal, al);
}
void TBeeStore_sync::sync_listino(const TString& listino)
{
TString str(255);
str << "ODBC(" << _dsn << ")\n";
TODBC_recordset prz(str);
str = "DELETE FROM tiePrzVendita WHERE Origine=1";
prz.exec(str);
str.cut(0) << "USE " << LF_RCONDV
<< "\nFROM TIPO=L TIPORIGA=A COD=" << listino
<< "\nTO TIPO=L TIPORIGA=A COD=" << listino;
TISAM_recordset lis(str);
if (lis.move_first())
{ {
_log->log(2, "Configurare numerazione e tipo documento per movimenti Bee Store"); TString16 eur; eur << "CodValuta|'" << TCurrency::get_euro_val() << "'";
TString16 key; key << "L||||" << listino;
const TRectype& condv = cache().get(LF_CONDV, key);
TDate dt_inizio = condv.get(CONDV_VALIN);
if (!dt_inizio.ok()) dt_inizio = TDate(1,1,2000);
TDate dt_fine = condv.get(CONDV_VALFIN);
if (dt_fine < dt_inizio) dt_fine = TDate(31,12,2100);
TString descr; descr << "DSListino|'" << condv.get(CONDV_DESCR) << '\'';
TString dtini; dtini << "DTInizio|'" << dt_inizio.string() << '\'';
TString dtfin; dtfin << "DTFine|'" << dt_fine.string() << '\'';
TString_array fields;
fields.add("Cod_PK|"RCONDV_CODRIGA);
fields.add("CodPadre|"RCONDV_CODRIGA);
//fields.add("CodArticolo|"RCONDV_CODRIGA); // NON metterlo!
fields.add("TipoPrezzo|'1'"); // 1=Listino
fields.add(eur);
fields.add("Prezzo|"RCONDV_PREZZO);
fields.add("Prezzo2|0");
fields.add("Sconto|"RCONDV_SCONTO);
if (real::is_natural(listino))
fields.add("NumListino|"RCONDV_COD);
fields.add(descr);
fields.add(dtini);
fields.add(dtfin);
save_origine_2(lis, "tiePrzVendita", fields);
}
}
void TBeeStore_sync::sync_scontrini(const TDate& dal, const TDate& al)
{
const TString8 codcaus = ini_get_string(CONFIG_DITTA, "bs", MOVMAG_CODCAUS);
if (codcaus.blank())
{
_log->log(2, "Configurare parametri per movimenti Bee Store");
return; return;
} }
TString str(255); TString str(255);
str << "ODBC(" << _dsn << ")\n"; str << "ODBC(" << _dsn << ")\n";
str << "SELECT * FROM tieDMovMag WHERE Origine=1"; str << "SELECT * FROM tieDMovMag WHERE Origine=1";
if (dal.ok()) if (dal.ok() || al.ok())
str << " AND DataMov>=" << date2sql(dal); {
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"; str << "\nORDER BY NumMov,NumRiga";
TODBC_recordset mov(str); TODBC_recordset mov(str);
TProgress_monitor pi(mov.items(), str); TProgress_monitor pi(mov.items(), str);
TString num_mov; TString num_mov;
TDocumento* doc = NULL; TMov_mag* doc = NULL;
for (bool ok = mov.move_first(); ok; ok = mov.move_next()) for (bool ok = mov.move_first(); ok; ok = mov.move_next())
{ {
const TString80 nm = mov.get("NumMov").as_string(); const TString80 nm = mov.get("NumMov").as_string();
if (nm != num_mov) if (nm != num_mov)
{ {
if (!save_doc(doc)) if (!save_and_delete_doc(doc))
break; break;
delete doc;
num_mov = nm; num_mov = nm;
const TDate datadoc = mov.get("DataMov").as_date(); const TDate datadoc = mov.get("DataMov").as_date();
doc = new TDocumento('D', datadoc.year(), codnum, 0L); doc = new TMov_mag;
doc->put(DOC_TIPODOC, tipodoc); doc->put(MOVMAG_CODCAUS, codcaus);
doc->put(DOC_DATADOC, datadoc); doc->put(MOVMAG_DATAREG, datadoc);
const TString& codval = mov.get("CodValuta").as_string();
if (is_true_value(codval))
{
doc->put(DOC_CODVAL, codval);
doc->put(DOC_CAMBIO, mov.get("CambioValuta").as_string());
}
} }
TRiga_documento& rdoc = doc->new_row("01"); TRectype& rdoc = doc->new_row();
rdoc.put(RDOC_CODART, mov.get("CodArticolo").as_string()); rdoc.put(RMOVMAG_CODART, mov.get("CodArticolo").as_string());
rdoc.put(RDOC_CODARTMAG, mov.get("CodArticolo").as_string()); rdoc.put(RMOVMAG_UM, mov.get("CodUntMis").as_string());
rdoc.put(RDOC_CHECKED, true); rdoc.put(RMOVMAG_PREZZO, mov.get("PrzCassaValuta").as_real());
rdoc.put(RDOC_UMQTA, mov.get("CodUntMis").as_string());
rdoc.put(RDOC_PREZZO, mov.get("PrzCassaValuta").as_real());
} }
save_and_delete_doc(doc); // Salva ultimo documento in sospeso
}
save_doc(doc); bool TBeeStore_sync::create()
{
_dsn = ini_get_string(CONFIG_DITTA, "bs", "DSN", "BEESTORE");
_sqlog = ini_get_string(CONFIG_DITTA, "bs", "Log", "");
if (_dsn.full())
{
TTimerind ti(10, TR("Connessione a SQL Server"), false, false);
ti.force_update();
TString query; query << "ODBC(" << _dsn << ")\nSELECT * FROM tieValute;";
TODBC_recordset recset(query);
recset.move_first();
if (_sqlog.full() && _sqlog.is_relative_path())
{
TFilename n; n.tempdir();
n.add(_sqlog.name());
_sqlog = n;
}
recset.set_log_file(_sqlog);
return TSkeleton_application::create();
}
return error_box(FR("Impossibile connettersi al DSN '%s'"), (const char*)_dsn);
} }
void TBeeStore_sync::main_loop() void TBeeStore_sync::main_loop()
{ {
TBeeStore_mask mask; TBeeStore_mask mask;
_dsn = ini_get_string(CONFIG_DITTA, "bs", "DSN", "BEESTORE");
while (mask.run() == K_ENTER) while (mask.run() == K_ENTER)
{ {
mask.autosave(); // Rende definitivi tutti i paramentri in [bs] mask.autosave(); // Rende definitivi tutti i paramentri in [bs]
_log = new TLog_report; _log = new TLog_report;
const TDate dal = mask.get_date("SyncDate"); const TDate dal = mask.get_date("SyncDateFrom");
const TDate al = mask.get_date("SyncDateTo");
if (mask.get_bool("SyncUMS")) if (mask.get_bool("SyncUMS"))
sync_ums(dal); sync_ums(dal, al);
if (mask.get_bool("SyncIVA")) if (mask.get_bool("SyncIVA"))
sync_iva(dal); sync_iva(dal, al);
if (mask.get_bool("SyncLinee")) if (mask.get_bool("SyncLinee"))
sync_lines(dal); sync_lines(dal, al);
if (mask.get_bool("SyncCatMer")) if (mask.get_bool("SyncCatMer"))
sync_catmer(dal); sync_catmer(dal, al);
if (mask.get_bool("SyncAnamag")) if (mask.get_bool("SyncAnamag"))
sync_anamag(dal); sync_anamag(dal, al);
if (mask.get_bool("SyncVAL"))
sync_val(dal, al);
if (mask.get("SyncListino").full())
sync_listino(mask.get("SyncListino"));
if (mask.get_bool("SyncSontr")) if (mask.get_bool("SyncSontr"))
sync_scontrini(dal); sync_scontrini(dal, al);
_log->preview(); _log->preview();
delete _log; delete _log;

View File

@ -29,7 +29,7 @@ END
BOOLEAN 106 BOOLEAN 106
BEGIN BEGIN
PROMPT 2 5 "Categorie Merceol." PROMPT 2 5 "Categorie Merceologiche"
FIELD SyncCatMer FIELD SyncCatMer
END END
@ -39,12 +39,36 @@ BEGIN
FIELD SyncAnamag FIELD SyncAnamag
END END
BOOLEAN 148 STRING 148 3
BEGIN
PROMPT 40 6 "Listino "
USE LF_CONDV
INPUT TIPO "L"
INPUT CATVEN ""
INPUT TIPOCF ""
INPUT CODCF ""
INPUT COD 148
DISPLAY "Codice" COD
DISPLAY "Descrizione@50" DESCR
DISPLAY "Valuta@5" CODVAL
DISPLAY "Inizio@10" VALIN
DISPLAY "Fine@10" VALFIN
OUTPUT 148 COD
FIELD SyncListino
END
BOOLEAN 149
BEGIN BEGIN
PROMPT 2 7 "Scontrini " PROMPT 2 7 "Scontrini "
FIELD SyncScontr FIELD SyncScontr
END END
BOOLEAN 151
BEGIN
PROMPT 40 2 "Valute"
FIELD SyncVAL
END
GROUPBOX DLG_NULL 78 8 GROUPBOX DLG_NULL 78 8
BEGIN BEGIN
PROMPT 1 10 "@bFiltri" PROMPT 1 10 "@bFiltri"
@ -53,7 +77,13 @@ END
DATE 100 DATE 100
BEGIN BEGIN
PROMPT 2 11 "Dalla data di modifica " PROMPT 2 11 "Dalla data di modifica "
FIELD SyncDate FIELD SyncDateFrom
END
DATE 101
BEGIN
PROMPT 42 11 " al "
FIELD SyncDateTo
END END
ENDPAGE ENDPAGE
@ -67,15 +97,15 @@ END
STRING 201 4 STRING 201 4
BEGIN BEGIN
PROMPT 2 2 "Codice numerazione " PROMPT 2 2 "Causale magazzino "
USE %NUM USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
INPUT CODTAB 201 INPUT CODTAB 201
DISPLAY "Codice" CODTAB DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT 201 CODTAB OUTPUT 201 CODTAB
OUTPUT 202 S0 OUTPUT 202 S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD CODNUM FIELD CODCAUS
END END
STRING 202 50 46 STRING 202 50 46
@ -84,24 +114,6 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
STRING 203 4
BEGIN
PROMPT 2 3 "Tipo documento "
USE %TIP
INPUT CODTAB 203
COPY DISPLAY 201
OUTPUT 203 CODTAB
OUTPUT 204 S0
CHECKTYPE REQUIRED
FIELD TIPODOC
END
STRING 204 50 46
BEGIN
PROMPT 30 3 ""
FLAGS "D"
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK