1a Fase supporto agenti

Corretto operatre di assegnamento tra documenti


git-svn-id: svn://10.65.10.50/trunk@5320 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1997-10-02 16:57:49 +00:00
parent 99b802889f
commit aca7c33092
7 changed files with 199 additions and 111 deletions

View File

@ -7,13 +7,15 @@
#define F_NCOPIE 107
#define F_RIFERIMENTO 108
#define F_SPESEAUT 109
#define F_TIPO 110
#define F_TIPO 110
#define F_MOVMAG 111
#define F_STATO_MOV_I 112
#define F_STATO_MOV_F 113
#define F_CAUS_MAG 114
#define F_DESCAUS_MAG 115
#define F_STATV 116
#define F_PROVV 117
#define F_STATO_PROVV 118
#define F_STATOF_INS 150
#define F_STATOF_ST 151

View File

@ -116,13 +116,15 @@ BEGIN
FIELD B0
END
BOOLEAN F_MOVMAG
BOOLEAN F_MOVMAG
BEGIN
PROMPT 2 16 "Movimenti di magazzino a partire dallo stato "
FIELD B1
MESSAGE FALSE CLEAR,1@
MESSAGE TRUE ENABLE,1@
END
MESSAGE FALSE CLEAR,1@
MESSAGE TRUE ENABLE,1@
END
STRING F_STATO_MOV_I 1
BEGIN
@ -134,7 +136,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_MOV_I CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
GROUP 1
WARNING "Stato finale impossibile"
END
@ -144,12 +146,12 @@ BEGIN
PROMPT 54 16 "allo stato "
FIELD S8
COPY USE F_STATO_MOV_I
INPUT CODTAB F_STATO_MOV_F
INPUT CODTAB F_STATO_MOV_F
COPY DISPLAY F_STATO_MOV_I
OUTPUT F_STATO_MOV_F CODTAB
CHECKYTPE NORMAL
FLAGS "U"
GROUP 1
FLAGS "U"
GROUP 1
STR_EXPR {(#THIS_FIELD=="") || (#THIS_FIELD >= #F_STATO_MOV_I)}
WARNING "Stato finale impossibile"
END
@ -165,7 +167,7 @@ BEGIN
OUTPUT F_CAUS_MAG CODTAB
OUTPUT F_DESCAUS_MAG S0
CHECKYTPE REQUIRED
FLAGS "U"
FLAGS "U"
ADD RUN mg0 -0 %CAU
GROUP 1
END
@ -187,7 +189,30 @@ BOOLEAN F_STATV
BEGIN
PROMPT 2 19 "Attivo per le statistiche di vendita"
FIELD B2
END
END
BOOLEAN F_PROVV
BEGIN
PROMPT 2 20 "Attivo per le provvigioni"
FIELD B3
MESSAGE FALSE CLEAR,3@
MESSAGE TRUE ENABLE,3@
END
STRING F_STATO_PROVV 1
BEGIN
PROMPT 44 20 "Stato "
FIELD S3
USE %STD
INPUT CODTAB F_STATO_PROVV
DISPLAY "Stato" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_STATO_PROVV CODTAB
CHECKYTPE NORMAL
FLAGS "U"
GROUP 3
WARNING "Stato impossibile"
END
ENDPAGE
@ -203,7 +228,7 @@ BEGIN
DISPLAY "Descrizione@50" S0
OUTPUT F_STATOF_INS CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -217,11 +242,11 @@ BEGIN
PROMPT 2 3 "1 "
FIELD S2[10,10]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_MOD_1
INPUT CODTAB F_STATOI_MOD_1
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_1 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -234,7 +259,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_2 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -247,7 +272,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_3 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -256,11 +281,11 @@ BEGIN
PROMPT 47 3 "4 "
FIELD S2[13,13]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_MOD_4
INPUT CODTAB F_STATOI_MOD_4
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_4 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -273,7 +298,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_5 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -286,7 +311,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_6 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -299,7 +324,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_7 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -312,7 +337,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_8 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -325,7 +350,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_9 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -338,7 +363,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_10 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -347,11 +372,11 @@ BEGIN
PROMPT 2 5 "11 "
FIELD S2[20,20]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_MOD_11
INPUT CODTAB F_STATOI_MOD_11
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_11 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -364,7 +389,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_12 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -377,7 +402,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_13 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -386,11 +411,11 @@ BEGIN
PROMPT 47 5 "14 "
FIELD S2[23,23]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_MOD_14
INPUT CODTAB F_STATOI_MOD_14
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_14 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -403,7 +428,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_15 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -416,7 +441,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_16 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -429,7 +454,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_17 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -442,7 +467,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_18 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -455,7 +480,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_19 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -468,7 +493,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_MOD_20 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -482,11 +507,11 @@ BEGIN
PROMPT 2 9 "1 "
FIELD S2[30,30]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_CANC_1
INPUT CODTAB F_STATOI_CANC_1
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_1 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -499,7 +524,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_2 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -512,7 +537,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_3 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -521,11 +546,11 @@ BEGIN
PROMPT 47 9 "4 "
FIELD S2[33,33]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_CANC_4
INPUT CODTAB F_STATOI_CANC_4
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_4 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -538,7 +563,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_5 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -551,7 +576,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_6 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -564,7 +589,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_7 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -577,7 +602,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_8 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -590,7 +615,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_9 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -603,7 +628,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_10 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -612,11 +637,11 @@ BEGIN
PROMPT 2 11 "11 "
FIELD S2[40,40]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_CANC_11
INPUT CODTAB F_STATOI_CANC_11
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_11 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -629,7 +654,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_12 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -642,7 +667,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_13 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -651,11 +676,11 @@ BEGIN
PROMPT 47 11 "14 "
FIELD S2[43,43]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_CANC_14
INPUT CODTAB F_STATOI_CANC_14
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_14 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -668,7 +693,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_15 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -681,7 +706,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_16 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -694,7 +719,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_17 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -707,7 +732,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_18 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -720,7 +745,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_19 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -733,7 +758,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_CANC_20 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -747,11 +772,11 @@ BEGIN
PROMPT 2 15 "1 "
FIELD S2[50,50]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_ST_1
INPUT CODTAB F_STATOI_ST_1
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_1 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -764,7 +789,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_2 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -777,7 +802,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_3 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -786,11 +811,11 @@ BEGIN
PROMPT 47 15 "4 "
FIELD S2[53,53]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_ST_4
INPUT CODTAB F_STATOI_ST_4
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_4 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -803,7 +828,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_5 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -816,7 +841,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_6 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -829,7 +854,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_7 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -842,7 +867,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_8 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -855,7 +880,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_9 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -868,7 +893,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_10 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -877,11 +902,11 @@ BEGIN
PROMPT 2 17 "11 "
FIELD S2[60,60]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_ST_11
INPUT CODTAB F_STATOI_ST_11
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_11 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -894,7 +919,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_12 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -907,7 +932,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_13 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -916,11 +941,11 @@ BEGIN
PROMPT 47 17 "14 "
FIELD S2[63,63]
COPY USE F_STATOF_INS
INPUT CODTAB F_STATOI_ST_14
INPUT CODTAB F_STATOI_ST_14
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_14 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -933,7 +958,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_15 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -946,7 +971,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_16 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -959,7 +984,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_17 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -972,7 +997,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_18 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -985,7 +1010,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_19 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -998,7 +1023,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOI_ST_20 CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END
@ -1011,7 +1036,7 @@ BEGIN
COPY DISPLAY F_STATOF_INS
OUTPUT F_STATOF_ST CODTAB
CHECKYTPE NORMAL
FLAGS "U"
FLAGS "U"
WARNING "Stato finale assente"
END

View File

@ -79,8 +79,9 @@ void set_curr_um(const TMask & m);
class TDocumento_variable_field : public TVariable_field
{
bool _dirty;
public:
TObject* dup() const { return new TDocumento_variable_field(*this); }
// @cmember segnala che il campo deve essere ricalcolato
virtual bool dirty() const { return _dirty;}
// @cmember assegna lo stato di campo da ricalcolare
@ -93,7 +94,7 @@ class TDocumento_variable_field : public TVariable_field
TDocumento_variable_field(const char * name, VIRTUAL_GET_FUNCTION getfunc)
: TVariable_field(name, getfunc), _dirty(TRUE) {}
// @ cmember Costruttore con una espressione di calcolo
TDocumento_variable_field(const char * name, TExpression * expr, TTypeexp type = _strexpr)
TDocumento_variable_field(const char * name, TExpression & expr, TTypeexp type = _strexpr)
: TVariable_field(name, expr, type), _dirty(TRUE) {}
// @ cmember Costruttore con un variable_field
TDocumento_variable_field(const TVariable_field & f) : TVariable_field(f), _dirty(TRUE) {}
@ -216,6 +217,7 @@ class TTipo_documento : public TRectype // velib03
TString16 _totale_netto;
TString16 _basesconto;
TString16 _spese;
TString16 _totprovv;
protected:
void read_formule();
@ -244,10 +246,13 @@ public:
const TString & totale_netto() const { return _totale_netto; }
const TString & basesconto() const { return _basesconto;}
const TString & spese() const { return _spese;}
const TString & totprovv() const { return _totprovv;}
bool mov_mag() const { return get_bool("B1"); }
bool statistiche() const { return get_bool("B2"); }
bool provvigioni() const { return get_bool("B3"); }
const char stato_mov_iniziale() const {return get_char("S7"); }
const char stato_mov_finale() const {return get_char("S8"); }
const char stato_provvigioni() const {return get_char("S3"); }
const TString & caus_mov() const {return get("S9"); }
const char stato_finale_inserimento() const {return get("S2")[0]; }
const char stato_finale_stampa() const {return get("S2")[1]; }
@ -299,7 +304,7 @@ class TTipo_riga_documento : public TRectype // velib02
TToken_string _formule;
TString16 _name;
TString16 _imponibile;
TString16 _imposta;
TString16 _provv;
TVariable_mask * _mask;
protected:
@ -319,7 +324,7 @@ public:
const TString& descrizione() const { return get("S0"); }
char tipo() const { return get_char("S7"); }
const TString& imponibile() const { return _imponibile;}
const TString& imposta() const { return _imposta;}
const TString& provv() const { return _provv;}
TFormula_documento * first_formula() { return succ_formula(TRUE); }
TFormula_documento * succ_formula(bool restart = FALSE);
@ -403,6 +408,7 @@ public:
real iva(int ndec) const;
real imponibile() const;
real imposta(bool round = TRUE) const;
real provvigione(int ndec = AUTO_DECIMALS) const;
real quantita() const { return get_real(RDOC_QTA); }
@ -577,6 +583,7 @@ public:
real totale_netto() const;
real basesconto() const;
real spese() const;
real provvigione(int ndec = AUTO_DECIMALS) const;
TPagamento & pagamento();

View File

@ -777,7 +777,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _spinc:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool netto = FALSE;
if (nparms > 2)
@ -795,7 +795,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _bolli:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool netto = FALSE;
if (nparms > 2)
@ -816,7 +816,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _bolli_int:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
if (nparms > 2)
ndec = (int) stack.pop_real().integer();
@ -836,7 +836,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _prezzo:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool lordo = FALSE;
bool scontato = FALSE;
@ -852,13 +852,14 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
real & val = stack.peek_real();
if (_row)
val = _row->prezzo(scontato, lordo, ndec);
else val = ZERO;
else
val = ZERO;
}
break;
case _importo:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool lordo = FALSE;
bool scontato = FALSE;
@ -889,7 +890,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _sconto:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
if (nparms > 0)
ndec = (int) stack.peek_real().integer();
@ -919,7 +920,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _provv:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
if (nparms > 0)
ndec = (int) stack.peek_real().integer();
@ -929,10 +930,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
real & val = stack.peek_real();
if (_row)
{
val = _row->importo(TRUE, FALSE, ndec) * _row->get_real(RDOC_PERCPROV) / 100.0;
val.round(ndec);
}
val = _row->provvigione(ndec);
else
val = ZERO;
}
@ -947,7 +945,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _imponibili:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool spese = FALSE;
if (nparms > 1)
@ -962,7 +960,7 @@ void TExpr_documento::evaluate_user_func(int index, int nparms, TEval_stack & st
break;
case _imposte:
{
int ndec = _doc && _doc->in_valuta() ? 3 : 0;
int ndec = AUTO_DECIMALS;
bool spese = FALSE;
if (nparms > 1)

View File

@ -80,6 +80,8 @@ void TTipo_riga_documento::read_formule()
_formule_riga.add(_imponibile, new TFormula_documento(_riga, _imponibile, "IMPORTO(1)"), TRUE);
if (_formule.find(_imponibile) < 0)
_formule.add(_imponibile);
_provv = profile.get("PROVV", "MAIN");
}
TFormula_documento * TTipo_riga_documento::succ_formula(bool restart)
@ -365,11 +367,11 @@ void TRiga_documento::set_fields(TAuto_variable_rectype & rec)
for (const TFormula_documento * f = tipo_riga.first_formula(); f; f = tipo_riga.succ_formula())
{
TExpr_documento * exp = f->expr();
add_field(new TDocumento_variable_field(f->name(), exp));
if (exp)
{
exp->set_doc(_doc);
exp->set_row(this);
add_field(new TDocumento_variable_field(f->name(), *exp));
}
}
}
@ -513,6 +515,21 @@ real TRiga_documento::imposta(bool round) const
return iva(round ? (doc().in_valuta() ? 3 : 0) : 20);
}
real TRiga_documento::provvigione(int ndec) const
{
real val;
if (ndec == AUTO_DECIMALS)
ndec = doc().in_valuta() ? 3 : 0;
const TString & field = tipo().provv();
if (field.not_empty())
val = get_real(field);
else
val = importo(TRUE, FALSE, ndec) * get_real(RDOC_PERCPROV) / 100.0;
val.round(ndec);
return val;
}
void TRiga_documento::dirty_fields(bool dirty_document)
{
for (TDocumento_variable_field * f = (TDocumento_variable_field *) first_variable_field();

View File

@ -154,6 +154,19 @@ void TTipo_documento::read_formule()
_formule_documento.add(_spese, new TFormula_documento(_documento, _spese, "SOMMA(\"IMPONIBILE()\", \"TIPO() == 'S'\")"), TRUE);
if (_formule.find(_spese) < 0)
_formule.add(_spese);
if (provvigioni())
{
_totprovv = profile.get("TOTPROVV", "MAIN");
if (_totprovv.empty())
_totprovv = "TOTPROVV";
frd.put("CODTAB", _totprovv);
if (frd.read() != NOERR)
_formule_documento.add(_totprovv, new TFormula_documento(_documento, _totprovv, "SOMMA(\"PROVV()\")"), TRUE);
if (_formule.find(_totprovv) < 0)
_formule.add(_totprovv);
}
}
bool TTipo_documento::stato_with_mov_mag(const char stato) const
@ -342,6 +355,8 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
if (percentuale > ZERO)
{
if (ndec == AUTO_DECIMALS)
ndec = in_valuta() ? 3 : 0;
if (spese_inc.objptr(_rim_dir) == NULL)
{
TConfig conf(CONFIG_STUDIO);
@ -390,6 +405,8 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
if (get_bool("ADDBOLLI"))
{
if (ndec == AUTO_DECIMALS)
ndec = in_valuta() ? 3 : 0;
real cambio = get_real("CAMBIO");
if (cambio == ZERO)
@ -606,7 +623,7 @@ int TDocumento::read(TBaseisamfile& f, word op, word lockop)
if (is_fattura())
set_riga_esenzione();
_stato_originale = stato();
if (tipo().statistiche() && _has_stat_ven)
if (err == NOERR && tipo().statistiche() && _has_stat_ven)
{
TString80 key(get(DOC_PROVV)); key << get(DOC_ANNO); key << get(DOC_CODNUM); key << get(DOC_NDOC);
TObject * o = _docs_to_agg.objptr(key);
@ -1096,6 +1113,7 @@ void TDocumento::set_fields(TAuto_variable_rectype & rec)
for (const TFormula_documento * f = tipo_doc.first_formula(); f; f = tipo_doc.succ_formula())
{
TExpr_documento * exp = f->expr();
if (tot_doc == f->name())
{
TString work_tot_doc(tot_doc);
@ -1117,20 +1135,22 @@ void TDocumento::set_fields(TAuto_variable_rectype & rec)
netto_def << "IMPOSTE()";
}
TExpr_documento * netto_exp = new TExpr_documento(netto_def, _numexpr, this);
TExpr_documento netto_exp(netto_def, _numexpr, this);
add_field(new TDocumento_variable_field(work_tot_doc, netto_exp));
TExpr_documento * tot_exp = new TExpr_documento(
format("%s + _BOLLI(%s)", (const char *) work_tot_doc,
(const char *) work_tot_doc), _numexpr, this);
TExpr_documento tot_exp(format("%s + _BOLLI(%s)", (const char *) work_tot_doc,
(const char *) work_tot_doc), _numexpr, this);
add_field(new TDocumento_variable_field(f->name(), tot_exp));
}
else
add_field(new TDocumento_variable_field(f->name(), exp));
if (exp)
exp->set_doc(this);
if (exp)
{
exp->set_doc(this);
add_field(new TDocumento_variable_field(f->name(), *exp));
}
}
}
}
@ -1340,6 +1360,23 @@ TPagamento & TDocumento::pagamento()
return _pag;
}
real TDocumento::provvigione(int ndec) const
{
real val;
if (ndec == AUTO_DECIMALS)
ndec = in_valuta() ? 3 : 0;
// update for agente ???
const TString16 & field = tipo().totprovv();
if (field.not_empty())
return get_real(field);
else
for (int i = rows(); i > 0; i--)
val += ((TRiga_documento &) ((TDocumento *)this)->row(i)).provvigione(ndec);
return val;
}
void TDocumento::put_str(const char* fieldname, const char* val)
{
if (strcmp(fieldname, "TIPODOC") == 0)
@ -1412,6 +1449,8 @@ TOccasionale & TDocumento::occas() const
TDocumento & TDocumento::copy(const TDocumento & d)
{
TMultiple_rectype::operator=((TMultiple_rectype &)d);
reset_fields(*this);
set_fields(*this);
for (int i = physical_rows(); i > 0; i--)
{
TRiga_documento & r = row(i);

View File

@ -318,7 +318,7 @@ void TDocumento_mask::spese2mask(TCli_for & c)
if (s.not_empty())
spese.add(s);
}
autosave(*_rel);
// autosave(*_rel);
doc().put("SPESEUPD", FALSE);
doc().update_spese_aut(spese, FALSE, &sh);
sh.force_update();