diff --git a/src/include/postman.cpp b/src/include/postman.cpp index 48efbb1ff..564b72a47 100755 --- a/src/include/postman.cpp +++ b/src/include/postman.cpp @@ -747,59 +747,8 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi { if (__magic_find_tables) { - // TString check_statement = "SELECT * FROM "; - -// 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) @@ -852,10 +801,19 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi keyst.add(row); } + + TString statement = "SELECT * FROM "; - TString check_statement = build_statement(recset, op, curr_file_num, name, keyst, valuest); - err = recset.exec(check_statement); - err = (abs(err) == SQL_NO_TABLE) ? 0 : 1; + statement << name << " WHERE "; + FOR_EACH_ARRAY_ROW(keyst, rk, rowk) + { + if (rk > 0) + statement << " AND"; + statement << ' ' << rowk->get(0) << "=" << rowk->get(1); + } + statement << ";"; + + err = (abs(recset.exec(statement)) == SQL_NO_TABLE) ? 0 : 1; } else { @@ -981,7 +939,7 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi TString statement; - if (op < db_remove) + if (!__magic_find_tables && op < db_remove) { statement << "SELECT * FROM " << name << " WHERE "; FOR_EACH_ARRAY_ROW(keys, rk, rowk) @@ -992,18 +950,24 @@ HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_fi } statement << ";"; - int err = recset.exec(statement); + const int rows = recset.exec(statement); - if (err == 0 && op == db_update) + if (rows == 0 && op == db_update) op = db_add; else - if (err > 0 && op == db_add) + if (rows > 0 && op == db_add) op = db_update; } statement = build_statement(recset, op, curr_file_num, name, keys, values); int err = recset.exec(statement); + if (__magic_find_tables && op < db_remove && err <= 0) + { + const TString & update_statement = build_statement(recset, op == db_add ? db_update : db_add, curr_file_num, name, keys, values); + + err = recset.exec(update_statement); + } if (err < 0) error_box(FR("Errore n. %d invio file %d\n%s"), -err, curr_file_num, (const char *) statement); else @@ -1180,8 +1144,7 @@ bool TPostman::dispatch_transaction(const TRectype& rec, const TString dsn = r; TAuto_token_string files = odbc_files; - - + ::odbc_send(dsn, rec.num(), files, name); } remove_file(name); diff --git a/src/ve/verig16.ini b/src/ve/verig16.ini new file mode 100644 index 000000000..9f112a4af --- /dev/null +++ b/src/ve/verig16.ini @@ -0,0 +1,10 @@ +#Profilo di riga tipo sconto finanziario in percentuale +[MAIN] +CALCOLI=* +CAMPICALC= +IMPONIBILE=IMPNN +BASESCONTO=TOTDOC + +[HANDLERS] +NHANDLER = 0 + diff --git a/src/ve/verig16.uml b/src/ve/verig16.uml new file mode 100644 index 000000000..04e3b98bc --- /dev/null +++ b/src/ve/verig16.uml @@ -0,0 +1,15 @@ +#include "verigdef.h" + +#define FULL_SCREEN +#define MASK_TITLE1 "Sconto finanziario" + +DEFINE_FIELD(DESCR) +DEFINE_FIELD(SCONTO) +F_POS(SCONTO, 2, 9,"Sconto " ) +DEFINE_FIELD(CODIVA) +DEFINE_FIELD(DESIVA) + +#include "verig.uml" + + +