Patch level : 12.00 1262
Files correlati : Commento : nvio postino con ODBC
This commit is contained in:
parent
f7a1d8485d
commit
1b22990d37
@ -71,7 +71,7 @@ public:
|
|||||||
const TString& dsn() const { return _dsn; }
|
const TString& dsn() const { return _dsn; }
|
||||||
const char * table_name();
|
const char * table_name();
|
||||||
|
|
||||||
TODBC_recordset(const char* sql, const bool freezed = false);
|
TODBC_recordset(const char* sql = "", const bool freezed = false);
|
||||||
virtual ~TODBC_recordset();
|
virtual ~TODBC_recordset();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3,9 +3,11 @@
|
|||||||
#include <expr.h>
|
#include <expr.h>
|
||||||
#include <golem.h>
|
#include <golem.h>
|
||||||
#include <netsock.h>
|
#include <netsock.h>
|
||||||
|
#include <odbcrset.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
#include <scanner.h>
|
#include <scanner.h>
|
||||||
|
#include <transaction.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <xml.h>
|
#include <xml.h>
|
||||||
|
|
||||||
@ -20,12 +22,15 @@ class TRecipient : public TObject
|
|||||||
TString _address;
|
TString _address;
|
||||||
TString _group;
|
TString _group;
|
||||||
TString _expr;
|
TString _expr;
|
||||||
|
TString _files;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const TString& address() const { return _address; }
|
const TString& address() const { return _address; }
|
||||||
const TString& group() const { return _group; }
|
const TString& group() const { return _group; }
|
||||||
|
const TString& files() const { return _files; }
|
||||||
void add_expr(char op, const TString& expr);
|
void add_expr(char op, const TString& expr);
|
||||||
bool can_receive(const TRectype& rec) const;
|
bool can_receive(const TRectype& rec) const;
|
||||||
|
void add_files(const TString& files) { _files = files; }
|
||||||
|
|
||||||
virtual bool ok() const
|
virtual bool ok() const
|
||||||
{ return _address.not_empty() && _expr.not_empty(); }
|
{ return _address.not_empty() && _expr.not_empty(); }
|
||||||
@ -49,6 +54,7 @@ void TRecipient::add_expr(char op, const TString& expr)
|
|||||||
_expr << 1;
|
_expr << 1;
|
||||||
else
|
else
|
||||||
_expr << '(' << expr << ')';
|
_expr << '(' << expr << ')';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TRecipient::can_receive(const TRectype& rec) const
|
bool TRecipient::can_receive(const TRectype& rec) const
|
||||||
@ -109,7 +115,7 @@ protected:
|
|||||||
|
|
||||||
void add_expr(const TString& addr,
|
void add_expr(const TString& addr,
|
||||||
char op, const TString& expr);
|
char op, const TString& expr);
|
||||||
|
void add_files(const TString& addr, const TString& files);
|
||||||
void load_filters();
|
void load_filters();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -137,22 +143,40 @@ void TPostman::test_firm()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TPostman::add_expr(const TString& addr,
|
void TPostman::add_expr(const TString& addr,
|
||||||
char op, const TString& expr)
|
char op, const TString& expr)
|
||||||
{
|
{
|
||||||
for (int r = _recipient.last(); r >= 0; r--)
|
for (int r = _recipient.last(); r >= 0; r--)
|
||||||
{
|
{
|
||||||
TRecipient& rec = recipient(r);
|
TRecipient& rec = recipient(r);
|
||||||
if (rec.address() == addr)
|
if (rec.address() == addr)
|
||||||
{
|
{
|
||||||
rec.add_expr(op, expr);
|
rec.add_expr(op, expr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (rec.group() == addr)
|
if (rec.group() == addr)
|
||||||
rec.add_expr(op, expr);
|
rec.add_expr(op, expr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TPostman::add_files(const TString& addr, const TString& files)
|
||||||
|
{
|
||||||
|
for (int r = _recipient.last(); r >= 0; r--)
|
||||||
|
{
|
||||||
|
TRecipient& rec = recipient(r);
|
||||||
|
if (rec.address() == addr)
|
||||||
|
{
|
||||||
|
rec.add_files(files);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (rec.group() == addr)
|
||||||
|
rec.add_files(files);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TPostman::can_dispatch_transaction(const TRectype& rec)
|
bool TPostman::can_dispatch_transaction(const TRectype& rec)
|
||||||
@ -165,8 +189,8 @@ bool TPostman::can_dispatch_transaction(const TRectype& rec)
|
|||||||
_recipient.destroy();
|
_recipient.destroy();
|
||||||
|
|
||||||
TConfig cfg(CONFIG_DITTA, "MailTransactions");
|
TConfig cfg(CONFIG_DITTA, "MailTransactions");
|
||||||
TAuto_token_string str;
|
TToken_string str("", '¦');
|
||||||
TString addr, opr, expr;
|
TString addr, opr, expr, files;
|
||||||
|
|
||||||
// Costruisce la lista dei destinatari
|
// Costruisce la lista dei destinatari
|
||||||
for (int r = 0; cfg.exist("Recipient", r); r++)
|
for (int r = 0; cfg.exist("Recipient", r); r++)
|
||||||
@ -180,16 +204,20 @@ bool TPostman::can_dispatch_transaction(const TRectype& rec)
|
|||||||
// Costruisce i filtri per i destinatari
|
// Costruisce i filtri per i destinatari
|
||||||
for (int f = 0; cfg.exist("Filter", f); f++)
|
for (int f = 0; cfg.exist("Filter", f); f++)
|
||||||
{
|
{
|
||||||
|
|
||||||
str = cfg.get("Filter", NULL, f);
|
str = cfg.get("Filter", NULL, f);
|
||||||
expand_sys_vars(str);
|
expand_sys_vars(str);
|
||||||
|
str.get(0, addr);
|
||||||
|
|
||||||
const int num = str.get_int(1);
|
const int num = str.get_int(1);
|
||||||
if (num != lognum) continue;
|
|
||||||
|
|
||||||
str.get(0, addr);
|
if (num != lognum)
|
||||||
|
continue;
|
||||||
str.get(2, opr);
|
str.get(2, opr);
|
||||||
str.get(3, expr);
|
str.get(3, expr);
|
||||||
add_expr(addr, opr[0], expr);
|
str.get(4, files);
|
||||||
|
add_expr(addr, opr[0], expr);
|
||||||
|
add_files(addr, files);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Elimina destinatari inutili
|
// Elimina destinatari inutili
|
||||||
@ -265,6 +293,227 @@ static int write_xml(TConfig& cfg, void* jolly)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
typedef enum { db_add, db_update, db_remove } db_op;
|
||||||
|
|
||||||
|
HIDDEN const TString & build_statement(const db_op op, int logicnum, const TString_array & keys, const TString_array & values)
|
||||||
|
{
|
||||||
|
TString & statement = get_tmp_string();
|
||||||
|
TString table_name;
|
||||||
|
const int firm = prefix().get_codditta();
|
||||||
|
|
||||||
|
if (firm > 0)
|
||||||
|
table_name << format("%05lda", firm) << '_';
|
||||||
|
table_name << logic2table(logicnum);
|
||||||
|
if (op == db_add)
|
||||||
|
{
|
||||||
|
statement << "INSERT INTO [" << table_name << "] (";
|
||||||
|
FOR_EACH_ARRAY_ROW(values, r, row)
|
||||||
|
{
|
||||||
|
if (r > 0)
|
||||||
|
statement << ", ";
|
||||||
|
statement << row->get(0);
|
||||||
|
}
|
||||||
|
statement << ") VALUES (";
|
||||||
|
FOR_EACH_ARRAY_ROW(values, rk, rowk)
|
||||||
|
{
|
||||||
|
if (rk > 0)
|
||||||
|
statement << ", ";
|
||||||
|
statement << rowk->get(1);
|
||||||
|
}
|
||||||
|
statement << ')';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (op == db_update)
|
||||||
|
{
|
||||||
|
statement << "UPDATE [" << table_name << "] SET ";
|
||||||
|
FOR_EACH_ARRAY_ROW(values, r, row)
|
||||||
|
{
|
||||||
|
if (r > 0)
|
||||||
|
statement << ", ";
|
||||||
|
statement << *row;
|
||||||
|
}
|
||||||
|
statement << " WHERE";
|
||||||
|
FOR_EACH_ARRAY_ROW(keys, rk, rowk)
|
||||||
|
{
|
||||||
|
if (rk > 0)
|
||||||
|
statement << " AND";
|
||||||
|
statement << ' ' << *rowk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (op == db_remove)
|
||||||
|
{
|
||||||
|
statement << "DELETE FROM [" << table_name << "] WHERE ";
|
||||||
|
FOR_EACH_ARRAY_ROW(keys, rk, rowk)
|
||||||
|
{
|
||||||
|
if (rk > 0)
|
||||||
|
statement << " AND";
|
||||||
|
statement << ' ' << *rowk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
statement << ';';
|
||||||
|
return statement;
|
||||||
|
}
|
||||||
|
|
||||||
|
HIDDEN void odbc_send(const TString & dsn, int num, TAuto_token_string & elab_files, const TFilename & name)
|
||||||
|
{
|
||||||
|
TODBC_recordset recset;
|
||||||
|
TToken_string odbc_str(dsn.mid(5), ',');
|
||||||
|
TString_array files;
|
||||||
|
TString_array keys;
|
||||||
|
TString_array values;
|
||||||
|
TConfig ini(name); ini.set_paragraph("Transaction");
|
||||||
|
TString tr_type = ini.get("Action"); tr_type.upper();
|
||||||
|
TString main_file;
|
||||||
|
|
||||||
|
main_file << num;
|
||||||
|
db_op op = db_add;
|
||||||
|
|
||||||
|
odbc_str.rtrim(1);
|
||||||
|
if (tr_type == TRANSACTION_INSERT)
|
||||||
|
op = db_add;
|
||||||
|
else
|
||||||
|
if (tr_type == TRANSACTION_MODIFY)
|
||||||
|
op = db_update;
|
||||||
|
else
|
||||||
|
if (tr_type == TRANSACTION_DELETE)
|
||||||
|
op = db_remove;
|
||||||
|
if (!recset.connect(odbc_str.get(0), odbc_str.get(1), odbc_str.get(2)))
|
||||||
|
{
|
||||||
|
error_box(FR("Non posso connettermi a (%s)"), (const char *)odbc_str);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ini.list_paragraphs(files);
|
||||||
|
FOR_EACH_ARRAY_ROW(files, i, row)
|
||||||
|
{
|
||||||
|
TString curr_file = *row;
|
||||||
|
const int pos = curr_file.find(",");
|
||||||
|
TToken_string rowkey("", ',');
|
||||||
|
|
||||||
|
if (pos > 0)
|
||||||
|
{
|
||||||
|
rowkey = curr_file.mid(pos + 1);
|
||||||
|
curr_file = curr_file.left(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
int curr_file_num = atoi(curr_file);
|
||||||
|
const bool to_elab = (curr_file_num > 0) && (elab_files.blank() || elab_files.find(curr_file) >= 0);
|
||||||
|
|
||||||
|
if (to_elab)
|
||||||
|
{
|
||||||
|
keys.destroy();
|
||||||
|
values.destroy();
|
||||||
|
ini.set_paragraph(*row);
|
||||||
|
TTrec wrk(curr_file_num);
|
||||||
|
int nfields = wrk.fields();
|
||||||
|
|
||||||
|
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);
|
||||||
|
TToken_string row(field, '=');
|
||||||
|
|
||||||
|
TString str = ini.get(field);
|
||||||
|
TString val;
|
||||||
|
|
||||||
|
str.strip("\"");
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case _alfafld:
|
||||||
|
case _charfld:
|
||||||
|
case _datefld:
|
||||||
|
case _memofld:
|
||||||
|
val << '\'' << str << '\'';
|
||||||
|
break;
|
||||||
|
case _intfld:
|
||||||
|
case _longfld:
|
||||||
|
case _realfld:
|
||||||
|
case _wordfld:
|
||||||
|
case _intzerofld:
|
||||||
|
case _longzerofld:
|
||||||
|
val = str.blank() ? "0" : str;
|
||||||
|
break;
|
||||||
|
case _boolfld:
|
||||||
|
val = str.blank() ? "'FALSE'" : "'TRUE'";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
val = str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
row.add(val);
|
||||||
|
values.add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
TToken_string key(wrk.keydef(), '+');
|
||||||
|
int pos = key.find("|");
|
||||||
|
|
||||||
|
if (pos > 0)
|
||||||
|
key = key.left(pos);
|
||||||
|
FOR_EACH_STR_TOKEN(key, field)
|
||||||
|
{
|
||||||
|
TToken_string row(field, '=');
|
||||||
|
int pos = field.find("[");
|
||||||
|
|
||||||
|
if (pos > 0)
|
||||||
|
field = field.left(pos);
|
||||||
|
|
||||||
|
TString str = ini.get(field);
|
||||||
|
|
||||||
|
if (str.blank())
|
||||||
|
{
|
||||||
|
ini.set_paragraph(main_file);
|
||||||
|
str = ini.get(field);
|
||||||
|
if (str.blank())
|
||||||
|
str << rowkey.get();
|
||||||
|
ini.set_paragraph(*row);
|
||||||
|
}
|
||||||
|
|
||||||
|
TToken_string def = wrk.fielddef(wrk.field(field));
|
||||||
|
TFieldtypes t = (TFieldtypes)def.get_int(1);
|
||||||
|
TString val;
|
||||||
|
|
||||||
|
str.strip("\"");
|
||||||
|
switch (t)
|
||||||
|
{
|
||||||
|
case _alfafld:
|
||||||
|
case _charfld:
|
||||||
|
case _datefld:
|
||||||
|
case _memofld:
|
||||||
|
val << '\'' << str << '\'';
|
||||||
|
break;
|
||||||
|
case _intfld:
|
||||||
|
case _longfld:
|
||||||
|
case _realfld:
|
||||||
|
case _wordfld:
|
||||||
|
case _intzerofld:
|
||||||
|
case _longzerofld:
|
||||||
|
val = str.blank() ? "0" : str;
|
||||||
|
break;
|
||||||
|
case _boolfld:
|
||||||
|
val = str.blank() ? "'FALSE'" : "'TRUE'";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
val = str;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
row.add(val);
|
||||||
|
keys.add(row);
|
||||||
|
}
|
||||||
|
const TString & statement = build_statement(op, curr_file_num, keys, values);
|
||||||
|
int err = recset.exec(statement);
|
||||||
|
|
||||||
|
if (op < db_remove && err <= 0)
|
||||||
|
{
|
||||||
|
const TString & statement = build_statement(op == db_add ? db_update : db_add, curr_file_num, keys, values);
|
||||||
|
|
||||||
|
err = recset.exec(statement);
|
||||||
|
}
|
||||||
|
if (err <= 0)
|
||||||
|
error_box(FR("Errore file %d invio n. %d"), curr_file_num, err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
bool TPostman::dispatch_transaction(const TRectype& rec,
|
bool TPostman::dispatch_transaction(const TRectype& rec,
|
||||||
const TFilename& name)
|
const TFilename& name)
|
||||||
{
|
{
|
||||||
@ -274,6 +523,8 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
|
|||||||
TToken_string dest;
|
TToken_string dest;
|
||||||
TToken_string file_dest;
|
TToken_string file_dest;
|
||||||
TToken_string soap_dest;
|
TToken_string soap_dest;
|
||||||
|
TToken_string odbc_dest;
|
||||||
|
TToken_string odbc_files;
|
||||||
TString last_error;
|
TString last_error;
|
||||||
|
|
||||||
for (int r = 0; r < _recipient.items(); r++)
|
for (int r = 0; r < _recipient.items(); r++)
|
||||||
@ -281,7 +532,7 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
|
|||||||
const TRecipient& a = recipient(r);
|
const TRecipient& a = recipient(r);
|
||||||
if (a.can_receive(rec))
|
if (a.can_receive(rec))
|
||||||
{
|
{
|
||||||
const TString& addr = a.address();
|
TString addr = a.address();
|
||||||
if (addr.starts_with("http")) // Indirizzo http
|
if (addr.starts_with("http")) // Indirizzo http
|
||||||
soap_dest.add(addr); else
|
soap_dest.add(addr); else
|
||||||
if (addr.find('@') > 0) // Indirizzo posta
|
if (addr.find('@') > 0) // Indirizzo posta
|
||||||
@ -291,17 +542,26 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
|
|||||||
if (fexist(addr))
|
if (fexist(addr))
|
||||||
file_dest.add(addr);
|
file_dest.add(addr);
|
||||||
else
|
else
|
||||||
{
|
if (addr.starts_with("ODBC"))
|
||||||
if (addr != last_error)
|
{
|
||||||
{
|
if (addr.mid(4).blank())
|
||||||
ok = error_box(FR("Non esiste la cartella di destinazione %s"), (const char*)addr);
|
addr << '(' << ini_get_string(CONFIG_DITTA, "MailTransactions", "ODBCDSN")
|
||||||
last_error = addr;
|
<< ',' << ini_get_string(CONFIG_DITTA, "MailTransactions", "ODBCUser")
|
||||||
}
|
<< ',' << decode(ini_get_string(CONFIG_DITTA, "MailTransactions", "ODBCPassword")) << ')';
|
||||||
}
|
odbc_dest.add(addr);
|
||||||
|
odbc_files.add(a.files());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (addr != last_error)
|
||||||
|
{
|
||||||
|
ok = error_box(FR("Non esiste la cartella di destinazione %s"), (const char*)addr);
|
||||||
|
last_error = addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dest.items() > 0)
|
if (dest.items() > 0)
|
||||||
{
|
{
|
||||||
TMail_message msg(dest.get(0));
|
TMail_message msg(dest.get(0));
|
||||||
@ -413,6 +673,19 @@ bool TPostman::dispatch_transaction(const TRectype& rec,
|
|||||||
socket.HttpSoap(id, buf);
|
socket.HttpSoap(id, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (odbc_dest.items() > 0)
|
||||||
|
{
|
||||||
|
odbc_files.restart();
|
||||||
|
FOR_EACH_TOKEN(odbc_dest, r)
|
||||||
|
{
|
||||||
|
const TString & dsn = r;
|
||||||
|
TAuto_token_string files = odbc_files.get();
|
||||||
|
|
||||||
|
::odbc_send(dsn, rec.num(), files, name);
|
||||||
|
}
|
||||||
|
remove_file(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
BIN
src/ps/Diana2000/LaundryInstall.7z
Normal file
BIN
src/ps/Diana2000/LaundryInstall.7z
Normal file
Binary file not shown.
136
src/ps/Dinamica/CUSTOM/orf_trasp.msk
Normal file
136
src/ps/Dinamica/CUSTOM/orf_trasp.msk
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
PA "Stampa Ordini per Fornitore " -1 -1 80 12
|
||||||
|
|
||||||
|
ST 30 70 50
|
||||||
|
BE
|
||||||
|
PR 2 -2 "Profilo "
|
||||||
|
PSELECT
|
||||||
|
GR 1
|
||||||
|
EN
|
||||||
|
|
||||||
|
GR -1 27 5
|
||||||
|
BE
|
||||||
|
PR 1 1 "Seleziona date limite"
|
||||||
|
FL ""
|
||||||
|
EN
|
||||||
|
|
||||||
|
DA 503
|
||||||
|
BE
|
||||||
|
PR 2 2 "Da Data "
|
||||||
|
FI S_DADATA
|
||||||
|
GR 1
|
||||||
|
EN
|
||||||
|
DA 504
|
||||||
|
BE
|
||||||
|
PR 3 4 "A Data "
|
||||||
|
FI S_ADATA
|
||||||
|
GR 2
|
||||||
|
EN
|
||||||
|
|
||||||
|
ST 108 6
|
||||||
|
BE
|
||||||
|
PR 2 6 "Da Fornitore "
|
||||||
|
WA "Fornitore assente"
|
||||||
|
HE "Codice del Fornitore del documento"
|
||||||
|
FL "R"
|
||||||
|
FI S_DACLI
|
||||||
|
US 20 KEY 1
|
||||||
|
IN TIPOCF "F"
|
||||||
|
IN CODCF 108
|
||||||
|
DI "Codice" CODCF
|
||||||
|
DI "Ragione Sociale@70" RAGSOC
|
||||||
|
OU 108 CODCF
|
||||||
|
OU 301 RAGSOC
|
||||||
|
CH NORMAL
|
||||||
|
ADD RU cg0 -1 F
|
||||||
|
EN
|
||||||
|
ST 301 50
|
||||||
|
BE
|
||||||
|
WA "Fornitore assente"
|
||||||
|
HE "Ragione sociale del Fornitore del documento"
|
||||||
|
PR 26 6 ""
|
||||||
|
GR 1
|
||||||
|
US 20 KEY 2
|
||||||
|
IN TIPOCF "F"
|
||||||
|
IN RAGSOC 301
|
||||||
|
DI "Ragione Sociale@70" RAGSOC
|
||||||
|
DI "Codice" CODCF
|
||||||
|
OU 108 CODCF
|
||||||
|
OU 301 RAGSOC
|
||||||
|
CH NORMAL
|
||||||
|
ADD RU cg0 -1 F
|
||||||
|
EN
|
||||||
|
|
||||||
|
ST 109 6
|
||||||
|
BE
|
||||||
|
PR 3 8 "A Fornitore "
|
||||||
|
WA "Fornitore assente"
|
||||||
|
HE "Codice del Fornitore del documento"
|
||||||
|
FL "R"
|
||||||
|
FI S_ACLI
|
||||||
|
US 20 KEY 1
|
||||||
|
IN TIPOCF "F"
|
||||||
|
IN CODCF 109
|
||||||
|
DI "Codice" CODCF
|
||||||
|
DI "Ragione Sociale@70" RAGSOC
|
||||||
|
OU 109 CODCF
|
||||||
|
OU 302 RAGSOC
|
||||||
|
CH NORMAL
|
||||||
|
ADD RU cg0 -1 F
|
||||||
|
EN
|
||||||
|
|
||||||
|
ST 302 50
|
||||||
|
BE
|
||||||
|
WA "Fornitore assente"
|
||||||
|
HE "Ragione sociale del Fornitore del documento"
|
||||||
|
PR 26 8 ""
|
||||||
|
GR 1
|
||||||
|
US 20 KEY 2
|
||||||
|
IN TIPOCF "F"
|
||||||
|
IN RAGSOC 302
|
||||||
|
DI "Ragione Sociale@70" RAGSOC
|
||||||
|
DI "Codice" CODCF
|
||||||
|
OU 109 CODCF
|
||||||
|
OU 302 RAGSOC
|
||||||
|
CH NORMAL
|
||||||
|
ADD RU cg0 -1 F
|
||||||
|
EN
|
||||||
|
|
||||||
|
EN
|
||||||
|
|
||||||
|
TOOLBAR "" 0 0 0 2
|
||||||
|
BU 1 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Conferma"
|
||||||
|
PI 101
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 1 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 33 2 2
|
||||||
|
BE
|
||||||
|
PR 1 1 "Info"
|
||||||
|
ME EXIT,332
|
||||||
|
PI 162
|
||||||
|
EN
|
||||||
|
BU 34 2 2
|
||||||
|
BE
|
||||||
|
PR 2 1 "Help"
|
||||||
|
ME EXIT,331
|
||||||
|
PI 163
|
||||||
|
EN
|
||||||
|
BU -1 2 2
|
||||||
|
BE
|
||||||
|
PR -1 0 ""
|
||||||
|
PI 0
|
||||||
|
EN
|
||||||
|
BU 9 2 2
|
||||||
|
BE
|
||||||
|
PR 3 1 "Fine"
|
||||||
|
ME EXIT,20334
|
||||||
|
PI 114
|
||||||
|
EN
|
||||||
|
EN
|
||||||
|
|
||||||
|
ENDMASK
|
246
src/ps/Dinamica/CUSTOM/orf_trasp.rep
Normal file
246
src/ps/Dinamica/CUSTOM/orf_trasp.rep
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<report libraries="ve1300" page_merge="" save_printer="" name="orf_trasp" use_printer_font="" orientation="2" page_split="" lpi="6" command="ve1 -3 orf_trasp" class="">
|
||||||
|
<description>Controllo Ordini Fornitore</description>
|
||||||
|
<font face="Arial" size="8" />
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<field border="1" radius="100" x="25" y="0.5" deactivated="" type="Testo" valign="center" hidden="" align="center" link="" dynamic_height="" shade_offset="50" width="80" codval="" height="1.75" id="" pattern="2" hide_zero="" text="Trasparenza Ordini Fornitore">
|
||||||
|
<font face="Arial" bold="1" size="16" />
|
||||||
|
</field>
|
||||||
|
<field x="1" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="15" codval="" id="" pattern="2" hide_zero="" text="Documento" />
|
||||||
|
<field x="21" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="7.5" codval="" id="" pattern="2" hide_zero="" text="Fornitore" />
|
||||||
|
<field x="64" y="3.25" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="Data" />
|
||||||
|
<field x="73" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="9" codval="" id="" pattern="2" hide_zero="" text="Commessa" />
|
||||||
|
<field x="94" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="6" codval="" id="" pattern="2" hide_zero="" text="Inizio" />
|
||||||
|
<field x="105" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="Fine" />
|
||||||
|
<field x="116" y="3.25" deactivated="" type="Testo" valign="center" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="2" hide_zero="" text="Descrizione" />
|
||||||
|
<field x="150" y="3.25" deactivated="" type="Testo" valign="center" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="Totdoc" />
|
||||||
|
<field border="2" y="4.25" deactivated="" type="Linea" hidden="" link="" dynamic_height="" shade_offset="" width="163" codval="" height="0" id="" pattern="2" hide_zero="" text="" />
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="1" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="2" hidden="" page_break="" can_break="" pattern="2">
|
||||||
|
<groupby>DOC.CODCF</groupby>
|
||||||
|
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2</prescript>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="1" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<field x="1" deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="1" codval="" id="101" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>PROVV</source>
|
||||||
|
</field>
|
||||||
|
<field x="3" deactivated="" type="Numero" hidden="1" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="102" pattern="2" hide_zero="" text="">
|
||||||
|
<source>ANNO</source>
|
||||||
|
</field>
|
||||||
|
<field x="8" deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="4" codval="" id="103" pattern="2" hide_zero="" text="">
|
||||||
|
<source>CODNUM</source>
|
||||||
|
</field>
|
||||||
|
<field x="13" deactivated="" type="Stringa" hidden="1" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="104" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>NDOC</source>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="11" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<prescript description="H11 PRESCRIPT">""
|
||||||
|
#F11.208 !
|
||||||
|
""
|
||||||
|
#F11.209 !</prescript>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="11" hidden="1" page_break="" can_break="" pattern="1">
|
||||||
|
<sql>USE 34 SELECT (TIPORIGA!='05')(104@.I1=3)
|
||||||
|
JOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC
|
||||||
|
JOIN %TIP TO DOC ALIAS 104 INTO CODTAB=TIPODOC
|
||||||
|
FROM PROVV=#101 ANNO=#102 CODNUM=#103 NDOC=#104
|
||||||
|
TO PROVV=#101 ANNO=#102 CODNUM=#103 NDOC=#104 </sql>
|
||||||
|
<field x="72" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="2" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>TIPORIGA</source>
|
||||||
|
</field>
|
||||||
|
<field x="75" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="8.5" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<source>QTA</source>
|
||||||
|
</field>
|
||||||
|
<field x="84" deactivated="" type="Prezzo" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="#########,@@">
|
||||||
|
<source>PREZZO</source>
|
||||||
|
</field>
|
||||||
|
<field x="94.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPNS</source>
|
||||||
|
</field>
|
||||||
|
<field x="105" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPOSTA</source>
|
||||||
|
</field>
|
||||||
|
<field x="116" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="33" codval="" height="8" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<prescript description="B11.0 PRESCRIPT">MESSAGE_DESCRIGA</prescript>
|
||||||
|
<postscript description="B11.0 POSTSCRIPT">#THIS @
|
||||||
|
#F11.209 @
|
||||||
|
NULL
|
||||||
|
C;E;
|
||||||
|
IF
|
||||||
|
" "
|
||||||
|
+
|
||||||
|
THEN
|
||||||
|
#F11.209 @
|
||||||
|
SWAP
|
||||||
|
+
|
||||||
|
#F11.209 !</postscript>
|
||||||
|
</field>
|
||||||
|
<field x="150" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPLS</source>
|
||||||
|
<postscript description="B11.0 POSTSCRIPT">#THIS @
|
||||||
|
#F11.208 @
|
||||||
|
+
|
||||||
|
#F11.208 !</postscript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="11" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<field deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CODNUM</source>
|
||||||
|
</field>
|
||||||
|
<field x="5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>ANNO</source>
|
||||||
|
</field>
|
||||||
|
<field x="10" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>TIPODOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="15" deactivated="" type="Stringa" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>NDOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="21" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="30" codval="" height="2" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CLIFO.RAGSOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="52" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>PAIV</source>
|
||||||
|
</field>
|
||||||
|
<field x="64" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="8" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<source>DATADOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="73" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="20" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CODCMS</source>
|
||||||
|
</field>
|
||||||
|
<field x="94" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>DATACOMP</source>
|
||||||
|
<alt_source>DATADOC</alt_source>
|
||||||
|
</field>
|
||||||
|
<field x="105" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>DATAFCOMP</source>
|
||||||
|
<alt_source>DATACONS</alt_source>
|
||||||
|
</field>
|
||||||
|
<field x="150" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="12" codval="" id="208" pattern="2" hide_zero="" text="###.###.###,@@" />
|
||||||
|
<field x="116" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="33" codval="" height="20" id="209" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial Narrow" size="8" />
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="2" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<field deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="1" codval="" id="101" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>PROVV</source>
|
||||||
|
</field>
|
||||||
|
<field x="2" deactivated="" type="Numero" hidden="1" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="102" pattern="2" hide_zero="" text="">
|
||||||
|
<source>ANNO</source>
|
||||||
|
</field>
|
||||||
|
<field x="7" deactivated="" type="Stringa" hidden="1" link="" dynamic_height="" shade_offset="" width="4" codval="" id="103" pattern="2" hide_zero="" text="">
|
||||||
|
<source>CODNUM</source>
|
||||||
|
</field>
|
||||||
|
<field x="12" deactivated="" type="Stringa" hidden="1" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="104" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>NDOC</source>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Head" level="21" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<prescript description="H21 PRESCRIPT">""
|
||||||
|
#F21.208 !
|
||||||
|
""
|
||||||
|
#F21.209 !</prescript>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Body" level="21" hidden="1" page_break="" can_break="" pattern="1">
|
||||||
|
<sql>USE 34 SELECT (TIPORIGA!='05')(104@.I1=2)(DAPROVV='')
|
||||||
|
JOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC
|
||||||
|
JOIN %TIP TO DOC ALIAS 104 INTO CODTAB=TIPODOC
|
||||||
|
FROM PROVV=#101 ANNO=#102 CODNUM=#103 NDOC=#104
|
||||||
|
TO PROVV=#101 ANNO=#102 CODNUM=#103 NDOC=#104 </sql>
|
||||||
|
<field x="72" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="2" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>TIPORIGA</source>
|
||||||
|
</field>
|
||||||
|
<field x="75" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="8.5" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<source>QTA</source>
|
||||||
|
</field>
|
||||||
|
<field x="84" deactivated="" type="Prezzo" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="#########,@@">
|
||||||
|
<source>PREZZO</source>
|
||||||
|
</field>
|
||||||
|
<field x="94.5" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPNS</source>
|
||||||
|
</field>
|
||||||
|
<field x="105" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPOSTA</source>
|
||||||
|
</field>
|
||||||
|
<field x="116" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="33" codval="" height="8" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<prescript description="B21.0 PRESCRIPT">MESSAGE_DESCRIGA</prescript>
|
||||||
|
<postscript description="B21.0 POSTSCRIPT">#THIS @
|
||||||
|
#F21.209 @
|
||||||
|
NULL
|
||||||
|
C;E;
|
||||||
|
IF
|
||||||
|
" "
|
||||||
|
+
|
||||||
|
THEN
|
||||||
|
#F21.209 @
|
||||||
|
SWAP
|
||||||
|
+
|
||||||
|
#F21.209 !</postscript>
|
||||||
|
</field>
|
||||||
|
<field x="150" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="12" codval="" id="" pattern="2" hide_zero="" text="###.###.###,@@">
|
||||||
|
<source>IMPLS</source>
|
||||||
|
<postscript description="B21.0 POSTSCRIPT">#THIS @
|
||||||
|
#F21.208 @
|
||||||
|
+
|
||||||
|
#F21.208 !</postscript>
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="21" hidden="" page_break="" can_break="" pattern="1">
|
||||||
|
<field deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CODNUM</source>
|
||||||
|
</field>
|
||||||
|
<field x="5" deactivated="" type="Numero" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>ANNO</source>
|
||||||
|
</field>
|
||||||
|
<field x="10" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="4" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>TIPODOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="15" deactivated="" type="Stringa" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="5" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial" bold="1" size="8" />
|
||||||
|
<source>NDOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="21" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="30" codval="" height="2" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CLIFO.RAGSOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="52" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="11" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>PAIV</source>
|
||||||
|
</field>
|
||||||
|
<field x="64" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="8" codval="" id="" pattern="2" hide_zero="" text="">
|
||||||
|
<source>DATADOC</source>
|
||||||
|
</field>
|
||||||
|
<field x="73" deactivated="" type="Stringa" hidden="" link="" dynamic_height="" shade_offset="" width="20" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>CODCMS</source>
|
||||||
|
</field>
|
||||||
|
<field x="94" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>DATACOMP</source>
|
||||||
|
<alt_source>DATADOC</alt_source>
|
||||||
|
</field>
|
||||||
|
<field x="105" deactivated="" type="Data" hidden="" link="" dynamic_height="" shade_offset="" width="10" codval="" id="" pattern="1" hide_zero="" text="">
|
||||||
|
<source>DATAFCOMP</source>
|
||||||
|
<alt_source>DATADOC</alt_source>
|
||||||
|
</field>
|
||||||
|
<field x="150" deactivated="" type="Valuta" hidden="" align="right" link="" dynamic_height="" shade_offset="" width="12" codval="" id="208" pattern="2" hide_zero="" text="###.###.###,@@" />
|
||||||
|
<field x="116" deactivated="" type="Stringa" hidden="" link="" dynamic_height="1" shade_offset="" width="33" codval="" height="20" id="209" pattern="2" hide_zero="" text="">
|
||||||
|
<font face="Arial Narrow" size="8" />
|
||||||
|
</field>
|
||||||
|
</section>
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="1" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
|
<section repeat="" keep_with_next="" deactivated="" hidden_if_needed="" type="Foot" level="2" hidden="" page_break="" can_break="" pattern="1" />
|
||||||
|
<sql>USE DOC KEY 3
|
||||||
|
SELECT (TIPOCF='F')STR((BETWEEN(CODCF,#S_DACLI,#S_ACLI)))
|
||||||
|
BY 33.CODCF CODNUM DATADOC
|
||||||
|
JOIN CLIFO INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||||
|
FROM DATADOC=#S_DADATA
|
||||||
|
TO DATADOC=#S_ADATA</sql>
|
||||||
|
</report>
|
Loading…
x
Reference in New Issue
Block a user