Continua il tremendo sviluppo del ricalcolo di magazzino.
CV: ---------------------------------------------------------------------- git-svn-id: svn://10.65.10.50/trunk@3430 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
60fa7010c1
commit
a1c00c753f
362
ve/ve4100.cpp
362
ve/ve4100.cpp
@ -1,7 +1,10 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <expr.h>
|
#include <expr.h>
|
||||||
#include <msksheet.h>
|
#include <msksheet.h>
|
||||||
|
#include <progind.h>
|
||||||
#include <relation.h>
|
#include <relation.h>
|
||||||
|
#include <stack.h>
|
||||||
|
#include <tabutil.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
#include <viswin.h>
|
#include <viswin.h>
|
||||||
|
|
||||||
@ -9,20 +12,66 @@
|
|||||||
#include "ve4100.h"
|
#include "ve4100.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Ciclo principale di elaborazione
|
// TTable_expression
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class TTable_expression : public TExpression
|
||||||
bool elabora(TCursor& cur, TString_array& var)
|
|
||||||
{
|
{
|
||||||
TViswin vw("ve4100.txt", "Ricalcolo valori",
|
static TAssoc_array _expr;
|
||||||
FALSE, TRUE, FALSE, 3, 3, -3, -3, FALSE);
|
void load_expr();
|
||||||
|
|
||||||
for (cur = 0; cur.ok(); ++cur)
|
protected:
|
||||||
|
virtual void evaluate_user_func(const char* name, int nparms, TStack& stack) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
TTable_expression(TTypeexp t) : TExpression(t) { }
|
||||||
|
TTable_expression(const char* expr, TTypeexp t) : TExpression(expr, t) { }
|
||||||
|
virtual ~TTable_expression() { }
|
||||||
|
};
|
||||||
|
|
||||||
|
TAssoc_array TTable_expression::_expr;
|
||||||
|
|
||||||
|
void TTable_expression::load_expr()
|
||||||
|
{
|
||||||
|
if (_expr.items() == 0)
|
||||||
{
|
{
|
||||||
|
TString n(15), e(127);
|
||||||
|
TTable expr("%FRM");
|
||||||
|
for (expr.first(); !expr.eof(); expr.next())
|
||||||
|
{
|
||||||
|
n = expr.get("CODTAB");
|
||||||
|
e = expr.get("S1");
|
||||||
|
e << expr.get("S2");
|
||||||
|
const TTypeexp t = expr.get_bool("B0") ? _numexpr : _strexpr;
|
||||||
|
_expr.add(n, new TTable_expression(e, t));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TTable_expression::evaluate_user_func(const char* name, int nparms, TStack& stack) const
|
||||||
|
{
|
||||||
|
TTable_expression* expr = (TTable_expression*)_expr.objptr(name);
|
||||||
|
if (expr == NULL)
|
||||||
|
{
|
||||||
|
TExpression::evaluate_user_func(name, nparms, stack);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
TString var;
|
||||||
|
for (int v = expr->numvar()-1; v >= 0; v--)
|
||||||
|
{
|
||||||
|
var = expr->varname(v); var.upper();
|
||||||
|
if (var[0] == '_') // Parametro della funzione
|
||||||
|
{
|
||||||
|
const int n = atoi(var.mid(2,0));
|
||||||
|
CHECKS(var[1] == 'P' && n > 0 && n <= nparms, "Parametro errato ", (const char*)var);
|
||||||
|
expr->setvar(var, (TString&)stack.peek(nparms-n));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vuota lo stack
|
||||||
|
for (v = nparms; v > 0; v--)
|
||||||
|
stack.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -35,6 +84,9 @@ class TRicalcolo_mask : public TMask
|
|||||||
int _cur_file;
|
int _cur_file;
|
||||||
TToken_string _key_expr;
|
TToken_string _key_expr;
|
||||||
|
|
||||||
|
TRelation* _relation;
|
||||||
|
TCursor* _cursor;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static bool file_handler (TMask_field& f, KEY k);
|
static bool file_handler (TMask_field& f, KEY k);
|
||||||
static bool key_handler (TMask_field& f, KEY k);
|
static bool key_handler (TMask_field& f, KEY k);
|
||||||
@ -42,21 +94,26 @@ protected:
|
|||||||
static bool field_handler (TMask_field& f, KEY k);
|
static bool field_handler (TMask_field& f, KEY k);
|
||||||
static bool fromto_handler(TMask_field& f, KEY k);
|
static bool fromto_handler(TMask_field& f, KEY k);
|
||||||
|
|
||||||
public:
|
bool gestione_um(char tipo) const;
|
||||||
TRelation& get_rel() const;
|
TRelation& get_rel() const;
|
||||||
const TRectype& get_rec() const;
|
const TRectype& get_rec() const;
|
||||||
const RecDes* get_rec_des() const;
|
const RecDes* get_rec_des() const;
|
||||||
TToken_string& get_key_expr(int k);
|
TToken_string& get_key_expr(int k);
|
||||||
|
|
||||||
|
TRelation& create_relation();
|
||||||
|
TCursor& create_cursor();
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool elabora();
|
||||||
|
|
||||||
TRicalcolo_mask();
|
TRicalcolo_mask();
|
||||||
virtual ~TRicalcolo_mask() { }
|
virtual ~TRicalcolo_mask() { }
|
||||||
};
|
};
|
||||||
|
|
||||||
TRicalcolo_mask::TRicalcolo_mask()
|
TRicalcolo_mask::TRicalcolo_mask()
|
||||||
: TMask("ve4100"), _cur_file(0)
|
: TMask("ve4100"), _cur_file(0), _relation(NULL), _cursor(NULL)
|
||||||
{
|
{
|
||||||
const int lf[] = { LF_ANAMAG, LF_CODCORR, LF_UMART,
|
const int lf[] = { LF_ANAMAG, LF_UMART, LF_DESLIN, LF_CONDV, LF_RCONDV, 0 };
|
||||||
LF_DESLIN, LF_CONDV, LF_RCONDV, 0 };
|
|
||||||
for (int i = 0; lf[i]; i++)
|
for (int i = 0; lf[i]; i++)
|
||||||
{
|
{
|
||||||
TRelation* rel = new TRelation(lf[i]);
|
TRelation* rel = new TRelation(lf[i]);
|
||||||
@ -113,6 +170,206 @@ TToken_string& TRicalcolo_mask::get_key_expr(int key)
|
|||||||
return _key_expr;
|
return _key_expr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TRicalcolo_mask::gestione_um(char tipo) const
|
||||||
|
{
|
||||||
|
const char* const lco = "LCO";
|
||||||
|
for (int i = 0; i < 3 && toupper(tipo) != lco[i]; i++);
|
||||||
|
TConfig ve(CONFIG_DITTA, "ve");
|
||||||
|
return ve.get_bool("GESUM", NULL, i+1);
|
||||||
|
}
|
||||||
|
|
||||||
|
TRelation& TRicalcolo_mask::create_relation()
|
||||||
|
{
|
||||||
|
const int logicnum = get_rec().num(); // Numero logico del file principale
|
||||||
|
|
||||||
|
if (_relation)
|
||||||
|
delete _relation;
|
||||||
|
_relation = new TRelation(logicnum);
|
||||||
|
|
||||||
|
const TString& unita_misura = get(F_UNITA_MISURA);
|
||||||
|
const TString& lingua = get(F_LINGUA);
|
||||||
|
|
||||||
|
const TString& tipo_lco = get(F_TIPO_LCO); // Listini, contratti, offerte
|
||||||
|
const TString& cat_ven = get(F_CAT_VEN);
|
||||||
|
const TString& tipo_cf = get(F_TIPO_CF);
|
||||||
|
const TString& codice_cf = get(F_CODICE_CF);
|
||||||
|
const TString& codice_lco = get(F_CODICE_LCO);
|
||||||
|
|
||||||
|
TString condv_expr;
|
||||||
|
if (cat_ven.not_empty() && codice_cf.not_empty() && codice_lco.not_empty())
|
||||||
|
{
|
||||||
|
condv_expr << "TIPO=\"" << tipo_lco << '"';
|
||||||
|
condv_expr << "|CATVEN=\"" << cat_ven << '"';
|
||||||
|
condv_expr << "|TIPOCF=\"" << tipo_cf << '"';
|
||||||
|
condv_expr << "|CODCF=\"" << codice_cf << '"';
|
||||||
|
condv_expr << "|COD=\"" << codice_lco << '"';
|
||||||
|
}
|
||||||
|
|
||||||
|
TString expr(48);
|
||||||
|
|
||||||
|
switch (logicnum)
|
||||||
|
{
|
||||||
|
case LF_ANAMAG:
|
||||||
|
{
|
||||||
|
expr = "CODART=CODART";
|
||||||
|
if (unita_misura.not_empty())
|
||||||
|
{
|
||||||
|
expr << "|UM=\"" << unita_misura << '"';
|
||||||
|
_relation->add(LF_UMART, expr, 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_relation->add(LF_UMART, expr, 1);
|
||||||
|
|
||||||
|
if (lingua.not_empty())
|
||||||
|
{
|
||||||
|
expr = "CODART=CODART";
|
||||||
|
expr << "|CODLIN=\"" << lingua << '"';
|
||||||
|
_relation->add(LF_DESLIN, expr, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (condv_expr.not_empty())
|
||||||
|
{
|
||||||
|
_relation->add(LF_CONDV, condv_expr, 1);
|
||||||
|
|
||||||
|
if (unita_misura.not_empty())
|
||||||
|
{
|
||||||
|
expr = condv_expr;
|
||||||
|
expr << "|TIPORIGA=\"A\"";
|
||||||
|
expr << "|CODRIGA=CODART";
|
||||||
|
expr << "|UM=\"" << unita_misura << '"';
|
||||||
|
_relation->add(LF_RCONDV, expr, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LF_UMART:
|
||||||
|
{
|
||||||
|
_relation->add(LF_ANAMAG, "CODART=CODART", 1);
|
||||||
|
|
||||||
|
if (lingua.not_empty())
|
||||||
|
{
|
||||||
|
expr = "CODART=CODART";
|
||||||
|
expr << "|CODLIN=\"" << lingua << '"';
|
||||||
|
_relation->add(LF_DESLIN, expr, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (condv_expr.not_empty())
|
||||||
|
{
|
||||||
|
_relation->add(LF_CONDV, condv_expr, 1);
|
||||||
|
expr = condv_expr;
|
||||||
|
expr << "|TIPORIGA=\"A\"";
|
||||||
|
expr << "|CODRIGA=CODART";
|
||||||
|
expr << "|UM=UM";
|
||||||
|
_relation->add(LF_RCONDV, expr, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LF_DESLIN:
|
||||||
|
{
|
||||||
|
_relation->add(LF_ANAMAG, "CODART=CODART", 1);
|
||||||
|
|
||||||
|
expr = "CODART=CODART";
|
||||||
|
if (unita_misura.not_empty())
|
||||||
|
{
|
||||||
|
expr << "|UM=\"" << unita_misura << '"';
|
||||||
|
_relation->add(LF_UMART, expr, 2);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_relation->add(LF_UMART, expr, 1);
|
||||||
|
|
||||||
|
if (condv_expr.not_empty())
|
||||||
|
{
|
||||||
|
_relation->add(LF_CONDV, condv_expr, 1);
|
||||||
|
|
||||||
|
if (unita_misura.not_empty())
|
||||||
|
{
|
||||||
|
expr = condv_expr;
|
||||||
|
expr << "|TIPORIGA=\"A\"";
|
||||||
|
expr << "|CODRIGA=CODART";
|
||||||
|
expr << "|UM=\"" << unita_misura << '"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case LF_RCONDV:
|
||||||
|
{
|
||||||
|
_relation->add(LF_ANAMAG, "CODRIGA=CODART", 1);
|
||||||
|
|
||||||
|
if (gestione_um(tipo_lco[0]))
|
||||||
|
_relation->add(LF_UMART, "CODRIGA=CODART|UM=UM", 2);
|
||||||
|
|
||||||
|
if (lingua.not_empty())
|
||||||
|
{
|
||||||
|
expr = "CODRIGA=CODART";
|
||||||
|
expr << "|CODLIN=\"" << lingua << '"';
|
||||||
|
_relation->add(LF_DESLIN, expr, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
_relation->add(LF_RCONDV, "TIPO=TIPO|CATVEN=CATVEN|TIPOCF=TIPOCF|CODCF=CODCF|COD=COD", 1);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return *_relation;
|
||||||
|
}
|
||||||
|
|
||||||
|
TCursor& TRicalcolo_mask::create_cursor()
|
||||||
|
{
|
||||||
|
TString filter = get(F_FILTER); filter.strip("\n");
|
||||||
|
|
||||||
|
int key = get_int(F_KEY);
|
||||||
|
|
||||||
|
TRectype start(get_rec()), stop(get_rec());
|
||||||
|
start.zero(); stop.zero();
|
||||||
|
|
||||||
|
TToken_string& key_des = get_key_expr(key);
|
||||||
|
|
||||||
|
TSheet_field& fs = (TSheet_field&)field(F_FIELDS);
|
||||||
|
TString field, val;
|
||||||
|
bool key_seq = key > 0; // I primi campi corrispondono alla chiave selezionata?
|
||||||
|
|
||||||
|
for (int r = 0; r < fs.items(); r++)
|
||||||
|
{
|
||||||
|
TToken_string& row = fs.row(r);
|
||||||
|
field = row.get(0);
|
||||||
|
if (field.not_empty())
|
||||||
|
{
|
||||||
|
if (key_seq && key_des.get_pos(field) == r)
|
||||||
|
{
|
||||||
|
val = row.get();
|
||||||
|
if (val.not_empty()) start.put(field, val);
|
||||||
|
val = row.get();
|
||||||
|
if (val.not_empty()) stop.put(field, val);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
key_seq = FALSE;
|
||||||
|
val = row.get();
|
||||||
|
if (val.not_empty())
|
||||||
|
{
|
||||||
|
if (filter.not_empty()) filter << "&&";
|
||||||
|
filter << '(' << field << ">=" << val << ')';
|
||||||
|
}
|
||||||
|
val = row.get();
|
||||||
|
if (val.not_empty())
|
||||||
|
{
|
||||||
|
if (filter.not_empty()) filter << "&&";
|
||||||
|
filter << '(' << field << "<=" << val << ')';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (key <= 0)
|
||||||
|
key = 1;
|
||||||
|
|
||||||
|
if (_cursor)
|
||||||
|
delete _cursor;
|
||||||
|
_cursor = new TCursor(&create_relation(), filter, key, &start, &stop);
|
||||||
|
return *_cursor;
|
||||||
|
}
|
||||||
|
|
||||||
bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k)
|
bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k)
|
||||||
{
|
{
|
||||||
TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask();
|
TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask();
|
||||||
@ -153,6 +410,7 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k)
|
|||||||
const int cur_key = atoi(f.get());
|
const int cur_key = atoi(f.get());
|
||||||
TToken_string& key_expr = m.get_key_expr(cur_key);
|
TToken_string& key_expr = m.get_key_expr(cur_key);
|
||||||
const bool empty = key_expr.empty_items();
|
const bool empty = key_expr.empty_items();
|
||||||
|
bool enable_first_row = TRUE;
|
||||||
|
|
||||||
TSheet_field& sheet = (TSheet_field&)m.field(F_FIELDS);
|
TSheet_field& sheet = (TSheet_field&)m.field(F_FIELDS);
|
||||||
TString_array& sa = sheet.rows_array();
|
TString_array& sa = sheet.rows_array();
|
||||||
@ -170,7 +428,10 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k)
|
|||||||
const int r = sa.add(field);
|
const int r = sa.add(field);
|
||||||
sa.row(r).add(des.get_field_description(field), F_DESCR-F_FIELD);
|
sa.row(r).add(des.get_field_description(field), F_DESCR-F_FIELD);
|
||||||
}
|
}
|
||||||
|
if (des.file_num() == LF_CONDV || des.file_num() == LF_RCONDV)
|
||||||
|
enable_first_row = FALSE;
|
||||||
}
|
}
|
||||||
|
sheet.enable_cell(0, -1, enable_first_row);
|
||||||
sheet.force_update();
|
sheet.force_update();
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@ -254,9 +515,9 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
|
|||||||
const int max = rec.length(field);
|
const int max = rec.length(field);
|
||||||
if (f.get().len() > max)
|
if (f.get().len() > max)
|
||||||
{
|
{
|
||||||
TString msg(32); msg = "Inserire al massimo ";
|
TString msg(32); msg = "Inserire ";
|
||||||
if (max > 1) msg << max; else msg << "un";
|
if (max > 1) msg << max; else msg << "un";
|
||||||
msg << " caratter" << (max > 1 ? 'i' : 'e') << '.';
|
msg << " caratter" << (max > 1 ? 'i' : 'e') << " al massimo.";
|
||||||
ok = f.error_box(msg);
|
ok = f.error_box(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -264,12 +525,36 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Ciclo principale di elaborazione
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TRicalcolo_mask::elabora()
|
||||||
|
{
|
||||||
|
TIndwin iw(48, "Inizializzazione ...", TRUE, FALSE, 48);
|
||||||
|
begin_wait();
|
||||||
|
|
||||||
|
TCursor& cur = create_cursor();
|
||||||
|
|
||||||
|
TViswin vw("ve4100.txt", "Ricalcolo valori",
|
||||||
|
FALSE, TRUE, FALSE, 3, 3, -3, -3, FALSE);
|
||||||
|
|
||||||
|
for (cur = 0; cur.ok(); ++cur)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
end_wait();
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
// Ricalcolo di magazzino
|
// Ricalcolo di magazzino
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
class TRicalcola_application : public TApplication
|
class TRicalcola_application : public TApplication
|
||||||
{
|
{
|
||||||
|
protected:
|
||||||
virtual bool menu(MENU_TAG);
|
virtual bool menu(MENU_TAG);
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
|
|
||||||
@ -288,57 +573,8 @@ bool TRicalcola_application::menu(MENU_TAG)
|
|||||||
{
|
{
|
||||||
TRicalcolo_mask m;
|
TRicalcolo_mask m;
|
||||||
while (m.run() == K_ENTER)
|
while (m.run() == K_ENTER)
|
||||||
{
|
m.elabora();
|
||||||
TString filter = m.get(F_FILTER); filter.strip("\n");
|
|
||||||
|
|
||||||
int key = m.get_int(F_KEY);
|
|
||||||
|
|
||||||
TRectype start(m.get_rec()), stop(m.get_rec());
|
|
||||||
start.zero(); stop.zero();
|
|
||||||
|
|
||||||
TToken_string& key_des = m.get_key_expr(key);
|
|
||||||
|
|
||||||
TSheet_field& fs = (TSheet_field&)m.field(F_FIELDS);
|
|
||||||
TString field, val;
|
|
||||||
for (int r = 0; r < fs.items(); r++)
|
|
||||||
{
|
|
||||||
TToken_string& row = fs.row(r);
|
|
||||||
field = row.get(0);
|
|
||||||
if (field.not_empty())
|
|
||||||
{
|
|
||||||
if (key > 0 && key_des.get_pos(field) >= 0)
|
|
||||||
{
|
|
||||||
val = row.get();
|
|
||||||
if (val.not_empty()) start.put(field, val);
|
|
||||||
val = row.get();
|
|
||||||
if (val.not_empty()) stop.put(field, val);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
val = row.get();
|
|
||||||
if (val.not_empty())
|
|
||||||
{
|
|
||||||
if (filter.not_empty()) filter << "&&";
|
|
||||||
filter << '(' << field << ">=" << val << ')';
|
|
||||||
}
|
|
||||||
val = row.get();
|
|
||||||
if (val.not_empty())
|
|
||||||
{
|
|
||||||
if (filter.not_empty()) filter << "&&";
|
|
||||||
filter << '(' << field << "<=" << val << ')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (key <= 0)
|
|
||||||
key = 1;
|
|
||||||
|
|
||||||
TSheet_field& osf = (TSheet_field&)m.field(F_OUTPUTS);
|
|
||||||
TCursor cur(&m.get_rel(), filter, key,
|
|
||||||
start.empty() ? NULL : &start, stop.empty() ? NULL : &stop);
|
|
||||||
elabora(cur, osf.rows_array());
|
|
||||||
}
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
13
ve/ve4100.h
13
ve/ve4100.h
@ -6,6 +6,19 @@
|
|||||||
#define F_OUTPUTS 105
|
#define F_OUTPUTS 105
|
||||||
#define F_SAVE 106
|
#define F_SAVE 106
|
||||||
|
|
||||||
|
#define F_UNITA_MISURA 201
|
||||||
|
#define F_DESC_UNITA_MISURA 202
|
||||||
|
#define F_LINGUA 203
|
||||||
|
#define F_DESC_LINGUA 204
|
||||||
|
#define F_TIPO_LCO 205
|
||||||
|
#define F_CAT_VEN 206
|
||||||
|
#define F_DESC_CAT_VEN 207
|
||||||
|
#define F_TIPO_CF 208
|
||||||
|
#define F_CODICE_CF 209
|
||||||
|
#define F_RAGSOC 210
|
||||||
|
#define F_CODICE_LCO 211
|
||||||
|
#define F_DESC_CODICE_LCO 212
|
||||||
|
|
||||||
// Primo sheet
|
// Primo sheet
|
||||||
#define F_FIELD 101
|
#define F_FIELD 101
|
||||||
#define F_FROM 102
|
#define F_FROM 102
|
||||||
|
161
ve/ve4100.uml
161
ve/ve4100.uml
@ -14,7 +14,7 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
PAGE "Ricalcolo valori magazzino" -1 -1 78 16
|
PAGE "Parametri di calcolo" -1 -1 78 16
|
||||||
|
|
||||||
GROUPBOX DLG_NULL 76 12
|
GROUPBOX DLG_NULL 76 12
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -25,11 +25,10 @@ LIST F_FILE 32
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "File "
|
PROMPT 2 2 "File "
|
||||||
ITEM "0|Anagrafica magazzino"
|
ITEM "0|Anagrafica magazzino"
|
||||||
ITEM "1|Codici corrispondenti"
|
ITEM "1|Unita' di misura"
|
||||||
ITEM "2|Unita' di misura"
|
ITEM "2|Descrizioni in lingua"
|
||||||
ITEM "3|Descrizioni in lingua"
|
ITEM "3|Condizioni di vendita"
|
||||||
ITEM "4|Condizioni di vendita"
|
ITEM "4|Righe condizioni di vendita"
|
||||||
ITEM "5|Righe condizioni di vendita"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
LIST F_KEY 10
|
LIST F_KEY 10
|
||||||
@ -77,6 +76,156 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Parametri di collegamento" -1 -1 78 16
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Generali"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_UNITA_MISURA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Unita' di misura "
|
||||||
|
FLAGS "U"
|
||||||
|
USE %UMS
|
||||||
|
JOIN %LIN INTO CODTAB==CODTAB
|
||||||
|
INPUT CODTAB F_UNITA_MISURA
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_UNITA_MISURA CODTAB
|
||||||
|
OUTPUT F_DESC_UNITA_MISURA S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_UNITA_MISURA 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 2 ""
|
||||||
|
USE %UMS KEY 2
|
||||||
|
INPUT S0 F_DESC_UNITA_MISURA
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_UNITA_MISURA
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_LINGUA 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 3 "Lingua "
|
||||||
|
FLAGS "U"
|
||||||
|
USE %LIN
|
||||||
|
INPUT CODTAB F_LINGUA
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_LINGUA CODTAB
|
||||||
|
OUTPUT F_DESC_LINGUA S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_LINGUA 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 3 ""
|
||||||
|
USE %LIN KEY 2
|
||||||
|
INPUT S0 F_DESC_LINGUA
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_LINGUA
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
GROUPBOX DLG_NULL 78 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 5 "Condizioni di vendita"
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_TIPO_LCO 1 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Condizioni per "
|
||||||
|
ITEM "L|Listini"
|
||||||
|
ITEM "C|Contratti"
|
||||||
|
ITEM "O|Offerte"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CAT_VEN 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 "Categoria "
|
||||||
|
FLAGS "U"
|
||||||
|
USE CVE
|
||||||
|
INPUT CODTAB F_CAT_VEN
|
||||||
|
DISPLAY "Codice"
|
||||||
|
DISPLAY "Descrizione@50"
|
||||||
|
OUTPUT F_CAT_VEN CODTAB
|
||||||
|
OUTPUT F_DESC_CAT_VEN S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_CAT_VEN 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 7 ""
|
||||||
|
USE CVE KEY 2
|
||||||
|
INPUT S0 F_DESC_CAT_VEN
|
||||||
|
DISPLAY "Descrizione@50"
|
||||||
|
DISPLAY "Codice"
|
||||||
|
COPY OUTPUT F_CAT_VEN
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON F_TIPO_CF 1 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 7 ""
|
||||||
|
ITEM "C|Cliente"
|
||||||
|
ITEM "F|Fornitore"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODICE_CF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 18 8 "Codice "
|
||||||
|
USE LF_CLIFO
|
||||||
|
INPUT TIPOCF F_TIPO_CF SELECT
|
||||||
|
INPUT CODCF F_CODICE_CF
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Descrizione@50" RAGSOC
|
||||||
|
OUTPUT F_CODICE_CF CODCF
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 9 ""
|
||||||
|
USE LF_CLIFO KEY 2
|
||||||
|
INPUT TIPOCF F_TIPO_CF SELECT
|
||||||
|
INPUT RAGSOC F_RAGSOC
|
||||||
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
COPY OUTPUT F_CODICE_CF
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_CODICE_LCO 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Lis/Con/Off "
|
||||||
|
FLAGS "U"
|
||||||
|
USE LF_CONDV
|
||||||
|
INPUT TIPO F_TIPO_LCO SELECT
|
||||||
|
INPUT CATVEN F_CAT_VEN SELECT
|
||||||
|
INPUT TIPOCF F_TIPO_CF SELECT
|
||||||
|
INPUT CODCF F_CODICE_CF SELECT
|
||||||
|
INPUT COD F_CODICE_LCO
|
||||||
|
DISPLAY "Codice" COD
|
||||||
|
DISPLAY "Descrizione@50" DESCR
|
||||||
|
OUTPUT F_CODICE_LCO COD
|
||||||
|
OUTPUT F_DESC_CODICE_LCO DESCR
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESC_CODICE_LCO 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 10 ""
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "Fields" -1 -1 60 6
|
PAGE "Fields" -1 -1 60 6
|
||||||
|
Loading…
x
Reference in New Issue
Block a user