Patch level : 12.00 1326

Files correlati     : ca0.exe cg0.exe ve0.exe

Inivo a CRM
Chiusura commesse fino all'anno
This commit is contained in:
Alessandro Bonazzi 2024-07-30 18:52:10 +02:00
parent 689b71f3b9
commit d699ef3972

View File

@ -682,12 +682,13 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
TODBC_recordset recset; TODBC_recordset recset;
TToken_string odbc_str(dsn.mid(5), ','); TToken_string odbc_str(dsn.mid(5), ',');
TString_array files; TString_array files;
TString_array keys;
TString_array values;
TConfig ini(name); ini.set_paragraph("Transaction"); TConfig ini(name); ini.set_paragraph("Transaction");
TString tr_type = ini.get("Action"); tr_type.upper(); TString tr_type = ini.get("Action"); tr_type.upper();
TString main_file; TString main_file;
HIDDEN int __magic_find_tables = -2;
if (__magic_find_tables == -2)
__magic_find_tables = ini_get_bool(CONFIG_STUDIO, "Main", "MAGIC_FIND_TABLES");
main_file << num; main_file << num;
db_op op = db_add; db_op op = db_add;
@ -726,8 +727,6 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
if (to_elab) if (to_elab)
{ {
keys.destroy();
values.destroy();
ini.set_paragraph(*row); ini.set_paragraph(*row);
TTrec wrk(curr_file_num); TTrec wrk(curr_file_num);
int nfields = wrk.fields(); int nfields = wrk.fields();
@ -746,16 +745,115 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
} }
else else
{ {
HIDDEN int __magic_find_tables = -2;
if (__magic_find_tables == -2)
__magic_find_tables = ini_get_bool(CONFIG_STUDIO, "Main", "MAGIC_FIND_TABLES");
if (__magic_find_tables) if (__magic_find_tables)
{ {
TString check_statement = "SELECT * FROM "; // TString check_statement = "SELECT * FROM ";
check_statement << name << " LIMIT 1;"; // check_statement << name << " LIMIT 1;";
bool descr = false;
TString_array keyst;
TString_array valuest;
for (int i = 0; i < nfields; i++)
{
TToken_string def = wrk.fielddef(i);
TString field(def.get(0));
TFieldtypes t = (TFieldtypes)def.get_int(1);
TString str = ini.get(field);
if (key.find(field) >= 0 && str.blank())
{
ini.set_paragraph(main_file);
str = ini.get(field);
if (str.blank())
str << rowkey.get();
ini.set_paragraph(*row);
}
str = str.strip("\"");
if (key.find(field) >= 0 && str.blank())
str << rowkey; // qui max
if (curr_file_num == LF_RIGHEDOC)
{
if (field == RDOC_DESCR && str.len() > 50)
{
TString v;
TString add_fld;
TToken_string row("", '~');
add_fld = RDOC_DESCLUNGA;
v = "X";
row = make_val(add_fld, _boolfld, recset.driver(), v);
valuest.add(row);
add_fld = RDOC_DESCEST;
row = make_val(add_fld, _alfafld, recset.driver(), str.smid(50));
valuest.add(row);
str = str.sleft(50).trim();
descr = true;
}
else
if (descr && (field == RDOC_DESCLUNGA || field == RDOC_DESCEST))
continue;
}
TToken_string row(make_val(field, t, recset.driver(), str), '~');
valuest.add(row);
}
int pos = key.find("|");
if (pos > 0)
key = key.left(pos);
pos = 0;
rowkey.restart();
FOR_EACH_STR_TOKEN(key, field)
{
TString fld = field;
if (fld.starts_with("UPPER"))
{
fld = fld.smid(7);
fld.rtrim(1);
fld << "_UPPER";
}
else
{
pos = fld.find("[");
if (pos > 0)
fld = fld.left(pos);
}
TString str = ini.get(fld);
if (str.blank())
{
ini.set_paragraph(main_file);
str = ini.get(fld);
if (str.blank())
str << rowkey.get();
ini.set_paragraph(*row);
}
str = str.strip("\"");
TToken_string def = wrk.fielddef(wrk.field(fld));
TFieldtypes t = (TFieldtypes)def.get_int(1);
if (pos > 0)
{
int start = atoi(field.mid(pos + 1));
pos = field.find(',', pos + 1);
str = str.smid(start, pos > 0 ? atoi(field.mid(pos + 1)) : 0);
fld << "_MID";
}
TToken_string row(make_val(fld, t, recset.driver(), str), '~');
keyst.add(row);
}
TString check_statement = build_statement(recset, op, curr_file_num, name, keyst, valuest);
err = recset.exec(check_statement); err = recset.exec(check_statement);
err = (abs(err) == SQL_NO_TABLE) ? 0 : 1; err = (abs(err) == SQL_NO_TABLE) ? 0 : 1;
} }
@ -776,7 +874,11 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi
else else
{ {
bool descr = false; bool descr = false;
TString_array keys;
TString_array values;
keys.destroy();
values.destroy();
for (int i = 0; i < nfields; i++) for (int i = 0; i < nfields; i++)
{ {
TToken_string def = wrk.fielddef(i); TToken_string def = wrk.fielddef(i);