Patch level : 12.0
Files correlati : bs Commento : - Sistemato aggiunta nuovo programma - Creata libreria di utility con funzioni in comune - Cambiato metodo di pulizia db git-svn-id: svn://10.65.10.50/branches/R_10_00@24423 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ab06e0881b
commit
1f7d97acc6
@ -6,8 +6,9 @@ int main(int argc, char** argv)
|
||||
const int p = argc > 1 ? argv[1][1]-'0' : 0;
|
||||
switch(p)
|
||||
{
|
||||
case 1: bs0200(argc, argv); break;
|
||||
default: bs0100(argc, argv); break;
|
||||
case 1: bs0200(argc, argv); break; // Impostazioni Beestore
|
||||
case 2: bs0300(argc, argv); break; // Importazione da SKNET
|
||||
default: bs0100(argc, argv); break; // Beestore Synchronizer
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,3 +1,3 @@
|
||||
int bs0200(int argc, char* argv[]);
|
||||
int bs0100(int argc, char* argv[]);
|
||||
|
||||
int bs0200(int argc, char* argv[]);
|
||||
int bs0300(int argc, char* argv[]);
|
||||
|
@ -25,6 +25,8 @@
|
||||
#include <cfven.h>
|
||||
#include <rcausali.h>
|
||||
|
||||
#include "bsutility.h"
|
||||
|
||||
#define BS_DTULTAGG "DtUltAgg"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -196,94 +198,6 @@ public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
// Converte una TDate in una data SQL
|
||||
const TString& date2sql(const TDate& d)
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
if (d.ok())
|
||||
tmp.format("'%04d-%02d-%02d'", d.year(), d.month(), d.day());
|
||||
else
|
||||
tmp = "NULL";
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// Coverte un qualsiasi TVariant in stringa SQL
|
||||
const TString& var2sql(const TVariant& var)
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
switch (var.type())
|
||||
{
|
||||
case _nullfld:
|
||||
tmp = "NULL";
|
||||
break;
|
||||
case _boolfld:
|
||||
tmp = var.as_bool() ? "1" : "0";
|
||||
break;
|
||||
case _datefld:
|
||||
tmp = date2sql(var.as_date());
|
||||
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:
|
||||
{
|
||||
var.as_string(tmp);
|
||||
const int pos = tmp.find('\'');
|
||||
if (pos >= 0)
|
||||
{
|
||||
for (int i = tmp.len()-1; i >= pos; i--)
|
||||
if (tmp[i] == '\'') tmp.insert("'", i);
|
||||
}
|
||||
tmp.insert("'");
|
||||
tmp << "'";
|
||||
}
|
||||
break;
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// Coverte una qualsiasi espressione in stringa SQL
|
||||
const TString& expr2sql(const TISAM_recordset& set, const char* expr)
|
||||
{
|
||||
TVariant var;
|
||||
TExpression e(expr, _strexpr, true);
|
||||
if (e.numvar() == 0)
|
||||
{
|
||||
if (real::is_natural(expr))
|
||||
var = atoi(expr);
|
||||
else
|
||||
var = expr;
|
||||
} else
|
||||
if (e.numvar() == 1 && xvt_str_same(e.varname(0), expr))
|
||||
{
|
||||
var = set.get(expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int v = e.numvar()-1; v >= 0; v--)
|
||||
{
|
||||
var = set.get(e.varname(v));
|
||||
if (var.is_real() || var.is_bool())
|
||||
e.setvar(v, var.as_real());
|
||||
else
|
||||
e.setvar(v, var.as_string());
|
||||
}
|
||||
var = e.as_string();
|
||||
}
|
||||
return var2sql(var);
|
||||
}
|
||||
|
||||
// Carica da BeeStore i record con Origine=1, cioè generati da lui ed eventualmente aggiorna i corrispondenti in Campo
|
||||
void TBeeStore_sync::load_origine_1(TISAM_recordset& out_set, const char* in_table, const TString_array& pairs)
|
||||
{
|
||||
@ -444,7 +358,7 @@ void TBeeStore_sync::save_origine_2(TISAM_recordset& in_set, const char* out_tab
|
||||
str.cut(0) << "INSERT INTO " << out_table << "\n(";
|
||||
FOR_EACH_ARRAY_ROW(fields, sr, srow)
|
||||
str << (sr ? ", " : "") << srow->get(0);
|
||||
str << ", Origine, Errore, "BS_DTULTAGG;
|
||||
str << ", Origine, Errore, " BS_DTULTAGG;
|
||||
str << ")\nVALUES (";
|
||||
|
||||
FOR_EACH_ARRAY_ROW(fields, ir, irow)
|
||||
@ -625,14 +539,14 @@ void TBeeStore_sync::sync_catmer(const TDate& dal, const TDate& al)
|
||||
void TBeeStore_sync::sync_anamag(const TDate& dal, const TDate& al)
|
||||
{
|
||||
TString_array fields;
|
||||
fields.add("CodPadre|"ANAMAG_CODART);
|
||||
fields.add("DSArticolo|"ANAMAG_DESCR);
|
||||
fields.add("DSArticoloAgg|"ANAMAG_DESCRAGG"[1,70]");
|
||||
fields.add("CodPadre|" ANAMAG_CODART);
|
||||
fields.add("DSArticolo|" ANAMAG_DESCR);
|
||||
fields.add("DSArticoloAgg|" ANAMAG_DESCRAGG"[1,70]");
|
||||
fields.add("CodUntMagazzino|49->UM");
|
||||
fields.add("CodIva|"ANAMAG_CODIVA);
|
||||
fields.add("CodLinea|"ANAMAG_GRMERC"[1,3]");
|
||||
fields.add("CodCategMerceologica|"ANAMAG_GRMERC);
|
||||
fields.add("Bloccato|"ANAMAG_SOSPESO);
|
||||
fields.add("CodIva|" ANAMAG_CODIVA);
|
||||
fields.add("CodLinea|" ANAMAG_GRMERC"[1,3]");
|
||||
fields.add("CodCategMerceologica|" ANAMAG_GRMERC);
|
||||
fields.add("Bloccato|" ANAMAG_SOSPESO);
|
||||
|
||||
TString query = build_query(LF_ANAMAG, dal, al);
|
||||
query << "\nJOIN " << LF_UMART << " INTO CODART==CODART";
|
||||
@ -641,16 +555,16 @@ void TBeeStore_sync::sync_anamag(const TDate& dal, const TDate& al)
|
||||
sync_table(art, "tieArticoli", fields);
|
||||
|
||||
fields.destroy();
|
||||
fields.add("CodArticolo|"ANAMAG_CODART);
|
||||
fields.add("CodPadre|"ANAMAG_CODART);
|
||||
fields.add("CodArticolo|" ANAMAG_CODART);
|
||||
fields.add("CodPadre|" ANAMAG_CODART);
|
||||
save_origine_2(art, "tieArtVarianti", fields);
|
||||
}
|
||||
|
||||
void TBeeStore_sync::sync_barcode(const TDate& dal, const TDate& al)
|
||||
{
|
||||
TString_array fields;
|
||||
fields.add("CodArticolo|"ANAMAG_CODART);
|
||||
fields.add("BarCode|"ANAMAG_DESCR);
|
||||
fields.add("CodArticolo|" ANAMAG_CODART);
|
||||
fields.add("BarCode|" ANAMAG_DESCR);
|
||||
|
||||
TString str(255);
|
||||
str << "SELECT ";
|
||||
@ -794,7 +708,7 @@ void TBeeStore_sync::sync_barcode(const TDate& dal, const TDate& al)
|
||||
var = a.fisica() ? 1 : 2;
|
||||
return true;
|
||||
}
|
||||
if (xvt_str_same(fldname, "Cliente"))
|
||||
if (xvt_str_same(fldname, " CLIente"))
|
||||
{
|
||||
const char tipocf = rec.get(CLI_TIPOCF).as_string()[0];
|
||||
var = tipocf == 'C';
|
||||
@ -806,7 +720,7 @@ void TBeeStore_sync::sync_barcode(const TDate& dal, const TDate& al)
|
||||
var = tipocf == 'F';
|
||||
return true;
|
||||
}
|
||||
if (_strnicmp(fldname,"Cli_",4) == 0)
|
||||
if (_strnicmp(fldname," CLI_",4) == 0)
|
||||
{
|
||||
const char tipocf = rec.get(CLI_TIPOCF).as_string()[0];
|
||||
return tipocf != 'C';
|
||||
@ -862,7 +776,7 @@ void TBeeStore_sync::load_clifo(char tipocf)
|
||||
{
|
||||
TString str(255);
|
||||
str << "SELECT * FROM tieAnagCFP WHERE (Origine=1)AND";
|
||||
str << '(' << (tipocf == 'F' ? "Fornitore" : "Cliente") << "=1);";
|
||||
str << '(' << (tipocf == 'F' ? "Fornitore" : " CLIente") << "=1);";
|
||||
|
||||
TFast_isamfile clifo(LF_CLIFO);
|
||||
|
||||
@ -870,11 +784,11 @@ void TBeeStore_sync::load_clifo(char tipocf)
|
||||
odbc.connect(_dsn, _usr, _psw);
|
||||
const TRecnotype n = odbc.items();
|
||||
|
||||
str.cut(0) << TR("Importazione ") << (tipocf == 'F' ? TR("Fornitori") : TR("Clienti"));
|
||||
str.cut(0) << TR("Importazione ") << (tipocf == 'F' ? TR("Fornitori") : TR(" CLIenti"));
|
||||
TProgress_monitor pi(n, str);
|
||||
for (bool ok = odbc.move_first(); ok; ok = odbc.move_next())
|
||||
{
|
||||
long codcf = odbc.get(tipocf == 'F' ? "For_CodFor" : "Cli_CodCG").as_int();
|
||||
long codcf = odbc.get(tipocf == 'F' ? "For_CodFor" : " CLI_CodCG").as_int();
|
||||
if (codcf <= 0)
|
||||
{
|
||||
const TString& cod_pk = odbc.get("Cod_PK").as_string();
|
||||
@ -970,33 +884,33 @@ void TBeeStore_sync::load_clifo(char tipocf)
|
||||
void TBeeStore_sync::save_clifo(int cfmask, const TDate& dal, const TDate& al)
|
||||
{
|
||||
TString_array fields;
|
||||
fields.add("Cod_PK|"CLI_CODCF);
|
||||
fields.add("RagSoc|"CLI_RAGSOC);
|
||||
fields.add("Cognome|"CLI_RAGSOC);
|
||||
fields.add("Nome|"CLI_RAGSOC);
|
||||
fields.add("Indirizzo|"CLI_INDCF);
|
||||
fields.add("Citta|"CLI_COMCF);
|
||||
fields.add("Cap|"CLI_CAPCF);
|
||||
fields.add("Cod_PK|" CLI_CODCF);
|
||||
fields.add("RagSoc|" CLI_RAGSOC);
|
||||
fields.add("Cognome|" CLI_RAGSOC);
|
||||
fields.add("Nome|" CLI_RAGSOC);
|
||||
fields.add("Indirizzo|" CLI_INDCF);
|
||||
fields.add("Citta|" CLI_COMCF);
|
||||
fields.add("Cap|" CLI_CAPCF);
|
||||
fields.add("Provincia|");
|
||||
fields.add("Telefono|PTEL+TEL");
|
||||
fields.add("Cellulare|PTEL2+TEL2");
|
||||
fields.add("CellulareSMS|PTEL3+TEL3");
|
||||
fields.add("EMail|"CLI_MAIL);
|
||||
fields.add("PartitaIva|"CLI_PAIV);
|
||||
fields.add("CodFiscale|"CLI_COFI);
|
||||
fields.add("EMail|" CLI_MAIL);
|
||||
fields.add("PartitaIva|" CLI_PAIV);
|
||||
fields.add("CodFiscale|" CLI_COFI);
|
||||
fields.add("Tipo|1");
|
||||
fields.add("Sesso|"CLI_SESSO);
|
||||
fields.add("DTNascita|"CLI_DATANASC);
|
||||
fields.add("ComuneNascita|"CLI_COMNASC);
|
||||
fields.add("Sesso|" CLI_SESSO);
|
||||
fields.add("DTNascita|" CLI_DATANASC);
|
||||
fields.add("ComuneNascita|" CLI_COMNASC);
|
||||
fields.add("PVNascita|");
|
||||
fields.add("Cliente|");
|
||||
fields.add(" CLIente|");
|
||||
fields.add("Fornitore|");
|
||||
fields.add("For_CodFor|"CLI_CODCF);
|
||||
fields.add("For_Blocco|"CLI_SOSPESO);
|
||||
fields.add("Cli_CodCG|"CLI_CODCF);
|
||||
fields.add("Cli_Blocco|"CLI_SOSPESO);
|
||||
fields.add("For_CodFor|" CLI_CODCF);
|
||||
fields.add("For_Blocco|" CLI_SOSPESO);
|
||||
fields.add(" CLI_CodCG|" CLI_CODCF);
|
||||
fields.add(" CLI_Blocco|" CLI_SOSPESO);
|
||||
fields.add("MagInserAnagrafica|1");
|
||||
fields.add("CodStato|"CLI_STATOCF);
|
||||
fields.add("CodStato|" CLI_STATOCF);
|
||||
fields.add("Annullato|0");
|
||||
|
||||
TString query = build_query(LF_CLIFO, dal, al);
|
||||
@ -1115,16 +1029,16 @@ void TBeeStore_sync::sync_listino(const TString& listino)
|
||||
TString dtfin; dtfin << "DTFine|'" << dt_fine.string() << '\'';
|
||||
|
||||
TString_array fields;
|
||||
fields.add("Cod_PK|"RCONDV_CODRIGA);
|
||||
fields.add("CodPadre|"RCONDV_CODRIGA);
|
||||
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("Prezzo|" RCONDV_PREZZO);
|
||||
fields.add("Prezzo2|0");
|
||||
fields.add("Sconto|"RCONDV_SCONTO);
|
||||
fields.add("Sconto|" RCONDV_SCONTO);
|
||||
if (real::is_natural(listino))
|
||||
fields.add("NumListino|"RCONDV_COD);
|
||||
fields.add("NumListino|" RCONDV_COD);
|
||||
fields.add(descr);
|
||||
fields.add(dtini);
|
||||
fields.add(dtfin);
|
||||
|
1126
src/bs/bs0300.cpp
1126
src/bs/bs0300.cpp
File diff suppressed because it is too large
Load Diff
@ -3,19 +3,11 @@
|
||||
|
||||
#define F_UMS 103
|
||||
#define F_IVA 104
|
||||
#define F_LINEART 105
|
||||
#define F_CATMER 106
|
||||
#define F_ART 107
|
||||
#define F_LIST 108
|
||||
#define F_SCONTRINI 109
|
||||
#define F_CORRISPETTIVI 110
|
||||
#define F_DOCUMENTI 111
|
||||
#define F_CARSCAR 112
|
||||
#define F_GENERICI 113
|
||||
#define F_VALUTE 114
|
||||
#define F_CLIENTI 115
|
||||
#define F_FORNITORI 116
|
||||
#define F_BARCODE 117
|
||||
#define F_ART 105
|
||||
#define F_DOCUMENTI 106
|
||||
#define F_VALUTE 107
|
||||
#define F_CLIENTI 108
|
||||
#define F_FORNITORI 109
|
||||
|
||||
#define F_CODNUMBOL 201
|
||||
#define F_TIPODOCBOL 202
|
||||
@ -27,23 +19,13 @@
|
||||
#define F_TIPODOCTAM 208
|
||||
#define F_CODNUMORC 209
|
||||
#define F_TIPODOCORC 210
|
||||
#define F_C_CARSCAR 211
|
||||
#define F_D_CARSCAR 212
|
||||
#define F_C_DOCUMENTI 213
|
||||
#define F_D_DOCUMENTI 214
|
||||
#define F_C_SCONTRINI 215
|
||||
#define F_D_SCONTRINI 216
|
||||
#define F_C_GENERICI 217
|
||||
#define F_D_GENERICI 218
|
||||
#define F_CLIFODC 219
|
||||
#define F_OVERRIG 220
|
||||
#define F_NUMCUSTRIG 221
|
||||
#define F_IMPORTUSER 222
|
||||
#define F_ENIMPORT 223
|
||||
#define F_ENEXPORT 224
|
||||
#define F_EMPTYONIMP 225
|
||||
#define F_ENABCONAI 226
|
||||
#define F_CODIVADEF 227
|
||||
#define F_OVERRIG 211
|
||||
#define F_NUMCUSTRIG 212
|
||||
#define F_IMPORTUSER 213
|
||||
#define F_EMPTYONIMP 214
|
||||
#define F_ENABCONAI 215
|
||||
#define F_CODIVADEF 216
|
||||
#define F_CODUMSDEF 217
|
||||
|
||||
#define F_C_CORRISPETTIVI 301
|
||||
#define F_D_CORRISPETTIVI 302
|
||||
|
@ -1,12 +1,12 @@
|
||||
#include "bs0200a.h"
|
||||
#include "bs0300a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Sincronizzazione Bee Store" 0 2 0 0
|
||||
PAGE "SKNT Importer" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 13
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bArchivi"
|
||||
END
|
||||
@ -14,135 +14,54 @@ END
|
||||
BOOLEAN F_UMS
|
||||
BEGIN
|
||||
PROMPT 2 2 "Unità di misura "
|
||||
FIELD SyncUMS
|
||||
FIELD SKSyncUMS
|
||||
END
|
||||
|
||||
BOOLEAN F_IVA
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codici IVA "
|
||||
FIELD SyncIVA
|
||||
END
|
||||
|
||||
BOOLEAN F_LINEART
|
||||
BEGIN
|
||||
PROMPT 2 4 "Linee Articolo "
|
||||
FIELD SyncLinee
|
||||
END
|
||||
|
||||
BOOLEAN F_CATMER
|
||||
BEGIN
|
||||
PROMPT 2 5 "Categorie Merceologiche"
|
||||
FIELD SyncCatMer
|
||||
END
|
||||
|
||||
BOOLEAN F_ART
|
||||
BEGIN
|
||||
PROMPT 2 6 "Articoli "
|
||||
FIELD SyncAnamag
|
||||
END
|
||||
|
||||
STRING F_LIST 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 F_SCONTRINI
|
||||
BEGIN
|
||||
PROMPT 2 7 "Scontrini "
|
||||
FIELD SyncScontr
|
||||
END
|
||||
|
||||
BOOLEAN F_CORRISPETTIVI
|
||||
BEGIN
|
||||
PROMPT 2 8 "Corrispettivi "
|
||||
FIELD SyncCorr
|
||||
END
|
||||
|
||||
BOOLEAN F_DOCUMENTI
|
||||
BEGIN
|
||||
PROMPT 2 9 "Documenti "
|
||||
FIELD SyncDoc
|
||||
END
|
||||
|
||||
BOOLEAN F_CARSCAR
|
||||
BEGIN
|
||||
PROMPT 2 10 "Carichi/scarichi "
|
||||
FIELD SyncCarScar
|
||||
END
|
||||
|
||||
BOOLEAN F_GENERICI
|
||||
BEGIN
|
||||
PROMPT 2 11 "Mov.generici "
|
||||
FIELD SyncGenerici
|
||||
PROMPT 30 2 "Codici IVA "
|
||||
FIELD SKSyncIVA
|
||||
END
|
||||
|
||||
BOOLEAN F_VALUTE
|
||||
BEGIN
|
||||
PROMPT 40 2 "Valute"
|
||||
FIELD SyncVAL
|
||||
PROMPT 60 2 "Valute"
|
||||
FIELD SKSyncVAL
|
||||
END
|
||||
|
||||
BOOLEAN F_CLIENTI
|
||||
BEGIN
|
||||
PROMPT 40 3 "Clienti"
|
||||
FIELD SyncClienti
|
||||
PROMPT 2 3 "Clienti"
|
||||
FIELD SKSyncClienti
|
||||
END
|
||||
|
||||
BOOLEAN F_FORNITORI
|
||||
BEGIN
|
||||
PROMPT 40 4 "Fornitori "
|
||||
FIELD SyncFornitori
|
||||
PROMPT 30 3 "Fornitori "
|
||||
FIELD SKSyncFornitori
|
||||
END
|
||||
|
||||
BOOLEAN F_BARCODE
|
||||
BOOLEAN F_ART
|
||||
BEGIN
|
||||
PROMPT 40 5 "Codici a barre"
|
||||
FIELD SyncBarCode
|
||||
PROMPT 2 4 "Articoli "
|
||||
FIELD SKSyncAnamag
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BOOLEAN F_DOCUMENTI
|
||||
BEGIN
|
||||
PROMPT 1 14 "@bFiltri"
|
||||
PROMPT 30 4 "Documenti "
|
||||
FIELD SKSyncDoc
|
||||
END
|
||||
|
||||
DATE F_DAL
|
||||
BEGIN
|
||||
PROMPT 2 15 "Dalla data di modifica "
|
||||
FIELD SyncDateFrom
|
||||
END
|
||||
|
||||
DATE F_AL
|
||||
BEGIN
|
||||
PROMPT 42 15 " al "
|
||||
FIELD SyncDateTo
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Parametri" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bImpostazioni documenti"
|
||||
PROMPT 1 6 "@bImpostazioni documenti"
|
||||
END
|
||||
|
||||
STRING F_CODNUMBOL 4
|
||||
BEGIN
|
||||
PROMPT 2 2 "Numerazione bolle "
|
||||
FIELD CODNUMBOL
|
||||
PROMPT 2 7 "Numerazione bolle "
|
||||
FIELD SKCODNUMBOL
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMBOL
|
||||
@ -156,8 +75,8 @@ END
|
||||
|
||||
STRING F_TIPODOCBOL 4
|
||||
BEGIN
|
||||
PROMPT 40 2 "Tipo bolle "
|
||||
FIELD TIPODOCBOL
|
||||
PROMPT 40 7 "Tipo bolle "
|
||||
FIELD SKTIPODOCBOL
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCBOL
|
||||
@ -169,8 +88,8 @@ END
|
||||
|
||||
STRING F_CODNUMFAT 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Numerazione fatture "
|
||||
FIELD CODNUMFAT
|
||||
PROMPT 2 8 "Numerazione fatture "
|
||||
FIELD SKCODNUMFAT
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMFAT
|
||||
@ -184,8 +103,8 @@ END
|
||||
|
||||
STRING F_TIPODOCFAT 4
|
||||
BEGIN
|
||||
PROMPT 40 3 "Tipo fatture "
|
||||
FIELD TIPODOCFAT
|
||||
PROMPT 40 8 "Tipo fatture "
|
||||
FIELD SKTIPODOCFAT
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCFAT
|
||||
@ -197,8 +116,8 @@ END
|
||||
|
||||
STRING F_CODNUMNC 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Numerazione NC "
|
||||
FIELD CODNUMNC
|
||||
PROMPT 2 9 "Numerazione NC "
|
||||
FIELD SKCODNUMNC
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMNC
|
||||
@ -212,8 +131,8 @@ END
|
||||
|
||||
STRING F_TIPODOCNC 4
|
||||
BEGIN
|
||||
PROMPT 40 4 "Tipo NC "
|
||||
FIELD TIPODOCNC
|
||||
PROMPT 40 9 "Tipo NC "
|
||||
FIELD SKTIPODOCNC
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCNC
|
||||
@ -225,8 +144,8 @@ END
|
||||
|
||||
STRING F_CODNUMTAM 4
|
||||
BEGIN
|
||||
PROMPT 2 5 "Numerazione TAM "
|
||||
FIELD CODNUMTAM
|
||||
PROMPT 2 10 "Numerazione TAM "
|
||||
FIELD SKCODNUMTAM
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMTAM
|
||||
@ -240,8 +159,8 @@ END
|
||||
|
||||
STRING F_TIPODOCTAM 4
|
||||
BEGIN
|
||||
PROMPT 40 5 "Tipo TAM "
|
||||
FIELD TIPODOCTAM
|
||||
PROMPT 40 10 "Tipo TAM "
|
||||
FIELD SKTIPODOCTAM
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCTAM
|
||||
@ -253,8 +172,8 @@ END
|
||||
|
||||
STRING F_CODNUMORC 4
|
||||
BEGIN
|
||||
PROMPT 2 6 "Numerazione ORC "
|
||||
FIELD CODNUMORC
|
||||
PROMPT 2 11 "Numerazione ORC "
|
||||
FIELD SKCODNUMORC
|
||||
HELP "Codice numerazione"
|
||||
USE %NUM
|
||||
INPUT CODTAB F_CODNUMORC
|
||||
@ -268,8 +187,8 @@ END
|
||||
|
||||
STRING F_TIPODOCORC 4
|
||||
BEGIN
|
||||
PROMPT 40 6 "Tipo ORC "
|
||||
FIELD TIPODOCORC
|
||||
PROMPT 40 11 "Tipo ORC "
|
||||
FIELD SKTIPODOCORC
|
||||
HELP "Codice tipo documento"
|
||||
USE %TIP
|
||||
INPUT CODTAB F_TIPODOCORC
|
||||
@ -279,141 +198,9 @@ BEGIN
|
||||
FLAG "UP"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 1 8 "@bMovimenti"
|
||||
END
|
||||
|
||||
STRING F_C_CARSCAR 4
|
||||
BEGIN
|
||||
PROMPT 2 9 "Causale magazzino car./scar. "
|
||||
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
|
||||
INPUT CODTAB F_C_CARSCAR
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_C_CARSCAR CODTAB
|
||||
OUTPUT F_D_CARSCAR S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODCAUS(1)
|
||||
ADD RUN mg0 -0 %CAU
|
||||
END
|
||||
|
||||
STRING F_D_CARSCAR 50 36
|
||||
BEGIN
|
||||
PROMPT 40 9 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_C_DOCUMENTI 4
|
||||
BEGIN
|
||||
PROMPT 2 10 "Causale magazzino documenti "
|
||||
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
|
||||
INPUT CODTAB F_C_DOCUMENTI
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_C_DOCUMENTI CODTAB
|
||||
OUTPUT F_D_DOCUMENTI S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODCAUS(2)
|
||||
ADD RUN mg0 -0 %CAU
|
||||
END
|
||||
|
||||
STRING F_D_DOCUMENTI 50 36
|
||||
BEGIN
|
||||
PROMPT 40 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_C_SCONTRINI 4
|
||||
BEGIN
|
||||
PROMPT 2 11 "Causale magazzino scontrini "
|
||||
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
|
||||
INPUT CODTAB F_C_SCONTRINI
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_C_SCONTRINI CODTAB
|
||||
OUTPUT F_D_SCONTRINI S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODCAUS(3)
|
||||
ADD RUN mg0 -0 %CAU
|
||||
END
|
||||
|
||||
STRING F_D_SCONTRINI 50 36
|
||||
BEGIN
|
||||
PROMPT 40 11 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_C_GENERICI 4
|
||||
BEGIN
|
||||
PROMPT 2 12 "Causale magazzino mov.generici "
|
||||
USE %CAU SELECT (S2[8,8]=1)&&(S6="P")
|
||||
INPUT CODTAB F_C_GENERICI
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_C_GENERICI CODTAB
|
||||
OUTPUT F_D_GENERICI S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODCAUS(4)
|
||||
ADD RUN mg0 -0 %CAU
|
||||
END
|
||||
|
||||
STRING F_D_GENERICI 50 36
|
||||
BEGIN
|
||||
PROMPT 40 12 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 14 "@bCorrispettivi"
|
||||
END
|
||||
|
||||
STRING F_C_CORRISPETTIVI 4
|
||||
BEGIN
|
||||
PROMPT 2 15 "Causale contabile "
|
||||
USE LF_CAUSALI SELECT TIPODOC="CR"
|
||||
INPUT CODCAUS F_C_CORRISPETTIVI
|
||||
DISPLAY "Codice" CODCAUS
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_C_CORRISPETTIVI CODCAUS
|
||||
OUTPUT F_D_CORRISPETTIVI DESCR
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODCAUSC
|
||||
ADD RUN cg0 -4
|
||||
END
|
||||
|
||||
STRING F_D_CORRISPETTIVI 50 36
|
||||
BEGIN
|
||||
PROMPT 40 15 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_CLIFODC
|
||||
BEGIN
|
||||
PROMPT 2 17 "Doppio controllo cod.cli"
|
||||
FIELD ClifoDC
|
||||
END
|
||||
|
||||
BOOLEAN F_OVERRIG
|
||||
BEGIN
|
||||
PROMPT 40 17 "Riga merce custom"
|
||||
FIELD UseCustomRiga
|
||||
MESSAGE FALSE DISABLE,F_NUMCUSTRIG
|
||||
MESSAGE TRUE ENABLE,F_NUMCUSTRIG
|
||||
END
|
||||
|
||||
STRING F_NUMCUSTRIG 2
|
||||
BEGIN
|
||||
PROMPT 60 17 ""
|
||||
FIELD NumCustomRiga
|
||||
FLAGS "D"
|
||||
CHECKYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_CODIVADEF 4
|
||||
BEGIN
|
||||
PROMPT 2 18 "Utilizza cod.IVA default "
|
||||
PROMPT 2 13 "Utilizza cod.IVA default "
|
||||
USE %IVA
|
||||
INPUT CODTAB F_CODIVADEF
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -422,38 +209,55 @@ BEGIN
|
||||
DISPLAY "Tipo" S1
|
||||
OUTPUT F_CODIVADEF CODTAB
|
||||
HELP "Codice IVA per righe con valore nullo"
|
||||
FIELD CodIvaDef
|
||||
FIELD SKCodIvaDef
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_ENIMPORT
|
||||
STRING F_CODUMSDEF 4
|
||||
BEGIN
|
||||
PROMPT 2 19 "Abilita Importazione"
|
||||
FIELD EnableImp
|
||||
PROMPT 2 14 "Utilizza UMS default "
|
||||
USE %UMS
|
||||
INPUT CODTAB F_CODUMSDEF
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODUMSDEF CODTAB
|
||||
HELP "Codice UmS per righe con valore nullo"
|
||||
FIELD SKCodUmsDef
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_ENEXPORT
|
||||
BOOLEAN F_OVERRIG
|
||||
BEGIN
|
||||
PROMPT 40 19 "Abilita Esportazione"
|
||||
FIELD EnableExp
|
||||
PROMPT 2 15 "Riga merce custom"
|
||||
FIELD SKUseCustomRiga
|
||||
MESSAGE FALSE DISABLE,F_NUMCUSTRIG
|
||||
MESSAGE TRUE ENABLE,F_NUMCUSTRIG
|
||||
END
|
||||
|
||||
STRING F_NUMCUSTRIG 2
|
||||
BEGIN
|
||||
PROMPT 40 15 ""
|
||||
FIELD SKNumCustomRiga
|
||||
FLAGS "D"
|
||||
CHECKYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_EMPTYONIMP
|
||||
BEGIN
|
||||
PROMPT 2 20 "Svuola DB dopo importazione"
|
||||
FIELD EmptyOnImp
|
||||
PROMPT 2 16 "Svuola DB dopo importazione"
|
||||
FIELD SKEmptyOnImp
|
||||
END
|
||||
|
||||
BOOLEAN F_ENABCONAI
|
||||
BEGIN
|
||||
PROMPT 40 20 "Abilita gestione CONAI"
|
||||
FIELD EnabCONAI
|
||||
PROMPT 40 16 "Abilita gestione CONAI"
|
||||
FIELD SKEnabCONAI
|
||||
END
|
||||
|
||||
STRING F_IMPORTUSER 20
|
||||
BEGIN
|
||||
PROMPT 2 21 "Utente che effettua l'importazione "
|
||||
FIELD ImportUser
|
||||
PROMPT 2 17 "Utente che effettua l'importazione "
|
||||
FIELD SKImportUser
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -5,3 +5,4 @@ Module = bs
|
||||
Flags = "F"
|
||||
Item_01 = "Configurazione", "bs0 -0", "F", 9015
|
||||
Item_02 = "Sincronizzazione", "bs0 -1", "F", 9015
|
||||
Item_02 = "SKNET Importer", "bs0 -2", "F", 9015
|
||||
|
104
src/bs/bsutility.cpp
Normal file
104
src/bs/bsutility.cpp
Normal file
@ -0,0 +1,104 @@
|
||||
#include "bsutility.h"
|
||||
|
||||
|
||||
// Converte una TDate in una data SQL
|
||||
const TString& date2sql(const TDate& d, int hour)
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
if (d.ok())
|
||||
{
|
||||
tmp.format("'%04d-%02d-%02d", d.year(), d.month(), d.day());
|
||||
switch (hour)
|
||||
{
|
||||
case 1:
|
||||
tmp << "T00:00:00.000'";
|
||||
break;
|
||||
case 2:
|
||||
tmp << "T23:59:59.999'";
|
||||
break;
|
||||
default:
|
||||
case 0:
|
||||
tmp << "'";
|
||||
}
|
||||
}
|
||||
else
|
||||
tmp = "NULL";
|
||||
return tmp;
|
||||
}
|
||||
|
||||
const TString& var2sql(const TVariant& var)
|
||||
{
|
||||
TString& tmp = get_tmp_string();
|
||||
switch (var.type())
|
||||
{
|
||||
case _nullfld:
|
||||
tmp = "NULL";
|
||||
break;
|
||||
case _boolfld:
|
||||
tmp = var.as_bool() ? "1" : "0";
|
||||
break;
|
||||
case _datefld:
|
||||
tmp = date2sql(var.as_date());
|
||||
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:
|
||||
{
|
||||
var.as_string(tmp);
|
||||
const int pos = tmp.find('\'');
|
||||
if (pos >= 0)
|
||||
{
|
||||
for (int i = tmp.len() - 1; i >= pos; i--)
|
||||
if (tmp[i] == '\'') tmp.insert("'", i);
|
||||
}
|
||||
tmp.insert("'");
|
||||
tmp << "'";
|
||||
}
|
||||
break;
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
|
||||
const TString& expr2sql(const TISAM_recordset& set, const char* expr)
|
||||
{
|
||||
TVariant var;
|
||||
TExpression e(expr, _strexpr, true);
|
||||
if (e.numvar() == 0)
|
||||
{
|
||||
if (real::is_natural(expr))
|
||||
var = atoi(expr);
|
||||
else
|
||||
var = expr;
|
||||
}
|
||||
else
|
||||
if (e.numvar() == 1 && xvt_str_same(e.varname(0), expr))
|
||||
{
|
||||
var = set.get(expr);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int v = e.numvar() - 1; v >= 0; v--)
|
||||
{
|
||||
var = set.get(e.varname(v));
|
||||
if (var.is_real() || var.is_bool())
|
||||
e.setvar(v, var.as_real());
|
||||
else
|
||||
e.setvar(v, var.as_string());
|
||||
}
|
||||
var = e.as_string();
|
||||
}
|
||||
return var2sql(var);
|
||||
}
|
11
src/bs/bsutility.h
Normal file
11
src/bs/bsutility.h
Normal file
@ -0,0 +1,11 @@
|
||||
#include <expr.h>
|
||||
#include <recset.h>
|
||||
|
||||
// Converte una TDate in una data SQL
|
||||
const TString& date2sql(const TDate& d, int hour = 0);
|
||||
|
||||
// Coverte un qualsiasi TVariant in stringa SQL
|
||||
const TString& var2sql(const TVariant& var);
|
||||
|
||||
// Coverte una qualsiasi espressione in stringa SQL
|
||||
const TString& expr2sql(const TISAM_recordset& set, const char* expr);
|
Loading…
x
Reference in New Issue
Block a user