Patch level : 10.0 163
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.2 patch 1262 git-svn-id: svn://10.65.10.50/trunk@17639 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
28b73cfd1a
commit
f114c27a06
506
ve/ve0200g.uml
506
ve/ve0200g.uml
@ -106,7 +106,7 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Articoli" 1 1 60 14
|
||||
PAGE "Articoli 1" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
@ -146,8 +146,8 @@ BEGIN
|
||||
FIELD LEN_USER[1]
|
||||
GROUP 11
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=40)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 40 caratteri"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER1 2
|
||||
@ -355,7 +355,7 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Articoli" 1 1 60 14
|
||||
PAGE "Articoli 2" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
@ -602,6 +602,504 @@ BEGIN
|
||||
GROUP 20
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Articoli 3" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 2 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER11
|
||||
BEGIN
|
||||
PROMPT 2 2 "Campo libero 11"
|
||||
MESSAGE FALSE CLEAR,21@
|
||||
MESSAGE TRUE ENABLE,21@
|
||||
FIELD CHK_USER[11]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER11 20
|
||||
BEGIN
|
||||
PROMPT 2 3 "Prompt "
|
||||
FIELD PROMPT_USER[11]
|
||||
GROUP 21
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER11 7
|
||||
BEGIN
|
||||
PROMPT 30 3 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER11|CLEAR,F_DEC_USER11
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER11|ENABLE,F_DEC_USER11
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER11|CLEAR,F_DEC_USER11
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER11|CLEAR,F_DEC_USER11
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER11|CLEAR,F_DEC_USER11
|
||||
FIELD TYPE_USER[11]
|
||||
GROUP 21
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER11 2
|
||||
BEGIN
|
||||
PROMPT 45 3 "Lunghezza "
|
||||
FIELD LEN_USER[11]
|
||||
GROUP 21
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=40)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 40 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER11 2
|
||||
BEGIN
|
||||
PROMPT 58 3 "Decimali "
|
||||
FIELD DEC_USER[11]
|
||||
GROUP 21
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER12
|
||||
BEGIN
|
||||
PROMPT 2 5 "Campo libero 12"
|
||||
MESSAGE FALSE CLEAR,22@
|
||||
MESSAGE TRUE ENABLE,22@
|
||||
FIELD CHK_USER[12]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER12 20
|
||||
BEGIN
|
||||
PROMPT 2 6 "Prompt "
|
||||
FIELD PROMPT_USER[12]
|
||||
GROUP 22
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER12 7
|
||||
BEGIN
|
||||
PROMPT 30 6 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER12|CLEAR,F_DEC_USER12
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER12|ENABLE,F_DEC_USER12
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER12|CLEAR,F_DEC_USER12
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER12|CLEAR,F_DEC_USER12
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER12|CLEAR,F_DEC_USER12
|
||||
FIELD TYPE_USER[12]
|
||||
GROUP 22
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER12 2
|
||||
BEGIN
|
||||
PROMPT 45 6 "Lunghezza "
|
||||
FIELD LEN_USER[12]
|
||||
GROUP 22
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER12 2
|
||||
BEGIN
|
||||
PROMPT 58 6 "Decimali "
|
||||
FIELD DEC_USER[12]
|
||||
GROUP 22
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 8 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER13
|
||||
BEGIN
|
||||
PROMPT 2 8 "Campo libero 13"
|
||||
MESSAGE FALSE CLEAR,23@
|
||||
MESSAGE TRUE ENABLE,23@
|
||||
FIELD CHK_USER[13]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER13 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Prompt "
|
||||
FIELD PROMPT_USER[13]
|
||||
GROUP 23
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER13 7
|
||||
BEGIN
|
||||
PROMPT 30 9 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER13|CLEAR,F_DEC_USER13
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER13|ENABLE,F_DEC_USER13
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER13|CLEAR,F_DEC_USER13
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER13|CLEAR,F_DEC_USER13
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER13|CLEAR,F_DEC_USER13
|
||||
FIELD TYPE_USER[13]
|
||||
GROUP 23
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER13 2
|
||||
BEGIN
|
||||
PROMPT 45 9 "Lunghezza "
|
||||
FIELD LEN_USER[13]
|
||||
GROUP 23
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER13 2
|
||||
BEGIN
|
||||
PROMPT 58 9 "Decimali "
|
||||
FIELD DEC_USER[13]
|
||||
GROUP 23
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 11 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER14
|
||||
BEGIN
|
||||
PROMPT 2 11 "Campo libero 14"
|
||||
MESSAGE FALSE CLEAR,24@
|
||||
MESSAGE TRUE ENABLE,24@
|
||||
FIELD CHK_USER[14]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER14 20
|
||||
BEGIN
|
||||
PROMPT 2 12 "Prompt "
|
||||
FIELD PROMPT_USER[14]
|
||||
GROUP 24
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER14 7
|
||||
BEGIN
|
||||
PROMPT 30 12 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER14|CLEAR,F_DEC_USER14
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER14|ENABLE,F_DEC_USER14
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER14|CLEAR,F_DEC_USER14
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER14|CLEAR,F_DEC_USER14
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER14|CLEAR,F_DEC_USER14
|
||||
FIELD TYPE_USER[14]
|
||||
GROUP 24
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER14 2
|
||||
BEGIN
|
||||
PROMPT 45 12 "Lunghezza "
|
||||
FIELD LEN_USER[14]
|
||||
GROUP 24
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER14 2
|
||||
BEGIN
|
||||
PROMPT 58 12 "Decimali "
|
||||
FIELD DEC_USER[14]
|
||||
GROUP 24
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 14 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER15
|
||||
BEGIN
|
||||
PROMPT 2 14 "Campo libero 15"
|
||||
MESSAGE FALSE CLEAR,25@
|
||||
MESSAGE TRUE ENABLE,25@
|
||||
FIELD CHK_USER[15]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER15 20
|
||||
BEGIN
|
||||
PROMPT 2 15 "Prompt "
|
||||
FIELD PROMPT_USER[15]
|
||||
GROUP 25
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER15 7
|
||||
BEGIN
|
||||
PROMPT 30 15 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER15|CLEAR,F_DEC_USER15
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER15|ENABLE,F_DEC_USER15
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER15|CLEAR,F_DEC_USER15
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER15|CLEAR,F_DEC_USER15
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER15|CLEAR,F_DEC_USER15
|
||||
FIELD TYPE_USER[15]
|
||||
GROUP 25
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER15 2
|
||||
BEGIN
|
||||
PROMPT 45 15 "Lunghezza "
|
||||
FIELD LEN_USER[15]
|
||||
GROUP 25
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER15 2
|
||||
BEGIN
|
||||
PROMPT 58 15 "Decimali "
|
||||
FIELD DEC_USER[15]
|
||||
GROUP 25
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Articoli 4" 1 1 60 14
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 2 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER16
|
||||
BEGIN
|
||||
PROMPT 2 2 "Campo libero 16"
|
||||
MESSAGE FALSE CLEAR,26@
|
||||
MESSAGE TRUE ENABLE,26@
|
||||
FIELD CHK_USER[16]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER16 20
|
||||
BEGIN
|
||||
PROMPT 2 3 "Prompt "
|
||||
FIELD PROMPT_USER[16]
|
||||
GROUP 26
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER16 7
|
||||
BEGIN
|
||||
PROMPT 30 3 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER16|CLEAR,F_DEC_USER16
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER16|ENABLE,F_DEC_USER16
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER16|CLEAR,F_DEC_USER16
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER16|CLEAR,F_DEC_USER16
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER16|CLEAR,F_DEC_USER16
|
||||
FIELD TYPE_USER[16]
|
||||
GROUP 26
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER16 2
|
||||
BEGIN
|
||||
PROMPT 45 3 "Lunghezza "
|
||||
FIELD LEN_USER[16]
|
||||
GROUP 26
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER16 2
|
||||
BEGIN
|
||||
PROMPT 58 3 "Decimali "
|
||||
FIELD DEC_USER[16]
|
||||
GROUP 26
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER17
|
||||
BEGIN
|
||||
PROMPT 2 5 "Campo libero 17"
|
||||
MESSAGE FALSE CLEAR,27@
|
||||
MESSAGE TRUE ENABLE,27@
|
||||
FIELD CHK_USER[17]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER17 20
|
||||
BEGIN
|
||||
PROMPT 2 6 "Prompt "
|
||||
FIELD PROMPT_USER[17]
|
||||
GROUP 27
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER17 7
|
||||
BEGIN
|
||||
PROMPT 30 6 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER17|CLEAR,F_DEC_USE1R7
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER17|ENABLE,F_DEC_USER17
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER17|CLEAR,F_DEC_USER17
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER17|CLEAR,F_DEC_USER17
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER17|CLEAR,F_DEC_USER17
|
||||
FIELD TYPE_USER[17]
|
||||
GROUP 27
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER17 2
|
||||
BEGIN
|
||||
PROMPT 45 6 "Lunghezza "
|
||||
FIELD LEN_USER[17]
|
||||
GROUP 27
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER17 2
|
||||
BEGIN
|
||||
PROMPT 58 6 "Decimali "
|
||||
FIELD DEC_USER[17]
|
||||
GROUP 27
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 8 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER18
|
||||
BEGIN
|
||||
PROMPT 2 8 "Campo libero 18"
|
||||
MESSAGE FALSE CLEAR,28@
|
||||
MESSAGE TRUE ENABLE,28@
|
||||
FIELD CHK_USER[18]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER18 20
|
||||
BEGIN
|
||||
PROMPT 2 9 "Prompt "
|
||||
FIELD PROMPT_USER[18]
|
||||
GROUP 28
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER18 7
|
||||
BEGIN
|
||||
PROMPT 30 9 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER18|CLEAR,F_DEC_USER18
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER18|ENABLE,F_DEC_USER18
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER18|CLEAR,F_DEC_USER18
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER18|CLEAR,F_DEC_USER18
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER18|CLEAR,F_DEC_USER18
|
||||
FIELD TYPE_USER[18]
|
||||
GROUP 28
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER18 2
|
||||
BEGIN
|
||||
PROMPT 45 9 "Lunghezza "
|
||||
FIELD LEN_USER[18]
|
||||
GROUP 28
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER18 2
|
||||
BEGIN
|
||||
PROMPT 58 9 "Decimali "
|
||||
FIELD DEC_USER[18]
|
||||
GROUP 28
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 11 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER19
|
||||
BEGIN
|
||||
PROMPT 2 11 "Campo libero 19"
|
||||
MESSAGE FALSE CLEAR,29@
|
||||
MESSAGE TRUE ENABLE,29@
|
||||
FIELD CHK_USER[19]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER19 20
|
||||
BEGIN
|
||||
PROMPT 2 12 "Prompt "
|
||||
FIELD PROMPT_USER[19]
|
||||
GROUP 29
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER19 7
|
||||
BEGIN
|
||||
PROMPT 30 12 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER19|CLEAR,F_DEC_USER19
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER19|ENABLE,F_DEC_USER19
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER19|CLEAR,F_DEC_USER19
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER19|CLEAR,F_DEC_USER19
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER19|CLEAR,F_DEC_USER19
|
||||
FIELD TYPE_USER[19]
|
||||
GROUP 29
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER19 2
|
||||
BEGIN
|
||||
PROMPT 45 12 "Lunghezza "
|
||||
FIELD LEN_USER[19]
|
||||
GROUP 29
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER19 2
|
||||
BEGIN
|
||||
PROMPT 58 12 "Decimali "
|
||||
FIELD DEC_USER[19]
|
||||
GROUP 29
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
PROMPT 1 14 ""
|
||||
END
|
||||
|
||||
BOOLEAN F_CHK_USER20
|
||||
BEGIN
|
||||
PROMPT 2 14 "Campo libero 20"
|
||||
MESSAGE FALSE CLEAR,30@
|
||||
MESSAGE TRUE ENABLE,30@
|
||||
FIELD CHK_USER[20]
|
||||
END
|
||||
|
||||
STRING F_PROMPT_USER20 20
|
||||
BEGIN
|
||||
PROMPT 2 15 "Prompt "
|
||||
FIELD PROMPT_USER[20]
|
||||
GROUP 30
|
||||
END
|
||||
|
||||
LISTBOX F_TYPE_USER20 7
|
||||
BEGIN
|
||||
PROMPT 30 15 "Tipo "
|
||||
ITEM "S|Stringa" MESSAGE ENABLE,F_LEN_USER20|CLEAR,F_DEC_USER20
|
||||
ITEM "N|Numero" MESSAGE ENABLE,F_LEN_USER20|ENABLE,F_DEC_USER20
|
||||
ITEM "I|Importo" MESSAGE ENABLE,F_LEN_USER20|CLEAR,F_DEC_USER20
|
||||
ITEM "D|Data" MESSAGE CLEAR,F_LEN_USER20|CLEAR,F_DEC_USER20
|
||||
ITEM "X|Si/no" MESSAGE CLEAR,F_LEN_USER20|CLEAR,F_DEC_USER20
|
||||
FIELD TYPE_USER[20]
|
||||
GROUP 30
|
||||
END
|
||||
|
||||
NUMBER F_LEN_USER20 2
|
||||
BEGIN
|
||||
PROMPT 45 15 "Lunghezza "
|
||||
FIELD LEN_USER[20]
|
||||
GROUP 30
|
||||
FLAGS "U"
|
||||
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
|
||||
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
|
||||
END
|
||||
|
||||
STRING F_DEC_USER20 2
|
||||
BEGIN
|
||||
PROMPT 58 15 "Decimali "
|
||||
FIELD DEC_USER[20]
|
||||
GROUP 30
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 56 4
|
||||
BEGIN
|
||||
PROMPT 1 17 "@bGenerazione automatica codici"
|
||||
|
@ -58,6 +58,7 @@ JOLLY3|2|20|Jolly|20
|
||||
JOLLY4|2|20|Jolly|20
|
||||
JOLLY5|2|20|Jolly|20
|
||||
JOLLY6|2|20|Jolly|20
|
||||
JOLLY7|2|20|Jolly|20
|
||||
JOLLY8|2|20|Jolly|20
|
||||
JOLLY9|2|20|Jolly|20
|
||||
JOLLY10|2|20|Jolly|20
|
||||
|
@ -4,6 +4,7 @@ extern int ve2100(int argc, char* argv[]); // tabelle sconti (di riga/di docume
|
||||
extern int ve2200(int argc, char* argv[]); // testate listini/contratti/offerte
|
||||
extern int ve2300(int argc, char* argv[]); // righe listini/contratti/offerte
|
||||
extern int ve2400(int argc, char* argv[]); // anagrafica di magazzino
|
||||
extern int ve2600(int argc, char* argv[]); // relazioni articoli livelli di giacenza
|
||||
|
||||
int main( int argc, char** argv)
|
||||
{
|
||||
@ -13,7 +14,9 @@ int main( int argc, char** argv)
|
||||
case 0: ve2100(argc, argv); break;
|
||||
case 1: ve2200(argc, argv); break;
|
||||
case 2: ve2300(argc, argv); break;
|
||||
default: ve2400(argc, argv); break;
|
||||
case 3: ve2400(argc, argv); break;
|
||||
case 5: ve2600(argc, argv); break;
|
||||
default: error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 2 [L|C|O] | 3]", argv[0]); break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -19,6 +19,8 @@ class TMask_anamag: public TMask
|
||||
TCodgiac_livelli* livelli_giac;// oggetto handler per i livelli di giacenza
|
||||
TCodart_livelli* livelli_art;// oggetto handler per i livelli di anagraficca
|
||||
int last_annogiac, last_annosto;
|
||||
int _disabled_user_page;
|
||||
|
||||
|
||||
int _type_cod, _altype_cod;
|
||||
TString4 _ean8_pref;
|
||||
@ -69,6 +71,7 @@ public:
|
||||
void update_ordc_ordf();
|
||||
void set_parametered_fields();
|
||||
void ricalcola_giacenze();
|
||||
void disable_user_page() { disable_page(_disabled_user_page);}
|
||||
TCodart_livelli * get_livelli_art() const { return livelli_art; }
|
||||
|
||||
const TString& generated_code() { return _generated_code; }
|
||||
@ -399,7 +402,7 @@ void TMask_anamag::create_user_fields()
|
||||
|
||||
TString80 prompt;
|
||||
|
||||
for (int i = 1; i <= 10; i++)
|
||||
for (int i = 1; i <= 20; i++)
|
||||
{
|
||||
if (c.get_bool("CHK_USER", "ve", i))
|
||||
{
|
||||
@ -408,33 +411,43 @@ void TMask_anamag::create_user_fields()
|
||||
prompt.rpad(20);
|
||||
const char type = c.get_char("TYPE_USER", "ve", i);
|
||||
if (type == 'S')
|
||||
f = &add_string(F_USER1 + i - 1, PAGE_USER, prompt, 2, 3 + i, c.get_int("LEN_USER", "ve", i));
|
||||
f = &add_string(F_USER1 + i - 1, page, prompt, 2, row, c.get_int("LEN_USER", "ve", i));
|
||||
else
|
||||
if (type == 'N')
|
||||
{
|
||||
f = &add_number(F_USER1 + i - 1, PAGE_USER, prompt, 2, 3 + i, c.get_int("LEN_USER", "ve", i));
|
||||
f = &add_number(F_USER1 + i - 1, page, prompt, 2, row, c.get_int("LEN_USER", "ve", i));
|
||||
((TReal_field *) f)->set_decimals(c.get_int("DEC_USER", "ve", i));
|
||||
}
|
||||
else
|
||||
if (type == 'D')
|
||||
f = &add_date(F_USER1 + i - 1, PAGE_USER, prompt, 2, 3 + i);
|
||||
f = &add_date(F_USER1 + i - 1, page, prompt, 2, row);
|
||||
else
|
||||
if (type == 'I')
|
||||
f = &add_currency(F_USER1 + i - 1, PAGE_USER, prompt, 2, 3 + i, c.get_int("LEN_USER", "ve", i));
|
||||
f = &add_currency(F_USER1 + i - 1, page, prompt, 2, row, c.get_int("LEN_USER", "ve", i));
|
||||
else
|
||||
if (type == 'X')
|
||||
f = &add_boolean(F_USER1 + i - 1, PAGE_USER, prompt, 2, 3 + i);
|
||||
f = &add_boolean(F_USER1 + i - 1, page, prompt, 2, row);
|
||||
if (f != NULL)
|
||||
{
|
||||
TString8 u; u.format("USER%d", i);
|
||||
f->set_field(u);
|
||||
}
|
||||
disable_user_page = false;
|
||||
pages.set(page);
|
||||
if (row > 19)
|
||||
{
|
||||
page++;
|
||||
row = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (disable_user_page)
|
||||
disable_page(PAGE_USER);
|
||||
if (!pages[PAGE_USER])
|
||||
_disabled_user_page = PAGE_USER;
|
||||
else
|
||||
if (!pages[PAGE_USER + 1])
|
||||
_disabled_user_page = PAGE_USER + 1;
|
||||
else
|
||||
_disabled_user_page = PAGE_USER + 2;
|
||||
}
|
||||
|
||||
// costruttore della maschera anagrafica di magazzino
|
||||
@ -1987,6 +2000,8 @@ void TAnagrafica_magazzino::init_insert_mode(TMask &m)
|
||||
|
||||
if (advanced_codart_enabled())
|
||||
m.hide(F_ADVANCED);
|
||||
((TMask_anamag &)m).disable_user_page();
|
||||
|
||||
}
|
||||
|
||||
void TAnagrafica_magazzino::init_modify_mode(TMask &m)
|
||||
@ -1996,6 +2011,7 @@ void TAnagrafica_magazzino::init_modify_mode(TMask &m)
|
||||
|
||||
if (advanced_codart_enabled())
|
||||
m.hide(F_ADVANCED);
|
||||
((TMask_anamag &)m).disable_user_page();
|
||||
}
|
||||
|
||||
void TAnagrafica_magazzino::ini2sheet(TConfig& ini, TSheet_field &sheet)
|
||||
|
31
ve/ve2400.h
31
ve/ve2400.h
@ -133,16 +133,6 @@
|
||||
#define F_DATAVDIST 266
|
||||
|
||||
|
||||
#define F_USER1 271
|
||||
#define F_USER2 272
|
||||
#define F_USER3 273
|
||||
#define F_USER4 274
|
||||
#define F_USER5 275
|
||||
#define F_USER6 276
|
||||
#define F_USER7 277
|
||||
#define F_USER8 278
|
||||
#define F_USER9 279
|
||||
#define F_USER10 280
|
||||
#define F_CONACC 281
|
||||
#define F_CONALL 282
|
||||
#define F_CONCAR 283
|
||||
@ -178,6 +168,27 @@
|
||||
#define F_ARTLAVCONT 320
|
||||
#define F_MANGDEST 321
|
||||
|
||||
#define F_USER1 371
|
||||
#define F_USER2 372
|
||||
#define F_USER3 373
|
||||
#define F_USER4 374
|
||||
#define F_USER5 375
|
||||
#define F_USER6 376
|
||||
#define F_USER7 377
|
||||
#define F_USER8 378
|
||||
#define F_USER9 379
|
||||
#define F_USER10 380
|
||||
#define F_USER11 381
|
||||
#define F_USER12 382
|
||||
#define F_USER13 383
|
||||
#define F_USER14 384
|
||||
#define F_USER15 385
|
||||
#define F_USER16 386
|
||||
#define F_USER17 387
|
||||
#define F_USER18 388
|
||||
#define F_USER19 389
|
||||
#define F_USER20 390
|
||||
|
||||
#define F_CONTOPCIA 401
|
||||
#define F_DESCRCONTOPCIA 411
|
||||
|
||||
|
@ -1378,7 +1378,30 @@ END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Utente" 0 0 70 20
|
||||
PAGE "Utente 1" 0 0 70 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 0 0 ""
|
||||
END
|
||||
|
||||
STRING DLG_NULL 20
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 2 1 "Codice art. "
|
||||
GROUP G_CODART
|
||||
END
|
||||
|
||||
STRING DLG_NULL 50
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 2 2 "Descrizione "
|
||||
GROUP G_DESART
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Utente 2" 0 0 70 20
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
BEGIN
|
||||
|
278
ve/ve2600.cpp
Executable file
278
ve/ve2600.cpp
Executable file
@ -0,0 +1,278 @@
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <msksheet.h>
|
||||
#include <mask.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <tabapp.h>
|
||||
|
||||
#include <multirel.h>
|
||||
#include "../mg/anamag.h"
|
||||
#include "../mg/mglib.h"
|
||||
#include "ve2600a.h"
|
||||
|
||||
#define FILE_KEY "ARTLV"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TArtgiac_mask maschera
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TArtgiac_mask : public TAutomask
|
||||
{
|
||||
TString _query;
|
||||
bool _filter_changed;
|
||||
TCodgiac_livelli * _livelli_giac;
|
||||
|
||||
public:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
TCodgiac_livelli & livelli_giac() const { return *_livelli_giac;}
|
||||
|
||||
TArtgiac_mask();
|
||||
~TArtgiac_mask() { delete _livelli_giac; }
|
||||
};
|
||||
|
||||
TArtgiac_mask::TArtgiac_mask() : TAutomask("ve2600a")
|
||||
{
|
||||
_livelli_giac = new TCodgiac_livelli() ;
|
||||
TSheet_field & sh = sfield(F_LIVGIAC);
|
||||
TMask & sh_mask = sh.sheet_mask();
|
||||
TString80 prompt;
|
||||
|
||||
for (int i=0; i < 4; i++)
|
||||
{
|
||||
_livelli_giac->set_sheetcolumn(sh,F_LIV1+i,i+1);
|
||||
if (_livelli_giac->autoinsert(i+1))
|
||||
{
|
||||
// codice autoinseribile
|
||||
TMask_field & campo_liv = sh.sheet_mask().field(F_LIV1+i);
|
||||
|
||||
campo_liv.check_type(CHECK_SEARCH);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TArtgiac_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_LIV1:
|
||||
case F_LIV2:
|
||||
case F_LIV3:
|
||||
case F_LIV4:
|
||||
if (e == fe_modify && !o.empty())
|
||||
{
|
||||
|
||||
const int levnum = o.dlg()-F_LIV1+1;
|
||||
return _livelli_giac->autoinsert(levnum, o);
|
||||
}
|
||||
break;
|
||||
case F_LIVGIAC:
|
||||
if (e == se_notify_add)
|
||||
{
|
||||
TSheet_field & sf = (TSheet_field &) o;
|
||||
TMask & m = sf.sheet_mask();
|
||||
const int nrow = sf.selected() + 1;
|
||||
TToken_string & row = sf.row(nrow);
|
||||
|
||||
row.add("X", sf.cid2index(F_ATTIVO));
|
||||
sf.check_row(nrow);
|
||||
sf.force_update(nrow);
|
||||
}
|
||||
else
|
||||
if (e == se_query_del)
|
||||
{
|
||||
TSheet_field & sf = (TSheet_field &) o;
|
||||
TMask & m = sf.sheet_mask();
|
||||
TString80 codgiac;
|
||||
|
||||
livelli_giac().pack_grpcode(codgiac, m.get(F_LIV1), 1);
|
||||
livelli_giac().pack_grpcode(codgiac, m.get(F_LIV2), 2);
|
||||
livelli_giac().pack_grpcode(codgiac, m.get(F_LIV3), 3);
|
||||
livelli_giac().pack_grpcode(codgiac, m.get(F_LIV4), 4);
|
||||
return codgiac.blank();
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
class TRelArticoligiac_multirel_app : public TMultirel_application
|
||||
{
|
||||
TArtgiac_mask * _mask;
|
||||
TRelation * _rel;
|
||||
|
||||
protected:
|
||||
virtual void get_mask_name(TString& tabname) const { tabname = "ve2600a";}
|
||||
|
||||
//magico metodo per impedire la navigazione su tabelle diverse da quella corrente del cursore
|
||||
virtual bool has_filtered_cursor() const { return true; }
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy() ;
|
||||
virtual int read(TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual int write(const TMask& m) { return rewrite(m);}
|
||||
virtual bool remove();
|
||||
virtual void init_insert_mode(TMask& m) { read(m); }
|
||||
virtual bool find(word key = 0);
|
||||
virtual TMask* get_mask(int mode = MODE_QUERY) { return (TMask *) _mask;}
|
||||
virtual TRelation* get_relation() const { return _rel;}
|
||||
|
||||
public:
|
||||
TRelArticoligiac_multirel_app() {}
|
||||
virtual ~TRelArticoligiac_multirel_app() {}
|
||||
};
|
||||
|
||||
bool TRelArticoligiac_multirel_app::user_create()
|
||||
{
|
||||
bool ok = TMultirel_application::user_create();
|
||||
_mask = new TArtgiac_mask;
|
||||
|
||||
if (!_mask->livelli_giac().enabled())
|
||||
return warning_box("gestione livelli di giacenza non abilitata");
|
||||
_rel = new TRelation(LF_ANAMAG);
|
||||
set_search_field(F_CODART);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TRelArticoligiac_multirel_app::user_destroy()
|
||||
{
|
||||
delete _mask;
|
||||
delete _rel;
|
||||
return TMultirel_application::user_destroy();
|
||||
}
|
||||
|
||||
int TRelArticoligiac_multirel_app::read(TMask& m)
|
||||
{
|
||||
TLocalisamfile multirel(LF_MULTIREL);
|
||||
TArtgiac_mask & mask = (TArtgiac_mask &) m;
|
||||
TString80 codart(m.get(F_CODART));
|
||||
const TString & cod = get_relation()->lfile().get(ANAMAG_CODART);
|
||||
TSheet_field & sf = m.sfield(F_LIVGIAC);
|
||||
const int col_lev1 = sf.cid2index(F_LIV1);
|
||||
const int col_lev2 = sf.cid2index(F_LIV2);
|
||||
const int col_lev3 = sf.cid2index(F_LIV3);
|
||||
const int col_lev4 = sf.cid2index(F_LIV4);
|
||||
const int col_attivo = sf.cid2index(F_ATTIVO);
|
||||
int i = 0;
|
||||
|
||||
if (cod.full() && cod != codart)
|
||||
{
|
||||
codart = cod;
|
||||
m.set(F_CODART, codart, 0x2);
|
||||
}
|
||||
sf.destroy();
|
||||
multirel.zero();
|
||||
multirel.put(MULTI_COD, FILE_KEY);
|
||||
multirel.put(MULTI_FIRST, codart);
|
||||
for ( int err = multirel.read(_isgteq); err == NOERR && codart == multirel.get(MULTI_FIRST); err = multirel.next())
|
||||
{
|
||||
TToken_string & row = sf.row(i++);
|
||||
const TString & codgiac = multirel.get(MULTI_SECOND);
|
||||
|
||||
row.add(mask.livelli_giac().unpack_grpcode(codgiac, 1), col_lev1);
|
||||
row.add(mask.livelli_giac().unpack_grpcode(codgiac, 2), col_lev2);
|
||||
row.add(mask.livelli_giac().unpack_grpcode(codgiac, 3), col_lev3);
|
||||
row.add(mask.livelli_giac().unpack_grpcode(codgiac, 4), col_lev4);
|
||||
row.add("X", col_attivo);
|
||||
sf.check_row(i - 1);
|
||||
}
|
||||
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
int TRelArticoligiac_multirel_app::rewrite(const TMask& m)
|
||||
{
|
||||
int err = NOERR;
|
||||
TLocalisamfile multirel(LF_MULTIREL);
|
||||
TSheet_field & sf = m.sfield(F_LIVGIAC);
|
||||
const TString& codart = m.get(F_CODART);
|
||||
TArtgiac_mask & mask = (TArtgiac_mask &) m;
|
||||
const int col_lev1 = sf.cid2index(F_LIV1);
|
||||
const int col_lev2 = sf.cid2index(F_LIV2);
|
||||
const int col_lev3 = sf.cid2index(F_LIV3);
|
||||
const int col_lev4 = sf.cid2index(F_LIV4);
|
||||
TString80 codgiac;
|
||||
|
||||
for (int i = 0; i < sf.items(); i++)
|
||||
{
|
||||
TToken_string & row = sf.row(i);
|
||||
bool selected = *row.get(sf.cid2index(F_ATTIVO)) > ' ';
|
||||
|
||||
mask.livelli_giac().pack_grpcode(codgiac, row.get(col_lev1), 1);
|
||||
mask.livelli_giac().pack_grpcode(codgiac, row.get(col_lev2), 2);
|
||||
mask.livelli_giac().pack_grpcode(codgiac, row.get(col_lev3), 3);
|
||||
mask.livelli_giac().pack_grpcode(codgiac, row.get(col_lev4), 4);
|
||||
if (codgiac.full())
|
||||
{
|
||||
multirel.zero();
|
||||
multirel.put(MULTI_COD, FILE_KEY);
|
||||
multirel.put(MULTI_FIRST, codart);
|
||||
multirel.put(MULTI_SECOND, codgiac);
|
||||
|
||||
bool exist = multirel.read(_isequal) == NOERR;
|
||||
|
||||
if (exist && !selected)
|
||||
err = multirel.remove();
|
||||
else
|
||||
if (!exist && selected)
|
||||
{
|
||||
multirel.zero();
|
||||
multirel.put(MULTI_COD, FILE_KEY);
|
||||
multirel.put(MULTI_FIRST, codart);
|
||||
multirel.put(MULTI_SECOND, codgiac);
|
||||
err = multirel.write();
|
||||
}
|
||||
}
|
||||
}
|
||||
TRelation & r = *get_relation();
|
||||
|
||||
r.lfile().put(ANAMAG_CODART, codart);
|
||||
r.read(_isequal);
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TRelArticoligiac_multirel_app::remove()
|
||||
{
|
||||
int err;
|
||||
TLocalisamfile multirel(LF_MULTIREL);
|
||||
const TString& codart = _mask->get(F_CODART);
|
||||
|
||||
multirel.put(MULTI_COD, FILE_KEY);
|
||||
multirel.put(MULTI_FIRST, codart);
|
||||
|
||||
for (err = multirel.read(_isgteq); err == NOERR && codart == multirel.get(MULTI_FIRST); err = multirel.next())
|
||||
err = multirel.remove();
|
||||
return err == NOERR || err == _iseof;
|
||||
}
|
||||
|
||||
bool TRelArticoligiac_multirel_app::find(word key)
|
||||
{
|
||||
bool ok = false;
|
||||
const TString& codart = _mask->get(F_CODART);
|
||||
|
||||
if (codart.full())
|
||||
{
|
||||
TLocalisamfile multirel(LF_MULTIREL);
|
||||
|
||||
multirel.put(MULTI_COD, FILE_KEY);
|
||||
multirel.put(MULTI_FIRST, codart);
|
||||
ok = (multirel.read(_isgteq) == NOERR) && (codart == multirel.get(MULTI_FIRST));
|
||||
if (ok)
|
||||
{
|
||||
TRelation & r = *get_relation();
|
||||
|
||||
r.lfile().put(ANAMAG_CODART, codart);
|
||||
r.read(_isequal);
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
int ve2600(int argc, char* argv[])
|
||||
{
|
||||
TRelArticoligiac_multirel_app a;
|
||||
a.run(argc, argv, TR("Relazioni articoli livelli di giacenza"));
|
||||
return 0;
|
||||
}
|
13
ve/ve2600a.h
Executable file
13
ve/ve2600a.h
Executable file
@ -0,0 +1,13 @@
|
||||
// Defines per maschera
|
||||
#define F_COD 149
|
||||
#define F_CODTAB 150
|
||||
#define F_CODART 151
|
||||
#define F_DESCRART 152
|
||||
#define F_LIVGIAC 153
|
||||
|
||||
#define F_LIV1 101
|
||||
#define F_LIV2 102
|
||||
#define F_LIV3 103
|
||||
#define F_LIV4 104
|
||||
#define F_DESCR 105
|
||||
#define F_ATTIVO 106
|
172
ve/ve2600a.uml
Executable file
172
ve/ve2600a.uml
Executable file
@ -0,0 +1,172 @@
|
||||
#include "ve2600a.h"
|
||||
|
||||
TOOLBAR "" 0 -2 0 2
|
||||
#include <toolbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Relazioni Articoli Livelli di Giacenza" -1 -1 80 20
|
||||
|
||||
LIST F_COD 5
|
||||
BEGIN
|
||||
PROMPT 50 50 ""
|
||||
ITEM "ARTLV|ARTLV"
|
||||
FIELD COD
|
||||
FLAGS "H"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
NUMBER F_CODTAB 3
|
||||
BEGIN
|
||||
PROMPT 50 50 ""
|
||||
USE LF_MULTIREL
|
||||
INPUT COD F_COD SELECT
|
||||
INPUT FIRST F_CODTAB
|
||||
DISPLAY "Codice" FIRST
|
||||
DISPLAY "Descrizione@60" DATA
|
||||
DISPLAY "Causale Collegata" SECOND
|
||||
OUTPUT F_CODTAB FIRST
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD FIRST
|
||||
FLAGS "H"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
|
||||
STRING F_CODART 20
|
||||
BEGIN
|
||||
PROMPT 4 2 "Codice Articolo "
|
||||
FLAG "UG"
|
||||
USE LF_ANAMAG SELECT LIVPERART!=""
|
||||
INPUT CODART F_CODART
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_CODART CODART
|
||||
OUTPUT F_DESCRART DESCR
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_CODTAB
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESCRART 50
|
||||
BEGIN
|
||||
PROMPT 4 3 "Descrizione "
|
||||
USE LF_ANAMAG KEY 2 SELECT LIVPERART!=""
|
||||
INPUT DESCR F_DESCRART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
COPY OUTPUT F_CODART
|
||||
CHECKTYPE SEARCH
|
||||
KEY 2
|
||||
END
|
||||
|
||||
SPREADSHEET F_LIVGIAC 85 -3
|
||||
BEGIN
|
||||
PROMPT 1 5 "Livelli di giacenza"
|
||||
ITEM "Liv1@10"
|
||||
ITEM "Liv2@6"
|
||||
ITEM "Liv3@6"
|
||||
ITEM "Liv4@6"
|
||||
ITEM "Descrizione@50"
|
||||
ITEM "Attivo"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Righe" -1 -1 80 18
|
||||
|
||||
STRING F_LIV1 10
|
||||
BEGIN
|
||||
FLAGS "U"
|
||||
PROMPT 2 2 "Livello 1 "
|
||||
USE GCG //SELECT CODTAB[1,1]=="1"
|
||||
JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1]
|
||||
INPUT CODTAB[1,1] "1"
|
||||
INPUT CODTAB[2,11] F_LIV1
|
||||
DISPLAY "Livello@20" 500@->S0
|
||||
DISPLAY "Gruppo@10" CODTAB[2,20]
|
||||
DISPLAY "Descr.@30" S0
|
||||
OUTPUT F_LIV1 CODTAB[2,12]
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE NORMAL
|
||||
|
||||
MESSAGE EMPTY CLEAR,F_LIV2|CLEAR,F_LIV3|CLEAR,F_LIV4
|
||||
MESSAGE ENABLE,F_LIV2
|
||||
END
|
||||
|
||||
STRING F_LIV2 10
|
||||
BEGIN
|
||||
FLAGS "U"
|
||||
PROMPT 40 2 "Livello 2 "
|
||||
USE GCG //SELECT CODTAB[1,1]=="2"
|
||||
JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1]
|
||||
INPUT CODTAB[1,1] "2"
|
||||
INPUT CODTAB[2,12] F_LIV2
|
||||
COPY DISPLAY F_LIV1
|
||||
OUTPUT F_LIV2 CODTAB[2,12]
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE EMPTY CLEAR,F_LIV3|CLEAR,F_LIV4
|
||||
MESSAGE ENABLE,F_LIV3
|
||||
END
|
||||
|
||||
STRING F_LIV3 10
|
||||
BEGIN
|
||||
FLAGS "U"
|
||||
PROMPT 2 3 "Livello 3 "
|
||||
USE GCG //SELECT CODTAB[1,1]=="3"
|
||||
JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1]
|
||||
INPUT CODTAB[1,1] "3"
|
||||
INPUT CODTAB[2,12] F_LIV3
|
||||
COPY DISPLAY F_LIV1
|
||||
OUTPUT F_LIV3 CODTAB[2,12]
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE NORMAL
|
||||
MESSAGE EMPTY CLEAR,F_LIV4
|
||||
MESSAGE ENABLE,F_LIV4
|
||||
END
|
||||
|
||||
STRING F_LIV4 10
|
||||
BEGIN
|
||||
FLAGS "U"
|
||||
PROMPT 40 3 "Livello 4 "
|
||||
USE GCG //SELECT CODTAB[1,1]=="4"
|
||||
JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1]
|
||||
INPUT CODTAB[1,1] "4"
|
||||
INPUT CODTAB[2,12] F_LIV4
|
||||
COPY DISPLAY F_LIV1
|
||||
OUTPUT F_LIV4 CODTAB[2,12]
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 20 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_ATTIVO
|
||||
BEGIN
|
||||
PROMPT 2 5 "Attivo per questo utente"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 11 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 11 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 11 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
@ -53,7 +53,7 @@ void TStatus_change::main_loop()
|
||||
recfin.put(DOC_NDOC, m.get(F_ANUMERO));
|
||||
|
||||
TString filter;
|
||||
filter << DOC_STATO << "==" << m.get(F_INIZIALE);
|
||||
filter << DOC_STATO << "==\"" << m.get(F_INIZIALE) << "\"";
|
||||
|
||||
TCursor cur(&rel, filter, 1, &recini, &recfin);
|
||||
const long total = cur.items();
|
||||
|
@ -64,7 +64,7 @@ BEGIN
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIALE CODTAB
|
||||
OUTPUT F_DESCINI S0
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESCINI 50 52
|
||||
|
127
ve/veconf.h
127
ve/veconf.h
@ -176,6 +176,16 @@
|
||||
#define F_CHK_USER8 127
|
||||
#define F_CHK_USER9 128
|
||||
#define F_CHK_USER10 129
|
||||
#define F_CHK_USER11 220
|
||||
#define F_CHK_USER12 221
|
||||
#define F_CHK_USER13 222
|
||||
#define F_CHK_USER14 223
|
||||
#define F_CHK_USER15 224
|
||||
#define F_CHK_USER16 225
|
||||
#define F_CHK_USER17 226
|
||||
#define F_CHK_USER18 227
|
||||
#define F_CHK_USER19 228
|
||||
#define F_CHK_USER20 229
|
||||
#define F_PROMPT_USER1 130
|
||||
#define F_PROMPT_USER2 131
|
||||
#define F_PROMPT_USER3 132
|
||||
@ -186,46 +196,87 @@
|
||||
#define F_PROMPT_USER8 137
|
||||
#define F_PROMPT_USER9 138
|
||||
#define F_PROMPT_USER10 139
|
||||
#define F_TYPE_USER1 140
|
||||
#define F_TYPE_USER2 141
|
||||
#define F_TYPE_USER3 142
|
||||
#define F_TYPE_USER4 143
|
||||
#define F_TYPE_USER5 144
|
||||
#define F_TYPE_USER6 145
|
||||
#define F_TYPE_USER7 146
|
||||
#define F_TYPE_USER8 147
|
||||
#define F_TYPE_USER9 148
|
||||
#define F_TYPE_USER10 149
|
||||
#define F_LEN_USER1 150
|
||||
#define F_LEN_USER2 151
|
||||
#define F_LEN_USER3 152
|
||||
#define F_LEN_USER4 153
|
||||
#define F_LEN_USER5 154
|
||||
#define F_LEN_USER6 155
|
||||
#define F_LEN_USER7 156
|
||||
#define F_LEN_USER8 157
|
||||
#define F_LEN_USER9 158
|
||||
#define F_LEN_USER10 159
|
||||
#define F_DEC_USER1 160
|
||||
#define F_DEC_USER2 161
|
||||
#define F_DEC_USER3 162
|
||||
#define F_DEC_USER4 163
|
||||
#define F_DEC_USER5 164
|
||||
#define F_DEC_USER6 165
|
||||
#define F_DEC_USER7 166
|
||||
#define F_DEC_USER8 167
|
||||
#define F_DEC_USER9 168
|
||||
#define F_DEC_USER10 169
|
||||
#define F_GEN_EAN 170
|
||||
#define F_ALT_EAN 171
|
||||
#define F_EAN8 172
|
||||
#define F_EAN13 173
|
||||
#define F_EAN8CIN 174
|
||||
#define F_PROMPT_USER11 140
|
||||
#define F_PROMPT_USER12 141
|
||||
#define F_PROMPT_USER13 142
|
||||
#define F_PROMPT_USER14 143
|
||||
#define F_PROMPT_USER15 144
|
||||
#define F_PROMPT_USER16 145
|
||||
#define F_PROMPT_USER17 146
|
||||
#define F_PROMPT_USER18 147
|
||||
#define F_PROMPT_USER19 148
|
||||
#define F_PROMPT_USER20 149
|
||||
#define F_TYPE_USER1 150
|
||||
#define F_TYPE_USER2 151
|
||||
#define F_TYPE_USER3 152
|
||||
#define F_TYPE_USER4 153
|
||||
#define F_TYPE_USER5 154
|
||||
#define F_TYPE_USER6 155
|
||||
#define F_TYPE_USER7 156
|
||||
#define F_TYPE_USER8 157
|
||||
#define F_TYPE_USER9 158
|
||||
#define F_TYPE_USER10 159
|
||||
#define F_TYPE_USER11 160
|
||||
#define F_TYPE_USER12 161
|
||||
#define F_TYPE_USER13 162
|
||||
#define F_TYPE_USER14 163
|
||||
#define F_TYPE_USER15 164
|
||||
#define F_TYPE_USER16 165
|
||||
#define F_TYPE_USER17 166
|
||||
#define F_TYPE_USER18 167
|
||||
#define F_TYPE_USER19 168
|
||||
#define F_TYPE_USER20 169
|
||||
#define F_LEN_USER1 170
|
||||
#define F_LEN_USER2 171
|
||||
#define F_LEN_USER3 172
|
||||
#define F_LEN_USER4 173
|
||||
#define F_LEN_USER5 174
|
||||
#define F_LEN_USER6 175
|
||||
#define F_LEN_USER7 176
|
||||
#define F_LEN_USER8 177
|
||||
#define F_LEN_USER9 178
|
||||
#define F_LEN_USER10 179
|
||||
#define F_LEN_USER11 180
|
||||
#define F_LEN_USER12 181
|
||||
#define F_LEN_USER13 182
|
||||
#define F_LEN_USER14 183
|
||||
#define F_LEN_USER15 184
|
||||
#define F_LEN_USER16 185
|
||||
#define F_LEN_USER17 186
|
||||
#define F_LEN_USER18 187
|
||||
#define F_LEN_USER19 188
|
||||
#define F_LEN_USER20 189
|
||||
#define F_DEC_USER1 190
|
||||
#define F_DEC_USER2 191
|
||||
#define F_DEC_USER3 192
|
||||
#define F_DEC_USER4 193
|
||||
#define F_DEC_USER5 194
|
||||
#define F_DEC_USER6 195
|
||||
#define F_DEC_USER7 196
|
||||
#define F_DEC_USER8 197
|
||||
#define F_DEC_USER9 198
|
||||
#define F_DEC_USER10 199
|
||||
#define F_DEC_USER11 200
|
||||
#define F_DEC_USER12 201
|
||||
#define F_DEC_USER13 202
|
||||
#define F_DEC_USER14 203
|
||||
#define F_DEC_USER15 204
|
||||
#define F_DEC_USER16 205
|
||||
#define F_DEC_USER17 206
|
||||
#define F_DEC_USER18 207
|
||||
#define F_DEC_USER19 208
|
||||
#define F_DEC_USER20 209
|
||||
#define F_GEN_EAN 210
|
||||
#define F_ALT_EAN 211
|
||||
#define F_EAN8 212
|
||||
#define F_EAN13 213
|
||||
#define F_EAN8CIN 214
|
||||
|
||||
|
||||
// Campi per ve0200h.uml
|
||||
#define F_RISKDAYS 201
|
||||
#define F_PERCTOLL 202
|
||||
#define F_DOCS 203
|
||||
#define F_RISKDAYS 215
|
||||
#define F_PERCTOLL 216
|
||||
#define F_DOCS 217
|
||||
|
||||
#define SN_CODNUM 101
|
||||
#define SN_DESCR 102
|
||||
|
15
ve/velib.h
15
ve/velib.h
@ -222,6 +222,7 @@ class TTipo_documento : public TRectype // velib03
|
||||
TString16 _totale_cont;
|
||||
TString16 _field_prezzo;
|
||||
TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
|
||||
TString16 _field_qta_mag, _field_qtaevasa_mag; // Veri campi Quantità e Quantità Evasa per magazzino
|
||||
TString16 _raee_cod, _raee_fld;
|
||||
TString _str_desc_doc, _str_desc_rdoc;
|
||||
TString4 _module;
|
||||
@ -263,6 +264,8 @@ public:
|
||||
const char * field_prezzo() const { return _field_prezzo; }
|
||||
const TString& field_qta() const { return _field_qta; }
|
||||
const TString& field_qtaevasa() const { return _field_qtaevasa; }
|
||||
const TString& field_qta_mag() const { return _field_qta_mag; }
|
||||
const TString& field_qtaevasa_mag() const { return _field_qtaevasa_mag; }
|
||||
bool check_giac() const { return _check_qta == 'G'; }
|
||||
bool check_disp() const { return _check_qta == 'D'; }
|
||||
bool load_cont() const { return _load_cont; }
|
||||
@ -386,6 +389,7 @@ class TTipo_riga_documento : public TRectype // velib02
|
||||
|
||||
TString16 _field_provv;
|
||||
TString16 _field_qta, _field_qtaevasa; // Veri campi Quantità e Quantità Evasa
|
||||
TString16 _field_qta_mag, _field_qtaevasa_mag; // Veri campi Quantità e Quantità Evasa per magazzino
|
||||
|
||||
TToken_string _search_nums;
|
||||
int _search_years;
|
||||
@ -423,6 +427,8 @@ public:
|
||||
const TString& quantevasa() const { return _quantevasa;}
|
||||
const TString& field_qta() const { return _field_qta;}
|
||||
const TString& field_qtaevasa() const { return _field_qtaevasa;}
|
||||
const TString& field_qta_mag() const { return _field_qta_mag;}
|
||||
const TString& field_qtaevasa_mag() const { return _field_qtaevasa_mag;}
|
||||
|
||||
const int search_years() const { return _search_years;}
|
||||
const TToken_string& search_nums() const { return _search_nums;}
|
||||
@ -469,6 +475,8 @@ protected:
|
||||
virtual TRiga_documento & copy(const TRiga_documento & r);
|
||||
TObject* dup() const { return new TRiga_documento(*this); }
|
||||
virtual void set_variables(TExpression * e) const ;
|
||||
bool has_doc() const { return _doc != NULL;}
|
||||
|
||||
|
||||
static void test_firm();
|
||||
|
||||
@ -548,6 +556,12 @@ public:
|
||||
real quantita() const;
|
||||
real qtaevasa() const;
|
||||
real qtaresidua() const;
|
||||
|
||||
virtual const TString& field_qta_mag() const;
|
||||
virtual const TString& field_qtaevasa_mag() const;
|
||||
virtual real quantita_mag() const;
|
||||
virtual real qtaevasa_mag() const;
|
||||
virtual real qtaresidua_mag() const;
|
||||
real calc_conai_qta(int type) const;
|
||||
|
||||
real valore(bool totale, bool lordo = false, int ndec = AUTO_DECIMALS) const;
|
||||
@ -907,6 +921,7 @@ public:
|
||||
|
||||
static TAssoc_array & auto_reopen_nums() { return _auto_reopen_nums;}
|
||||
static TAssoc_array & tipidoc_rels() { return _tipidoc_rels;}
|
||||
const TAssoc_array & father_rows() const { return _father_rows;}
|
||||
void reset_father_rows() {_father_rows.destroy();}
|
||||
void update_father_rows(bool add = true);
|
||||
void save_father_rows();
|
||||
|
127
ve/velib02.cpp
127
ve/velib02.cpp
@ -101,6 +101,12 @@ void TTipo_riga_documento::read_formule()
|
||||
_field_provv = profile.get("PROVV");
|
||||
_field_qta = profile.get("QTA"); // Non dare un default: ingannerebbe il tipo documento
|
||||
_field_qtaevasa = profile.get("QTAEVASA"); // Non dare un default: ingannerebbe il tipo documento
|
||||
_field_qta_mag = profile.get("QTA_MAG");
|
||||
if(_field_qta_mag.blank())
|
||||
_field_qta_mag = _field_qta;
|
||||
_field_qtaevasa_mag = profile.get("QTAEVASA_MAG");
|
||||
if(_field_qtaevasa_mag.blank())
|
||||
_field_qtaevasa_mag = _field_qtaevasa;
|
||||
_field_imposta = profile.get("IMPOSTA");
|
||||
_incrp = profile.get_int("VARP+");
|
||||
_decrp = profile.get_int("VARP-");
|
||||
@ -153,6 +159,7 @@ bool TRiga_documento::_rit_calc = false;
|
||||
TRiga_documento::TRiga_documento(TDocumento* doc, const char * tipo)
|
||||
: TAuto_variable_rectype(LF_RIGHEDOC), _doc(doc)
|
||||
{
|
||||
set_memo_fld("G1");
|
||||
if (tipo)
|
||||
set_tipo(tipo);
|
||||
}
|
||||
@ -161,6 +168,7 @@ TRiga_documento::TRiga_documento(const TRiga_documento & row)
|
||||
: TAuto_variable_rectype(LF_RIGHEDOC), _doc(NULL)
|
||||
|
||||
{
|
||||
set_memo_fld("G1");
|
||||
copy(row);
|
||||
}
|
||||
|
||||
@ -168,6 +176,7 @@ TRiga_documento::TRiga_documento(const TRiga_documento& rec, TDocumento* doc,
|
||||
const char * tipo)
|
||||
: TAuto_variable_rectype(rec), _doc(doc)
|
||||
{
|
||||
set_memo_fld("G1");
|
||||
if (tipo)
|
||||
set_tipo(tipo);
|
||||
}
|
||||
@ -342,11 +351,11 @@ void TRiga_documento::cost2revenue()
|
||||
// Ritorna TRUE se le due righe del documento possono essere sommate
|
||||
bool TRiga_documento::raggruppabile(const TRiga_documento& r, TToken_string& campi) const
|
||||
{
|
||||
bool ok = TRUE;
|
||||
TString campo;
|
||||
bool ok = field_qta() == r.field_qta() && field_qtaevasa() == r.field_qtaevasa();
|
||||
|
||||
for (const char* c = campi.get(0); c && ok; c = campi.get())
|
||||
{
|
||||
campo = get(c); // Separare le due get!
|
||||
const TString & campo = get(c); // Separare le due get!
|
||||
ok &= campo == r.get(c);
|
||||
}
|
||||
return ok;
|
||||
@ -354,10 +363,8 @@ bool TRiga_documento::raggruppabile(const TRiga_documento& r, TToken_string& cam
|
||||
|
||||
TRiga_documento& TRiga_documento::operator +=(const TRiga_documento& r)
|
||||
{
|
||||
const TTipo_documento& tipo = doc().tipo();
|
||||
|
||||
// New age mode
|
||||
const char* const campi[5] = { RDOC_NCOLLI, RDOC_TARA, RDOC_PNETTO, tipo.field_qta(), tipo.field_qtaevasa() };
|
||||
const char* const campi[5] = { RDOC_NCOLLI, RDOC_TARA, RDOC_PNETTO, field_qta(), field_qtaevasa() };
|
||||
for (int i = 0; i < 5; i++)
|
||||
add(campi[i], r.get_real(campi[i]));
|
||||
|
||||
@ -718,6 +725,45 @@ real TRiga_documento::qtaresidua() const
|
||||
return ZERO;
|
||||
}
|
||||
|
||||
const TString& TRiga_documento::field_qta_mag() const
|
||||
{
|
||||
const TString& rowtype_field = tipo().field_qta_mag();
|
||||
if (rowtype_field.not_empty())
|
||||
return rowtype_field;
|
||||
const TString& doctype_field = doc().tipo().field_qta_mag();
|
||||
return doctype_field;
|
||||
}
|
||||
|
||||
const TString& TRiga_documento::field_qtaevasa_mag() const
|
||||
{
|
||||
const TString& rowtype_field = tipo().field_qtaevasa_mag();
|
||||
if (rowtype_field.not_empty())
|
||||
return rowtype_field;
|
||||
const TString& doctype_field = doc().tipo().field_qtaevasa_mag();
|
||||
return doctype_field;
|
||||
}
|
||||
|
||||
real TRiga_documento::quantita_mag() const
|
||||
{
|
||||
return get_real(field_qta_mag());
|
||||
}
|
||||
|
||||
real TRiga_documento::qtaevasa_mag() const
|
||||
{
|
||||
return get_real(field_qtaevasa_mag());
|
||||
}
|
||||
|
||||
real TRiga_documento::qtaresidua_mag() const
|
||||
{
|
||||
if (!get_bool(RDOC_RIGAEVASA))
|
||||
{
|
||||
real val = quantita_mag() - qtaevasa_mag();
|
||||
if (val > ZERO)
|
||||
return val;
|
||||
}
|
||||
return ZERO;
|
||||
}
|
||||
|
||||
real TRiga_documento::calc_conai_qta(int type) const
|
||||
{
|
||||
const char* const __conai_art_names[] = {"CONACC", "CONALL", "CONCAR", "CONPLA", "CONLEG", "CONVET"};
|
||||
@ -749,20 +795,13 @@ real TRiga_documento::valore(bool totale, bool lordo, int ndec) const
|
||||
{
|
||||
real val;
|
||||
|
||||
TString16 field_qta = tipo().field_qta();
|
||||
if (field_qta.empty())
|
||||
field_qta = doc().tipo().field_qta();
|
||||
const bool qta_is_price = field_qta == RDOC_PREZZO;
|
||||
const TString & f_qta = field_qta();
|
||||
const bool qta_is_price = f_qta == RDOC_PREZZO;
|
||||
|
||||
if (totale)
|
||||
{
|
||||
TString16 field_qta = tipo().field_qta();
|
||||
if (field_qta.empty())
|
||||
field_qta = doc().tipo().field_qta();
|
||||
if (qta_is_price)
|
||||
field_qta = RDOC_QTA;
|
||||
val = get_real(field_qta);
|
||||
val *= prezzo(TRUE, lordo, ALL_DECIMALS);
|
||||
val = get_real(qta_is_price ? RDOC_QTA : f_qta);
|
||||
val *= prezzo(TRUE, lordo, ALL_DECIMALS);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -870,13 +909,7 @@ void TRiga_documento::autosave(TSheet_field& f)
|
||||
TMask& m = f.sheet_mask();
|
||||
TToken_string & row = f.row(num);
|
||||
|
||||
/* const int lordo_id = f.cid2index(FR_LORDO);
|
||||
const bool lordo = strcmp(row.get(lordo_id), "X") == 0;
|
||||
if (lordo)
|
||||
{
|
||||
row.add(" ", lordo_id);
|
||||
m.reset(FR_LORDO);
|
||||
} */
|
||||
|
||||
put( RDOC_TIPORIGA, row.get( f.cid2index(FR_TIPORIGA )) );
|
||||
TString8 codmag(row.get(f.cid2index(FR_CODMAG)));
|
||||
|
||||
@ -951,6 +984,7 @@ void TRiga_documento::autosave(TSheet_field& f)
|
||||
put( RDOC_LINEA, row.get( f.cid2index(FR_LINEA )) );
|
||||
put( RDOC_CODAGG1, row.get( f.cid2index(FR_CODAGG1)) );
|
||||
put( RDOC_CODAGG2, row.get( f.cid2index(FR_CODAGG2)) );
|
||||
put( RDOC_RIDPREZZO, row.get( f.cid2index(FR_RIDPREZZO)) );
|
||||
|
||||
f.select(num); // Seleziona la riga in modo da selezionare la maschera di riga giusta
|
||||
for (short cdcid = FR_CDC1; cdcid <= FR_CDC12; cdcid++)
|
||||
@ -1009,23 +1043,23 @@ void TRiga_documento::autosave(TSheet_field& f)
|
||||
} //if(m.field(...
|
||||
|
||||
// Salvo i campi con un FIELD manuale
|
||||
const int last_pos = f.cid2index(FR_CODAGG2);
|
||||
f.select(num); // Seleziono la riga giusta in modo da avere la maschera giusta
|
||||
for (int i = last_pos+1; ; i++)
|
||||
{
|
||||
const char* val = row.get(i);
|
||||
if (val != NULL)
|
||||
const TMask& m = f.sheet_row_mask(num);
|
||||
|
||||
for (short id = FR_JOLLY1; id <= FR_JOLLY10; id++)
|
||||
{
|
||||
const short id = FR_LORDO + i;
|
||||
const int pos = m.id2pos(id);
|
||||
if (pos >= 0)
|
||||
|
||||
if (pos > 0)
|
||||
{
|
||||
const TMask_field& c = m.fld(pos);
|
||||
const TFieldref* fld = c.field();
|
||||
const char* val = row.get(f.cid2index(id));
|
||||
|
||||
if (val != NULL)
|
||||
{
|
||||
const TFieldref* fld = m.fld(pos).field();
|
||||
|
||||
if (fld != NULL)
|
||||
fld->write(val, *this);
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
@ -1097,9 +1131,10 @@ void TRiga_documento::autoload(TSheet_field & f)
|
||||
row.add( get( RDOC_LINEA) , f.cid2index(FR_LINEA));
|
||||
row.add( get( RDOC_CODAGG1) , f.cid2index(FR_CODAGG1));
|
||||
row.add( get( RDOC_CODAGG2) , f.cid2index(FR_CODAGG2));
|
||||
row.add( get( RDOC_RIDPREZZO) , f.cid2index(FR_RIDPREZZO));
|
||||
|
||||
const TMask& m = f.sheet_row_mask(num);
|
||||
|
||||
f.select(num); // Seleziona la riga in modo da selezionare la maschera di riga giusta
|
||||
const TMask& m = f.sheet_mask();
|
||||
for (short cdcid = FR_CDC1; cdcid <= FR_CDC12; cdcid++)
|
||||
{
|
||||
const int pos = m.id2pos(cdcid);
|
||||
@ -1116,19 +1151,23 @@ void TRiga_documento::autoload(TSheet_field & f)
|
||||
row.add( get( RDOC_TIPODET) , f.cid2index(FR_TIPODET));
|
||||
|
||||
// Leggo i campi con un FIELD manuale
|
||||
const int last_pos = f.cid2index(FR_CODAGG2);
|
||||
f.select(num); // Seleziono la riga giusta in modo da avere la maschera giusta
|
||||
FOR_EACH_MASK_FIELD(m, i, c)
|
||||
|
||||
for (short id = FR_JOLLY1; id <= FR_JOLLY10; id++)
|
||||
{
|
||||
const TFieldref* fld = c->field();
|
||||
const int pos = m.id2pos(id);
|
||||
|
||||
if (pos > 0)
|
||||
{
|
||||
const TFieldref* fld = m.fld(pos).field();
|
||||
|
||||
if (fld != NULL)
|
||||
{
|
||||
const int idx = f.cid2index(c->dlg());
|
||||
if (idx > last_pos && idx < MAX_COLUMNS)
|
||||
const int idx = f.cid2index(id);
|
||||
|
||||
row.add(fld->read(*this), idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
||||
TArticolo & TRiga_documento::articolo() const
|
||||
{
|
||||
|
@ -1099,7 +1099,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
|
||||
r.put(RDOC_MOVMAG, r_num);
|
||||
}
|
||||
|
||||
const real qta = scarica_residuo ? r.qtaresidua(): r.quantita();
|
||||
const real qta = scarica_residuo ? r.qtaresidua_mag(): r.quantita_mag();
|
||||
|
||||
if (r_num == num_movmag && !qta.is_zero())
|
||||
{
|
||||
@ -1739,7 +1739,8 @@ void TDocumento::set_fields(TAuto_variable_rectype & rec)
|
||||
{
|
||||
const char * fieldname = src_field->name();
|
||||
|
||||
if (!exist(fieldname))
|
||||
// if (!exist(fieldname))
|
||||
if (src_field->expression() == NULL)
|
||||
put(fieldname, rec.get(fieldname));
|
||||
}
|
||||
}
|
||||
|
@ -334,6 +334,12 @@ void TTipo_documento::read_formule()
|
||||
_field_prezzo = prof.get(RDOC_PREZZO);
|
||||
_field_qta = prof.get(RDOC_QTA, NULL, -1, RDOC_QTA);
|
||||
_field_qtaevasa = prof.get(RDOC_QTAEVASA, NULL, -1, RDOC_QTAEVASA);
|
||||
_field_qta_mag = prof.get("QTA_MAG");
|
||||
if(_field_qta_mag.blank())
|
||||
_field_qta_mag = _field_qta;
|
||||
_field_qtaevasa_mag = prof.get("QTAEVASA_MAG");
|
||||
if(_field_qtaevasa_mag.blank())
|
||||
_field_qtaevasa_mag = _field_qtaevasa;
|
||||
_check_qta = prof.get_char("CHECK_QTA", "MAIN");
|
||||
_load_cont = prof.get_bool("LOAD_CONT", "MAIN");
|
||||
_raee_cod = prof.get("RAEE_COD", "MAIN");
|
||||
|
@ -589,6 +589,35 @@ bool TConsegna_ordini::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
|
||||
outrec.set_original_rdoc_key(inrec);
|
||||
if (reload_prices())
|
||||
outrec.zero(RDOC_CHECKED);
|
||||
|
||||
if (prezzo_da_ordine())
|
||||
{
|
||||
const TString & codart = outrec.get(RDOC_CODARTMAG);
|
||||
const bool doc_al_lordo = outdoc.tipo().calcolo_lordo();
|
||||
const TRectype & anamag = cache().get(LF_ANAMAG, codart);
|
||||
|
||||
if (!anamag.empty())
|
||||
{
|
||||
TString16 field_prezzo(outdoc.tipo().field_prezzo());
|
||||
|
||||
if (field_prezzo.full())
|
||||
outrec.put(RDOC_PREZZO, anamag.get_real(field_prezzo));
|
||||
else
|
||||
{
|
||||
const TString16 um(outrec.get(RDOC_UMQTA));
|
||||
|
||||
if (um.full())
|
||||
{
|
||||
TLocalisamfile umart(LF_UMART);
|
||||
umart.setkey(2);
|
||||
umart.put("CODART", codart);
|
||||
umart.put("UM", um);
|
||||
if (umart.read() == NOERR)
|
||||
outrec.put(RDOC_PREZZO, umart.get_real("PREZZO"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "veuml1.h"
|
||||
#include "veini.h"
|
||||
|
||||
#include <multirel.h>
|
||||
#include "sconti.h"
|
||||
#include "rcondv.h"
|
||||
#include <occas.h>
|
||||
@ -1410,11 +1411,15 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
case K_TAB: // ingresso nella riga
|
||||
if (!selecting && m.is_running())
|
||||
{
|
||||
if (r < doc.physical_rows())
|
||||
{
|
||||
|
||||
m.update_giacenza();
|
||||
const TRectype& rdoc = doc[r + 1];
|
||||
set_curr_um(rdoc.get(RDOC_UMQTA));
|
||||
const bool on = rdoc.get(RDOC_DACODNUM).not_empty();
|
||||
ss.sheet_mask().enable(DLG_USER, on);
|
||||
}
|
||||
|
||||
if (rdoc.get(RDOC_CODART).empty() && rdoc.get(RDOC_DESCR).empty())
|
||||
{
|
||||
@ -1424,6 +1429,56 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
}
|
||||
}
|
||||
break;
|
||||
case K_CTRL + K_TAB: // uscita dalla riga
|
||||
{
|
||||
bool ok = true;
|
||||
static int checkgiac = 3;
|
||||
if (checkgiac > 2)
|
||||
{
|
||||
TConfig c(CONFIG_DITTA);
|
||||
checkgiac = c.get_bool("LIVPERART", "ve");
|
||||
}
|
||||
if (checkgiac)
|
||||
{
|
||||
TString livello;
|
||||
TToken_string & row = ss.row(r);
|
||||
|
||||
for (int l = 0; l<4 ; l++)
|
||||
doc.livelli().pack_grpcode(livello, row.get(ss.cid2index(FR_LIV1+l)), l+1);
|
||||
if (livello.full())
|
||||
{
|
||||
const TString80 codart(row.get(ss.cid2index(FR_CODART)));
|
||||
const TRectype & rec = cache().get(LF_ANAMAG, codart);
|
||||
const bool check_art = rec.get_bool(ANAMAG_LIVPERART);
|
||||
|
||||
if (check_art)
|
||||
{
|
||||
TLocalisamfile fl(LF_MULTIREL);
|
||||
TRectype & r = fl.curr();
|
||||
|
||||
r.put(MULTI_COD, "ARTLV");
|
||||
r.put(MULTI_FIRST, codart);
|
||||
r.put(MULTI_SECOND, livello);
|
||||
|
||||
TRectype new_rec(r);
|
||||
if (fl.read() != NOERR)
|
||||
{
|
||||
ok = yesno_box("Il codice di giacenza %s non e' legato all' articolo. Devo legarlo", (const char *)livello);
|
||||
if (ok)
|
||||
{
|
||||
r = new_rec;
|
||||
const int err = new_rec.write(fl);
|
||||
if (err != NOERR)
|
||||
return error_box("Non sono riuscito a legare il codice di giacenza. Errore %d", err);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -3388,7 +3443,7 @@ void TDocumento_mask::save_father_rows()
|
||||
if (idriga == rdoc_row.get_long(RDOC_IDRIGA))
|
||||
{
|
||||
const real * qta = (const real *) _father_rows.objptr(key);
|
||||
const TString16 name = rdoc_row.field_qtaevasa();
|
||||
const TString& name = rdoc_row.field_qtaevasa();
|
||||
real qtaevasa = rdoc_row.get_real(name) + * qta;
|
||||
|
||||
if (qtaevasa < ZERO)
|
||||
|
379
ve/velib06a.cpp
379
ve/velib06a.cpp
@ -373,6 +373,11 @@ void row_set_handler( TMask& m, const int field, const int index)
|
||||
if (field == FR_CODART)
|
||||
m.set_handler( field, link_row_handler );
|
||||
break;
|
||||
case 6:
|
||||
m.set_handler( field, evasion_check_handler );
|
||||
break;
|
||||
default:
|
||||
|
||||
default:
|
||||
yesnofatal_box( false, "Funzione di handler sulla riga non definita( %d ).", index );
|
||||
break;
|
||||
@ -1036,12 +1041,19 @@ static void search_price_article(TEdit_field& f, KEY key )
|
||||
|
||||
const int last_anno = mask.get_int(F_ANNO);
|
||||
const int first_anno = last_anno - ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_years();
|
||||
TString80 livello;
|
||||
|
||||
for (int l = 0; l<4 ; l++)
|
||||
mask.doc().livelli().pack_grpcode(livello, row_mask.get(FR_LIV1 + l),l + 1);
|
||||
|
||||
|
||||
from.put(RDOC_CODART, codart);
|
||||
from.put(RDOC_LIVELLO, livello);
|
||||
from.put(RDOC_CODNUM, first_num);
|
||||
from.put(RDOC_ANNO, first_anno);
|
||||
from.put(RDOC_PROVV, 'D');
|
||||
to.put(RDOC_CODART, codart);
|
||||
to.put(RDOC_LIVELLO, livello);
|
||||
to.put(RDOC_CODNUM, last_num);
|
||||
to.put(RDOC_ANNO, last_anno);
|
||||
to.put(RDOC_PROVV, 'D');
|
||||
@ -1125,12 +1137,19 @@ bool search_price_handler(TMask_field& f, KEY key )
|
||||
|
||||
const int last_anno = mask.get_int(F_ANNO);
|
||||
const int first_anno = last_anno - ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_years();
|
||||
TString80 livello;
|
||||
|
||||
for (int l = 0; l<4 ; l++)
|
||||
mask.doc().livelli().pack_grpcode(livello, row_mask.get(FR_LIV1 + l),l + 1);
|
||||
|
||||
|
||||
from.put(RDOC_CODART, codart);
|
||||
from.put(RDOC_LIVELLO, livello);
|
||||
from.put(RDOC_CODNUM, first_num);
|
||||
from.put(RDOC_ANNO, first_anno);
|
||||
from.put(RDOC_PROVV, "D");
|
||||
to.put(RDOC_CODART, codart);
|
||||
to.put(RDOC_LIVELLO, livello);
|
||||
to.put(RDOC_CODNUM, last_num);
|
||||
to.put(RDOC_ANNO, last_anno);
|
||||
to.put(RDOC_PROVV, "D");
|
||||
@ -1172,6 +1191,127 @@ bool find_price_handler(TMask_field& f, KEY key )
|
||||
return codart_handler( f, key);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TCache_documenti
|
||||
///////////////////////////////////////////////////////////
|
||||
class TCache_documenti : public TRecord_cache
|
||||
{
|
||||
protected:
|
||||
virtual TObject* rec2obj(const TRectype& rec) const;
|
||||
|
||||
public:
|
||||
TDocumento& doc(const char* key);
|
||||
TCache_documenti();
|
||||
virtual ~TCache_documenti() { }
|
||||
};
|
||||
|
||||
TCache_documenti::TCache_documenti()
|
||||
: TRecord_cache(LF_DOC, 1)
|
||||
{
|
||||
test_file_changes(); // Tieni d'occhio le modifiche sul file
|
||||
set_items_limit(256); // Standard
|
||||
}
|
||||
|
||||
TObject* TCache_documenti::rec2obj(const TRectype& curr) const
|
||||
{
|
||||
return new TDocumento(curr);
|
||||
}
|
||||
|
||||
TDocumento & TCache_documenti::doc(const char* key)
|
||||
{
|
||||
return (TDocumento &)query(key);
|
||||
}
|
||||
|
||||
TDocumento & cached_doc(const char* key)
|
||||
{
|
||||
static TCache_documenti * _cache_docs = NULL;
|
||||
|
||||
if (_cache_docs == NULL)
|
||||
_cache_docs = new TCache_documenti();
|
||||
return _cache_docs->doc(key);
|
||||
}
|
||||
|
||||
class TLink_riga_documento : public TRiga_documento
|
||||
{
|
||||
protected:
|
||||
|
||||
const TDocumento_mask * _mask;
|
||||
virtual const TString& get_str(const char* fieldname) const;
|
||||
|
||||
public:
|
||||
virtual const TDocumento & doc() const;
|
||||
void set_mask(const TDocumento_mask * m) { _mask = m;}
|
||||
virtual real qtaresidua() const;
|
||||
|
||||
TLink_riga_documento(const TDocumento_mask * m = NULL, const char* tipo = NULL) : TRiga_documento(NULL, tipo), _mask(m){}
|
||||
|
||||
};
|
||||
|
||||
const TString& TLink_riga_documento::get_str(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, "RESIDUO") == 0)
|
||||
{
|
||||
TString & value = get_tmp_string(80);
|
||||
|
||||
value = qtaresidua().string();
|
||||
return value;
|
||||
}
|
||||
|
||||
return TRiga_documento::get_str(fieldname);
|
||||
}
|
||||
|
||||
const TDocumento & TLink_riga_documento::doc() const
|
||||
{
|
||||
if (has_doc())
|
||||
return TRiga_documento::doc();
|
||||
TToken_string key;
|
||||
|
||||
key.add(get_char(RDOC_PROVV));
|
||||
key.add(get_int(RDOC_ANNO));
|
||||
key.add(get(RDOC_CODNUM));
|
||||
key.add(get_long(RDOC_NDOC));
|
||||
return cached_doc(key);;
|
||||
}
|
||||
|
||||
real TLink_riga_documento::qtaresidua() const
|
||||
{
|
||||
real residuo = TRiga_documento::qtaresidua();
|
||||
TToken_string key, key_to_compare;
|
||||
const TDocumento_mask& m = (const TDocumento_mask &) *_mask;
|
||||
const TDocumento &doc = m.doc();
|
||||
const int rows = doc.physical_rows();
|
||||
const int current_doc_row = m.sfield(F_SHEET).selected() + 1;
|
||||
|
||||
key.add(get(RDOC_PROVV));
|
||||
key.add(get(RDOC_ANNO));
|
||||
key.add(get(RDOC_CODNUM));
|
||||
key.add(get(RDOC_NDOC));
|
||||
key.add(get(RDOC_IDRIGA));
|
||||
|
||||
real * qta = (real *) m.father_rows().objptr(key);
|
||||
|
||||
if (qta != NULL)
|
||||
residuo -= *qta;
|
||||
for (int j = 1; j <= rows; j++)
|
||||
{
|
||||
if (j != current_doc_row)
|
||||
{
|
||||
const TRiga_documento & row = doc[j];
|
||||
|
||||
key_to_compare.cut(0);
|
||||
key_to_compare.add(row.get(RDOC_DAPROVV));
|
||||
key_to_compare.add(row.get(RDOC_DAANNO));
|
||||
key_to_compare.add(row.get(RDOC_DACODNUM));
|
||||
key_to_compare.add(row.get(RDOC_DANDOC));
|
||||
key_to_compare.add(row.get(RDOC_DAIDRIGA));
|
||||
|
||||
if (key == key_to_compare)
|
||||
residuo -= row.quantita();
|
||||
}
|
||||
}
|
||||
return residuo;
|
||||
}
|
||||
|
||||
class TLink_article_sheet : public TBrowse_sheet
|
||||
{
|
||||
protected:
|
||||
@ -1214,11 +1354,34 @@ bool link_row_handler(TMask_field& f, KEY key )
|
||||
{
|
||||
TEdit_field& ef = (TEdit_field&)f;
|
||||
const TString& codart = row_mask.get(FR_CODART);
|
||||
const bool select_clifo = tipo.select_clifo();
|
||||
|
||||
if (codart.full() && r.get(RDOC_DACODNUM).empty())
|
||||
{
|
||||
TDate datadoc = mask.get_date(F_DATADOC);
|
||||
TToken_string nums(((TTipo_riga_documento&)r.tipo()).search_nums());
|
||||
const int sel = sh.selected();
|
||||
TToken_string & sh_row = sh.row(sel);
|
||||
const TString row_cod(sh_row.get(sh.cid2index(FR_CODART)));
|
||||
TString80 from_livello, to_livello;
|
||||
int len = 0;
|
||||
|
||||
for (int l = 1; l <= doc.livelli().last_level() ; l++)
|
||||
{
|
||||
doc.livelli().pack_grpcode(from_livello, row_mask.get(FR_LIV1 + l - 1),l);
|
||||
len += doc.livelli().code_length(l);
|
||||
}
|
||||
to_livello = from_livello;
|
||||
|
||||
if (doc.livelli().last_level() > 0 && to_livello.blank())
|
||||
to_livello.fill('{', len);
|
||||
if (row_cod.blank())
|
||||
{
|
||||
sh_row.add("", sh.cid2index(FR_CHECKED));
|
||||
sh_row.add(codart, sh.cid2index(FR_CODART));
|
||||
sh.check_row(sel);
|
||||
}
|
||||
r.autosave(sh);
|
||||
|
||||
if (nums.blank())
|
||||
nums = mask.get(F_CODNUM);
|
||||
@ -1227,31 +1390,49 @@ bool link_row_handler(TMask_field& f, KEY key )
|
||||
TString4 last_num(first_num);
|
||||
TString filter;
|
||||
|
||||
filter << "(RIGAEVASA!=\"X\")&&(CODART==\"" << codart << "\")&&(ANSI(33->DATADOC)<=\"" << datadoc.string(ANSI) << "\")" << "&&((CODNUM==\"" << first_num << "\")";
|
||||
filter << "(RIGAEVASA!=\"X\")&&(CODART==\"" << codart << "\")&&((LIVELLO>=\""
|
||||
<< from_livello << "\")&&(LIVELLO<=\"" << to_livello << "\"))&&(ANSI(33->DATADOC)<=\"" << datadoc.string(ANSI) << "\")";
|
||||
if (nums.items() > 0)
|
||||
{
|
||||
const bool more_nums = (nums.items() > 1);
|
||||
bool add_or = false;
|
||||
|
||||
filter<< "&&";
|
||||
if (more_nums)
|
||||
filter<< "(";
|
||||
FOR_EACH_TOKEN(nums, s)
|
||||
{
|
||||
if (add_or)
|
||||
filter << "||";
|
||||
add_or = true;
|
||||
if (first_num > s)
|
||||
first_num = s;
|
||||
if (last_num < s)
|
||||
last_num = s;
|
||||
filter << "||(CODNUM==\"" << s << "\")";
|
||||
filter << "(CODNUM==\"" << s << "\")";
|
||||
}
|
||||
if (more_nums)
|
||||
filter << ")";
|
||||
}
|
||||
filter << ")";
|
||||
|
||||
TRelation rel(LF_RIGHEDOC);
|
||||
TRectype from(rel.curr());
|
||||
TRectype to(rel.curr());
|
||||
|
||||
rel.lfile().set_curr(new TLink_riga_documento(&mask));
|
||||
|
||||
rel.add(LF_DOC, "PROVV==PROVV|ANNO=ANNO|CODNUM==CODNUM|NDOC==NDOC");
|
||||
|
||||
const int last_anno = mask.get_int(F_ANNO);
|
||||
const int first_anno = last_anno - tipo.search_years();
|
||||
|
||||
from.put(RDOC_CODART, codart);
|
||||
from.put(RDOC_LIVELLO, from_livello);
|
||||
from.put(RDOC_CODNUM, first_num);
|
||||
from.put(RDOC_ANNO, first_anno);
|
||||
from.put(RDOC_PROVV, 'D');
|
||||
to.put(RDOC_CODART, codart);
|
||||
to.put(RDOC_LIVELLO, to_livello);
|
||||
to.put(RDOC_CODNUM, last_num);
|
||||
to.put(RDOC_ANNO, last_anno);
|
||||
to.put(RDOC_PROVV, 'D');
|
||||
@ -1265,29 +1446,30 @@ bool link_row_handler(TMask_field& f, KEY key )
|
||||
sheet.add_string (FR_DESCR, 0, "", 38, 0, 50, "D", 30);
|
||||
sheet.set(FR_CODART, codart);
|
||||
sheet.set(FR_DESCR, cache().get(LF_ANAMAG, codart, "DESCR"));
|
||||
|
||||
|
||||
if (sheet.run() == K_ENTER)
|
||||
{
|
||||
r.set_original_rdoc_key(cur.curr());
|
||||
const TRectype * orig_doc = r.find_original_doc(); // warning
|
||||
if (orig_doc != NULL)
|
||||
{
|
||||
r.autosave(sh);
|
||||
TDocumento doc(*orig_doc);
|
||||
TRiga_documento & row = doc[cur.curr().get_int(RDOC_NRIGA)];
|
||||
const TString16 livello = row.get(RDOC_LIVELLO);
|
||||
TDocumento father_doc(*orig_doc);
|
||||
TLink_riga_documento & father_row = (TLink_riga_documento &) cur.curr();
|
||||
const TString16 livello = father_row.get(RDOC_LIVELLO);
|
||||
|
||||
father_row.set_doc(&doc);
|
||||
r.put(RDOC_LIVELLO, livello);
|
||||
r.put(RDOC_QTA, row.qtaresidua());
|
||||
TToken_string flds = tipo.fields_to_update();
|
||||
|
||||
for (const char * fld = flds.get(0); fld && * fld; fld = flds.get())
|
||||
FOR_EACH_TOKEN(flds, fld)
|
||||
{
|
||||
const TString16 f(fld);
|
||||
const TString val = row.get(fld);
|
||||
r.put(f, val);
|
||||
const TString & val = father_row.get(fld);
|
||||
|
||||
r.put(fld, val);
|
||||
}
|
||||
r.autoload(sh);
|
||||
sh.force_update(sh.selected());
|
||||
sh.force_update(sel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1619,70 +1801,6 @@ bool liv_handler( TMask_field& f, KEY key )
|
||||
mask.livelli().autoinsert(levnum, f);
|
||||
}
|
||||
|
||||
if (key == K_ENTER && !f.get().empty())
|
||||
{
|
||||
static int checkgiac = 3;
|
||||
if (checkgiac > 2)
|
||||
{
|
||||
TConfig c(CONFIG_DITTA);
|
||||
checkgiac = c.get_bool("LIVPERART", "ve");
|
||||
}
|
||||
if (mask.is_running() && checkgiac)
|
||||
{
|
||||
TMask& row_mask = f.mask();
|
||||
const TString80 codart(row_mask.get(FR_CODART));
|
||||
const TRectype & rec = cache().get(LF_ANAMAG, codart);
|
||||
const bool check_art = rec.get_bool(ANAMAG_LIVPERART);
|
||||
|
||||
if (check_art)
|
||||
{
|
||||
TLocalisamfile fl(LF_MAG);
|
||||
fl.setkey(2);
|
||||
TRectype & r = fl.curr();
|
||||
const int annoes = esercizi().date2esc(mask.get_date(F_DATADOC));
|
||||
|
||||
r.put(MAG_ANNOES, annoes);
|
||||
TString16 codmag(row_mask.get(FR_CODMAG));
|
||||
|
||||
codmag.left_just(3);
|
||||
codmag << row_mask.get(FR_CODDEP);
|
||||
r.put(MAG_CODMAG, codmag);
|
||||
|
||||
r.put(MAG_CODART, codart);
|
||||
TString liv;
|
||||
|
||||
for (int l = 0 ; l <= f.dlg() - FR_LIV1; l++)
|
||||
mask.doc().livelli().pack_grpcode(liv,row_mask.get(FR_LIV1+l),l+1);
|
||||
|
||||
r.put(MAG_LIVELLO, liv);
|
||||
|
||||
|
||||
TRectype new_rec(r);
|
||||
if (fl.read() != NOERR)
|
||||
{
|
||||
ok = yesno_box("Il codice di giacenza %s non e' legato all' articolo. Devo legarlo", (const char *)f.get());
|
||||
if (ok)
|
||||
{
|
||||
fl.setkey(1);
|
||||
r = new_rec;
|
||||
r.put("NRIGA", 999);
|
||||
int nriga = 1;
|
||||
if (fl.read(_isgteq) == NOERR)
|
||||
fl.prev();
|
||||
if (codart == fl.get("CODART"))
|
||||
nriga = fl.get_int("NRIGA")+1;
|
||||
new_rec.put("NRIGA", nriga);
|
||||
const int err = new_rec.write(fl);
|
||||
if (err != NOERR)
|
||||
ok = error_box("Non sono riuscito a legare il codice di giacenza. Errore %d", err);
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (f.to_check(key, true))
|
||||
{
|
||||
if (f.dlg() < FR_LIV4)
|
||||
@ -1916,15 +2034,17 @@ bool qtaart_handler( TMask_field& f, KEY key )
|
||||
if (doc.tipo().check_giac())
|
||||
{
|
||||
real giac(mask.get(F_CURGIAC));
|
||||
if (giac < -(c.sgn(s_giac) * qta))
|
||||
warning_box("Attenzione giacenza negativa");
|
||||
|
||||
if (giac < -(c.sgn(s_giac) * qta) && !yesno_box("Attenzione giacenza negativa, Devo continuare ?"))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
if (doc.tipo().check_disp())
|
||||
{
|
||||
real disp(mask.get(F_CURDISP));
|
||||
if (disp < -(c.sgn(s_giac) * qta))
|
||||
warning_box("Attenzione disponibilita' negativa");
|
||||
|
||||
if (disp < -(c.sgn(s_giac) * qta) && !yesno_box("Attenzione disponibilita' negativa, Devo continuare ?"))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2343,3 +2463,100 @@ bool codcms_handler(TMask_field& f, KEY key)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool evasion_check_handler(TMask_field& f, KEY key )
|
||||
{
|
||||
if (key == K_ENTER && f.dirty())
|
||||
{
|
||||
const real qta(f.get());
|
||||
if (qta <= ZERO)
|
||||
return true;
|
||||
const TFieldref * fld = f.field();
|
||||
if (fld == NULL)
|
||||
return true;
|
||||
TSheet_field & sf = *f.mask().get_sheet();
|
||||
TDocumento_mask & m = (TDocumento_mask & )sf.mask();
|
||||
const TDocumento & d = m.doc();
|
||||
const int nrow = sf.selected() + 1;
|
||||
const TRiga_documento & r = d[nrow];
|
||||
const TString16 name = fld->name();
|
||||
const TRectype * orig_doc = r.find_original_doc(); // warning
|
||||
|
||||
if (orig_doc != NULL)
|
||||
{
|
||||
const long ndoc = d.get_long(DOC_NDOC);
|
||||
TToken_string key;
|
||||
|
||||
key.add(orig_doc->get(DOC_PROVV));
|
||||
key.add(orig_doc->get(DOC_ANNO));
|
||||
key.add(orig_doc->get(DOC_CODNUM));
|
||||
key.add(orig_doc->get(DOC_NDOC));
|
||||
|
||||
TDocumento & father_doc = cached_doc(key);
|
||||
const TRectype * row = r.find_original_rdoc();
|
||||
|
||||
if (row != NULL)
|
||||
{
|
||||
const TRiga_documento & father_row = father_doc[row->get_int(RDOC_NRIGA)];
|
||||
const real ordinato(father_row.get(name));
|
||||
|
||||
TString query("USE RDOC KEY 4 SELECT NDOC!=");
|
||||
const int anno = r.get_int(RDOC_DAANNO);
|
||||
const TString4 & codnum = r.get(RDOC_DACODNUM);
|
||||
const long numdoc = r.get_long(RDOC_DANDOC);
|
||||
TString select;
|
||||
|
||||
select << " DAPROVV='" << r.get(RDOC_DAPROVV) << "'";
|
||||
select << " DAANNO='" << r.get(RDOC_DAANNO) << "'";
|
||||
select << " DACODNUM='" << r.get(RDOC_DACODNUM) << "'";
|
||||
select << " DANDOC='" << r.get(RDOC_DANDOC) << "'";
|
||||
select << " DAIDRIGA='" << r.get(RDOC_DAIDRIGA) << "'";
|
||||
|
||||
query << ndoc ;
|
||||
query << "\nFROM " << select;
|
||||
query << "\nTO " << select;
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
real evaso;
|
||||
|
||||
for (bool ok = recset.move_first(); ok ; ok = recset.move_next())
|
||||
evaso += recset.get(name).as_real();
|
||||
|
||||
const int doc_rows = d.physical_rows();
|
||||
|
||||
for (int i = 1; i <= doc_rows; i++)
|
||||
{
|
||||
if (i != nrow)
|
||||
{
|
||||
const TRiga_documento & row = d[i];
|
||||
|
||||
if (r.get(RDOC_CODART) == row.get(RDOC_CODART))
|
||||
evaso += row.get_real(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const real residuo = ordinato - evaso;
|
||||
if (residuo < qta)
|
||||
if (!yesno_box(FR("La quantita' %s e' superiore al residuo %s,\nvuoi continuare ugualmente"), qta.stringa(), residuo.stringa()))
|
||||
{
|
||||
if (!f.mask().is_running())
|
||||
{
|
||||
m.set_focus_field(F_SHEET);
|
||||
sf.post_select(nrow - 1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else
|
||||
if (!f.mask().is_running())
|
||||
m.set_focus_field(F_SHEET);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (f.dlg() == FR_QTA)
|
||||
return qtaart_handler(f, key);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -32,6 +32,8 @@ bool pricerange_handler(TMask_field& f, KEY key );
|
||||
bool link_handler( TMask_field& f, KEY key );
|
||||
bool cdc_mag_handler(TMask_field& f, KEY key);
|
||||
bool cms_mag_handler(TMask_field& f, KEY key);
|
||||
bool evasion_check_handler( TMask_field& f, KEY key );
|
||||
|
||||
|
||||
bool codcms_handler(TMask_field &f, KEY key);
|
||||
bool numdocrif_hndl(TMask_field& field, KEY key);
|
||||
|
@ -136,5 +136,6 @@
|
||||
#define FR_DESCDC12 292
|
||||
#define FR_FLCONS 293
|
||||
#define FR_FLRIT 294
|
||||
#define FR_HDESC 295
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
63
ve/verig.uml
63
ve/verig.uml
@ -174,6 +174,7 @@ ENDIF
|
||||
DISPLAY "Codice@20" CODART
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT FR_CODART CODART
|
||||
OUTPUT FR_DESCRART DESCR
|
||||
IFDEF(OU_CODART)
|
||||
OUTPUT OUM_CODART OU_CODART
|
||||
ENDIF
|
||||
@ -208,6 +209,7 @@ ENDIF
|
||||
DISPLAY "Descrizione@50" LF_ANAMAG->DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
OUTPUT FR_CODART CODART
|
||||
OUTPUT FR_DESCRART DESCR
|
||||
IFDEF(OU_CODART)
|
||||
OUTPUT OUM_CODART OU_CODART
|
||||
ENDIF
|
||||
@ -226,6 +228,16 @@ ENDIF
|
||||
END
|
||||
ENDIF
|
||||
|
||||
STRING FR_HDESC 50
|
||||
BEGIN
|
||||
PROMPT 100 100 "Descrizione "
|
||||
USE LF_ANAMAG KEY 2
|
||||
INPUT DESCR FR_HDESC
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Codice@20" CODART
|
||||
COPY OUTPUT FR_CODART
|
||||
END
|
||||
|
||||
STRING FR_CODARTMAG 20
|
||||
BEGIN
|
||||
PROMPT 50 50 ""
|
||||
@ -1613,7 +1625,15 @@ ENDIF
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_QTAGG1)
|
||||
IFDEF(TY_QTAGG1)
|
||||
IF(TY_QTAGG1==CURRENCY)
|
||||
TY_QTAGG1 FR_QTAGG1 13
|
||||
ELSEIF
|
||||
TY_QTAGG1 FR_QTAGG1 13 5
|
||||
ENDIF
|
||||
ELSEIF
|
||||
NUMBER FR_QTAGG1 13 5
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_QTAGG1)
|
||||
PROMPT X_QTAGG1 Y_QTAGG1 PR_QTAGG1
|
||||
@ -1634,7 +1654,15 @@ END
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_QTAGG2)
|
||||
IFDEF(TY_QTAGG2)
|
||||
IF(TY_QTAGG2==CURRENCY)
|
||||
TY_QTAGG2 FR_QTAGG2 13
|
||||
ELSEIF
|
||||
TY_QTAGG2 FR_QTAGG2 13 5
|
||||
ENDIF
|
||||
ELSEIF
|
||||
NUMBER FR_QTAGG2 13 5
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_QTAGG2)
|
||||
PROMPT X_QTAGG2 Y_QTAGG2 PR_QTAGG2
|
||||
@ -1655,7 +1683,15 @@ END
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_QTAGG3)
|
||||
IFDEF(TY_QTAGG3)
|
||||
IF(TY_QTAGG3==CURRENCY)
|
||||
TY_QTAGG3 FR_QTAGG3 13
|
||||
ELSEIF
|
||||
TY_QTAGG3 FR_QTAGG3 13 5
|
||||
ENDIF
|
||||
ELSEIF
|
||||
NUMBER FR_QTAGG3 13 5
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_QTAGG3)
|
||||
PROMPT X_QTAGG3 Y_QTAGG3 PR_QTAGG3
|
||||
@ -1676,7 +1712,15 @@ END
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_QTAGG4)
|
||||
IFDEF(TY_QTAGG4)
|
||||
IF(TY_QTAGG4==CURRENCY)
|
||||
TY_QTAGG4 FR_QTAGG4 13
|
||||
ELSEIF
|
||||
TY_QTAGG4 FR_QTAGG4 13 5
|
||||
ENDIF
|
||||
ELSEIF
|
||||
NUMBER FR_QTAGG4 13 5
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_QTAGG4)
|
||||
PROMPT X_QTAGG4 Y_QTAGG4 PR_QTAGG4
|
||||
@ -1697,7 +1741,15 @@ END
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_QTAGG5)
|
||||
IFDEF(TY_QTAGG5)
|
||||
IF(TY_QTAGG1==CURRENCY)
|
||||
TY_QTAGG5 FR_QTAGG5 13
|
||||
ELSEIF
|
||||
TY_QTAGG5 FR_QTAGG5 13 5
|
||||
ENDIF
|
||||
ELSEIF
|
||||
NUMBER FR_QTAGG5 13 5
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_QTAGG5)
|
||||
PROMPT X_QTAGG5 Y_QTAGG5 PR_QTAGG5
|
||||
@ -1964,12 +2016,16 @@ ENDIF // Campi analitici
|
||||
|
||||
|
||||
IFDEF(FLD_CODAGG1)
|
||||
IFDEF(TY_CODAGG1)
|
||||
TY_QTAGG1 FR_QTAGG1 20
|
||||
ELSEIF
|
||||
STRING FR_CODAGG1 20
|
||||
ENDIF
|
||||
BEGIN
|
||||
IFDEF(X_CODAGG1)
|
||||
PROMPT X_CODAGG1 Y_CODAGG1 PR_CODAGG1
|
||||
ELSEIF
|
||||
PROMPT 2 15 "Strimga 1 "
|
||||
PROMPT 2 15 "Stringa 1 "
|
||||
ENDIF
|
||||
IFDEF(FL_CODAGG1)
|
||||
FLAGS FL_CODAGG1
|
||||
@ -1985,12 +2041,15 @@ END
|
||||
ENDIF
|
||||
|
||||
IFDEF(FLD_CODAGG2)
|
||||
IFDEF(TY_CODAGG2)
|
||||
TY_CODAGG2 FR_CODAGG2 20
|
||||
ELSEIF
|
||||
STRING FR_CODAGG2 13 5
|
||||
BEGIN
|
||||
IFDEF(X_CODAGG2)
|
||||
PROMPT X_CODAGG2 Y_CODAGG2 PR_CODAGG2
|
||||
ELSEIF
|
||||
PROMPT 2 17 "Strimga 1 "
|
||||
PROMPT 42 15 "Stringa 2 "
|
||||
ENDIF
|
||||
IFDEF(FL_CODAGG2)
|
||||
FLAGS FL_CODAGG2
|
||||
|
@ -44,5 +44,6 @@ DEFINE_FIELD(JOLLY)
|
||||
DEFINE_FIELD(CDC)
|
||||
DEFINE_FIELD(CODAGG1)
|
||||
DEFINE_FIELD(CODAGG2)
|
||||
DEFINE_FIELD(RIDPREZZO)
|
||||
|
||||
#include "verig.uml"
|
||||
|
@ -10,6 +10,8 @@
|
||||
!!define Y_##name col ;\
|
||||
!!define PR_##name prompt ;
|
||||
|
||||
#define F_TYPE(name, type) !!define TY_##name type ;
|
||||
|
||||
#define F_FLG(name, flags) !!define FL_##name flags ;
|
||||
|
||||
#define F_CHK(name, type) !!define CH_##name type ;
|
||||
|
Loading…
x
Reference in New Issue
Block a user