Patch level : XX.126
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione aga 1.7 patch 126 sul main trunk git-svn-id: svn://10.65.10.50/trunk@9819 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f7af9ddfa9
commit
63ac8f5406
@ -107,23 +107,17 @@ BEGIN
|
||||
HELP "Provincia dell'intestatario"
|
||||
END
|
||||
|
||||
LIST F_STATO 20
|
||||
STRING F_STATO 2
|
||||
BEGIN
|
||||
PROMPT 2 6 "Stato "
|
||||
HELP "Codice dello stato cui si riferisce la partita IVA"
|
||||
ITEM " |Italia o extra CEE"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_PAIV 12
|
||||
|
||||
@ -124,24 +124,18 @@ BEGIN
|
||||
PROMPT 12 5 "Partita IVA "
|
||||
END
|
||||
|
||||
LIST FLD_AF1_STATOPAIV 20
|
||||
STRING FLD_AF1_STATOPAIV 2
|
||||
BEGIN
|
||||
PROMPT 13 6 "Stato "
|
||||
FIELD LF_ANAG->STATOPAIV
|
||||
HELP "Codice dello stato cui si riferisce la partita IVA"
|
||||
ITEM " |Italia o extra CEE"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
PROMPT 13 6 "Stato "
|
||||
FIELD LF_ANAG->STATOPAIV
|
||||
HELP "Codice dello stato cui si riferisce la partita IVA"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB FLD_AF1_STATOPAIV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FLD_AF1_STATOPAIV CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_AF1_PAIV 12
|
||||
@ -269,7 +263,7 @@ END
|
||||
STRING FLD_ANAG_UTAGG 10
|
||||
BEGIN
|
||||
PROMPT 56 16 "Utente "
|
||||
FLAGS "D"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
@ -97,24 +97,18 @@ BEGIN
|
||||
PROMPT 0 4 "Partita IVA "
|
||||
END
|
||||
|
||||
LIST FLD_AG1_STATOPAIV 20
|
||||
STRING FLD_AG1_STATOPAIV 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Stato "
|
||||
FIELD LF_ANAG->STATOPAIV
|
||||
HELP "Codice dello stato cui si riferisce la partita IVA"
|
||||
ITEM " |Italia o extra CEE"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB FLD_AG1_STATOPAIV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT FLD_AG1_STATOPAIV CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING FLD_AG1_PAIV 12
|
||||
|
||||
@ -135,5 +135,6 @@
|
||||
#define LST_IN_TIPOSOGDEL 199
|
||||
#define FLD_IN_CODSOGDEL 200
|
||||
#define FLD_IN_DESSOGDEL 201
|
||||
#define CHK_IN_NONOBBSTAT 202
|
||||
|
||||
#endif // __BA4300_H
|
||||
|
||||
@ -791,7 +791,7 @@ BEGIN
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 6
|
||||
GROUPBOX DLG_NULL 76 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "Soggetto Obbligato INTRA"
|
||||
FLAGS "R"
|
||||
@ -827,15 +827,21 @@ BEGIN
|
||||
FIELD FREQACQ
|
||||
END
|
||||
|
||||
BOOLEAN CHK_IN_NONOBBSTAT
|
||||
BEGIN
|
||||
PROMPT 2 9 "Soggetto non obbligato alla dei valori statistico, consegna e trasporto"
|
||||
FIELD NONOBBSTAT
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "Soggetto Delegato INTRA"
|
||||
PROMPT 1 11 "Soggetto Delegato INTRA"
|
||||
FLAGS "R"
|
||||
END
|
||||
|
||||
LIST LST_IN_TIPOSOGDEL 1 10
|
||||
BEGIN
|
||||
PROMPT 1 11 "Tipo persona "
|
||||
PROMPT 1 12 "Tipo persona "
|
||||
ITEM "F|Fisica"
|
||||
ITEM "G|Giuridica"
|
||||
FIELD TIPOSOGDEL
|
||||
@ -843,7 +849,7 @@ END
|
||||
|
||||
NUMBER FLD_IN_CODSOGDEL 6
|
||||
BEGIN
|
||||
PROMPT 35 11 "Codice "
|
||||
PROMPT 35 12 "Codice "
|
||||
USE LF_ANAG
|
||||
INPUT TIPOA LST_IN_TIPOSOGDEL SELECT
|
||||
INPUT CODANAGR FLD_IN_CODSOGDEL
|
||||
@ -854,11 +860,12 @@ BEGIN
|
||||
OUTPUT FLD_IN_DESSOGDEL RAGSOC
|
||||
FIELD CODSOGDEL
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -1
|
||||
END
|
||||
|
||||
STRING FLD_IN_DESSOGDEL 50
|
||||
BEGIN
|
||||
PROMPT 1 12 "Denominazione "
|
||||
PROMPT 1 13 "Denominazione "
|
||||
USE LF_ANAG KEY 2
|
||||
INPUT TIPOA LST_IN_TIPOSOGDEL SELECT
|
||||
INPUT RAGSOC FLD_IN_DESSOGDEL
|
||||
@ -867,6 +874,7 @@ BEGIN
|
||||
DISPLAY "Codice" CODANAGR
|
||||
COPY OUTPUT FLD_IN_CODSOGDEL
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN ba4 -1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
@ -440,6 +440,11 @@ bool TInstallmodule_app::preload_mask()
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TInstallmodule_app::some_to_load()
|
||||
{
|
||||
return _m->get_bool(F_DEFAULTSDATA);
|
||||
}
|
||||
|
||||
void TInstallmodule_app::main_loop()
|
||||
{
|
||||
bool ok =TRUE;
|
||||
@ -449,7 +454,7 @@ void TInstallmodule_app::main_loop()
|
||||
preload_mask();
|
||||
if (_m->run()!=K_QUIT)
|
||||
{
|
||||
if (_m->get_bool(F_DEFAULTSDATA))
|
||||
if (some_to_load())
|
||||
{
|
||||
install_firm();
|
||||
install_com();
|
||||
@ -554,6 +559,8 @@ int main(int argc,char** argv)
|
||||
r=bainst07(argc,argv); // pre/post installazione contabilità generale:
|
||||
else if (mod == "at")
|
||||
r=bainst17(argc, argv);// pre/post installazione avis
|
||||
else if (mod == "in")
|
||||
r=bainst18(argc, argv);// pre/post installazione intra
|
||||
else if (mod == "ve")
|
||||
r=bainst31(argc, argv);// pre/post installazione vendite:
|
||||
else if (mod == "mg")
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
int bainst00(int argc, char** argv);
|
||||
int bainst07(int argc, char** argv);
|
||||
int bainst17(int argc, char** argv);
|
||||
int bainst18(int argc, char** argv);
|
||||
int bainst31(int argc, char** argv);
|
||||
int bainst32(int argc, char** argv);
|
||||
int bainst35(int argc, char** argv);
|
||||
@ -59,6 +60,8 @@ protected:
|
||||
virtual int module_number() const pure;
|
||||
virtual bool preload_mask();
|
||||
virtual bool post_installer() {return TRUE;}
|
||||
virtual bool some_to_load();
|
||||
|
||||
virtual bool install_com() ; // setta i dati comuni
|
||||
virtual bool install_firm() ; // setta i dati ditta
|
||||
|
||||
|
||||
@ -16,10 +16,11 @@ protected:
|
||||
virtual bool modal() const {return TRUE;}
|
||||
virtual int module_number() const {return 0;}
|
||||
virtual bool install_firm() {return TRUE;} // no firm installation
|
||||
// virtual bool install_com() {return TRUE;} // no com installation
|
||||
virtual bool install_com();
|
||||
virtual bool load_default_data() const ;
|
||||
virtual bool post_installer();
|
||||
virtual bool preload_mask();
|
||||
virtual bool some_to_load();
|
||||
|
||||
public:
|
||||
virtual ~TInstall_BA () {}
|
||||
@ -82,12 +83,41 @@ bool TInstall_BA::post_installer()
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TInstall_BA::some_to_load()
|
||||
{
|
||||
return _m->get_bool(F_TAB_CEE) || TInstallmodule_app::some_to_load();
|
||||
}
|
||||
|
||||
bool TInstall_BA::preload_mask()
|
||||
{
|
||||
if (!test_database())
|
||||
{
|
||||
_m->set(F_TAB_CEE," ");
|
||||
_m->disable(F_TAB_CEE);
|
||||
}
|
||||
else
|
||||
{
|
||||
TTable sce("%SCE");
|
||||
const bool empty = sce.first() != NOERR;
|
||||
|
||||
if (empty)
|
||||
_m->set(F_TAB_CEE,"X");
|
||||
}
|
||||
return TInstallmodule_app::preload_mask();
|
||||
}
|
||||
|
||||
bool TInstall_BA ::install_com()
|
||||
{
|
||||
bool ok=TRUE;
|
||||
TStd_filename txtfile;
|
||||
if (txtfile.check(TRUE,"lfiva.txt"))
|
||||
if (_m->get_bool(F_DEFAULTSDATA) && txtfile.check(TRUE,"lfiva.txt"))
|
||||
{
|
||||
TSystemisamfile tabcom(LF_TABCOM);
|
||||
tabcom.load((const char *)txtfile);
|
||||
}
|
||||
|
||||
if (_m->get_bool(F_TAB_CEE) && txtfile.check(TRUE,"batbsce.txt"))
|
||||
{
|
||||
TSystemisamfile tabcom(LF_TABCOM);
|
||||
tabcom.load((const char *)txtfile);
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
#include "bainsta.h"
|
||||
|
||||
#define F_TAB_CEE 102
|
||||
|
||||
@ -10,6 +10,12 @@ BEGIN
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOL F_TAB_CEE
|
||||
BEGIN
|
||||
PROMPT 2 4 "Installa Tabella Stati CEE"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 "~Conferma"
|
||||
|
||||
37
ba/bainst18.cpp
Executable file
37
ba/bainst18.cpp
Executable file
@ -0,0 +1,37 @@
|
||||
#include <applicat.h>
|
||||
#include <mask.h>
|
||||
#include <config.h>
|
||||
#include <utility.h>
|
||||
#include <isam.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "bainst.h"
|
||||
#include "bainst18.h"
|
||||
|
||||
class TInstall_IN : public TInstallmodule_app
|
||||
{
|
||||
TMask * _m;
|
||||
protected:
|
||||
virtual bool load_default_data() const ;
|
||||
virtual int module_number() const {return 18;}
|
||||
virtual bool post_installer() { return TRUE; }
|
||||
|
||||
public:
|
||||
virtual ~TInstall_IN () {}
|
||||
};
|
||||
|
||||
|
||||
bool TInstall_IN::load_default_data() const
|
||||
{
|
||||
TTable icc("%ICC");
|
||||
const bool empty = icc.first() != NOERR;
|
||||
|
||||
return empty;
|
||||
}
|
||||
|
||||
int bainst18(int argc, char** argv)
|
||||
{
|
||||
TInstall_IN app;
|
||||
app.run(argc, argv);
|
||||
return 0;
|
||||
}
|
||||
1
ba/bainst18.h
Executable file
1
ba/bainst18.h
Executable file
@ -0,0 +1 @@
|
||||
#include "bainsta.h"
|
||||
21
ba/bainst18.uml
Executable file
21
ba/bainst18.uml
Executable file
@ -0,0 +1,21 @@
|
||||
#include "bainst18.h"
|
||||
|
||||
PAGE "Installazione MG" -1 -1 78 8
|
||||
// GROUP 1 = PRE-INSTALLATION
|
||||
// GROUP 2 = POST-INSTALLATION
|
||||
|
||||
BOOL F_DEFAULTSDATA
|
||||
BEGIN
|
||||
PROMPT 2 2 "Carica le tabelle INTRA"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 "~Conferma"
|
||||
MESSAGE EXIT,K_ENTER
|
||||
PICTURE BMP_OK
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
90
ba/bastnoc.uml
Executable file
90
ba/bastnoc.uml
Executable file
@ -0,0 +1,90 @@
|
||||
#include "ba3200.h"
|
||||
|
||||
PAGE "Stampa Nomenclatura combinata" -1 -1 50 8
|
||||
|
||||
STRING F_INIZIO1 4
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da codice "
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,4] F_INIZIO1
|
||||
INPUT CODTAB[5,6] F_INIZIO2
|
||||
INPUT CODTAB[6,8] F_INIZIO3
|
||||
DISPLAY "Codice 1" CODTAB[1,4]
|
||||
DISPLAY "Codice 2" CODTAB[5,6]
|
||||
DISPLAY "Codice 3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIO1 CODTAB[1,4]
|
||||
OUTPUT F_INIZIO2 CODTAB[5,6]
|
||||
OUTPUT F_INIZIO3 CODTAB[7,8]
|
||||
FIELD CODTAB[1,4]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_INIZIO2 2
|
||||
BEGIN
|
||||
PROMPT 22 1 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_INIZIO1
|
||||
FIELD CODTAB[5,6]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_INIZIO3 2
|
||||
BEGIN
|
||||
PROMPT 27 1 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_INIZIO1
|
||||
FIELD CODTAB[7,8]
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_FINE1 4
|
||||
BEGIN
|
||||
PROMPT 4 3 "A codice "
|
||||
FLAGS "UZ"
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB[1,4] F_FINE1
|
||||
INPUT CODTAB[5,6] F_FINE2
|
||||
INPUT CODTAB[6,8] F_FINE3
|
||||
DISPLAY "Codice 1" CODTAB[1,4]
|
||||
DISPLAY "Codice 2" CODTAB[5,6]
|
||||
DISPLAY "Codice 3" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FINE1 CODTAB[1,4]
|
||||
OUTPUT F_FINE2 CODTAB[5,6]
|
||||
OUTPUT F_FINE3 CODTAB[7,8]
|
||||
FIELD CODTAB[1,4]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_FINE2 2
|
||||
BEGIN
|
||||
PROMPT 22 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_FINE1
|
||||
FIELD CODTAB[5,6]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_FINE3 2
|
||||
BEGIN
|
||||
PROMPT 27 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_FINE1
|
||||
FIELD CODTAB[7,8]
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
42
ba/bastsce.uml
Executable file
42
ba/bastsce.uml
Executable file
@ -0,0 +1,42 @@
|
||||
#include "../ba/ba3200.h"
|
||||
|
||||
PAGE "Stampa Stati CEE" -1 -1 50 8
|
||||
|
||||
STRING F_INIZIO1 2
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da codice "
|
||||
USE %SCE
|
||||
INPUT CODTAB F_INIZIO1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIO1 CODTAB
|
||||
FIELD CODTAB
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_FINE1 2
|
||||
BEGIN
|
||||
PROMPT 4 3 "A codice "
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB F_FINE1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FINE1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 2
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
15
ba/batbnoc.rpt
Executable file
15
ba/batbnoc.rpt
Executable file
@ -0,0 +1,15 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Nomenclatura combinata
|
||||
1|@3g%s|Codice
|
||||
1|@17g%s|Denominazione
|
||||
1|@69g%s|Obbl.
|
||||
1|@75g%s|Um.S.
|
||||
|
||||
[Rows]
|
||||
1|CODTAB[1,4]|@3g@4,ls
|
||||
1|CODTAB[5,6]|@10g@2,ls
|
||||
1|CODTAB[7,8]|@14g@2,ls
|
||||
1|S0|@17g@50,ls
|
||||
1|S4|@69g@1,ls
|
||||
1|S5|@75g@2,ls
|
||||
@ -13,18 +13,43 @@ BEGIN
|
||||
PROMPT 1 1 "@bCodice Nomenclatura"
|
||||
END
|
||||
|
||||
STRING NOC_CODICE1 8
|
||||
STRING NOC_CODICE1 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB[1,8] NOC_CODICE1
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
INPUT CODTAB[1,4] NOC_CODICE1
|
||||
INPUT CODTAB[5,6] NOC_CODICE2
|
||||
INPUT CODTAB[6,8] NOC_CODICE3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT NOC_CODICE1 CODTAB[1,8]
|
||||
OUTPUT NOC_DESCR S0
|
||||
OUTPUT NOC_CODICE1 CODTAB[1,4]
|
||||
OUTPUT NOC_CODICE2 CODTAB[5,6]
|
||||
OUTPUT NOC_CODICE3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB[1,8]
|
||||
FIELD CODTAB[1,4]
|
||||
KEY 1
|
||||
VALIDATE REQIF_FUNC 1 NOC_CODICE2
|
||||
END
|
||||
|
||||
STRING NOC_CODICE2 2
|
||||
BEGIN
|
||||
PROMPT 21 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL NOC_CODICE1
|
||||
FIELD CODTAB[5,6]
|
||||
KEY 1
|
||||
VALIDATE REQIF_FUNC 1 NOC_CODICE3
|
||||
END
|
||||
|
||||
STRING NOC_CODICE3 2
|
||||
BEGIN
|
||||
PROMPT 26 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL NOC_CODICE1
|
||||
FIELD CODTAB[7,8]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
@ -44,7 +69,8 @@ ENDPAGE
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 8 "@bUnita' di misura supplementare"
|
||||
FLAGS "R"
|
||||
FLAGS "R"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST NOC_UMS_OBB 1 50
|
||||
@ -55,6 +81,7 @@ BEGIN
|
||||
ITEM "C|Obbligatoria per cessioni"
|
||||
ITEM "E|Obbligatoria per acquisti e cessioni"
|
||||
FIELD S4
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING NOC_UMS_CODICE 2
|
||||
@ -69,6 +96,7 @@ BEGIN
|
||||
OUTPUT NOC_UMS_DESCR S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD S5
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING NOC_UMS_DESCR 50
|
||||
@ -80,6 +108,7 @@ BEGIN
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT NOC_UMS_CODICE
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
ENDMASK
|
||||
|
||||
2
ba/batbsce.h
Executable file
2
ba/batbsce.h
Executable file
@ -0,0 +1,2 @@
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
9
ba/batbsce.rpt
Executable file
9
ba/batbsce.rpt
Executable file
@ -0,0 +1,9 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella STati CEE
|
||||
1|@3g%s|Codice
|
||||
1|@10g%s|Denominazione
|
||||
|
||||
[Rows]
|
||||
1|CODTAB|@3g@4,ls
|
||||
1|S0|@10g@50,ls
|
||||
27
ba/batbsce.txt
Executable file
27
ba/batbsce.txt
Executable file
@ -0,0 +1,27 @@
|
||||
[Header]
|
||||
Version=199518
|
||||
Fields=COD,3|CODTAB,25|S0,70|S1,70|S2,70|S3,70|S4,20|S5,20|S6,5|S7,5
|
||||
Fields=S8,5|S9,5|S10,5|S11,5|I0,7|I1,7|I2,7|I3,7|I4,7|I5,7
|
||||
Fields=I6,7|I7,7|I8,7|I9,7|I10,7|I11,7|I12,7|I13,7|I14,7|R0,18
|
||||
Fields=R1,18|R2,18|R3,18|R4,18|R5,18|R6,18|R7,18|R8,18|R9,18|R10,18
|
||||
Fields=R11,18|R12,18|R13,18|R14,18|R15,18|R16,18|R17,18|R18,18|R19,18|D0,10
|
||||
Fields=D1,10|D2,10|D3,10|D4,10|B0,1|B1,1|B2,1|B3,1|B4,1|B5,1
|
||||
Fields=B6,1|B7,1|B8,1|B9,1|FPC,1
|
||||
|
||||
[Data]
|
||||
SCE||Italia o Extra CEE|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|AT|Austria|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|BE|Belgio|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|DE|Germania|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|DK|Danimarca|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|EL|Grecia|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|ES|Spagna|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|FI|Finlandia|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|FR|Francia|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|GB|Gran Bretagna|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|IE|Irlanda|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|IT|Italia|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|LU|Lussemburgo|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|NL|Olanda|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|PT|Portogallo|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
SCE|SE|Svezia|||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | | | | | | |
|
||||
45
ba/batbsce.uml
Executable file
45
ba/batbsce.uml
Executable file
@ -0,0 +1,45 @@
|
||||
#include "batbsce.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 19 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stati CEE" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bStati CEE"
|
||||
END
|
||||
|
||||
STRING F_CODICE 2
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE %SCE KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
COPY OUTPUT F_CODICE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S0
|
||||
KEY 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -1,5 +1,5 @@
|
||||
9
|
||||
52
|
||||
53
|
||||
CODDITTA|3|5|0|
|
||||
TIPOA|1|1|0|
|
||||
CODANAGR|3|5|0|
|
||||
@ -52,6 +52,7 @@ FREQCES|1|1|0|Frequenza riepiloghi cessioni INTRA
|
||||
FREQACQ|1|1|0|Frequenza riepiloghi acquisti INTRA
|
||||
TIPOSOGDEL|1|1|0|Tipo anagrafico del soggetto delegato
|
||||
CODSOGDEL|3|6|0|Codice del soggetto delegato
|
||||
NONOBBSTAT|8|1|0|Non obbligato alla compilazione del valore statistico se mensile
|
||||
4
|
||||
CODDITTA|
|
||||
UPPER(RAGSOC)|X
|
||||
|
||||
581
ce/ce0500.cpp
581
ce/ce0500.cpp
@ -26,6 +26,7 @@ protected:
|
||||
|
||||
int calcola_stato_attivita();
|
||||
bool cespite_ok() const;
|
||||
void set_cespi_filter();
|
||||
|
||||
public:
|
||||
int stato_attivita() const { return _staat; }
|
||||
@ -59,8 +60,9 @@ void TQuery_mask::on_search_event(TOperable_field& o)
|
||||
TRelation rel(LF_CESPI);
|
||||
|
||||
TString filter;
|
||||
if (!field(F_IMPIANTO).empty())
|
||||
filter << CESPI_CODIMP << "==" << get(F_IMPIANTO);
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
if (imp.active() && !imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
|
||||
TSorted_cursor cur(&rel, order, filter);
|
||||
TCursor_sheet sht(&cur, fields, "Cespiti", header, 0, 1);
|
||||
@ -107,6 +109,24 @@ bool TQuery_mask::cespite_ok() const
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TQuery_mask::set_cespi_filter()
|
||||
{
|
||||
TString filter;
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << '(' << CESPI_CODCGRA << "=\"" << get(F_GRUPPO) << "\")";
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
efield(F_IDCESPITE).browse()->set_filter(filter);
|
||||
efield(F_DESC).browse()->set_filter(filter);
|
||||
}
|
||||
|
||||
bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
@ -117,10 +137,16 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const bool can_create = calcola_stato_attivita() != 3; // Bollato non stampato
|
||||
enable(DLG_NEWREC, can_create && !field(F_CATEGORIA).empty());
|
||||
enable(DLG_NEWREC, can_create && !field(F_SPECIE).empty() && !field(F_CATEGORIA).empty());
|
||||
enable(DLG_DELREC, can_create);
|
||||
set_cespi_filter();
|
||||
}
|
||||
break;
|
||||
case F_SELECT:
|
||||
case F_IMPIANTO:
|
||||
if (e == fe_modify)
|
||||
set_cespi_filter();
|
||||
break;
|
||||
case F_SEARCH1:
|
||||
case F_SEARCH2:
|
||||
case F_SEARCH3:
|
||||
@ -144,7 +170,7 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
const bool bollati = stato_attivita() == 3;
|
||||
enable(DLG_NEWREC, !bollati && !o.empty());
|
||||
enable(DLG_NEWREC, !bollati && !o.empty() && !field(F_SPECIE).empty());
|
||||
}
|
||||
if (e == fe_close && o.empty() && !cespite_ok())
|
||||
return error_box("È necessario specificare la categoria del nuovo cespite");
|
||||
@ -152,7 +178,6 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
}
|
||||
break;
|
||||
case F_IDCESPITE:
|
||||
case F_IDCESPITE_I:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (stato_attivita() == 3 && !cespite_ok())
|
||||
@ -186,6 +211,13 @@ class TEdit_mask : public TAutomask
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual bool on_key(KEY k);
|
||||
|
||||
bool one_compiled(const short* f) const;
|
||||
TCurrency sum_fields(const short* f) const;
|
||||
bool test_ammissibilita_dati();
|
||||
bool test_ammissibilita_saldi();
|
||||
bool test_ammissibilita_fondi();
|
||||
|
||||
public:
|
||||
void set_stato_attivita(int sa) { _staat = sa; }
|
||||
@ -194,9 +226,35 @@ public:
|
||||
void set_tipo_cespite(TTipo_cespite tc) { _tipo = tc; }
|
||||
TTipo_cespite tipo_cespite() const { return _tipo; }
|
||||
|
||||
void protect_page(int page, TToken_string& enabling);
|
||||
|
||||
TEdit_mask() : TAutomask("ce0500b") { }
|
||||
};
|
||||
|
||||
bool TEdit_mask::one_compiled(const short* f) const
|
||||
{
|
||||
for (int i = 0; f[i]; i++)
|
||||
{
|
||||
if (!field(f[i]).empty())
|
||||
break;
|
||||
}
|
||||
return i >= 0;
|
||||
}
|
||||
|
||||
TCurrency TEdit_mask::sum_fields(const short* f) const
|
||||
{
|
||||
TCurrency sum, val;
|
||||
for (int i = 0; f[i] != 0; i++)
|
||||
{
|
||||
get_currency(abs(f[i]), val);
|
||||
if (f[i] > 0)
|
||||
sum += val;
|
||||
else
|
||||
sum -= val;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
@ -217,7 +275,7 @@ bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
TDate iniz, fine;
|
||||
const int ese = dc.esercizio_corrente(iniz, fine);
|
||||
|
||||
if (insert_mode() && stato_attivita() == 2)
|
||||
if (stato_attivita() == 2)
|
||||
{
|
||||
if (dtcomp < iniz)
|
||||
return error_box("La data appartiene ad un esercizio già stampato su bollato");
|
||||
@ -230,43 +288,338 @@ bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
return error_box("La data è succesiva alla fine della validità della categoria");
|
||||
}
|
||||
if (dc.esercizio_costituzione() && dtcomp < iniz)
|
||||
return error_box("Non è possibile specificare una data antecedente all'eserczio di costituzione");
|
||||
return error_box("Non è possibile specificare una data antecedente all'esercizio di costituzione");
|
||||
|
||||
if (tipo_cespite() != tc_materiale && dtcomp.year() >= dc.anno_tuir())
|
||||
{
|
||||
if (field(F_DTFUNZ).empty())
|
||||
set(F_DTFUNZ, o.get());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_DTFUNZ:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
const TDate dtcomp = field(F_DTCOMP).get();
|
||||
const TDate dtfunz = o.get();
|
||||
if (dtfunz < dtcomp)
|
||||
return error_box("La data di entrata in funzione deve essere successiva a quella di aquisizione");
|
||||
if (dtfunz.ok() && !dtcomp.ok())
|
||||
return error_box("La data di entrata in funzione non puo' essere inserita senza specificare quella di aquisizione");
|
||||
if (_tipo != tc_materiale && dtfunz != dtcomp)
|
||||
{
|
||||
if (dtcomp.year() >= dc.anno_tuir())
|
||||
return error_box("In base alla normativa del TUIR, le date di acquisizione e di entrata in funzione devono coincidere");
|
||||
}
|
||||
if (dtfunz.ok())
|
||||
{
|
||||
const TDate dtcomp = field(F_DTCOMP).get();
|
||||
if (dtfunz < dtcomp)
|
||||
return error_box("La data di entrata in funzione deve essere successiva a quella di aquisizione");
|
||||
if (!dtcomp.ok())
|
||||
return error_box("La data di entrata in funzione non puo' essere inserita senza specificare quella di aquisizione");
|
||||
if (stato_attivita() == 2)
|
||||
{
|
||||
const TDate iniz = get(F_INIZIO_ES);
|
||||
if (dtfunz < iniz)
|
||||
return error_box("La data di entrata in funzione deve essere successiva a quella di inizio esercizio");
|
||||
}
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
if (_tipo != tc_materiale && dtfunz != dtcomp)
|
||||
{
|
||||
if (dtcomp.year() >= dc.anno_tuir())
|
||||
return error_box("In base alla normativa del TUIR, le date di acquisizione e di entrata in funzione devono coincidere");
|
||||
}
|
||||
const TRectype& cac = dc.categoria(0, NULL, get_int(F_CATEGORIA));
|
||||
const TDate iniz = cac.get("D0");
|
||||
if (iniz.ok() && dtfunz < iniz)
|
||||
return error_box("La data è precedente all'inizio della validità della categoria");
|
||||
const TDate fine = cac.get("D1");
|
||||
if (fine.ok() && dtcomp > fine)
|
||||
if (fine.ok() && dtfunz > fine)
|
||||
return error_box("La data è succesiva alla fine della validità della categoria");
|
||||
set(F_TUIR, dtfunz.year() >= dc.anno_tuir() ? "X" : "");
|
||||
if (dtfunz.year() >= dc.anno_tuir())
|
||||
{
|
||||
set(F_TUIR, "X");
|
||||
set(F_AMMPROP, "X");
|
||||
}
|
||||
else
|
||||
{
|
||||
reset(F_TUIR);
|
||||
reset(F_AMMPROP);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_QUADRATURA:
|
||||
if (e == fe_button)
|
||||
{
|
||||
set(F_NORMALE2, get(F_NORMALE));
|
||||
set(F_NORMALE3, get(F_NORMALE));
|
||||
set(F_ACCELERATO2, get(F_ACCELERATO));
|
||||
set(F_ACCELERATO3, get(F_ACCELERATO));
|
||||
set(F_ANTICIPATO2, get(F_ANTICIPATO));
|
||||
set(F_ANTICIPATO3, get(F_ANTICIPATO));
|
||||
}
|
||||
break;
|
||||
case F_VNONAMM:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (o.empty() && get_bool(F_LEASING))
|
||||
return error_box("Indicare il valore del riscatto per beni in leasing");
|
||||
test_ammissibilita_saldi();
|
||||
}
|
||||
break;
|
||||
case F_PLUSREIN:
|
||||
if ((e == fe_modify || e == fe_close) && !o.empty())
|
||||
{
|
||||
TCurrency costo; get_currency(F_COSTO, costo);
|
||||
TCurrency noamm; get_currency(F_VNONAMM, noamm);
|
||||
TCurrency plusr; get_currency(F_PLUSREIN, plusr);
|
||||
const TCurrency minim = costo - noamm;
|
||||
if (plusr > minim)
|
||||
return error_box("La plusvalenza reinvestita non puo' superare %s", minim.string(TRUE));
|
||||
}
|
||||
break;
|
||||
case F_ELEMENTI:
|
||||
if ((e == fe_modify || e == fe_close) && o.empty())
|
||||
{
|
||||
const TDate dtcomp = field(F_DTCOMP).get();
|
||||
const TDate dtiniz = field(F_INIZIO_ES).get();
|
||||
if (dtcomp.ok() && dtcomp < dtiniz)
|
||||
return error_box("E' necessario specificare il numero di elementi per cespiti acquisiti negli esercizi precedenti");
|
||||
const short fields[] = { F_COSTO, F_VNONAMM, F_RIV75, F_RIV83, F_RIV90, F_RIV91, F_RIVGF, F_RIVGC, 0 };
|
||||
if (one_compiled(fields))
|
||||
return error_box("E' necessario inserire il nunero degli elementi");
|
||||
}
|
||||
break;
|
||||
case F_RIV90:
|
||||
case F_RIV91:
|
||||
if ((e == fe_init || e == fe_modify) && o.active())
|
||||
{
|
||||
TEdit_field& anni = efield(o.dlg()+1);
|
||||
if (o.empty())
|
||||
{
|
||||
anni.reset();
|
||||
anni.disable();
|
||||
}
|
||||
else
|
||||
anni.enable();
|
||||
}
|
||||
break;
|
||||
case F_ANNIAMM:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
enable_page(2, !o.empty());
|
||||
break;
|
||||
case F_NORMALE:
|
||||
if (e == fe_close)
|
||||
{
|
||||
const short fv[] = { F_COSTO, -F_VNONAMM, F_RIV75, F_RIV83, F_RIV90, F_RIV91, F_RIVGF, 0 };
|
||||
const short fa[] = { F_NORMALE, F_ACCELERATO, F_ANTICIPATO, F_QPERSE, F_FPRIVATO, F_QPERSEPRIV, 0 };
|
||||
const TCurrency val_amm = sum_fields(fv);
|
||||
const TCurrency fon_amm = sum_fields(fa);
|
||||
if (fon_amm > val_amm)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Il fondo ammortamento fiscale (" << fon_amm.string(TRUE) << ')';
|
||||
msg << "non puo' superare il valore da ammortizzare (" << val_amm.string(TRUE) << ')';
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_FPRIVATO:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (get_int(F_USOPROM) > 1 && !field(F_ANNIAMM).empty())
|
||||
{
|
||||
if (field(F_FPRIVATO).empty() && field(F_QPERSEPRIV).empty())
|
||||
return error_box("E' necessario inserire un fondo di ammortamento privato o delle quote perse private");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_NORMALE2:
|
||||
if (e == fe_close)
|
||||
{
|
||||
const short fv[] = { F_COSTO, F_RIV75, F_RIV83, F_RIV90, F_RIV91, F_RIVGC, 0 };
|
||||
const short fa[] = { F_NORMALE2, F_ACCELERATO2, F_ANTICIPATO2, 0 };
|
||||
const TCurrency val_amm = sum_fields(fv);
|
||||
const TCurrency fon_amm = sum_fields(fa);
|
||||
if (fon_amm > val_amm)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Il fondo ammortamento civilistico (" << fon_amm.string(TRUE) << ')';
|
||||
msg << "non puo' superare il valore da ammortizzare (" << val_amm.string(TRUE) << ')';
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
// Disabilita tutti i campi della pagina "page" (1 based) tranne quelli nella lista "enabling"
|
||||
void TEdit_mask::protect_page(int page, TToken_string& enabling)
|
||||
{
|
||||
// Determina l'id del primo campo della pagina
|
||||
short cid = 0;
|
||||
switch (page)
|
||||
{
|
||||
case 2: cid = F_ELEMENTI; break;
|
||||
case 3: cid = F_NORMALE; break;
|
||||
default: cid = F_IDCESPITE; break;
|
||||
}
|
||||
// Determina l'handle della pagina selezionata
|
||||
WINDOW parent = field(cid).parent();
|
||||
|
||||
for (int f = fields()-1; f >= 0; f--)
|
||||
{
|
||||
TMask_field& c = fld(f);
|
||||
if (c.parent() == parent) // Il campo appartiene alla pagina voluta?
|
||||
{
|
||||
const short id = c.dlg();
|
||||
if (id > 100 && id < 1000 && c.is_operable() && c.enabled_default())
|
||||
{
|
||||
const bool on = enabling.empty() || enabling.get_pos(c.dlg()) >= 0;
|
||||
c.enable(on);
|
||||
if (cid == id) // Ho raggiunto il capo pagina?
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TEdit_mask::test_ammissibilita_dati()
|
||||
{
|
||||
const char* msg = insert_mode() ? "Inserimento" : "Modifica";
|
||||
xvt_statbar_set(msg, TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool TEdit_mask::test_ammissibilita_saldi()
|
||||
{
|
||||
bool protez = FALSE;
|
||||
const char* msg = "";
|
||||
switch (_staat)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
const TDate iniz = get(F_INIZIO_ES);
|
||||
const TDate dtacq = get(F_DTCOMP);
|
||||
const TDate dtfunz = get(F_DTFUNZ);
|
||||
if (!dtacq.ok() || !dtfunz.ok())
|
||||
protez = TRUE;
|
||||
else
|
||||
protez = dtacq >= iniz || dtfunz >= iniz;
|
||||
if (protez)
|
||||
msg = "Inserire gli importi nel movimento d'acquisto";
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
protez = TRUE;
|
||||
msg = "Bollato stampato: non sono ammesse modifiche";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
TToken_string enabling;
|
||||
if (protez)
|
||||
enabling = "883"; // Disabilita tutto!
|
||||
protect_page(2, enabling);
|
||||
|
||||
if (*msg)
|
||||
beep(1);
|
||||
else
|
||||
msg = insert_mode() ? "Inserimento" : "Modifica";
|
||||
xvt_statbar_set(msg, TRUE);
|
||||
|
||||
return protez;
|
||||
}
|
||||
|
||||
bool TEdit_mask::test_ammissibilita_fondi()
|
||||
{
|
||||
bool protez = FALSE;
|
||||
const char* msg = "";
|
||||
switch (_staat)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
{
|
||||
const TDate dtacq = get(F_DTCOMP);
|
||||
const TDate dtfunz = get(F_DTFUNZ);
|
||||
if (!dtacq.ok() || !dtfunz.ok())
|
||||
protez = TRUE;
|
||||
else
|
||||
{
|
||||
const TDate iniz = get(F_INIZIO_ES);
|
||||
protez = dtacq >= iniz;
|
||||
}
|
||||
if (protez)
|
||||
msg = "Inserire gli importi nel movimento d'acquisto";
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
protez = TRUE;
|
||||
msg = "Bollato stampato: non sono ammesse modifiche";
|
||||
break;
|
||||
default: protez = FALSE; break;
|
||||
}
|
||||
|
||||
TToken_string enabling;
|
||||
if (protez)
|
||||
enabling = "883"; // Disabilita tutto!
|
||||
protect_page(3, enabling);
|
||||
|
||||
if (!protez)
|
||||
{
|
||||
const TDate dtfunz = get(F_DTFUNZ);
|
||||
const TDate iniz = get(F_INIZIO_ES);
|
||||
bool prot9 = FALSE;
|
||||
if (!dtfunz.ok() || dtfunz >= iniz)
|
||||
{
|
||||
msg = "Cespite non ancora entrato in funzione a inizio esercizio";
|
||||
prot9 = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
const TRectype& cac = ditta_cespiti().categoria(0, NULL, get_int(F_CATEGORIA));
|
||||
if (cac.get_bool("B0"))
|
||||
{
|
||||
msg = "Categoria non ammortizzabile";
|
||||
prot9 = TRUE;
|
||||
}
|
||||
}
|
||||
enable(-9, !prot9);
|
||||
}
|
||||
if (*msg)
|
||||
beep(1);
|
||||
else
|
||||
msg = insert_mode() ? "Inserimento" : "Modifica";
|
||||
xvt_statbar_set(msg, TRUE);
|
||||
|
||||
return protez;
|
||||
}
|
||||
|
||||
bool TEdit_mask::on_key(KEY k)
|
||||
{
|
||||
// Try to predict next page!
|
||||
const int old_page = curr_page()+1;
|
||||
int new_page = old_page;
|
||||
switch (k)
|
||||
{
|
||||
case K_CTRL+K_F1: new_page = 1; break;
|
||||
case K_CTRL+K_F2: new_page = 2; break;
|
||||
case K_CTRL+K_F3: new_page = 3; break;
|
||||
case K_PREV : new_page--; break;
|
||||
case K_NEXT : new_page++; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
// If page will change ...
|
||||
if (old_page != new_page) switch(new_page)
|
||||
{
|
||||
case 1: test_ammissibilita_dati(); break;
|
||||
case 2: test_ammissibilita_saldi(); break;
|
||||
case 3: test_ammissibilita_fondi(); break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
return TAutomask::on_key(k);
|
||||
}
|
||||
|
||||
class TAnacespi : public TRelation_application
|
||||
{
|
||||
TRelation* _cespiti;
|
||||
@ -274,6 +627,10 @@ class TAnacespi : public TRelation_application
|
||||
|
||||
TQuery_mask* _qmask;
|
||||
TEdit_mask* _emask;
|
||||
|
||||
private:
|
||||
void init_mask(TMask& m);
|
||||
void kill_cespite(const TString& idcespite, int lfile, int key = 1);
|
||||
|
||||
protected:
|
||||
// @cmember Inizializzazione dei dati dell'utente
|
||||
@ -286,9 +643,6 @@ protected:
|
||||
// @cmember Ritorna la relazione da modificare
|
||||
virtual TRelation* get_relation() const;
|
||||
|
||||
void protect_fields(TMask& m, TToken_string& enabling) const;
|
||||
void init_mask(TMask& m);
|
||||
|
||||
virtual const char* get_next_key();
|
||||
virtual bool protected_record(TRectype& rec);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
@ -296,6 +650,8 @@ protected:
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
|
||||
virtual int read(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual bool remove();
|
||||
};
|
||||
|
||||
bool TAnacespi::changing_mask(int)
|
||||
@ -327,17 +683,16 @@ TRelation* TAnacespi::get_relation() const
|
||||
// Collega salce
|
||||
TString80 expr1;
|
||||
expr1 << SALCE_IDCESPITE << "==" << CESPI_IDCESPITE;
|
||||
if (year > 0)
|
||||
expr1 << '|' << SALCE_CODES << "==" << year;
|
||||
expr1 << '|' << SALCE_CODES << "==" << year;
|
||||
expr1 << '|' << SALCE_TPSALDO << "==1";
|
||||
csp->add(LF_SALCE, expr1);
|
||||
|
||||
// Collega i tre tipi di ammce
|
||||
TString80 expr2;
|
||||
for (int a = 1; a <= 3; a++)
|
||||
{
|
||||
expr2 = expr1;
|
||||
TString80 expr2 = expr1;
|
||||
expr2 << '|' << AMMCE_TPAMM << "==" << a;
|
||||
csp->add(LF_AMMCE, expr2, 1, 0, LF_AMMCE+100*(a-1));
|
||||
csp->add(LF_AMMCE, expr2, 1, 0, a-1);
|
||||
}
|
||||
|
||||
// Attiva il salvataggio anche di salce e ammce
|
||||
@ -350,6 +705,7 @@ TRelation* TAnacespi::get_relation() const
|
||||
void TAnacespi::init_query_mode(TMask& m)
|
||||
{
|
||||
ditta_cespiti().init_mask(m);
|
||||
set_search_field(F_IDCESPITE);
|
||||
}
|
||||
|
||||
bool TAnacespi::protected_record(TRectype& rec)
|
||||
@ -365,6 +721,7 @@ void TAnacespi::init_mask(TMask& m)
|
||||
const bool can_edit = !dc.bollato_stampato() && m.field(F_DTALIEN).empty();
|
||||
m.enable(DLG_SAVEREC, can_edit);
|
||||
m.enable(DLG_DELREC, can_edit);
|
||||
m.disable(DLG_NEWREC);
|
||||
|
||||
_emask->set_stato_attivita(_qmask->stato_attivita());
|
||||
|
||||
@ -381,67 +738,53 @@ void TAnacespi::init_mask(TMask& m)
|
||||
void TAnacespi::init_insert_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
m.enable(F_DTALIEN);
|
||||
m.set(F_TUIR, "X");
|
||||
m.set(F_SPEMAN, _emask->tipo_cespite() == tc_materiale ? 2 : 1);
|
||||
m.set(F_ESCLPR, _emask->tipo_cespite() != tc_pluriennale ? "X" : "");
|
||||
}
|
||||
|
||||
void TAnacespi::protect_fields(TMask& m, TToken_string& enabling) const
|
||||
{
|
||||
for (int f = m.fields()-1; f >= 0; f--)
|
||||
if (_emask->tipo_cespite() == tc_materiale)
|
||||
m.set(F_SPEMAN, 2);
|
||||
else
|
||||
{
|
||||
TMask_field& fld = m.fld(f);
|
||||
const short id = fld.dlg();
|
||||
if (id > 100 && id < 1000 && fld.is_editable() && fld.enabled_default())
|
||||
{
|
||||
const bool on = enabling.empty() || enabling.get_pos(fld.dlg()) >= 0;
|
||||
fld.enable(on);
|
||||
}
|
||||
m.set(F_SPEMAN, 1);
|
||||
m.disable(F_SPEMAN);
|
||||
}
|
||||
m.set(F_ESCLPR, _emask->tipo_cespite() != tc_pluriennale ? "X" : "");
|
||||
// Extra: non richiesti da analisi, ma obbligatori
|
||||
m.set(F_VEICOLO, 1);
|
||||
m.set(F_USOPROM, 1);
|
||||
}
|
||||
|
||||
void TAnacespi::init_modify_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
m.disable(F_DTALIEN);
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
TDate iniz, fine;
|
||||
const int ese = dc.esercizio_corrente(iniz, fine);
|
||||
const TDate dtacq = m.get(F_DTCOMP);
|
||||
const TDate dtfunz = m.get(F_DTFUNZ);
|
||||
|
||||
TToken_string enabling;
|
||||
const int staat = _qmask->stato_attivita();
|
||||
|
||||
switch (_qmask->stato_attivita())
|
||||
TToken_string enabling;
|
||||
switch (staat)
|
||||
{
|
||||
case 2:
|
||||
if (dtacq.ok())
|
||||
if (dtacq < iniz)
|
||||
{
|
||||
if (dtacq < iniz)
|
||||
if (!dtfunz.ok() || dtfunz >= iniz)
|
||||
{
|
||||
if (!dtfunz.ok() || dtfunz >= iniz)
|
||||
{
|
||||
enabling.add(F_DTFUNZ);
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
}
|
||||
else
|
||||
{
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!dtfunz.ok())
|
||||
{
|
||||
enabling.add(F_DTCOMP);
|
||||
enabling.add(F_DTFUNZ);
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
enabling.add(F_VEIDIP);
|
||||
enabling.add(F_VEICOLO);
|
||||
if (_emask->tipo_cespite() == tc_materiale)
|
||||
enabling.add(F_SPEMAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
enabling.add(F_USOPROM);
|
||||
enabling.add(F_VEIDIP);
|
||||
enabling.add(F_VEICOLO);
|
||||
if (_emask->tipo_cespite() == tc_materiale)
|
||||
enabling.add(F_SPEMAN);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -455,7 +798,14 @@ void TAnacespi::init_modify_mode(TMask& m)
|
||||
break;
|
||||
}
|
||||
|
||||
protect_fields(m, enabling);
|
||||
_emask->protect_page(1, enabling);
|
||||
|
||||
enabling.cut(0);
|
||||
if (staat == 2 || staat == 3)
|
||||
_emask->protect_page(2, enabling);
|
||||
|
||||
if (!m.field(F_DTALIEN).empty())
|
||||
xvt_statbar_set("Cespite alienato: non è possibile apportare modifiche", TRUE);
|
||||
}
|
||||
|
||||
const char* TAnacespi::get_next_key()
|
||||
@ -473,9 +823,100 @@ int TAnacespi::read(TMask& m)
|
||||
return err;
|
||||
}
|
||||
|
||||
int TAnacespi::write(const TMask& m)
|
||||
{
|
||||
TRectype& curr = get_relation()->curr();
|
||||
const TDitta_cespiti& dc = ditta_cespiti();
|
||||
const TRectype& cac = dc.categoria(0, NULL, m.get_int(F_CATEGORIA));
|
||||
switch (_emask->tipo_cespite())
|
||||
{
|
||||
case tc_immateriale:
|
||||
if (cac.get_int("I0") == 2) // Percentuali
|
||||
{
|
||||
curr.put(CESPI_PIMM, cac.get("R13"));
|
||||
curr.put(CESPI_VINCOLO, 1);
|
||||
}
|
||||
else // Anni
|
||||
{
|
||||
curr.zero(CESPI_PIMM);
|
||||
curr.put(CESPI_ANNIRIC, cac.get("I3"));
|
||||
curr.put(CESPI_VINCOLO, 2);
|
||||
}
|
||||
break;
|
||||
case tc_pluriennale:
|
||||
curr.put(CESPI_VINCOLO, cac.get("I2"));
|
||||
curr.put(CESPI_PMINP, cac.get("R14"));
|
||||
curr.put(CESPI_PMAXP, cac.get("R15"));
|
||||
curr.put(CESPI_ANNIRIC, cac.get("I3"));
|
||||
break;
|
||||
default:
|
||||
{
|
||||
TDate dt = m.get(F_DTFUNZ);
|
||||
if (!dt.ok())
|
||||
dt = m.get_date(F_INIZIO_ES);
|
||||
if (dt.year() < 1989)
|
||||
curr.put(CESPI_PMAT, cac.get("R12")); // % beni mat D.M. 29/10/74
|
||||
else
|
||||
curr.put(CESPI_PMAT, cac.get("R11")); // % beni mat D.M. 31/12/88
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
const int cat = m.get_int(F_CATEGORIA);
|
||||
if (cat >= 41)
|
||||
{
|
||||
curr.zero(CESPI_CODCGR);
|
||||
curr.zero(CESPI_CODSP);
|
||||
}
|
||||
else
|
||||
{
|
||||
curr.put(CESPI_CODCGR, curr.get(CESPI_CODCGRA));
|
||||
curr.put(CESPI_CODSP, curr.get(CESPI_CODSPA));
|
||||
}
|
||||
|
||||
int err = TRelation_application::write(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
void TAnacespi::kill_cespite(const TString& idcespite, int lfile, int key)
|
||||
{
|
||||
TRelation rel(lfile);
|
||||
TRectype& filter = rel.curr();
|
||||
filter.put("IDCESPITE", idcespite);
|
||||
TCursor cur(&rel, "", key, &filter, &filter);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
rel.remove();
|
||||
}
|
||||
|
||||
bool TAnacespi::remove()
|
||||
{
|
||||
const int staat = _qmask->stato_attivita();
|
||||
bool yes = FALSE;
|
||||
if (staat != 1)
|
||||
yes = yesno_box("ATTENZIONE: il cespite è già stato stampato su bollato.\n"
|
||||
"Si desidera confermare l'elimininazione?");
|
||||
else
|
||||
yes = yesno_box("ATTENZIONE: verranno eliminati anche i valori relativi agli esercizi precedenti.\n"
|
||||
"Si desidera confermare l'elimininazione?");
|
||||
|
||||
if (yes)
|
||||
{
|
||||
const TString16 idcespite = get_relation()->curr().get(CESPI_IDCESPITE);
|
||||
TRelation_application::remove();
|
||||
kill_cespite(idcespite, LF_MOVCE, 2);
|
||||
kill_cespite(idcespite, LF_MOVAM);
|
||||
kill_cespite(idcespite, LF_AMMMV);
|
||||
kill_cespite(idcespite, LF_SALCE);
|
||||
kill_cespite(idcespite, LF_AMMCE);
|
||||
}
|
||||
return yes;
|
||||
}
|
||||
|
||||
bool TAnacespi::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, 0);
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, LF_MOVCE, LF_AMMMV, 0);
|
||||
_cespiti = NULL;
|
||||
_rel_year = 0;
|
||||
|
||||
|
||||
38
ce/ce0500a.h
38
ce/ce0500a.h
@ -18,8 +18,6 @@
|
||||
|
||||
#define F_IDCESPITE 120
|
||||
#define F_DESC 121
|
||||
#define F_IDCESPITE_I 122
|
||||
#define F_DESC_I 123
|
||||
|
||||
#define F_LOCALIZZ 130
|
||||
#define F_LOCALIZZ_DESC 131
|
||||
@ -53,24 +51,22 @@
|
||||
#define F_RIVGF 212
|
||||
#define F_RIVGC 213
|
||||
|
||||
#define F_NORMALE 302
|
||||
#define F_ACCELERATO 303
|
||||
#define F_ANTICIPATO 304
|
||||
#define F_QPERSE 305
|
||||
#define F_FPRIVATO 306
|
||||
#define F_QPERSEPRIV 307
|
||||
#define F_NORMALE 252
|
||||
#define F_ACCELERATO 253
|
||||
#define F_ANTICIPATO 254
|
||||
#define F_QPERSE 255
|
||||
#define F_FPRIVATO 256
|
||||
#define F_QPERSEPRIV 257
|
||||
#define F_VSPMANU 258
|
||||
#define F_ANNIAMM 259
|
||||
|
||||
#define F_NORMALE2 402
|
||||
#define F_ACCELERATO2 403
|
||||
#define F_ANTICIPATO2 404
|
||||
#define F_QPERSE2 405
|
||||
#define F_FPRIVATO2 406
|
||||
#define F_QPERSEPRIV2 407
|
||||
#define F_NORMALE2 302
|
||||
#define F_ACCELERATO2 303
|
||||
#define F_ANTICIPATO2 304
|
||||
|
||||
#define F_NORMALE3 502
|
||||
#define F_ACCELERATO3 503
|
||||
#define F_ANTICIPATO3 504
|
||||
#define F_QPERSE3 505
|
||||
#define F_FPRIVATO3 506
|
||||
#define F_QPERSEPRIV3 507
|
||||
|
||||
#define F_NORMALE3 312
|
||||
#define F_ACCELERATO3 313
|
||||
#define F_ANTICIPATO3 314
|
||||
|
||||
#define F_QUADRATURA 320
|
||||
|
||||
|
||||
@ -89,7 +89,7 @@ BEGIN
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
CHECKTYPE FORCED
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
@ -149,7 +149,7 @@ NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Desc@50" DESC
|
||||
@ -165,13 +165,12 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
STRING F_DESC 60 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
USE LF_CESPI KEY 2
|
||||
INPUT DESC F_DESC
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
@ -185,40 +184,8 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD DESC
|
||||
KEY 2
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE_I 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT IDCESPITE F_IDCESPITE_I
|
||||
COPY DISPLAY F_IDCESPITE
|
||||
OUTPUT F_IDCESPITE_I IDCESPITE
|
||||
OUTPUT F_DESC DESC_I
|
||||
OUTPUT F_CATEGORIA CODCAT
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY F_IDCESPITE
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DESC_I 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT DESC F_DESC_I
|
||||
COPY DISPLAY F_DESC
|
||||
COPY OUTPUT F_IDCESPITE_I
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY F_DESC
|
||||
FIELD DESC
|
||||
KEY 2
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 15 "@bRicerce alternative"
|
||||
|
||||
189
ce/ce0500b.uml
189
ce/ce0500b.uml
@ -16,7 +16,7 @@ END
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
FLAGS "DFG"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
@ -60,17 +60,20 @@ END
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cespite "
|
||||
FLAGS "DZ"
|
||||
FLAGS "DGZ"
|
||||
FIELD IDCESPITE
|
||||
MESSAGE COPY,5@
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 26 5 ""
|
||||
FLAGS "G"
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD DESC
|
||||
MESSAGE COPY,5@
|
||||
MESSAGE COPY,6@
|
||||
WARNING "La descrizione è obbligatoria"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
@ -126,8 +129,10 @@ BEGIN
|
||||
INPUT CODTAB F_IMPIANTO
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Localizzazione" S1
|
||||
OUTPUT F_IMPIANTO CODTAB
|
||||
OUTPUT F_DESC_IMP S0
|
||||
OUTPUT F_LOCALIZZ S1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CODIMP
|
||||
END
|
||||
@ -140,6 +145,7 @@ BEGIN
|
||||
INPUT S0 F_DESC_IMP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
DISPLAY "Localizzazione" S1
|
||||
COPY OUTPUT F_IMPIANTO
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
@ -174,7 +180,9 @@ END
|
||||
DATE F_DTCOMP
|
||||
BEGIN
|
||||
PROMPT 1 10 "Data completamento/acquisizione "
|
||||
FLAGS "A"
|
||||
FIELD DTCOMP
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_TUIR
|
||||
@ -193,6 +201,7 @@ DATE F_DTALIEN
|
||||
BEGIN
|
||||
PROMPT 46 11 "Data di alienazione "
|
||||
FIELD DTALIEN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_AMMPROP
|
||||
@ -225,6 +234,8 @@ NUMBER F_ANNIRIC 3
|
||||
BEGIN
|
||||
PROMPT 40 15 "Anni di durata del leasing "
|
||||
FIELD ANNIRIC
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "È neccessario specificare la durata del leasing"
|
||||
END
|
||||
|
||||
BOOLEAN F_USATO
|
||||
@ -269,15 +280,15 @@ BEGIN
|
||||
PROMPT 1 19 "Uso promiscuo "
|
||||
SHEET "Tipo@4R|Descrizione@60"
|
||||
INPUT F_USOPROM
|
||||
ITEM "1|Deducibilita 100% - Esclusivamente strumentale"
|
||||
ITEM "2|Deducibilita 50% - Uso promiscuo"
|
||||
ITEM "3|Deducibilita 80% - Uso promiscuo agenti/rappresentanti"
|
||||
ITEM "1|Deducibilità 100% - Esclusivamente strumentale"
|
||||
ITEM "2|Deducibilità 50% - Uso promiscuo"
|
||||
ITEM "3|Deducibilità 80% - Uso promiscuo agenti/rappresentanti"
|
||||
OUTPUT F_USOPROM
|
||||
OUTPUT F_DESC_USOPROM
|
||||
FIELD USOPROM
|
||||
END
|
||||
|
||||
STRING F_DESC_USOPROM 54
|
||||
STRING F_DESC_USOPROM 80 54
|
||||
BEGIN
|
||||
PROMPT 22 19 ""
|
||||
FLAGS "D"
|
||||
@ -310,6 +321,7 @@ BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
GROUP 2
|
||||
FIELD LF_SALCE->CODES
|
||||
END
|
||||
|
||||
DATE DLG_NULL
|
||||
@ -330,19 +342,29 @@ NUMBER DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 1 4 "Cespite "
|
||||
FLAGS "DZ"
|
||||
FIELD IDCESPITE
|
||||
GROUP 5
|
||||
FIELD LF_SALCE->IDCESPITE
|
||||
END
|
||||
|
||||
STRING DLG_NULL 50
|
||||
BEGIN
|
||||
PROMPT 26 4 ""
|
||||
FLAGS "DZ"
|
||||
GROUP 5
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "1|1"
|
||||
FLAGS "H"
|
||||
FIELD LF_SALCE->TPSALDO
|
||||
END
|
||||
|
||||
NUMBER F_ELEMENTI 4
|
||||
BEGIN
|
||||
PROMPT 1 6 "Elementi "
|
||||
FLAGS "U"
|
||||
FIELD LF_SALCE->NUMELE
|
||||
END
|
||||
|
||||
@ -368,48 +390,76 @@ CURRENCY F_RIV75 15
|
||||
BEGIN
|
||||
PROMPT 1 10 "Rivalutazione L. 576/75 "
|
||||
FIELD LF_SALCE->RIV75
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_RIV83 15
|
||||
BEGIN
|
||||
PROMPT 1 11 "Rivalutazione L. 72/83 "
|
||||
FIELD LF_SALCE->RIV83
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_RIV90 15
|
||||
BEGIN
|
||||
PROMPT 1 12 "Rivalutazione L. 408/90 "
|
||||
FIELD LF_SALCE->RIV90
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
NUMBER F_ANNI_90 2
|
||||
BEGIN
|
||||
PROMPT 1 13 "Anni post rivalutazione L. 408/90 "
|
||||
FLAGS "DU"
|
||||
FIELD LF_SALCE->ANNIPOST90
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare anche un numero di anni"
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_RIV91 15
|
||||
BEGIN
|
||||
PROMPT 1 14 "Rivalutazione L. 413/91 "
|
||||
FIELD LF_SALCE->RIV91
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
NUMBER F_ANNI_91 2
|
||||
BEGIN
|
||||
PROMPT 1 15 "Anni post rivalutazione L. 413/91 "
|
||||
FLAGS "DU"
|
||||
FIELD LF_SALCE->ANNIPOST91
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "E' necessario specificare anche un numero di anni"
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_RIVGF 15
|
||||
BEGIN
|
||||
PROMPT 1 16 "Rivalutazione generica fiscale "
|
||||
FIELD LF_SALCE->RIVGF
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_RIVGC 15
|
||||
BEGIN
|
||||
PROMPT 1 17 "Rivalutazione generica civilistica "
|
||||
FIELD LF_SALCE->RIVGC
|
||||
GROUP 8
|
||||
END
|
||||
|
||||
CURRENCY F_VSPMANU 15
|
||||
BEGIN
|
||||
PROMPT 1 18 "Valore spese di manutenzione "
|
||||
FIELD LF_SALCE->VSPMANU
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNIAMM 3
|
||||
BEGIN
|
||||
PROMPT 1 19 "Numero di esercizi di ammortamento già chiusi "
|
||||
FLAGS "U"
|
||||
FIELD LF_SALCE->ANNIAMM
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -438,6 +488,7 @@ NUMBER DLG_NULL 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DZ"
|
||||
FIELD LF_AMMCE->CODES
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
@ -459,14 +510,15 @@ NUMBER DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 1 4 "Cespite "
|
||||
FLAGS "DZ"
|
||||
FIELD IDCESPITE
|
||||
FIELD LF_AMMCE->IDCESPITE
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
STRING DLG_NULL 50
|
||||
BEGIN
|
||||
PROMPT 26 4 ""
|
||||
FLAGS "DZ"
|
||||
GROUP 5
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
@ -481,89 +533,160 @@ END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 43 6 "@bGestionale"
|
||||
PROMPT 43 6 "@bCivilistico"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 63 6 "@bCivilistico"
|
||||
PROMPT 63 6 "@bGestionale"
|
||||
END
|
||||
|
||||
CURRENCY F_NORMALE 15
|
||||
BEGIN
|
||||
PROMPT 1 7 "Normale "
|
||||
FIELD LF_AMMCE->QNOR
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_ACCELERATO 15
|
||||
BEGIN
|
||||
PROMPT 1 8 "Accelerato "
|
||||
FIELD LF_AMMCE->QACC
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_ANTICIPATO 15
|
||||
BEGIN
|
||||
PROMPT 1 9 "Anticipato "
|
||||
FIELD LF_AMMCE->QANT
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSE 15
|
||||
BEGIN
|
||||
PROMPT 1 11 "Quote perse "
|
||||
FIELD LF_AMMCE->QPERSE
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_FPRIVATO 15
|
||||
BEGIN
|
||||
PROMPT 1 12 "Fondo amm. privato "
|
||||
FIELD LF_AMMCE->FPRIVATO
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSEPRIV 15
|
||||
BEGIN
|
||||
PROMPT 1 13 "Quote perse private "
|
||||
FIELD LF_AMMCE->QPPRIVATE
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
#define LF_AMMCE2 LF_AMMCE+100
|
||||
LIST DLG_NULL 1 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "1|1"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE->TPSALDO
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "1|1"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE->TPAMM
|
||||
END
|
||||
|
||||
#define LF_AMMCE2 -1
|
||||
|
||||
NUMBER DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
FLAGS "HZ"
|
||||
GROUP 5
|
||||
FIELD LF_AMMCE2->IDCESPITE
|
||||
END
|
||||
|
||||
NUMBER DLG_NULL 4
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
FLAGS "HZ"
|
||||
GROUP 2
|
||||
FIELD LF_AMMCE2->CODES
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "1|1"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE2->TPSALDO
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "2|2"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE2->TPAMM
|
||||
END
|
||||
|
||||
CURRENCY F_NORMALE2 15
|
||||
BEGIN
|
||||
PROMPT 41 7 ""
|
||||
FIELD LF_AMMCE2->QNOR
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_ACCELERATO2 15
|
||||
BEGIN
|
||||
PROMPT 41 8 ""
|
||||
FIELD LF_AMMCE2->QACC
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_ANTICIPATO2 15
|
||||
BEGIN
|
||||
PROMPT 41 9 ""
|
||||
FIELD LF_AMMCE2->QANT
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSE2 15
|
||||
#define LF_AMMCE3 -2
|
||||
|
||||
NUMBER DLG_NULL 10
|
||||
BEGIN
|
||||
PROMPT 41 11 ""
|
||||
FIELD LF_AMMCE2->QPERSE
|
||||
PROMPT 61 6 ""
|
||||
FLAGS "HZ"
|
||||
GROUP 5
|
||||
FIELD LF_AMMCE3->IDCESPITE
|
||||
END
|
||||
|
||||
CURRENCY F_FPRIVATO2 15
|
||||
NUMBER DLG_NULL 4
|
||||
BEGIN
|
||||
PROMPT 41 12 ""
|
||||
FIELD LF_AMMCE2->FPRIVATO
|
||||
PROMPT 41 6 ""
|
||||
FLAGS "HZ"
|
||||
GROUP 2
|
||||
FIELD LF_AMMCE3->CODES
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSEPRIV2 15
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 41 13 ""
|
||||
FIELD LF_AMMCE2->QPPRIVATE
|
||||
PROMPT 41 6 ""
|
||||
ITEM "1|1"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE3->TPSALDO
|
||||
END
|
||||
|
||||
#define LF_AMMCE3 LF_AMMCE+200
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 41 6 ""
|
||||
ITEM "3|3"
|
||||
FLAGS "H"
|
||||
FIELD LF_AMMCE3->TPAMM
|
||||
END
|
||||
|
||||
CURRENCY F_NORMALE3 15
|
||||
BEGIN
|
||||
@ -583,22 +706,10 @@ BEGIN
|
||||
FIELD LF_AMMCE3->QANT
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSE3 15
|
||||
BUTTON F_QUADRATURA 24 2
|
||||
BEGIN
|
||||
PROMPT 61 11 ""
|
||||
FIELD LF_AMMCE3->QPERSE
|
||||
END
|
||||
|
||||
CURRENCY F_FPRIVATO3 15
|
||||
BEGIN
|
||||
PROMPT 61 12 ""
|
||||
FIELD LF_AMMCE3->FPRIVATO
|
||||
END
|
||||
|
||||
CURRENCY F_QPERSEPRIV3 15
|
||||
BEGIN
|
||||
PROMPT 61 13 ""
|
||||
FIELD LF_AMMCE3->QPPRIVATE
|
||||
PROMPT 51 11 "Quadratura fondi"
|
||||
GROUP 9
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
858
ce/ce0900.cpp
858
ce/ce0900.cpp
File diff suppressed because it is too large
Load Diff
@ -7,10 +7,10 @@ int main(int argc,char** argv)
|
||||
const int r = (argc > 1) ? (argv[1][1]-'0') : 0;
|
||||
switch (r)
|
||||
{
|
||||
case 1:
|
||||
ce1100(argc,argv) ; break;
|
||||
default:
|
||||
ce1100(argc,argv) ; break;
|
||||
case 1 : ce1200(argc,argv); break; // Forzatura ammortamento su movimenti
|
||||
case 2 : ce1300(argc,argv); break; // Scelta ammortamento per cespite
|
||||
case 4 : ce1500(argc,argv); break; // Gestione movimenti
|
||||
default: ce1100(argc,argv); break; // Forzatura ammortamento su cespiti
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
3
ce/ce1.h
3
ce/ce1.h
@ -2,6 +2,9 @@
|
||||
#define __CE1_H
|
||||
|
||||
int ce1100(int argc, char* argv[]);
|
||||
int ce1200(int argc, char* argv[]);
|
||||
int ce1300(int argc, char* argv[]);
|
||||
int ce1500(int argc, char* argv[]);
|
||||
|
||||
#endif // __CE1_H
|
||||
|
||||
|
||||
417
ce/ce1100.cpp
417
ce/ce1100.cpp
@ -4,7 +4,7 @@
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ce0.h"
|
||||
#include "ce1.h"
|
||||
#include "ce2101.h"
|
||||
#include "celib.h"
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
class TQuery_mask : public TAutomask
|
||||
{
|
||||
int _staat;
|
||||
real _residuof, _residuoc;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
@ -29,10 +30,14 @@ protected:
|
||||
|
||||
int calcola_stato_attivita();
|
||||
bool cespite_ok() const;
|
||||
void set_cespi_filter();
|
||||
|
||||
public:
|
||||
int stato_attivita() const { return _staat; }
|
||||
|
||||
real get_residuof() const { return _residuof; }
|
||||
real get_residuoc() const { return _residuoc; }
|
||||
void calc_res(bool prec);
|
||||
|
||||
TQuery_mask();
|
||||
};
|
||||
|
||||
@ -103,33 +108,85 @@ bool TQuery_mask::cespite_ok() const
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TQuery_mask::calc_res(bool prec)
|
||||
{
|
||||
TCespite ces (get(F_IDCESPITE));
|
||||
// calcolo ammortamento sul cespite (per sit. fiscale(1) e civilistica(2))
|
||||
TDate fine_es = get(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
const TRectype& salce2=ces.sal_pro(); //rectype giá di "tipo fiscale"
|
||||
const TRectype& ammce2=ces.amm_pro();
|
||||
// determinazione del residuo fiscale
|
||||
_residuof = ZERO;
|
||||
_residuof = salce2.get_real(SALCE_CSTO)-salce2.get_real(SALCE_VNONAMM)+salce2.get_real(SALCE_RIV75)+salce2.get_real(SALCE_RIV83)+salce2.get_real(SALCE_RIV90)+salce2.get_real(SALCE_RIV91)+salce2.get_real(SALCE_RIVGF);
|
||||
_residuof -= ammce2.get_real(AMMCE_QNORP)+ammce2.get_real(AMMCE_QACCP)+ammce2.get_real(AMMCE_QANTP)+ammce2.get_real(AMMCE_QPERSEP)+ammce2.get_real(AMMCE_FPRIVATOP)+ammce2.get_real(AMMCE_QPPRIVATEP);
|
||||
if (!prec)
|
||||
_residuof -= ammce2.get_real(AMMCE_QNOR)+ammce2.get_real(AMMCE_QACC)+ammce2.get_real(AMMCE_QANT)+ammce2.get_real(AMMCE_QPERSE)+ammce2.get_real(AMMCE_FPRIVATO)+ammce2.get_real(AMMCE_QPPRIVATE);
|
||||
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
//rectype giá di "tipo civilistico"
|
||||
// determinazione del residuo civilistico
|
||||
_residuoc = ZERO;
|
||||
_residuoc = salce2.get_real(SALCE_CSTO)+salce2.get_real(SALCE_RIV75)+salce2.get_real(SALCE_RIV83)+salce2.get_real(SALCE_RIV90)+salce2.get_real(SALCE_RIV91)+salce2.get_real(SALCE_RIVGC);
|
||||
_residuoc -= ammce2.get_real(AMMCE_QNORP)+ammce2.get_real(AMMCE_QACCP)+ammce2.get_real(AMMCE_QANTP);
|
||||
if (!prec)
|
||||
_residuoc -= ammce2.get_real(AMMCE_QNOR)+ammce2.get_real(AMMCE_QACC)+ammce2.get_real(AMMCE_QANT);
|
||||
}
|
||||
|
||||
void TQuery_mask::set_cespi_filter() //metodo per il filtraggio corretto sulla maschera; stabilisce il tipo di filtro in
|
||||
{ //base alla selezone con il radiobutton (per attivitá o per impianto)
|
||||
TString filter;
|
||||
if (get(F_SELECT)[0] == 'I') // Filtro per impianto
|
||||
{
|
||||
const TEdit_field& imp = efield(F_IMPIANTO);
|
||||
if (!imp.empty())
|
||||
filter << CESPI_CODIMP << "=\"" << imp.get() << '"';
|
||||
}
|
||||
else // Filtro per attività
|
||||
{
|
||||
filter << '(' << CESPI_CODCGRA << "=\"" << get(F_GRUPPO) << "\")";
|
||||
filter << "&&(" << CESPI_CODSPA << "=\"" << get(F_SPECIE) << "\")";
|
||||
}
|
||||
efield(F_IDCESPITE).browse()->set_filter(filter);
|
||||
efield(F_DESC).browse()->set_filter(filter);
|
||||
}
|
||||
|
||||
bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
{
|
||||
case F_ESERCIZIO:
|
||||
if (e == fe_init || e == fe_modify)
|
||||
set_cespi_filter();
|
||||
if (e == fe_close) //il controllo sul bollato viene fatto solo per l'esercizio
|
||||
calcola_stato_attivita();
|
||||
break;
|
||||
case F_GRUPPO:
|
||||
case F_SPECIE:
|
||||
/* if (e == fe_close)
|
||||
{
|
||||
const bool can_edit = calcola_stato_attivita() != 1; // Bollato non stampato (se =1 -> bollato stampato)
|
||||
enable(DLG_NEWREC, can_edit);
|
||||
} */
|
||||
break;
|
||||
if (e == fe_modify)
|
||||
set_cespi_filter();
|
||||
break;
|
||||
case F_SELECT:
|
||||
case F_IMPIANTO:
|
||||
if (e == fe_modify)
|
||||
set_cespi_filter();
|
||||
break;
|
||||
|
||||
case F_SEARCH1:
|
||||
case F_SEARCH2:
|
||||
case F_SEARCH3:
|
||||
if (e == fe_button)
|
||||
on_search_event(o);
|
||||
break;
|
||||
|
||||
case F_IDCESPITE:
|
||||
case F_IDCESPITE_I:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (!cespite_ok())
|
||||
return error_box("Inserire un cespite valido"); //controlla che esista il cespite
|
||||
if (stato_attivita() == 1)
|
||||
return error_box("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature"); //il bollato é stato stampato
|
||||
warning_box("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature"); //il bollato é stato stampato
|
||||
|
||||
|
||||
TLocalisamfile salce(LF_SALCE); // controlla che esista almeno un saldo
|
||||
salce.put(SALCE_IDCESPITE, get(F_IDCESPITE));
|
||||
@ -145,16 +202,26 @@ bool TQuery_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
ammce.put(AMMCE_TPAMM, 1);
|
||||
if (ammce.read() != NOERR)
|
||||
return error_box("Non esistono ammortamenti per l'anno selezionato");
|
||||
|
||||
|
||||
TCespite ces (get(F_IDCESPITE)); // controlla che la categoria del cespite sia ammortizzabile
|
||||
const TRectype& categoria = ces.categoria();
|
||||
bool non_ammortizzabile = categoria.get_bool("B0");
|
||||
if (non_ammortizzabile)
|
||||
return error_box("La categoria del cespite selezionato non é ammortizzabile");
|
||||
|
||||
calc_res(TRUE); // controllo dei residui fiscale e civilistico in ingresso (prec=TRUE)
|
||||
if (_residuof==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo fiscale da ammortizzare per il cespite");
|
||||
|
||||
if (_residuoc==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo civilistico da ammortizzare per il cespite");
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
@ -170,6 +237,7 @@ class TForce_mask : public TAutomask
|
||||
{
|
||||
TTipo_cespite _tipo;
|
||||
int _staat;
|
||||
real _residuof_ini,_residuoc_ini;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
@ -180,77 +248,69 @@ public:
|
||||
|
||||
void set_tipo_cespite(TTipo_cespite tc) { _tipo = tc; }
|
||||
TTipo_cespite tipo_cespite() const { return _tipo; }
|
||||
|
||||
void set_residuof_ini(const real& rfini) { _residuof_ini = rfini; }
|
||||
void set_residuoc_ini(const real& rcini) { _residuoc_ini = rcini; }
|
||||
|
||||
TForce_mask() : TAutomask("ce1101b") { }
|
||||
};
|
||||
|
||||
|
||||
bool TForce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
/* switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
if (e == fe_init)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.on_category_event(o, e, jolly);
|
||||
}
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
ditta_cespiti().on_category_event(o, e, jolly);
|
||||
break;
|
||||
case F_DTCOMP:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
const TDate dtcomp = o.get();
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
TDate iniz, fine;
|
||||
const int ese = dc.esercizio_corrente(iniz, fine);
|
||||
|
||||
if (insert_mode() && stato_attivita() == 2)
|
||||
{
|
||||
if (dtcomp < iniz)
|
||||
return error_box("La data appartiene ad un esercizio già stampato su bollato");
|
||||
const TRectype& cac = dc.categoria(0, NULL, get_int(F_CATEGORIA));
|
||||
iniz = cac.get("D0");
|
||||
if (iniz.ok() && dtcomp < iniz)
|
||||
return error_box("La data è precedente all'inizio della validità della categoria");
|
||||
fine = cac.get("D1");
|
||||
if (fine.ok() && dtcomp > fine)
|
||||
return error_box("La data è succesiva alla fine della validità della categoria");
|
||||
}
|
||||
if (dc.esercizio_costituzione() && dtcomp < iniz)
|
||||
return error_box("Non è possibile specificare una data antecedente all'eserczio di costituzione");
|
||||
case F_FORZATURA_Q_F: //gestione reset dei vari checkbox di forzatura
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_F)=="X")
|
||||
reset(F_FORZATURA_P_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_F:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_F)=="X")
|
||||
reset(F_FORZATURA_Q_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_Q_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_C)=="X")
|
||||
reset(F_FORZATURA_P_C);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_C)=="X")
|
||||
reset(F_FORZATURA_Q_C);
|
||||
break;
|
||||
|
||||
case F_AMMNOR_F: // controlla che residuof sia < della somma dei campi quota fiscali (al variare di
|
||||
case F_AMMACC_F: // ognuno dei campi quota componenti, in modo che in caso di errore il campo sia
|
||||
case F_AMMANT_F: // subito identificato
|
||||
case F_QUOTE_PERSE:
|
||||
case F_PRIVATO:
|
||||
case F_QUOTE_PRIV:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
real sumf = get_real(F_AMMNOR_F)+get_real(F_AMMACC_F)+get_real(F_AMMANT_F)+get_real(F_QUOTE_PERSE)+get_real(F_PRIVATO)+get_real(F_QUOTE_PRIV);
|
||||
if (sumf > _residuof_ini)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo fiscale del cespite");
|
||||
}
|
||||
break;
|
||||
case F_DTFUNZ:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
case F_AMMNOR_C: // controlla che residuoc sia < della somma dei campi quota civilistici
|
||||
case F_AMMACC_C:
|
||||
case F_AMMANT_C:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
const TDate dtcomp = field(F_DTCOMP).get();
|
||||
const TDate dtfunz = o.get();
|
||||
if (dtfunz < dtcomp)
|
||||
return error_box("La data di entrata in funzione deve essere successiva a quella di aquisizione");
|
||||
if (dtfunz.ok() && !dtcomp.ok())
|
||||
return error_box("La data di entrata in funzione non puo' essere inserita senza specificare quella di aquisizione");
|
||||
if (_tipo != tc_materiale && dtfunz != dtcomp)
|
||||
{
|
||||
if (dtcomp.year() >= dc.anno_tuir())
|
||||
return error_box("In base alla normativa del TUIR, le date di acquisizione e di entrata in funzione devono coincidere");
|
||||
}
|
||||
if (dtfunz.ok())
|
||||
{
|
||||
const TRectype& cac = dc.categoria(0, NULL, get_int(F_CATEGORIA));
|
||||
const TDate iniz = cac.get("D0");
|
||||
if (iniz.ok() && dtfunz < iniz)
|
||||
return error_box("La data è precedente all'inizio della validità della categoria");
|
||||
const TDate fine = cac.get("D1");
|
||||
if (fine.ok() && dtcomp > fine)
|
||||
return error_box("La data è succesiva alla fine della validità della categoria");
|
||||
set(F_TUIR, dtfunz.year() >= dc.anno_tuir() ? "X" : "");
|
||||
}
|
||||
real sumc = get_real(F_AMMNOR_C)+get_real(F_AMMACC_C)+get_real(F_AMMANT_C);
|
||||
if (sumc > _residuoc_ini)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo civilistico del cespite");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
} */
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
@ -258,12 +318,16 @@ bool TForce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
//Applicazione
|
||||
class TForza_amm_cespi : public TRelation_application
|
||||
{
|
||||
TRelation* _cespiti;
|
||||
int _rel_year;
|
||||
TRelation* _ammce;
|
||||
|
||||
TQuery_mask* _qmask;
|
||||
TForce_mask* _fmask;
|
||||
|
||||
|
||||
private:
|
||||
void protect_fields(TMask& m, TToken_string& enabling) const;
|
||||
void init_mask(TMask& m);
|
||||
void update_amm(const TMask& m);
|
||||
|
||||
protected:
|
||||
// @cmember Inizializzazione dei dati dell'utente
|
||||
virtual bool user_create();
|
||||
@ -275,16 +339,11 @@ protected:
|
||||
// @cmember Ritorna la relazione da modificare
|
||||
virtual TRelation* get_relation() const;
|
||||
|
||||
void protect_fields(TMask& m, TToken_string& enabling) const;
|
||||
void init_mask(TMask& m);
|
||||
|
||||
virtual const char* get_next_key();
|
||||
virtual bool protected_record(TRectype& rec);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
|
||||
virtual int read(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
};
|
||||
|
||||
bool TForza_amm_cespi::changing_mask(int)
|
||||
@ -297,43 +356,9 @@ TMask* TForza_amm_cespi::get_mask(int mode)
|
||||
return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_fmask;
|
||||
}
|
||||
|
||||
// get_relation più complessa della storia di campo
|
||||
TRelation* TForza_amm_cespi::get_relation() const
|
||||
{
|
||||
const int year = _qmask->get_int(F_ESERCIZIO);
|
||||
TRelation*& csp = ((TForza_amm_cespi*)this)->_cespiti;
|
||||
if (year != _rel_year && csp != NULL)
|
||||
{
|
||||
delete csp;
|
||||
csp = NULL;
|
||||
}
|
||||
if (csp == NULL)
|
||||
{
|
||||
// Crea nuova relazione su cespi
|
||||
csp = new TRelation(LF_CESPI);
|
||||
((TForza_amm_cespi*)this)->_rel_year = year; // Memorizza anno utilizzato
|
||||
|
||||
// Collega salce
|
||||
TString80 expr1;
|
||||
expr1 << SALCE_IDCESPITE << "==" << CESPI_IDCESPITE;
|
||||
if (year > 0)
|
||||
expr1 << '|' << SALCE_CODES << "==" << year;
|
||||
csp->add(LF_SALCE, expr1);
|
||||
|
||||
// Collega i tre tipi di ammce
|
||||
TString80 expr2;
|
||||
for (int a = 1; a <= 3; a++)
|
||||
{
|
||||
expr2 = expr1;
|
||||
expr2 << '|' << AMMCE_TPAMM << "==" << a;
|
||||
csp->add(LF_AMMCE, expr2, 1, 0, LF_AMMCE+100*(a-1));
|
||||
}
|
||||
|
||||
// Attiva il salvataggio anche di salce e ammce
|
||||
csp->write_enable();
|
||||
}
|
||||
|
||||
return _cespiti;
|
||||
return _ammce;
|
||||
}
|
||||
|
||||
void TForza_amm_cespi::init_query_mode(TMask& m)
|
||||
@ -341,40 +366,25 @@ void TForza_amm_cespi::init_query_mode(TMask& m)
|
||||
ditta_cespiti().init_mask(m);
|
||||
}
|
||||
|
||||
bool TForza_amm_cespi::protected_record(TRectype& rec)
|
||||
{
|
||||
const TDate dtalien = rec.get(CESPI_DTALIEN);
|
||||
return dtalien.ok();
|
||||
}
|
||||
|
||||
void TForza_amm_cespi::init_mask(TMask& m)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
TDitta_cespiti& dc = ditta_cespiti(); //se il bollato dell'esercizio é stato stampato inibisce il REGISTRA
|
||||
dc.init_mask(m);
|
||||
const bool can_edit = !dc.bollato_stampato() ;//&& m.field(F_DTALIEN).empty();
|
||||
const bool can_edit = !dc.bollato_stampato() ;
|
||||
m.enable(DLG_SAVEREC, can_edit);
|
||||
m.enable(DLG_DELREC, can_edit);
|
||||
|
||||
_fmask->set_stato_attivita(_qmask->stato_attivita());
|
||||
_fmask->set_stato_attivita(_qmask->stato_attivita()); //copia lo stato attivitá della precedente
|
||||
|
||||
_qmask->calc_res(TRUE); //calcola residuo precedente (prec=TRUE)
|
||||
_fmask->set_residuof_ini(_qmask->get_residuof()); //memorizza i residui precedenti nella maschera (non a video)
|
||||
_fmask->set_residuoc_ini(_qmask->get_residuoc());
|
||||
|
||||
const TRectype& cac = dc.categoria(0, NULL, _qmask->get_int(F_CATEGORIA));
|
||||
const int tc = cac.get_int("I0");
|
||||
_fmask->set_tipo_cespite(tc==0 ? tc_materiale : (tc==1 ? tc_immateriale : tc_pluriennale));
|
||||
|
||||
const bool mat_only = _fmask->tipo_cespite() == tc_materiale;
|
||||
// m.show(F_LEASING, mat_only);
|
||||
// m.show(F_ANNIRIC, mat_only);
|
||||
// m.show(F_USATO, mat_only);
|
||||
_qmask->calc_res(FALSE); // ricalcola il residuo fiscale e civilistico in forzatura (prec=FALSE)
|
||||
_fmask->set(F_RESIDUO_F, _qmask->get_residuof()); //prende il residuo fiscale (civilistico) del cespite calcolato
|
||||
_fmask->set(F_RESIDUO_C, _qmask->get_residuoc()); //nella maschera di selezione e lo mette nella maschera di forzatura
|
||||
}
|
||||
|
||||
void TForza_amm_cespi::init_insert_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
// m.enable(F_DTALIEN);
|
||||
// m.set(F_TUIR, "X");
|
||||
// m.set(F_SPEMAN, _fmask->tipo_cespite() == tc_materiale ? 2 : 1);
|
||||
// m.set(F_ESCLPR, _fmask->tipo_cespite() != tc_pluriennale ? "X" : "");
|
||||
}
|
||||
|
||||
void TForza_amm_cespi::protect_fields(TMask& m, TToken_string& enabling) const
|
||||
{
|
||||
@ -391,83 +401,92 @@ void TForza_amm_cespi::protect_fields(TMask& m, TToken_string& enabling) const
|
||||
}
|
||||
|
||||
void TForza_amm_cespi::init_modify_mode(TMask& m)
|
||||
{
|
||||
{
|
||||
init_mask(m);
|
||||
/* m.disable(F_DTALIEN);
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
TDate iniz, fine;
|
||||
const int ese = dc.esercizio_corrente(iniz, fine);
|
||||
const TDate dtacq = m.get(F_DTCOMP);
|
||||
const TDate dtfunz = m.get(F_DTFUNZ);
|
||||
|
||||
TToken_string enabling;
|
||||
const bool accendiforzatura=_fmask->stato_attivita()!=1;
|
||||
m.enable(F_FORZATURA_Q_F, accendiforzatura); //abilita i checks della forzatura quando il bollato NON é stampato
|
||||
m.enable(F_FORZATURA_P_F, accendiforzatura);
|
||||
m.enable(F_FORZATURA_Q_C, accendiforzatura);
|
||||
m.enable(F_FORZATURA_P_C, accendiforzatura);
|
||||
|
||||
switch (_qmask->stato_attivita())
|
||||
if (accendiforzatura) //se lo stato attivitá lascia liberi di forzare, controlla se il tipocespite fa altrettanto...
|
||||
{
|
||||
case 2:
|
||||
if (dtacq.ok())
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
const TRectype& cac = ces.categoria();
|
||||
switch (ces.tipo())
|
||||
{
|
||||
if (dtacq < iniz)
|
||||
case tc_immateriale:
|
||||
if (cac.get_int("I1")!=0)
|
||||
{
|
||||
if (!dtfunz.ok() || dtfunz >= iniz)
|
||||
{
|
||||
enabling.add(F_DTFUNZ);
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
}
|
||||
else
|
||||
{
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!dtfunz.ok())
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
break;
|
||||
|
||||
case tc_pluriennale:
|
||||
if (cac.get_int("I2")==3)
|
||||
{
|
||||
enabling.add(F_DTCOMP);
|
||||
enabling.add(F_DTFUNZ);
|
||||
enabling.add(F_SPEMAN);
|
||||
enabling.add(F_USOPROM);
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!dtfunz.ok() || dtfunz >= iniz)
|
||||
{
|
||||
enabling.add(F_DTFUNZ);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protect_fields(m, enabling); */
|
||||
// aggiornamento della colonna dei valori risultanti
|
||||
m.set(F_RIS_AMMNOR_F, m.get_real(F_AMMNOR_F));
|
||||
m.set(F_RIS_AMMACC_F, m.get_real(F_AMMACC_F));
|
||||
m.set(F_RIS_AMMANT_F, m.get_real(F_AMMANT_F));
|
||||
m.set(F_RIS_QUOTE_PERSE, m.get_real(F_QUOTE_PERSE));
|
||||
m.set(F_RIS_PRIVATO, m.get_real(F_PRIVATO));
|
||||
m.set(F_RIS_QUOTE_PRIV, m.get_real(F_QUOTE_PRIV));
|
||||
|
||||
m.set(F_RIS_AMMNOR_C, m.get_real(F_AMMNOR_C));
|
||||
m.set(F_RIS_AMMACC_C, m.get_real(F_AMMACC_C));
|
||||
m.set(F_RIS_AMMANT_C, m.get_real(F_AMMANT_C));
|
||||
}
|
||||
|
||||
const char* TForza_amm_cespi::get_next_key()
|
||||
// funzione per il ricalcolo degli ammortamenti dopo la forzatura
|
||||
void TForza_amm_cespi::update_amm(const TMask& m)
|
||||
{
|
||||
real num = 1;
|
||||
TLocalisamfile cespi(LF_CESPI);
|
||||
if (cespi.last() == NOERR)
|
||||
num = cespi.get_real(CESPI_IDCESPITE) + 1;
|
||||
return format("%d|%s", F_IDCESPITE, num.string());
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
TDate fine_es = m.get_date(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
}
|
||||
|
||||
int TForza_amm_cespi::read(TMask& m)
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura (in caso di prima forzatura)
|
||||
int TForza_amm_cespi::write(const TMask& m)
|
||||
{
|
||||
int err = TRelation_application::read(m);
|
||||
int err = TRelation_application::write(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura
|
||||
int TForza_amm_cespi::rewrite(const TMask& m)
|
||||
{
|
||||
int err = TRelation_application::rewrite(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TForza_amm_cespi::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, 0);
|
||||
_cespiti = NULL;
|
||||
_rel_year = 0;
|
||||
|
||||
_ammce = new TRelation (LF_AMMCE); // relazione principale su AMMCE
|
||||
TString expr;
|
||||
expr << "IDCESPITE==IDCESPITE|CODES==CODES|TPSALDO==TPSALDO|TPAMM==2"; //seconda relazione su AMMCE
|
||||
_ammce->add(LF_AMMCE, expr, 1, 0, 69); //69 é l'alias di AMMCE
|
||||
_ammce->write_enable(-69); //abilita la scrittura su secondo AMMCE
|
||||
_ammce->add(LF_CESPI, "IDCESPITE==IDCESPITE"); //estende la relazione con CESPI
|
||||
|
||||
_qmask = new TQuery_mask;
|
||||
_fmask = new TForce_mask;
|
||||
return TRUE;
|
||||
@ -477,7 +496,7 @@ bool TForza_amm_cespi::user_destroy()
|
||||
{
|
||||
delete _fmask;
|
||||
delete _qmask;
|
||||
delete _cespiti;
|
||||
delete _ammce;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@ -18,6 +18,4 @@
|
||||
|
||||
#define F_IDCESPITE 120
|
||||
#define F_DESC 121
|
||||
#define F_IDCESPITE_I 122
|
||||
#define F_DESC_I 123
|
||||
|
||||
@ -51,6 +51,8 @@ BEGIN
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
FIELD CODES
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
@ -139,7 +141,7 @@ NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Desc@50" DESC
|
||||
@ -154,13 +156,12 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
USE LF_CESPI KEY 2
|
||||
INPUT DESC F_DESC
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
@ -173,39 +174,25 @@ BEGIN
|
||||
COPY OUTPUT F_IDCESPITE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD DESC
|
||||
KEY 2
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE_I 10
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT IDCESPITE F_IDCESPITE_I
|
||||
COPY DISPLAY F_IDCESPITE
|
||||
OUTPUT F_IDCESPITE_I IDCESPITE
|
||||
OUTPUT F_DESC DESC_I
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY F_IDCESPITE
|
||||
FIELD IDCESPITE
|
||||
PROMPT 1 90 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD TPSALDO
|
||||
KEY 1
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DESC_I 50
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT DESC F_DESC_I
|
||||
COPY DISPLAY F_DESC
|
||||
COPY OUTPUT F_IDCESPITE_I
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY F_DESC
|
||||
FIELD DESC
|
||||
KEY 2
|
||||
GROUP 2
|
||||
END
|
||||
PROMPT 1 91 ""
|
||||
FLAGS "D"
|
||||
ITEM "1|1"
|
||||
FIELD TPAMM
|
||||
KEY 1
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
|
||||
51
ce/ce1101b.h
51
ce/ce1101b.h
@ -13,31 +13,40 @@
|
||||
#define F_DESC_CAT 111
|
||||
#define F_IMPIANTO 112
|
||||
#define F_DESC_IMP 113
|
||||
#define F_FORZATURA 114
|
||||
|
||||
#define F_SEARCH1 117
|
||||
#define F_SEARCH2 118
|
||||
#define F_SEARCH3 119
|
||||
#define F_FORZATURA_Q_F 114
|
||||
#define F_FORZATURA_P_F 115
|
||||
#define F_FORZATURA_Q_C 116
|
||||
#define F_FORZATURA_P_C 117
|
||||
|
||||
#define F_IDCESPITE 120
|
||||
#define F_DESC 121
|
||||
#define F_IDCESPITE_I 122
|
||||
#define F_DESC_I 123
|
||||
|
||||
#define F_AMMNOR 130
|
||||
#define F_AMMACC 131
|
||||
#define F_AMMANT 132
|
||||
#define F_QUOTE_PERSE 133
|
||||
#define F_PRIVATO 134
|
||||
#define F_QUOTE_PRIV 135
|
||||
#define F_P_AMMNOR 136
|
||||
#define F_P_AMMACC 137
|
||||
#define F_P_AMMANT 138
|
||||
#define F_AMMNOR_F 130
|
||||
#define F_AMMACC_F 131
|
||||
#define F_AMMANT_F 132
|
||||
#define F_AMMNOR_C 133
|
||||
#define F_AMMACC_C 134
|
||||
#define F_AMMANT_C 135
|
||||
#define F_QUOTE_PERSE 136
|
||||
#define F_PRIVATO 137
|
||||
#define F_QUOTE_PRIV 138
|
||||
#define F_P_AMMNOR_F 139
|
||||
#define F_P_AMMACC_F 140
|
||||
#define F_P_AMMANT_F 141
|
||||
#define F_P_AMMNOR_C 142
|
||||
#define F_P_AMMACC_C 143
|
||||
#define F_P_AMMANT_C 144
|
||||
|
||||
#define F_RIS_AMMNOR 140
|
||||
#define F_RIS_AMMACC 141
|
||||
#define F_RIS_AMMANT 142
|
||||
#define F_RIS_QUOTE_PERSE 143
|
||||
#define F_RIS_PRIVATO 144
|
||||
#define F_RIS_QUOTE_PRIV 145
|
||||
#define F_RESIDUO 146
|
||||
#define F_RIS_AMMNOR_F 145
|
||||
#define F_RIS_AMMACC_F 146
|
||||
#define F_RIS_AMMANT_F 147
|
||||
#define F_RIS_AMMNOR_C 148
|
||||
#define F_RIS_AMMACC_C 149
|
||||
#define F_RIS_AMMANT_C 150
|
||||
#define F_RIS_QUOTE_PERSE 151
|
||||
#define F_RIS_PRIVATO 152
|
||||
#define F_RIS_QUOTE_PRIV 153
|
||||
#define F_RESIDUO_F 154
|
||||
#define F_RESIDUO_C 155
|
||||
258
ce/ce1101b.uml
258
ce/ce1101b.uml
@ -4,7 +4,8 @@ TOOLBAR "Toolbar" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 ""
|
||||
PROMPT -13 -1 "~Registra"
|
||||
MESSAGE EXIT,K_SAVE
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
@ -19,6 +20,12 @@ BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Forzatura ammortamento sul cespite" -1 -1 78 18
|
||||
@ -47,7 +54,7 @@ END
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DAZ"
|
||||
FLAGS "DGZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
@ -55,6 +62,7 @@ BEGIN
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
@ -73,14 +81,13 @@ NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
//// GROUP 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
@ -88,59 +95,83 @@ BEGIN
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
|
||||
CHECKTYPE NORMAL
|
||||
//// GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
//// GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cespite "
|
||||
FLAGS "DZ"
|
||||
USE LF_CESPI SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
OUTPUT F_IDCESPITE IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
//// GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 5 ""
|
||||
FLAGS "D"
|
||||
USE LF_CESPI KEY 2 SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
INPUT DESC F_DESC
|
||||
COPY OUTPUT F_IDCESPITE
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD DESC
|
||||
KEY 2
|
||||
//// GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_CATEGORIA 2
|
||||
BEGIN
|
||||
PROMPT 1 6 "Categoria "
|
||||
FLAGS "DBZ"
|
||||
FLAGS "DBZG"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
FIELD CODCAT
|
||||
FIELD LF_CESPI->CODCAT
|
||||
END
|
||||
|
||||
STRING F_DESC_CAT 60 58
|
||||
BEGIN
|
||||
PROMPT 16 6 ""
|
||||
FLAGS "DB"
|
||||
DRIVENBY F_GRUPPO
|
||||
DRIVENBY F_SPECIE
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 90 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD TPSALDO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 91 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD 69@->TPSALDO
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 92 ""
|
||||
FLAGS "D"
|
||||
ITEM "1|1"
|
||||
FIELD TPAMM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 93 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD 69@->TPAMM
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
@ -152,10 +183,10 @@ RADIOBUTTON F_SITUAZIONE 1 75
|
||||
BEGIN
|
||||
PROMPT 1 8 ""
|
||||
FLAGS "Z"
|
||||
ITEM "F|Fiscale"
|
||||
MESSAGE SHOW,1@
|
||||
ITEM "F|Fiscale" //group1 é quello fiscale, il group 2 quello civilistico
|
||||
MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "C|Civilistica"
|
||||
MESSAGE HIDE,1@
|
||||
MESSAGE HIDE,1@|SHOW,2@
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 3
|
||||
@ -163,16 +194,44 @@ BEGIN
|
||||
PROMPT 0 11 "@bForzatura"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_FORZATURA 1 75
|
||||
BOOLEAN F_FORZATURA_Q_F
|
||||
BEGIN
|
||||
PROMPT 1 11 ""
|
||||
FLAGS "Z"
|
||||
ITEM "N|Nessuna"
|
||||
// MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "Q|Quote"
|
||||
// MESSAGE SHOW,2@|HIDE,1@
|
||||
ITEM "P|Percentuali"
|
||||
// MESSAGE SHOW,2@|HIDE,1@
|
||||
PROMPT 17 12 "Quote "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,3@
|
||||
MESSAGE TRUE ENABLE,3@|DISABLE,4@
|
||||
FIELD FZQUO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_P_F
|
||||
BEGIN
|
||||
PROMPT 35 12 "Percentuale "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,4@
|
||||
MESSAGE TRUE ENABLE,4@|DISABLE,3@
|
||||
FIELD FZPER
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_Q_C
|
||||
BEGIN
|
||||
PROMPT 17 12 "Quote "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,5@
|
||||
MESSAGE TRUE ENABLE,5@|DISABLE,6@
|
||||
FIELD 69@->FZQUO
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_P_C
|
||||
BEGIN
|
||||
PROMPT 35 12 "Percentuale "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,6@
|
||||
MESSAGE TRUE ENABLE,6@|DISABLE,5@
|
||||
FIELD 69@->FZPER
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 9
|
||||
@ -180,42 +239,92 @@ BEGIN
|
||||
PROMPT 0 14 "@b Valori Forzati Valori Risultanti"
|
||||
END
|
||||
|
||||
CURRENCY F_AMMNOR 15
|
||||
CURRENCY F_AMMNOR_F 15
|
||||
BEGIN
|
||||
PROMPT 1 15 "Normale "
|
||||
FIELD QNOR
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMACC 15
|
||||
CURRENCY F_AMMNOR_C 15
|
||||
BEGIN
|
||||
PROMPT 1 15 "Normale "
|
||||
FIELD 69@->QNOR
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
CURRENCY F_AMMACC_F 15
|
||||
BEGIN
|
||||
PROMPT 1 16 "Accelerato "
|
||||
FIELD QACC
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMANT 15
|
||||
CURRENCY F_AMMACC_C 15
|
||||
BEGIN
|
||||
PROMPT 1 16 "Accelerato "
|
||||
FIELD 69@->QACC
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
CURRENCY F_AMMANT_F 15
|
||||
BEGIN
|
||||
PROMPT 1 17 "Anticipato "
|
||||
FIELD QANT
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMANT_C 15
|
||||
BEGIN
|
||||
PROMPT 1 17 "Anticipato "
|
||||
FIELD 69@->QANT
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PERSE 15
|
||||
BEGIN
|
||||
PROMPT 1 18 "Quote perse "
|
||||
FIELD QPERSE
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_PRIVATO 15
|
||||
BEGIN
|
||||
PROMPT 1 19 "Privato "
|
||||
FIELD FPRIVATO
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PRIV 15
|
||||
BEGIN
|
||||
PROMPT 1 20 "Quote per priv. "
|
||||
FIELD QPPRIVATE
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMNOR 6 2
|
||||
NUMBER F_P_AMMNOR_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 15 ""
|
||||
FIELD PNOR
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMNOR_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 15 ""
|
||||
FIELD 69@->PNOR
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
@ -223,9 +332,20 @@ BEGIN
|
||||
PROMPT 42 15 "%"
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMACC 6 2
|
||||
NUMBER F_P_AMMACC_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 16 ""
|
||||
FIELD PACC
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMACC_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 16 ""
|
||||
FIELD 69@->PACC
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
@ -233,9 +353,20 @@ BEGIN
|
||||
PROMPT 42 16 "%"
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMANT 6 2
|
||||
NUMBER F_P_AMMANT_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 17 ""
|
||||
FIELD PANT
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMANT_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 17 ""
|
||||
FIELD 69@->PANT
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
@ -243,42 +374,81 @@ BEGIN
|
||||
PROMPT 42 17 "%"
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMNOR 15
|
||||
CURRENCY F_RIS_AMMNOR_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 15 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMACC 15
|
||||
CURRENCY F_RIS_AMMNOR_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 15 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMACC_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 16 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMANT 15
|
||||
CURRENCY F_RIS_AMMACC_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 16 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMANT_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 17 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMANT_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 17 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_QUOTE_PERSE 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 18 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_PRIVATO 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 19 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_QUOTE_PRIV 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 20 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RESIDUO 15
|
||||
CURRENCY F_RESIDUO_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 45 21 "Residuo "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RESIDUO_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 45 21 "Residuo "
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
535
ce/ce1200.cpp
Executable file
535
ce/ce1200.cpp
Executable file
@ -0,0 +1,535 @@
|
||||
#include <defmask.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ce1.h"
|
||||
#include "ce2101.h"
|
||||
#include "celib.h"
|
||||
|
||||
#include "ce1201a.h"
|
||||
#include "ce1201b.h"
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
#include "movce.h"
|
||||
#include "cespi.h"
|
||||
#include "salce.h"
|
||||
#include "ammce.h"
|
||||
#include "movam.h"
|
||||
#include "ammmv.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------------------//
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di selezione
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TForce_mov_qmask : public TAutomask
|
||||
{
|
||||
int _staat, _ammoelim;
|
||||
real _residuof, _residuoc, _difff, _diffc;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void on_search_event(TOperable_field& o);
|
||||
int calcola_stato_attivita();
|
||||
int calcola_ammo_eliminate();
|
||||
|
||||
public:
|
||||
int stato_attivita() const { return _staat; }
|
||||
int ammo_eliminate() const { return _ammoelim; }
|
||||
real get_residuof() const { return _residuof; }
|
||||
real get_residuoc() const { return _residuoc; }
|
||||
real get_plusminusf() const { return _difff; }
|
||||
real get_plusminusc() const { return _diffc; }
|
||||
void calc_res_mov(TCespite& ces, const TRectype& movce, const TRectype& movam);
|
||||
|
||||
TForce_mov_qmask();
|
||||
};
|
||||
|
||||
int TForce_mov_qmask::calcola_stato_attivita()
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
const int gru = get_int(F_GRUPPO);
|
||||
const char* spe = get(F_SPECIE);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d%02d%-4s", ese, gru, spe);
|
||||
|
||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||
if (curr_ccb.get_bool("B1")) // Bollato stampato
|
||||
_staat = 1;
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.set_attivita(ese, gru, spe);
|
||||
|
||||
return _staat;
|
||||
}
|
||||
|
||||
int TForce_mov_qmask::calcola_ammo_eliminate()
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d", ese);
|
||||
|
||||
const TRectype& curr_cce = cache().get("CCE", str);
|
||||
if (curr_cce.get_bool("B3")) //possibilitá ammortamenti su parti eliminate (si prosegue solo se TRUE)
|
||||
_ammoelim = 1;
|
||||
|
||||
return _ammoelim;
|
||||
}
|
||||
|
||||
void TForce_mov_qmask::calc_res_mov(TCespite& ces, const TRectype& movce, const TRectype& movam)
|
||||
{
|
||||
// calcolo ammortamento sul cespite (per sit. fiscale(tpamm=1) o civilistica(tpamm=2))
|
||||
const TDate dtmov = movce.get_date(MOVCE_DTMOV);
|
||||
const int tpamm = movam.get_int(MOVAM_TPAMM); //in base al movam passato prendo il tpamm corrispondente
|
||||
|
||||
ces.calc_amm(tpamm, FALSE, dtmov);
|
||||
|
||||
// determinazione del residuo fiscale
|
||||
if (tpamm == 1)
|
||||
{
|
||||
_residuof = ZERO;
|
||||
_residuof = movce.get_real(MOVCE_CSTO)-movce.get_real(MOVCE_VNONAMM)+movce.get_real(MOVCE_RIV75)+movce.get_real(MOVCE_RIV83)+movce.get_real(MOVCE_RIV90)+movce.get_real(MOVCE_RIV91)+movce.get_real(MOVCE_RIVGF);
|
||||
_residuof -= movam.get_real(MOVAM_QNOR)+movam.get_real(MOVAM_QACC)+movam.get_real(MOVAM_QANT)+movam.get_real(MOVAM_QPERSE)+movam.get_real(MOVAM_FPRIVATO)+movam.get_real(MOVAM_QPPRIVATE);
|
||||
//calcolo di plus/minus valenze sparse
|
||||
_difff = movce.get_real(MOVCE_IMPVEN) - _residuof;
|
||||
}
|
||||
// determinazione del residuo civilistico
|
||||
if (tpamm == 2)
|
||||
{
|
||||
_residuoc = ZERO;
|
||||
_residuoc = movce.get_real(MOVCE_CSTO)+movce.get_real(MOVCE_RIV75)+movce.get_real(MOVCE_RIV83)+movce.get_real(MOVCE_RIV90)+movce.get_real(MOVCE_RIV91)+movce.get_real(MOVCE_RIVGC);
|
||||
_residuoc -= movam.get_real(MOVAM_QNOR)+movam.get_real(MOVAM_QACC)+movam.get_real(MOVAM_QANT);
|
||||
_diffc = movce.get_real(MOVCE_IMPVEN) - _residuoc;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
bool TForce_mov_qmask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_ESERCIZIO:
|
||||
if (e == fe_close)
|
||||
{
|
||||
calcola_stato_attivita();
|
||||
calcola_ammo_eliminate();
|
||||
if (_ammoelim != 1)
|
||||
return error_box("Non previsti ammortamenti sulle parti eliminate");
|
||||
}
|
||||
break;
|
||||
|
||||
case F_IDCESPITE:
|
||||
if (e == fe_init || e == fe_modify) //seleziona il filtro da applicare alla maschera nel campo del movimento
|
||||
{
|
||||
const TString& ces = get(F_IDCESPITE);
|
||||
const bool cesok = !real::is_null(ces);
|
||||
TString filter;
|
||||
filter << "(IDRET=\"\")&&(ANSI(DTMOV)>=ANSI(#" << F_INIZIO_ES
|
||||
<< "))&&(ANSI(DTMOV)<=ANSI(#" << F_FINE_ES << "))";
|
||||
if (cesok) // se viene selezionato un particolare cespite al filtro si aggiunge il suo codice
|
||||
filter << "&&(IDCESPITE==\"" << ces << "\")";
|
||||
|
||||
TEdit_field& m = efield(F_IDMOV); // setta il filtro della ricerca sulla maschera
|
||||
m.browse()->set_filter(filter);
|
||||
|
||||
}
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (stato_attivita() == 1)
|
||||
warning_box("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature");
|
||||
if (ammo_eliminate() == 0)
|
||||
warning_box("Non é previsto l'ammortamento sulle parti eliminate nell'esercizio selezionato");
|
||||
}
|
||||
break;
|
||||
|
||||
case F_IDMOV:
|
||||
if (e == fe_close)
|
||||
{
|
||||
const TRectype& curr_movce = cache().get(LF_MOVCE, get(F_IDMOV)); //seleziona il cespite corrente in base al movimento
|
||||
const TString16 idcespite = curr_movce.get(MOVCE_IDCESPITE); //selezionato nella maschera (qsto x poter lasciare idcespite vuoto)
|
||||
|
||||
TLocalisamfile salce(LF_SALCE); // controlla che esista il saldo iniziale nell'anno selezionato
|
||||
salce.put(SALCE_IDCESPITE, idcespite);
|
||||
salce.put(SALCE_CODES, get(F_ESERCIZIO));
|
||||
salce.put(SALCE_TPSALDO, 1);
|
||||
if (salce.read() != NOERR)
|
||||
return error_box("Non esistono saldi per l'anno selezionato");
|
||||
|
||||
TLocalisamfile ammce(LF_AMMCE); // controlla che esista l'ammortamento iniziale nell'anno selezionato
|
||||
ammce.put(AMMCE_IDCESPITE, idcespite);
|
||||
ammce.put(AMMCE_CODES, get(F_ESERCIZIO));
|
||||
ammce.put(AMMCE_TPSALDO, 1);
|
||||
ammce.put(AMMCE_TPAMM, 1);
|
||||
if (ammce.read() != NOERR)
|
||||
return error_box("Non esistono ammortamenti per l'anno selezionato");
|
||||
|
||||
TCespite ces (idcespite); // controlla che la categoria del cespite sia ammortizzabile
|
||||
const TRectype& categoria = ces.categoria();
|
||||
bool non_ammortizzabile = categoria.get_bool("B0");
|
||||
if (non_ammortizzabile)
|
||||
return error_box("Ammortamenti non effettuabili perché la categoria del cespite non é ammortizzabile");
|
||||
|
||||
if (!curr_movce.empty())
|
||||
{
|
||||
const TRectype& curr_tmc = cache().get("%TMC", curr_movce.get(MOVCE_CODMOV));
|
||||
if (!curr_tmc.get_bool("B4")) // non ammessi ammortamenti sul tipomov selezionato
|
||||
return error_box("Non sono ammessi ammortamenti su questo tipo movimento");
|
||||
if (!curr_tmc.get_int("I0") == 1) // non ammessi ammortamenti su movimenti di rettifica
|
||||
return error_box("Non sono ammessi ammortamenti sulle rettifiche");
|
||||
|
||||
const TDate dtmov = curr_movce.get_date(MOVCE_DTMOV); // controlla che datamovimento sia inclusa nell'esercizio selezionato
|
||||
const TDate dataini = get(F_INIZIO_ES);
|
||||
const TDate datafine = get(F_FINE_ES);
|
||||
if ( dtmov < dataini || dtmov > datafine)
|
||||
return error_box("Il movimento selezionato non é di competenza dell'esercizio selezionato");
|
||||
}
|
||||
|
||||
TLocalisamfile movam(LF_MOVAM); // controlla la consistenza dei movimenti fondi sui movimenti
|
||||
movam.put(MOVAM_IDCESPITE, idcespite);
|
||||
movam.put(MOVAM_IDMOV, get(F_IDMOV));
|
||||
movam.put(MOVAM_TPAMM, 1);
|
||||
if (movam.read() != NOERR)
|
||||
return error_box("Movimenti dei fondi fiscali incoerenti per il movimento selezionato");
|
||||
const TRectype movam1 = movam.curr();
|
||||
|
||||
movam.put(MOVAM_IDCESPITE, idcespite);
|
||||
movam.put(MOVAM_IDMOV, get(F_IDMOV));
|
||||
movam.put(MOVAM_TPAMM, 2);
|
||||
if (movam.read() != NOERR)
|
||||
return error_box("Movimenti dei fondi civilistici incoerenti per il movimento selezionato");
|
||||
const TRectype movam2 = movam.curr();
|
||||
|
||||
TLocalisamfile ammmv(LF_AMMMV); // controlla la consistenza degli ammortamenti sui movimenti
|
||||
ammmv.put(AMMMV_IDCESPITE, idcespite);
|
||||
ammmv.put(AMMMV_IDMOV, get(F_IDMOV));
|
||||
ammmv.put(AMMMV_TPAMM, 1);
|
||||
if (ammmv.read() != NOERR)
|
||||
return error_box("Ammortamenti fiscali sui movimenti incoerenti per il movimento selezionato");
|
||||
ammmv.put(AMMMV_IDCESPITE, idcespite);
|
||||
ammmv.put(AMMMV_IDMOV, get(F_IDMOV));
|
||||
ammmv.put(AMMMV_TPAMM, 2);
|
||||
if (ammmv.read() != NOERR)
|
||||
return error_box("Ammortamenti civilistici sui movimenti incoerenti per il movimento selezionato");
|
||||
|
||||
|
||||
calc_res_mov(ces, curr_movce, movam1); //calcolo del residuo fiscale in uscita maschera di selezione
|
||||
if (_residuof==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo fiscale\nda ammortizzare per le parti eliminate del cespite");
|
||||
|
||||
calc_res_mov(ces, curr_movce, movam2); //calcolo del residuo civilistico in uscita maschera di selezione
|
||||
if (_residuoc==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo civilistico\nda ammortizzare per le parti eliminate del cespite");
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TForce_mov_qmask::TForce_mov_qmask() : TAutomask("ce1201a")
|
||||
{
|
||||
first_focus(F_IDMOV);
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------------------//
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di forzatura
|
||||
///////////////////////////////////////////////////////////
|
||||
class TForce_mov_fmask : public TAutomask
|
||||
{
|
||||
TTipo_cespite _tipo;
|
||||
int _staat;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
void set_stato_attivita(int sa) { _staat = sa; }
|
||||
int stato_attivita() const { return _staat; }
|
||||
|
||||
void set_tipo_cespite(TTipo_cespite tc) { _tipo = tc; }
|
||||
TTipo_cespite tipo_cespite() const { return _tipo; }
|
||||
|
||||
TForce_mov_fmask() : TAutomask("ce1201b") { }
|
||||
};
|
||||
|
||||
bool TForce_mov_fmask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_FORZATURA_Q_F: //gestione reset dei vari checkbox di forzatura
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_F)=="X")
|
||||
reset(F_FORZATURA_P_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_F:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_F)=="X")
|
||||
reset(F_FORZATURA_Q_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_Q_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_C)=="X")
|
||||
reset(F_FORZATURA_P_C);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_C)=="X")
|
||||
reset(F_FORZATURA_Q_C);
|
||||
break;
|
||||
|
||||
case F_AMMNOR_F: // controlla che residuof sia < della somma dei campi quota fiscali (al variare di
|
||||
case F_AMMACC_F: // ognuno dei campi quota componenti, in modo che in caso di errore il campo sia
|
||||
case F_AMMANT_F: // subito identificato
|
||||
case F_QUOTE_PERSE:
|
||||
case F_PRIVATO:
|
||||
case F_QUOTE_PRIV:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
real sumf = get_real(F_AMMNOR_F)+get_real(F_AMMACC_F)+get_real(F_AMMANT_F)+get_real(F_QUOTE_PERSE)+get_real(F_PRIVATO)+get_real(F_QUOTE_PRIV);
|
||||
real maxresf = get_real(F_RIS_AMMNOR_F)+get_real(F_RIS_AMMACC_F)+get_real(F_RIS_AMMANT_F)+get_real(F_RIS_QUOTE_PERSE)+get_real(F_RIS_PRIVATO)+get_real(F_RIS_QUOTE_PRIV)+get_real(F_RESIDUO_F);
|
||||
if (sumf > maxresf)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo fiscale delle parti eliminate");
|
||||
}
|
||||
break;
|
||||
|
||||
case F_AMMNOR_C: // controlla che residuoc sia < della somma dei campi quota civilistici
|
||||
case F_AMMACC_C:
|
||||
case F_AMMANT_C:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
real sumc = get_real(F_AMMNOR_C)+get_real(F_AMMACC_C)+get_real(F_AMMANT_C);
|
||||
real maxresc = get_real(F_RIS_AMMNOR_C)+get_real(F_RIS_AMMACC_C)+get_real(F_RIS_AMMANT_C)+get_real(F_RESIDUO_C);
|
||||
if (sumc > maxresc)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo civilistico delle parti eliminate");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------------
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TForza_amm_movce : public TRelation_application
|
||||
{
|
||||
TRelation* _rel;
|
||||
TForce_mov_qmask* _qmask;
|
||||
TForce_mov_fmask* _fmask;
|
||||
|
||||
private:
|
||||
void update_amm(const TMask& m);
|
||||
void update_plusminus();
|
||||
void init_mask(TMask& m);
|
||||
|
||||
protected:
|
||||
//inizializzazione dati utente
|
||||
virtual bool user_create();
|
||||
//distruzione dati utente
|
||||
virtual bool user_destroy();
|
||||
virtual bool changing_mask(int mode) { return TRUE; }
|
||||
//richiede la maschera da usare
|
||||
virtual TMask* get_mask(int mode);
|
||||
//ritorna la relazione da modificare
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
public:
|
||||
TForza_amm_movce() { }
|
||||
};
|
||||
|
||||
|
||||
TMask* TForza_amm_movce::get_mask(int mode)
|
||||
{
|
||||
return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_fmask;
|
||||
}
|
||||
|
||||
void TForza_amm_movce::init_mask(TMask& m) //funzione per settare i dati ditta in uscita
|
||||
{
|
||||
const int ese = _qmask->get_int(F_ESERCIZIO);
|
||||
const int gru = _qmask->get_int(F_GRUPPO);
|
||||
const char* spe = _qmask->get(F_SPECIE);
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.set_attivita(ese, gru, spe);
|
||||
dc.init_mask(m);
|
||||
const bool can_edit = !dc.bollato_stampato();
|
||||
m.enable(DLG_SAVEREC, can_edit);
|
||||
m.enable(DLG_DELREC, can_edit);
|
||||
|
||||
_fmask->set_stato_attivita(_qmask->stato_attivita()); //copia lo stato attivitá della precedente
|
||||
|
||||
TCespite ces(_fmask->get(F_IDCESPI));
|
||||
const TRectype& movce = get_relation()->curr();
|
||||
const TRectype& movam1 = get_relation()->curr(-69);
|
||||
|
||||
_qmask->calc_res_mov(ces, movce, movam1); // ricalcola il residuo fiscale in forzatura
|
||||
_fmask->set(F_RESIDUO_F, _qmask->get_residuof()); //prende il residuo fiscale del cespite calcolato in Qmask e lo mette in Fmask
|
||||
// _fmask->set_residuof_ini(_qmask->get_residuof()); //mette il valore del residuo precedente la forzatura nella var _rediduof_ini
|
||||
_fmask->set(F_PLUSMINUS_F, _qmask->get_plusminusf());
|
||||
|
||||
const TRectype& movam2 = get_relation()->curr(-77);
|
||||
|
||||
_qmask->calc_res_mov(ces, movce, movam2); // ricalcola il residuo civilistico in forzatura
|
||||
_fmask->set(F_RESIDUO_C, _qmask->get_residuoc()); //prende il residuo civilistico del cespite calcolato in Qmask e lo mette in Fmask
|
||||
// _fmask->set_residuoc_ini(_qmask->get_residuoc()); //mette il valore del residuo precedente la forzatura nella var _rediduoc_ini
|
||||
_fmask->set(F_PLUSMINUS_C, _qmask->get_plusminusc());
|
||||
}
|
||||
|
||||
void TForza_amm_movce::init_query_mode(TMask& m)
|
||||
{
|
||||
ditta_cespiti().init_mask(m);
|
||||
}
|
||||
|
||||
void TForza_amm_movce::init_insert_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
}
|
||||
|
||||
void TForza_amm_movce::init_modify_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
|
||||
const bool accendiforzatura=_fmask->stato_attivita()!=1;
|
||||
m.enable(F_FORZATURA_Q_F, accendiforzatura); //abilita i checks della forzatura quando il bollato NON é stampato
|
||||
m.enable(F_FORZATURA_P_F, accendiforzatura);
|
||||
m.enable(F_FORZATURA_Q_C, accendiforzatura);
|
||||
m.enable(F_FORZATURA_P_C, accendiforzatura);
|
||||
|
||||
if (accendiforzatura) //se lo stato attivitá lascia liberi di forzare, controlla se il tipocespite fa altrettanto...
|
||||
{
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
const TRectype& cac = ces.categoria();
|
||||
switch (ces.tipo())
|
||||
{
|
||||
case tc_immateriale: //controllo sull'immaterialitá del cespite....
|
||||
if (cac.get_int("I1")!=0)
|
||||
{
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
break;
|
||||
|
||||
case tc_pluriennale: //...e quindi sulla pluriennalitá
|
||||
if (cac.get_int("I2")==3)
|
||||
{
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// aggiornamento della colonna dei valori risultanti
|
||||
m.set(F_RIS_AMMNOR_F, m.get_real(F_AMMNOR_F));
|
||||
m.set(F_RIS_AMMACC_F, m.get_real(F_AMMACC_F));
|
||||
m.set(F_RIS_AMMANT_F, m.get_real(F_AMMANT_F));
|
||||
m.set(F_RIS_QUOTE_PERSE, m.get_real(F_QUOTE_PERSE));
|
||||
m.set(F_RIS_PRIVATO, m.get_real(F_PRIVATO));
|
||||
m.set(F_RIS_QUOTE_PRIV, m.get_real(F_QUOTE_PRIV));
|
||||
|
||||
m.set(F_RIS_AMMNOR_C, m.get_real(F_AMMNOR_C));
|
||||
m.set(F_RIS_AMMACC_C, m.get_real(F_AMMACC_C));
|
||||
m.set(F_RIS_AMMANT_C, m.get_real(F_AMMANT_C));
|
||||
}
|
||||
|
||||
// funzione per il ricalcolo degli ammortamenti dopo la forzatura
|
||||
void TForza_amm_movce::update_amm(const TMask& m)
|
||||
{
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
TDate dtmov = m.get_date(F_DTMOV);
|
||||
ces.calc_amm(1, FALSE, dtmov);
|
||||
ces.calc_amm(2, FALSE, dtmov);
|
||||
}
|
||||
|
||||
//funzione per l'aggiornamento dei campi plus-minusvalenza sul file AMMMV
|
||||
void TForza_amm_movce::update_plusminus()
|
||||
{
|
||||
TRectype& amm1 = _rel->curr(-69);
|
||||
TRectype& amm2 = _rel->curr(-77);
|
||||
|
||||
const real& difff = _qmask->get_plusminusf();
|
||||
amm1.put(AMMMV_MINUS, difff<ZERO ? -difff : ZERO);
|
||||
amm1.put(AMMMV_PLUS, difff>ZERO ? difff : ZERO);
|
||||
|
||||
const real& diffc = _qmask->get_plusminusc();
|
||||
amm2.put(AMMMV_MINUS, diffc<ZERO ? -diffc : ZERO);
|
||||
amm2.put(AMMMV_PLUS, diffc>ZERO ? diffc : ZERO);
|
||||
}
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura (in caso di prima forzatura)
|
||||
int TForza_amm_movce::write(const TMask& m)
|
||||
{
|
||||
update_plusminus();
|
||||
|
||||
int err = TRelation_application::write(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura
|
||||
int TForza_amm_movce::rewrite(const TMask& m)
|
||||
{
|
||||
update_plusminus();
|
||||
|
||||
int err = TRelation_application::rewrite(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TForza_amm_movce::user_create()
|
||||
{
|
||||
open_files(LF_TAB, LF_TABCOM, LF_CESPI, LF_AMMCE, LF_MOVCE, LF_MOVAM, LF_AMMMV, LF_SALCE, 0);
|
||||
|
||||
_rel = new TRelation(LF_MOVCE); // relazione principale su MOVCE
|
||||
TString expr69;
|
||||
expr69 << "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==1";
|
||||
_rel->add(LF_AMMMV, expr69, 1, 0, 69); // prima relazione su AMMMV (alias 69): TPAMM=1
|
||||
_rel->write_enable(-69);
|
||||
TString expr77;
|
||||
expr77 << "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==2";
|
||||
_rel->add(LF_AMMMV, expr77, 1, 0, 77); // seconda relazione su AMMMV (alias 77): TPAMM=2
|
||||
_rel->write_enable(-77);
|
||||
|
||||
_qmask = new TForce_mov_qmask;
|
||||
_fmask = new TForce_mov_fmask;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TForza_amm_movce::user_destroy()
|
||||
{
|
||||
delete _fmask;
|
||||
delete _qmask;
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ce1200(int argc, char* argv[])
|
||||
{
|
||||
TForza_amm_movce fm;
|
||||
fm.run(argc, argv, "Forzatura ammortamento sui movimenti");
|
||||
return 0;
|
||||
}
|
||||
20
ce/ce1201a.h
Executable file
20
ce/ce1201a.h
Executable file
@ -0,0 +1,20 @@
|
||||
// per ce1201a.uml
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_INIZIO_ES 104
|
||||
#define F_FINE_ES 105
|
||||
#define F_SELECT 106
|
||||
#define F_GRUPPO 107
|
||||
#define F_SPECIE 108
|
||||
#define F_DESC_GRSP 109
|
||||
|
||||
#define F_IDCESPITE 111
|
||||
#define F_DESC_CES 112
|
||||
#define F_IDMOV 113
|
||||
#define F_DESC_MOV 123
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
167
ce/ce1201a.uml
Executable file
167
ce/ce1201a.uml
Executable file
@ -0,0 +1,167 @@
|
||||
#include "ce1201a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione Movimenti" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "AZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" 104@->D0
|
||||
DISPLAY "Fine esercizio" 104@->D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@60" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "È necessario specificare l'attività corrente"
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
DISPLAY "Cespite@10" IDCESPITE
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
OUTPUT F_IDCESPITE IDCESPITE
|
||||
OUTPUT F_DESC_CES DESC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_CES 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2
|
||||
INPUT DESC F_DESC_CES
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
COPY OUTPUT F_IDCESPITE
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_IDMOV 11
|
||||
BEGIN
|
||||
PROMPT 1 10 "Movimento "
|
||||
FLAGS "Z"
|
||||
USE LF_MOVCE SELECT (IDRET="")&&(ANSI(DTMOV)>=ANSI(#F_INIZIO_ES))&&(ANSI(DTMOV)<=ANSI(#F_FINE_ES))
|
||||
JOIN LF_CESPI INTO IDCESPITE==IDCESPITE
|
||||
INPUT IDMOV F_IDMOV
|
||||
DISPLAY "Movimento@11" IDMOV
|
||||
DISPLAY "Data mov.@10" DTMOV
|
||||
DISPLAY "Cod. tipo mov." CODMOV
|
||||
DISPLAY "Data doc.@10" DTDOC
|
||||
DISPLAY "Tipo doc." TPDOC
|
||||
DISPLAY "Numero doc." NDOC
|
||||
DISPLAY "Descrizione Movimento@50" DESC
|
||||
DISPLAY "Cespite@10" IDCESPITE
|
||||
DISPLAY "Impianto@10" LF_CESPI->CODIMP
|
||||
DISPLAY "Descrizione Cespite@50" LF_CESPI->DESC
|
||||
OUTPUT F_IDMOV IDMOV
|
||||
OUTPUT F_DESC_MOV DESC
|
||||
CHECKTYPE FORCED
|
||||
FIELD IDMOV
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_MOV 50
|
||||
BEGIN
|
||||
PROMPT 27 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
52
ce/ce1201b.h
Executable file
52
ce/ce1201b.h
Executable file
@ -0,0 +1,52 @@
|
||||
//campi maschera ce1201b.uml
|
||||
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_INIZIO_ES 104
|
||||
#define F_FINE_ES 105
|
||||
#define F_SITUAZIONE 106
|
||||
#define F_GRUPPO 107
|
||||
#define F_SPECIE 108
|
||||
#define F_DESC_GRSP 109
|
||||
#define F_DTMOV 110
|
||||
#define F_IDMOVIM 111
|
||||
#define F_CODMOV 112
|
||||
#define F_DESCMOV 113
|
||||
#define F_FORZATURA_Q_F 114
|
||||
#define F_FORZATURA_P_F 115
|
||||
#define F_FORZATURA_Q_C 116
|
||||
#define F_FORZATURA_P_C 117
|
||||
|
||||
#define F_IDCESPI 120
|
||||
#define F_DESC 121
|
||||
|
||||
#define F_AMMNOR_F 130
|
||||
#define F_AMMACC_F 131
|
||||
#define F_AMMANT_F 132
|
||||
#define F_AMMNOR_C 133
|
||||
#define F_AMMACC_C 134
|
||||
#define F_AMMANT_C 135
|
||||
#define F_QUOTE_PERSE 136
|
||||
#define F_PRIVATO 137
|
||||
#define F_QUOTE_PRIV 138
|
||||
#define F_P_AMMNOR_F 139
|
||||
#define F_P_AMMACC_F 140
|
||||
#define F_P_AMMANT_F 141
|
||||
#define F_P_AMMNOR_C 142
|
||||
#define F_P_AMMACC_C 143
|
||||
#define F_P_AMMANT_C 144
|
||||
|
||||
#define F_RIS_AMMNOR_F 145
|
||||
#define F_RIS_AMMACC_F 146
|
||||
#define F_RIS_AMMANT_F 147
|
||||
#define F_RIS_AMMNOR_C 148
|
||||
#define F_RIS_AMMACC_C 149
|
||||
#define F_RIS_AMMANT_C 150
|
||||
#define F_RIS_QUOTE_PERSE 151
|
||||
#define F_RIS_PRIVATO 152
|
||||
#define F_RIS_QUOTE_PRIV 153
|
||||
#define F_RESIDUO_F 154
|
||||
#define F_RESIDUO_C 155
|
||||
#define F_PLUSMINUS_F 156
|
||||
#define F_PLUSMINUS_C 157
|
||||
464
ce/ce1201b.uml
Executable file
464
ce/ce1201b.uml
Executable file
@ -0,0 +1,464 @@
|
||||
#include "ce1201b.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -2 0 2
|
||||
|
||||
BUTTON DLG_SAVEREC 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 "~Registra"
|
||||
MESSAGE EXIT,K_SAVE
|
||||
PICTURE BMP_SAVEREC
|
||||
PICTURE BMP_SAVERECDN
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 10 2
|
||||
BEGIN
|
||||
PROMPT -23 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Forzatura ammortamento sul movimento" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri movimento selezionato"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
FLAGS "D"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "DGZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "DZ"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_D"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPI 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Cespite "
|
||||
FLAGS "DZ"
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC 53
|
||||
BEGIN
|
||||
PROMPT 23 5 ""
|
||||
FLAGS "D"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPI
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_DTMOV
|
||||
BEGIN
|
||||
PROMPT 1 6 "Data Movimento "
|
||||
FLAGS "D"
|
||||
FIELD DTMOV
|
||||
END
|
||||
|
||||
NUMBER F_IDMOVIM 11
|
||||
BEGIN
|
||||
PROMPT 33 6 "N. Mov. "
|
||||
FLAGS "DZ"
|
||||
FIELD IDMOV
|
||||
END
|
||||
|
||||
STRING F_CODMOV 1
|
||||
BEGIN
|
||||
PROMPT 58 6 "Cod. Tipo "
|
||||
FLAGS "D"
|
||||
FIELD CODMOV
|
||||
END
|
||||
|
||||
STRING F_DESCMOV 63
|
||||
BEGIN
|
||||
PROMPT 1 7 "Descrizione "
|
||||
FLAGS "D"
|
||||
FIELD DESC
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 92 ""
|
||||
FLAGS "D"
|
||||
ITEM "1|1"
|
||||
FIELD 69@->TPAMM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 93 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD 77@->TPAMM
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 0 9 "@bSituazione"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SITUAZIONE 1 75
|
||||
BEGIN
|
||||
PROMPT 16 8 ""
|
||||
FLAGS "Z"
|
||||
ITEM "F|Fiscale" //group1 é quello fiscale, il group 2 quello civilistico
|
||||
MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "C|Civilistica"
|
||||
MESSAGE HIDE,1@|SHOW,2@
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 0 10 "@bForzatura"
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_Q_F
|
||||
BEGIN
|
||||
PROMPT 17 10 "Quote "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,3@
|
||||
MESSAGE TRUE ENABLE,3@|DISABLE,4@
|
||||
FIELD 69@->FZQUO
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_P_F
|
||||
BEGIN
|
||||
FLAGS "G"
|
||||
PROMPT 35 10 "Percentuale "
|
||||
MESSAGE FALSE DISABLE,4@
|
||||
MESSAGE TRUE ENABLE,4@|DISABLE,3@
|
||||
FIELD 69@->FZPER
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_Q_C
|
||||
BEGIN
|
||||
FLAGS "G"
|
||||
PROMPT 17 10 "Quote "
|
||||
MESSAGE FALSE DISABLE,5@
|
||||
MESSAGE TRUE ENABLE,5@|DISABLE,6@
|
||||
FIELD 77@->FZQUO
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BOOLEAN F_FORZATURA_P_C
|
||||
BEGIN
|
||||
PROMPT 35 10 "Percentuale "
|
||||
FLAGS "G"
|
||||
MESSAGE FALSE DISABLE,6@
|
||||
MESSAGE TRUE ENABLE,6@|DISABLE,5@
|
||||
FIELD 77@->FZPER
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
PROMPT 0 11 "@b Valori Forzati Valori Risultanti"
|
||||
END
|
||||
|
||||
CURRENCY F_AMMNOR_F 15
|
||||
BEGIN
|
||||
PROMPT 1 12 "Normale "
|
||||
FIELD 69@->QNOR
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMNOR_C 15
|
||||
BEGIN
|
||||
PROMPT 1 12 "Normale "
|
||||
FIELD 77@->QNOR
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
CURRENCY F_AMMACC_F 15
|
||||
BEGIN
|
||||
PROMPT 1 13 "Accelerato "
|
||||
FIELD 69@->QACC
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMACC_C 15
|
||||
BEGIN
|
||||
PROMPT 1 13 "Accelerato "
|
||||
FIELD 77@->QACC
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
CURRENCY F_AMMANT_F 15
|
||||
BEGIN
|
||||
PROMPT 1 14 "Anticipato "
|
||||
FIELD 69@->QANT
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
CURRENCY F_AMMANT_C 15
|
||||
BEGIN
|
||||
PROMPT 1 14 "Anticipato "
|
||||
FIELD 77@->QANT
|
||||
GROUP 2
|
||||
GROUP 5
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PERSE 15
|
||||
BEGIN
|
||||
PROMPT 1 15 "Quote perse "
|
||||
FIELD 69@->QPERSE
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_PRIVATO 15
|
||||
BEGIN
|
||||
PROMPT 1 16 "Privato "
|
||||
FIELD 69@->FPRIVATO
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_QUOTE_PRIV 15
|
||||
BEGIN
|
||||
PROMPT 1 17 "Quote per priv. "
|
||||
FIELD 69@->QPPRIVATE
|
||||
GROUP 1
|
||||
GROUP 3
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMNOR_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 12 ""
|
||||
FIELD 69@->PNOR
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMNOR_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 12 ""
|
||||
FIELD 77@->PNOR
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 42 12 "%"
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMACC_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 13 ""
|
||||
FIELD 69@->PACC
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMACC_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 13 ""
|
||||
FIELD 77@->PACC
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 42 13 "%"
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMANT_F 6 2
|
||||
BEGIN
|
||||
PROMPT 35 14 ""
|
||||
FIELD 69@->PANT
|
||||
GROUP 1
|
||||
GROUP 4
|
||||
END
|
||||
|
||||
NUMBER F_P_AMMANT_C 6 2
|
||||
BEGIN
|
||||
PROMPT 35 14 ""
|
||||
FIELD 77@->PANT
|
||||
GROUP 2
|
||||
GROUP 6
|
||||
END
|
||||
|
||||
TEXT -1
|
||||
BEGIN
|
||||
PROMPT 42 14 "%"
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMNOR_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 12 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMNOR_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 12 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMACC_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 13 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMACC_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 13 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMANT_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 14 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_AMMANT_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 14 ""
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_QUOTE_PERSE 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 15 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_PRIVATO 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 16 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RIS_QUOTE_PRIV 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 55 17 ""
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RESIDUO_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 31 19 "Residuo parti eliminate "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_RESIDUO_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 31 19 "Residuo parti eliminate "
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
CURRENCY F_PLUSMINUS_F 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 31 20 "Plusval./Minus. patrim. "
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
CURRENCY F_PLUSMINUS_C 15
|
||||
BEGIN
|
||||
FLAGS "D"
|
||||
PROMPT 31 20 "Plusval./Minus. patrim. "
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
481
ce/ce1300.cpp
Executable file
481
ce/ce1300.cpp
Executable file
@ -0,0 +1,481 @@
|
||||
#include <defmask.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ce1.h"
|
||||
#include "ce2101.h"
|
||||
#include "celib.h"
|
||||
|
||||
#include "ce1301a.h"
|
||||
//#include "ce1301b.h"
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
|
||||
#include "cespi.h"
|
||||
#include "salce.h"
|
||||
#include "ammce.h"
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------------------//
|
||||
//Maschera di selezione
|
||||
class TSelect_ammoces_qmask : public TAutomask
|
||||
{
|
||||
int _staat;
|
||||
real _residuof, _residuoc;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void on_search_event(TOperable_field& o);
|
||||
|
||||
int calcola_stato_attivita();
|
||||
bool cespite_ok() const;
|
||||
|
||||
public:
|
||||
int stato_attivita() const { return _staat; }
|
||||
real get_residuof() const { return _residuof; }
|
||||
real get_residuoc() const { return _residuoc; }
|
||||
void calc_res(bool prec);
|
||||
|
||||
TSelect_ammoces_qmask();
|
||||
};
|
||||
|
||||
void TSelect_ammoces_qmask::on_search_event(TOperable_field& o)
|
||||
{
|
||||
TToken_string order, fields, header;
|
||||
if (o.dlg() >= F_SEARCH3)
|
||||
{
|
||||
order.add(CESPI_STABILIM); header.add("Stabilimento");
|
||||
order.add(CESPI_REPARTO); header.add("Reparto@10");
|
||||
}
|
||||
if (o.dlg() >= F_SEARCH2)
|
||||
{
|
||||
order.add(CESPI_CODIMP); header.add("Impianto@10");
|
||||
}
|
||||
if (o.dlg() >= F_SEARCH1)
|
||||
{
|
||||
order.add(CESPI_CODCAT); header.add("Cat");
|
||||
order.add(CESPI_DTCOMP); header.add("Data Acq.@10");
|
||||
}
|
||||
|
||||
order.add(CESPI_IDCESPITE); header.add("Codice@10");
|
||||
|
||||
fields = order;
|
||||
fields.add(CESPI_DESC); header.add("Descrizione@50");
|
||||
|
||||
TRelation rel(LF_CESPI);
|
||||
|
||||
TString filter;
|
||||
if (!field(F_IMPIANTO).empty())
|
||||
filter << CESPI_CODIMP << "==" << get(F_IMPIANTO);
|
||||
|
||||
TSorted_cursor cur(&rel, order, filter);
|
||||
TCursor_sheet sht(&cur, fields, "Cespiti", header, 0, 1);
|
||||
if (sht.run() == K_ENTER)
|
||||
{
|
||||
TToken_string& row = sht.row();
|
||||
const int cod_pos = row.items()-2;
|
||||
set(F_IDCESPITE, row.get(cod_pos), TRUE);
|
||||
stop_run(K_AUTO_ENTER);
|
||||
}
|
||||
}
|
||||
|
||||
int TSelect_ammoces_qmask::calcola_stato_attivita()
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
const int gru = get_int(F_GRUPPO);
|
||||
const char* spe = get(F_SPECIE);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d%02d%-4s", ese, gru, spe);
|
||||
|
||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||
if (curr_ccb.get_bool("B1")) // Bollato stampato
|
||||
_staat = 1;
|
||||
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.set_attivita(ese, gru, spe);
|
||||
|
||||
return _staat;
|
||||
}
|
||||
|
||||
bool TSelect_ammoces_qmask::cespite_ok() const
|
||||
{
|
||||
TLocalisamfile cespi(LF_CESPI);
|
||||
cespi.put(CESPI_IDCESPITE, get(F_IDCESPITE));
|
||||
bool ok = cespi.read() == NOERR;
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TSelect_ammoces_qmask::calc_res(bool prec)
|
||||
{
|
||||
TCespite ces (get(F_IDCESPITE));
|
||||
// calcolo ammortamento sul cespite (per sit. fiscale(1) e civilistica(2))
|
||||
TDate fine_es = get(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
const TRectype& salce2=ces.sal_pro(); //rectype giá di "tipo fiscale"
|
||||
const TRectype& ammce2=ces.amm_pro();
|
||||
// determinazione del residuo fiscale
|
||||
_residuof = ZERO;
|
||||
_residuof = salce2.get_real(SALCE_CSTO)-salce2.get_real(SALCE_VNONAMM)+salce2.get_real(SALCE_RIV75)+salce2.get_real(SALCE_RIV83)+salce2.get_real(SALCE_RIV90)+salce2.get_real(SALCE_RIV91)+salce2.get_real(SALCE_RIVGF);
|
||||
_residuof -= ammce2.get_real(AMMCE_QNORP)+ammce2.get_real(AMMCE_QACCP)+ammce2.get_real(AMMCE_QANTP)+ammce2.get_real(AMMCE_QPERSEP)+ammce2.get_real(AMMCE_FPRIVATOP)+ammce2.get_real(AMMCE_QPPRIVATEP);
|
||||
if (!prec)
|
||||
_residuof -= ammce2.get_real(AMMCE_QNOR)+ammce2.get_real(AMMCE_QACC)+ammce2.get_real(AMMCE_QANT)+ammce2.get_real(AMMCE_QPERSE)+ammce2.get_real(AMMCE_FPRIVATO)+ammce2.get_real(AMMCE_QPPRIVATE);
|
||||
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
//rectype giá di "tipo civilistico"
|
||||
// determinazione del residuo civilistico
|
||||
_residuoc = ZERO;
|
||||
_residuoc = salce2.get_real(SALCE_CSTO)+salce2.get_real(SALCE_RIV75)+salce2.get_real(SALCE_RIV83)+salce2.get_real(SALCE_RIV90)+salce2.get_real(SALCE_RIV91)+salce2.get_real(SALCE_RIVGC);
|
||||
_residuoc -= ammce2.get_real(AMMCE_QNORP)+ammce2.get_real(AMMCE_QACCP)+ammce2.get_real(AMMCE_QANTP);
|
||||
if (!prec)
|
||||
_residuoc -= ammce2.get_real(AMMCE_QNOR)+ammce2.get_real(AMMCE_QACC)+ammce2.get_real(AMMCE_QANT);
|
||||
}
|
||||
|
||||
|
||||
bool TSelect_ammoces_qmask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_ESERCIZIO:
|
||||
if (e == fe_close)
|
||||
calcola_stato_attivita();
|
||||
break;
|
||||
|
||||
case F_SEARCH1:
|
||||
case F_SEARCH2:
|
||||
case F_SEARCH3:
|
||||
if (e == fe_button)
|
||||
on_search_event(o);
|
||||
break;
|
||||
|
||||
case F_IDCESPITE: //é come fare l'OR (F_IDCESPITE || F_IDCESPITE_I)
|
||||
case F_IDCESPITE_I:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (!cespite_ok())
|
||||
return error_box("Inserire un cespite valido"); //controlla che esista il cespite
|
||||
if (stato_attivita() == 1)
|
||||
warning_box("E' stato stampato il bollato dell'anno:\nnon sono permesse forzature"); //il bollato é stato stampato
|
||||
|
||||
|
||||
TLocalisamfile salce(LF_SALCE); // controlla che esista almeno un saldo
|
||||
salce.put(SALCE_IDCESPITE, get(F_IDCESPITE));
|
||||
salce.put(SALCE_CODES, get(F_ESERCIZIO));
|
||||
salce.put(SALCE_TPSALDO, 1);
|
||||
if (salce.read() != NOERR)
|
||||
return error_box("Non esistono saldi per l'anno selezionato");
|
||||
|
||||
TLocalisamfile ammce(LF_AMMCE); // controlla che esista almeno un ammortamento (sennó che forzamo?)
|
||||
ammce.put(AMMCE_IDCESPITE, get(F_IDCESPITE));
|
||||
ammce.put(AMMCE_CODES, get(F_ESERCIZIO));
|
||||
ammce.put(AMMCE_TPSALDO, 1);
|
||||
ammce.put(AMMCE_TPAMM, 1);
|
||||
if (ammce.read() != NOERR)
|
||||
return error_box("Non esistono ammortamenti per l'anno selezionato");
|
||||
|
||||
TCespite ces (get(F_IDCESPITE)); // controlla che la categoria del cespite sia ammortizzabile
|
||||
const TRectype& categoria = ces.categoria();
|
||||
bool non_ammortizzabile = categoria.get_bool("B0");
|
||||
if (non_ammortizzabile)
|
||||
return error_box("La categoria del cespite selezionato non é ammortizzabile");
|
||||
|
||||
calc_res(TRUE); // controllo dei residui fiscale e civilistico in ingresso (prec=TRUE)
|
||||
if (_residuof==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo fiscale da ammortizzare per il cespite");
|
||||
|
||||
if (_residuoc==ZERO)
|
||||
return error_box("Impossibile forzare ammortamento perché non esiste residuo civilistico da ammortizzare per il cespite");
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TSelect_ammoces_qmask::TSelect_ammoces_qmask() : TAutomask("ce1301a")
|
||||
{
|
||||
first_focus(F_IDCESPITE);
|
||||
}
|
||||
/*
|
||||
//-----------------------------------------------------------------------------------------------------------------------//
|
||||
//Maschera di selezione ammortamento sul cespite
|
||||
class TSelect_ammoces_smask : public TAutomask
|
||||
{
|
||||
TTipo_cespite _tipo;
|
||||
int _staat;
|
||||
real _residuof_ini,_residuoc_ini;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
void set_stato_attivita(int sa) { _staat = sa; }
|
||||
int stato_attivita() const { return _staat; }
|
||||
|
||||
void set_tipo_cespite(TTipo_cespite tc) { _tipo = tc; }
|
||||
TTipo_cespite tipo_cespite() const { return _tipo; }
|
||||
|
||||
void set_residuof_ini(const real& rfini) { _residuof_ini = rfini; }
|
||||
void set_residuoc_ini(const real& rcini) { _residuoc_ini = rcini; }
|
||||
|
||||
TSelect_ammoces_smask() : TAutomask("ce1301b") { }
|
||||
};
|
||||
|
||||
|
||||
bool TForce_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
bool ok = TRUE;
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CATEGORIA:
|
||||
ditta_cespiti().on_category_event(o, e, jolly);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_Q_F: //gestione reset dei vari checkbox di forzatura
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_F)=="X")
|
||||
reset(F_FORZATURA_P_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_F:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_F)=="X")
|
||||
reset(F_FORZATURA_Q_F);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_Q_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_P_C)=="X")
|
||||
reset(F_FORZATURA_P_C);
|
||||
break;
|
||||
|
||||
case F_FORZATURA_P_C:
|
||||
if (e==fe_modify && o.get()=="X" && get(F_FORZATURA_Q_C)=="X")
|
||||
reset(F_FORZATURA_Q_C);
|
||||
break;
|
||||
|
||||
case F_AMMNOR_F: // controlla che residuof sia < della somma dei campi quota fiscali (al variare di
|
||||
case F_AMMACC_F: // ognuno dei campi quota componenti, in modo che in caso di errore il campo sia
|
||||
case F_AMMANT_F: // subito identificato
|
||||
case F_QUOTE_PERSE:
|
||||
case F_PRIVATO:
|
||||
case F_QUOTE_PRIV:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
real sumf = get_real(F_AMMNOR_F)+get_real(F_AMMACC_F)+get_real(F_AMMANT_F)+get_real(F_QUOTE_PERSE)+get_real(F_PRIVATO)+get_real(F_QUOTE_PRIV);
|
||||
if (sumf > _residuof_ini)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo fiscale del cespite");
|
||||
}
|
||||
break;
|
||||
case F_AMMNOR_C: // controlla che residuoc sia < della somma dei campi quota civilistici
|
||||
case F_AMMACC_C:
|
||||
case F_AMMANT_C:
|
||||
if (e==fe_close||e==fe_modify)
|
||||
{
|
||||
real sumc = get_real(F_AMMNOR_C)+get_real(F_AMMACC_C)+get_real(F_AMMANT_C);
|
||||
if (sumc > _residuoc_ini)
|
||||
return error_box("Attenzione: l'ammortamento richiesto supera il residuo civilistico del cespite");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return ok;
|
||||
} */
|
||||
|
||||
//-----------------------------------------------------------------------------------------------------------------------//
|
||||
//Applicazione
|
||||
class TSelect_ammoces : public TRelation_application
|
||||
{
|
||||
TRelation* _ammce;
|
||||
|
||||
TSelect_ammoces_qmask* _qmask;
|
||||
// TSelect_ammoces_smask* _smask;
|
||||
|
||||
private:
|
||||
void protect_fields(TMask& m, TToken_string& enabling) const;
|
||||
void init_mask(TMask& m);
|
||||
void update_amm(const TMask& m);
|
||||
|
||||
protected:
|
||||
// @cmember Inizializzazione dei dati dell'utente
|
||||
virtual bool user_create();
|
||||
// @cmember Distruzione dei dati dell'utente
|
||||
virtual bool user_destroy();
|
||||
virtual bool changing_mask(int mode);
|
||||
// @cmember Richiede la maschera da usare
|
||||
virtual TMask* get_mask(int mode);
|
||||
// @cmember Ritorna la relazione da modificare
|
||||
virtual TRelation* get_relation() const;
|
||||
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
|
||||
};
|
||||
|
||||
bool TSelect_ammoces::changing_mask(int)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TMask* TSelect_ammoces::get_mask(int mode)
|
||||
{
|
||||
// return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_smask;
|
||||
return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_qmask;
|
||||
}
|
||||
|
||||
TRelation* TSelect_ammoces::get_relation() const
|
||||
{
|
||||
return _ammce;
|
||||
}
|
||||
|
||||
void TSelect_ammoces::init_query_mode(TMask& m)
|
||||
{
|
||||
ditta_cespiti().init_mask(m);
|
||||
}
|
||||
|
||||
void TSelect_ammoces::init_mask(TMask& m)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti(); //se il bollato dell'esercizio é stato stampato inibisce il REGISTRA
|
||||
dc.init_mask(m);
|
||||
const bool can_edit = !dc.bollato_stampato() ;
|
||||
m.enable(DLG_SAVEREC, can_edit);
|
||||
m.enable(DLG_DELREC, can_edit);
|
||||
|
||||
/* _smask->set_stato_attivita(_qmask->stato_attivita()); //copia lo stato attivitá della precedente
|
||||
|
||||
_qmask->calc_res(TRUE); //calcola residuo precedente (prec=TRUE)
|
||||
_smask->set_residuof_ini(_qmask->get_residuof()); //memorizza i residui precedenti nella maschera (non a video)
|
||||
_smask->set_residuoc_ini(_qmask->get_residuoc());
|
||||
|
||||
_qmask->calc_res(FALSE); // ricalcola il residuo fiscale e civilistico in forzatura (prec=FALSE)
|
||||
_smask->set(F_RESIDUO_F, _qmask->get_residuof()); //prende il residuo fiscale (civilistico) del cespite calcolato
|
||||
_smask->set(F_RESIDUO_C, _qmask->get_residuoc()); //nella maschera di selezione e lo mette nella maschera di forzatura
|
||||
*/}
|
||||
|
||||
|
||||
void TSelect_ammoces::protect_fields(TMask& m, TToken_string& enabling) const
|
||||
{
|
||||
for (int f = m.fields()-1; f >= 0; f--)
|
||||
{
|
||||
TMask_field& fld = m.fld(f);
|
||||
const short id = fld.dlg();
|
||||
if (id > 100 && id < 1000 && fld.is_editable() && fld.enabled_default())
|
||||
{
|
||||
const bool on = enabling.empty() || enabling.get_pos(fld.dlg()) >= 0;
|
||||
fld.enable(on);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TSelect_ammoces::init_modify_mode(TMask& m)
|
||||
{
|
||||
init_mask(m);
|
||||
|
||||
/* const bool accendiforzatura=_smask->stato_attivita()!=1;
|
||||
m.enable(F_FORZATURA_Q_F, accendiforzatura); //abilita i checks della forzatura quando il bollato NON é stampato
|
||||
m.enable(F_FORZATURA_P_F, accendiforzatura);
|
||||
m.enable(F_FORZATURA_Q_C, accendiforzatura);
|
||||
m.enable(F_FORZATURA_P_C, accendiforzatura);
|
||||
|
||||
if (accendiforzatura) //se lo stato attivitá lascia liberi di forzare, controlla se il tipocespite fa altrettanto...
|
||||
{
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
const TRectype& cac = ces.categoria();
|
||||
switch (ces.tipo())
|
||||
{
|
||||
case tc_immateriale:
|
||||
if (cac.get_int("I1")!=0)
|
||||
{
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
break;
|
||||
|
||||
case tc_pluriennale:
|
||||
if (cac.get_int("I2")==3)
|
||||
{
|
||||
m.disable(F_FORZATURA_P_F);
|
||||
m.disable(F_FORZATURA_P_C);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
// aggiornamento della colonna dei valori risultanti
|
||||
m.set(F_RIS_AMMNOR_F, m.get_real(F_AMMNOR_F));
|
||||
m.set(F_RIS_AMMACC_F, m.get_real(F_AMMACC_F));
|
||||
m.set(F_RIS_AMMANT_F, m.get_real(F_AMMANT_F));
|
||||
m.set(F_RIS_QUOTE_PERSE, m.get_real(F_QUOTE_PERSE));
|
||||
m.set(F_RIS_PRIVATO, m.get_real(F_PRIVATO));
|
||||
m.set(F_RIS_QUOTE_PRIV, m.get_real(F_QUOTE_PRIV));
|
||||
|
||||
m.set(F_RIS_AMMNOR_C, m.get_real(F_AMMNOR_C));
|
||||
m.set(F_RIS_AMMACC_C, m.get_real(F_AMMACC_C));
|
||||
m.set(F_RIS_AMMANT_C, m.get_real(F_AMMANT_C)); */
|
||||
}
|
||||
|
||||
// funzione per il ricalcolo degli ammortamenti dopo la forzatura
|
||||
void TSelect_ammoces::update_amm(const TMask& m)
|
||||
{
|
||||
TCespite ces(m.get(F_IDCESPITE));
|
||||
TDate fine_es = m.get_date(F_FINE_ES);
|
||||
ces.calc_amm(1, FALSE, fine_es);
|
||||
ces.calc_amm(2, FALSE, fine_es);
|
||||
}
|
||||
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura (in caso di prima forzatura)
|
||||
int TSelect_ammoces::write(const TMask& m)
|
||||
{
|
||||
int err = TRelation_application::write(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
//funzione per il ricalcolo automatico dei valori degli ammortamenti dopo la forzatura
|
||||
int TSelect_ammoces::rewrite(const TMask& m)
|
||||
{
|
||||
int err = TRelation_application::rewrite(m);
|
||||
if (err==NOERR)
|
||||
update_amm(m);
|
||||
return err;
|
||||
}
|
||||
|
||||
bool TSelect_ammoces::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_SALCE, LF_AMMCE, 0);
|
||||
_ammce = new TRelation (LF_AMMCE); // relazione principale su AMMCE
|
||||
TString expr;
|
||||
expr << "IDCESPITE==IDCESPITE|CODES==CODES|TPSALDO==TPSALDO|TPAMM==2"; //seconda relazione su AMMCE
|
||||
_ammce->add(LF_AMMCE, expr, 1, 0, 69); //69 é l'alias di AMMCE
|
||||
_ammce->write_enable(-69); //abilita la scrittura su secondo AMMCE
|
||||
_ammce->add(LF_CESPI, "IDCESPITE==IDCESPITE"); //estende la relazione con CESPI
|
||||
|
||||
_qmask = new TSelect_ammoces_qmask;
|
||||
// _smask = new TForce_mask;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TSelect_ammoces::user_destroy()
|
||||
{
|
||||
// delete _smask;
|
||||
delete _qmask;
|
||||
delete _ammce;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ce1300(int argc, char* argv[])
|
||||
{
|
||||
TSelect_ammoces a;
|
||||
a.run(argc, argv, "Scelta ammortamento per cespite");
|
||||
return 0;
|
||||
}
|
||||
|
||||
23
ce/ce1301a.h
Executable file
23
ce/ce1301a.h
Executable file
@ -0,0 +1,23 @@
|
||||
//campi maschera ce1301a.uml
|
||||
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_INIZIO_ES 104
|
||||
#define F_FINE_ES 105
|
||||
#define F_SELECT 106
|
||||
#define F_GRUPPO 107
|
||||
#define F_SPECIE 108
|
||||
#define F_DESC_GRSP 109
|
||||
#define F_IMPIANTO 112
|
||||
#define F_DESC_IMP 113
|
||||
|
||||
#define F_SEARCH1 117
|
||||
#define F_SEARCH2 118
|
||||
#define F_SEARCH3 119
|
||||
|
||||
#define F_IDCESPITE 120
|
||||
#define F_DESC 121
|
||||
#define F_IDCESPITE_I 122
|
||||
#define F_DESC_I 123
|
||||
|
||||
250
ce/ce1301a.uml
Executable file
250
ce/ce1301a.uml
Executable file
@ -0,0 +1,250 @@
|
||||
#include "ce1301a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione cespiti" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 6
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "AZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" 104@->D0
|
||||
DISPLAY "Fine esercizio" 104@->D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
FIELD CODES
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
RADIOBUTTON F_SELECT 1 75
|
||||
BEGIN
|
||||
PROMPT 1 3 ""
|
||||
FLAGS "Z"
|
||||
ITEM "A|Attività"
|
||||
MESSAGE SHOW,1@|HIDE,2@
|
||||
ITEM "I|Impianto"
|
||||
MESSAGE SHOW,2@|HIDE,1@
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Gruppo "
|
||||
FLAGS "Z"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 5 "Specie "
|
||||
FLAGS "_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 5 ""
|
||||
FLAGS "D"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_IMPIANTO 10
|
||||
BEGIN
|
||||
PROMPT 1 5 "Impianto "
|
||||
FLAGS "Z"
|
||||
USE CIM
|
||||
INPUT CODTAB F_IMPIANTO
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_IMPIANTO CODTAB
|
||||
OUTPUT F_DESC_IMP S0
|
||||
CHECKTYPE FORCED
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DESC_IMP 50 45
|
||||
BEGIN
|
||||
PROMPT 26 5 ""
|
||||
FLAGS "Z"
|
||||
USE CIM KEY 2
|
||||
INPUT S0 F_DESC_IMP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
COPY OUTPUT F_IMPIANTO
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
OUTPUT F_IDCESPITE IDCESPITE
|
||||
OUTPUT F_DESC DESC
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESC 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT (CODCGRA=#F_GRUPPO)&&(CODSPA=#F_SPECIE)
|
||||
INPUT DESC F_DESC
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
COPY OUTPUT F_IDCESPITE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD DESC
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE_I 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT IDCESPITE F_IDCESPITE_I
|
||||
COPY DISPLAY F_IDCESPITE
|
||||
OUTPUT F_IDCESPITE_I IDCESPITE
|
||||
OUTPUT F_DESC_I DESC
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_IDCESPITE
|
||||
FIELD IDCESPITE
|
||||
KEY 1
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
STRING F_DESC_I 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2 SELECT CODIMP=#F_IMPIANTO
|
||||
INPUT DESC F_DESC_I
|
||||
COPY DISPLAY F_DESC
|
||||
COPY OUTPUT F_IDCESPITE_I
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_DESC
|
||||
FIELD DESC
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 90 ""
|
||||
FLAGS "D"
|
||||
ITEM "2|2"
|
||||
FIELD TPSALDO
|
||||
KEY 1
|
||||
END
|
||||
|
||||
LIST DLG_NULL 1
|
||||
BEGIN
|
||||
PROMPT 1 91 ""
|
||||
FLAGS "D"
|
||||
ITEM "1|1"
|
||||
FIELD TPAMM
|
||||
KEY 1
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 15 "@bRicerce alternative"
|
||||
END
|
||||
|
||||
BUTTON F_SEARCH1 22 2
|
||||
BEGIN
|
||||
PROMPT 2 16 "Per categoria"
|
||||
END
|
||||
|
||||
BUTTON F_SEARCH2 22 2
|
||||
BEGIN
|
||||
PROMPT 28 16 "Per impianto"
|
||||
END
|
||||
|
||||
BUTTON F_SEARCH3 22 2
|
||||
BEGIN
|
||||
PROMPT 54 16 "Per stabilimento"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
903
ce/ce1500.cpp
Executable file
903
ce/ce1500.cpp
Executable file
@ -0,0 +1,903 @@
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <recarray.h>
|
||||
#include <relapp.h>
|
||||
#include <sheet.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "ce1.h"
|
||||
#include "ce1500a.h"
|
||||
#include "ce2101.h"
|
||||
#include "celib.h"
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
#include <causali.h>
|
||||
#include <mov.h>
|
||||
#include <pconti.h>
|
||||
#include <rmov.h>
|
||||
|
||||
#include "ammce.h"
|
||||
#include "ammmv.h"
|
||||
#include "cespi.h"
|
||||
#include "movce.h"
|
||||
#include "salce.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di selezione
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TMov_qmask;
|
||||
class TMov_emask;
|
||||
|
||||
class TMovicespi : public TRelation_application
|
||||
{
|
||||
TRelation* _rel;
|
||||
TMov_qmask* _qmask;
|
||||
TMov_emask* _emask;
|
||||
TFilename _prima_nota;
|
||||
int _cg_line;
|
||||
|
||||
private:
|
||||
void kill_mov(const TString& idcespite, const TString& idmov, int lfile);
|
||||
void kill_rett(const TString& id, const TString& idmov);
|
||||
|
||||
protected:
|
||||
virtual bool changing_mask(int mode) { return TRUE; }
|
||||
virtual TMask* get_mask(int mode);
|
||||
virtual TRelation* get_relation() const { return _rel; }
|
||||
virtual const char* get_next_key();
|
||||
virtual bool protected_record(TRelation &r);
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual void init_modify_mode(TMask& m);
|
||||
|
||||
virtual bool remove();
|
||||
|
||||
public:
|
||||
int tipo_cr(int gruppo, int conto, long sottoconto) const;
|
||||
void cg_mode();
|
||||
bool select_mov(long numreg, TString& idmov) const;
|
||||
int init_mask(TMask& m);
|
||||
|
||||
void save_if_dirty() { save(TRUE); }
|
||||
};
|
||||
|
||||
TMovicespi& app() { return (TMovicespi&)main_app(); }
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera di selezione
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TMov_qmask : public TAutomask
|
||||
{
|
||||
int _staat;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
int calcola_stato_attivita();
|
||||
|
||||
public:
|
||||
int stato_attivita() const { return _staat; }
|
||||
TMov_qmask();
|
||||
};
|
||||
|
||||
int TMov_qmask::calcola_stato_attivita()
|
||||
{
|
||||
const int ese = get_int(F_ESERCIZIO);
|
||||
const int gru = get_int(F_GRUPPO);
|
||||
const char* spe = get(F_SPECIE);
|
||||
|
||||
TString16 str;
|
||||
str.format("%04d%02d%-4s", ese, gru, spe);
|
||||
|
||||
const TRectype& curr_ccb = cache().get("CCB", str);
|
||||
if (curr_ccb.get_bool("B1")) // Bollato stampato
|
||||
_staat = 3;
|
||||
else
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
str.format("%04d%02d%-4s", esc.pred(ese), gru, spe);
|
||||
const TRectype& prev_ccb = cache().get("CCB", str);
|
||||
_staat = prev_ccb.get_bool("B1") ? 2 : 1;
|
||||
}
|
||||
|
||||
ditta_cespiti().set_attivita(ese, gru, spe);
|
||||
return _staat;
|
||||
}
|
||||
|
||||
bool TMov_qmask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_ESERCIZIO:
|
||||
case F_GRUPPO:
|
||||
case F_SPECIE:
|
||||
calcola_stato_attivita();
|
||||
enable(DLG_NEWREC, _staat != 3);
|
||||
break;
|
||||
case F_IMPIANTO:
|
||||
case F_IDCESPITE:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
const TString& ces = get(F_IDCESPITE);
|
||||
const TString& imp = get(F_IMPIANTO);
|
||||
const bool cesok = !real::is_null(ces);
|
||||
const bool impok = !real::is_null(imp);
|
||||
TString80 filter;
|
||||
if (cesok)
|
||||
filter << MOVCE_IDCESPITE << "==\"" << ces << '"';
|
||||
if (impok)
|
||||
{
|
||||
if (cesok)
|
||||
filter << ")&&(";
|
||||
filter << LF_CESPI << "->" << CESPI_CODIMP << "==\"" << imp << '"';
|
||||
if (cesok)
|
||||
{
|
||||
filter << ')';
|
||||
filter.insert("(", 0);
|
||||
}
|
||||
}
|
||||
TEdit_field& m = efield(F_IDMOV);
|
||||
m.browse()->set_filter(filter);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TMov_qmask::TMov_qmask() : TAutomask("ce1500a")
|
||||
{
|
||||
first_focus(F_IDMOV);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TMov_emask : public TAutomask
|
||||
{
|
||||
int _staat;
|
||||
TCespite _cespite;
|
||||
TString _s5;
|
||||
|
||||
private:
|
||||
void set_inputability(short id, char flag);
|
||||
void set_inputability(const short* id, char flag);
|
||||
bool test_inputability(const short* id, char flag);
|
||||
void set_fondi_inputability();
|
||||
|
||||
real calc_riv(const TRectype& salpro, int tipo) const;
|
||||
void calc_amm(int tipo);
|
||||
|
||||
bool cespite_nuovo() const;
|
||||
TCurrency sum_fields(const short* f) const;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual bool on_key(KEY k);
|
||||
|
||||
public:
|
||||
void set_stato_attivita(int s) { _staat = s; }
|
||||
TMov_emask();
|
||||
};
|
||||
|
||||
// Determina se siamo in presenza di un cespite nuovo
|
||||
bool TMov_emask::cespite_nuovo() const
|
||||
{
|
||||
const TDate dtacq = _cespite.get(CESPI_DTCOMP);
|
||||
const TDate dtmov = get(F_DTMOV);
|
||||
return !dtacq.ok() || dtacq >= dtmov;
|
||||
}
|
||||
|
||||
TCurrency TMov_emask::sum_fields(const short* f) const
|
||||
{
|
||||
TCurrency sum, val;
|
||||
for (int i = 0; f[i] != 0; i++)
|
||||
{
|
||||
get_currency(abs(f[i]), val);
|
||||
if (f[i] > 0)
|
||||
sum += val;
|
||||
else
|
||||
sum -= val;
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
void TMov_emask::set_inputability(short id, char flag)
|
||||
{
|
||||
TMask_field& f = field(id);
|
||||
if (flag=='S' || flag=='O')
|
||||
f.enable();
|
||||
else
|
||||
{
|
||||
f.reset();
|
||||
f.disable();
|
||||
}
|
||||
f.check_type(flag=='O' ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
}
|
||||
|
||||
void TMov_emask::set_inputability(const short* id, char flag)
|
||||
{
|
||||
if (flag == 'O')
|
||||
flag = 'S';
|
||||
for (; *id > 0; id++)
|
||||
set_inputability(*id, flag);
|
||||
}
|
||||
|
||||
bool TMov_emask::test_inputability(const short* id, char flag)
|
||||
{
|
||||
bool ok = flag != 'O';
|
||||
if (!ok)
|
||||
{
|
||||
for (int i = 0; id[i] > 0; i++)
|
||||
{
|
||||
if (!field(id[i]).empty())
|
||||
{
|
||||
ok = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!ok)
|
||||
error_box("E' necessario specificare almeno uno dei valori previsti dal tipo movimento");
|
||||
return ok;
|
||||
}
|
||||
|
||||
HIDDEN const short doc_ids[] = { F_TPDOC, F_NDOC, F_DTDOC, 0 };
|
||||
HIDDEN const short riv_ids[] = { F_RIV75, F_RIV83, F_RIV90, F_RIV91, 0 };
|
||||
HIDDEN const short fis_ids[] = { F_NORMALE, F_ACCELERATO, F_ANTICIPATO, 0 };
|
||||
HIDDEN const short civ_ids[] = { F_NORMALE2, F_ACCELERATO2, F_ANTICIPATO2, 0 };
|
||||
HIDDEN const short prv_ids[] = { F_FPRIVATO, F_QPERSEPRIV, 0 };
|
||||
|
||||
bool TMov_emask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_CODMOV:
|
||||
if ((e == fe_modify || e == fe_init))
|
||||
{
|
||||
const TRectype& tpmov = cache().get("%TMC", o.get());
|
||||
const bool insert_rett = tpmov.get_int("I0") == 2 && insert_mode();
|
||||
enable(F_IDRET, insert_rett);
|
||||
if (insert_rett)
|
||||
{
|
||||
TString filter; // Filtro su movimenti rettificabili
|
||||
filter << '(' << MOVCE_CODMOV << "=\"" << tpmov.get("S8") << "\")";
|
||||
filter << "&&(ANSI(" << MOVCE_DTMOV << ")>=" << get_date(F_INIZIO_ES).string(ANSI) << ')';
|
||||
filter << "&&(ANSI(" << MOVCE_DTMOV << ")<=" << get_date(F_FINE_ES).string(ANSI) << ')';
|
||||
efield(F_IDRET).browse()->set_filter(filter);
|
||||
}
|
||||
_s5 = tpmov.get("S5");
|
||||
if (_s5.empty())
|
||||
_s5.spaces(16);
|
||||
set_inputability(doc_ids, _s5[0]);
|
||||
set_inputability(F_IMPVEN, _s5[2]);
|
||||
set_inputability(F_ELEMENTI, _s5[3]);
|
||||
set_inputability(F_COSTO, _s5[4]);
|
||||
set_inputability(F_VNONAMM, _s5[5]);
|
||||
set_inputability(F_PLUSREIN, _s5[6]);
|
||||
set_inputability(riv_ids, _s5[7]);
|
||||
set_inputability(F_RIVGF, _s5[8]);
|
||||
set_inputability(F_RIVGC, _s5[9]);
|
||||
// Determina segni possibili
|
||||
switch (tpmov.get_char("S7"))
|
||||
{
|
||||
case '+': disable(F_SEGNO); set(F_SEGNO, "+"); break;
|
||||
case '-': disable(F_SEGNO); set(F_SEGNO, "-"); break;
|
||||
default : enable(F_SEGNO); break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_IDRET:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TString16 ces;
|
||||
if (!o.empty())
|
||||
{
|
||||
TEdit_field& e = (TEdit_field&)o;
|
||||
ces = e.browse()->cursor()->curr().get(MOVCE_IDCESPITE);
|
||||
TEdit_field& c = efield(F_IDCESPITE);
|
||||
c.set(ces);
|
||||
c.check();
|
||||
}
|
||||
enable(F_IDCESPITE, ces.empty()); // Dis/abilita codice cespite
|
||||
enable(F_DESC_CES, ces.empty()); // Dis/abilita descrizione cespite
|
||||
}
|
||||
break;
|
||||
case F_IDCESPITE:
|
||||
if (e == fe_init || e == fe_modify || e == fe_close)
|
||||
{
|
||||
const TString& id = o.get();
|
||||
if (_cespite.get(CESPI_IDCESPITE) != id)
|
||||
_cespite.read(id);
|
||||
enable_page(3, id.not_empty());
|
||||
if (id.not_empty())
|
||||
{
|
||||
const TRectype& cat = _cespite.categoria();
|
||||
set(F_CATEGORIA, _cespite.get(CESPI_CODCAT), TRUE);
|
||||
set(F_DESC_CAT, cat.get("S0"), TRUE);
|
||||
if (o.enabled())
|
||||
{
|
||||
const TRectype& tpmov = cache().get("%TMC", get(F_CODMOV));
|
||||
switch (_cespite.tipo())
|
||||
{
|
||||
case tc_immateriale:
|
||||
if (!tpmov.get_bool("B1"))
|
||||
return error_box("Movimento non applicabile a beni immateriali");
|
||||
break;
|
||||
case tc_pluriennale:
|
||||
if (!tpmov.get_bool("B2"))
|
||||
return error_box("Movimento non applicabile a costi pluriennali");
|
||||
break;
|
||||
default:
|
||||
if (!tpmov.get_bool("B0"))
|
||||
return error_box("Movimento non applicabile a beni materiali");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
reset(F_CATEGORIA);
|
||||
reset(F_DESC_CAT);
|
||||
}
|
||||
const TDate dtcomp = _cespite.get(CESPI_DTCOMP);
|
||||
if (dtcomp.ok())
|
||||
{
|
||||
const TDate dtmov = get(F_DTMOV);
|
||||
if (dtcomp > dtmov)
|
||||
return error_box("La data di acquisizione del cespite non può precedere quella del movimento");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_DTMOV:
|
||||
if (e == fe_init || e == fe_modify || e == fe_close)
|
||||
{
|
||||
TEdit_field& dd = efield(F_DTDOC);
|
||||
if (dd.required() && dd.empty())
|
||||
dd.set(o.get());
|
||||
|
||||
const TDate dtret = get(F_DTMOV_RET);
|
||||
if (dtret.ok())
|
||||
{
|
||||
const TDate dtmov = o.get();
|
||||
if (dtmov < dtret)
|
||||
return error_box("La data del movimento di rettifica deve seguire la data del movimento rettificato");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_TPDOC:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TArray_sheet sci(3, 3, -3, -3, o.prompt(), "Tipo|Descrizione@20");
|
||||
sci.add("FA|Fattura d'acquisto");
|
||||
sci.add("FV|Fattura di vendita");
|
||||
sci.add("NC|Nota di credito");
|
||||
sci.add("ND|Nota di debito");
|
||||
if (sci.run() == K_ENTER)
|
||||
{
|
||||
TToken_string& str = sci.row(-1);
|
||||
o.set(str.get(0));
|
||||
}
|
||||
}
|
||||
if (e == fe_close)
|
||||
return test_inputability(doc_ids, _s5[0]);
|
||||
break;
|
||||
case F_RIV75:
|
||||
if (e == fe_close)
|
||||
return test_inputability(riv_ids, _s5[7]);
|
||||
break;
|
||||
case F_ELEMENTI:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
if (o.empty() && cespite_nuovo())
|
||||
return error_box("È necessario inserire il numero di elementi del nuovo cespite");
|
||||
}
|
||||
break;
|
||||
case F_VNONAMM:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
TCurrency csto, vnon;
|
||||
get_currency(F_COSTO, csto);
|
||||
get_currency(F_VNONAMM, vnon);
|
||||
if (vnon > csto)
|
||||
return error_box("Il valore non ammortizzabile non puo' superare %s", csto.string(TRUE));
|
||||
}
|
||||
break;
|
||||
case F_PLUSREIN:
|
||||
if (e == fe_modify || e == fe_close)
|
||||
{
|
||||
TCurrency csto, vnon, plus;
|
||||
get_currency(F_COSTO, csto);
|
||||
get_currency(F_VNONAMM, vnon);
|
||||
get_currency(F_PLUSREIN, plus);
|
||||
const TCurrency val = csto-vnon;
|
||||
if (plus > val)
|
||||
return error_box("La plusvalenza reinvestita non puo' superare %s", val.string(TRUE));
|
||||
}
|
||||
break;
|
||||
case F_NORMALE:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (!test_inputability(fis_ids, _s5[10]))
|
||||
return FALSE;
|
||||
const short fv[] = { F_COSTO, -F_VNONAMM, F_RIV75, F_RIV83, F_RIV90, F_RIV91, F_RIVGF, 0 };
|
||||
const short fa[] = { F_NORMALE, F_ACCELERATO, F_ANTICIPATO, F_QPERSE, F_FPRIVATO, F_QPERSEPRIV, 0 };
|
||||
const TCurrency val_amm = sum_fields(fv);
|
||||
const TCurrency fon_amm = sum_fields(fa);
|
||||
if (fon_amm > val_amm)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Il fondo ammortamento fiscale (" << fon_amm.string(TRUE) << ')';
|
||||
msg << "non puo' superare il valore da ammortizzare (" << val_amm.string(TRUE) << ')';
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_NORMALE2:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (!test_inputability(civ_ids, _s5[11]))
|
||||
return FALSE;
|
||||
const short fv[] = { F_COSTO, F_RIV75, F_RIV83, F_RIV90, F_RIV91, F_RIVGC, 0 };
|
||||
const short fa[] = { F_NORMALE2, F_ACCELERATO2, F_ANTICIPATO2, 0 };
|
||||
const TCurrency val_amm = sum_fields(fv);
|
||||
const TCurrency fon_amm = sum_fields(fa);
|
||||
if (fon_amm > val_amm)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Il fondo ammortamento civilistico (" << fon_amm.string(TRUE) << ')';
|
||||
msg << "non puo' superare il valore da ammortizzare (" << val_amm.string(TRUE) << ')';
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case S_TIPO:
|
||||
if (e == fe_modify)
|
||||
calc_amm(atoi(o.get()));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
real TMov_emask::calc_riv(const TRectype& salpro, int tipo) const
|
||||
{
|
||||
const char* riv_ids[] = { SALCE_RIV75, SALCE_RIV83, SALCE_RIV90, SALCE_RIV91, NULL };
|
||||
real riv;
|
||||
for (int i = 0; riv_ids[i]; i++)
|
||||
riv += salpro.get_real(riv_ids[i]);
|
||||
if (tipo == 2)
|
||||
riv += salpro.get_real(SALCE_RIVGC);
|
||||
else
|
||||
riv += salpro.get_real(SALCE_RIVGF);
|
||||
return riv;
|
||||
}
|
||||
|
||||
void TMov_emask::calc_amm(int tipo)
|
||||
{
|
||||
const TDate dtlim = get(F_DTMOV);
|
||||
_cespite.calc_amm(tipo, FALSE, dtlim);
|
||||
set(S_DATAMOV, dtlim);
|
||||
|
||||
const TRectype& s = _cespite.sal_pro();
|
||||
set(S_ELEMENTI, s.get(SALCE_NUMELE));
|
||||
set(S_COSTO, s.get_real(SALCE_CSTO));
|
||||
set(S_VNONAMM, s.get(SALCE_VNONAMM));
|
||||
set(S_PLUSREIN, s.get(SALCE_PLUSREIN));
|
||||
set(S_TOTRIV, calc_riv(s, tipo));
|
||||
real tot_val;
|
||||
tot_val += get_real(S_COSTO); tot_val -= get_real(S_VNONAMM);
|
||||
tot_val -= get_real(S_PLUSREIN); tot_val += get_real(S_TOTRIV);
|
||||
set(S_TOTVAL, tot_val);
|
||||
|
||||
const TRectype& a = _cespite.amm_pro();
|
||||
set(S_NORMALE, a.get(AMMCE_QNOR));
|
||||
set(S_ACCELERATO, a.get(AMMCE_QACC));
|
||||
set(S_ANTICIPATO, a.get(AMMCE_QANT));
|
||||
set(S_QPERSE, a.get(AMMCE_QPERSE));
|
||||
set(S_FPRIVATO, a.get(AMMCE_FPRIVATO));
|
||||
set(S_QPERSEP, a.get(AMMCE_QPERSEP));
|
||||
real tot_fon;
|
||||
tot_fon += get_real(S_NORMALE); tot_fon += get_real(S_ACCELERATO);
|
||||
tot_fon += get_real(S_ANTICIPATO); tot_fon += get_real(S_QPERSE);
|
||||
tot_fon += get_real(S_FPRIVATO); tot_fon += get_real(S_QPERSEP);
|
||||
set(S_TOTFON, tot_fon);
|
||||
|
||||
const real tot_res = tot_val-tot_fon;
|
||||
set(S_RESIDUO, tot_res);
|
||||
|
||||
TString key;
|
||||
key << get(F_IDCESPITE) << '|' << get(F_IDMOV) << '|' << tipo;
|
||||
const TRectype& ammmv = cache().get(LF_AMMMV, key);
|
||||
set(S_PLUS, ammmv.get(AMMMV_PLUS));
|
||||
set(S_MINUS, ammmv.get(AMMMV_MINUS));
|
||||
}
|
||||
|
||||
void TMov_emask::set_fondi_inputability()
|
||||
{
|
||||
if (cespite_nuovo())
|
||||
{
|
||||
// Disabilito tutti i campi della pagina per i nuovi cespiti
|
||||
set_inputability(fis_ids, ' ');
|
||||
set_inputability(civ_ids, ' ');
|
||||
set_inputability(F_QPERSE, ' ');
|
||||
set_inputability(prv_ids, ' ');
|
||||
}
|
||||
else
|
||||
{
|
||||
set_inputability(fis_ids, _s5[10]);
|
||||
set_inputability(civ_ids, _s5[11]);
|
||||
set_inputability(F_QPERSE, _s5[12]);
|
||||
|
||||
bool should_be_on = _s5[10] == 'S' || _s5[10] == 'O'; // Test preliminare basato su %TMC
|
||||
if (should_be_on)
|
||||
should_be_on = _cespite.get_int(CESPI_USOPROM) > 1; // Test aggiuntivo su uso promiscuo
|
||||
set_inputability(prv_ids, should_be_on ? _s5[10] : ' '); // Dis/abilita fondo privato e quote perse private
|
||||
}
|
||||
}
|
||||
|
||||
bool TMov_emask::on_key(KEY k)
|
||||
{
|
||||
// Try to predict next page!
|
||||
const int old_page = curr_page()+1;
|
||||
int new_page = old_page;
|
||||
switch (k)
|
||||
{
|
||||
case K_CTRL+K_F1: new_page = 1; break;
|
||||
case K_CTRL+K_F2: new_page = 2; break;
|
||||
case K_CTRL+K_F3: new_page = 3; break;
|
||||
case K_CTRL+K_F4: new_page = 4; break;
|
||||
case K_PREV : new_page--; break;
|
||||
case K_NEXT : new_page++; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
// If page will change ...
|
||||
if (old_page != new_page) switch(new_page)
|
||||
{
|
||||
case 3:
|
||||
set_fondi_inputability();
|
||||
break;
|
||||
case 4:
|
||||
if (dirty() < S_TIPO)
|
||||
{
|
||||
app().save_if_dirty();
|
||||
for (int f = fields()-1; f >= 0; f--)
|
||||
{
|
||||
TMask_field& c = fld(f);
|
||||
c.set_dirty(FALSE);
|
||||
}
|
||||
}
|
||||
set(S_TIPO, 1, TRUE);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return TAutomask::on_key(k);
|
||||
}
|
||||
|
||||
TMov_emask::TMov_emask() : TAutomask("ce1500b")
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Applicazione principale
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TMask* TMovicespi::get_mask(int mode)
|
||||
{
|
||||
return mode == MODE_QUERY ? (TMask*)_qmask : (TMask*)_emask;
|
||||
}
|
||||
|
||||
bool TMovicespi::user_create()
|
||||
{
|
||||
open_files(LF_TAB, LF_TABCOM, LF_CESPI, LF_AMMCE, LF_SALCE, LF_MOVCE, LF_MOVAM, LF_AMMMV, 0);
|
||||
|
||||
_rel = new TRelation(LF_MOVCE);
|
||||
_rel->add(LF_MOVAM, "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==1");
|
||||
_rel->add(LF_MOVAM, "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==2", 1, 0, 2);
|
||||
_rel->add(LF_MOVAM, "IDCESPITE==IDCESPITE|IDMOV==IDMOV|TPAMM==3", 1, 0, 3);
|
||||
_rel->write_enable();
|
||||
|
||||
_qmask = new TMov_qmask;
|
||||
_emask = new TMov_emask;
|
||||
|
||||
// Collegamento da prima nota
|
||||
if (argc() > 2 && strncmp(argv(2), "/c", 2) == 0)
|
||||
{
|
||||
_prima_nota = argv(2);
|
||||
_prima_nota.ltrim(2);
|
||||
_cg_line = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
_prima_nota.cut(0);
|
||||
_cg_line = 0;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TMovicespi::user_destroy()
|
||||
{
|
||||
delete _emask;
|
||||
delete _qmask;
|
||||
delete _rel;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
const char* TMovicespi::get_next_key()
|
||||
{
|
||||
real num = 1;
|
||||
TLocalisamfile& cespi = _rel->lfile(LF_MOVCE);
|
||||
if (cespi.last() == NOERR)
|
||||
num = cespi.get_real(MOVCE_IDMOV) + 1;
|
||||
return format("%d|%s", F_IDMOV, num.string());
|
||||
}
|
||||
|
||||
bool TMovicespi::protected_record(TRelation &r)
|
||||
{
|
||||
bool stampato = r.curr().get_bool(MOVCE_STAMPATO);
|
||||
return stampato;
|
||||
}
|
||||
|
||||
int TMovicespi::tipo_cr(int gruppo, int conto, long sottoconto) const
|
||||
{
|
||||
TString16 str;
|
||||
str.format("%d|%d|%ld", gruppo, conto, sottoconto);
|
||||
const TRectype& pcon = cache().get(LF_PCON, str);
|
||||
const int t = pcon.get_int(PCN_TIPOSPRIC);
|
||||
return t;
|
||||
}
|
||||
|
||||
bool TMovicespi::select_mov(long numreg, TString& idmov) const
|
||||
{
|
||||
TRelation rel(LF_MOVCE);
|
||||
TString filter; filter << MOV_NUMREG << "==" << numreg;
|
||||
TCursor cur(&rel, filter, 3);
|
||||
long items = cur.items();
|
||||
if (items == 0L)
|
||||
{
|
||||
cur.setkey(1);
|
||||
cur.setfilter("");
|
||||
items = cur.items();
|
||||
}
|
||||
bool ok = items > 0;
|
||||
if (ok)
|
||||
{
|
||||
long selected = 0;
|
||||
if (items > 1)
|
||||
{
|
||||
TCursor_sheet sheet(&cur, "NUMREG|IDMOV|DTMOV|DESC", "Movimenti cespiti",
|
||||
"Registazione|Movimento@11|Data@10|Descrizione Movimento@50", 0, 1);
|
||||
ok = sheet.run() == K_ENTER;
|
||||
if (ok)
|
||||
selected = sheet.selected();
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
cur = selected;
|
||||
idmov = cur.curr().get(MOVCE_IDMOV);
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
void TMovicespi::cg_mode()
|
||||
{
|
||||
TConfig ini(_prima_nota, "Transaction");
|
||||
char action = ini.get("Action")[0];
|
||||
|
||||
TString8 para;
|
||||
para.format("%d", LF_MOV);
|
||||
ini.set_paragraph(para);
|
||||
|
||||
// Al primo inserimento devo impostare anche l'anno e l'attività
|
||||
if (_cg_line == 1 && action == 'I')
|
||||
{
|
||||
_qmask->set(F_ESERCIZIO, ini.get(MOV_ANNOES), TRUE);
|
||||
if (!_qmask->efield(F_SPECIE).on_key(K_F9))
|
||||
action = ' ';
|
||||
}
|
||||
|
||||
if (action == 'I')
|
||||
{
|
||||
for (int i = _cg_line; ; i++)
|
||||
{
|
||||
para.format("%d,%d", LF_RMOV, i);
|
||||
if (ini.set_paragraph(para))
|
||||
{
|
||||
const int gruppo = ini.get_int(RMV_GRUPPO);
|
||||
const int conto = ini.get_int(RMV_CONTO);
|
||||
const int sottoconto = ini.get_int(RMV_SOTTOCONTO);
|
||||
const int tipo = tipo_cr(gruppo, conto, sottoconto);
|
||||
if (tipo == 2 || tipo == 3 || tipo == 4 || tipo == 8)
|
||||
{
|
||||
_cg_line = i;
|
||||
_qmask->send_key(K_SPACE, DLG_NEWREC);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
action = ' ';
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
if (action == 'M' || action == 'D')
|
||||
{
|
||||
const long numreg = ini.get_long(MOV_NUMREG);
|
||||
TString16 idmov;
|
||||
if (select_mov(numreg, idmov))
|
||||
{
|
||||
_qmask->set(F_IDMOV, idmov, TRUE);
|
||||
_qmask->send_key(K_AUTO_ENTER, 0);
|
||||
}
|
||||
else
|
||||
action = ' ';
|
||||
}
|
||||
// Caso artificiale per terminare la transazione
|
||||
if (action == ' ')
|
||||
stop_run();
|
||||
}
|
||||
|
||||
void TMovicespi::init_query_mode(TMask& m)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.init_mask(m);
|
||||
|
||||
// Collegamento da prima nota
|
||||
if (_cg_line > 0)
|
||||
cg_mode();
|
||||
}
|
||||
|
||||
int TMovicespi::init_mask(TMask& m)
|
||||
{
|
||||
TDitta_cespiti& dc = ditta_cespiti();
|
||||
dc.init_mask(m);
|
||||
|
||||
const int staat = _qmask->stato_attivita();
|
||||
_emask->set_stato_attivita(staat);
|
||||
m.enable(DLG_NEWREC, staat != 3);
|
||||
|
||||
return staat;
|
||||
}
|
||||
|
||||
void TMovicespi::init_insert_mode(TMask& m)
|
||||
{
|
||||
const int staat = init_mask(m);
|
||||
m.enable(F_IDCESPITE);
|
||||
m.enable(F_DESC_CES);
|
||||
m.enable(DLG_SAVEREC, staat != 3);
|
||||
|
||||
if (_cg_line > 0)
|
||||
{
|
||||
TString16 para;
|
||||
para.format("%d", LF_MOV);
|
||||
TConfig ini(_prima_nota, para);
|
||||
|
||||
const TRectype& cau = cache().get(LF_CAUSALI, ini.get(MOV_CODCAUS));
|
||||
m.set(F_CODMOV, cau.get(CAU_COLLCESP), TRUE);
|
||||
if (m.field(F_TPDOC).active())
|
||||
m.set(F_TPDOC, ini.get(MOV_TIPODOC), TRUE);
|
||||
if (m.field(F_NDOC).active())
|
||||
m.set(F_NDOC, ini.get(MOV_NUMDOC), TRUE);
|
||||
if (m.field(F_DTDOC).active())
|
||||
m.set(F_DTDOC, ini.get(MOV_DATADOC), TRUE);
|
||||
|
||||
TString desc = ini.get(MOV_DESCR);
|
||||
if (desc.empty())
|
||||
desc = cau.get(CAU_DESCR);
|
||||
m.set(F_DESC_MOV, desc, TRUE);
|
||||
|
||||
if (m.field(F_COSTO).enabled())
|
||||
{
|
||||
para.format("%d,%d", LF_RMOV, _cg_line);
|
||||
m.set(F_COSTO, ini.get(RMV_IMPORTO, para));
|
||||
}
|
||||
_cg_line++;
|
||||
}
|
||||
}
|
||||
|
||||
void TMovicespi::init_modify_mode(TMask& m)
|
||||
{
|
||||
const int staat = init_mask(m);
|
||||
TEsercizi_contabili esc;
|
||||
|
||||
m.disable(F_IDCESPITE);
|
||||
m.disable(F_DESC_CES);
|
||||
|
||||
const TRectype& rec = get_relation()->curr();
|
||||
const TDate dtmov = rec.get(MOVCE_DTMOV);
|
||||
bool bollato = rec.get_bool(MOVCE_STAMPATO);
|
||||
if (!bollato) // Se proprio non ci fidiamo del flag
|
||||
{
|
||||
const TEsercizio& e = esc[m.get_int(F_ESERCIZIO)];
|
||||
const TDate dtini = e.inizio();
|
||||
const TDate dtfin = e.fine();
|
||||
bollato = (staat == 3 && dtmov <= dtfin) || (staat == 2 && dtmov < dtini);
|
||||
}
|
||||
if (bollato)
|
||||
{
|
||||
m.disable(DLG_SAVEREC);
|
||||
m.disable(DLG_DELREC);
|
||||
TString msg = "Movimento già stampato sul Bollato dell'esercizio ";
|
||||
msg << esc.date2esc(dtmov);
|
||||
xvt_statbar_set(msg);
|
||||
}
|
||||
}
|
||||
|
||||
void TMovicespi::kill_mov(const TString& idcespite, const TString& idmov, int lfile)
|
||||
{
|
||||
CHECKD(lfile == LF_MOVAM || lfile == LF_AMMMV, "Invalid file ", lfile);
|
||||
TRelation rel(lfile);
|
||||
TRectype& filter = rel.curr();
|
||||
filter.put("IDCESPITE", idcespite);
|
||||
filter.put("IDMOV", idmov);
|
||||
TCursor cur(&rel, "", 1, &filter, &filter);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
rel.remove();
|
||||
}
|
||||
|
||||
void TMovicespi::kill_rett(const TString& id, const TString& idmov)
|
||||
{
|
||||
TRelation rel(LF_MOVCE);
|
||||
|
||||
// Il cursore delle rettifiche usa la chiave 2: IDCESPITE+IDMOV
|
||||
// Per cui parto a selezionare le possibili rettifiche dal movimento da rettificare ...
|
||||
TRectype fromret(LF_MOVCE);
|
||||
fromret.put(MOVCE_IDCESPITE, id);
|
||||
fromret.put(MOVCE_IDMOV, idmov);
|
||||
|
||||
// ... in poi
|
||||
TRectype toret(LF_MOVCE);
|
||||
toret.put(MOVCE_IDCESPITE, id);
|
||||
|
||||
TString filtro;
|
||||
filtro << MOVCE_IDRET << "==" << idmov; // Confronto numerico!
|
||||
TCursor movcur(&rel, filtro, 2, &fromret, &toret);
|
||||
const long items = movcur.items();
|
||||
if (items > 0) // Se ci sono rettifiche
|
||||
{
|
||||
const TRectype& curr = movcur.curr();
|
||||
movcur.freeze();
|
||||
for (movcur = 0L; movcur.pos() < items; ++movcur)
|
||||
{
|
||||
const TString16 idmov = curr.get(MOVCE_IDMOV);
|
||||
if (rel.remove() == NOERR)
|
||||
{
|
||||
kill_mov(id, idmov, LF_MOVAM);
|
||||
kill_mov(id, idmov, LF_AMMMV);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool TMovicespi::remove()
|
||||
{
|
||||
const TRectype& curr = get_relation()->curr();
|
||||
|
||||
const TString16 idcespite = curr.get(MOVCE_IDCESPITE);
|
||||
const TString16 idmov = curr.get(MOVCE_IDMOV);
|
||||
TRelation_application::remove();
|
||||
kill_mov(idcespite, idmov, LF_MOVAM);
|
||||
kill_mov(idcespite, idmov, LF_AMMMV);
|
||||
kill_rett(idcespite, idmov);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int ce1500(int argc, char* argv[])
|
||||
{
|
||||
TMovicespi mc;
|
||||
mc.run(argc, argv, "Movimenti cespiti");
|
||||
return 0;
|
||||
}
|
||||
90
ce/ce1500a.h
Executable file
90
ce/ce1500a.h
Executable file
@ -0,0 +1,90 @@
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ESERCIZIO 103
|
||||
#define F_INIZIO_ES 104
|
||||
#define F_FINE_ES 105
|
||||
#define F_SELECT 106
|
||||
#define F_GRUPPO 107
|
||||
#define F_SPECIE 108
|
||||
#define F_DESC_GRSP 109
|
||||
#define F_DESC_IMP 111
|
||||
|
||||
#define F_IDMOV 122
|
||||
#define F_DESC_MOV 123
|
||||
#define F_CODMOV 126
|
||||
#define F_CODMOV_DES 127
|
||||
#define F_TPDOC 128
|
||||
#define F_TPDOC_DES 129
|
||||
#define F_DTMOV 130
|
||||
#define F_DTDOC 131
|
||||
#define F_NDOC 132
|
||||
#define F_NUMREG 133
|
||||
|
||||
#define F_IDRET 140
|
||||
#define F_DESC_RET 141
|
||||
#define F_CODMOV_RET 142
|
||||
#define F_CODMOV_DES_RET 143
|
||||
#define F_DTMOV_RET 144
|
||||
#define F_TPDOC_RET 145
|
||||
#define F_DTDOC_RET 146
|
||||
#define F_NDOC_RET 147
|
||||
|
||||
#define F_IDCESPITE 150
|
||||
#define F_DESC_CES 151
|
||||
#define F_CATEGORIA 152
|
||||
#define F_DESC_CAT 153
|
||||
#define F_IMPIANTO 154
|
||||
|
||||
#define F_SEGNO 201
|
||||
#define F_ELEMENTI 202
|
||||
#define F_COSTO 203
|
||||
#define F_VNONAMM 204
|
||||
#define F_PLUSREIN 205
|
||||
#define F_RIV75 206
|
||||
#define F_RIV83 207
|
||||
#define F_RIV90 208
|
||||
#define F_RIV91 209
|
||||
#define F_RIVGF 210
|
||||
#define F_RIVGC 211
|
||||
#define F_IMPVEN 212
|
||||
|
||||
#define F_IDMOVAM 251
|
||||
#define F_IDCESAM 252
|
||||
#define F_IDMOVAM2 253
|
||||
#define F_IDCESAM2 254
|
||||
#define F_IDMOVAM3 255
|
||||
#define F_IDCESAM3 256
|
||||
|
||||
#define F_NORMALE 301
|
||||
#define F_ACCELERATO 302
|
||||
#define F_ANTICIPATO 303
|
||||
#define F_QPERSE 304
|
||||
#define F_FPRIVATO 305
|
||||
#define F_QPERSEPRIV 306
|
||||
#define F_NORMALE2 307
|
||||
#define F_ACCELERATO2 308
|
||||
#define F_ANTICIPATO2 309
|
||||
#define F_NORMALE3 310
|
||||
#define F_ACCELERATO3 311
|
||||
#define F_ANTICIPATO3 312
|
||||
|
||||
#define S_TIPO 400
|
||||
#define S_DATAMOV 401
|
||||
#define S_ELEMENTI 402
|
||||
#define S_COSTO 403
|
||||
#define S_VNONAMM 404
|
||||
#define S_PLUSREIN 405
|
||||
#define S_TOTRIV 406
|
||||
|
||||
#define S_NORMALE 410
|
||||
#define S_ACCELERATO 411
|
||||
#define S_ANTICIPATO 412
|
||||
#define S_QPERSE 413
|
||||
#define S_FPRIVATO 414
|
||||
#define S_QPERSEP 415
|
||||
|
||||
#define S_TOTVAL 420
|
||||
#define S_TOTFON 421
|
||||
#define S_RESIDUO 422
|
||||
#define S_PLUS 423
|
||||
#define S_MINUS 424
|
||||
216
ce/ce1500a.uml
Executable file
216
ce/ce1500a.uml
Executable file
@ -0,0 +1,216 @@
|
||||
#include "ce1500a.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Movimenti cespiti" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 5
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bParametri ditta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Ditta "
|
||||
FLAGS "DF"
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 26 2 ""
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ESERCIZIO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Esercizio "
|
||||
FLAGS "AZ"
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 104 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_ESERCIZIO
|
||||
DISPLAY "Codice esercizio" CODTAB
|
||||
DISPLAY "Inizio esercizio" 104@->D0
|
||||
DISPLAY "Fine esercizio" 104@->D1
|
||||
OUTPUT F_ESERCIZIO CODTAB
|
||||
OUTPUT F_INIZIO_ES 104@->D0
|
||||
OUTPUT F_FINE_ES 104@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_INIZIO_ES
|
||||
BEGIN
|
||||
PROMPT 26 3 "Inizio "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_FINE_ES
|
||||
BEGIN
|
||||
PROMPT 50 3 "Fine "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Gruppo "
|
||||
FLAGS "Z"
|
||||
END
|
||||
|
||||
STRING F_SPECIE 4
|
||||
BEGIN
|
||||
PROMPT 16 4 "Specie "
|
||||
FLAGS "_"
|
||||
USE CCB
|
||||
JOIN %CAT ALIAS 400 INTO CODTAB=CODTAB[5,10]
|
||||
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
|
||||
INPUT CODTAB[5,6] F_GRUPPO
|
||||
INPUT CODTAB[7,10] F_SPECIE
|
||||
DISPLAY "Gruppo" CODTAB[5,6]
|
||||
DISPLAY "Specie" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@60" 400@->S0
|
||||
OUTPUT F_GRUPPO CODTAB[5,6]
|
||||
OUTPUT F_SPECIE CODTAB[7,10]
|
||||
OUTPUT F_DESC_GRSP 400@->S0
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "È necessario specificare l'attività corrente"
|
||||
END
|
||||
|
||||
STRING F_DESC_GRSP 60 45
|
||||
BEGIN
|
||||
PROMPT 31 4 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 0 6 "@bSelezione per..."
|
||||
END
|
||||
|
||||
NUMBER F_IMPIANTO 10
|
||||
BEGIN
|
||||
PROMPT 1 7 "Impianto "
|
||||
FLAGS "Z"
|
||||
USE CIM
|
||||
INPUT CODTAB F_IMPIANTO
|
||||
DISPLAY "Impianto@10" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_IMPIANTO CODTAB
|
||||
OUTPUT F_DESC_IMP S0
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_IMP 50
|
||||
BEGIN
|
||||
PROMPT 24 7 ""
|
||||
FLAGS "Z"
|
||||
USE CIM KEY 2
|
||||
INPUT S0 F_DESC_IMP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@10" CODTAB
|
||||
COPY OUTPUT F_IMPIANTO
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_IDCESPITE 10
|
||||
BEGIN
|
||||
PROMPT 1 8 "Cespite "
|
||||
FLAGS "Z"
|
||||
USE LF_CESPI
|
||||
INPUT IDCESPITE F_IDCESPITE
|
||||
DISPLAY "Cespite@10" IDCESPITE
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
OUTPUT F_IDCESPITE IDCESPITE
|
||||
OUTPUT F_DESC_CES DESC
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_DESC_CES 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
USE LF_CESPI KEY 2
|
||||
INPUT DESC F_DESC_CES
|
||||
DISPLAY "Desc@50" DESC
|
||||
DISPLAY "Codice@10" IDCESPITE
|
||||
DISPLAY "Cat." CODCAT
|
||||
DISPLAY "Impianto@10" CODIMP
|
||||
DISPLAY "Stabilimento@30" STABILIM
|
||||
DISPLAY "Reparto@30" REPARTO
|
||||
DISPLAY "Data Acq.@10" DTCOMP
|
||||
DISPLAY "Data Ali.@10" DTALIEN
|
||||
COPY OUTPUT F_IDCESPITE
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_IDMOV 11
|
||||
BEGIN
|
||||
PROMPT 1 10 "Movimento "
|
||||
FLAGS "Z"
|
||||
USE LF_MOVCE
|
||||
JOIN LF_CESPI INTO IDCESPITE==IDCESPITE
|
||||
INPUT IDMOV F_IDMOV
|
||||
DISPLAY "Movimento@11" IDMOV
|
||||
DISPLAY "Rettifica@11" IDRET
|
||||
DISPLAY "Data mov.@10" DTMOV
|
||||
DISPLAY "Codice" CODMOV
|
||||
DISPLAY "Data doc.@10" DTDOC
|
||||
DISPLAY "Tipo doc." TPDOC
|
||||
DISPLAY "Num. doc." NDOC
|
||||
DISPLAY "Descrizione Movimento@50" DESC
|
||||
DISPLAY "Cespite@10" IDCESPITE
|
||||
DISPLAY "Descrizione Cespite@50" LF_CESPI->DESC
|
||||
DISPLAY "Impianto@10" LF_CESPI->CODIMP
|
||||
OUTPUT F_IDMOV IDMOV
|
||||
OUTPUT F_IDRET IDRET
|
||||
OUTPUT F_DESC_MOV DESC
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD IDMOV
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESC_MOV 50
|
||||
BEGIN
|
||||
PROMPT 27 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NUMREG 7
|
||||
BEGIN
|
||||
PROMPT 1 12 "Selezione per numero di registrazione di prima nota "
|
||||
USE LF_MOVCE KEY 3
|
||||
JOIN LF_CESPI INTO IDCESPITE==IDCESPITE
|
||||
INPUT NUMREG F_NUMREG
|
||||
DISPLAY "Registrazione" NUMREG
|
||||
DISPLAY "Movimento@11" IDMOV
|
||||
DISPLAY "Data@10" DTMOV
|
||||
DISPLAY "Descrizione Movimento@50" DESC
|
||||
DISPLAY "Cespite@10" IDCESPITE
|
||||
DISPLAY "Descrizione Cespite@50" LF_CESPI->DESC
|
||||
OUTPUT F_NUMREG NUMREG
|
||||
OUTPUT F_IDMOV IDMOV
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
NUMBER F_IDRET 11
|
||||
BEGIN
|
||||
PROMPT 1 11 "Rettifica "
|
||||
FIELD IDRET
|
||||
FLAGS "DZ"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
1017
ce/ce1500b.uml
Executable file
1017
ce/ce1500b.uml
Executable file
File diff suppressed because it is too large
Load Diff
@ -8,10 +8,8 @@ int main(int argc,char** argv)
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
ce2100(argc, argv); break;
|
||||
case 1: ce2200(argc, argv); break;
|
||||
default: ce2100(argc, argv); break;
|
||||
}
|
||||
exit(0);
|
||||
return 0;
|
||||
|
||||
1
ce/ce2.h
1
ce/ce2.h
@ -1,2 +1,3 @@
|
||||
int ce2100(int argc, char* argv[]);
|
||||
int ce2200(int argc, char* argv[]);
|
||||
|
||||
|
||||
@ -148,8 +148,7 @@ void TCalcamm::main_loop()
|
||||
bool ok = TRUE;
|
||||
if (dc.bollato_stampato())
|
||||
ok = error_box("Non è possibile effettuare il calcolo degli ammortamenti:\n"
|
||||
"il bollato della attività corrente è già stato stampato");
|
||||
|
||||
"il bollato dell'attività corrente è già stato stampato");
|
||||
if (ok)
|
||||
calcola_ammortamenti();
|
||||
}
|
||||
|
||||
@ -37,34 +37,6 @@ HIDDEN void log(const char* fmt, ...)
|
||||
*/
|
||||
}
|
||||
|
||||
// Controlla se i campi sono tutti vuoti
|
||||
// Cerified 99%
|
||||
HIDDEN bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const char* fld2 = NULL,
|
||||
const char* fld3 = NULL, const char* fld4 = NULL, const char* fld5 = NULL,
|
||||
const char* fld6 = NULL, const char* fld7 = NULL, const char* fld8 = NULL)
|
||||
{
|
||||
if (!rec.get_real(fld0).is_zero())
|
||||
return FALSE;
|
||||
if (!rec.get_real(fld1).is_zero())
|
||||
return FALSE;
|
||||
if (fld2 && *fld2 && !rec.get_real(fld2).is_zero())
|
||||
return FALSE;
|
||||
if (fld3 && *fld3 && !rec.get_real(fld3).is_zero())
|
||||
return FALSE;
|
||||
if (fld4 && *fld4 && !rec.get_real(fld4).is_zero())
|
||||
return FALSE;
|
||||
if (fld5 && *fld5 && !rec.get_real(fld5).is_zero())
|
||||
return FALSE;
|
||||
if (fld6 && *fld6 && !rec.get_real(fld6).is_zero())
|
||||
return FALSE;
|
||||
if (fld7 && *fld7 && !rec.get_real(fld7).is_zero())
|
||||
return FALSE;
|
||||
if (fld8 && *fld8 && !rec.get_real(fld8).is_zero())
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
// Azzera i campi fld del record rec
|
||||
// Cerified 99%
|
||||
@ -324,7 +296,7 @@ real TCespite::val_amm(int tipo_sit) const
|
||||
val -= _salpro.get_real(SALCE_VNONAMM);
|
||||
val += _salpro.get_real(SALCE_RIVGF);
|
||||
}
|
||||
else
|
||||
if (tipo_sit == 2 && !get_bool(CESPI_LEASING))
|
||||
{
|
||||
val += _salpro.get_real(SALCE_RIVGC);
|
||||
}
|
||||
@ -494,7 +466,7 @@ void TCespite::incr_field(TRectype& dst, const char* fdst, const TRectype& src,
|
||||
}
|
||||
|
||||
// Applica tutte le rettifice al movimento tmv
|
||||
// Certified 10%
|
||||
// Certified 50%
|
||||
void TCespite::applica_rettifiche(TRectype& tmv, TRectype& tmvam, int tipo_sit)
|
||||
{
|
||||
TRelation rel(LF_MOVCE);
|
||||
@ -886,7 +858,7 @@ void TCespite::calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tm
|
||||
real per_eff;
|
||||
const real qnor = calc_quota(mov_val_amm(tmv), penor, resamm, per_eff, &rel);
|
||||
ammmv.put(AMMMV_QNOR, qnor);
|
||||
ammmv.put(AMMMV_PNOR, per_eff);
|
||||
ammmv.put(AMMMV_PENOR, per_eff);
|
||||
|
||||
resamm -= qnor + ammmv.get_real(AMMMV_FPRIVATO);
|
||||
const real peacc = ammmv.get(AMMMV_PEACC);
|
||||
@ -894,7 +866,7 @@ void TCespite::calc_perc(TRelation& rel, const TRectype& tmv, const TRectype& tm
|
||||
{
|
||||
const real qacc = calc_quota(mov_val_amm(tmv), peacc, resamm, per_eff, &rel);
|
||||
ammmv.put(AMMMV_QACC, qacc);
|
||||
ammmv.put(AMMMV_PACC, per_eff);
|
||||
ammmv.put(AMMMV_PEACC, per_eff);
|
||||
resamm -= qacc;
|
||||
}
|
||||
|
||||
@ -1061,11 +1033,15 @@ void TCespite::amm_mov_ven(TRelation& rel, const TRectype& tmv, const TRectype&
|
||||
void TCespite::elabora_mov_neg(TRelation& rel, TRectype& tmv, TRectype& tmvam, int tipo_sit, bool is_valid)
|
||||
{
|
||||
log("= Elaborazione movimento con segno -");
|
||||
bool ok = null_fields(tmvam, MOVAM_QNOR, MOVAM_QANT, MOVAM_QACC,
|
||||
MOVAM_QPERSE, MOVAM_QPPRIVATE, MOVAM_FPRIVATO);
|
||||
if (ok)
|
||||
if (_salpro.get_long(SALCE_NUMELE) > 0 && _salpro.get_real(SALCE_CSTO) > ZERO)
|
||||
{
|
||||
if (_salpro.get_long(SALCE_NUMELE) > 0 && _salpro.get_real(SALCE_CSTO) > ZERO)
|
||||
/*
|
||||
bool null_movce = null_fields(tmv, MOVCE_VNONAMM, MOVCE_PLUSREIN, MOVCE_RIV75,
|
||||
MOVCE_RIV83, MOVCE_RIV90, MOVCE_RIV91, MOVCE_RIVGF);
|
||||
*/
|
||||
bool null_movam = null_fields(tmvam, MOVAM_QNOR, MOVAM_QANT, MOVAM_QACC,
|
||||
MOVAM_QPERSE, MOVAM_QPPRIVATE, MOVAM_FPRIVATO);
|
||||
if (null_movam)
|
||||
{
|
||||
if (tmv.get_real(MOVCE_CSTO).is_zero())
|
||||
rip_elem(rel, tmv, tmvam);
|
||||
@ -1120,7 +1096,7 @@ void TCespite::scansione_movimenti(int tipo_sit, const TDate& data_limite, bool
|
||||
{
|
||||
cur.freeze();
|
||||
|
||||
// Creo rcord campione per totale movimento + relative rettifiche
|
||||
// Creo record campione per totale movimento + relative rettifiche
|
||||
TVariable_rectype tmv(LF_MOVCE);
|
||||
tmv.add_field(new TVariable_field("VSPMANU"));
|
||||
|
||||
@ -1260,9 +1236,9 @@ void TCespite::calc_amm_residui(int tipo_sit, bool is_valid)
|
||||
if (resamm > ZERO)
|
||||
{
|
||||
const real valamm = val_amm(tipo_sit);
|
||||
const real penor = _ammpro.get_real(AMMMV_PENOR);
|
||||
const real pnor = _ammpro.get_real(AMMCE_PNOR);
|
||||
real per_eff;
|
||||
const real qnor = calc_quota(valamm, penor, resamm, per_eff);
|
||||
const real qnor = calc_quota(valamm, pnor, resamm, per_eff);
|
||||
_ammpro.put(AMMCE_QNOR, qnor);
|
||||
_ammpro.put(AMMCE_PNOR, per_eff);
|
||||
resamm -= qnor + _ammpro.get_real(AMMCE_FPRIVATO);
|
||||
@ -1508,7 +1484,7 @@ bool TCespite::calc_amm(int tipo_sit, bool recalc_spe_man, const TDate& data_lim
|
||||
log("* Inizio calcolo situazione %d cespite %s", tipo_sit, (const char*)idcespite);
|
||||
|
||||
#ifdef DBG
|
||||
if (tipo_sit == 1 && atol(idcespite) == 28L)
|
||||
if (tipo_sit == 1 && atol(idcespite) == 63L)
|
||||
tipo_sit = 1; // Put your breakpoint here
|
||||
#endif
|
||||
|
||||
|
||||
@ -61,6 +61,8 @@ public:
|
||||
|
||||
const TRectype& categoria() const;
|
||||
TTipo_cespite tipo() const;
|
||||
const TRectype& sal_pro() const { return _salpro; }
|
||||
const TRectype& amm_pro() const { return _ammpro; }
|
||||
|
||||
int read(const char* id);
|
||||
TCespite();
|
||||
|
||||
399
ce/ce2200.cpp
Executable file
399
ce/ce2200.cpp
Executable file
@ -0,0 +1,399 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <modaut.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <relation.h>
|
||||
#include <tabutil.h>
|
||||
|
||||
#include "celib.h"
|
||||
#include "ce2200a.h"
|
||||
|
||||
#include "../cg/cglib01.h"
|
||||
|
||||
#include "ammce.h"
|
||||
#include "catdi.h"
|
||||
#include "cespi.h"
|
||||
#include "salce.h"
|
||||
|
||||
class TOpenesc_mask : public TAutomask
|
||||
{
|
||||
TDitta_cespiti& _dc;
|
||||
bool _has_cg;
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
bool check_oldes();
|
||||
|
||||
public:
|
||||
TOpenesc_mask();
|
||||
};
|
||||
|
||||
TOpenesc_mask::TOpenesc_mask()
|
||||
: TAutomask("ce2200a"), _dc(ditta_cespiti())
|
||||
{
|
||||
_has_cg = main_app().has_module(CGAUT);
|
||||
field(F_NEWES).check_type(_has_cg ? CHECK_REQUIRED : CHECK_SEARCH);
|
||||
}
|
||||
|
||||
// Controlla che siano stati stampati i bollati e chiuse le attivita
|
||||
bool TOpenesc_mask::check_oldes()
|
||||
{
|
||||
TRelation rel("CCB");
|
||||
TRectype& ccb = rel.curr();
|
||||
ccb.put("CODTAB", get(F_OLDES));
|
||||
TCursor cur(&rel, "", 1, &ccb, &ccb);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
const bool b1 = ccb.get_bool("B1");
|
||||
const bool b2 = ccb.get_bool("B2");
|
||||
if (!b1 || b2)
|
||||
{
|
||||
TString msg;
|
||||
msg << "Non è possibile aprire il nuovo esercizio in quanto ";
|
||||
if (!b1)
|
||||
msg << "non è stato stampato il bollato";
|
||||
else
|
||||
msg << "è già stata effettuata la chiusura";
|
||||
const TString8 codatt = ccb.get("CODTAB").mid(4);
|
||||
msg << "\ndell'attività " << cache().get("%CAT", codatt, "S0");
|
||||
return error_box(msg);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TOpenesc_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_OLDES:
|
||||
if (e == fe_init)
|
||||
{
|
||||
TDate ies, fes;
|
||||
const int oes = _dc.esercizio_corrente(ies, fes);
|
||||
o.set(oes); set(F_OLDINIZIO, ies); set(F_OLDFINE, fes);
|
||||
}
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TEsercizi_contabili esc;
|
||||
const int nes = get_int(F_OLDES)+1;
|
||||
set(F_NEWES, nes, TRUE);
|
||||
if (esc.exist(nes))
|
||||
{
|
||||
set(F_NEWINIZIO, esc[nes].inizio());
|
||||
set(F_NEWFINE, esc[nes].fine());
|
||||
disable(-2);
|
||||
}
|
||||
else
|
||||
{
|
||||
TDate inizio = get_date(F_OLDFINE); ++inizio;
|
||||
TDate fine = get_date(F_OLDFINE); fine.addyear(1);
|
||||
set(F_NEWINIZIO, inizio);
|
||||
set(F_NEWFINE, fine);
|
||||
enable(-2);
|
||||
}
|
||||
}
|
||||
if (e == fe_modify || e == fe_close)
|
||||
return check_oldes();
|
||||
break;
|
||||
case F_NEWES:
|
||||
if (e == fe_close)
|
||||
{
|
||||
if (o.empty())
|
||||
return error_box("È necessario specificare il codice del nuovo esercizio");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
class TOpenesc : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual bool create();
|
||||
virtual void main_loop();
|
||||
|
||||
void incr_riv(TRectype& rec, const char* riv, const char* anni) const;
|
||||
bool is_leap(int year) const;
|
||||
real calc_coeff(const TDate& ies, const TDate& fes) const;
|
||||
void incr_zero(TRectype& rec, const char* val, const char* valp) const;
|
||||
|
||||
public:
|
||||
void crea_esercizio(int oldes, int newes, const TDate& ies, const TDate& fes) const;
|
||||
void crea_attivita(int oldes, int newes) const;
|
||||
void crea_registro(int oldes, int newes) const;
|
||||
void crea_categorie(int oldes, int newes) const;
|
||||
void crea_saldi(int oldes, int newes) const;
|
||||
void crea_ammortamenti(int oldes, int newes) const;
|
||||
void test_alien(const TRectype& salce, const TDate& fines) const;
|
||||
};
|
||||
|
||||
bool TOpenesc::create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CESPI, LF_AMMCE, LF_SALCE, 0);
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TOpenesc::is_leap(int year) const
|
||||
{
|
||||
TDate d(28,2,year);
|
||||
++d;
|
||||
return d.day() == 29;
|
||||
}
|
||||
|
||||
real TOpenesc::calc_coeff(const TDate& ies, const TDate& fes) const
|
||||
{
|
||||
const real tot_es = fes - ies + 1;
|
||||
real max_es = 365;
|
||||
const int im = ies.month();
|
||||
const int iy = ies.year();
|
||||
const int fm = fes.month();
|
||||
const int fy = fes.year();
|
||||
if ((im < 3 && (fm >= 3 || fy > iy) && is_leap(iy)) ||
|
||||
(fm >= 3 && (im < 3 || iy < fy) && is_leap(fy)))
|
||||
max_es += 1.0;
|
||||
real coeff = tot_es / max_es;
|
||||
coeff.round(9);
|
||||
return coeff;
|
||||
}
|
||||
|
||||
void TOpenesc::crea_esercizio(int oldes, int newes, const TDate& ies, const TDate& fes) const
|
||||
{
|
||||
// Crea l'esercizio contabile se necessario
|
||||
if (!has_module(CGAUT))
|
||||
{
|
||||
TTable esc("ESC");
|
||||
esc.put("CODTAB", newes);
|
||||
if (esc.read() != NOERR)
|
||||
{
|
||||
esc.zero();
|
||||
esc.put("CODTAB", newes);
|
||||
esc.put("D0", ies);
|
||||
esc.put("D1", fes);
|
||||
esc.write();
|
||||
}
|
||||
}
|
||||
|
||||
// Crea l'esercizio cespiti se necessario
|
||||
TTable cce("CCE");
|
||||
TString8 key; key.format("%04d", oldes);
|
||||
const TRectype& oldrec = cache().get("CCE", key);
|
||||
cce.put("CODTAB", newes);
|
||||
if (cce.read() != NOERR)
|
||||
{
|
||||
cce.zero();
|
||||
cce.put("CODTAB", newes);
|
||||
cce.put("S5", calc_coeff(ies, fes)); // Calcola coefficiente durata esercizio
|
||||
cce.put("S6", oldrec.get("S6")); // Copia tipo arrotondamento
|
||||
cce.put("I0", oldrec.get("I0")); // Copia tipo contabilità
|
||||
cce.put("I1", oldrec.get("I1")); // Copia tipo riproporzionamento
|
||||
cce.put("I2", oldrec.get("I2")); // Copia assoggettamento art.14 C.2 legge 449/97
|
||||
cce.put("I3", fes - ies + 1); // Calcola durata esercizio
|
||||
cce.put("B0", oldrec.get("B0")); // Copia ditta relativa a professionista
|
||||
cce.put("B3", oldrec.get("B3")); // Copia ammortamento parti vendute
|
||||
if (cce.write() != NOERR)
|
||||
error_box("Errore di creazione dell'esercizio cespiti %d", newes);
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::crea_attivita(int oldes, int newes) const
|
||||
{
|
||||
TRelation rel("CCB");
|
||||
TRectype& ccb = rel.curr();
|
||||
ccb.put("CODTAB", oldes);
|
||||
TCursor cur(&rel, "", 1, &ccb, &ccb);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
ccb.put("B2", TRUE); // Setta flag di chiusa
|
||||
rel.rewrite();
|
||||
|
||||
// Crea nuova attività
|
||||
TString16 codtab = ccb.get("CODTAB");
|
||||
TString8 str; str.format("%04d", newes);
|
||||
codtab.overwrite(str);
|
||||
const bool leasing = ccb.get_bool("B0");
|
||||
ccb.zero();
|
||||
ccb.put("CODTAB", codtab);
|
||||
ccb.put("B0", leasing);
|
||||
rel.write();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::crea_registro(int oldes, int newes) const
|
||||
{
|
||||
TRelation rel("REG");
|
||||
TRectype& reg = rel.curr();
|
||||
reg.put("CODTAB", oldes);
|
||||
TCursor cur(&rel, "I0=6", 1, ®, ®);
|
||||
const long items = cur.items(); // Puo' succedere di averne più d'uno
|
||||
cur.freeze();
|
||||
for (cur = 0; cur.pos() < items; ++cur)
|
||||
{
|
||||
TString16 codtab;
|
||||
codtab.format("%04d", newes);
|
||||
codtab << reg.get("CODTAB").mid(4);
|
||||
reg.put("CODTAB", codtab);
|
||||
reg.zero("I1"); // Pagine stampate
|
||||
rel.write();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::crea_categorie(int oldes, int newes) const
|
||||
{
|
||||
TRelation rel(LF_CATDI);
|
||||
TRectype& cat = rel.curr();
|
||||
cat.put(CATDI_CODES, oldes);
|
||||
TCursor cur(&rel, "", 1, &cat, &cat);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
for (cur = 0L; cur.pos() < items; ++cur)
|
||||
{
|
||||
cat.put(CATDI_CODES, newes);
|
||||
cat.zero(CATDI_DATE);
|
||||
cat.zero(CATDI_TPOP);
|
||||
rel.write();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::incr_riv(TRectype& rec, const char* riv, const char* anni) const
|
||||
{
|
||||
if (rec.get_real(riv) != ZERO)
|
||||
{
|
||||
const int new_anni = rec.get_int(anni) + 1;
|
||||
rec.put(anni, new_anni);
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::test_alien(const TRectype& salce, const TDate& fines) const
|
||||
{
|
||||
if (null_fields(salce, SALCE_NUMELE, SALCE_CSTO, SALCE_RIV75, SALCE_RIV83, SALCE_RIV90, SALCE_RIV91, SALCE_RIVGF))
|
||||
{
|
||||
const TString16 idcespite = salce.get(SALCE_IDCESPITE);
|
||||
TLocalisamfile cespiti(LF_CESPI);
|
||||
cespiti.put(CESPI_IDCESPITE, idcespite);
|
||||
if (cespiti.read() == NOERR)
|
||||
{
|
||||
const TDate dtcomp = cespiti.get(CESPI_DTCOMP);
|
||||
if (dtcomp <= fines)
|
||||
{
|
||||
cespiti.put(CESPI_DTALIEN, fines);
|
||||
cespiti.rewrite();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::crea_saldi(int oldes, int newes) const
|
||||
{
|
||||
TRelation rel(LF_SALCE);
|
||||
rel.add(LF_AMMCE, "CODES==CODES|IDCESPITE==IDCESPITE|TPSALDO==2|TPAMM==1");
|
||||
TRectype& rec = rel.curr();
|
||||
TString str;
|
||||
str << '(' << SALCE_CODES << "==" << oldes << ")&&(" << SALCE_TPSALDO << "==2)";
|
||||
TCursor cur(&rel, str);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
// Calcola data fine esercizio per eventuali alienazioni
|
||||
TEsercizi_contabili esc;
|
||||
const TDate fines = esc[oldes].fine();
|
||||
|
||||
TProgind pi(items, "Apertura saldi", FALSE, TRUE);
|
||||
for (cur = 0; cur.pos() < items; ++cur)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
rec.put(SALCE_CODES, newes); // Aggiorna anno di esercizio
|
||||
rec.put(SALCE_TPSALDO, 1); // Aggiorna tipo saldo ad "iniziale"
|
||||
|
||||
incr_riv(rec, SALCE_RIV90, SALCE_ANNIPOST90); // Incrementa anni post 90
|
||||
incr_riv(rec, SALCE_RIV91, SALCE_ANNIPOST91); // Incrementa anni post 91
|
||||
rec.zero(SALCE_VSPMANU); // Azzera spese manutenzione
|
||||
rec.zero(SALCE_DTSTBOLL); // Azzera data stampa bollato
|
||||
|
||||
// Incrementa gli anni di ammortamento
|
||||
const TRectype& ammce = rel.curr(LF_AMMCE);
|
||||
if (!null_fields(ammce, AMMCE_QNOR, AMMCE_QACC, AMMCE_QANT))
|
||||
{
|
||||
const int anniamm = rec.get_int(SALCE_ANNIAMM);
|
||||
rec.put(SALCE_ANNIAMM, anniamm+1);
|
||||
}
|
||||
|
||||
// Controlla se cespite alienato
|
||||
test_alien(rec, fines);
|
||||
|
||||
const int err = rel.write();
|
||||
if (err != NOERR) // Should never happen!
|
||||
rel.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::incr_zero(TRectype& rec, const char* val, const char* valp) const
|
||||
{
|
||||
real num = rec.get(val);
|
||||
num += rec.get_real(valp);
|
||||
rec.put(val, num);
|
||||
rec.zero(valp);
|
||||
}
|
||||
|
||||
void TOpenesc::crea_ammortamenti(int oldes, int newes) const
|
||||
{
|
||||
TRelation rel(LF_AMMCE);
|
||||
TRectype& rec = rel.curr();
|
||||
TString str;
|
||||
str << '(' << SALCE_CODES << "==" << oldes << ")&&(" << SALCE_TPSALDO << "==2)";
|
||||
TCursor cur(&rel, str);
|
||||
const long items = cur.items();
|
||||
cur.freeze();
|
||||
|
||||
TProgind pi(items, "Creazione ammortamenti", FALSE, TRUE);
|
||||
for (cur = 0; cur.pos() < items; ++cur)
|
||||
{
|
||||
pi.addstatus(1);
|
||||
rec.put(AMMCE_CODES, newes); // Aggiorna anno di esercizio
|
||||
rec.put(AMMCE_TPSALDO, 1); // Aggiorna tipo saldo ad "iniziale"
|
||||
rec.zero(AMMCE_CSCEN);
|
||||
rec.zero(AMMCE_PNOR);
|
||||
incr_zero(rec, AMMCE_QNOR, AMMCE_QNORP);
|
||||
incr_zero(rec, AMMCE_QACC, AMMCE_QACCP);
|
||||
incr_zero(rec, AMMCE_QANT, AMMCE_QANTP);
|
||||
incr_zero(rec, AMMCE_QPERSE, AMMCE_QPERSEP);
|
||||
incr_zero(rec, AMMCE_FPRIVATO, AMMCE_FPRIVATOP);
|
||||
incr_zero(rec, AMMCE_QPPRIVATE, AMMCE_QPPRIVATEP);
|
||||
const int err = rel.write();
|
||||
if (err != NOERR) // Should never happen!
|
||||
rel.rewrite();
|
||||
}
|
||||
}
|
||||
|
||||
void TOpenesc::main_loop()
|
||||
{
|
||||
TOpenesc_mask m;
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
const int oldes = m.get_int(F_OLDES);
|
||||
const int newes = m.get_int(F_NEWES);
|
||||
const TDate ies = m.get(F_NEWINIZIO);
|
||||
const TDate fes = m.get(F_NEWFINE);
|
||||
crea_esercizio(oldes, newes, ies, fes);
|
||||
crea_attivita(oldes, newes);
|
||||
crea_registro(oldes, newes);
|
||||
crea_categorie(oldes, newes);
|
||||
crea_saldi(oldes, newes);
|
||||
crea_ammortamenti(oldes, newes);
|
||||
ditta_cespiti().set_attivita(newes, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
int ce2200(int argc, char* argv[])
|
||||
{
|
||||
TOpenesc a;
|
||||
a.run(argc, argv, "Cambio esercizio");
|
||||
return 0;
|
||||
}
|
||||
8
ce/ce2200a.h
Executable file
8
ce/ce2200a.h
Executable file
@ -0,0 +1,8 @@
|
||||
#define F_DITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_OLDES 103
|
||||
#define F_OLDINIZIO 104
|
||||
#define F_OLDFINE 105
|
||||
#define F_NEWES 106
|
||||
#define F_NEWINIZIO 107
|
||||
#define F_NEWFINE 108
|
||||
99
ce/ce2200a.uml
Executable file
99
ce/ce2200a.uml
Executable file
@ -0,0 +1,99 @@
|
||||
#include "ce2200a.h"
|
||||
|
||||
PAGE "Apertura esercizio" -1 -1 62 7
|
||||
|
||||
GROUPBOX DLG_NULL 60 3
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDitta"
|
||||
END
|
||||
|
||||
NUMBER F_DITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 1 ""
|
||||
FLAGS "DFG"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_DITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 9 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_OLDES 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Esercizio corrente "
|
||||
USE CCE
|
||||
JOIN ESC ALIAS 2 INTO CODTAB==CODTAB
|
||||
INPUT CODTAB F_OLDES
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Data inizio esercizio" 2@->D0
|
||||
DISPLAY "Data fine esercizio" 2@->D1
|
||||
OUTPUT F_OLDES CODTAB
|
||||
OUTPUT F_OLDINIZIO 2@->D0
|
||||
OUTPUT F_OLDFINE 2@->D1
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Inserire un esercizio valido"
|
||||
END
|
||||
|
||||
DATE F_OLDINIZIO
|
||||
BEGIN
|
||||
PROMPT 35 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_OLDFINE
|
||||
BEGIN
|
||||
PROMPT 49 3 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_NEWES 4
|
||||
BEGIN
|
||||
PROMPT 2 4 "Nuovo esercizio "
|
||||
USE ESC
|
||||
INPUT CODTAB F_OLDES
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Data inizio esercizio" D0
|
||||
DISPLAY "Data fine esercizio" D1
|
||||
OUTPUT F_NEWES CODTAB
|
||||
OUTPUT F_NEWINIZIO D0
|
||||
OUTPUT F_NEWFINE D1
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
DATE F_NEWINIZIO
|
||||
BEGIN
|
||||
PROMPT 35 4 ""
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
VALIDATE DATE_CMP_FUNC > F_OLDFINE
|
||||
WARNING "La data di inizio esercizio deve essere successiva alla fine dell'esercizio precedente"
|
||||
END
|
||||
|
||||
DATE F_NEWFINE
|
||||
BEGIN
|
||||
PROMPT 49 4 ""
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
VALIDATE DATE_CMP_FUNC > F_NEWINIZIO
|
||||
WARNING "La data di fine esercizio deve essere successiva a quella di inizio"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 12 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 12 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
68
ce/celib.cpp
68
ce/celib.cpp
@ -60,14 +60,17 @@ void TDitta_cespiti::set_attivita(int esercizio, int gruppo, const char* specie)
|
||||
}
|
||||
else
|
||||
_esercizio = esercizio;
|
||||
_gruppo.format("%02d", gruppo);
|
||||
_specie.format("%-4s", (const char*)specie);
|
||||
|
||||
TConfig dit(CONFIG_DITTA, "ce");
|
||||
dit.set("CODESCORR", _esercizio);
|
||||
dit.set("GRUPPOCORR", _gruppo);
|
||||
TString16 str; str << '"' << _specie << '"';
|
||||
dit.set("SPECIECORR", str);
|
||||
if (gruppo > 0)
|
||||
_gruppo.format("%02d", gruppo);
|
||||
if (specie && *specie)
|
||||
_specie.format("%-4s", (const char*)specie);
|
||||
|
||||
TConfig dit(CONFIG_DITTA, "ce");
|
||||
dit.set("CODESCORR", _esercizio);
|
||||
dit.set("GRUPPOCORR", _gruppo);
|
||||
TString16 str; str << '"' << _specie << '"';
|
||||
dit.set("SPECIECORR", str);
|
||||
|
||||
_data_primi_ricavi = dit.get("CADTR");
|
||||
_anno_tuir = dit.get_int("CATSU");
|
||||
@ -232,7 +235,7 @@ static bool cac_filter_func(const TRelation* rel)
|
||||
|
||||
bool TDitta_cespiti::on_category_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
if (e != fe_init && e != fe_button && e != fe_close)
|
||||
if (e != fe_init && e != fe_modify && e != fe_button && e != fe_close)
|
||||
return TRUE;
|
||||
|
||||
TEdit_field& fld = (TEdit_field&)o;
|
||||
@ -290,17 +293,21 @@ bool TDitta_cespiti::on_category_event(TOperable_field& o, TField_event e, long
|
||||
fout.set(row.get(1));
|
||||
}
|
||||
} else
|
||||
if (e == fe_init && by_code && !o.empty())
|
||||
if ((e == fe_init || e == fe_modify) && by_code)
|
||||
{
|
||||
const int cat = atoi(fld.get());
|
||||
const TRectype& cac = categoria(gruppo, specie, cat);
|
||||
if (!cac.empty())
|
||||
TString desc;
|
||||
if (cat > 0)
|
||||
{
|
||||
TMask& m = fld.mask();
|
||||
const int pos = m.id2pos(fld.dlg());
|
||||
TMask_field& fout = m.fld(pos + (by_code ? +1 : -1));
|
||||
fout.set(cac.get("S0"));
|
||||
const TRectype& cac = categoria(gruppo, specie, cat);
|
||||
if (!cac.empty())
|
||||
desc = cac.get("S0");
|
||||
}
|
||||
TMask& m = fld.mask();
|
||||
const int pos = m.id2pos(fld.dlg());
|
||||
TMask_field& fout = m.fld(pos + (by_code ? +1 : -1));
|
||||
fout.set(desc);
|
||||
fout.on_hit();
|
||||
} else
|
||||
if (e == fe_close && by_code && !o.empty())
|
||||
{
|
||||
@ -356,4 +363,35 @@ TForm_cespiti::TForm_cespiti(const char* name) : TForm(name)
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Utility varie
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
// Controlla se i campi sono tutti vuoti
|
||||
// Cerified 99%
|
||||
bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const char* fld2,
|
||||
const char* fld3, const char* fld4, const char* fld5,
|
||||
const char* fld6, const char* fld7, const char* fld8)
|
||||
{
|
||||
if (!rec.get_real(fld0).is_zero())
|
||||
return FALSE;
|
||||
if (!rec.get_real(fld1).is_zero())
|
||||
return FALSE;
|
||||
if (fld2 && *fld2 && !rec.get_real(fld2).is_zero())
|
||||
return FALSE;
|
||||
if (fld3 && *fld3 && !rec.get_real(fld3).is_zero())
|
||||
return FALSE;
|
||||
if (fld4 && *fld4 && !rec.get_real(fld4).is_zero())
|
||||
return FALSE;
|
||||
if (fld5 && *fld5 && !rec.get_real(fld5).is_zero())
|
||||
return FALSE;
|
||||
if (fld6 && *fld6 && !rec.get_real(fld6).is_zero())
|
||||
return FALSE;
|
||||
if (fld7 && *fld7 && !rec.get_real(fld7).is_zero())
|
||||
return FALSE;
|
||||
if (fld8 && *fld8 && !rec.get_real(fld8).is_zero())
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -42,8 +42,8 @@ public:
|
||||
bool professionista() const;
|
||||
bool esercizio_costituzione() const;
|
||||
real coefficiente_durata_esercizio() const;
|
||||
bool bollato_stampato() const;
|
||||
int anno_tuir() const { return _anno_tuir; }
|
||||
bool bollato_stampato() const;
|
||||
|
||||
void init_mask(TMask& m);
|
||||
void arrotonda(real &n) const;
|
||||
@ -64,4 +64,9 @@ public:
|
||||
|
||||
TDitta_cespiti& ditta_cespiti();
|
||||
|
||||
// Utility
|
||||
bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const char* fld2 = NULL,
|
||||
const char* fld3 = NULL, const char* fld4 = NULL, const char* fld5 = NULL,
|
||||
const char* fld6 = NULL, const char* fld7 = NULL, const char* fld8 = NULL);
|
||||
|
||||
#endif
|
||||
|
||||
@ -80,7 +80,7 @@ Picture = <ce00.bmp>
|
||||
Module = 11
|
||||
Flags = ""
|
||||
Item_01 = "Parametri collegamento contabilità", "ce0 -3 c", ""
|
||||
Item_02 = "Colleg. contabilitá cat/ces", "", ""
|
||||
Item_02 = "Colleg. contabilità cat/ces", "", ""
|
||||
Item_03 = "St. contr. param. colleg. contab.", "", ""
|
||||
Item_04 = "St. contr. colleg. contab. cat/ces", "", ""
|
||||
Item_05 = "Trasferimento movimenti provvisori", "", ""
|
||||
@ -91,12 +91,12 @@ Caption = "Operazioni giornaliere e fine esercizio"
|
||||
Picture = <ce00.bmp>
|
||||
Module = 11
|
||||
Flags = ""
|
||||
Item_01 = "Anagrafica cespiti", "", ""
|
||||
Item_02 = "Movimenti", "", ""
|
||||
Item_01 = "Anagrafica cespiti", "ce0 -4", "F"
|
||||
Item_02 = "Movimenti", "ce1 -4", "F"
|
||||
Item_03 = "Scelte ammortamento per categoria", "", ""
|
||||
Item_04 = "Scelta ammortamento per cespite", "", ""
|
||||
Item_05 = "Forzatura ammortamento su cespiti", "", ""
|
||||
Item_06 = "Forzatura ammortamento su movimenti", "", ""
|
||||
Item_05 = "Forzatura ammortamento su cespiti", "ce1 -0", "F"
|
||||
Item_06 = "Forzatura ammortamento su movimenti", "ce1 -1", "F"
|
||||
Item_07 = "Esecuzione calcolo ammortamenti", "ce2 -0", "F"
|
||||
|
||||
[PRASSICE_010]
|
||||
@ -124,7 +124,7 @@ Caption = "Servizi"
|
||||
Picture = <ce00.bmp>
|
||||
Module = 11
|
||||
Flags = ""
|
||||
Item_01 = "Cambio esercizio", "", ""
|
||||
Item_01 = "Cambio esercizio", "ce2 -1", ""
|
||||
Item_02 = "Riattribuzione percentuali", "", ""
|
||||
|
||||
|
||||
|
||||
@ -56,6 +56,6 @@ BEGIN
|
||||
FIELD S1
|
||||
USE LOC //tabella localizzazioni ditte
|
||||
INPUT CODTAB F_COD_LOC_IMP
|
||||
DISPLAY " Codice localizzazione @50" CODTAB
|
||||
DISPLAY "Codice localizzazione@50" CODTAB
|
||||
OUTPUT F_COD_LOC_IMP CODTAB
|
||||
END
|
||||
|
||||
@ -28,7 +28,7 @@ BEGIN
|
||||
USE LOC //é la tabella localizzazioni ditte
|
||||
FIELD CODTAB
|
||||
INPUT CODTAB F_LOCALIZE
|
||||
DISPLAY " Localizzazione@41" CODTAB
|
||||
DISPLAY "Localizzazione@41" CODTAB
|
||||
OUTPUT F_LOCALIZE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
142
|
||||
0
|
||||
$movce|0|0|284|0|Movimenti cespiti|||
|
||||
$movce|0|0|291|0|Movimenti cespiti|||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
142
|
||||
22
|
||||
23
|
||||
IDCESPITE|1|10|0|Codice cespite (ZZZZZZZZZZ)
|
||||
IDMOV|1|11|0|Numero movimento (ZZZZZZZZZZZ)
|
||||
DTMOV|5|8|0|Data movimento cespite
|
||||
@ -22,6 +22,8 @@ RIV91|4|18|3|Rivalutazione Legge 413/91
|
||||
RIVGF|4|18|3|Rivalutazione generica fiscale
|
||||
RIVGC|4|18|3|Rivalutazione generica civilistica
|
||||
STAMPATO|8|1|0|Stampato su almeno un bollato in esercizi passati (STBOLLATO)
|
||||
2
|
||||
NUMREG|3|7|0|Numero di registrazione corrispondente di prima nota
|
||||
3
|
||||
IDMOV+IDRET|
|
||||
IDCESPITE+IDMOV|
|
||||
NUMREG+IDMOV|
|
||||
|
||||
@ -116,25 +116,19 @@ BEGIN
|
||||
HELP "Chiave di ricerca alternativa"
|
||||
END
|
||||
|
||||
LIST F_STATOPAIV 2 21
|
||||
STRING F_STATOPAIV 2
|
||||
BEGIN
|
||||
PROMPT 42 4 "Stato CEE "
|
||||
FIELD STATOPAIV
|
||||
KEY 5
|
||||
// KEY 5
|
||||
HELP "Codice ISO dello stato"
|
||||
ITEM " |Italia o extra CEE"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_STATOPAIV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATOPAIV CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_COFI 16
|
||||
|
||||
@ -362,22 +362,16 @@ BEGIN
|
||||
ADD RUN cg0 -1 F
|
||||
END
|
||||
|
||||
LIST F_STATOPAIV 2 18
|
||||
STRING F_STATOPAIV 2
|
||||
BEGIN
|
||||
PROMPT 57 11 ""
|
||||
ITEM " |Italia o extra CEE"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_STATOPAIV
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATOPAIV CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
|
||||
@ -1593,7 +1593,7 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
||||
int anno = date2esc(_datareg_stampa);
|
||||
if (anno != _annoes)
|
||||
if (_numcarat == 1)
|
||||
set_row (_rw, "@131g*");
|
||||
set_row (_rw, "@132g*");
|
||||
else
|
||||
set_row (_rw, "@197g*");
|
||||
|
||||
@ -2052,7 +2052,14 @@ bool TMastrini_application::preprocess_page(int file, int counter)
|
||||
}
|
||||
|
||||
rmov.readat(rec);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ricerca_regiva();
|
||||
_protiva = atol(_mov->curr().get(MOV_PROTIVA));
|
||||
if (_protiva != 0)
|
||||
set_row (_rw,"@127g%5d", _protiva);
|
||||
}
|
||||
_rw = 1;
|
||||
|
||||
return TRUE;
|
||||
@ -2701,7 +2708,7 @@ void TMastrini_application::ricerca_dati_ditta()
|
||||
|
||||
void TMastrini_application::crea_intestazione()
|
||||
{
|
||||
TString sep(132),sep1(198);
|
||||
TString sep(133),sep1(198);
|
||||
sep = "";
|
||||
|
||||
reset_header();
|
||||
@ -2783,16 +2790,16 @@ void TMastrini_application::crea_intestazione()
|
||||
{
|
||||
sep.fill('-'); //Stampa 132 - (sep(132))
|
||||
set_header (6, (const char *) sep);
|
||||
set_header (7,"%s@19g%s@117g%s@131g%s",
|
||||
set_header (7,"%s@19g%s@117g%s@132g%s",
|
||||
trans("Operazione"), trans("Documento"), trans("Contro"), trans("A"));
|
||||
if (_stampa_mov_prov)
|
||||
set_header(7,"@130gM");
|
||||
set_header (8, trans("Data"));
|
||||
if (_stampanum < 3)
|
||||
set_header (8,"@11g%s", trans("Numero"));
|
||||
set_header (8,"@19g%s@30g%s@38g%s@61g%s@95g%s@111g%s@117g%s@131g%s",
|
||||
set_header (8,"@19g%s@30g%s@38g%s@61g%s@95g%s@111g%s@117g%s@127g%s@132g%s",
|
||||
trans("Data"), trans("Numero"), trans("Cod.Causale"), trans("Descrizione"),
|
||||
trans("Dare"), trans("Avere"), trans("Partita"), trans("C"));
|
||||
trans("Dare"), trans("Avere"), trans("Partita"), trans("Prot."), trans("C"));
|
||||
if (_stampa_mov_prov)
|
||||
set_header(8,"@130g%s", trans("P"));
|
||||
sep.fill('-');
|
||||
|
||||
@ -1233,7 +1233,7 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
||||
if (_caus != NULL)
|
||||
delete _caus;
|
||||
|
||||
const char* cc = distinta.tipocf() == 'C' ? _cod_caus : _cod_caus_pag;
|
||||
const char* cc = distinta.tipocf() == 'F' ? _cod_caus_pag : _cod_caus;
|
||||
_caus = new TCausale(cc, _data_op.year());
|
||||
if (!_caus->ok())
|
||||
{
|
||||
@ -1273,10 +1273,10 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
||||
}
|
||||
|
||||
bool dettaglio_rate = FALSE;
|
||||
if (_cliente.tipo() == 'C')
|
||||
dettaglio_rate = _dett_rate_att;
|
||||
else
|
||||
if (distinta.tipocf() == 'F')
|
||||
dettaglio_rate = _dett_rate_pas;
|
||||
else
|
||||
dettaglio_rate = _dett_rate_att;
|
||||
|
||||
const int items = distinta.items(); // Perche' sul file effetti il numero riga distinta e' un long ??
|
||||
|
||||
|
||||
2
gv/batbsce.h
Executable file
2
gv/batbsce.h
Executable file
@ -0,0 +1,2 @@
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
42
in/basticc.uml
Executable file
42
in/basticc.uml
Executable file
@ -0,0 +1,42 @@
|
||||
#include "../ba/ba3200.h"
|
||||
|
||||
PAGE "Stampa Condizioni di consegna" -1 -1 50 8
|
||||
|
||||
STRING F_INIZIO1 3
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da codice "
|
||||
USE %ICC
|
||||
INPUT CODTAB F_INIZIO1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIO1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_FINE1 3
|
||||
BEGIN
|
||||
PROMPT 4 3 "A codice "
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB F_FINE1
|
||||
|
||||
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FINE1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
42
in/bastimt.uml
Executable file
42
in/bastimt.uml
Executable file
@ -0,0 +1,42 @@
|
||||
#include "../ba/ba3200.h"
|
||||
|
||||
PAGE "Stampa Modalita' di trasporto" -1 -1 50 8
|
||||
|
||||
NUMBER F_INIZIO1 1
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da codice "
|
||||
USE %IMT
|
||||
INPUT CODTAB F_INIZIO1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIO1 CODTAB
|
||||
FIELD CODTAB
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_FINE1 1
|
||||
BEGIN
|
||||
PROMPT 4 3 "A codice "
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB F_FINE1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FINE1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 2
|
||||
FLAGS "U"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
40
in/bastint.uml
Executable file
40
in/bastint.uml
Executable file
@ -0,0 +1,40 @@
|
||||
#include "../ba/ba3200.h"
|
||||
|
||||
PAGE "Stampa Natura Transazione" -1 -1 50 8
|
||||
|
||||
NUMBER F_INIZIO1 1
|
||||
BEGIN
|
||||
PROMPT 4 1 "Da codice "
|
||||
USE %INT
|
||||
INPUT CODTAB F_INIZIO1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_INIZIO1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_FINE1 1
|
||||
BEGIN
|
||||
PROMPT 4 3 "A codice "
|
||||
COPY USE F_INIZIO1
|
||||
INPUT CODTAB F_FINE1
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_FINE1 CODTAB
|
||||
FIELD CODTAB
|
||||
GROUP 2
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
2
in/batbicc.h
Executable file
2
in/batbicc.h
Executable file
@ -0,0 +1,2 @@
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
9
in/batbicc.rpt
Executable file
9
in/batbicc.rpt
Executable file
@ -0,0 +1,9 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Condizioni di Consegna
|
||||
1|@3g%s|Codice
|
||||
1|@10g%s|Denominazione
|
||||
|
||||
[Rows]
|
||||
1|CODTAB|@3g@3,ls
|
||||
1|S0|@10g@50,ls
|
||||
45
in/batbicc.uml
Executable file
45
in/batbicc.uml
Executable file
@ -0,0 +1,45 @@
|
||||
#include "batbicc.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 19 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Condizioni di consegna" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bCondizioni di consegna"
|
||||
END
|
||||
|
||||
STRING F_CODICE 3
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
FLAGS "U"
|
||||
USE %ICC
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE %ICC KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
COPY OUTPUT F_CODICE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S0
|
||||
KEY 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
2
in/batbimt.h
Executable file
2
in/batbimt.h
Executable file
@ -0,0 +1,2 @@
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
9
in/batbimt.rpt
Executable file
9
in/batbimt.rpt
Executable file
@ -0,0 +1,9 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Modalita' di Trasporto
|
||||
1|@3g%s|Codice
|
||||
1|@10g%s|Denominazione
|
||||
|
||||
[Rows]
|
||||
1|CODTAB|@3g@1,ls
|
||||
1|S0|@10g@50,ls
|
||||
44
in/batbimt.uml
Executable file
44
in/batbimt.uml
Executable file
@ -0,0 +1,44 @@
|
||||
#include "batbimt.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 19 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Modalita' di trasporto" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bModalita' di trasporto"
|
||||
END
|
||||
|
||||
NUMBER F_CODICE 1
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
USE %IMT
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESCR 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE %IMT KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
COPY OUTPUT F_CODICE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S0
|
||||
KEY 2
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
11
in/batbint.frm
Executable file
11
in/batbint.frm
Executable file
@ -0,0 +1,11 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Natura Transazione
|
||||
1|@3g%s|Codice
|
||||
1|@10g%s|Denominazione
|
||||
1|@62g%s|Op.Triangolari
|
||||
|
||||
[Rows]
|
||||
1|CODTAB|@3g@4,ls
|
||||
1|S0|@10g@50,ls
|
||||
1|S7|@62g@1,ls
|
||||
3
in/batbint.h
Executable file
3
in/batbint.h
Executable file
@ -0,0 +1,3 @@
|
||||
#define F_CODICE 101
|
||||
#define F_DESCR 102
|
||||
#define F_TRIANG 103
|
||||
11
in/batbint.rpt
Executable file
11
in/batbint.rpt
Executable file
@ -0,0 +1,11 @@
|
||||
[Headers]
|
||||
80
|
||||
Tabella Natura Transazione
|
||||
1|@3g%s|Codice
|
||||
1|@10g%s|Denominazione
|
||||
1|@62g%s|Op.Triangolari
|
||||
|
||||
[Rows]
|
||||
1|CODTAB|@3g@4,ls
|
||||
1|S0|@10g@50,ls
|
||||
1|S7|@62g@1,ls
|
||||
51
in/batbint.uml
Executable file
51
in/batbint.uml
Executable file
@ -0,0 +1,51 @@
|
||||
#include "batbint.h"
|
||||
|
||||
TOOLBAR "Toolbar" 0 19 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Natura Transazione" -1 -1 78 18
|
||||
|
||||
GROUPBOX DLG_NULL 78 7
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bNatura Transazione"
|
||||
END
|
||||
|
||||
NUMBER F_CODICE 1
|
||||
BEGIN
|
||||
PROMPT 2 3 "Codice "
|
||||
USE %INT
|
||||
INPUT CODTAB F_CODICE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT F_CODICE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CODTAB
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_DESCR 70 50
|
||||
BEGIN
|
||||
PROMPT 2 5 "Descrizione "
|
||||
USE %INT KEY 2
|
||||
INPUT S0 F_DESCR
|
||||
DISPLAY "Descrizione@70" S0
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
COPY OUTPUT F_CODICE
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD S0
|
||||
KEY 2
|
||||
END
|
||||
|
||||
STRING F_TRIANG 1
|
||||
BEGIN
|
||||
PROMPT 2 8 "Operazioni triangolari "
|
||||
FLAGS "U"
|
||||
FILED S7
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
@ -32,6 +32,7 @@ class TStampaIntra_form : public TForm
|
||||
protected:
|
||||
void print_page(const pagetype p);
|
||||
const bool good() const;
|
||||
virtual bool validate(TForm_item& fld, TToken_string& val);
|
||||
|
||||
public:
|
||||
void print();
|
||||
@ -39,6 +40,23 @@ public:
|
||||
virtual ~TStampaIntra_form ();
|
||||
};
|
||||
|
||||
bool TStampaIntra_form::validate(TForm_item& fld, TToken_string& val)
|
||||
{
|
||||
const TString code(val.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
|
||||
if (code== "_IMP")
|
||||
{
|
||||
real num(fld.get());
|
||||
const int ndec = TCurrency::get_firm_dec() > 0 ? 0 : -3;
|
||||
|
||||
num.round(ndec);
|
||||
fld.set(val);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return TForm::validate(fld, val);
|
||||
}
|
||||
|
||||
TStampaIntra_form::TStampaIntra_form(const char* name, char t, char f, int p, int a) : TForm(name)
|
||||
{
|
||||
_tipo << t;
|
||||
@ -285,7 +303,7 @@ TStampaIntra_mask::TStampaIntra_mask()
|
||||
{ }
|
||||
|
||||
void TStampaIntra_mask::print()
|
||||
{
|
||||
{
|
||||
TStampaIntra_form form(tipo() == 'A' ? "in0100a" : "in0100b", tipo(), frequenza(), periodo(), get_int(R_ANNO));
|
||||
form.print();
|
||||
}
|
||||
|
||||
@ -40,7 +40,9 @@ TIntra_context::TIntra_context()
|
||||
}
|
||||
|
||||
class TRecord_intra : public TString
|
||||
{
|
||||
{
|
||||
int _ndec;
|
||||
|
||||
protected:
|
||||
virtual void print_on(ostream& o) const;
|
||||
|
||||
@ -124,7 +126,7 @@ void TRecord_intra::put(char chr, int pos)
|
||||
void TRecord_intra::reset(const TIntra_context& ic)
|
||||
{
|
||||
spaces();
|
||||
put("INTRA", 1, 5);
|
||||
put("EUROA", 1, 5);
|
||||
const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm());
|
||||
TString16 cod;
|
||||
cod << ditta.get_char(NDT_TIPOA) << '|';
|
||||
@ -173,9 +175,9 @@ void TRecord_intra::genera_testata(const TIntra_context& ic)
|
||||
put("", 48, 11, "Z");
|
||||
|
||||
put(ic._righe_riep, 59, 5);
|
||||
put(ic._totale_riep, 64, 13, -3);
|
||||
put(ic._totale_riep, 64, 13, _ndec);
|
||||
put(ic._righe_rett, 77, 5);
|
||||
put(ic._totale_rett, 82, 13, -3);
|
||||
put(ic._totale_rett, 82, 13, _ndec);
|
||||
}
|
||||
|
||||
// Scrive un intero record del file riepiloghi/rettifiche
|
||||
@ -191,7 +193,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
put('1', 23);
|
||||
put(rec.get("STATO"), 29, 2);
|
||||
put(rec.get("PIVA"), 31, 12);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, -3);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||
put(rec.get_real("AMMVALUTA"), 56, 13);
|
||||
put(rec.get_char("NATURA"), 69);
|
||||
put(rec.get("NOMENCL"), 70, 8, "RZ");
|
||||
@ -199,7 +201,7 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
{
|
||||
put(rec.get_real("MASSAKG"), 78, 10, 0);
|
||||
put(rec.get_real("MASSAUMS"), 88, 10, 0);
|
||||
put(rec.get_real("VALSTAT"), 98, 13, -3);
|
||||
put(rec.get_real("VALSTAT"), 98, 13, _ndec);
|
||||
put(rec.get_char("CONSEGNA"), 111);
|
||||
put(rec.get_char("TRASPORTO"), 112);
|
||||
put(rec.get("PAESE"), 113, 2);
|
||||
@ -224,12 +226,12 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
put(rec.get("STATO"), 34, 2);
|
||||
put(rec.get("PIVA"), 36, 12);
|
||||
put(rec.get("SEGNORETT"), 48, 1);
|
||||
put(rec.get_real("AMMLIRE"), 49, 13, -3);
|
||||
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
||||
put(rec.get_real("AMMVALUTA"), 62, 13);
|
||||
put(rec.get_char("NATURA"), 75);
|
||||
put(rec.get("NOMENCL"), 76, 8, "RZ");
|
||||
if (ic._freq == 'M')
|
||||
put(rec.get_real("VALSTAT"), 84, 13, -3);
|
||||
put(rec.get_real("VALSTAT"), 84, 13, _ndec);
|
||||
else
|
||||
put("", 84, 13);
|
||||
}
|
||||
@ -238,14 +240,14 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
put('1', 23);
|
||||
put(rec.get("STATO"), 29, 2);
|
||||
put(rec.get("PIVA"), 31, 12);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, -3);
|
||||
put(rec.get_real("AMMLIRE"), 43, 13, _ndec);
|
||||
put(rec.get_char("NATURA"), 56);
|
||||
put(rec.get("NOMENCL"), 57, 8, "RZ");
|
||||
if (ic._freq == 'M')
|
||||
{
|
||||
put(rec.get_real("MASSAKG"), 65, 10);
|
||||
put(rec.get_real("MASSAUMS"), 75, 10);
|
||||
put(rec.get_real("VALSTAT"), 85, 13, -3);
|
||||
put(rec.get_real("VALSTAT"), 85, 13, _ndec);
|
||||
put(rec.get_char("CONSEGNA"), 98);
|
||||
put(rec.get_char("TRASPORTO"), 99);
|
||||
put(rec.get("PAESE"), 100, 2);
|
||||
@ -269,11 +271,11 @@ void TRecord_intra::put(const TRectype& rec, TIntra_context& ic)
|
||||
put(rec.get("STATO"), 34, 2);
|
||||
put(rec.get("PIVA"), 36, 12);
|
||||
put(rec.get("SEGNORETT"), 48, 1);
|
||||
put(rec.get_real("AMMLIRE"), 49, 13, -3);
|
||||
put(rec.get_real("AMMLIRE"), 49, 13, _ndec);
|
||||
put(rec.get("NATURA"), 62, 1);
|
||||
put(rec.get("NOMENCL"), 63, 8, "RZ");
|
||||
if (ic._freq == 'M')
|
||||
put(rec.get_real("VALSTAT"), 71, 13, -3);
|
||||
put(rec.get_real("VALSTAT"), 71, 13, _ndec);
|
||||
else
|
||||
put("", 71, 13);
|
||||
}
|
||||
@ -294,7 +296,9 @@ void TRecord_intra::print_on(ostream& o) const
|
||||
}
|
||||
|
||||
TRecord_intra::TRecord_intra() : TString(132)
|
||||
{ }
|
||||
{
|
||||
_ndec = TCurrency::get_firm_dec() > 0 ? 0 : -3;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -466,6 +470,8 @@ protected:
|
||||
|
||||
void TDischetto_app::main_loop()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO,
|
||||
LF_INTRA, LF_RINTRA, LF_RIEPRETT, 0);
|
||||
TDischetto_mask m;
|
||||
while (m.run() == K_ENTER)
|
||||
m.genera_dischetto();
|
||||
|
||||
@ -53,19 +53,29 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
const bool acq = tipo() == 'A';
|
||||
m.show(-GR_ACQUISTI, acq); // Mostra i gruppi di campi
|
||||
m.show(-GR_CESSIONI, !acq); // consoni al tipo movimento
|
||||
/*
|
||||
const bool req = frequenza() == 'M';
|
||||
for (int i = m.fields()-1; i >= 0; i--)
|
||||
{
|
||||
TMask_field& f = m.fld(i);
|
||||
if (f.dlg() <= F_NOMENCLATURA)
|
||||
break;
|
||||
if (f.is_edit())
|
||||
f.check_type(req ? CHECK_REQUIRED : CHECK_NORMAL);
|
||||
}
|
||||
*/
|
||||
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
m.field(F_CONSEGNA).check_type(chk);
|
||||
m.field(F_TRASPORTO).check_type(chk);
|
||||
}
|
||||
break;
|
||||
case F_CLIFO:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
const TRectype& curr = efield(F_CLIFO).browse()->cursor()->curr();
|
||||
TString16 codval = curr.get("VALINTRA");
|
||||
|
||||
if (codval.empty())
|
||||
codval = curr.get("CODVAL");
|
||||
|
||||
set(F_VALUTA, codval);
|
||||
|
||||
}
|
||||
break;
|
||||
case F_VALUTA:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
@ -84,15 +94,29 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_TOT_DOC:
|
||||
if (e == fe_close)
|
||||
{
|
||||
const real totdoc = get_real(F_TOT_DOC);
|
||||
const real totdocimm = get_real(F_TOT_IMM);
|
||||
|
||||
if (totdoc != totdocimm)
|
||||
{
|
||||
const TString str_totdoc(totdoc.string());
|
||||
return error_box("Totale documento (%s) diverso dal totale documento immesso(%s)", (const char *)str_totdoc, (const char *)totdocimm.string());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_AMM_LIRE:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TMask& m = o.mask();
|
||||
|
||||
if (m.get_real(F_AMM_VALUTA).is_zero())
|
||||
{
|
||||
TCurrency curr(real(o.get()), "_FIRM");
|
||||
TCurrency curr(real(o.get()));
|
||||
curr.change_value(get(F_VALUTA), get_real(F_CAMBIO));
|
||||
m.set(F_AMM_VALUTA, curr.string(), TRUE);
|
||||
m.set(F_AMM_VALUTA, curr, TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -103,8 +127,8 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
if (m.get_real(F_AMM_LIRE).is_zero())
|
||||
{
|
||||
TCurrency curr(real(o.get()), get(F_VALUTA), get_real(F_CAMBIO));
|
||||
curr.change_value("_FIRM");
|
||||
m.set(F_AMM_LIRE, curr.string(), TRUE);
|
||||
curr.change_to_firm_val();
|
||||
m.set(F_AMM_LIRE, curr, TRUE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -123,7 +147,21 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
}
|
||||
|
||||
bool TImmissione_mask::on_sheet_event(TSheet_field& s, TField_event e, int row)
|
||||
{
|
||||
{
|
||||
if (e == se_notify_modify)
|
||||
{
|
||||
real amm_lire;
|
||||
int rows = s.items();
|
||||
|
||||
for (int i = 0; i < rows; i++)
|
||||
{
|
||||
TToken_string & r = s.row(i);
|
||||
const real val = r.get(s.cid2index(F_AMM_LIRE));
|
||||
|
||||
amm_lire += val;
|
||||
}
|
||||
s.mask().set(F_TOT_IMM, amm_lire);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -131,7 +169,7 @@ bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e,
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_NOMENCLATURA:
|
||||
case F_NOMENCLATURA3:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
|
||||
30
in/in0500a.h
30
in/in0500a.h
@ -24,20 +24,22 @@
|
||||
|
||||
#define F_RIGHE 350
|
||||
|
||||
#define F_AMM_LIRE 101
|
||||
#define F_AMM_VALUTA 102
|
||||
#define F_NATURA_TRANS 103
|
||||
#define F_NOMENCLATURA 104
|
||||
#define F_MASSA_KG 105
|
||||
#define F_MASSA_UMS 106
|
||||
#define F_UMS 107
|
||||
#define F_VALORE_STAT 108
|
||||
#define F_CONSEGNA 109
|
||||
#define F_TRASPORTO 110
|
||||
#define F_PAESE 111
|
||||
#define F_PAESE_ORIG 112
|
||||
#define F_PAESE_DUMMY 212
|
||||
#define F_PROV 113
|
||||
#define F_AMM_LIRE 101
|
||||
#define F_AMM_VALUTA 102
|
||||
#define F_NATURA_TRANS 103
|
||||
#define F_NOMENCLATURA1 104
|
||||
#define F_NOMENCLATURA2 105
|
||||
#define F_NOMENCLATURA3 106
|
||||
|
||||
#define F_MASSA_KG 107
|
||||
#define F_MASSA_UMS 108
|
||||
#define F_UMS 109
|
||||
#define F_VALORE_STAT 110
|
||||
#define F_CONSEGNA 111
|
||||
#define F_TRASPORTO 112
|
||||
#define F_PAESE_ORIG 113
|
||||
#define F_PAESE_DUMMY 213
|
||||
#define F_PROV 114
|
||||
|
||||
#define GR_CESSIONI 1
|
||||
#define GR_ACQUISTI 2
|
||||
|
||||
182
in/in0500a.uml
182
in/in0500a.uml
@ -122,24 +122,9 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
LIST F_STATO 2 14
|
||||
STRING F_STATO 2
|
||||
BEGIN
|
||||
PROMPT 1 6 "Stato CEE "
|
||||
ITEM " |"
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
@ -155,9 +140,9 @@ BEGIN
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
COPY OUTPUT F_CLIFO
|
||||
VALIDATE PI_FUNC F_STATO
|
||||
// VALIDATE PI_FUNC F_STATO
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Lunghezza partita IVA errata"
|
||||
// WARNING "Lunghezza partita IVA errata"
|
||||
END
|
||||
|
||||
CURRENCY F_TOT_DOC 18
|
||||
@ -169,7 +154,8 @@ END
|
||||
CURRENCY F_TOT_IMM 18
|
||||
BEGIN
|
||||
PROMPT 1 8 "Totale documento immesso "
|
||||
FIELD TOTDOCIMM
|
||||
FIELD TOTDOCIMM
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_VALUTA 3
|
||||
@ -185,7 +171,7 @@ BEGIN
|
||||
FIELD CODVAL
|
||||
END
|
||||
|
||||
NUMBER F_CAMBIO 18 5
|
||||
NUMBER F_CAMBIO 18 6
|
||||
BEGIN
|
||||
PROMPT 53 8 "Cambio "
|
||||
CHECKTYPE REQUIRED
|
||||
@ -195,19 +181,20 @@ END
|
||||
SPREADSHEET F_RIGHE
|
||||
BEGIN
|
||||
PROMPT 0 9 ""
|
||||
ITEM "Ammontare\nLire@18"
|
||||
ITEM "Ammontare\nOperaz.@18"
|
||||
ITEM "Ammontare\nValuta@18"
|
||||
ITEM "Natura\nTransaz.@7"
|
||||
ITEM "Nomenclat.\ncombinata@10"
|
||||
ITEM "@5"
|
||||
ITEM "@5"
|
||||
ITEM "Massa Kg@13"
|
||||
ITEM "Massa Ums@13"
|
||||
ITEM "U.M."
|
||||
ITEM "Valore\nStatistico@15"
|
||||
ITEM "Modo\nTrasp.@5"
|
||||
ITEM "Condiz.\nCons.@6"
|
||||
ITEM "Paese@6"
|
||||
ITEM "Paese\nOrig.@6"
|
||||
ITEM "Provincia"
|
||||
ITEM "Modo\nTrasp.@5"
|
||||
ITEM "Paese\nDest.@6"
|
||||
ITEM "Provincia\nOrig."
|
||||
FLAGS "A"
|
||||
USE LF_RINTRA KEY NUMRIG
|
||||
INPUT NUMREG F_NUM_REG
|
||||
@ -217,11 +204,11 @@ ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Righe" -1 -1 70 11
|
||||
PAGE "Righe" -1 -1 78 11
|
||||
|
||||
CURRENCY F_AMM_LIRE 18
|
||||
BEGIN
|
||||
PROMPT 1 1 "Ammontare in lire "
|
||||
PROMPT 1 1 "Ammontare operaz. "
|
||||
FIELD AMMLIRE
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
@ -236,34 +223,50 @@ END
|
||||
|
||||
NUMBER F_NATURA_TRANS 1
|
||||
BEGIN
|
||||
PROMPT 1 3 "Natura transazione "
|
||||
SHEET "Cod.|Descrizione@66"
|
||||
INPUT F_NATURA_TRANS
|
||||
ITEM "1|Acquisto o vendita (compreso il baratto)"
|
||||
ITEM "2|Restituzione o sostituzione di merci"
|
||||
ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea"
|
||||
ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)"
|
||||
ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata"
|
||||
ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile"
|
||||
ITEM "9|Altre transazioni"
|
||||
OUTPUT F_NATURA_TRANS
|
||||
PROMPT 1 3 "Natura transazione "
|
||||
USE %INT
|
||||
INPUT CODTAB F_NATURA_TRANS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT F_NATURA_TRANS CODTAB
|
||||
FIELD NATURA
|
||||
END
|
||||
|
||||
NUMBER F_NOMENCLATURA 8
|
||||
STRING F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 36 3 "Nomenclatura combinata "
|
||||
FLAGS "Z"
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB F_NOMENCLATURA
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
INPUT CODTAB[1,4] F_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NOMENCL
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NOMENCL[1,4]
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 67 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[5,6]
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 72 3 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[7,8]
|
||||
END
|
||||
|
||||
NUMBER F_MASSA_KG 13 5
|
||||
@ -293,99 +296,64 @@ BEGIN
|
||||
FIELD UMS
|
||||
END
|
||||
|
||||
NUBER F_VALORE_STAT 15
|
||||
CURRENCY F_VALORE_STAT 15
|
||||
BEGIN
|
||||
PROMPT 1 5 "Valore statistico "
|
||||
PICTURE "."
|
||||
FIELD VALSTAT
|
||||
END
|
||||
|
||||
STRING F_CONSEGNA 3
|
||||
BEGIN
|
||||
PROMPT 43 5 "Condizioni consegna "
|
||||
SHEET "Codice|Descrizione@45"
|
||||
INPUT F_CONSEGNA
|
||||
ITEM "EXW|Franco fabbrica"
|
||||
ITEM "FCA|Franco vettore"
|
||||
ITEM "FAS|Franco sotto bordo"
|
||||
ITEM "FOB|Franco a bordo"
|
||||
ITEM "CFR|Costo e nolo"
|
||||
ITEM "CIF|Costo, assicurazione, nolo"
|
||||
ITEM "CPT|Nolo/porto pagato fino a ..."
|
||||
ITEM "CIP|Nolo/porto e assicurazione pagati fino a ..."
|
||||
ITEM "DAF|Reso frontiera"
|
||||
ITEM "DES|Reso franco bordo nave a destino"
|
||||
ITEM "DEQ|Reso franco banchina"
|
||||
ITEM "DDU|Reso non sdoganato"
|
||||
ITEM "DDP|Reso sdoganato"
|
||||
OUTPUT F_CONSEGNA
|
||||
USE %ICC
|
||||
INPUT CODTAB F_CONSEGNA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CONSEGNA CODTAB
|
||||
FIELD CONSEGNA
|
||||
END
|
||||
|
||||
LIST F_TRASPORTO 1 20
|
||||
NUMBER F_TRASPORTO 1
|
||||
BEGIN
|
||||
PROMPT 1 6 "Modo di trasporto "
|
||||
ITEM "1|Marittimo"
|
||||
ITEM "2|Ferroviario"
|
||||
ITEM "3|Stradale"
|
||||
ITEM "4|Aereo"
|
||||
ITEM "5|Spedizione postale"
|
||||
ITEM "7|Installazioni fisse"
|
||||
ITEM "8|Via acqua"
|
||||
ITEM "9|Propulsione propria"
|
||||
USE %IMT
|
||||
INPUT CODTAB F_TRASPORTO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TRASPORTO CODTAB
|
||||
FIELD TRASPORTO
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 7 "Pase destinazione"
|
||||
GROUP GR_CESSIONI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 7 "Pase provenienza"
|
||||
PROMPT 1 7 "Paese provenienza"
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
LIST F_PAESE 2 20
|
||||
BEGIN
|
||||
PROMPT 19 7 ""
|
||||
ITEM " |"
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
FIELD PAESE
|
||||
END
|
||||
|
||||
STRING F_PAESE_ORIG 2
|
||||
BEGIN
|
||||
PROMPT 1 8 "Pase di origine "
|
||||
PROMPT 20 7 ""
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_PAESE_ORIG
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_PAESE_ORIG CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD PAESEORIG
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
|
||||
STRING F_PAESE_DUMMY 2
|
||||
BEGIN
|
||||
PROMPT 81 8 "Pase anti NFCHECK "
|
||||
PROMPT 81 8 "Paese anti NFCHECK "
|
||||
FLAGS "D"
|
||||
GROUP GR_CESSIONI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 43 7 "Provincia d'origine"
|
||||
PROMPT 43 7 "Provincia d'origine"
|
||||
GROUP GR_CESSIONI
|
||||
END
|
||||
|
||||
@ -399,6 +367,8 @@ STRING F_PROV 2
|
||||
BEGIN
|
||||
PROMPT 64 7 ""
|
||||
FLAGS "U"
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Provincia assente"
|
||||
FIELD PROV
|
||||
END
|
||||
|
||||
|
||||
@ -29,6 +29,31 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_VALORE_STAT:
|
||||
if (e == fe_init)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
m.field(F_CONSEGNA).check_type(chk);
|
||||
m.field(F_TRASPORTO).check_type(chk);
|
||||
}
|
||||
break;
|
||||
case F_PARTITA_IVA:
|
||||
if (e == fe_modify)
|
||||
{
|
||||
const TRectype& curr = efield(F_PARTITA_IVA).browse()->cursor()->curr();
|
||||
TString16 codval = curr.get("VALINTRA");
|
||||
|
||||
if (codval.empty())
|
||||
codval = curr.get("CODVAL");
|
||||
|
||||
set(F_VALUTA, codval);
|
||||
}
|
||||
break;
|
||||
case F_NATURA_TRANS:
|
||||
if (e == fe_modify || e == fe_init)
|
||||
o.check();
|
||||
@ -46,7 +71,7 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
TRiepiloghi_mask::TRiepiloghi_mask()
|
||||
: TIntra_mask("in0600a")
|
||||
{
|
||||
first_focus(F_NUM_RIG);
|
||||
// first_focus(F_NUM_RIG);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -66,13 +91,15 @@ protected:
|
||||
virtual bool user_destroy();
|
||||
virtual bool get_next_key(TToken_string& k);
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual void init_insert_mode(TMask& m);
|
||||
virtual bool save_and_new() const { return TRUE; };
|
||||
public:
|
||||
};
|
||||
|
||||
bool TRiepiloghi_intra::user_create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_CLIFO,
|
||||
LF_RIEPRETT, 0);
|
||||
LF_INTRA, LF_RINTRA, LF_RIEPRETT, 0);
|
||||
_rel = new TRelation(LF_RIEPRETT);
|
||||
_msk = new TRiepiloghi_mask;
|
||||
|
||||
@ -108,6 +135,11 @@ bool TRiepiloghi_intra::get_next_key(TToken_string& k)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TRiepiloghi_intra::init_insert_mode(TMask& m)
|
||||
{
|
||||
m.enable(F_VALUTA);
|
||||
}
|
||||
|
||||
void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
{
|
||||
TEdit_field& numrig = m.efield(F_NUM_RIG);
|
||||
@ -118,7 +150,8 @@ void TRiepiloghi_intra::init_query_mode(TMask& m)
|
||||
m.set(F_ANNO, curr.get("ANNO"));
|
||||
m.set(F_TIPO, curr.get("TIPO"), TRUE);
|
||||
m.set(F_PERIODO_M, curr.get("PERIODO"));
|
||||
m.set(F_PERIODO_T, curr.get("PERIODO"));
|
||||
m.set(F_PERIODO_T, curr.get("PERIODO"));
|
||||
m.disable(F_VALUTA);
|
||||
}
|
||||
|
||||
int in0600(int argc, char* argv[])
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
#define F_NATURA_TRANS 321
|
||||
#define F_NATURA_DESCR 322
|
||||
#define F_NOMENCLATURA 323
|
||||
#define F_NOMENCLATURA1 323
|
||||
#define F_NOMENCL_DESC 324
|
||||
#define F_CONSEGNA 325
|
||||
#define F_CONSEGNA_DESC 326
|
||||
@ -29,6 +29,9 @@
|
||||
#define F_VALORE_STAT 353
|
||||
#define F_MASSA_KG 354
|
||||
#define F_MASSA_UMS 355
|
||||
#define F_NOMENCLATURA2 356
|
||||
#define F_NOMENCLATURA3 357
|
||||
#define F_TRASPORTO_DESC 358
|
||||
|
||||
#define GR_CESSIONI 1
|
||||
#define GR_ACQUISTI 2
|
||||
|
||||
242
in/in0600a.uml
242
in/in0600a.uml
@ -4,11 +4,6 @@ TOOLBAR "Toolbar" 0 -3 0 3
|
||||
|
||||
#include <toolbar.h>
|
||||
|
||||
BUTTON F_RIEPILOGHI 28 1
|
||||
BEGIN
|
||||
PROMPT -11 0 "~Generazione Riepiloghi"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Riepiloghi INTRA" -1 -1 78 18
|
||||
@ -34,28 +29,9 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST F_TIPO 1 10
|
||||
BEGIN
|
||||
PROMPT 1 3 "Tipo riepilogo "
|
||||
ITEM "C|Cessioni"
|
||||
MESSAGE "C",F_TIPO_CF|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@
|
||||
ITEM "A|Acquisti"
|
||||
MESSAGE "F",F_TIPO_CF|SHOW,GR_ACQUISTI@|HIDE,GR_CESSIONI@
|
||||
KEY 1
|
||||
FIELD TIPO
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 33 3 "Anno "
|
||||
FLAGS "AU"
|
||||
KEY 1
|
||||
FIELD ANNO
|
||||
END
|
||||
|
||||
LIST F_PERIODO_M 2 16
|
||||
BEGIN
|
||||
PROMPT 50 3 "Periodo "
|
||||
PROMPT 1 3 "Periodo "
|
||||
FLAGS "AM"
|
||||
FIELD PERIODO
|
||||
KEY 1
|
||||
@ -63,7 +39,7 @@ END
|
||||
|
||||
LIST F_PERIODO_T 2 16
|
||||
BEGIN
|
||||
PROMPT 50 3 "Periodo "
|
||||
PROMPT 1 3 "Periodo "
|
||||
ITEM "01|Gennaio-Marzo"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
ITEM "02|Aprile-Giugno"
|
||||
@ -78,26 +54,45 @@ END
|
||||
|
||||
LIST F_PERIODO_A 2 16
|
||||
BEGIN
|
||||
PROMPT 50 3 "Periodo "
|
||||
PROMPT 1 3 "Periodo "
|
||||
ITEM "01|Annuale"
|
||||
MESSAGE COPY,F_PERIODO_M
|
||||
FIELD PERIODO
|
||||
KEY 1
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 33 3 "Anno "
|
||||
FLAGS "AU"
|
||||
KEY 1
|
||||
FIELD ANNO
|
||||
END
|
||||
|
||||
LIST F_TIPO 1 10
|
||||
BEGIN
|
||||
PROMPT 49 3 "Tipo riepilogo "
|
||||
ITEM "C|Cessioni"
|
||||
MESSAGE "C",F_TIPO_CF|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@
|
||||
ITEM "A|Acquisti"
|
||||
MESSAGE "F",F_TIPO_CF|SHOW,GR_ACQUISTI@|HIDE,GR_CESSIONI@
|
||||
KEY 1
|
||||
FIELD TIPO
|
||||
END
|
||||
|
||||
NUBER F_NUM_RIG 7
|
||||
BEGIN
|
||||
PROMPT 1 4 "Riga di riepilogo "
|
||||
USE LF_RIEPRETT
|
||||
INPUT TIPO F_TIPO SELECT
|
||||
INPUT ANNO F_ANNO SELECT
|
||||
INPUT PERIODO F_PERIODO_M
|
||||
INPUT PERIODO F_PERIODO_M SELECT
|
||||
INPUT NUMRIG F_NUM_RIG
|
||||
DISPLAY "Tipo" TIPO
|
||||
DISPLAY "Anno" ANNO
|
||||
DISPLAY "Periodo" PERIODO
|
||||
// DISPLAY "Tipo" TIPO
|
||||
// DISPLAY "Anno" ANNO
|
||||
// DISPLAY "Periodo" PERIODO
|
||||
DISPLAY "Numero" NUMRIG
|
||||
DISPLAY "Stato" STATO
|
||||
// DISPLAY "Stato" STATO
|
||||
DISPLAY "Partita IVA" PIVA
|
||||
DISPLAY "Natura" NATURA
|
||||
DISPLAY "Nomenclatura" NOMENCL
|
||||
@ -112,23 +107,16 @@ BEGIN
|
||||
KEY 1
|
||||
END
|
||||
|
||||
LIST F_STATO 2 16
|
||||
STRING F_STATO 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Stato CEE "
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
PROMPT 1 5 "Stato CEE "
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD STATO
|
||||
END
|
||||
|
||||
@ -154,10 +142,11 @@ BEGIN
|
||||
OUTPUT F_STATO STATOPAIV
|
||||
OUTPUT F_PARTITA_IVA PAIV
|
||||
OUTPUT F_PARTITA_DESC RAGSOC
|
||||
VALIDATE PI_FUNC F_STATO
|
||||
// VALIDATE PI_FUNC F_STATO
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Lunghezza partita IVA errata"
|
||||
// WARNING "Lunghezza partita IVA errata"
|
||||
FIELD PIVA
|
||||
ADD RUN CG0 -1 /uPRASSI
|
||||
END
|
||||
|
||||
STRING F_PARTITA_DESC 50
|
||||
@ -170,19 +159,13 @@ END
|
||||
NUMBER F_NATURA_TRANS 1
|
||||
BEGIN
|
||||
PROMPT 1 8 "Natura transazione "
|
||||
SHEET "Cod.|Descrizione@66"
|
||||
INPUT F_NATURA_TRANS
|
||||
ITEM "1|Acquisto o vendita (compreso il baratto)"
|
||||
ITEM "2|Restituzione o sostituzione di merci"
|
||||
ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea"
|
||||
ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)"
|
||||
ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata"
|
||||
ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile"
|
||||
ITEM "9|Altre transazioni"
|
||||
OUTPUT F_NATURA_TRANS
|
||||
OUTPUT F_NATURA_DESCR
|
||||
USE %INT
|
||||
INPUT CODTAB F_NATURA_TRANS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT F_NATURA_TRANS CODTAB
|
||||
OUTPUT F_NATURA_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NATURA
|
||||
END
|
||||
|
||||
@ -197,46 +180,63 @@ BEGIN
|
||||
PROMPT 1 9 "Nomenclatura"
|
||||
END
|
||||
|
||||
NUMBER F_NOMENCLATURA 8
|
||||
STRING F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 1 10 "combinata "
|
||||
FLAGS "Z"
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB F_NOMENCLATURA
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
INPUT CODTAB[1,4] F_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NOMENCLATURA CODTAB
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
OUTPUT F_NOMENCL_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NOMENCL
|
||||
FIELD NOMENCL[1,4]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCL_DESC 50
|
||||
STRING F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 26 10 ""
|
||||
PROMPT 22 10 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
FIELD NOMENCL[5,6]
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 28 10 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
FIELD NOMENCL[7,8]
|
||||
WARNING "Nomenclatura combinata assente"
|
||||
END
|
||||
|
||||
STRING F_NOMENCL_DESC 40
|
||||
BEGIN
|
||||
PROMPT 36 10 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_CONSEGNA 3
|
||||
BEGIN
|
||||
PROMPT 1 11 "Condiz. consegna "
|
||||
SHEET "Codice|Descrizione@45"
|
||||
INPUT F_CONSEGNA
|
||||
ITEM "EXW|Franco fabbrica"
|
||||
ITEM "FCA|Franco vettore"
|
||||
ITEM "FAS|Franco sotto bordo"
|
||||
ITEM "FOB|Franco a bordo"
|
||||
ITEM "CFR|Costo e nolo"
|
||||
ITEM "CIF|Costo, assicurazione, nolo"
|
||||
ITEM "CPT|Nolo/porto pagato fino a ..."
|
||||
ITEM "CIP|Nolo/porto e assicurazione pagati fino a ..."
|
||||
ITEM "DAF|Reso frontiera"
|
||||
ITEM "DES|Reso franco bordo nave a destino"
|
||||
ITEM "DEQ|Reso franco banchina"
|
||||
ITEM "DDU|Reso non sdoganato"
|
||||
ITEM "DDP|Reso sdoganato"
|
||||
OUTPUT F_CONSEGNA
|
||||
OUTPUT F_CONSEGNA_DESC
|
||||
USE %ICC
|
||||
INPUT CODTAB F_CONSEGNA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CONSEGNA CODTAB
|
||||
OUTPUT F_CONSEGNA_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD CONSEGNA
|
||||
END
|
||||
|
||||
@ -246,58 +246,58 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
LIST F_TRASPORTO 1 20
|
||||
NUMBER F_TRASPORTO 1
|
||||
BEGIN
|
||||
PROMPT 1 12 "Modo di trasporto "
|
||||
ITEM "1|Marittimo"
|
||||
ITEM "2|Ferroviario"
|
||||
ITEM "3|Stradale"
|
||||
ITEM "4|Aereo"
|
||||
ITEM "5|Spedizione postale"
|
||||
ITEM "7|Installazioni fisse"
|
||||
ITEM "8|Via acqua"
|
||||
ITEM "9|Propulsione propria"
|
||||
USE %IMT
|
||||
INPUT CODTAB F_TRASPORTO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_TRASPORTO CODTAB
|
||||
OUTPUT F_TRASPORTO_DESC S0
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD TRASPORTO
|
||||
END
|
||||
|
||||
STRING F_TRASPORTO_DESC 50
|
||||
BEGIN
|
||||
PROMPT 26 12 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Pase di destinazione"
|
||||
PROMPT 1 13 "Paese di destinazione"
|
||||
GROUP GR_CESSIONI
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 1 13 "Pase di provenienza"
|
||||
PROMPT 1 13 "Paese di provenienza"
|
||||
GROUP GR_ACQUISTI
|
||||
END
|
||||
|
||||
LIST F_PAESE 2 20
|
||||
STRING F_PAESE 2
|
||||
BEGIN
|
||||
PROMPT 22 13 ""
|
||||
ITEM " |"
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_PAESE
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_PAESE CODTAB
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
FIELD PAESE
|
||||
END
|
||||
|
||||
STRING F_PAESE_ORIG 2
|
||||
BEGIN
|
||||
PROMPT 1 14 "Pase di origine "
|
||||
PROMPT 1 14 "Paese di origine "
|
||||
GROUP GR_ACQUISTI
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "U"
|
||||
FIELD PAESEORIG
|
||||
END
|
||||
|
||||
@ -329,8 +329,13 @@ END
|
||||
STRING F_VALUTA 3
|
||||
BEGIN
|
||||
PROMPT 41 15 "in valuta "
|
||||
USE %VAL
|
||||
INPUT CODTAB F_VALUTA
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_VALUTA CODTAB
|
||||
FIELD CODVAL
|
||||
FLAGS "D"
|
||||
FLAGS "UZ"
|
||||
END
|
||||
|
||||
CURRENCY F_AMM_VALUTA 18
|
||||
@ -340,10 +345,9 @@ BEGIN
|
||||
FIELD AMMVALUTA
|
||||
END
|
||||
|
||||
NUMBER F_VALORE_STAT 18
|
||||
CURRENCY F_VALORE_STAT 18
|
||||
BEGIN
|
||||
PROMPT 1 16 "Valore statistico "
|
||||
PICTURE "."
|
||||
FIELD VALSTAT
|
||||
END
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include <relapp.h>
|
||||
#include <relapp.h>
|
||||
#include <recarray.h>
|
||||
|
||||
#include "in0.h"
|
||||
#include "in0700a.h"
|
||||
@ -35,6 +36,17 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
show(O_PERIODO_A, field(F_PERIODO_A).shown());
|
||||
}
|
||||
break;
|
||||
case F_VALORE_STAT:
|
||||
if (e == fe_init)
|
||||
{
|
||||
TMask& m = o.mask();
|
||||
TString key ; key << main_app().get_firm();
|
||||
const bool req = frequenza() == 'M' && !cache().get(LF_NDITTE, key).get_bool("NONOBBSTAT");
|
||||
const CheckType chk = req ? CHECK_REQUIRED : CHECK_NORMAL;
|
||||
|
||||
m.field(F_VALORE_STAT).check_type(chk);
|
||||
}
|
||||
break;
|
||||
case O_NUM_RIG:
|
||||
if ((e == fe_init || e == fe_modify) && !o.empty())
|
||||
{
|
||||
@ -45,7 +57,7 @@ bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long j
|
||||
enable(-GR_ORIGINAL, !ok);
|
||||
if (e == fe_modify && insert_mode())
|
||||
{
|
||||
for (short dlg = O_STATO; dlg <= O_NOMENCLATURA; dlg++)
|
||||
for (short dlg = O_STATO; dlg <= O_NOMENCLATURA3; dlg++)
|
||||
{
|
||||
const int pos = id2pos(dlg);
|
||||
if (pos >= 0)
|
||||
|
||||
18
in/in0700a.h
18
in/in0700a.h
@ -12,12 +12,14 @@
|
||||
#define O_PARTITA_DESC 111
|
||||
#define O_NUM_RIG 112
|
||||
|
||||
#define O_NATURA_TRANS 121
|
||||
#define O_NOMENCLATURA 122
|
||||
#define O_AMM_LIRE 123
|
||||
#define O_AMM_VALUTA 124
|
||||
#define O_VALUTA 125
|
||||
#define O_VALORE_STAT 126
|
||||
#define O_NATURA_TRANS 121
|
||||
#define O_NOMENCLATURA1 122
|
||||
#define O_AMM_LIRE 123
|
||||
#define O_AMM_VALUTA 124
|
||||
#define O_VALUTA 125
|
||||
#define O_VALORE_STAT 126
|
||||
#define O_NOMENCLATURA2 127
|
||||
#define O_NOMENCLATURA3 128
|
||||
|
||||
#define F_TIPO 203
|
||||
#define F_ANNO 204
|
||||
@ -31,10 +33,12 @@
|
||||
#define F_NUM_RIG 212
|
||||
#define F_SEGNO 220
|
||||
#define F_NATURA_TRANS 221
|
||||
#define F_NOMENCLATURA 222
|
||||
#define F_NOMENCLATURA1 222
|
||||
#define F_AMM_LIRE 223
|
||||
#define F_AMM_VALUTA 224
|
||||
#define F_VALUTA 225
|
||||
#define F_VALORE_STAT 226
|
||||
#define F_NOMENCLATURA2 227
|
||||
#define F_NOMENCLATURA3 228
|
||||
|
||||
#define GR_ORIGINAL 3
|
||||
175
in/in0700a.uml
175
in/in0700a.uml
@ -51,7 +51,7 @@ BEGIN
|
||||
FIELD ANNORETT
|
||||
CHECKTYPE REQUIRED
|
||||
NUM_EXPR #O_ANNO<=#O_ANNO
|
||||
WARNING "Si possono rettificare solo gli anni precedenti"
|
||||
WARNING "Si possono rettificare solo gli anni precedenti o uguali"
|
||||
END
|
||||
|
||||
LIST O_PERIODO_M 2 16
|
||||
@ -59,7 +59,7 @@ BEGIN
|
||||
PROMPT 33 4 "Periodo "
|
||||
FLAGS "AM"
|
||||
FIELD PERETT
|
||||
NUM_EXPR (#O_ANNO=#F_ANNO)||(#O_PERIODO_M<#F_PERIODO_M)
|
||||
NUM_EXPR (#O_ANNO<#F_ANNO)||((#O_ANNO=#F_ANNO)&&(#O_PERIODO_M<#F_PERIODO_M))
|
||||
WARINIG "Si possono rettificare solo i periodi precedenti"
|
||||
END
|
||||
|
||||
@ -75,7 +75,7 @@ BEGIN
|
||||
ITEM "04|Ottobre-Dicembre"
|
||||
MESSAGE COPY,O_PERIODO_M
|
||||
FIELD PERETT
|
||||
NUM_EXPR (#O_ANNO=#F_ANNO)||(#O_PERIODO_T<#F_PERIODO_T)
|
||||
NUM_EXPR (#O_ANNO<#F_ANNO)||((#O_ANNO=#F_ANNO)&&(#O_PERIODO_T<#F_PERIODO_T))
|
||||
WARINIG "Si possono rettificare solo i periodi precedenti"
|
||||
END
|
||||
|
||||
@ -111,7 +111,9 @@ BEGIN
|
||||
OUTPUT O_STATO STATO
|
||||
OUTPUT O_PARTITA_IVA PIVA
|
||||
OUTPUT O_NATURA_TRANS NATURA
|
||||
OUTPUT O_NOMENCLATURA NOMENCL
|
||||
OUTPUT O_NOMENCLATURA1 NOMENCL[1,4]
|
||||
OUTPUT O_NOMENCLATURA2 NOMENCL[5,6]
|
||||
OUTPUT O_NOMENCLATURA3 NOMENCL[7,8]
|
||||
OUTPUT O_AMM_LIRE AMMLIRE
|
||||
OUTPUT O_VALUTA CODVAL
|
||||
OUTPUT F_VALUTA CODVAL
|
||||
@ -121,23 +123,16 @@ BEGIN
|
||||
FIELD NUMRETT
|
||||
END
|
||||
|
||||
LIST O_STATO 2 16
|
||||
STRING O_STATO 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "Stato CEE "
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB O_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT O_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
@ -163,7 +158,7 @@ BEGIN
|
||||
OUTPUT O_STATO STATOPAIV
|
||||
OUTPUT O_PARTITA_IVA PAIV
|
||||
OUTPUT O_PARTITA_DESC RAGSOC
|
||||
VALIDATE PI_FUNC O_STATO
|
||||
// VALIDATE PI_FUNC O_STATO
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Lunghezza partita IVA errata"
|
||||
GROUP GR_ORIGINAL
|
||||
@ -178,34 +173,51 @@ END
|
||||
NUMBER O_NATURA_TRANS 1
|
||||
BEGIN
|
||||
PROMPT 2 7 "Natura transazione "
|
||||
SHEET "Cod.|Descrizione@66"
|
||||
INPUT O_NATURA_TRANS
|
||||
ITEM "1|Acquisto o vendita (compreso il baratto)"
|
||||
ITEM "2|Restituzione o sostituzione di merci"
|
||||
ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea"
|
||||
ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)"
|
||||
ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata"
|
||||
ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile"
|
||||
ITEM "9|Altre transazioni"
|
||||
OUTPUT O_NATURA_TRANS
|
||||
USE %INT
|
||||
INPUT CODTAB O_NATURA_TRANS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT O_NATURA_TRANS CODTAB
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
NUMBER O_NOMENCLATURA 8
|
||||
STRING O_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 30 7 "Nomenclatura combinata "
|
||||
FLAGS "Z"
|
||||
PROMPT 28 7 "Nomenclatura combinata "
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB O_NOMENCLATURA
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
INPUT CODTAB[1,4] O_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] O_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] O_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT O_NOMENCLATURA CODTAB
|
||||
OUTPUT O_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT O_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT O_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
STRING O_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 58 7 ""
|
||||
FLAGS "U"
|
||||
COPY ALL O_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
STRING O_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 63 7 ""
|
||||
FLAGS "U"
|
||||
COPY ALL O_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
GROUP GR_ORIGINAL
|
||||
END
|
||||
|
||||
CURRENCY O_AMM_LIRE 18
|
||||
BEGIN
|
||||
PROMPT 2 8 "Ammontare in lire "
|
||||
@ -311,23 +323,16 @@ BEGIN
|
||||
KEY 1
|
||||
END
|
||||
|
||||
LIST F_STATO 2 16
|
||||
STRING F_STATO 2
|
||||
BEGIN
|
||||
PROMPT 2 13 "Stato CEE "
|
||||
ITEM "AT|Austria"
|
||||
ITEM "BE|Belgio"
|
||||
ITEM "DE|Germania"
|
||||
ITEM "DK|Danimarca"
|
||||
ITEM "EL|Grecia"
|
||||
ITEM "ES|Spagna"
|
||||
ITEM "FR|Francia"
|
||||
ITEM "GB|Gran Bretagna"
|
||||
ITEM "IE|Irlanda"
|
||||
ITEM "IT|Italia"
|
||||
ITEM "LU|Lussemburgo"
|
||||
ITEM "NL|Olanda"
|
||||
ITEM "PT|Portogallo"
|
||||
ITEM "SE|Svezia"
|
||||
FLAGS "U"
|
||||
USE %SCE
|
||||
INPUT CODTAB F_STATO
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_STATO CODTAB
|
||||
CHECKTYPE NORMAL
|
||||
FIELD STATO
|
||||
END
|
||||
|
||||
@ -350,12 +355,12 @@ BEGIN
|
||||
DISPLAY "Partita IVA@12" PAIV
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT O_STATO STATOPAIV
|
||||
OUTPUT O_PARTITA_IVA PAIV
|
||||
OUTPUT O_PARTITA_DESC RAGSOC
|
||||
VALIDATE PI_FUNC O_STATO
|
||||
OUTPUT F_STATO STATOPAIV
|
||||
OUTPUT F_PARTITA_IVA PAIV
|
||||
OUTPUT F_PARTITA_DESC RAGSOC
|
||||
// VALIDATE PI_FUNC F_STATO
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Lunghezza partita IVA errata"
|
||||
// WARNING "Lunghezza partita IVA errata"
|
||||
FIELD PIVA
|
||||
END
|
||||
|
||||
@ -368,34 +373,49 @@ END
|
||||
NUMBER F_NATURA_TRANS 1
|
||||
BEGIN
|
||||
PROMPT 2 15 "Natura transazione "
|
||||
SHEET "Cod.|Descrizione@66"
|
||||
INPUT O_NATURA_TRANS
|
||||
ITEM "1|Acquisto o vendita (compreso il baratto)"
|
||||
ITEM "2|Restituzione o sostituzione di merci"
|
||||
ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea"
|
||||
ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione"
|
||||
ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)"
|
||||
ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata"
|
||||
ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile"
|
||||
ITEM "9|Altre transazioni"
|
||||
OUTPUT O_NATURA_TRANS
|
||||
USE %INT
|
||||
INPUT CODTAB F_NATURA_TRANS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@70" S0
|
||||
OUTPUT F_NATURA_TRANS CODTAB
|
||||
FIELD NATURA
|
||||
END
|
||||
|
||||
NUMBER F_NOMENCLATURA 8
|
||||
STRING F_NOMENCLATURA1 4
|
||||
BEGIN
|
||||
PROMPT 30 15 "Nomenclatura combinata "
|
||||
FLAGS "Z"
|
||||
PROMPT 28 15 "Nomenclatura combinata "
|
||||
FLAGS "U"
|
||||
USE %NOC
|
||||
INPUT CODTAB O_NOMENCLATURA
|
||||
DISPLAY "Codice@8" CODTAB
|
||||
INPUT CODTAB[1,4] F_NOMENCLATURA1
|
||||
INPUT CODTAB[5,6] F_NOMENCLATURA2
|
||||
INPUT CODTAB[7,8] F_NOMENCLATURA3
|
||||
DISPLAY "Codice" CODTAB[1,4]
|
||||
DISPLAY "" CODTAB[5,6]
|
||||
DISPLAY "" CODTAB[7,8]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT O_NOMENCLATURA CODTAB
|
||||
OUTPUT F_NOMENCLATURA1 CODTAB[1,4]
|
||||
OUTPUT F_NOMENCLATURA2 CODTAB[5,6]
|
||||
OUTPUT F_NOMENCLATURA3 CODTAB[7,8]
|
||||
CHECKTYPE REQUIRED
|
||||
FIELD NOMENCL
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA2 2
|
||||
BEGIN
|
||||
PROMPT 58 15 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_NOMENCLATURA3 2
|
||||
BEGIN
|
||||
PROMPT 63 15 ""
|
||||
FLAGS "U"
|
||||
COPY ALL F_NOMENCLATURA1
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
LIST F_SEGNO 1
|
||||
BEGIN
|
||||
PROMPT 68 15 "Segno "
|
||||
@ -424,10 +444,9 @@ BEGIN
|
||||
FIELD AMMVALUTA
|
||||
END
|
||||
|
||||
NUMBER F_VALORE_STAT 18
|
||||
CURRENCY F_VALORE_STAT 18
|
||||
BEGIN
|
||||
PROMPT 2 17 "Valore statistico "
|
||||
PICTURE "."
|
||||
FIELD VALSTAT
|
||||
END
|
||||
|
||||
|
||||
@ -365,8 +365,9 @@ void genera_riepiloghi(char tipo, int anno, int periodo)
|
||||
|
||||
int num_fields = 0;
|
||||
if (tipo > ' ' )
|
||||
{
|
||||
m.set(R_TIPO, tipo);
|
||||
{
|
||||
TString16 t; t << tipo;
|
||||
m.set(R_TIPO, t);
|
||||
num_fields++;
|
||||
}
|
||||
if (anno > 0)
|
||||
|
||||
@ -1,11 +1,35 @@
|
||||
[PRASSIEF_001]
|
||||
Caption = "Elenchi INTRA comunitari"
|
||||
Picture = <ba00.bmp>
|
||||
Module = 34
|
||||
Flags = ""
|
||||
Module = 18
|
||||
Flags = "F"
|
||||
Item_01 = "Stampa riepiloghi", "in0 -0", "F"
|
||||
Item_02 = "Generazione dischetti", "in0 -1", "F"
|
||||
Item_03 = "Gestione movimenti", "in0 -4", "F"
|
||||
Item_04 = "Gestione riepiloghi", "in0 -5", "F"
|
||||
Item_05 = "Gestione rettifiche", "in0 -6", "F"
|
||||
Item_06 = "Tabelle", [PRASSIIN_002]
|
||||
Item_07 = "Stampa Tabelle", [PRASSIIN_003]
|
||||
|
||||
[PRASSIIN_002]
|
||||
Caption = "Tabelle"
|
||||
Picture = <ba01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Nomenclatura combinata", "ba3 -0 %noc", ""
|
||||
Item_02 = "Stati CEE", "ba3 -0 %sce", ""
|
||||
Item_03 = "Natura Transazione", "ba3 -0 %int", ""
|
||||
Item_04 = "Condizioni di consegna", "ba3 -0 %icc", ""
|
||||
Item_05 = "Modalita' di trasporto", "ba3 -0 %imt", ""
|
||||
|
||||
[PRASSIIN_003]
|
||||
Caption = "Stampa Tabelle"
|
||||
Picture = <ba01.bmp>
|
||||
Module = 0
|
||||
Flags = ""
|
||||
Item_01 = "Nomenclatura combinata", "ba3 -1 %noc", ""
|
||||
Item_02 = "Stati CEE", "ba3 -1 %sce", ""
|
||||
Item_03 = "Natura Transazione", "ba3 -1 %int", ""
|
||||
Item_04 = "Condizioni di consegna", "ba3 -1 %icc", ""
|
||||
Item_05 = "Modalita' di trasporto", "ba3 -1 %imt", ""
|
||||
|
||||
|
||||
42
in/intabcom.txt
Executable file
42
in/intabcom.txt
Executable file
@ -0,0 +1,42 @@
|
||||
[Header]
|
||||
Version=199518
|
||||
Fields=COD,3|CODTAB,25|S0,70|S1,70|S2,70|S3,70|S4,20|S5,20|S6,5|S7,5
|
||||
Fields=S8,5|S9,5|S10,5|S11,5|I0,7|I1,7|I2,7|I3,7|I4,7|I5,7
|
||||
Fields=I6,7|I7,7|I8,7|I9,7|I10,7|I11,7|I12,7|I13,7|I14,7|R0,18
|
||||
Fields=R1,18|R2,18|R3,18|R4,18|R5,18|R6,18|R7,18|R8,18|R9,18|R10,18
|
||||
Fields=R11,18|R12,18|R13,18|R14,18|R15,18|R16,18|R17,18|R18,18|R19,18|D0,10
|
||||
Fields=D1,10|D2,10|D3,10|D4,10|B0,1|B1,1|B2,1|B3,1|B4,1|B5,1
|
||||
Fields=B6,1|B7,1|B8,1|B9,1|FPC,1
|
||||
|
||||
[Data]
|
||||
IMT|1|Trasporto marittimo||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|2|Trasporto per ferrovia||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|3|Trasporto su strada||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|4|Trasporto aereo||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|5|Spedizioni postali||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|7|Installazioni di trasporto fisse||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|8|Trasporto per via navigabile interna||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
IMT|9|Propulsione propria||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|CFR|Costo e nolo (C&F)||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|CIF|Costo, assicurazione e nolo (CAF)||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|CIP|Porto pagato, assicurazione inclusa, fino a||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|CPT|Porto pagato fino a||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|DAF|Reso frontiera||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|DDP|Reso sdoganato||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|DDU|Reso non sdoganato||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|DEQ|Franco banchina||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|DES|Ex ship||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|EXW|Franco fabbrica||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|FAS|Franco sottobordo||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|FCA|Franco vettore||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|FOB|Franco a bordo||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
ICC|XXX|Altre condizioni di consegna||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|1|Acquisto e vendita di beni (compreso il baratto)|||||||A|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|2|Restituzione o sostituzione di merci|||||||B|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|3|Aiuti governativi, privati o finanziati dalla C.E.E.|||||||C|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|4|Operaz.in vista di una lav.conto terzi o di una riparazione.|||||||D||||||||||||||||||||0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|0.00000|||||| | | | | | | | | | |
|
||||
INT|5|Oper. successiva ad una lav.per conto terzi o ad una riparazione|||||||E|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|6|Movimento di merci senza trasferimento di proprietà|||||||F|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|7|Operaz.a titolo di progr. comune di difesa o intergov.di fabbr.coord.|||||||G|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|8|Forn.di materiali nel quadro di un contr.gen.di costr. o genio civile|||||||H|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
INT|9|Altre transazioni|||||||I|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
53
include/bagn007.uml
Executable file
53
include/bagn007.uml
Executable file
@ -0,0 +1,53 @@
|
||||
PAGE "Colori delle righe di prima nota" -1 -1 42 10
|
||||
|
||||
SPREADSHEET 101 -1 -3
|
||||
BEGIN
|
||||
PROMPT 1 1 "Colori"
|
||||
ITEM "Colore@32"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON 102 10 2
|
||||
BEGIN
|
||||
PROMPT -13 -1 "A~zzera"
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -23 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -33 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
||||
PAGE "Colore" -1 -1 40 10
|
||||
|
||||
STRING 101 32
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo "
|
||||
END
|
||||
|
||||
BUTTON 100 14 2
|
||||
BEGIN
|
||||
PROMPT 2 5 "~Sfondo"
|
||||
END
|
||||
|
||||
BUTTON 99 14 2
|
||||
BEGIN
|
||||
PROMPT 22 5 "~Testo"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 14 2
|
||||
BEGIN
|
||||
PROMPT -11 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
45
include/colmask.h
Executable file
45
include/colmask.h
Executable file
@ -0,0 +1,45 @@
|
||||
#ifndef __COLMASK_H
|
||||
#define __COLMASK_H
|
||||
|
||||
#ifndef __COLORS_H
|
||||
#include <colors.h>
|
||||
#endif
|
||||
|
||||
#ifndef __VARMASK_H
|
||||
#include <varmask.h>
|
||||
#endif
|
||||
|
||||
class TColor_row_mask;
|
||||
class TColor_object_props;
|
||||
|
||||
class TSelect_color_mask : public TVariable_mask
|
||||
{
|
||||
TColor_row_mask * _sheet_mask;
|
||||
TArray _color_defs;
|
||||
TFilename _mask_name;
|
||||
TString _paragraph;
|
||||
|
||||
HIDDEN TMask * get_mask(int, TMask&);
|
||||
TColor_object_props * row(int r) const { return (TColor_object_props *) _color_defs.objptr(r);}
|
||||
int items() { return _color_defs.items();}
|
||||
|
||||
protected:
|
||||
void init(const char * mask_name, const char * para = NULL);
|
||||
static bool color_handler(TMask_field& f, KEY k);
|
||||
static bool reset_handler(TMask_field& f, KEY k);
|
||||
void save() const ;
|
||||
|
||||
public:
|
||||
int add_color_def(const char * key, const char * prompt, COLOR back = NORMAL_BACK_COLOR, COLOR fore = NORMAL_COLOR);
|
||||
void get_color_def(const char * key, COLOR & back, COLOR & fore) const ;
|
||||
void get_cur_colors(COLOR & back, COLOR & fore) const ;
|
||||
int key2pos(const char * key) const;
|
||||
COLOR get_back_color(int pos) const;
|
||||
COLOR get_fore_color(int pos) const;
|
||||
|
||||
TSelect_color_mask(const char * mask_name, const char * para = NULL);
|
||||
TSelect_color_mask(const TSheet_field & field);
|
||||
virtual ~TSelect_color_mask();
|
||||
};
|
||||
|
||||
#endif
|
||||
@ -1,5 +1,7 @@
|
||||
#include <os_dep.h>
|
||||
#include <colmask.h>
|
||||
#include <colors.h>
|
||||
#include <config.h>
|
||||
|
||||
COLOR RGB2COLOR(unsigned char red, unsigned char green, unsigned char blue)
|
||||
{
|
||||
@ -31,3 +33,282 @@ COLOR choose_color(COLOR col, WINDOW win)
|
||||
{
|
||||
return os_choose_color(col, win);
|
||||
}
|
||||
|
||||
class TColor_row_mask : public TMask
|
||||
{
|
||||
public:
|
||||
virtual void update();
|
||||
|
||||
TColor_row_mask();
|
||||
virtual ~TColor_row_mask() { }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TColor_row_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
TColor_row_mask::TColor_row_mask()
|
||||
: TMask("bagn007", 1)
|
||||
{
|
||||
}
|
||||
|
||||
void TColor_row_mask::update()
|
||||
{
|
||||
TSheet_field* s = get_sheet();
|
||||
TSelect_color_mask& m = (TSelect_color_mask&)s->mask();
|
||||
COLOR back, fore;
|
||||
m.get_cur_colors(back, fore);
|
||||
|
||||
_pixmap = TRUE;
|
||||
set_pen(COLOR_BLACK);
|
||||
|
||||
RCT rct; field(100).get_rect(rct);
|
||||
set_brush(back);
|
||||
frame(rct.left, 2*rct.top - rct.bottom - CHARY/2, rct.right, rct.top - CHARY/2, 0);
|
||||
|
||||
field(99).get_rect(rct);
|
||||
set_brush(fore);
|
||||
frame(rct.left, 2*rct.top - rct.bottom - CHARY/2, rct.right, rct.top - CHARY/2, 0);
|
||||
|
||||
_pixmap = FALSE;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TColor_object_props
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TColor_object_props : public TObject
|
||||
{
|
||||
TString _key;
|
||||
TString _prompt;
|
||||
COLOR _back;
|
||||
COLOR _fore;
|
||||
COLOR _back_def;
|
||||
COLOR _fore_def;
|
||||
|
||||
protected:
|
||||
public:
|
||||
void set_key(const char * key) { _key = key; }
|
||||
void set_prompt(const char * prompt) { _prompt = prompt; }
|
||||
void set_back(COLOR back) { _back = back; }
|
||||
void set_fore(COLOR fore) { _fore = fore; }
|
||||
void set_back_def(COLOR back) { _back_def = back; }
|
||||
void set_fore_def(COLOR fore) { _fore_def = fore; }
|
||||
|
||||
const TString & get_key() const { return _key; }
|
||||
const TString & get_prompt() const { return _prompt; }
|
||||
COLOR get_back() const { return _back; }
|
||||
COLOR get_fore() const { return _fore; }
|
||||
COLOR get_back_def() const { return _back_def; }
|
||||
COLOR get_fore_def() const { return _fore_def; }
|
||||
|
||||
TColor_object_props(const char * key, const char * prompt, COLOR back, COLOR fore);
|
||||
virtual ~TColor_object_props() {}
|
||||
};
|
||||
|
||||
TColor_object_props::TColor_object_props(const char * key, const char * prompt, COLOR back, COLOR fore)
|
||||
: _key(key), _prompt(prompt), _back(back), _fore(fore), _back_def(back), _fore_def(fore)
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TSelect_color_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
bool TSelect_color_mask::color_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
TSelect_color_mask& cm = (TSelect_color_mask&)m.get_sheet()->mask();
|
||||
TSheet_field& s = cm.sfield(101);
|
||||
const int cur = s.selected();
|
||||
|
||||
TColor_object_props & p = *cm.row(cur);
|
||||
const bool use_back = f.dlg() == 100;
|
||||
COLOR col = use_back ? p.get_back() : p.get_fore();
|
||||
|
||||
col = choose_color(col, m.win());
|
||||
if (col != COLOR_INVALID)
|
||||
{
|
||||
if (use_back)
|
||||
p.set_back(col);
|
||||
else
|
||||
p.set_fore(col);
|
||||
cm._sheet_mask->update();
|
||||
m.set_focus();
|
||||
s.set_back_and_fore_color(p.get_back(), p.get_fore(), cur);
|
||||
s.force_update();
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TSelect_color_mask::reset_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE && f.yesno_box("Si desidera azzerare tutti i colori?"))
|
||||
{
|
||||
TSelect_color_mask& cm = (TSelect_color_mask&)f.mask();
|
||||
TSheet_field& s = cm.sfield(101);
|
||||
const int items = cm.items();
|
||||
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TColor_object_props & p = *cm.row(i);
|
||||
|
||||
const COLOR back = p.get_back_def();
|
||||
const COLOR fore = p.get_fore_def();
|
||||
p.set_back(back);
|
||||
p.set_fore(fore);
|
||||
s.set_back_and_fore_color(back, fore, i);
|
||||
}
|
||||
s.force_update();
|
||||
}
|
||||
if (k == K_ENTER)
|
||||
{
|
||||
TSelect_color_mask& cm = (TSelect_color_mask&)f.mask();
|
||||
|
||||
cm.save();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int TSelect_color_mask::add_color_def(const char * key, const char * prompt, COLOR back, COLOR fore)
|
||||
|
||||
{
|
||||
TColor_object_props * p = new TColor_object_props(key, prompt, back, fore);
|
||||
TSheet_field& s = sfield(101);
|
||||
|
||||
const int row = _color_defs.add(p);
|
||||
|
||||
TToken_string& riga = s.row(-1);
|
||||
riga << p->get_prompt();
|
||||
|
||||
TString tmp(_mask_name) ; tmp << "_" << _paragraph;
|
||||
TConfig conf(CONFIG_USER, tmp);
|
||||
|
||||
tmp = p->get_key();
|
||||
if (conf.exist(tmp))
|
||||
p->set_fore(conf.get_color(tmp));
|
||||
|
||||
tmp << "_Bg";
|
||||
if (conf.exist(tmp))
|
||||
p->set_back(conf.get_color(tmp));
|
||||
|
||||
s.set_back_and_fore_color(p->get_back(), p->get_fore(), row);
|
||||
return row;
|
||||
}
|
||||
|
||||
void TSelect_color_mask::get_color_def(const char * key, COLOR & back, COLOR & fore) const
|
||||
{
|
||||
const int pos = key2pos(key);
|
||||
|
||||
if (pos >= 0)
|
||||
{
|
||||
back = get_back_color(pos);
|
||||
fore = get_fore_color(pos);
|
||||
}
|
||||
else
|
||||
{
|
||||
back = NORMAL_BACK_COLOR;
|
||||
fore = NORMAL_COLOR;
|
||||
}
|
||||
}
|
||||
|
||||
int TSelect_color_mask::key2pos(const char * key) const
|
||||
{
|
||||
const int items = _color_defs.items();
|
||||
|
||||
for (int i = 0; i < items; i++)
|
||||
if (((TColor_object_props &) _color_defs[i]).get_key() == key)
|
||||
return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
COLOR TSelect_color_mask::get_back_color(int pos) const
|
||||
{
|
||||
return ((TColor_object_props &) _color_defs[pos]).get_back();
|
||||
}
|
||||
|
||||
COLOR TSelect_color_mask::get_fore_color(int pos) const
|
||||
{
|
||||
return ((TColor_object_props &) _color_defs[pos]).get_fore();
|
||||
}
|
||||
|
||||
TMask * TSelect_color_mask::get_mask(int, TMask& m)
|
||||
{
|
||||
return ((TSelect_color_mask &) m.get_sheet()->mask())._sheet_mask;
|
||||
}
|
||||
|
||||
void TSelect_color_mask::get_cur_colors(COLOR & back, COLOR & fore) const
|
||||
{
|
||||
TSheet_field& s = sfield(101);
|
||||
int cur = s.selected();
|
||||
TColor_object_props & p = *row(cur);
|
||||
|
||||
back = p.get_back();
|
||||
fore = p.get_fore();
|
||||
}
|
||||
|
||||
void TSelect_color_mask::init(const char * mask_name, const char * para)
|
||||
{
|
||||
set_handler(102, reset_handler);
|
||||
|
||||
_sheet_mask = new TColor_row_mask;
|
||||
_sheet_mask->set_handler(99, color_handler);
|
||||
_sheet_mask->set_handler(100, color_handler);
|
||||
|
||||
TVariable_sheet_field& s = (TVariable_sheet_field&) sfield(101);
|
||||
s.set_getmask(get_mask);
|
||||
_mask_name = mask_name;
|
||||
_mask_name.ext("");
|
||||
_paragraph = para;
|
||||
}
|
||||
|
||||
TSelect_color_mask::TSelect_color_mask(const TSheet_field & field)
|
||||
: TVariable_mask("bagn007")
|
||||
{
|
||||
TMask & m = field.mask();
|
||||
TString para("Colors");
|
||||
const int num = field.sheet_mask().number() - 1;
|
||||
if (num > 0)
|
||||
para << num;
|
||||
init(m.source_file(), para);
|
||||
}
|
||||
|
||||
void TSelect_color_mask::save() const
|
||||
{
|
||||
TString tmp(_mask_name) ; tmp << "_" << _paragraph;
|
||||
TConfig conf(CONFIG_USER, tmp);
|
||||
const int items = _color_defs.items();
|
||||
|
||||
for (int i = 0; i < items; i++)
|
||||
{
|
||||
TColor_object_props & p = *row(i);
|
||||
|
||||
tmp = p.get_key();
|
||||
if (p.get_fore() == NORMAL_COLOR)
|
||||
conf.remove(tmp);
|
||||
else
|
||||
conf.set_color(tmp, p.get_fore());
|
||||
|
||||
tmp << "_Bg";
|
||||
if (p.get_back() == NORMAL_BACK_COLOR)
|
||||
conf.remove(tmp);
|
||||
else
|
||||
conf.set_color(tmp, p.get_back());
|
||||
}
|
||||
}
|
||||
|
||||
TSelect_color_mask::TSelect_color_mask(const char * mask_name, const char * para)
|
||||
: TVariable_mask("bagn007")
|
||||
{
|
||||
init(mask_name, para);
|
||||
}
|
||||
|
||||
TSelect_color_mask::~TSelect_color_mask()
|
||||
{
|
||||
delete _sheet_mask;
|
||||
}
|
||||
|
||||
@ -36,4 +36,3 @@ const COLOR COLOR_DKRED = MAKE_COLOR(128,0, 0);
|
||||
const COLOR COLOR_DKMAGENTA = MAKE_COLOR(128,0,128);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@ -761,7 +761,7 @@ void TControl::update_tab_cid()
|
||||
if (is_cont)
|
||||
{
|
||||
XI_OBJ* fi = find_operable(_obj->itf, TRUE, TRUE);
|
||||
XI_OBJ* la = find_operable(_obj->itf, FALSE, TRUE);
|
||||
XI_OBJ* la = find_operable(_obj->itf, FALSE, TRUE);
|
||||
int num;
|
||||
XI_OBJ** child = xi_get_member_list(_obj, &num);
|
||||
set_tab_cid(child[num-1], fi->cid);
|
||||
|
||||
@ -244,7 +244,8 @@ TObject* TExpression::dup() const
|
||||
|
||||
const real & TExpression::as_real()
|
||||
{
|
||||
if (user_func_dirty() || _dirty) eval();
|
||||
if (user_func_dirty() || _dirty)
|
||||
eval();
|
||||
_dirty = FALSE;
|
||||
return _val.number();
|
||||
}
|
||||
@ -256,7 +257,6 @@ const TString & TExpression::as_string()
|
||||
return _val.string();
|
||||
}
|
||||
|
||||
|
||||
bool TExpression::as_bool()
|
||||
{
|
||||
return !as_real().is_zero();
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user