Personalizzazioni per Cigno
git-svn-id: svn://10.65.10.50/branches/R_10_00@22727 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
148f889d51
commit
ab083a1e95
@ -7,15 +7,10 @@ int main(int argc, char** argv)
|
|||||||
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
int n = argc > 1 ? atoi(argv[1]+1) : 0;
|
||||||
switch(n)
|
switch(n)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0: ps0430100(argc, argv); break; //Correlazioni articoli utenti
|
||||||
ps0430100(argc, argv); break; //Correlazioni articoli utenti
|
case 1: ps0430200(argc, argv); break; //Configurazione campi per utente
|
||||||
case 1:
|
//case 2: ps0430300(argc, argv); break; //generazione ordini (è or1400 per il cigno)
|
||||||
ps0430200(argc, argv); break; //Configurazione campi per utente
|
default: ps0430100(argc, argv); break;
|
||||||
case 2:
|
|
||||||
ps0430300(argc, argv); break; //generazione ordini (è or1400 per il cigno)
|
|
||||||
default:
|
|
||||||
ps0430100(argc, argv); break;
|
|
||||||
}
|
}
|
||||||
exit(0);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
237
ps/ps0430100.cpp
237
ps/ps0430100.cpp
@ -18,22 +18,197 @@
|
|||||||
|
|
||||||
class TArt_mask : public TAutomask
|
class TArt_mask : public TAutomask
|
||||||
{
|
{
|
||||||
|
TString _query;
|
||||||
|
TISAM_recordset _recset;
|
||||||
|
bool _filter_changed;
|
||||||
|
|
||||||
|
virtual void next_page(int p);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
void update_sheet();
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
TArt_mask() : TAutomask("ps0430100a") {}
|
TArt_mask();
|
||||||
~TArt_mask() {}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
TArt_mask::TArt_mask() : TAutomask("ps0430100a"), _recset("USE ANAMAG")
|
||||||
|
{
|
||||||
|
TConfig c(CONFIG_DITTA);
|
||||||
|
TSheet_field & sh = sfield(F_ARTICLES);
|
||||||
|
TMask & sh_mask = sh.sheet_mask();
|
||||||
|
TString80 prompt;
|
||||||
|
|
||||||
|
for (int i = 1; i <= 10; i++)
|
||||||
|
{
|
||||||
|
const int col = sh.cid2index(F_USER1 + i -1);
|
||||||
|
TEditable_field & f = sh_mask.efield(F_USER1 + i - 1);
|
||||||
|
|
||||||
|
if (c.get_bool("CHK_USER", "ve", i) && c.get_bool("USERDEF", "or", i))
|
||||||
|
{
|
||||||
|
prompt = c.get("PROMPT_USER", "ve", i);
|
||||||
|
prompt.rpad(20);
|
||||||
|
f.set_prompt(prompt);
|
||||||
|
sh.set_column_header(col, prompt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f.hide();
|
||||||
|
sh.delete_column(col);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TArt_mask::update_sheet()
|
||||||
|
{
|
||||||
|
const bool active_only = get_bool(F_ACTIVEONLY);
|
||||||
|
TSheet_field& sf = sfield(F_ARTICLES);
|
||||||
|
|
||||||
|
TString query("USE ANAMAG KEY ");
|
||||||
|
|
||||||
|
TString select;
|
||||||
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
|
const TString user(get(F_USER));
|
||||||
|
|
||||||
|
const TString & codart = get(F_SCODART);
|
||||||
|
|
||||||
|
if (codart.full())
|
||||||
|
select << "(UPPER(" << ANAMAG_CODART << ")?=UPPER(\"" << codart << "\"))";
|
||||||
|
|
||||||
|
const TString & desart = get(F_SDESART);
|
||||||
|
|
||||||
|
if (desart.full())
|
||||||
|
{
|
||||||
|
if (select.full())
|
||||||
|
select << "&&";
|
||||||
|
select << "(UPPER(" << ANAMAG_DESCR << ")?=UPPER(\"" << desart << "\"))";
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString & desagg = get(F_SDESAGG);
|
||||||
|
|
||||||
|
if (desagg.full())
|
||||||
|
{
|
||||||
|
if (select.full())
|
||||||
|
select << "&&";
|
||||||
|
select << "(UPPER(" << ANAMAG_DESCRAGG << ")?=UPPER(\"" << desagg << "\"))";
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString & codforn = get(F_SCODFOR);
|
||||||
|
|
||||||
|
if (codforn.full())
|
||||||
|
{
|
||||||
|
if (select.full())
|
||||||
|
select << "&&";
|
||||||
|
select << "(" << ANAMAG_CODFORN << "==\"" << codforn << "\")";
|
||||||
|
}
|
||||||
|
|
||||||
|
const TString & ragsoc = get(F_SRAGSOC);
|
||||||
|
|
||||||
|
if (ragsoc.full())
|
||||||
|
{
|
||||||
|
if (select.full())
|
||||||
|
select << "&&";
|
||||||
|
select << "(UPPER(CLIFO.RAGSOC)?=UPPER(\"" << ragsoc << "\"))";
|
||||||
|
}
|
||||||
|
|
||||||
|
TString16 grmerc(get(F_GRMERC));
|
||||||
|
if (grmerc.full())
|
||||||
|
query << '3';
|
||||||
|
else
|
||||||
|
query << '1';
|
||||||
|
|
||||||
|
if (select.full())
|
||||||
|
query << "\nSELECT " << select;
|
||||||
|
|
||||||
|
grmerc.left_just(3);
|
||||||
|
grmerc << get(F_SGRMERC);
|
||||||
|
grmerc.trim();
|
||||||
|
|
||||||
|
if (grmerc.full())
|
||||||
|
query << "\nJOIN CLIFO INTO TIPOCF==\"F\" CODCF==CODFORN\nFROM GRMERC=#GRMERC\nTO GRMERC=#GRMERC";
|
||||||
|
else
|
||||||
|
query << "\nJOIN CLIFO INTO TIPOCF==\"F\" CODCF==CODFORN\n";
|
||||||
|
|
||||||
|
_recset.set(query);
|
||||||
|
|
||||||
|
TVariant var ;
|
||||||
|
|
||||||
|
var = grmerc;
|
||||||
|
_recset.set_var("#GRMERC", var);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
sf.destroy();
|
||||||
|
|
||||||
|
for (bool ok = _recset.move_first(); ok; ok = _recset.move_next())
|
||||||
|
{
|
||||||
|
const TString& codart = _recset.get(ANAMAG_CODART).as_string();
|
||||||
|
|
||||||
|
multirel.put(MULTI_COD, FILE_KEY);
|
||||||
|
multirel.put(MULTI_FIRST, user);
|
||||||
|
multirel.put(MULTI_SECOND, codart);
|
||||||
|
const bool act = multirel.read(_isequal) == NOERR;
|
||||||
|
|
||||||
|
if (active_only && !act)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
TToken_string & row = sf.row(i++);
|
||||||
|
row.add(codart, sf.cid2index(F_CODART));
|
||||||
|
row.add(_recset.get(ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
||||||
|
row.add(act ? "X" : " ", sf.cid2index(F_ATTIVO));
|
||||||
|
row.add(_recset.get(ANAMAG_CODFORN).as_string(), sf.cid2index(F_CODFORN));
|
||||||
|
row.add(_recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(F_RAGSOC));
|
||||||
|
row.add(_recset.get(ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
|
||||||
|
row.add(_recset.get(ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
|
||||||
|
row.add(_recset.get(ANAMAG_DESCRAGG).as_string().left(50), sf.cid2index(F_DESCRAGG));
|
||||||
|
row.add(_recset.get(ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
|
||||||
|
row.add(_recset.get(ANAMAG_VALSTATUN).as_string(), sf.cid2index(F_VALSTATUN));
|
||||||
|
row.add(_recset.get(ANAMAG_ULTCOS1).as_string(), sf.cid2index(F_ULTCOS1));
|
||||||
|
row.add(_recset.get(ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
|
||||||
|
row.add(_recset.get(ANAMAG_USER2).as_string(), sf.cid2index(F_USER2));
|
||||||
|
row.add(_recset.get(ANAMAG_USER3).as_string(), sf.cid2index(F_USER3));
|
||||||
|
row.add(_recset.get(ANAMAG_USER4).as_string(), sf.cid2index(F_USER4));
|
||||||
|
row.add(_recset.get(ANAMAG_USER5).as_string(), sf.cid2index(F_USER5));
|
||||||
|
row.add(_recset.get(ANAMAG_USER6).as_string(), sf.cid2index(F_USER6));
|
||||||
|
row.add(_recset.get(ANAMAG_USER7).as_string(), sf.cid2index(F_USER7));
|
||||||
|
row.add(_recset.get(ANAMAG_USER8).as_string(), sf.cid2index(F_USER8));
|
||||||
|
row.add(_recset.get(ANAMAG_USER9).as_string(), sf.cid2index(F_USER9));
|
||||||
|
row.add(_recset.get(ANAMAG_USER10).as_string(), sf.cid2index(F_USER10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TArt_mask::next_page(int p)
|
||||||
|
{
|
||||||
|
TAutomask::next_page(p);
|
||||||
|
if (_filter_changed)
|
||||||
|
{
|
||||||
|
TSheet_field & sf = sfield(F_ARTICLES);
|
||||||
|
if (curr_win() == sf.parent())
|
||||||
|
{
|
||||||
|
update_sheet();
|
||||||
|
sf.force_update();
|
||||||
|
_filter_changed = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
{
|
{
|
||||||
|
case F_GRMERC:
|
||||||
|
case F_SGRMERC:
|
||||||
|
case F_SCODART:
|
||||||
|
case F_SDESART:
|
||||||
|
case F_SDESAGG:
|
||||||
|
case F_SCODFOR:
|
||||||
|
case F_SRAGSOC:
|
||||||
|
if (e == fe_modify)
|
||||||
|
_filter_changed = true;
|
||||||
|
break;
|
||||||
case F_SET:
|
case F_SET:
|
||||||
if (e == fe_button)
|
if (e == fe_button)
|
||||||
{
|
{
|
||||||
TSheet_field& sf = sfield(F_ARTICLES);
|
TSheet_field& sf = sfield(F_ARTICLES);
|
||||||
const long items = sf.items();
|
const int items = sf.items();
|
||||||
bool select = true;
|
bool select = true;
|
||||||
const int cid = sf.cid2index(F_ATTIVO);
|
const int cid = sf.cid2index(F_ATTIVO);
|
||||||
int i ;
|
int i ;
|
||||||
@ -48,19 +223,14 @@ bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_RESET:
|
case F_ACTIVEONLY:
|
||||||
if (e == fe_button)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
TSheet_field & sf = sfield(F_ARTICLES);
|
if (!field(F_USER).empty())
|
||||||
const long items = sf.items();
|
|
||||||
|
|
||||||
for (int i = 0; i < items; i++)
|
|
||||||
{
|
{
|
||||||
TToken_string & row = sf.row(i);
|
update_sheet();
|
||||||
|
sfield(F_ARTICLES).force_update();
|
||||||
row.add(" ", sf.cid2index(F_ATTIVO));
|
|
||||||
}
|
}
|
||||||
sf.force_update();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -71,7 +241,6 @@ bool TArt_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
|
|
||||||
class TRelArticoli_multirel_app : public TMultirel_application
|
class TRelArticoli_multirel_app : public TMultirel_application
|
||||||
{
|
{
|
||||||
TISAM_recordset _recset;
|
|
||||||
TArt_mask * _mask;
|
TArt_mask * _mask;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -92,7 +261,7 @@ public:
|
|||||||
|
|
||||||
virtual const char * extra_modules() const {return "ba";}
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
|
|
||||||
TRelArticoli_multirel_app() : _recset("USE ANAMAG KEY 1") {}
|
TRelArticoli_multirel_app() {}
|
||||||
virtual ~TRelArticoli_multirel_app() {}
|
virtual ~TRelArticoli_multirel_app() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -110,11 +279,6 @@ bool TRelArticoli_multirel_app::user_create()
|
|||||||
|
|
||||||
bool TRelArticoli_multirel_app::user_destroy()
|
bool TRelArticoli_multirel_app::user_destroy()
|
||||||
{
|
{
|
||||||
/* prefix().close_closeable_isamfiles();
|
|
||||||
|
|
||||||
TSystemisamfile multirel(LF_MULTIREL);
|
|
||||||
|
|
||||||
multirel.pack(); */
|
|
||||||
delete _mask;
|
delete _mask;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -122,33 +286,9 @@ bool TRelArticoli_multirel_app::user_destroy()
|
|||||||
int TRelArticoli_multirel_app::read(TMask& m)
|
int TRelArticoli_multirel_app::read(TMask& m)
|
||||||
{
|
{
|
||||||
const TRectype & curr = get_relation()->lfile().curr();
|
const TRectype & curr = get_relation()->lfile().curr();
|
||||||
TSheet_field & sf = m.sfield(F_ARTICLES);
|
TArt_mask & mask = (TArt_mask &) m;
|
||||||
TLocalisamfile multirel(LF_MULTIREL);
|
|
||||||
const TString user(m.get(F_USER));
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
sf.destroy();
|
mask.update_sheet();
|
||||||
for (bool ok = _recset.move_first(); ok; ok = _recset.move_next())
|
|
||||||
{
|
|
||||||
TToken_string & row = sf.row(i++);
|
|
||||||
const TString & codart = _recset.get(ANAMAG_CODART).as_string();
|
|
||||||
|
|
||||||
row.add(codart, sf.cid2index(F_CODART));
|
|
||||||
row.add(_recset.get(ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
|
||||||
row.add(_recset.get(ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
|
|
||||||
row.add(_recset.get(ANAMAG_CODFORN).as_string(), sf.cid2index(F_CODFORN));
|
|
||||||
TToken_string key; key.format("F|%ld", _recset.get(ANAMAG_CODFORN).as_int());
|
|
||||||
|
|
||||||
row.add(cache().get(LF_CLIFO, key, "RAGSOC"), sf.cid2index(F_RAGSOC));
|
|
||||||
|
|
||||||
multirel.put(MULTI_COD, FILE_KEY);
|
|
||||||
multirel.put(MULTI_FIRST, user);
|
|
||||||
multirel.put(MULTI_SECOND, codart);
|
|
||||||
if (multirel.read(_isequal) == NOERR)
|
|
||||||
row.add("X", sf.cid2index(F_ATTIVO));
|
|
||||||
else
|
|
||||||
row.add(" ", sf.cid2index(F_ATTIVO));
|
|
||||||
}
|
|
||||||
return NOERR;
|
return NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,13 +296,12 @@ int TRelArticoli_multirel_app::rewrite(const TMask& m)
|
|||||||
{
|
{
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
TSheet_field & sf = m.sfield(F_ARTICLES);
|
TSheet_field & sf = m.sfield(F_ARTICLES);
|
||||||
int i = 0;
|
|
||||||
TLocalisamfile multirel(LF_MULTIREL);
|
TLocalisamfile multirel(LF_MULTIREL);
|
||||||
const TString user(m.get(F_USER));
|
const TString user(m.get(F_USER));
|
||||||
|
|
||||||
for (bool ok = _recset.move_first(); err == NOERR && ok; ok = _recset.move_next())
|
for (int i = 0; i < sf.items(); i++)
|
||||||
{
|
{
|
||||||
TToken_string & row = sf.row(i++);
|
TToken_string & row = sf.row(i);
|
||||||
bool selected = *row.get(sf.cid2index(F_ATTIVO)) > ' ';
|
bool selected = *row.get(sf.cid2index(F_ATTIVO)) > ' ';
|
||||||
|
|
||||||
multirel.zero();
|
multirel.zero();
|
||||||
|
@ -6,11 +6,38 @@
|
|||||||
#define F_DUSER 152
|
#define F_DUSER 152
|
||||||
#define F_ARTICLES 153
|
#define F_ARTICLES 153
|
||||||
#define F_SET 154
|
#define F_SET 154
|
||||||
#define F_RESET 155
|
#define F_ACTIVEONLY 155
|
||||||
|
#define F_GRMERC 156
|
||||||
|
#define F_DGRMERC 157
|
||||||
|
#define F_SGRMERC 158
|
||||||
|
#define F_DSGRMERC 159
|
||||||
|
#define F_SCODART 160
|
||||||
|
#define F_SDESART 161
|
||||||
|
#define F_SDESAGG 162
|
||||||
|
#define F_SCODFOR 163
|
||||||
|
#define F_SRAGSOC 164
|
||||||
|
|
||||||
|
|
||||||
#define F_CODART 101
|
#define F_CODART 101
|
||||||
#define F_DESCR 102
|
#define F_DESCR 102
|
||||||
#define F_ATTIVO 103
|
#define F_ATTIVO 103
|
||||||
#define F_DESCRAGG 104
|
#define F_CODFORN 104
|
||||||
#define F_CODFORN 105
|
#define F_RAGSOC 105
|
||||||
#define F_RAGSOC 106
|
|
||||||
|
#define F_LEADTIME 106
|
||||||
|
#define F_LOTTOMIN 107
|
||||||
|
#define F_DESCRAGG 108
|
||||||
|
#define F_PPCONF 109
|
||||||
|
#define F_VALSTATUN 110
|
||||||
|
#define F_ULTCOS1 111
|
||||||
|
#define F_USER1 112
|
||||||
|
#define F_USER2 113
|
||||||
|
#define F_USER3 114
|
||||||
|
#define F_USER4 115
|
||||||
|
#define F_USER5 116
|
||||||
|
#define F_USER6 117
|
||||||
|
#define F_USER7 118
|
||||||
|
#define F_USER8 119
|
||||||
|
#define F_USER9 120
|
||||||
|
#define F_USER10 121
|
||||||
|
|
||||||
|
@ -33,9 +33,8 @@ END
|
|||||||
|
|
||||||
STRING F_USER 8
|
STRING F_USER 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 4 2 "Utente "
|
PROMPT 4 0 "Utente "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
// FIELD FIRST
|
|
||||||
KEY 1
|
KEY 1
|
||||||
USE LF_USER SELECT ISGROUP!="X"
|
USE LF_USER SELECT ISGROUP!="X"
|
||||||
INPUT USERNAME F_USER
|
INPUT USERNAME F_USER
|
||||||
@ -50,24 +49,132 @@ END
|
|||||||
|
|
||||||
STRING F_DUSER 50
|
STRING F_DUSER 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 2 ""
|
PROMPT 25 0 ""
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
SPREADSHEET F_ARTICLES 85 -3
|
BOOLEAN F_ACTIVEONLY
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 4 "Articoli"
|
PROMPT 4 1 "Mostrare solo gli articoli attivi"
|
||||||
ITEM "Codice@20"
|
|
||||||
ITEM "Descrizione@45"
|
|
||||||
ITEM "Attivo"
|
|
||||||
ITEM "Descrizione fornitore@45"
|
|
||||||
ITEM "Codice Fonitore"
|
|
||||||
ITEM "Ragione sociale@45"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON F_SET 10 2
|
BUTTON F_SET 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -11 -1 "~Tutti"
|
PROMPT -1 0 "~Tutti"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_ARTICLES
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Articoli"
|
||||||
|
ITEM "Codice@20"
|
||||||
|
ITEM "Descrizione@45"
|
||||||
|
ITEM "Attivo"
|
||||||
|
ITEM "Fornit."
|
||||||
|
ITEM "Ragione sociale@45"
|
||||||
|
ITEM "Lead\ntime@5"
|
||||||
|
ITEM "Lotto minimo\ndi riordino@10"
|
||||||
|
ITEM "Descrizione aggiuntiva@50"
|
||||||
|
ITEM "Q.tà per unità\ndi vendita@15"
|
||||||
|
ITEM "Prezzo unitario@15"
|
||||||
|
ITEM "Prezzo unità\ndi vendita@15"
|
||||||
|
ITEM "Campo Aggiuntivo 1@15"
|
||||||
|
ITEM "Campo Aggiuntivo 2@15"
|
||||||
|
ITEM "Campo Aggiuntivo 3@15"
|
||||||
|
ITEM "Campo Aggiuntivo 4@15"
|
||||||
|
ITEM "Campo Aggiuntivo 5@15"
|
||||||
|
ITEM "Campo Aggiuntivo 6@15"
|
||||||
|
ITEM "Campo Aggiuntivo 7@15"
|
||||||
|
ITEM "Campo Aggiuntivo 8@15"
|
||||||
|
ITEM "Campo Aggiuntivo 9@15"
|
||||||
|
ITEM "Campo Aggiuntivo 10@15"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Filtri" -1 -1 80 20
|
||||||
|
|
||||||
|
STRING F_GRMERC 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Gruppo merceologico "
|
||||||
|
FLAG "U"
|
||||||
|
USE GMC KEY 1 SELECT CODTAB[4,5]==""
|
||||||
|
INPUT CODTAB F_GRMERC
|
||||||
|
DISPLAY "Codice" CODTAB[1,3]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_DGRMERC S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
FIELD OR14_GRM
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DGRMERC 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 4 ""
|
||||||
|
USE GMC KEY 2 SELECT CODTAB[4,5]==""
|
||||||
|
INPUT S0 F_DGRMERC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_DGRMERC S0
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SGRMERC 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Sottogruppo merceologico "
|
||||||
|
FLAG "U"
|
||||||
|
USE GMC
|
||||||
|
INPUT CODTAB[1,3] F_GRMERC
|
||||||
|
INPUT CODTAB[4,5] F_SGRMERC
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_GRMERC CODTAB[1,3]
|
||||||
|
OUTPUT F_SGRMERC CODTAB[4,5]
|
||||||
|
OUTPUT F_DSGRMERC S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_SGR
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DSGRMERC 50 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 35 6 ""
|
||||||
|
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
|
||||||
|
INPUT S0 F_DSGRMERC
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_SGRMERC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SCODART 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Codice articolo "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SDESART 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Descrizione "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SDESAGG 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Descrizione aggiuntiva "
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SCODFOR 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Codice fornitore "
|
||||||
|
USE LF_CLIFO
|
||||||
|
INPUT TIPOCF "F"
|
||||||
|
INPUT CODCF F_SCODFOR
|
||||||
|
DISPLAY "Codice " CODCF
|
||||||
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
|
OUTPUT F_SCODFOR CODCF
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_SRAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Ragione sociale "
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
@ -93,24 +200,138 @@ BEGIN
|
|||||||
PROMPT 2 4 "Attivo per questo utente"
|
PROMPT 2 4 "Attivo per questo utente"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_DESCRAGG 50 45
|
NUMBER F_CODFORN 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 " "
|
PROMPT 2 6 " "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODFORN 6
|
STRING F_RAGSOC 50 45
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 " "
|
PROMPT 2 8 " "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_RAGSOC 50 45
|
NUMBER F_LEADTIME 5
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 " "
|
PROMPT 2 10 "Lead time "
|
||||||
FLAGS "D"
|
FLAGS "D"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
NUMBER F_LOTTOMIN 10 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 10 "Lotto "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESCRAGG 50 45
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 " "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_PPCONF 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Q.tà per unità di vendita "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_VALSTATUN 15 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Prezzo unitario "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_ULTCOS1 15 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Prezzo unità di vendita "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Campi Utente" -1 -1 80 20
|
||||||
|
|
||||||
|
STRING F_USER1 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 2 "Campo utente 1 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER2 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 4 "Campo utente 2 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER3 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 6 "Campo utente 3 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER4 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 8 "Campo utente 4 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER5 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 10 "Campo utente 5 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER6 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Campo utente 6 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER7 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 14 "Campo utente 7 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER8 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 16 "Campo utente 8 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER9 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 18 "Campo utente 9 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_USER10 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 20 "Campo utente 10 "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -12 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 11 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -22 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
@ -1,10 +1,13 @@
|
|||||||
#include <applicat.h>
|
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <relation.h>
|
#include <defmask.h>
|
||||||
|
#include <msksheet.h>
|
||||||
|
#include <mask.h>
|
||||||
|
#include <recarray.h>
|
||||||
|
#include <recset.h>
|
||||||
|
#include <tabapp.h>
|
||||||
|
|
||||||
#include <multirel.h>
|
#include <multirel.h>
|
||||||
#include "../mg/anamag.h"
|
#include "../mg/anamag.h"
|
||||||
|
|
||||||
#include "ps0430200a.h"
|
#include "ps0430200a.h"
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
@ -13,23 +16,13 @@
|
|||||||
|
|
||||||
class TUser_mask : public TAutomask
|
class TUser_mask : public TAutomask
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool get_user_ini(TFilename& name) const;
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
TUser_mask() : TAutomask("ps0430200a") {}
|
TUser_mask() : TAutomask("ps0430200a") {}
|
||||||
|
~TUser_mask() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
bool TUser_mask::get_user_ini(TFilename& name) const
|
|
||||||
{
|
|
||||||
name = prefix().get_studio();
|
|
||||||
name.add("config");
|
|
||||||
name.add(get(F_USER));
|
|
||||||
name.ext("ini");
|
|
||||||
return name.exist();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
switch (o.dlg())
|
switch (o.dlg())
|
||||||
@ -37,9 +30,11 @@ bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
case F_USER:
|
case F_USER:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
{
|
{
|
||||||
const char* const defpar = "or";
|
const TString& new_user = o.get();
|
||||||
TFilename inipath; get_user_ini(inipath);
|
const TString16 old_user = user();
|
||||||
TConfig userconf(inipath, defpar);
|
user() = new_user;
|
||||||
|
const char* defpar = "or";
|
||||||
|
TConfig userconf(CONFIG_USER, defpar);
|
||||||
|
|
||||||
for (int i = o.mask().fields()-1; i >= 0; i--)
|
for (int i = o.mask().fields()-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
@ -47,11 +42,9 @@ bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
const TFieldref* fr = f.field();
|
const TFieldref* fr = f.field();
|
||||||
|
|
||||||
if (fr != NULL)
|
if (fr != NULL)
|
||||||
{
|
|
||||||
f.set(fr->read(userconf, defpar));
|
f.set(fr->read(userconf, defpar));
|
||||||
f.check();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
user() = old_user;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -62,9 +55,12 @@ bool TUser_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
|
|
||||||
class TUser_set_app : public TSkeleton_application
|
class TUser_set_app : public TSkeleton_application
|
||||||
{
|
{
|
||||||
protected:
|
public:
|
||||||
virtual const char * extra_modules() const {return "ba";}
|
virtual const char * extra_modules() const {return "ba";}
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
|
|
||||||
|
TUser_set_app() {}
|
||||||
|
virtual ~TUser_set_app() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
void TUser_set_app::main_loop()
|
void TUser_set_app::main_loop()
|
||||||
@ -73,17 +69,20 @@ void TUser_set_app::main_loop()
|
|||||||
|
|
||||||
while (mask.run() == K_ENTER)
|
while (mask.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
const char* const defpar = "or";
|
const TString& new_user = mask.get(F_USER);
|
||||||
TFilename inipath; mask.get_user_ini(inipath);
|
const TString16 old_user = user();
|
||||||
TConfig userconf(inipath, defpar);
|
user() = new_user;
|
||||||
|
const char* defpar = "or";
|
||||||
|
TConfig userconf(CONFIG_USER, defpar);
|
||||||
|
|
||||||
for (int i = mask.fields()-1; i >= 0; i--)
|
for (int i = mask.fields()-1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
const TMask_field& f = mask.fld(i);
|
TMask_field& f = mask.fld(i);
|
||||||
const TFieldref* fr = f.field();
|
const TFieldref* fr = f.field();
|
||||||
if (fr != NULL)
|
if (fr != NULL)
|
||||||
fr->write(userconf, defpar, f.get());
|
fr->write(userconf, defpar, f.get());
|
||||||
}
|
}
|
||||||
|
user() = old_user;
|
||||||
mask.reset();
|
mask.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,11 @@
|
|||||||
#define F_FSCT 119
|
#define F_FSCT 119
|
||||||
#define F_DASTATO 120
|
#define F_DASTATO 120
|
||||||
#define F_ASTATO 121
|
#define F_ASTATO 121
|
||||||
|
#define F_CODNUMCAR 122
|
||||||
|
#define F_DESNUMCAR 123
|
||||||
|
#define F_TIPODOCCAR 124
|
||||||
|
#define F_DESTIPODOCCAR 125
|
||||||
|
#define F_STATOEVASO 126
|
||||||
|
#define F_STATOINI 127
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ END
|
|||||||
|
|
||||||
STRING F_SGRMERC 2
|
STRING F_SGRMERC 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 6 "Sottogr.merc ."
|
PROMPT 2 5 "Sottogr.merc. "
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
USE GMC
|
USE GMC
|
||||||
INPUT CODTAB[1,3] F_GRMERC
|
INPUT CODTAB[1,3] F_GRMERC
|
||||||
@ -84,7 +84,7 @@ END
|
|||||||
|
|
||||||
STRING F_DSGRMERC 50
|
STRING F_DSGRMERC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 29 6 ""
|
PROMPT 29 5 ""
|
||||||
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
|
USE GMC KEY 2 SELECT CODTAB[4,5] != ""
|
||||||
INPUT S0 F_DSGRMERC
|
INPUT S0 F_DSGRMERC
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
@ -95,7 +95,7 @@ END
|
|||||||
|
|
||||||
STRING F_CDCT 20
|
STRING F_CDCT 20
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 8 "CDC/Commessa "
|
PROMPT 2 7 "CDC/Commessa "
|
||||||
FLAGS "UZ"
|
FLAGS "UZ"
|
||||||
USE CMS
|
USE CMS
|
||||||
INPUT CODTAB F_CDCT
|
INPUT CODTAB F_CDCT
|
||||||
@ -108,7 +108,7 @@ END
|
|||||||
|
|
||||||
STRING F_FSCT 10
|
STRING F_FSCT 10
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 45 8 "Fase "
|
PROMPT 45 7 "Fase "
|
||||||
FLAGS "UZ"
|
FLAGS "UZ"
|
||||||
USE FSC
|
USE FSC
|
||||||
INPUT CODTAB F_FSCT
|
INPUT CODTAB F_FSCT
|
||||||
@ -121,7 +121,7 @@ END
|
|||||||
|
|
||||||
STRING F_CODNUM 4
|
STRING F_CODNUM 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 10 "Numerazione "
|
PROMPT 2 9 "Numerazione "
|
||||||
USE %NUM
|
USE %NUM
|
||||||
INPUT CODTAB F_CODNUM
|
INPUT CODTAB F_CODNUM
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -135,7 +135,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESNUM 50
|
STRING F_DESNUM 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 29 10 ""
|
PROMPT 29 9 ""
|
||||||
USE %NUM KEY 2
|
USE %NUM KEY 2
|
||||||
INPUT S0 F_DESNUM
|
INPUT S0 F_DESNUM
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
@ -146,7 +146,7 @@ END
|
|||||||
|
|
||||||
STRING F_TIPODOC 4
|
STRING F_TIPODOC 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 12 "Tipo "
|
PROMPT 2 10 "Tipo "
|
||||||
USE %TIP
|
USE %TIP
|
||||||
INPUT CODTAB F_TIPODOC
|
INPUT CODTAB F_TIPODOC
|
||||||
DISPLAY "Codice" CODTAB
|
DISPLAY "Codice" CODTAB
|
||||||
@ -160,7 +160,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESTIPODOC 50
|
STRING F_DESTIPODOC 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 29 12 ""
|
PROMPT 29 10 ""
|
||||||
USE %TIP KEY 2
|
USE %TIP KEY 2
|
||||||
INPUT S0 F_DESTIPODOC
|
INPUT S0 F_DESTIPODOC
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
@ -169,9 +169,85 @@ BEGIN
|
|||||||
CHECKTYPE SEARCH
|
CHECKTYPE SEARCH
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
STRING F_CODNUMCAR 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 12 "Num.doc.carico "
|
||||||
|
USE %NUM
|
||||||
|
INPUT CODTAB F_CODNUMCAR
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_CODNUMCAR CODTAB
|
||||||
|
OUTPUT F_DESNUMCAR S0
|
||||||
|
FLAG "UG"
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_NUMCAR
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESNUMCAR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 12 ""
|
||||||
|
USE %NUM KEY 2
|
||||||
|
INPUT S0 F_DESNUMCAR
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_CODNUMCAR
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_TIPODOCCAR 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Tipo doc.car. "
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_TIPODOCCAR
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_TIPODOCCAR CODTAB
|
||||||
|
OUTPUT F_DESTIPODOCCAR S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FLAG "UG"
|
||||||
|
FIELD OR14_TIPCAR
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_DESTIPODOCCAR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 29 13 ""
|
||||||
|
USE %TIP KEY 2
|
||||||
|
INPUT S0 F_DESTIPODOCCAR
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
COPY OUTPUT F_TIPODOCCAR
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_STATOEVASO 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 13 "Tipo doc.car. "
|
||||||
|
PROMPT 2 14 "Stato ord. ev. "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F_STATOEVASO
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_STATOEVASO CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_STATOEVASO
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_STATOINI 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 14 "Stato ordine iniziale "
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F_STATOINI
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_STATOINI CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
FIELD OR14_STATOINI
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_MAG 3
|
STRING F_MAG 3
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 14 "Magazzino "
|
PROMPT 2 15 "Magazzino "
|
||||||
FLAGS "UG"
|
FLAGS "UG"
|
||||||
USE MAG SELECT CODTAB[4,5]==""
|
USE MAG SELECT CODTAB[4,5]==""
|
||||||
INPUT CODTAB F_MAG
|
INPUT CODTAB F_MAG
|
||||||
@ -185,7 +261,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESMAG 50
|
STRING F_DESMAG 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 29 14 ""
|
PROMPT 29 15 ""
|
||||||
USE MAG KEY 2 SELECT CODTAB[4,5]==""
|
USE MAG KEY 2 SELECT CODTAB[4,5]==""
|
||||||
INPUT S0 F_DESMAG
|
INPUT S0 F_DESMAG
|
||||||
DISPLAY "Denominazione magazzino@50" S0
|
DISPLAY "Denominazione magazzino@50" S0
|
||||||
|
676
ps/ps0430300.cpp
676
ps/ps0430300.cpp
@ -7,7 +7,6 @@
|
|||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <reprint.h>
|
#include <reprint.h>
|
||||||
#include <utility.h>
|
#include <utility.h>
|
||||||
#include <xvtility.h>
|
|
||||||
|
|
||||||
#include "../or/orlib.h"
|
#include "../or/orlib.h"
|
||||||
#include "../cg/cglib01.h"
|
#include "../cg/cglib01.h"
|
||||||
@ -95,14 +94,13 @@ class TGenera_ordini_mask : public TAutomask
|
|||||||
TString _doc_filter;
|
TString _doc_filter;
|
||||||
int _days_interval;
|
int _days_interval;
|
||||||
int _riga_da_selezionare;
|
int _riga_da_selezionare;
|
||||||
short _campo_da_selezionare;
|
|
||||||
bool _filter_changed, _order_changed;
|
bool _filter_changed, _order_changed;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void serialize(bool bSave);
|
void serialize(bool bSave);
|
||||||
void load_user_defs();
|
void load_user_defs();
|
||||||
void update_sheet();
|
void update_sheet();
|
||||||
void update_documents();
|
void update_orders();
|
||||||
void reconstruction(const TDocumento& doc2delete);
|
void reconstruction(const TDocumento& doc2delete);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -133,14 +131,6 @@ protected:
|
|||||||
public:
|
public:
|
||||||
void generate_orders();
|
void generate_orders();
|
||||||
void generate_carics();
|
void generate_carics();
|
||||||
void generate_docs_head(const char type, const TSheet_field& sf,
|
|
||||||
long& minforn, long& maxforn, TAssoc_array& documents);
|
|
||||||
void generate_caric_row(const TSheet_field& sf, TToken_string* row, const real qta,
|
|
||||||
TDocumento* d,TRiga_documento& rdoc, TLocalisamfile& righedoc);
|
|
||||||
void generate_order_row(const TSheet_field& sf, TToken_string* row, const real qta,
|
|
||||||
TDocumento* d, TRiga_documento& rdoc, const TRectype& forn, const TRectype& fornven);
|
|
||||||
void write_docs(const char tipo, const long& minforn, const long& maxforn, TAssoc_array& documents);
|
|
||||||
|
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
@ -275,34 +265,34 @@ void TGenera_ordini_mask::update_sheet()
|
|||||||
TToken_string & row = sf.row(i);
|
TToken_string & row = sf.row(i);
|
||||||
const TString & codart = recset.get(LF_ANAMAG, ANAMAG_CODART).as_string();
|
const TString & codart = recset.get(LF_ANAMAG, ANAMAG_CODART).as_string();
|
||||||
|
|
||||||
row.add(codart, sf.cid2index(SA_CODART));
|
row.add(codart, sf.cid2index(F_CODART));
|
||||||
art.read(codart);
|
art.read(codart);
|
||||||
const real giac = art.giacenza_anno(codmag, "", anno);
|
const real giac = art.giacenza_anno(codmag, "", anno);
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCR).as_string(), sf.cid2index(SA_DESCR));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCR).as_string(), sf.cid2index(F_DESCR));
|
||||||
row.add(recset.get("UMART.UM").as_string(), sf.cid2index(SA_UM));
|
row.add(recset.get("UMART.UM").as_string(), sf.cid2index(F_UM));
|
||||||
|
|
||||||
const long codforn = recset.get(LF_ANAMAG, ANAMAG_CODFORN).as_int();
|
const long codforn = recset.get(LF_ANAMAG, ANAMAG_CODFORN).as_int();
|
||||||
|
|
||||||
row.add(codforn, sf.cid2index(SA_FORNITORE));
|
row.add(codforn, sf.cid2index(F_FORNITORE));
|
||||||
row.add(recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(SA_RAGSOC));
|
row.add(recset.get("CLIFO.RAGSOC").as_string(), sf.cid2index(F_RAGSOC));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(SA_LEADTIME));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_GIORNIRIOR).as_string(), sf.cid2index(F_LEADTIME));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_LOTTORIOR).as_string(), sf.cid2index(SA_LOTTOMIN));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_LOTTORIOR).as_string(), sf.cid2index(F_LOTTOMIN));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCRAGG).as_string(), sf.cid2index(SA_DESCRAGG));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_DESCRAGG).as_string(), sf.cid2index(F_DESCRAGG));
|
||||||
row.add(giac.string(), sf.cid2index(SA_GIACENZA));
|
row.add(giac.string(), sf.cid2index(F_GIACENZA));
|
||||||
|
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_PPCONF).as_string(), sf.cid2index(SA_PPCONF));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_PPCONF).as_string(), sf.cid2index(F_PPCONF));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER1).as_string(), sf.cid2index(SA_USER1));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER1).as_string(), sf.cid2index(F_USER1));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER2).as_string(), sf.cid2index(SA_USER2));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER2).as_string(), sf.cid2index(F_USER2));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER3).as_string(), sf.cid2index(SA_USER3));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER3).as_string(), sf.cid2index(F_USER3));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER4).as_string(), sf.cid2index(SA_USER4));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER4).as_string(), sf.cid2index(F_USER4));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER5).as_string(), sf.cid2index(SA_USER5));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER5).as_string(), sf.cid2index(F_USER5));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER6).as_string(), sf.cid2index(SA_USER6));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER6).as_string(), sf.cid2index(F_USER6));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER7).as_string(), sf.cid2index(SA_USER7));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER7).as_string(), sf.cid2index(F_USER7));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER8).as_string(), sf.cid2index(SA_USER8));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER8).as_string(), sf.cid2index(F_USER8));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER9).as_string(), sf.cid2index(SA_USER9));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER9).as_string(), sf.cid2index(F_USER9));
|
||||||
row.add(recset.get(LF_ANAMAG, ANAMAG_USER10).as_string(), sf.cid2index(SA_USER10));
|
row.add(recset.get(LF_ANAMAG, ANAMAG_USER10).as_string(), sf.cid2index(F_USER10));
|
||||||
const real disp = art.disponibilita(codes, get(F_MAG), NULL);
|
const real disp = art.disponibilita(codes, get(F_MAG), NULL);
|
||||||
row.add(disp.string(), sf.cid2index(SA_DISPON));
|
row.add(disp.string(), sf.cid2index(F_DISPON));
|
||||||
sf.check_row(i);
|
sf.check_row(i);
|
||||||
if (check_expr)
|
if (check_expr)
|
||||||
{
|
{
|
||||||
@ -328,12 +318,12 @@ void TGenera_ordini_mask::update_sheet()
|
|||||||
sf.force_update();
|
sf.force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TGenera_ordini_mask::update_documents()
|
void TGenera_ordini_mask::update_orders()
|
||||||
{
|
{
|
||||||
_order_changed = false;
|
_order_changed = false;
|
||||||
TWait_cursor hourglass;
|
TWait_cursor hourglass;
|
||||||
|
|
||||||
TSheet_field& sh = sfield(F_DOCUMENTS);
|
TSheet_field& sh = sfield(F_ORDERS);
|
||||||
sh.destroy();
|
sh.destroy();
|
||||||
|
|
||||||
TString query;
|
TString query;
|
||||||
@ -360,7 +350,7 @@ void TGenera_ordini_mask::update_documents()
|
|||||||
TMask& m = sh.sheet_mask();
|
TMask& m = sh.sheet_mask();
|
||||||
TRelation& rel = *orders.cursor()->relation();
|
TRelation& rel = *orders.cursor()->relation();
|
||||||
|
|
||||||
const int status_pos = sh.cid2index(SD_STATODOC);
|
const int status_pos = sh.cid2index(S_STATODOC);
|
||||||
for (bool ok = orders.move_first(); ok; ok = orders.move_next())
|
for (bool ok = orders.move_first(); ok; ok = orders.move_next())
|
||||||
{
|
{
|
||||||
TToken_string& row = sh.row(-1);
|
TToken_string& row = sh.row(-1);
|
||||||
@ -397,9 +387,9 @@ void TGenera_ordini_mask::next_page(int p)
|
|||||||
}
|
}
|
||||||
if (_order_changed)
|
if (_order_changed)
|
||||||
{
|
{
|
||||||
const TSheet_field& sf = sfield(F_DOCUMENTS);
|
const TSheet_field& sf = sfield(F_ORDERS);
|
||||||
if (win() == sf.parent())
|
if (win() == sf.parent())
|
||||||
update_documents();
|
update_orders();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -411,19 +401,19 @@ bool TGenera_ordini_mask::on_sheet_event(TOperable_field& o, TField_event e, lon
|
|||||||
case se_query_del:
|
case se_query_del:
|
||||||
case se_query_add:
|
case se_query_add:
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case fe_init:
|
case fe_init:
|
||||||
if (o.dlg() == F_ARTICLES)
|
if (o.dlg() == F_ARTICLES)
|
||||||
update_sheet();
|
update_sheet();
|
||||||
else
|
else
|
||||||
update_documents();
|
update_orders();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//gestione automatica immissione qta per articolo (con terminalino)
|
|
||||||
case se_notify_modify:
|
case se_notify_modify:
|
||||||
if (o.dlg() == F_ARTICLES)
|
if (o.dlg() == F_ARTICLES)
|
||||||
{
|
{
|
||||||
_campo_da_selezionare = F_CAZ_CODART;
|
TEdit_field& cc = efield(F_CAZ_CODART);
|
||||||
|
cc.reset();
|
||||||
|
cc.set_focus();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -514,7 +504,7 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
case F_DASTATO:
|
case F_DASTATO:
|
||||||
case F_ASTATO:
|
case F_ASTATO:
|
||||||
if (e == fe_modify)
|
if (e == fe_modify)
|
||||||
update_documents();
|
update_orders();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case F_CAZ_CODART: //ricerca riga da codart in testa alla maschera
|
case F_CAZ_CODART: //ricerca riga da codart in testa alla maschera
|
||||||
@ -620,7 +610,7 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
capp().print_doc(c->curr());
|
capp().print_doc(c->curr());
|
||||||
|
|
||||||
update_sheet();
|
update_sheet();
|
||||||
update_documents();
|
update_orders();
|
||||||
}
|
}
|
||||||
ok = false; // Non uscire
|
ok = false; // Non uscire
|
||||||
}
|
}
|
||||||
@ -668,7 +658,7 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
doc.remove();
|
doc.remove();
|
||||||
}
|
}
|
||||||
update_sheet();
|
update_sheet();
|
||||||
update_documents();
|
update_orders();
|
||||||
}
|
}
|
||||||
ok = false; // Non uscire
|
ok = false; // Non uscire
|
||||||
}
|
}
|
||||||
@ -677,7 +667,7 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
if (e == fe_button && jolly == 0)
|
if (e == fe_button && jolly == 0)
|
||||||
{
|
{
|
||||||
capp().generate_orders();
|
capp().generate_orders();
|
||||||
update_documents();
|
update_orders();
|
||||||
update_sheet();
|
update_sheet();
|
||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
@ -686,7 +676,7 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
|
|||||||
if (e == fe_button && jolly == 0)
|
if (e == fe_button && jolly == 0)
|
||||||
{
|
{
|
||||||
capp().generate_carics();
|
capp().generate_carics();
|
||||||
update_documents();
|
update_orders();
|
||||||
update_sheet();
|
update_sheet();
|
||||||
ok = false;
|
ok = false;
|
||||||
}
|
}
|
||||||
@ -742,23 +732,12 @@ void TGenera_ordini_mask::on_idle()
|
|||||||
TAutomask::on_idle();
|
TAutomask::on_idle();
|
||||||
if (_riga_da_selezionare >= 0)
|
if (_riga_da_selezionare >= 0)
|
||||||
{
|
{
|
||||||
TString msg;
|
|
||||||
msg << "Vado alla riga " << _riga_da_selezionare;
|
|
||||||
xvtil_statbar_set(msg);
|
|
||||||
//si posiziona sulla qta
|
//si posiziona sulla qta
|
||||||
TSheet_field& sf_righe = sfield(F_ARTICLES);
|
TSheet_field& sf_righe = sfield(F_ARTICLES);
|
||||||
sf_righe.set_focus();
|
const int column = sf_righe.cid2index(F_QTA);
|
||||||
sf_righe.select(_riga_da_selezionare, true);
|
sf_righe.select(_riga_da_selezionare, column, true);
|
||||||
_riga_da_selezionare = -1;
|
_riga_da_selezionare = -1;
|
||||||
}
|
sf_righe.set_focus();
|
||||||
|
|
||||||
//si riposiziona sul campo selezionatore resettandolo in modo da perdere il precedente articolo
|
|
||||||
if (_campo_da_selezionare > 0)
|
|
||||||
{
|
|
||||||
TEdit_field& cc = efield(_campo_da_selezionare);
|
|
||||||
_campo_da_selezionare = -1;
|
|
||||||
cc.reset();
|
|
||||||
cc.set_focus();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -793,8 +772,8 @@ TGenera_ordini_mask::TGenera_ordini_mask()
|
|||||||
|
|
||||||
for (int i = 1; i <= 10; i++)
|
for (int i = 1; i <= 10; i++)
|
||||||
{
|
{
|
||||||
const int col = sh.cid2index(SA_USER1 + i -1);
|
const int col = sh.cid2index(F_USER1 + i -1);
|
||||||
TEditable_field & f = sh_mask.efield(SA_USER1 + i - 1);
|
TEditable_field & f = sh_mask.efield(F_USER1 + i - 1);
|
||||||
|
|
||||||
if (c.get_bool("CHK_USER", "ve", i) && c.get_bool("USERDEF", "or", i))
|
if (c.get_bool("CHK_USER", "ve", i) && c.get_bool("USERDEF", "or", i))
|
||||||
{
|
{
|
||||||
@ -812,7 +791,6 @@ TGenera_ordini_mask::TGenera_ordini_mask()
|
|||||||
|
|
||||||
//resetta l'indicatore di riga da selezionare
|
//resetta l'indicatore di riga da selezionare
|
||||||
_riga_da_selezionare = -1;
|
_riga_da_selezionare = -1;
|
||||||
_campo_da_selezionare = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TGenera_ordini_mask::~TGenera_ordini_mask()
|
TGenera_ordini_mask::~TGenera_ordini_mask()
|
||||||
@ -849,30 +827,28 @@ void TCreazione_ordini::print()
|
|||||||
{
|
{
|
||||||
_mask->field(DLG_PRINT).on_hit();
|
_mask->field(DLG_PRINT).on_hit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TCreazione_ordini::print_doc(const TRectype & doc)
|
void TCreazione_ordini::print_doc(const TRectype & doc)
|
||||||
{
|
{
|
||||||
const TTipo_documento tipo(doc.get(DOC_TIPODOC));
|
const TTipo_documento tipo(doc.get(DOC_TIPODOC));
|
||||||
|
|
||||||
TFilename rep;
|
TFilename rep; tipo.main_print_profile(rep, 0);
|
||||||
tipo.main_print_profile(rep, 0);
|
rep.ext("rep");
|
||||||
|
|
||||||
TString cmdline;
|
TString commandline;
|
||||||
if (rep.ends_with("rep", true)) // Esiste il nuovo report :-)
|
if (rep.custom_path()) // Esiste il nuovo report :-)
|
||||||
cmdline = "ve1 -2";
|
commandline = "ve1 -2";
|
||||||
else // Esiste il vecchio form :-(
|
else // Esiste il vecchio form :-(
|
||||||
cmdline = "ve1 -0";
|
commandline = "ve1 -0";
|
||||||
|
|
||||||
cmdline << ' ' << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO) << ' ';
|
commandline << ' ' << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO) << ' ';
|
||||||
cmdline << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << ' ' << doc.get(DOC_NDOC);
|
commandline << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << ' ' << doc.get(DOC_NDOC);
|
||||||
cmdline << " D";
|
commandline << " D";
|
||||||
|
|
||||||
const int ncopie = tipo.ncopie();
|
const int ncopie = tipo.ncopie();
|
||||||
if (ncopie > 0)
|
if (ncopie > 0)
|
||||||
cmdline << ' ' << ncopie;
|
commandline << ' ' << ncopie;
|
||||||
|
|
||||||
TExternal_app interattivo( cmdline );
|
TExternal_app interattivo( commandline );
|
||||||
|
|
||||||
interattivo.run();
|
interattivo.run();
|
||||||
}
|
}
|
||||||
@ -897,201 +873,71 @@ void TCreazione_ordini::aggiorna_stato_doc_orig(const TRectype& rdoc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TCreazione_ordini::generate_carics()
|
||||||
//genera la riga del documento di carico (una sola per chiamata)
|
|
||||||
void TCreazione_ordini::generate_caric_row(const TSheet_field& sf, TToken_string* row,
|
|
||||||
const real qta, TDocumento* d, TRiga_documento& rdoc, TLocalisamfile& righedoc)
|
|
||||||
{
|
{
|
||||||
const TDate dataord = row->get(sf.cid2index(SD_DATADOC));
|
TGenera_ordini_mask& mask = *_mask;
|
||||||
const long ndoc = row->get_long(sf.cid2index(SD_NUMDOC));
|
TSheet_field& sf = mask.sfield(F_ORDERS);
|
||||||
const int nriga = row->get_int(sf.cid2index(SD_NUMRIGA));
|
|
||||||
TRectype& rigcar = righedoc.curr();
|
long minforn = 999999L;
|
||||||
rigcar.put(RDOC_PROVV, 'D');
|
long maxforn = 0L;
|
||||||
rigcar.put(RDOC_ANNO, dataord.year());
|
TAssoc_array orders;
|
||||||
rigcar.put(RDOC_CODNUM, _mask->get(F_CODNUM));
|
|
||||||
rigcar.put(RDOC_NDOC, ndoc);
|
if (sf.items() > 0)
|
||||||
rigcar.put(RDOC_NRIGA, nriga);
|
|
||||||
int err = righedoc.read(_isequal, _lock);
|
|
||||||
if (err == NOERR)
|
|
||||||
{
|
{
|
||||||
d->copy_data(rdoc, rigcar);
|
const TDate datadoc = mask.get_date(F_DATADOCCAR);
|
||||||
rdoc.put(rdoc.field_qta(), qta);
|
|
||||||
rigcar.add(rdoc.field_qtaevasa(), qta);
|
|
||||||
if (rigcar.get_real(rdoc.field_qtaevasa()) >= rigcar.get_real(rdoc.field_qta()))
|
|
||||||
rigcar.put(RDOC_RIGAEVASA, true);
|
|
||||||
rdoc.put(RDOC_DACODNUM, rigcar.get(RDOC_CODNUM));
|
|
||||||
rdoc.put(RDOC_DAANNO, rigcar.get(RDOC_ANNO));
|
|
||||||
rdoc.put(RDOC_DAPROVV, rigcar.get(RDOC_PROVV));
|
|
||||||
rdoc.put(RDOC_DANDOC, rigcar.get(RDOC_NDOC));
|
|
||||||
rdoc.put(RDOC_DAIDRIGA, rigcar.get(RDOC_NRIGA));
|
|
||||||
err = righedoc.rewrite();
|
|
||||||
if (err == NOERR)
|
|
||||||
aggiorna_stato_doc_orig(rigcar);
|
|
||||||
|
|
||||||
}
|
|
||||||
if (err != NOERR)
|
|
||||||
error_box(FR("Impossibile aggiornare la riga %d del doc. %ld"), nriga, ndoc);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//genera la riga del documento ordine (una sola per chiamata)
|
|
||||||
void TCreazione_ordini::generate_order_row(const TSheet_field& sf, TToken_string* row, const real qta,
|
|
||||||
TDocumento* d, TRiga_documento& rdoc, const TRectype& forn, const TRectype& fornven)
|
|
||||||
{
|
|
||||||
const TString codart = row->get(sf.cid2index(SA_CODART));
|
|
||||||
|
|
||||||
TString8 codmag = _mask->get(F_MAG);
|
|
||||||
codmag.right_just(3);
|
|
||||||
codmag << _mask->get(F_DEP);
|
|
||||||
|
|
||||||
TString8 codmagc = _mask->get(F_MAGC);
|
|
||||||
codmagc.right_just(3);
|
|
||||||
codmagc << _mask->get(F_DEPC);
|
|
||||||
|
|
||||||
const bool ultimo_prezzo = _mask->get(F_PREZZO) == "U";
|
|
||||||
|
|
||||||
rdoc.put(RDOC_CODMAG, codmag);
|
|
||||||
rdoc.put(RDOC_CODMAGC, codmagc);
|
|
||||||
rdoc.put(RDOC_CODART, codart);
|
|
||||||
rdoc.put(RDOC_CODARTMAG, codart);
|
|
||||||
rdoc.put(RDOC_CHECKED, "X");
|
|
||||||
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(SA_DESCR)));
|
|
||||||
|
|
||||||
const TString descr_agg = row->get(sf.cid2index(SA_DESCRAGG));
|
|
||||||
if (descr_agg.full())
|
|
||||||
{
|
|
||||||
rdoc.put(RDOC_DESCLUNGA, "X");
|
|
||||||
rdoc.put(RDOC_DESCEST, descr_agg);
|
|
||||||
}
|
|
||||||
|
|
||||||
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(SA_UM)));
|
|
||||||
rdoc.put(RDOC_QTA, qta);
|
|
||||||
|
|
||||||
const TDate datacons(row->get(sf.cid2index(SA_DATACONS)));
|
|
||||||
rdoc.put(RDOC_DATACONS, datacons);
|
|
||||||
|
|
||||||
const TRectype& articolo = cache().get(LF_ANAMAG, codart);
|
|
||||||
TPrice prezzo;
|
|
||||||
if (ultimo_prezzo)
|
|
||||||
prezzo = articolo.get_real(ANAMAG_ULTCOS1);
|
|
||||||
else
|
|
||||||
prezzo = articolo.get_real(ANAMAG_COSTSTD);
|
|
||||||
|
|
||||||
const TString4 codval = forn.get(CLI_CODVAL);
|
|
||||||
prezzo.change_value(codval);
|
|
||||||
rdoc.put(RDOC_PREZZO, prezzo.get_num());
|
|
||||||
|
|
||||||
const TString4 codiva = fornven.get(CFV_ASSFIS);
|
|
||||||
if (codiva.full())
|
|
||||||
rdoc.put(RDOC_CODIVA, codiva);
|
|
||||||
else
|
|
||||||
rdoc.put(RDOC_CODIVA, articolo.get(ANAMAG_CODIVA));
|
|
||||||
|
|
||||||
const TString commessa = row->get(sf.cid2index(SA_CDC));
|
|
||||||
const TString fase = row->get(sf.cid2index(SA_FSC));
|
|
||||||
rdoc.put(RDOC_CODCMS, commessa);
|
|
||||||
rdoc.put(RDOC_FASCMS, fase);
|
|
||||||
|
|
||||||
for (int i = 0; i < 10 ; i++)
|
|
||||||
if (_userfld.row(i).full())
|
|
||||||
rdoc.put(_userfld.row(i), _mask->get(SA_USER1 + i));
|
|
||||||
|
|
||||||
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(SA_CODAGG1)));
|
|
||||||
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(SA_CODAGG2)));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//genera la testata del documento di 'C'arico o dell''O'rdine e chiama i metodi per creare le righe..
|
|
||||||
//..di entrambi
|
|
||||||
void TCreazione_ordini::generate_docs_head(const char type, const TSheet_field& sf,
|
|
||||||
long& minforn, long& maxforn, TAssoc_array& documents)
|
|
||||||
{
|
|
||||||
TString msg;
|
|
||||||
TString4 codnum, tipodoc;
|
|
||||||
TDate datadoc;
|
|
||||||
TLocalisamfile righedoc(LF_RIGHEDOC);
|
|
||||||
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case 'C':
|
|
||||||
{
|
|
||||||
datadoc = _mask->get_date(F_DATADOCCAR);
|
|
||||||
|
|
||||||
const char* const defpar = "or";
|
const char* const defpar = "or";
|
||||||
TConfig c(CONFIG_USER, defpar);
|
TConfig c(CONFIG_USER, defpar);
|
||||||
codnum = c.get("OR14_NUMCAR");
|
const TString& codnum = c.get("OR14_NUMCAR");
|
||||||
tipodoc = c.get("OR14_TIPCAR");
|
const TString& tipodoc = c.get("OR14_TIPCAR");
|
||||||
|
|
||||||
msg << "Generazione documenti di carico";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'O':
|
|
||||||
{
|
|
||||||
datadoc = _mask->get_date(F_DATADOC);
|
|
||||||
|
|
||||||
codnum = _mask->get(F_CODNUM);
|
|
||||||
tipodoc = _mask->get(F_TIPODOC);
|
|
||||||
|
|
||||||
msg << "Generazione ordini";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//parte comune ai casi 'C' ed 'O'
|
|
||||||
const TTipo_documento tipo(tipodoc);
|
const TTipo_documento tipo(tipodoc);
|
||||||
const TString& commessa_testata = _mask->get(F_CDCT);
|
|
||||||
const TString& fase_testata = _mask->get(F_FSCT);
|
|
||||||
|
|
||||||
TProgind pi(sf.items(), msg, true, true);
|
//const bool ultimo_prezzo = mask.get(F_PREZZO) == "U";
|
||||||
|
const TString& commessat = mask.get(F_CDCT);
|
||||||
|
const TString& faset = mask.get(F_FSCT);
|
||||||
|
|
||||||
//giro su tutte le righe dello sheet
|
//TString8 codmag(mask.get(F_MAG));
|
||||||
|
//codmag.right_just(3);
|
||||||
|
//codmag << mask.get(F_DEP);
|
||||||
|
|
||||||
|
//TString8 codmagc(mask.get(F_MAGC));
|
||||||
|
//codmagc.right_just(3);
|
||||||
|
//codmagc << mask.get(F_DEPC);
|
||||||
|
|
||||||
|
TLocalisamfile righedoc(LF_RIGHEDOC);
|
||||||
|
|
||||||
|
TProgind pi(sf.items(), TR("Generazione documenti di carico"), true, true);
|
||||||
FOR_EACH_SHEET_ROW(sf, n, row)
|
FOR_EACH_SHEET_ROW(sf, n, row)
|
||||||
{
|
{
|
||||||
if (!pi.setstatus(n))
|
if (!pi.setstatus(n))
|
||||||
break;
|
break;
|
||||||
if (row->get_char(sf.cid2index(SD_DAEVADERE) == 'X'))
|
if (row->get_char(sf.cid2index(S_DAEVADERE) == 'X'))
|
||||||
{
|
{
|
||||||
real qta;
|
const real qta = row->get(sf.cid2index(S_QTADAEVADERE));
|
||||||
TString8 codforn;
|
|
||||||
TDate datacons;
|
|
||||||
|
|
||||||
if (type == 'C')
|
|
||||||
{
|
|
||||||
qta = row->get(sf.cid2index(SD_QTADAEVADERE));
|
|
||||||
codforn = row->get(sf.cid2index(SD_FORNITORE));
|
|
||||||
datacons = row->get(sf.cid2index(SD_DATACONS));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qta = row->get(sf.cid2index(SA_QTA));
|
|
||||||
codforn = row->get(sf.cid2index(SA_FORNITORE));
|
|
||||||
datacons = row->get(sf.cid2index(SA_DATACONS));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!qta.is_zero())
|
if (!qta.is_zero())
|
||||||
{
|
{
|
||||||
//dati relativi al fornitore..
|
const TString8 codforn(row->get(sf.cid2index(S_FORNITORE)));
|
||||||
const long cod = atol(codforn);
|
const long cod = atol(codforn);
|
||||||
TString8 key; key.format("F|%ld", cod);
|
TString8 key; key.format("F|%ld", cod);
|
||||||
const TRectype& forn = cache().get(LF_CLIFO, key);
|
const TRectype& forn = cache().get(LF_CLIFO, key);
|
||||||
//..e cfven collegato
|
const TDate datacons(row->get(sf.cid2index(S_DATACONS)));
|
||||||
|
const TString4 codval(forn.get(CLI_CODVAL));
|
||||||
const TRectype& forven = cache().get(LF_CFVEN, key);
|
const TRectype& forven = cache().get(LF_CFVEN, key);
|
||||||
|
const TString4 codiva(forven.get(CFV_ASSFIS));
|
||||||
|
const TString commessa = row->get(sf.cid2index(S_CDC));
|
||||||
|
const TString fase = row->get(sf.cid2index(S_FSC));
|
||||||
|
|
||||||
TDocumento* d = (TDocumento*)documents.objptr(codforn);
|
TDocumento* d = (TDocumento*)orders.objptr(codforn);
|
||||||
if (d == NULL)
|
if (d == NULL)
|
||||||
{
|
{
|
||||||
//il documento va creato
|
|
||||||
d = new TDocumento('D', datadoc.year(), codnum, 0L);
|
d = new TDocumento('D', datadoc.year(), codnum, 0L);
|
||||||
|
|
||||||
d->put(DOC_TIPODOC, tipodoc);
|
d->put(DOC_TIPODOC, tipodoc);
|
||||||
d->put(DOC_TIPOCF, "F");
|
d->put(DOC_TIPOCF, "F");
|
||||||
d->put(DOC_CODCF, codforn);
|
d->put(DOC_CODCF, codforn);
|
||||||
d->put(DOC_DATADOC, datadoc);
|
d->put(DOC_DATADOC, datadoc);
|
||||||
d->put(DOC_DATACONS, datacons);
|
d->put(DOC_DATACONS, datacons);
|
||||||
d->put(DOC_CODVAL, forn.get(CLI_CODVAL));
|
d->put(DOC_CODVAL, codval);
|
||||||
d->put(DOC_CODLIN, forn.get(CLI_CODLIN));
|
d->put(DOC_CODLIN, forn.get(CLI_CODLIN));
|
||||||
d->put(DOC_CODPAG, forn.get(CLI_CODPAG));
|
d->put(DOC_CODPAG, forn.get(CLI_CODPAG));
|
||||||
d->put(DOC_CODABIA, forn.get(CLI_CODABI));
|
d->put(DOC_CODABIA, forn.get(CLI_CODABI));
|
||||||
@ -1116,49 +962,103 @@ void TCreazione_ordini::generate_docs_head(const char type, const TSheet_field&
|
|||||||
d->put(DOC_ADDBOLLI, forven.get(CFV_ADDBOLLI));
|
d->put(DOC_ADDBOLLI, forven.get(CFV_ADDBOLLI));
|
||||||
d->put(DOC_CATVEN, forven.get(CFV_CATVEN));
|
d->put(DOC_CATVEN, forven.get(CFV_CATVEN));
|
||||||
d->put(DOC_CODLIST, forven.get(CFV_CODLIST));
|
d->put(DOC_CODLIST, forven.get(CFV_CODLIST));
|
||||||
d->put(DOC_CODCMS, commessa_testata);
|
d->put(DOC_CODCMS, commessat);
|
||||||
if (type == 'O')
|
// le note non dovrebbero servire
|
||||||
d->put(DOC_NOTE, _mask->get(F_NOTE));
|
//d->put(DOC_NOTE, mask.get(F_NOTE));
|
||||||
|
|
||||||
const TString& causmag = tipo.caus_mov();
|
const TString& causmag = tipo.caus_mov();
|
||||||
d->put(DOC_CAUSMAG, causmag);
|
d->put(DOC_CAUSMAG, causmag);
|
||||||
|
|
||||||
documents.add(codforn, d);
|
orders.add(codforn, d);
|
||||||
if (cod < minforn)
|
if (cod < minforn)
|
||||||
minforn = cod;
|
minforn = cod;
|
||||||
if (cod > maxforn)
|
if (cod > maxforn)
|
||||||
maxforn = cod;
|
maxforn = cod;
|
||||||
} //if (d == NULL)...
|
}
|
||||||
|
|
||||||
|
|
||||||
//generazione righe del documento
|
|
||||||
TRiga_documento& rdoc = d->new_row("01");
|
TRiga_documento& rdoc = d->new_row("01");
|
||||||
|
|
||||||
if (type == 'C')
|
|
||||||
generate_caric_row(sf, row, qta, d, rdoc, righedoc);
|
/* guy si e' molto arrabbiato nel leggere queste righe di pseudo codice (attenzione, morde!)
|
||||||
|
const TString codart(row->get(sf.cid2index(S_CODART)));
|
||||||
|
|
||||||
|
//rdoc.put(RDOC_CODMAG, codmag);
|
||||||
|
//rdoc.put(RDOC_CODMAGC, codmagc);
|
||||||
|
rdoc.put(RDOC_CODART, codart);
|
||||||
|
rdoc.put(RDOC_CODARTMAG, codart);
|
||||||
|
rdoc.put(RDOC_CHECKED, "X");
|
||||||
|
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(S_DESCART)));
|
||||||
|
|
||||||
|
//const TString descr_agg(row->get(sf.cid2index(S_DESCRAGG)));
|
||||||
|
//if (descr_agg.full())
|
||||||
|
//{
|
||||||
|
// rdoc.put(RDOC_DESCLUNGA, "X");
|
||||||
|
// rdoc.put(RDOC_DESCEST, descr_agg);
|
||||||
|
//}
|
||||||
|
|
||||||
|
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(S_UM)));
|
||||||
|
rdoc.put(RDOC_QTA, qta);
|
||||||
|
rdoc.put(RDOC_DATACONS, datacons);
|
||||||
|
|
||||||
|
const TRectype& articolo = cache().get(LF_ANAMAG, codart);
|
||||||
|
//TPrice prezzo;
|
||||||
|
//if (ultimo_prezzo)
|
||||||
|
// prezzo = articolo.get_real(ANAMAG_ULTCOS1);
|
||||||
|
//else
|
||||||
|
// prezzo = articolo.get_real(ANAMAG_COSTSTD);
|
||||||
|
//prezzo.change_value(codval);
|
||||||
|
//rdoc.put(RDOC_PREZZO, prezzo.get_num());
|
||||||
|
if (codiva.full())
|
||||||
|
rdoc.put(RDOC_CODIVA, codiva);
|
||||||
else
|
else
|
||||||
generate_order_row(sf, row, qta, d, rdoc, forn, forven);
|
rdoc.put(RDOC_CODIVA, articolo.get(ANAMAG_CODIVA));
|
||||||
|
rdoc.put(RDOC_CODCMS, commessa);
|
||||||
|
rdoc.put(RDOC_FASCMS, fase);
|
||||||
|
|
||||||
|
for (int i = 0; i < 10 ; i++)
|
||||||
|
if (_userfld.row(i).full())
|
||||||
|
rdoc.put(_userfld.row(i), mask.get(F_USER1 + i));
|
||||||
|
|
||||||
} //if (!qta.is_zero())...
|
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
|
||||||
} //if (row->get_char...
|
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
|
||||||
} //FOR_EACH_SHEET_ROW(sf, n, row)...
|
*/
|
||||||
|
const TDate dataord = row->get(sf.cid2index(S_DATADOC));
|
||||||
|
const long ndoc = row->get_long(sf.cid2index(S_NUMDOC));
|
||||||
|
const int nriga = row->get_int(sf.cid2index(S_NUMRIGA));
|
||||||
|
TRectype& rigord = righedoc.curr();
|
||||||
|
rigord.put(RDOC_PROVV, 'D');
|
||||||
|
rigord.put(RDOC_ANNO, dataord.year());
|
||||||
|
rigord.put(RDOC_CODNUM, mask.get(F_CODNUM));
|
||||||
|
rigord.put(RDOC_NDOC, ndoc);
|
||||||
|
rigord.put(RDOC_NRIGA, nriga);
|
||||||
|
int err = righedoc.read(_isequal, _lock);
|
||||||
|
if (err == NOERR)
|
||||||
|
{
|
||||||
|
d->copy_data(rdoc, rigord);
|
||||||
|
rdoc.put(rdoc.field_qta(), qta);
|
||||||
|
rigord.add(rdoc.field_qtaevasa(), qta);
|
||||||
|
if (rigord.get_real(rdoc.field_qtaevasa()) >= rigord.get_real(rdoc.field_qta()))
|
||||||
|
rigord.put(RDOC_RIGAEVASA, true);
|
||||||
|
rdoc.put(RDOC_DACODNUM, rigord.get(RDOC_CODNUM));
|
||||||
|
rdoc.put(RDOC_DAANNO, rigord.get(RDOC_ANNO));
|
||||||
|
rdoc.put(RDOC_DAPROVV, rigord.get(RDOC_PROVV));
|
||||||
|
rdoc.put(RDOC_DANDOC, rigord.get(RDOC_NDOC));
|
||||||
|
rdoc.put(RDOC_DAIDRIGA, rigord.get(RDOC_NRIGA));
|
||||||
|
err = righedoc.rewrite();
|
||||||
|
if (err == NOERR)
|
||||||
|
aggiorna_stato_doc_orig(rigord);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (err != NOERR)
|
||||||
|
error_box(FR("Impossibile aggiornare la riga %d del doc. %ld"), nriga, ndoc);
|
||||||
//salva i documenti generati
|
}
|
||||||
void TCreazione_ordini::write_docs(const char tipo, const long& minforn, const long& maxforn, TAssoc_array& documents)
|
}
|
||||||
{
|
}
|
||||||
TString msg;
|
|
||||||
switch (tipo)
|
|
||||||
{
|
|
||||||
case 'C': msg << "Registrazione documenti di carico"; break;
|
|
||||||
case 'O': msg << "Registrazione ordini"; break;
|
|
||||||
default: break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TProgind pi(documents.items(), msg, true, true);
|
if (orders.items() > 0)
|
||||||
|
{
|
||||||
|
TProgind pi(orders.items(), TR("Registrazione documenti di carico"), true, true);
|
||||||
TString cmdline;
|
TString cmdline;
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
TString8 key;
|
TString8 key;
|
||||||
@ -1166,7 +1066,199 @@ void TCreazione_ordini::write_docs(const char tipo, const long& minforn, const l
|
|||||||
for (long cod = minforn; cod <= maxforn; cod++)
|
for (long cod = minforn; cod <= maxforn; cod++)
|
||||||
{
|
{
|
||||||
key.format("%ld", cod);
|
key.format("%ld", cod);
|
||||||
TDocumento* d = (TDocumento*)documents.objptr(key);
|
TDocumento* d = (TDocumento*)orders.objptr(key);
|
||||||
|
if (d != NULL)
|
||||||
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
if (d->write() == NOERR)
|
||||||
|
{
|
||||||
|
if (cmdline.blank())
|
||||||
|
{
|
||||||
|
const TTipo_documento& tipo = d->tipo();
|
||||||
|
TFilename rep;
|
||||||
|
tipo.main_print_profile(rep, 1);
|
||||||
|
|
||||||
|
rep.ext("rep");
|
||||||
|
|
||||||
|
if (rep.custom_path()) // Esiste il nuovo report :-)
|
||||||
|
cmdline = "ve1 -2";
|
||||||
|
else // Esiste il vecchio form :-(
|
||||||
|
cmdline = "ve1 -0";
|
||||||
|
}
|
||||||
|
cnt++;
|
||||||
|
const long ndoc = d->get_long(DOC_NDOC);
|
||||||
|
if (mindoc <= 0 || ndoc < mindoc)
|
||||||
|
mindoc = ndoc;
|
||||||
|
if (ndoc > maxdoc)
|
||||||
|
maxdoc = ndoc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (yesno_box(TR("Sono stati generati %d documenti:\nSi desidera stamparli ora?"), cnt))
|
||||||
|
{
|
||||||
|
const TString& codnum = mask.get(F_CODNUM);
|
||||||
|
const TDate datadoc(TODAY);
|
||||||
|
const int anno = datadoc.year();
|
||||||
|
cmdline << " " << codnum << ' ' << anno << " D " << mindoc << ' ' << maxdoc;
|
||||||
|
TExternal_app prg(cmdline);
|
||||||
|
prg.run(true, true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TCreazione_ordini::generate_orders()
|
||||||
|
{
|
||||||
|
TGenera_ordini_mask& mask = *_mask;
|
||||||
|
TSheet_field& sf = mask.sfield(F_ARTICLES);
|
||||||
|
|
||||||
|
long minforn = 999999L;
|
||||||
|
long maxforn = 0L;
|
||||||
|
TAssoc_array orders;
|
||||||
|
|
||||||
|
if (sf.items() > 0)
|
||||||
|
{
|
||||||
|
const TDate datadoc = mask.get_date(F_DATADOC);
|
||||||
|
const TString& codnum = mask.get(F_CODNUM);
|
||||||
|
const TString& tipodoc = mask.get(F_TIPODOC);
|
||||||
|
const TTipo_documento tipo(tipodoc);
|
||||||
|
|
||||||
|
const bool ultimo_prezzo = mask.get(F_PREZZO) == "U";
|
||||||
|
const TString& commessat = mask.get(F_CDCT);
|
||||||
|
const TString& faset = mask.get(F_FSCT);
|
||||||
|
|
||||||
|
TString8 codmag(mask.get(F_MAG));
|
||||||
|
codmag.right_just(3);
|
||||||
|
codmag << mask.get(F_DEP);
|
||||||
|
|
||||||
|
TString8 codmagc(mask.get(F_MAGC));
|
||||||
|
codmagc.right_just(3);
|
||||||
|
codmagc << mask.get(F_DEPC);
|
||||||
|
|
||||||
|
TProgind pi(sf.items(), TR("Generazione ordini"), true, true);
|
||||||
|
FOR_EACH_SHEET_ROW(sf, n, row)
|
||||||
|
{
|
||||||
|
if (!pi.setstatus(n))
|
||||||
|
break;
|
||||||
|
|
||||||
|
const real qta = row->get(sf.cid2index(F_QTA));
|
||||||
|
if (!qta.is_zero())
|
||||||
|
{
|
||||||
|
const TString8 codforn(row->get(sf.cid2index(F_FORNITORE)));
|
||||||
|
const long cod = atol(codforn);
|
||||||
|
TString8 key; key.format("F|%ld", cod);
|
||||||
|
const TRectype& forn = cache().get(LF_CLIFO, key);
|
||||||
|
const TDate datacons(row->get(sf.cid2index(F_DATACONS)));
|
||||||
|
const TString4 codval(forn.get(CLI_CODVAL));
|
||||||
|
const TRectype& forven = cache().get(LF_CFVEN, key);
|
||||||
|
const TString4 codiva(forven.get(CFV_ASSFIS));
|
||||||
|
const TString commessa = row->get(sf.cid2index(F_CDC));
|
||||||
|
const TString fase = row->get(sf.cid2index(F_FSC));
|
||||||
|
|
||||||
|
TDocumento* d = (TDocumento*)orders.objptr(codforn);
|
||||||
|
if (d == NULL)
|
||||||
|
{
|
||||||
|
d = new TDocumento('D', datadoc.year(), codnum, 0L);
|
||||||
|
d->put(DOC_TIPODOC, tipodoc);
|
||||||
|
d->put(DOC_TIPOCF, "F");
|
||||||
|
d->put(DOC_CODCF, codforn);
|
||||||
|
d->put(DOC_DATADOC, datadoc);
|
||||||
|
d->put(DOC_DATACONS, datacons);
|
||||||
|
d->put(DOC_CODVAL, codval);
|
||||||
|
d->put(DOC_CODLIN, forn.get(CLI_CODLIN));
|
||||||
|
d->put(DOC_CODPAG, forn.get(CLI_CODPAG));
|
||||||
|
d->put(DOC_CODABIA, forn.get(CLI_CODABI));
|
||||||
|
d->put(DOC_CODCABA, forn.get(CLI_CODCAB));
|
||||||
|
d->put(DOC_IBAN, forn.get(CLI_IBAN));
|
||||||
|
d->put(DOC_CODABIP, forven.get(CFV_CODABIPR));
|
||||||
|
d->put(DOC_CODCABP, forven.get(CFV_CODCABPR));
|
||||||
|
d->put(DOC_RAGGR, forven.get(CFV_RAGGDOC));
|
||||||
|
d->put(DOC_RAGGREFF, forven.get(CFV_RAGGEFF));
|
||||||
|
d->put(DOC_CODINDSP, forven.get(CFV_CODINDSP));
|
||||||
|
d->put(DOC_CODAG, forven.get(CFV_CODAG));
|
||||||
|
d->put(DOC_ZONA, forven.get(CFV_CODZONA));
|
||||||
|
d->put(DOC_CODSPMEZZO, forven.get(CFV_CODSPMEZZO));
|
||||||
|
d->put(DOC_CODPORTO, forven.get(CFV_CODPORTO));
|
||||||
|
d->put(DOC_CODNOTESP1, forven.get(CFV_CODNOTESP1));
|
||||||
|
d->put(DOC_CODNOTESP2, forven.get(CFV_CODNOTESP2));
|
||||||
|
d->put(DOC_CODNOTE, forven.get(CFV_CODNOTE));
|
||||||
|
d->put(DOC_CODVETT1, forven.get(CFV_CODVETT1));
|
||||||
|
d->put(DOC_CODVETT2, forven.get(CFV_CODVETT2));
|
||||||
|
d->put(DOC_CODVETT3, forven.get(CFV_CODVETT3));
|
||||||
|
d->put(DOC_PERCSPINC, forven.get(CFV_PERCSPINC));
|
||||||
|
d->put(DOC_ADDBOLLI, forven.get(CFV_ADDBOLLI));
|
||||||
|
d->put(DOC_CATVEN, forven.get(CFV_CATVEN));
|
||||||
|
d->put(DOC_CODLIST, forven.get(CFV_CODLIST));
|
||||||
|
d->put(DOC_CODCMS, commessat);
|
||||||
|
d->put(DOC_NOTE, mask.get(F_NOTE));
|
||||||
|
|
||||||
|
const TString& causmag = tipo.caus_mov();
|
||||||
|
d->put(DOC_CAUSMAG, causmag);
|
||||||
|
|
||||||
|
orders.add(codforn, d);
|
||||||
|
if (cod < minforn)
|
||||||
|
minforn = cod;
|
||||||
|
if (cod > maxforn)
|
||||||
|
maxforn = cod;
|
||||||
|
}
|
||||||
|
|
||||||
|
TRiga_documento& rdoc = d->new_row("01");
|
||||||
|
const TString codart(row->get(sf.cid2index(F_CODART)));
|
||||||
|
|
||||||
|
rdoc.put(RDOC_CODMAG, codmag);
|
||||||
|
rdoc.put(RDOC_CODMAGC, codmagc);
|
||||||
|
rdoc.put(RDOC_CODART, codart);
|
||||||
|
rdoc.put(RDOC_CODARTMAG, codart);
|
||||||
|
rdoc.put(RDOC_CHECKED, "X");
|
||||||
|
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(F_DESCR)));
|
||||||
|
|
||||||
|
const TString descr_agg(row->get(sf.cid2index(F_DESCRAGG)));
|
||||||
|
if (descr_agg.full())
|
||||||
|
{
|
||||||
|
rdoc.put(RDOC_DESCLUNGA, "X");
|
||||||
|
rdoc.put(RDOC_DESCEST, descr_agg);
|
||||||
|
}
|
||||||
|
|
||||||
|
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(F_UM)));
|
||||||
|
rdoc.put(RDOC_QTA, qta);
|
||||||
|
rdoc.put(RDOC_DATACONS, datacons);
|
||||||
|
|
||||||
|
const TRectype& articolo = cache().get(LF_ANAMAG, codart);
|
||||||
|
TPrice prezzo;
|
||||||
|
if (ultimo_prezzo)
|
||||||
|
prezzo = articolo.get_real(ANAMAG_ULTCOS1);
|
||||||
|
else
|
||||||
|
prezzo = articolo.get_real(ANAMAG_COSTSTD);
|
||||||
|
prezzo.change_value(codval);
|
||||||
|
rdoc.put(RDOC_PREZZO, prezzo.get_num());
|
||||||
|
if (codiva.full())
|
||||||
|
rdoc.put(RDOC_CODIVA, codiva);
|
||||||
|
else
|
||||||
|
rdoc.put(RDOC_CODIVA, articolo.get(ANAMAG_CODIVA));
|
||||||
|
rdoc.put(RDOC_CODCMS, commessa);
|
||||||
|
rdoc.put(RDOC_FASCMS, fase);
|
||||||
|
|
||||||
|
for (int i = 0; i < 10 ; i++)
|
||||||
|
if (_userfld.row(i).full())
|
||||||
|
rdoc.put(_userfld.row(i), mask.get(F_USER1 + i));
|
||||||
|
|
||||||
|
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
|
||||||
|
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orders.items() > 0)
|
||||||
|
{
|
||||||
|
TProgind pi(orders.items(), TR("Registrazione ordini"), true, true);
|
||||||
|
TString cmdline;
|
||||||
|
int cnt = 0;
|
||||||
|
TString8 key;
|
||||||
|
long mindoc = 0, maxdoc = 0;
|
||||||
|
for (long cod = minforn; cod <= maxforn; cod++)
|
||||||
|
{
|
||||||
|
key.format("%ld", cod);
|
||||||
|
TDocumento* d = (TDocumento*)orders.objptr(key);
|
||||||
if (d != NULL)
|
if (d != NULL)
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.addstatus(1))
|
||||||
@ -1178,66 +1270,32 @@ void TCreazione_ordini::write_docs(const char tipo, const long& minforn, const l
|
|||||||
const TTipo_documento& tipo = d->tipo();
|
const TTipo_documento& tipo = d->tipo();
|
||||||
TFilename rep;
|
TFilename rep;
|
||||||
tipo.main_print_profile(rep, 0);
|
tipo.main_print_profile(rep, 0);
|
||||||
|
rep.ext("rep");
|
||||||
|
|
||||||
if (rep.ends_with("rep", true)) // Esiste il nuovo report :-)
|
if (rep.custom_path()) // Esiste il nuovo report :-)
|
||||||
cmdline = "ve1 -2";
|
cmdline = "ve1 -2";
|
||||||
else // Esiste il vecchio form :-(
|
else // Esiste il vecchio form :-(
|
||||||
cmdline = "ve1 -0";
|
cmdline = "ve1 -0";
|
||||||
} //if (cmdline.blank())...
|
}
|
||||||
cnt++;
|
cnt++;
|
||||||
const long ndoc = d->get_long(DOC_NDOC);
|
const long ndoc = d->get_long(DOC_NDOC);
|
||||||
if (mindoc <= 0 || ndoc < mindoc)
|
if (mindoc <= 0 || ndoc < mindoc)
|
||||||
mindoc = ndoc;
|
mindoc = ndoc;
|
||||||
if (ndoc > maxdoc)
|
if (ndoc > maxdoc)
|
||||||
maxdoc = ndoc;
|
maxdoc = ndoc;
|
||||||
} //if (d->write() == NOERR)...
|
}
|
||||||
} //if (d != NULL)...
|
}
|
||||||
} //for (long cod = minforn; cod <= maxforn; cod++)...
|
}
|
||||||
if (yesno_box(TR("Sono stati generati %d documenti:\nSi desidera stamparli ora?"), cnt))
|
if (yesno_box(TR("Sono stati generati %d documenti:\nSi desidera stamparli ora?"), cnt))
|
||||||
{
|
{
|
||||||
const TString& codnum = _mask->get(F_CODNUM);
|
const TString& codnum = mask.get(F_CODNUM);
|
||||||
const TDate datadoc(TODAY);
|
const TDate datadoc(TODAY);
|
||||||
const int anno = datadoc.year();
|
const int anno = datadoc.year();
|
||||||
cmdline << " " << codnum << ' ' << anno << " D " << mindoc << ' ' << maxdoc;
|
cmdline << " " << codnum << ' ' << anno << " D " << mindoc << ' ' << maxdoc;
|
||||||
TExternal_app prg(cmdline);
|
TExternal_app prg(cmdline);
|
||||||
prg.run(true, true, false);
|
prg.run(true, true, false);
|
||||||
} //if (yesno_box(TR("Sono...
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TCreazione_ordini::generate_carics()
|
|
||||||
{
|
|
||||||
TSheet_field& sf = _mask->sfield(F_DOCUMENTS);
|
|
||||||
|
|
||||||
long minforn = 999999L;
|
|
||||||
long maxforn = 0L;
|
|
||||||
TAssoc_array carics;
|
|
||||||
|
|
||||||
if (sf.items() > 0)
|
|
||||||
generate_docs_head('C', sf, minforn, maxforn, carics);
|
|
||||||
|
|
||||||
if (carics.items() > 0)
|
|
||||||
write_docs('C', minforn, maxforn, carics);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//genera gli ordini a partire dalle righe articolo sullo sheet F_ARTICLES
|
|
||||||
void TCreazione_ordini::generate_orders()
|
|
||||||
{
|
|
||||||
TSheet_field& sf = _mask->sfield(F_ARTICLES);
|
|
||||||
|
|
||||||
long minforn = 999999L;
|
|
||||||
long maxforn = 0L;
|
|
||||||
TAssoc_array orders;
|
|
||||||
|
|
||||||
if (sf.items() > 0)
|
|
||||||
generate_docs_head('O', sf, minforn, maxforn, orders);
|
|
||||||
|
|
||||||
if (orders.items() > 0)
|
|
||||||
write_docs('O', minforn, maxforn, orders);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCreazione_ordini::main_loop()
|
void TCreazione_ordini::main_loop()
|
||||||
|
1682
ps/ps0430300a.uml
1682
ps/ps0430300a.uml
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user