Patch level : Aga 2.0.349

Files correlati     : Quelli delle patch AGA
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione AGA 1.7 patch 349.


git-svn-id: svn://10.65.10.50/trunk@10557 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2002-10-23 14:14:55 +00:00
parent ffe5e5c386
commit d2816f518e
46 changed files with 2042 additions and 1129 deletions

View File

@ -1,38 +1,27 @@
#include <confapp.h>
#include <tabutil.h>
#include "ce0400a.h"
class CE0_App : public TConfig_application
class TCespi_config_app : public TConfig_application
{
char _current;
protected:
virtual bool user_create();
//virtual bool preprocess_config (TMask& mask, TConfig& config);
public:
CE0_App() : TConfig_application(CONFIG_DITTA) {}
virtual ~CE0_App() {}
public:
TCespi_config_app();
};
bool CE0_App::user_create( )
bool TCespi_config_app::user_create( )
{
const char* param = argv(2);
_current = param ? toupper(*param) : 'P'; //prendi terzo argomento, primo carattere, fallo maiuscolo; (se vuoto mettilo = P)
TConfig conf(CONFIG_DITTA, "ce"); // si posiziona sul paragrafo "ce" dei parametri ditta
switch( _current )
{
case 'C':
conf.set( "EdMask", "ce0400b");
break;
default:
conf.set( "EdMask", "ce0400a");
break;
}
conf.set("EdMask", "ce0400a"); // setta la maschera standard di configurazione
return TRUE;
}
TCespi_config_app::TCespi_config_app() : TConfig_application(CONFIG_DITTA)
{ }
int ce0400 (int argc, char* argv[])
{
CE0_App appc;
TCespi_config_app appc;
appc.run(argc, argv, "Parametri Ditta");
return 0;
}

View File

@ -12,46 +12,43 @@
#define F_DATACONS 110
#define F_ANNOTUIR 111
#define F_AMMPROP 112
#define F_PLUSMINUS 201
#define F_PLUSMINUS 201
#define F_TIPOSCRIT 202
#define F_GR1 211
#define F_CO1 212
#define F_SO1 213
#define F_DE1 214
#define F_ELIMCESP 204
#define F_D_ELIMCESP 205
#define F_RIL_DIFF 206
#define F_D_RIL_DIFF 207
#define F_RIL_QUOT 208
#define F_D_RIL_QUOT 209
#define F_RIL_PLUS 210
#define F_D_RIL_PLUS 211
#define F_RIL_MIN 212
#define F_D_RIL_MIN 213
#define F_GR2 221
#define F_CO2 222
#define F_SO2 223
#define F_DE2 224
#define F_GR3 231
#define F_CO3 232
#define F_SO3 233
#define F_DE3 234
#define F_GR4 241
#define F_CO4 242
#define F_SO4 243
#define F_DE4 244
#define F_GR5 251
#define F_CO5 252
#define F_SO5 253
#define F_DE5 254
#define F_GR6 261
#define F_CO6 262
#define F_SO6 263
#define F_DE6 264
#define F_CA1 280
#define F_DC1 281
#define F_CA2 282
#define F_DC2 283
#define F_CA3 284
#define F_DC3 285
#define F_CA4 286
#define F_DC4 287
#define F_CA5 288
#define F_DC5 289
#define F_SOPR_PAS_GR 220
#define F_SOPR_PAS_CO 221
#define F_SOPR_PAS_SO 222
#define F_SOPR_PAS_D 223
#define F_DIFF_QUO_GR 224
#define F_DIFF_QUO_CO 225
#define F_DIFF_QUO_SO 226
#define F_DIFF_QUO_D 227
#define F_DIFF_FON_GR 228
#define F_DIFF_FON_CO 229
#define F_DIFF_FON_SO 230
#define F_DIFF_FON_D 231
#define F_PLUSVAL_GR 232
#define F_PLUSVAL_CO 233
#define F_PLUSVAL_SO 234
#define F_PLUSVAL_D 235
#define F_MINUSVAL_GR 236
#define F_MINUSVAL_CO 237
#define F_MINUSVAL_SO 238
#define F_MINUSVAL_D 239
#define F_VEND_CESP_GR 240
#define F_VEND_CESP_CO 241
#define F_VEND_CESP_SO 242
#define F_VEND_CESP_D 243

View File

@ -129,393 +129,600 @@ BEGIN
FIELD CATSU
END
BOOLEAN F_AMMPROP
BEGIN
PROMPT 1 9 "Attiva ammortamento proporzionale da entrata in funzione"
FIELD AMMPROP
END
ENDPAGE
/*
PAGE "Collegamento Contabilità" -1 -1 78 10
BOOLEAN F_PLUSMINUS
BEGIN
PROMPT 1 1 "Generazione movimenti di plus/minusvalenza"
PROMPT 2 1 "Genera anche movimenti plus/minusvalenza"
MESSAGE TRUE ENABLE,F_RIL_PLUS|ENABLE,F_D_RIL_PLUS|ENABLE,F_RIL_MIN|ENABLE,F_D_RIL_MIN|ENABLE,F_TIPOSCRIT|REQUIRED,F_PLUSVAL_SO|REQUIRED,F_MINUSVAL_SO
MESSAGE FALSE CLEAR,F_RIL_PLUS|CLEAR,F_D_RIL_PLUS|CLEAR,F_RIL_MIN|CLEAR,F_D_RIL_MIN|CLEAR,F_TIPOSCRIT|NORMAL,F_PLUSVAL_SO|NORMAL,F_MINUSVAL_SO
FIELD COPLMN
END
GROUP DLG_NULL 78 8
RADIOBUTTON F_TIPOSCRIT 1 60
BEGIN
PROMPT 1 2 "@bConti di collegamento"
PROMPT 2 2 "Tipo scrittura per vendita cespite "
ITEM "|Su Conto Vendite"
MESSAGE ENABLE,F_VEND_CESP_GR|ENABLE,F_VEND_CESP_CO|ENABLE,F_VEND_CESP_SO|ENABLE,F_VEND_CESP_D
ITEM "X|Su Conto Cespite"
MESSAGE CLEAR,F_VEND_CESP_GR|CLEAR,F_VEND_CESP_CO|CLEAR,F_VEND_CESP_SO|CLEAR,F_VEND_CESP_D
FIELD COR5PM
END
NUMBER F_GR1 3
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 2 3 "Eliminazione cespiti "
CHECKTYPE NORMAL
PROMPT 1 6 "@B Cod. Causali"
FLAGS "R"
END
NUMBER F_CO1 3
STRING F_ELIMCESP 3
BEGIN
PROMPT 30 3 ""
CHECKTYPE NORMAL
END
NUMBER F_SO1 6
BEGIN
PROMPT 35 3 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR1
INPUT CONTO F_CO1
INPUT SOTTOCONTO F_SO1
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR1 GRUPPO
OUTPUT F_CO1 CONTO
OUTPUT F_SO1 SOTTOCONTO
OUTPUT F_DE1 DESCR
CHECKTYPE NORMAL
END
STRING F_DE1 50 30
BEGIN
PROMPT 45 3 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE1
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO1
END
NUMBER F_GR2 3
BEGIN
PROMPT 2 4 "Differenze su quote "
CHECKTYPE NORMAL
END
NUMBER F_CO2 3
BEGIN
PROMPT 30 4 ""
CHECKTYPE NORMAL
END
NUMBER F_SO2 6
BEGIN
PROMPT 35 4 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR2
INPUT CONTO F_CO2
INPUT SOTTOCONTO F_SO2
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR2 GRUPPO
OUTPUT F_CO2 CONTO
OUTPUT F_SO2 SOTTOCONTO
OUTPUT F_DE2 DESCR
CHECKTYPE NORMAL
END
STRING F_DE2 50 30
BEGIN
PROMPT 45 4 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE2
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO2
END
NUMBER F_GR3 3
BEGIN
PROMPT 2 5 "Differenze su fondi "
CHECKTYPE NORMAL
END
NUMBER F_CO3 3
BEGIN
PROMPT 30 5 ""
CHECKTYPE NORMAL
END
NUMBER F_SO3 6
BEGIN
PROMPT 35 5 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR3
INPUT CONTO F_CO3
INPUT SOTTOCONTO F_SO3
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR3 GRUPPO
OUTPUT F_CO3 CONTO
OUTPUT F_SO3 SOTTOCONTO
OUTPUT F_DE3 DESCR
CHECKTYPE NORMAL
END
STRING F_DE3 50 30
BEGIN
PROMPT 45 5 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE3
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO3
END
NUMBER F_GR4 3
BEGIN
PROMPT 2 6 "Differenze su plusval. "
CHECKTYPE NORMAL
END
NUMBER F_CO4 3
BEGIN
PROMPT 30 6 ""
CHECKTYPE NORMAL
END
NUMBER F_SO4 6
BEGIN
PROMPT 35 6 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR4
INPUT CONTO F_CO4
INPUT SOTTOCONTO F_SO4
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR4 GRUPPO
OUTPUT F_CO4 CONTO
OUTPUT F_SO4 SOTTOCONTO
OUTPUT F_DE4 DESCR
CHECKTYPE NORMAL
END
STRING F_DE4 50 30
BEGIN
PROMPT 45 6 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE4
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO4
END
NUMBER F_GR5 3
BEGIN
PROMPT 2 7 "Differenze su minusval."
CHECKTYPE NORMAL
END
NUMBER F_CO5 3
BEGIN
PROMPT 30 7 ""
CHECKTYPE NORMAL
END
NUMBER F_SO5 6
BEGIN
PROMPT 35 7 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR5
INPUT CONTO F_CO5
INPUT SOTTOCONTO F_SO5
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR5 GRUPPO
OUTPUT F_CO5 CONTO
OUTPUT F_SO5 SOTTOCONTO
OUTPUT F_DE5 DESCR
CHECKTYPE NORMAL
END
STRING F_DE5 50 30
BEGIN
PROMPT 45 7 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE5
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO5
END
NUMBER F_GR6 3
BEGIN
PROMPT 2 8 "Vendita cespiti "
CHECKTYPE NORMAL
END
NUMBER F_CO6 3
BEGIN
PROMPT 30 8 ""
CHECKTYPE NORMAL
END
NUMBER F_SO6 6
BEGIN
PROMPT 35 8 ""
USE LF_PCON SELECT SOTTOCONTO!=""
INPUT GRUPPO F_GR6
INPUT CONTO F_CO6
INPUT SOTTOCONTO F_SO6
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_GR6 GRUPPO
OUTPUT F_CO6 CONTO
OUTPUT F_SO6 SOTTOCONTO
OUTPUT F_DE6 DESCR
CHECKTYPE NORMAL
END
STRING F_DE6 50 30
BEGIN
PROMPT 45 8 ""
USE LF_PCON KEY 2 SELECT SOTTOCONTO!=""
INPUT DESCR F_DE6
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SO6
END
GROUP DLG_NULL 78 7
BEGIN
PROMPT 1 10 "@bCausali di collegamento"
END
STRING F_CA1 3
BEGIN
PROMPT 2 11 "Eliminazione cespiti "
USE LF_CAUSALI
INPUT CODCAUS F_CA1
PROMPT 2 7 "Eliminazione cespite "
FIELD COAUEL
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
INPUT CODCAUS F_ELIMCESP
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CA1 CODCAUS
OUTPUT F_DC1 DESCR
CHECKTYPE NORMAL
OUTPUT F_ELIMCESP CODCAUS
OUTPUT F_D_ELIMCESP DESCR
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_DC1 50 30
STRING F_D_ELIMCESP 50 35
BEGIN
PROMPT 45 11 ""
PROMPT 40 7 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DC1
DISPLAY "Descrizione@60" DESCR
INPUT DESCR F_D_ELIMCESP
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CA1
CHECKTYPE NORMAL
COPY OUTPUT F_ELIMCESP
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_CA2 3
STRING F_RIL_DIFF 3
BEGIN
PROMPT 2 12 "Rilevazione differenze "
USE LF_CAUSALI
INPUT CODCAUS F_CA2
PROMPT 2 8 "Rilevazione differenze "
FIELD COAUDI
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
INPUT CODCAUS F_RIL_DIFF
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CA2 CODCAUS
OUTPUT F_DC2 DESCR
CHECKTYPE NORMAL
OUTPUT F_RIL_DIFF CODCAUS
OUTPUT F_D_RIL_DIFF DESCR
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_DC2 50 30
STRING F_D_RIL_DIFF 50 35
BEGIN
PROMPT 45 12 ""
PROMPT 40 8 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DC2
DISPLAY "Descrizione@60" DESCR
INPUT DESCR F_D_RIL_DIFF
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CA2
CHECKTYPE NORMAL
COPY OUTPUT F_RIL_DIFF
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_CA3 3
STRING F_RIL_QUOT 3
BEGIN
PROMPT 2 13 "Rilevazione quote ammortamento "
USE LF_CAUSALI
INPUT CODCAUS F_CA3
PROMPT 2 9 "Rilevazione quote ammortamento "
FIELD COAUQU
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
INPUT CODCAUS F_RIL_QUOT
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CA3 CODCAUS
OUTPUT F_DC3 DESCR
CHECKTYPE NORMAL
OUTPUT F_RIL_QUOT CODCAUS
OUTPUT F_D_RIL_QUOT DESCR
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_DC3 50 30
STRING F_D_RIL_QUOT 50 35
BEGIN
PROMPT 45 13 ""
PROMPT 40 9 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DC3
DISPLAY "Descrizione@60" DESCR
INPUT DESCR F_D_RIL_QUOT
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CA3
CHECKTYPE NORMAL
COPY OUTPUT F_RIL_QUOT
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_CA4 3
STRING F_RIL_PLUS 3
BEGIN
PROMPT 2 14 "Rilevazione quote plusvalenze "
USE LF_CAUSALI
INPUT CODCAUS F_CA4
PROMPT 2 10 "Rilevazione plusvalenze "
FIELD COAUPL
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
INPUT CODCAUS F_RIL_PLUS
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CA4 CODCAUS
OUTPUT F_DC4 DESCR
CHECKTYPE NORMAL
OUTPUT F_RIL_PLUS CODCAUS
OUTPUT F_D_RIL_PLUS DESCR
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_DC4 50 30
STRING F_D_RIL_PLUS 50 35
BEGIN
PROMPT 45 14 ""
PROMPT 40 10 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DC4
DISPLAY "Descrizione@60" DESCR
INPUT DESCR F_D_RIL_PLUS
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CA4
CHECKTYPE NORMAL
COPY OUTPUT F_RIL_PLUS
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_CA5 3
STRING F_RIL_MIN 3
BEGIN
PROMPT 2 15 "Rilevazione quote minusvalenze "
USE LF_CAUSALI
INPUT CODCAUS F_CA5
PROMPT 2 11 "Rilevazione minusvalenze "
FIELD COAUM
USE LF_CAUSALI SELECT ((SOSPESO=="")&&(TIPODOC=="")&&(COLLCESP==""))
INPUT CODCAUS F_RIL_MIN
DISPLAY "Codice" CODCAUS
DISPLAY "Descrizione@50" DESCR
OUTPUT F_CA5 CODCAUS
OUTPUT F_DC5 DESCR
CHECKTYPE NORMAL
OUTPUT F_RIL_MIN CODCAUS
OUTPUT F_D_RIL_MIN DESCR
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
STRING F_DC5 50 30
STRING F_D_RIL_MIN 50 35
BEGIN
PROMPT 45 15 ""
PROMPT 40 11 ""
USE LF_CAUSALI KEY 2
INPUT DESCR F_DC5
DISPLAY "Descrizione@60" DESCR
INPUT DESCR F_D_RIL_MIN
DISPLAY "Descrizione@50" DESCR
DISPLAY "Codice" CODCAUS
COPY OUTPUT F_CA5
COPY OUTPUT F_RIL_MIN
ADD RUN CG0 -4
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 78 8
BEGIN
PROMPT 1 14 "@B Gr. Co. Sottoc. Descrizione"
FLAGS "R"
END
NUMBER F_SOPR_PAS_GR 3
BEGIN
PROMPT 2 15 "Sopravvenienze passive "
FIELD GRCOTELI
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_SOPR_PAS_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOPR_PAS_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
NUMBER F_SOPR_PAS_CO 3
BEGIN
PROMPT 31 15 ""
FIELD COCOTELI
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_SOPR_PAS_GR
INPUT CONTO F_SOPR_PAS_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOPR_PAS_GR GRUPPO
OUTPUT F_SOPR_PAS_CO CONTO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_SOPR_PAS_SO
WARNING "Manca il conto"
END
NUMBER F_SOPR_PAS_SO 6
BEGIN
PROMPT 37 15 ""
FIELD SOCOTELI
FLAGS "R"
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
COPY INPUT F_SOPR_PAS_CO
INPUT SOTTOCONTO F_SOPR_PAS_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SOPR_PAS_SO SOTTOCONTO
OUTPUT F_SOPR_PAS_GR GRUPPO
OUTPUT F_SOPR_PAS_CO CONTO
OUTPUT F_SOPR_PAS_D DESCR
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
STRING F_SOPR_PAS_D 50 29
BEGIN
PROMPT 46 15 ""
USE LF_PCON KEY 2
INPUT DESCR F_SOPR_PAS_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_SOPR_PAS_SO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
WARNING "Manca la descrizione"
END
NUMBER F_DIFF_QUO_GR 3
BEGIN
PROMPT 2 16 "Differenze su quote "
FIELD GRCOTDIQ
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_DIFF_QUO_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_QUO_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
NUMBER F_DIFF_QUO_CO 3
BEGIN
PROMPT 31 16 ""
FIELD COCOTDIQ
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_DIFF_QUO_GR
INPUT CONTO F_DIFF_QUO_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_QUO_GR GRUPPO
OUTPUT F_DIFF_QUO_CO CONTO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_DIFF_QUO_SO
WARNING "Manca il conto"
END
NUMBER F_DIFF_QUO_SO 6
BEGIN
PROMPT 37 16 ""
FIELD SOCOTDIQ
FLAGS "R"
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
COPY INPUT F_DIFF_QUO_CO
INPUT SOTTOCONTO F_DIFF_QUO_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_QUO_SO SOTTOCONTO
OUTPUT F_DIFF_QUO_GR GRUPPO
OUTPUT F_DIFF_QUO_CO CONTO
OUTPUT F_DIFF_QUO_D DESCR
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
STRING F_DIFF_QUO_D 50 29
BEGIN
PROMPT 46 16 ""
USE LF_PCON KEY 2
INPUT DESCR F_DIFF_QUO_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_DIFF_QUO_SO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
WARNING "Manca la descrizione"
END
NUMBER F_DIFF_FON_GR 3
BEGIN
PROMPT 2 17 "Differenze su fondi "
FIELD GRCOTDIF
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_DIFF_FON_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_FON_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
NUMBER F_DIFF_FON_CO 3
BEGIN
PROMPT 31 17 ""
FIELD COCOTDIF
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_DIFF_FON_GR
INPUT CONTO F_DIFF_FON_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_FON_GR GRUPPO
OUTPUT F_DIFF_FON_CO CONTO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_DIFF_FON_SO
WARNING "Manca il conto"
END
NUMBER F_DIFF_FON_SO 6
BEGIN
PROMPT 37 17 ""
FIELD SOCOTDIF
FLAGS "R"
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
COPY INPUT F_DIFF_FON_CO
INPUT SOTTOCONTO F_DIFF_FON_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DIFF_FON_SO SOTTOCONTO
OUTPUT F_DIFF_FON_GR GRUPPO
OUTPUT F_DIFF_FON_CO CONTO
OUTPUT F_DIFF_FON_D DESCR
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
STRING F_DIFF_FON_D 50 29
BEGIN
PROMPT 46 17 ""
USE LF_PCON KEY 2
INPUT DESCR F_DIFF_FON_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_DIFF_FON_SO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
WARNING "Manca la descrizione"
END
NUMBER F_PLUSVAL_GR 3
BEGIN
PROMPT 2 18 "Plusvalenze "
FIELD GRCOTPLU
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_PLUSVAL_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_PLUSVAL_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
NUMBER F_PLUSVAL_CO 3
BEGIN
PROMPT 31 18 ""
FIELD COCOTPLU
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==4))
COPY INPUT F_PLUSVAL_GR
INPUT CONTO F_PLUSVAL_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_PLUSVAL_GR GRUPPO
OUTPUT F_PLUSVAL_CO CONTO
ADD RUN CG0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 F_PLUSVAL_SO
WARNING "Manca il conto"
END
NUMBER F_PLUSVAL_SO 6
BEGIN
PROMPT 37 18 ""
FIELD SOCOTPLU
FLAGS "R"
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
INPUT GRUPPO F_PLUSVAL_GR SELECT
INPUT CONTO F_PLUSVAL_CO SELECT
INPUT SOTTOCONTO F_PLUSVAL_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_PLUSVAL_SO SOTTOCONTO
OUTPUT F_PLUSVAL_GR GRUPPO
OUTPUT F_PLUSVAL_CO CONTO
OUTPUT F_PLUSVAL_D DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
STRING F_PLUSVAL_D 50 29
BEGIN
PROMPT 46 18 ""
USE LF_PCON KEY 2
INPUT DESCR F_PLUSVAL_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_PLUSVAL_SO
ADD RUN CG0 -0
CHECKTYPE NORMAL
WARNING "Manca la descrizione"
END
NUMBER F_MINUSVAL_GR 3
BEGIN
PROMPT 2 19 "Minusvalenze "
FIELD GRCOTMIN
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_MINUSVAL_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_MINUSVAL_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
NUMBER F_MINUSVAL_CO 3
BEGIN
PROMPT 31 19 ""
FIELD COCOTMIN
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO="")&&(INDBIL==3))
COPY INPUT F_MINUSVAL_GR
INPUT CONTO F_MINUSVAL_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_MINUSVAL_GR GRUPPO
OUTPUT F_MINUSVAL_CO CONTO
ADD RUN CG0 -0
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 F_MINUSVAL_SO
WARNING "Manca il conto"
END
NUMBER F_MINUSVAL_SO 6
BEGIN
PROMPT 37 19 ""
FIELD SOCOTMIN
FLAGS "R"
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
INPUT GRUPPO F_MINUSVAL_GR SELECT
INPUT CONTO F_MINUSVAL_CO SELECT
INPUT SOTTOCONTO F_MINUSVAL_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Sosp." SOSPESO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_MINUSVAL_SO SOTTOCONTO
OUTPUT F_MINUSVAL_GR GRUPPO
OUTPUT F_MINUSVAL_CO CONTO
OUTPUT F_MINUSVAL_D DESCR
ADD RUN CG0 -0
CHECKTYPE NORMAL
END
STRING F_MINUSVAL_D 50 29
BEGIN
PROMPT 46 19 ""
USE LF_PCON KEY 2
INPUT DESCR F_MINUSVAL_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_MINUSVAL_SO
ADD RUN CG0 -0
CHECKTYPE NORMAL
WARNING "Manca la descrizione"
END
NUMBER F_VEND_CESP_GR 3
BEGIN
PROMPT 2 20 "Vendite cespiti "
FIELD GRCOTVEN
FLAGS "R"
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO F_VEND_CESP_GR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_VEND_CESP_GR GRUPPO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
NUMBER F_VEND_CESP_CO 3
BEGIN
PROMPT 31 20 ""
FIELD COCOTVEN
FLAGS "R"
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT F_VEND_CESP_GR
INPUT CONTO F_VEND_CESP_CO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_VEND_CESP_GR GRUPPO
OUTPUT F_VEND_CESP_CO CONTO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
VALIDATE REQIF_FUNC 1 F_VEND_CESP_SO
WARNING "Manca il conto"
END
NUMBER F_VEND_CESP_SO 6
BEGIN
PROMPT 37 20 ""
FIELD SOCOTVEN
FLAGS "R"
USE LF_PCON SELECT SOTTOCONTO!=""
COPY INPUT F_VEND_CESP_CO
INPUT SOTTOCONTO F_VEND_CESP_SO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sospeso" SOSPESO
OUTPUT F_VEND_CESP_SO SOTTOCONTO
OUTPUT F_VEND_CESP_GR GRUPPO
OUTPUT F_VEND_CESP_CO CONTO
OUTPUT F_VEND_CESP_D DESCR
ADD RUN CG0 -0
CHECKTYPE REQUIRED
END
STRING F_VEND_CESP_D 50 29
BEGIN
PROMPT 46 20 ""
USE LF_PCON KEY 2
INPUT DESCR F_VEND_CESP_D
DISPLAY "Descrizione@50" DESCR
DISPLAY "Sosp." SOSPESO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT F_VEND_CESP_SO
ADD RUN CG0 -0
CHECKTYPE REQUIRED
WARNING "Manca la descrizione"
END
ENDPAGE
*/
ENDMASK

View File

@ -344,15 +344,11 @@ bool TEdit_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (fine.ok() && dtfunz > fine)
return error_box("La data è successiva alla fine validità della categoria");
if (dtfunz.year() >= dc.anno_tuir())
{
set(F_TUIR, "X");
set(F_AMMPROP, "X");
}
else
{
reset(F_TUIR);
reset(F_AMMPROP);
}
}
}
break;
@ -748,6 +744,7 @@ void TAnacespi::init_mask(TMask& m)
m.show(F_LEASING, mat_only);
m.show(F_ANNIRIC, mat_only);
m.show(F_USATO, mat_only);
m.show(F_AMMPROP, dc.ammortamento_proporzionale());
}
void TAnacespi::init_insert_mode(TMask& m)
@ -959,4 +956,3 @@ int ce0500(int argc, char* argv[])
a.run(argc, argv, "Anagrafica cespiti");
return 0;
}

View File

@ -323,7 +323,7 @@ real TCespite::val_amm() const
_salpro.get_real(SALCE_RIV75)+_salpro.get_real(SALCE_RIV83);
if (_tipo_sit == 1 || get_bool(CESPI_LEASING))
val += _salpro.get_real(SALCE_RIVGF);
val += _salpro.get_real(SALCE_RIVGF); else
if (_tipo_sit == 2 && !get_bool(CESPI_LEASING))
val += _salpro.get_real(SALCE_RIVGC);
@ -1624,7 +1624,7 @@ void TCespite::calc_amm_residui(bool is_valid)
}
else
{
if (get_bool(CESPI_AMMPROP))
if (cce.ammortamento_proporzionale() && get_bool(CESPI_AMMPROP))
{
const real durata_esercizio = fines - inies + 1;
const real giorni_possesso = fines - dtfunz + 1;
@ -1820,7 +1820,7 @@ bool TCespite::calc_amm(int tipo_sit, const TDate& data_limite, bool recalc_spe_
log("* Inizio calcolo situazione %d cespite %s", tipo_sit, (const char*)idcespite);
#ifdef DBG
if (tipo_sit == 1 && atol(idcespite) == 10L)
if (tipo_sit == 1 && atol(idcespite) == 146L)
{
tipo_sit = 1; // Put your breakpoint here
}

View File

@ -33,6 +33,7 @@ void TDitta_cespiti::load_default()
_anno_tuir = dit.get_int("CATSU");
if (_anno_tuir == 0 || _anno_tuir == 1) // Demenzialmente può essere memorizzato come 0 o 1
_anno_tuir += 1988;
_amm_prop = dit.get_bool("AMMPROP");
load_records();
}

View File

@ -20,7 +20,8 @@ class TDitta_cespiti
TString4 _gruppo, _specie;
TDate _data_primi_ricavi;
TRectype _cce, _ccb;
bool _amm_prop;
protected:
void load_default();
void update_when_needed();
@ -44,6 +45,7 @@ public:
real coefficiente_durata_esercizio() const;
int anno_tuir() const { return _anno_tuir; }
bool bollato_stampato() const;
bool ammortamento_proporzionale() const { return _amm_prop; }
void init_mask(TMask& m);
void arrotonda(real &n) const;

View File

@ -1509,6 +1509,9 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
TBill c; ini2bill(ini, c, FALSE);
if (c.gruppo() > 0)
c.add_to(riga, 4, 0x7); // Conto 105-110
add_not_empty(riga, 10, ini, RMI_CODCMS); // Commessa 111
add_not_empty(riga, 11, ini, RMI_FASCMS); // Fase 112
iva_notify(is, i, K_ENTER);
}
@ -1558,8 +1561,8 @@ void TPrimanota_application::ini2mask(TConfig& ini, TMask& msk, bool query)
if (conto.gruppo() > 0)
conto.add_to(riga, 9, 0x3); // Contropartita 110-114
riga.add(ini.get(RMV_CODCMS), 14); // Commessa 115
riga.add(ini.get(RMV_FASCMS), 15); // Fase 116
add_not_empty(riga, 14, ini, RMV_CODCMS); // Commessa 115
add_not_empty(riga, 15, ini, RMV_FASCMS); // Fase 116
riga.add(tipo, 16); // Tipo di riga 116
}

View File

@ -233,67 +233,73 @@ BEGIN
PROMPT 2 13 "Non stampare i separatori delle migliaia"
END
GROUPBOX DLG_NULL 71 4
GROUPBOX DLG_NULL 71 5
BEGIN
PROMPT 2 18 "@bCentri di costo"
PROMPT 2 18 "@bCDC / Commesse"
GROUP 4
END
BOOLEAN F_CDC_ONLY
BOOLEAN F_PRINTCDC
BEGIN
PROMPT 22 18 "Stampa solo le righe relative ai centri di costo"
PROMPT 22 18 "Stampa CDC/Commessa e fase relativa ad ogni riga"
GROUP 4 5
END
STRING F_DACDC 20
BEGIN
PROMPT 3 19 "Da "
PROMPT 3 19 "Da CDC/Commessa "
FLAGS "UZ"
USE CMS
INPUT CODTAB F_DACDC
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@70" S0
OUTPUT F_DACDC CODTAB
OUTPUT F_DACDC_DES S0
CHECKTYPE SEARCH
GROUP 4
GROUP 4 5
END
STRING F_DACDC_DES 70 39
STRING F_DAFASE 10
BEGIN
PROMPT 30 19 ""
USE CMS KEY 2
INPUT S0 F_DACDC_DES
DISPLAY "Descrizione@70" S0
PROMPT 50 19 "Da fase "
FLAGS "UZ"
USE FSC
INPUT CODTAB F_DAFASE
DISPLAY "Codice@20" CODTAB
COPY OUTPUT F_DACDC
DISPLAY "Descrizione@70" S0
OUTPUT F_DAFASE CODTAB
CHECKTYPE SEARCH
GROUP 4
GROUP 4 5
END
STRING F_ACDC 20
BEGIN
PROMPT 3 20 "A "
PROMPT 3 20 "A CDC/Commessa "
FLAGS "UZ"
COPY USE F_DACDC
INPUT CODTAB F_ACDC
COPY DISPLAY F_DACDC
OUTPUT F_ACDC CODTAB
OUTPUT F_ACDC_DES S0
CHECKTYPE SEARCH
GROUP 4
GROUP 4 5
END
STRING F_ACDC_DES 70 39
STRING F_AFASE 10
BEGIN
PROMPT 30 20 ""
COPY USE F_DACDC_DES
INPUT S0 F_ACDC_DES
COPY DISPLAY F_DACDC_DES
COPY OUTPUT F_ACDC
PROMPT 50 20 "A fase "
FLAGS "UZ"
COPY USE F_DAFASE
INPUT CODTAB F_AFASE
COPY DISPLAY F_DAFASE
OUTPUT F_AFASE CODTAB
CHECKTYPE SEARCH
GROUP 4
GROUP 4 5
END
BOOLEAN F_CDC_ONLY
BEGIN
PROMPT 3 21 "Stampa solo le righe relative a CDC/Commesse "
GROUP 4 5
END
ENDPAGE
ENDMASK

View File

@ -66,6 +66,7 @@ TFieldtypes TMastrini_record::type(const char* fieldname) const
class TMastrini_application : public TPrintapp
{
static bool anno_hnd(TMask_field& f, KEY k);
static bool data_inizio (TMask_field& f, KEY k);
static bool data_fine (TMask_field& f, KEY k);
static bool gruppo_hnd (TMask_field& f, KEY k);
@ -162,6 +163,7 @@ protected:
bool sheet2mask();
const char* real2str(const real& r) const;
bool show_cdc();
public:
//TDate _inizioEs,_fineEs;
@ -273,6 +275,26 @@ void TMastrini_application::process_link(int id, const char* txt)
pn.run();
}
// Visualizzo le commesse se necessario
bool TMastrini_application::show_cdc()
{
const bool okp = has_module(CMAUT); // Mostra campo "Stampa commesse"
bool okg = okp; // Mostra campi del gruppo delle commesse
if (okg)
{
okg = _msk->get_int(F_ANNO) != 0; // Controllo anno
if (okg)
{ // Controllo se conto normale
const char ti = _msk->get(F_TIPOCF_INI)[0];
const char tf = _msk->get(F_TIPOCF_FINE)[0];
okg = ti <= ' ' && tf <= ' ';
}
}
_msk->show(-7, okg);
_msk->show(F_PRINTCDC, okp);
return okg;
}
bool TMastrini_application::cdc_handler(TMask_field& f, KEY k)
{
if (k == K_TAB)
@ -483,15 +505,7 @@ bool TMastrini_application::gruppo_hnd (TMask_field& f, KEY k)
bool TMastrini_application::tipocf_hnd (TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
if (app().has_module(CMAUT))
{
TMask& m = f.mask();
char ti = m.get(F_TIPOCF_INI)[0];
char tf = m.get(F_TIPOCF_FINE)[0];
m.show(-7, ti <= ' ' && tf <= ' ');
}
}
app().show_cdc();
return TRUE;
}
@ -584,9 +598,6 @@ bool TMastrini_application::contof_hnd (TMask_field& f, KEY k)
int gruppo = m.get_int(F_GRUPPOFINE);
int conto = m.get_int(id);
if (app().has_module(CMAUT))
m.show(-7, m.get(F_TIPOCF_FINE)[0] <= ' ');
if (gruppo != 0 && conto != 0 && m.field(F_DESCRFINE_CONTO).empty())
{
bool warning;
@ -745,6 +756,13 @@ bool TMastrini_application::almeno_un_record()
return trovato;
}
bool TMastrini_application::anno_hnd(TMask_field& f, KEY k)
{
if (f.to_check(k, TRUE))
app().show_cdc();
return TRUE;
}
bool TMastrini_application::data_inizio(TMask_field& f, KEY k)
{
const TDate data = f.mask().get (F_DATAINI);
@ -2637,7 +2655,7 @@ bool TMastrini_application::set_print(int m)
_print_cdc = _msk->get_bool(F_PRINTCDC);
if (_msk->get(F_DACDC).not_empty() || _msk->get(F_ACDC).not_empty())
if (_msk->field(F_DACDC).active() && (_msk->get(F_DACDC).not_empty() || _msk->get(F_ACDC).not_empty()))
{
TRelation rel("CMS");
TRectype darec(rel.curr()), arec(rel.curr());
@ -2681,8 +2699,6 @@ bool TMastrini_application::set_print(int m)
}
while (need_to_repeat_print());
}
}
}
else
@ -4109,6 +4125,7 @@ const char* TMastrini_application::descrizione_sottoconto()
// o di quella dello spreadsheet della seconda pagina
void TMastrini_application::set_handlers(TMask* msk) const
{
msk->set_handler(F_ANNO, anno_hnd);
msk->set_handler(F_DATAINI, data_inizio);
msk->set_handler(F_DATAFINE, data_fine);
msk->set_handler(F_GRUPPOFINE, gruppo_hnd);
@ -4216,9 +4233,6 @@ bool TMastrini_application::user_create()
set_handlers(_msk);
_msk->set_handler(F_MEMORIZZA, memorizza_handler);
if (!has_module(CMAUT))
_msk->hide(-7); // Spegne campi commesse in assenza del modulo relativo
TSheet_field& sht = (TSheet_field&)_msk->field(F_SCELTE);
sht.set_notify(scelte_notify);
TMask& sm = sht.sheet_mask();

View File

@ -494,20 +494,19 @@ bool TCodiceIVA::read(const char* cod)
real TCodiceIVA::imposta(const real & imponibile, int ndec, const char * codval) const
{
const real percent = percentuale();
real iva = imponibile * percent / 100.0;
switch (ndec)
{
case AUTO_DECIMALS:
ndec = TCurrency(ZERO, codval).decimals();
ndec = TExchange(codval).decimals(FALSE);
break;
case AUTO_PRICES_DECIMALS:
ndec = TPrice(ZERO, codval).decimals();
ndec = TExchange(codval).decimals(TRUE);
break;
default:
break;
}
real iva = imponibile * percent / 100.0;
if (ndec < 20)
{
if (ndec == 0)
@ -523,27 +522,27 @@ real TCodiceIVA::imposta(const real & imponibile, int ndec, const char * codval)
return iva;
}
real TCodiceIVA::scorpora(real & imponibile, int ndec, const char* codval) const
real TCodiceIVA::scorpora(real& lordo, int ndec, const char* codval) const
{
const real percent = percentuale();
real iva = (lordo * percent) / (percent + 100.0);
real imponibile = lordo - iva;
switch (ndec)
{
case AUTO_DECIMALS:
ndec = TCurrency(ZERO, codval).decimals();
ndec = TExchange(codval).decimals(FALSE);
break;
case AUTO_PRICES_DECIMALS:
ndec = TPrice(ZERO, codval).decimals();
ndec = TExchange(codval).decimals(TRUE);
break;
default:
break;
}
real iva = (imponibile * percent) / (percent + 100.0);
if (ndec < 20)
if (ndec < 20) // E' richiesto un arrotondamento significativo?
{
if (ndec == 0)
lordo.round(ndec); // Arrotondo importo lordo
if (ndec == 0) // Probabile caso Lire: arrotondo per eccesso l'IVA
{
if (imponibile > ZERO)
iva.ceil(ndec);
@ -551,9 +550,20 @@ real TCodiceIVA::scorpora(real & imponibile, int ndec, const char* codval) const
iva.floor(ndec);
}
else
iva.round(ndec);
iva.round(ndec); // Probabile caso Euro: arrotondo matematicamente l'IVA
imponibile.round(ndec); // Arrotondo imponibile
real diff = lordo - imponibile - iva;
diff.round(ndec); // Arrotondo la differenza (importantissimo per evitare valori del tipo 1E-18)
if (!diff.is_zero())
{
if (iva.sign() == diff.sign()) // Faccio crescere l'iva o l'imponibile ?
iva += diff;
else
imponibile += diff;
}
}
imponibile -= iva;
lordo = imponibile; // lordo è un reference da aggiornare con l'imponibile!
return iva;
}

View File

@ -87,17 +87,12 @@ Flags = ""
Item_01 = "Prima nota", "cg2 -0", "F"
Item_02 = "Gestione movimenti provvisori", "cg2 -1", "F"
Item_03 = "Visualizzazione mastrini", "cg3 -5", "F"
Item_04 = "IVA", [PRASSICG_010]
Item_05 = "Lista movimenti", "cg3 -0 M", "F"
Item_06 = "Lista fatture per clienti/fornitori", "cg3 -0 C", "F"
Item_07 = "Stampa Mastrini", "cg3 -1", "F"
Item_08 = "Stampa Riepiloghi", "cg3 -4", "F"
Item_09 = "Visualizzazione saldi", "cg5 -2", "F"
Item_10 = "Ricalcolo saldi", "cg4 -0", "F"
Item_11 = "Bilancio", "cg1 -4", "F"
Item_12 = "Bilancio IV direttiva CEE", "cg1 -5", "F"
Item_13 = "Giornale", "cg3 -3", "F"
Item_14 = "Saldaconto", <scprassi.men>
Item_04 = "Visualizzazione saldi", "cg5 -2", "F"
Item_05 = "Ricalcolo saldi", "cg4 -0", "F"
Item_06 = "IVA", [PRASSICG_010]
Item_07 = "Stampe di contabilita`", [PRASSICG_023]
Item_08 = "Stampe CDC/Commesse ", <cmprassi.men>
Item_09 = "Saldaconto", <scprassi.men>
[PRASSICG_010]
Caption = "IVA"
@ -229,6 +224,19 @@ Item_02 = "Gestione versamenti", "ba3 -0 %del", ""
Item_03 = "Stampa versamenti", "cg1 -3", "F"
Item_04 = "Gestione profili deleghe e distinte", "ba2 -0", ""
[PRASSICG_023]
Caption = "Stampe di contabilita`"
Picture = <cg01.bmp>
Module = 7
Flags = ""
Item_01 = "Lista movimenti", "cg3 -0 M", "F"
Item_02 = "Lista fatture per clienti/fornitori", "cg3 -0 C", "F"
Item_03 = "Stampa Mastrini", "cg3 -1", "F"
Item_04 = "Stampa Riepiloghi", "cg3 -4", "F"
Item_05 = "Bilancio", "cg1 -4", "F"
Item_06 = "Bilancio IV direttiva CEE", "cg1 -5", "F"
Item_07 = "Giornale", "cg3 -3", "F"
[PRASSICG_025]
Caption = "Collegamento bilanci"
Picture = <cg01.bmp>

View File

@ -781,8 +781,6 @@ TImporto TRiga_partite::importo(bool valuta, int mode) const
if (!in_lire) // Converto in lire gli abbuoni che sono memorizzati in valuta
{
const real cambio(get(PART_CAMBIO));
// abbuoni.valore() *= cambio;
// abbuoni.valore().round();
TCurrency cur(abbuoni.valore(), codice_valuta(), cambio);
cur.change_to_firm_val();
abbuoni.valore() = cur.get_num();
@ -1230,6 +1228,35 @@ TRiga_partite& TPartita::new_row(int r)
return nuova;
}
TRiga_partite& TPartita::riga(int r) const
{
if (!_part.exist(r))
{
yesnofatal_box("La partita %d %s del conto %c %d %d %ld (%s) è incoerente: manca la riga %d",
anno(), (const char*)numero(),
_conto.tipo(), _conto.gruppo(), _conto.conto(), _conto.sottoconto(),
(const char*)_conto.descrizione(), r);
// Ricreiamo una riga fasulla tanto per non bloccare il programma
TRiga_partite& newrow = ((TPartita*)this)->new_row(r);
for (int p = last(); p > 0; p = pred(p))
{
const TRiga_partite& par = riga(p);
for (int rr = par.rate(); rr > 0; rr--)
{
TRiga_scadenze& rat = par.rata(rr);
if (rat.exist(r)) // Ho trovato un pagamento assegnato alla nuova riga!
{
newrow.put(PART_TIPOMOV, (int)tm_pagamento); // Imposta il tipo movimento
newrow.put(PART_SEZ, par.sezione() == 'D' ? 'A' : 'D'); // Imposta sezione al contrario della fattura
TValuta val(par); val.put(newrow); // Copia valuta da fattura
}
}
}
}
return (TRiga_partite&)_part.row(r);
}
TRiga_scadenze& TPartita::rata(int nriga, int nrata) const
{
const TRiga_partite& r = riga(nriga);
@ -1619,8 +1646,6 @@ TImporto TPartita::importo_pagato_unassigned(bool val, int mode) const
real abb(pag.get_real(PAGSCA_ABBUONI));
if (in_val && !val) // Gli abbuoni sono sempre in valuta e quindi
{ // devono essere convertiti opportunamente
// abb *= sum.get_real(PART_CAMBIO);
// abb.round();
const TExchange cmb(sum);
TCurrency cur(abb, cmb);
cur.change_to_firm_val();

View File

@ -235,7 +235,7 @@ public: // TObject
public:
enum { NUMLEN = 7, UNASSIGNED = 9999 };
TRiga_partite& riga(int r) const { return (TRiga_partite&)_part.row(r); }
TRiga_partite& riga(int r) const;
TRiga_partite& new_row(int r = 0);
void rimuovi_riga(int r);
TRiga_scadenze& rata(int nriga, int nrata) const;

View File

@ -19,7 +19,6 @@ class TForm_contixcdc : public TForm
public:
virtual bool validate(TForm_item &cf, TToken_string &s);
void set_testata() {set_header(1,TRUE);}
//void set_pedata() {set_footer(1,FALSE); set_footer(1,TRUE);}
TPrint_section& get_body() {return section('B', odd_page);}
TPrint_section& get_section(char s, pagetype pos) {return section(s, pos);}
TForm_contixcdc();
@ -37,7 +36,48 @@ TForm_contixcdc::~TForm_contixcdc() //distruttore
bool TForm_contixcdc::validate(TForm_item &cf, TToken_string &s)
{
return TForm::validate(cf,s); //richiama la validate standard della classe genitore
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
TString valore;
if (code== "_DITTA")
{
// lettura dei dati della ditta
// sintassi: _DITTA,{<campo relazione>|<macro>}
// dove: <campo relazione> è un riferimento alla relazione di gestione dei dati della ditta (es. 113@->DENCOM è la denominazione del comune di residenza della ditta)
// <macro> è uno delle macro seguenti:
// !RAGSOC ragione sociale
// !IND indirizzo (fiscale se c'è, oppure di residenza)
// !NUM numero civico (fiscale se c'è, oppure di residenza)
// !CAP CAP (fiscale se c'è, oppure di residenza)
// !COM comune (fiscale se c'è, oppure di residenza)
// !PROV provincia (fiscale se c'è, oppure di residenza)
// !IVA partita iva
// !CF codice fiscale
// !TEL numero di telefono (con prefisso)
// !FAX numero di fax (con prefisso)
// !REGSOC numero di registrazione presso il Tribunale
// !CCIAA numero di registrazione presso la camera di commercio
// nota: la relazione della ditta è così strutturata:
// %NDITTE (9) Dati ditte
// + %ANAGR (6) Anagrafica generale (indirizzo, ecc.)
// + %COMUNI (113@) Comune di residenza
// + %COMUNI (213@) Comune di residenza fiscale
TLocalisamfile firm(LF_NDITTE);
TLocalisamfile anag(LF_ANAG);
firm.put("CODDITTA",main_app().get_firm());
firm.read();
anag.put("TIPOA",firm.get("TIPOA"));
anag.put("CODANAGR",firm.get("CODANAGR"));
anag.read();
TString in(s.get());
if (in[0]!='!')
{
cf.set(firm.curr().get(in));
return TRUE;
}
else
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
} // fine _DITTA
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
}
class TContixcdc_mask : public TAutomask
@ -76,6 +116,33 @@ bool TContixcdc_mask::on_field_event(TOperable_field& o, TField_event e, long jo
enable(F_AFSC, on);
}
break;
case F_DATAINI:
if (e == fe_modify || e == fe_close)
{
TDate dataini(field(F_DATAINI).get());
if (dataini.ok())
{
TDate datainies = cache().get("ESC", field(F_ANNO).get(), "D0");
if (dataini < datainies && datainies.ok())
return error_box("La data iniziale non può essere precedente alla data inizio esercizio %s", (const char*) datainies.string());
}
}
break;
case F_DATAFIN:
if (e == fe_modify || fe_close)
{
TDate datafin(field(F_DATAFIN).get());
if (datafin.ok())
{
TDate datafines = cache().get("ESC", field(F_ANNO).get(), "D1");
if (datafin > datafines && datafines.ok())
return error_box("La data finale non può essere successiva alla data fine esercizio %s", (const char*) datafines.string());
TDate dataini(field(F_DATAINI).get());
if (dataini > datafin)
return error_box("La data iniziale non può essere successiva alla data finale");
}
}
break;
default: break;
}
return TRUE;
@ -83,7 +150,7 @@ bool TContixcdc_mask::on_field_event(TOperable_field& o, TField_event e, long jo
struct TTotali : public TObject
{
TImporto _tot_progprec, _tot_periodo, _tot_saldocont;
TImporto _tot_progprec, _tot_periodo, _tot_saldoatt;
void azzera();
TTotali& operator += (const TTotali& t);
};
@ -92,29 +159,29 @@ void TTotali::azzera()
{
_tot_progprec = 0;
_tot_periodo = 0;
_tot_saldocont = 0;
_tot_saldoatt = 0;
}
TTotali& TTotali::operator += (const TTotali& t)
{
_tot_progprec += t._tot_progprec;
_tot_periodo += t._tot_periodo;
_tot_saldocont += t._tot_saldocont;
_tot_saldoatt += t._tot_saldoatt;
return *this; //ritorna se stesso, quindi i valori dei totali
}
class TContixCdc : public TSkeleton_application
{
TContixcdc_mask * _mask;
TForm_contixcdc * _form;
TContixcdc_mask* _mask;
TForm_contixcdc* _form;
int _codes;
TDate _dataini, _datafin;
TTotali _t_gruppo, _t_sottoc, _t_fsc, _t_cms; //sono i tre set di totali (gruppo/conto, sottoconto, commessa)
int _currgruppo, _currconto, _oldgruppo, _oldconto;
long _currsottoc, _oldsottoc;
TString _currcms, _currfsc, _oldcms, _oldfsc;
bool _saltopagina;
bool _saltopagina, _headercms, _headerfsc;
protected:
virtual bool create();
@ -122,13 +189,11 @@ protected:
virtual void main_loop();
void print_sottoc();
void ctrl_commessa();
void print_footer_gruppo(const int gruppo, const int conto);
void print_header_gruppo(const int gruppo, const int conto);
void print_footer_commessa(const TString& cms);
void print_header_commessa(const TString& cms);
void print_footer_fase(const TString& fsc);
void print_header_fase(const TString& fsc);
void print_footer_gruppo();
void print_footer_cms();
void print_header_cms();
void print_footer_fsc();
void print_header_fsc();
void set_intestazione();
void fill_body(const TTotali& tot); //riempie il campo body con tutti i totali
void print_body(); //stampa effettivamente il body
@ -144,10 +209,9 @@ public:
bool TContixCdc::create()
{
open_files(LF_RMOV, 0);
_mask = new TContixcdc_mask;
_form = new TForm_contixcdc;
open_files(LF_RMOV, 0);
return TSkeleton_application::create();
}
@ -159,78 +223,100 @@ bool TContixCdc::destroy()
}
void TContixCdc::print_sottoc()
{
if (_oldsottoc != -1)
{
if (!_t_sottoc._tot_periodo.is_zero())
{
if (_headercms)
{
print_header_cms();
_headercms = FALSE;
}
if (_headerfsc)
{
print_header_fsc();
_headerfsc = FALSE;
}
TString16 key;
key.format("%d|%d|%ld", _oldgruppo, _oldconto, _oldsottoc);
const TRectype& pcon = cache().get(LF_PCON, key);
set_field(FR_GRUPPO, _oldgruppo);
set_field(FR_CONTO, _oldconto);
set_field(FR_SOTTOC, _oldsottoc);
set_field(FR_D_SOTTOC, pcon.get(PCN_DESCR));
// manca costo/ricavo
fill_body(_t_sottoc);
print_body();
}
_t_gruppo += _t_sottoc;
_t_fsc += _t_sottoc;
_t_cms += _t_sottoc;
}
_oldsottoc = _currsottoc;
_t_sottoc.azzera();
}
void TContixCdc::print_footer_gruppo(const int gruppo, const int conto)
void TContixCdc::print_footer_gruppo()
{
TString16 key;
key.format("%d|%d", gruppo, conto);
TString tmp;
const TRectype& pcon = cache().get(LF_PCON, key);
tmp.format("TOTALE %d %d %s", gruppo, conto, (const char*) pcon.get(PCN_DESCR));
set_field(FR_SOTTOC, "");
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_gruppo);
print_body();
if (!_t_gruppo._tot_periodo.is_zero())
{
TString16 key;
key.format("%d|%d", _oldgruppo, _oldconto);
TString tmp;
const TRectype& pcon = cache().get(LF_PCON, key);
tmp.format("TOTALE %d %d %s", _oldgruppo, _oldconto, (const char*) pcon.get(PCN_DESCR));
set_field(FR_GRUPPO, "");
set_field(FR_CONTO, "");
set_field(FR_SOTTOC, "");
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_gruppo);
print_body();
}
_oldgruppo = _currgruppo;
_oldconto = _currconto;
_t_gruppo.azzera();
}
void TContixCdc::print_header_gruppo(const int gruppo, const int conto)
{
TString tmp;
TString16 key;
key.format("%d|%d", gruppo, conto);
const TRectype& pcon = cache().get(LF_PCON, key);
tmp.format("%d %d", gruppo, conto);
_form->find_field('H', even_page, FR_GRUPPOCONTO).set(tmp);
_form->find_field('H', even_page, FR_D_GRUPPOCONTO).set(pcon.get(PCN_DESCR));
print_specialsection('H', even_page);
}
void TContixCdc::print_footer_commessa(const TString& cms)
void TContixCdc::print_footer_cms()
{
TString tmp;
tmp.format("TOTALE COMMESSA %s", (const char*) cms);
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_cms);
print_body();
if (_saltopagina)
printer().formfeed();
if (!_t_cms._tot_periodo.is_zero())
{
TString tmp;
tmp.format("TOTALE COMMESSA %s", (const char*) _oldcms);
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_cms);
print_body();
if (_saltopagina)
printer().formfeed();
}
_t_cms.azzera();
_oldcms = _currcms;
_headercms = TRUE;
}
void TContixCdc::print_footer_fase(const TString& fsc)
void TContixCdc::print_footer_fsc()
{
TString tmp;
tmp.format("TOTALE FASE %s", (const char*) fsc);
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_fsc);
print_body();
if (!_t_fsc._tot_periodo.is_zero())
{
TString tmp;
tmp.format("TOTALE FASE %s", (const char*) _oldfsc);
set_field(FR_D_SOTTOC, tmp);
fill_body(_t_fsc);
print_body();
}
_oldfsc = _currfsc;
_t_fsc.azzera();
_headerfsc = TRUE;
}
void TContixCdc::print_header_commessa(const TString& cms)
void TContixCdc::print_header_cms()
{
_form->find_field('H', odd_page, FR_CMS).set(cms);
_form->find_field('H', odd_page, FR_D_CMS).set(cache().get("CMS", cms).get("S0"));
_form->find_field('H', odd_page, FR_CMS).set(_oldcms);
_form->find_field('H', odd_page, FR_D_CMS).set(cache().get("CMS", _oldcms).get("S0"));
print_specialsection('H', odd_page);
}
void TContixCdc::print_header_fase(const TString& fsc)
void TContixCdc::print_header_fsc()
{
_form->find_field('H', last_page, FR_FSC).set(fsc);
_form->find_field('H', last_page, FR_D_FSC).set(cache().get("FSC", fsc).get("S0"));
_form->find_field('H', last_page, FR_FSC).set(_oldfsc);
_form->find_field('H', last_page, FR_D_FSC).set(cache().get("FSC", _oldfsc).get("S0"));
print_specialsection('H', last_page);
}
@ -279,31 +365,21 @@ void TContixCdc::set_field(int id, const char* val)
void TContixCdc::fill_body(const TTotali& tot)
{
// riempie il body odd, contenente i totali; lo fa chiamando la set_field per ogni campo
// riempie il body odd, contenente i totali; lo fa chiamando la set_field per ogni campo
set_field(FR_PROGPREC, tot._tot_progprec.valore());
set_field(FR_PERIODO, tot._tot_periodo.valore());
real tempval1 = tot._tot_progprec.valore()+tot._tot_periodo.valore();
set_field(FR_PROG, tempval1);
set_field(FR_SALDOCONT, tot._tot_saldocont.valore());
set_field(FR_SALDOATT, tot._tot_saldoatt.valore());
}
void TContixCdc::aggiorna_totali(const TImporto importo, const TDate data)
{
if (data < _dataini)
_t_sottoc._tot_progprec+=importo;
else if (data > _datafin)
_t_sottoc._tot_saldocont+=importo;
else
else if (data <= _datafin)
_t_sottoc._tot_periodo+=importo;
}
void TContixCdc::ctrl_commessa()
{
if (_oldcms != "@@")
print_footer_commessa(_oldcms);
_t_cms.azzera();
print_header_commessa(_currcms);
_oldcms = _currcms;
_t_sottoc._tot_saldoatt+=importo;
}
void TContixCdc::main_loop()
@ -314,13 +390,15 @@ void TContixCdc::main_loop()
_codes = _mask->get_int(F_ANNO); // esercizio
_dataini = _mask->get_date(F_DATAINI); // data iniziale
_datafin = _mask->get_date(F_DATAFIN); // data finale
TString80 dacdc = _mask->get(F_DACDC); // cdc/commessa iniziale
TString80 dafsc = _mask->get(F_DAFSC); // fase iniziale
TString80 acdc = _mask->get(F_ACDC); // cdc/commessa finale
TString80 afsc = _mask->get(F_AFSC); // fase finale
// relazione su rmov
if (_dataini.empty())
_dataini = cache().get("ESC", _mask->get(F_ANNO)).get_date("D0");
if (_datafin.empty())
_datafin = cache().get("ESC", _mask->get(F_ANNO)).get_date("D1");
TString80 dacdc = _mask->get(F_DACDC); // cdc/commessa iniziale
TString80 dafsc = _mask->get(F_DAFSC); // fase iniziale
TString80 acdc = _mask->get(F_ACDC); // cdc/commessa finale
TString80 afsc = _mask->get(F_AFSC); // fase finale
TRelation relrmov(LF_RMOV);
// filtro
TString filtro = "";
if (_codes != 0)
filtro.format("ANNOES==%d", _codes);
@ -355,31 +433,33 @@ void TContixCdc::main_loop()
if (dacdc.empty() && acdc.empty())
filtro << " && " << "(CODCMS!=\"\")";
TRectype darec(LF_RMOV), arec(LF_RMOV);
// servono per gruppo-conto-sottoconto
darec.zero();
arec.zero();
darec.put(RMV_GRUPPO, _mask->get_int(F_GRUPPOINI));
darec.put(RMV_CONTO, _mask->get_int(F_CONTOINI));
darec.put(RMV_SOTTOCONTO, _mask->get_long(F_SOTTOCINI));
arec.put(RMV_GRUPPO, _mask->get_int(F_GRUPPOFIN));
arec.put(RMV_CONTO, _mask->get_int(F_CONTOFIN));
arec.put(RMV_SOTTOCONTO, _mask->get_long(F_SOTTOCFIN));
// ordinamento per TSorted_cursor
TString ordin = "CODCMS|FASCMS|GRUPPO|CONTO|SOTTOCONTO|DATAREG|NUMREG|NUMRIG";
TString ordin = "GRUPPO|CONTO|SOTTOCONTO|DATAREG|NUMREG|NUMRIG";
bool ctrlfsc = TRUE;
if (dafsc.empty() && afsc.empty())
{
ctrlfsc = FALSE;
ordin.insert("CODCMS|");
}
else
ordin.insert("CODCMS|FASCMS|");
TSorted_cursor sortcur (&relrmov, ordin, filtro, 2, &darec, &arec);
sortcur.setregion(darec,arec);
sortcur.setfilter(filtro,TRUE);
long num = sortcur.items();
sortcur.freeze();
printer().open();
// setta l'intestazione del form...
set_intestazione();
TRectype currrec(LF_RMOV);
_oldcms = "@@";
_oldfsc = "@@";
_oldfsc = (ctrlfsc) ? "@@" : "";
_oldsottoc = -1;
_oldgruppo = -1;
_oldconto = -1;
@ -387,54 +467,42 @@ void TContixCdc::main_loop()
_t_fsc.azzera();
_t_gruppo.azzera();
_t_sottoc.azzera();
_headercms = TRUE;
_headerfsc = (ctrlfsc) ? TRUE : FALSE;
for (sortcur=0; sortcur.pos()<num; ++sortcur) //scansione su tutte le righe di movimento
{
const TRectype rmovrec = sortcur.curr();
_currcms = rmovrec.get(RMV_CODCMS);
_currfsc = rmovrec.get(RMV_FASCMS);
_currfsc = (ctrlfsc) ? rmovrec.get(RMV_FASCMS) : "";
_currsottoc = rmovrec.get_long(RMV_SOTTOCONTO);
_currgruppo = rmovrec.get_int(RMV_GRUPPO);
_currconto = rmovrec.get_int(RMV_CONTO);
if ((_oldcms == _currcms) && (_oldfsc == _currfsc) && (_oldgruppo == _currgruppo) && (_oldconto == _currconto) && (_oldsottoc == _currsottoc))
{
TDate datareg = rmovrec.get_date(RMV_DATAREG);
TImporto importo(rmovrec.get_char(RMV_SEZIONE), rmovrec.get_real(RMV_IMPORTO));
aggiorna_totali(importo, datareg);
_t_gruppo+=_t_sottoc;
_t_cms+=_t_sottoc;
}
else
TDate datareg = rmovrec.get_date(RMV_DATAREG);
TImporto importo(rmovrec.get_char(RMV_SEZIONE), rmovrec.get_real(RMV_IMPORTO));
if ((_oldcms != _currcms) || (_oldfsc != _currfsc) || (_oldgruppo != _currgruppo) || (_oldconto != _currconto) || (_oldsottoc != _currsottoc))
{
// stampo la riga del sottoconto se diverso da -1
print_sottoc();
// verifico se devo stampare il totale per gruppo
// questo accade se cambia gruppo/conto oppure se cambia commessa/fase
print_sottoc();
if ((_oldcms != _currcms) || (_oldfsc != _currfsc) || (_oldgruppo != _currgruppo) || (_oldconto != _currconto) )
{
if (_oldgruppo != -1)
print_footer_gruppo(_oldgruppo, _oldconto);
_oldgruppo = _currgruppo;
_oldconto = _currconto;
_t_gruppo.azzera();
print_footer_gruppo();
if ((_oldcms != _currcms) || (_oldfsc != _currfsc))
{
if (_oldfsc != "@@")
print_footer_fase(_oldfsc);
_oldfsc = _currfsc;
_t_fsc.azzera();
ctrl_commessa();
print_header_fase(_currfsc);
{
if (ctrlfsc)
print_footer_fsc();
if (_oldcms != _currcms)
print_footer_cms();
}
print_header_gruppo(_currgruppo, _currconto);
}
}
aggiorna_totali(importo, datareg);
}
if (num>0)
if (num > 0)
{
print_sottoc();
print_footer_gruppo(_currgruppo, _currconto);
print_footer_fase(_currfsc);
print_footer_commessa(_currcms);
print_footer_gruppo();
if (ctrlfsc)
print_footer_fsc();
print_footer_cms();
printer().formfeed();
}
printer().close();

View File

@ -12,13 +12,12 @@
#define FR_D_CMS 22
#define FR_FSC 23
#define FR_D_FSC 24
#define FR_GRUPPOCONTO 25
#define FR_D_GRUPPOCONTO 26
#define FR_SOTTOC 31
#define FR_D_SOTTOC 32
#define FR_CR_SOTTOC 33
#define FR_PROGPREC 34
#define FR_PERIODO 35
#define FR_PROG 36
#define FR_SALDOCONT 37
#define FR_GRUPPO 31
#define FR_CONTO 32
#define FR_SOTTOC 33
#define FR_D_SOTTOC 34
#define FR_PROGPREC 35
#define FR_PERIODO 36
#define FR_PROG 37
#define FR_SALDOATT 38

View File

@ -2,214 +2,214 @@
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
GRID ""
OFFSET 0 0
FONT "Courier New"
SIZE 12
GRID ""
END
SECTION HEADER FIRST 7
// intestazione generale stampa conti per commessa
SECTION HEADER FIRST 6
STRINGA 1 40 1
STRINGA 1 5
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
KEY "Codice ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA,CODDITTA
PICTURE "#####"
END
STRINGA 2 10
STRINGA 2 40
BEGIN
KEY "Data"
PROMPT 100 1 "Data "
MESSAGE _TODAY
KEY "nome ditta"
PROMPT 13 1 ""
MESSAGE _DITTA,RAGSOC
END
NUMERO 3 7
STRINGA 310
BEGIN
KEY "Nr. pagina"
PROMPT 120 1 "Pagina "
MESSAGE _PAGENO
KEY "Data"
PROMPT 100 1 "Data "
MESSAGE _TODAY
END
NUMERO 4 7
BEGIN
KEY "Nr. pagina"
PROMPT 120 1 "Pagina "
MESSAGE _PAGENO
END
STRINGA -1 22
BEGIN
KEY "Intestazione stampa"
PROMPT 1 2 "Conti per CDC/Commessa"
KEY "Intestazione stampa"
PROMPT 1 2 "Conti per CDC/Commessa"
END
NUMERO FR_ESERCIZIO 16
BEGIN
KEY "Parametri stampa: codice esercizio"
PROMPT 1 3 "Esercizio: "
KEY "Parametri stampa: codice esercizio"
PROMPT 1 3 "Esercizio: "
END
DATA FR_DATAINI
BEGIN
KEY "Parametri stampa: data iniziale"
PROMPT 1 4 "Movimenti dal "
KEY "Parametri stampa: data iniziale"
PROMPT 1 4 "Movimenti dal "
END
DATA FR_DATAFIN
BEGIN
KEY "Parametri stampa: data finale"
PROMPT 40 4 "al "
KEY "Parametri stampa: data finale"
PROMPT 40 4 "al "
END
STRINGA FR_DACDC 20
BEGIN
KEY "Parametri stampa: da commessa"
PROMPT 1 5 "Da CDC/commessa: "
KEY "Parametri stampa: da commessa"
PROMPT 1 5 "Da CDC/commessa: "
END
STRINGA FR_DAFSC 10
BEGIN
KEY "Parametri stampa: da fase"
PROMPT 40 5 "Da fase: "
KEY "Parametri stampa: da fase"
PROMPT 40 5 "Da fase: "
END
STRINGA FR_ACDC 20
BEGIN
KEY "Parametri stampa: a commessa"
PROMPT 1 6 "a CDC/commessa: "
KEY "Parametri stampa: a commessa"
PROMPT 1 6 "a CDC/commessa: "
END
STRINGA FR_AFSC 10
BEGIN
KEY "Parametri stampa: a fase"
PROMPT 40 6 "a fase: "
KEY "Parametri stampa: a fase"
PROMPT 40 6 "a fase: "
END
END // section header first
// intestazione comessa
SECTION HEADER ODD 5
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 2 "------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA FR_CMS 20
BEGIN
KEY "Intestazione commessa"
PROMPT 1 1 "CDC/Commessa "
KEY "Codice commessa"
PROMPT 1 3 "@bCDC/Commessa "
END
STRINGA FR_D_CMS 50
BEGIN
KEY "Intestazione commessa"
PROMPT 35 1 ""
KEY "Descrizione commessa"
PROMPT 35 3 "@b"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------"
KEY "Intestazione stampa"
PROMPT 70 4 " Progr. prec."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 4 "Gruppo/Conto/Sottoconto"
KEY "Intestazione stampa"
PROMPT 85 4 " Tot. periodo"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 70 4 "Prog. prec."
KEY "Intestazione stampa"
PROMPT 100 4 " Tot. progr."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 115 4 " Saldo attuale"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 85 4 "Tot. periodo"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 100 4 "Tot. progr."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 115 4 "Saldo cont."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------"
KEY "Intestazione stampa"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------"
END
END // section header odd
// intestazione fase
SECTION HEADER LAST 1
STRINGA FR_FSC 20
BEGIN
KEY "Intestazione fase"
PROMPT 1 1 "Fase "
KEY "Codice fase"
PROMPT 1 1 "@bFase "
END
STRINGA FR_D_FSC 50
BEGIN
KEY "Intestazione fase"
PROMPT 35 1 ""
KEY "Descrizione fase"
PROMPT 35 1 "@b"
END
END // section header last
SECTION HEADER EVEN 1
STRINGA FR_GRUPPOCONTO 20
BEGIN
KEY "Intestazione stampa"
PROMPT 1 1 "Gruppo/Conto "
END
STRINGA FR_D_GRUPPOCONTO 50
BEGIN
KEY "Intestazione stampa"
PROMPT 21 1 ""
END
END // section header even
// riga di stampa (utilizzata per ogni gruppo/conto/sottoconto e per tutti i totali)
SECTION BODY ODD 1
NUMERO FR_GRUPPO 3
BEGIN
KEY "Gruppo"
PROMPT 5 1 ""
END
NUMERO FR_CONTO 3
BEGIN
KEY "Conto"
PROMPT 9 1 ""
END
NUMERO FR_SOTTOC 6
BEGIN
PROMPT 1 1 ""
BEGIN
KEY "Gruppo/Conto/Sottoconto"
PROMPT 13 1 ""
END
STRINGA FR_D_SOTTOC 50
BEGIN
PROMPT 8 1 ""
STRINGA FR_D_SOTTOC 48
BEGIN
KEY "Descrizione sottoconto"
PROMPT 20 1 ""
END
STRINGA FR_CR_SOTTOC 1
VALUTA FR_PROGPREC 14
BEGIN
PROMPT 64 1 ""
PROMPT 70 1 ""
PICTURE "."
END
NUMERO FR_PROGPREC 14 2
VALUTA FR_PERIODO 14
BEGIN
PROMPT 70 1 ""
PICTURE "###.###.###,##"
PROMPT 85 1 ""
PICTURE "."
END
NUMERO FR_PERIODO 14 2
VALUTA FR_PROG 14
BEGIN
PROMPT 85 1 ""
PICTURE "###.###.###,##"
END
NUMERO FR_PROG 14 2
BEGIN
PROMPT 100 1 ""
PICTURE "###.###.###,##"
PROMPT 100 1 ""
PICTURE "."
END
NUMERO FR_SALDOCONT 14 2
VALUTA FR_SALDOATT 14
BEGIN
PROMPT 115 1 ""
PICTURE "###.###.###,##"
PROMPT 115 1 ""
PICTURE "."
END
END // section body

View File

@ -41,7 +41,6 @@ BEGIN
PROMPT 2 4 "Codice esercizio "
HELP "Codice esercizio per cui si vuole la lista"
USE ESC
CHECKTYPE NORMAL
INPUT CODTAB F_ANNO
DISPLAY "Codice" CODTAB
DISPLAY "Data inizio esercizio" D0
@ -49,6 +48,8 @@ BEGIN
OUTPUT F_ANNO CODTAB
FLAGS "RZ"
ADD RUN cg0 -5 esc
CHECKTYPE REQUIRED
WARNING "Codice esercizio obbligatorio"
END
DATE F_DATAINI

View File

@ -10,6 +10,7 @@
#include "cm0200a.h"
#include "cm0200.h"
#include "causali.h"
#include "mov.h"
#include "rmov.h"
#include "pconti.h"
@ -36,7 +37,48 @@ TForm_schedacdc::~TForm_schedacdc() //distruttore
bool TForm_schedacdc::validate(TForm_item &cf, TToken_string &s)
{
return TForm::validate(cf,s); //richiama la validate standard della classe genitore
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
TString valore;
if (code== "_DITTA")
{
// lettura dei dati della ditta
// sintassi: _DITTA,{<campo relazione>|<macro>}
// dove: <campo relazione> è un riferimento alla relazione di gestione dei dati della ditta (es. 113@->DENCOM è la denominazione del comune di residenza della ditta)
// <macro> è uno delle macro seguenti:
// !RAGSOC ragione sociale
// !IND indirizzo (fiscale se c'è, oppure di residenza)
// !NUM numero civico (fiscale se c'è, oppure di residenza)
// !CAP CAP (fiscale se c'è, oppure di residenza)
// !COM comune (fiscale se c'è, oppure di residenza)
// !PROV provincia (fiscale se c'è, oppure di residenza)
// !IVA partita iva
// !CF codice fiscale
// !TEL numero di telefono (con prefisso)
// !FAX numero di fax (con prefisso)
// !REGSOC numero di registrazione presso il Tribunale
// !CCIAA numero di registrazione presso la camera di commercio
// nota: la relazione della ditta è così strutturata:
// %NDITTE (9) Dati ditte
// + %ANAGR (6) Anagrafica generale (indirizzo, ecc.)
// + %COMUNI (113@) Comune di residenza
// + %COMUNI (213@) Comune di residenza fiscale
TLocalisamfile firm(LF_NDITTE);
TLocalisamfile anag(LF_ANAG);
firm.put("CODDITTA",main_app().get_firm());
firm.read();
anag.put("TIPOA",firm.get("TIPOA"));
anag.put("CODANAGR",firm.get("CODANAGR"));
anag.read();
TString in(s.get());
if (in[0]!='!')
{
cf.set(firm.curr().get(in));
return TRUE;
}
else
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
} // fine _DITTA
return TForm::validate(cf, s); // se il codice del messaggio non è identificato viene passato alla funzione standard
}
class TSchedacdc_mask : public TAutomask
@ -75,6 +117,33 @@ bool TSchedacdc_mask::on_field_event(TOperable_field& o, TField_event e, long jo
enable(F_AFSC, on);
}
break;
case F_DATAINI:
if (e == fe_modify || e == fe_close)
{
TDate dataini(field(F_DATAINI).get());
if (dataini.ok())
{
TDate datainies = cache().get("ESC", field(F_ANNO).get(), "D0");
if (dataini < datainies && datainies.ok())
return error_box("La data iniziale non può essere precedente alla data inizio esercizio %s", (const char*) datainies.string());
}
}
break;
case F_DATAFIN:
if (e == fe_modify || fe_close)
{
TDate datafin(field(F_DATAFIN).get());
if (datafin.ok())
{
TDate datafines = cache().get("ESC", field(F_ANNO).get(), "D1");
if (datafin > datafines && datafines.ok())
return error_box("La data finale non può essere successiva alla data fine esercizio %s", (const char*) datafines.string());
TDate dataini(field(F_DATAINI).get());
if (dataini > datafin)
return error_box("La data iniziale non può essere successiva alla data finale");
}
}
break;
default: break;
}
return TRUE;
@ -82,19 +151,21 @@ bool TSchedacdc_mask::on_field_event(TOperable_field& o, TField_event e, long jo
struct TTotalis : public TObject
{
TImporto _tot_periodo, _tot_generale;
TImporto _tot_perprec, _tot_periodo, _tot_generale;
void azzera();
TTotalis& operator += (const TTotalis& t);
};
void TTotalis::azzera()
{
_tot_periodo = 0;
_tot_generale = 0;
_tot_perprec = 0;
_tot_periodo = 0;
_tot_generale = 0;
}
TTotalis& TTotalis::operator += (const TTotalis& t)
{
_tot_perprec += t._tot_perprec;
_tot_periodo += t._tot_periodo;
_tot_generale += t._tot_generale;
@ -103,15 +174,15 @@ TTotalis& TTotalis::operator += (const TTotalis& t)
class TSchedacdc : public TSkeleton_application
{
TSchedacdc_mask * _mask;
TForm_schedacdc * _form;
TSchedacdc_mask* _mask;
TForm_schedacdc* _form;
int _codes;
TDate _dataini, _datafin;
TTotalis _t_gruppo, _t_fsc, _t_cms;
TTotalis _t_sottoc, _t_fsc, _t_cms;
TString _currcms, _currfsc, _oldcms, _oldfsc;
bool _saltopagina, _headercms, _headerfsc, _headersottoc;
int _currgruppo, _currconto, _oldgruppo, _oldconto;
long _currsottoc, _oldsottoc;
TString _currcms, _currfsc, _oldcms, _oldfsc;
bool _saltopagina;
protected:
virtual bool create();
@ -119,19 +190,17 @@ protected:
virtual void main_loop();
void print_movimento(TSorted_cursor& cur);
void print_progprec(real importo);
void ctrl_commessa();
void print_footer_gruppo(const int gruppo, const int conto, const long sottoconto);
void print_header_gruppo(const int gruppo, const int conto, const long sottoconto);
void print_footer_commessa(const TString& cms);
void print_header_commessa(const TString& cms);
void print_footer_fase(const TString& fsc);
void print_header_fase(const TString& fsc);
void print_header_mov() { print_specialsection('H', even_page); };
void print_header_sottoc();
void print_footer_cms();
void print_header_cms();
void print_footer_fsc();
void print_header_fsc();
void set_intestazione();
void print_body(); //stampa effettivamente il body
void set_field(int id, const real& val); //mette in un campo del body odd un valore numerico
void set_field(int id, const char* val); //mette in un campo del body odd una stringa
void print_specialsection(char s, pagetype pos); // stampa una sezione qualunque (
void print_specialsection(char s, pagetype pos); // stampa una sezione qualunque
void aggiorna_totali(const TImporto importo, const TDate data);
public:
@ -155,18 +224,55 @@ bool TSchedacdc::destroy()
return TSkeleton_application::destroy();
}
void TSchedacdc::print_progprec(real importo)
{
_form->find_field('B', first_page, FR_PROGPREC).set(importo.string());
print_specialsection('B', first_page);
void TSchedacdc::aggiorna_totali(const TImporto importo, const TDate data)
{
if (data < _dataini)
{
_t_cms._tot_perprec+=importo;
_t_fsc._tot_perprec+=importo;
_t_sottoc._tot_perprec+=importo;
}
else if (data <= _datafin)
{
_t_cms._tot_periodo+=importo;
_t_fsc._tot_periodo+=importo;
_t_sottoc._tot_periodo+=importo;
}
_t_cms._tot_generale+=importo;
_t_fsc._tot_generale+=importo;
_t_sottoc._tot_generale+=importo;
}
void TSchedacdc::print_movimento(TSorted_cursor& cur)
{
if (_headercms)
{
print_header_cms();
if (!_headerfsc)
print_header_mov();
_headercms = FALSE;
}
if (_headerfsc)
{
print_header_fsc();
print_header_mov();
_headerfsc = FALSE;
}
if (_headersottoc)
{
print_header_sottoc();
_headersottoc = FALSE;
}
TRectype rec = cur.curr();
TString16 key;
set_field(FR_DATAREG, cur.curr().get(RMV_DATAREG));
set_field(FR_NUMREG, cur.curr().get(RMV_NUMREG));
set_field(FR_DESCRMOV, cur.curr(LF_MOV).get(MOV_DESCR));
set_field(FR_CODCAUS, cur.curr(LF_MOV).get(MOV_CODCAUS));
set_field(FR_NUMDOC, cur.curr(LF_MOV).get(MOV_NUMDOC));
set_field(FR_DATADOC, cur.curr(LF_MOV).get(MOV_DATADOC));
set_field(FR_CAUSALE, cur.curr(LF_MOV).get(MOV_CODCAUS));
TString tmp = cache().get(LF_CAUSALI, cur.curr(LF_MOV).get(MOV_CODCAUS),CAU_DESCR);
set_field(FR_D_CAUSALE, tmp);
const char sezione = cur.curr().get_char(RMV_SEZIONE);
const real importo = cur.curr().get_real(RMV_IMPORTO);
set_field(FR_DARE, "");
@ -175,68 +281,141 @@ void TSchedacdc::print_movimento(TSorted_cursor& cur)
set_field(FR_DARE, importo.string());
else
set_field(FR_AVERE, importo.string());
print_body();
}
void TSchedacdc::print_footer_gruppo(const int gruppo, const int conto, const long sottoconto)
{
TString16 key;
key.format("%d|%d|%ld", gruppo, conto, sottoconto);
TString tmp;
const TRectype& pcon = cache().get(LF_PCON, key);
tmp.format("TOTALE %d %d %ld %s", gruppo, conto, sottoconto, (const char*) pcon.get(PCN_DESCR));
//set_field(FR_SOTTOC, "");
//set_field(FR_D_SOTTOC, tmp);
//fill_body(_t_gruppo);
//print_body();
void TSchedacdc::print_footer_cms()
{
if (!_t_cms._tot_periodo.is_zero())
{
TString tmp;
tmp.format("PERIODO COMMESSA %s", (const char*) _oldcms);
_form->find_field('F', first_page, FR_CODICE).set(tmp);
_form->find_field('F', first_page, FR_TOTALE_DARE).set("");
_form->find_field('F', first_page, FR_TOTALE_AVERE).set("");
char sezione = _t_cms._tot_periodo.sezione();
real valore = _t_cms._tot_periodo.valore();
_form->find_field('F', first_page, FR_TOTALE_SALDO).set(valore.string());
if ( sezione == 'D')
{
_form->find_field('F', first_page, FR_TOTALE_DARE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("D");
}
else
{
_form->find_field('F', first_page, FR_TOTALE_AVERE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("A");
}
print_specialsection('F', first_page);
tmp.format("GENERALE COMMESSA %s", (const char*) _oldcms);
_form->find_field('F', first_page, FR_CODICE).set(tmp);
_form->find_field('F', first_page, FR_TOTALE_DARE).set("");
_form->find_field('F', first_page, FR_TOTALE_AVERE).set("");
sezione = _t_cms._tot_generale.sezione();
valore = _t_cms._tot_generale.valore();
_form->find_field('F', first_page, FR_TOTALE_SALDO).set(valore.string());
if ( sezione == 'D')
{
_form->find_field('F', first_page, FR_TOTALE_DARE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("D");
}
else
{
_form->find_field('F', first_page, FR_TOTALE_AVERE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("A");
}
print_specialsection('F', first_page);
if (_saltopagina)
printer().formfeed();
}
_t_cms.azzera();
_oldcms = _currcms;
_headercms = TRUE;
}
void TSchedacdc::print_header_gruppo(const int gruppo, const int conto, const long sottoconto)
{
TString tmp;
TString16 key;
key.format("%d|%d|%ld", gruppo, conto, sottoconto);
const TRectype& pcon = cache().get(LF_PCON, key);
tmp.format("%d %d %ld", gruppo, conto, sottoconto);
_form->find_field('H', even_page, FR_GRUPPOCONTO).set(tmp);
_form->find_field('H', even_page, FR_D_GRUPPOCONTO).set(pcon.get(PCN_DESCR));
print_specialsection('H', even_page);
}
void TSchedacdc::print_footer_commessa(const TString& cms)
void TSchedacdc::print_footer_fsc()
{
TString tmp;
tmp.format("TOTALE COMMESSA %s", (const char*) cms);
//set_field(FR_D_SOTTOC, tmp);
//fill_body(_t_cms);
//print_body();
if (_saltopagina)
printer().formfeed();
if (!_t_fsc._tot_periodo.is_zero())
{
TString tmp;
tmp.format("PERIODO FASE %s", (const char*) _oldfsc);
_form->find_field('F', first_page, FR_CODICE).set(tmp);
_form->find_field('F', first_page, FR_TOTALE_DARE).set("");
_form->find_field('F', first_page, FR_TOTALE_AVERE).set("");
char sezione = _t_fsc._tot_periodo.sezione();
real valore = _t_fsc._tot_periodo.valore();
_form->find_field('F', first_page, FR_TOTALE_SALDO).set(valore.string());
if (sezione == 'D')
{
_form->find_field('F', first_page, FR_TOTALE_DARE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("D");
}
else
{
_form->find_field('F', first_page, FR_TOTALE_AVERE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("A");
}
print_specialsection('F', first_page);
tmp.format("GENERALE FASE %s", (const char*) _oldfsc);
_form->find_field('F', first_page, FR_CODICE).set(tmp);
_form->find_field('F', first_page, FR_TOTALE_DARE).set("");
_form->find_field('F', first_page, FR_TOTALE_AVERE).set("");
sezione = _t_fsc._tot_generale.sezione();
valore = _t_fsc._tot_generale.valore();
_form->find_field('F', first_page, FR_TOTALE_SALDO).set(valore.string());
if ( sezione == 'D')
{
_form->find_field('F', first_page, FR_TOTALE_DARE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("D");
}
else
{
_form->find_field('F', first_page, FR_TOTALE_AVERE).set(valore.string());
_form->find_field('F', first_page, FR_TOTALE_SEGNO).set("A");
}
print_specialsection('F', first_page);
}
_oldfsc = _currfsc;
_t_fsc.azzera();
_headerfsc = TRUE;
}
void TSchedacdc::print_footer_fase(const TString& fsc)
{
TString tmp;
tmp.format("TOTALE FASE %s", (const char*) fsc);
//set_field(FR_D_SOTTOC, tmp);
//fill_body(_t_fsc);
//print_body();
if (_saltopagina)
printer().formfeed();
}
void TSchedacdc::print_header_commessa(const TString& cms)
void TSchedacdc::print_header_sottoc()
{
_form->find_field('H', odd_page, FR_CMS).set(cms);
_form->find_field('H', odd_page, FR_D_CMS).set(cache().get("CMS", cms).get("S0"));
TString16 key;
key.format("%d|%d|%ld", _oldgruppo, _oldconto, _oldsottoc);
const TRectype& pcon = cache().get(LF_PCON, key);
key.format("%d", _oldgruppo);
_form->find_field('B', first_page, FR_GRUPPO).set(key);
key.format("%d", _oldconto);
_form->find_field('B', first_page, FR_CONTO).set(key);
key.format("%ld", _oldsottoc);
_form->find_field('B', first_page, FR_SOTTOC).set(key);
_form->find_field('B', first_page, FR_D_SOTTOC).set(pcon.get(PCN_DESCR));
TString tmp;
_form->find_field('B', first_page, FR_S_DARE).set("");
_form->find_field('B', first_page, FR_S_AVERE).set("");
char sezione = _t_sottoc._tot_perprec.sezione();
real valore = _t_sottoc._tot_perprec.valore();
if ( sezione == 'D')
_form->find_field('B', first_page, FR_S_DARE).set(valore.string());
else
_form->find_field('B', first_page, FR_S_AVERE).set(valore.string());
print_specialsection('B', first_page);
}
void TSchedacdc::print_header_cms()
{
_form->find_field('H', odd_page, FR_CMS).set(_oldcms);
_form->find_field('H', odd_page, FR_D_CMS).set(cache().get("CMS", _oldcms).get("S0"));
print_specialsection('H', odd_page);
}
void TSchedacdc::print_header_fase(const TString& fsc)
void TSchedacdc::print_header_fsc()
{
_form->find_field('H', last_page, FR_FSC).set(fsc);
_form->find_field('H', last_page, FR_D_FSC).set(cache().get("FSC", fsc).get("S0"));
_form->find_field('H', last_page, FR_FSC).set(_oldfsc);
_form->find_field('H', last_page, FR_D_FSC).set(cache().get("FSC", _oldfsc).get("S0"));
print_specialsection('H', last_page);
}
@ -283,15 +462,6 @@ void TSchedacdc::set_field(int id, const char* val)
_form->find_field('B', odd_page, id).set(val);
}
void TSchedacdc::ctrl_commessa()
{
if (_oldcms != "@@")
print_footer_commessa(_oldcms);
_t_cms.azzera();
print_header_commessa(_currcms);
_oldcms = _currcms;
}
void TSchedacdc::main_loop()
{
while (_mask->run() == K_ENTER)
@ -300,6 +470,10 @@ void TSchedacdc::main_loop()
_codes = _mask->get_int(F_ANNO); // esercizio
_dataini = _mask->get_date(F_DATAINI); // data iniziale
_datafin = _mask->get_date(F_DATAFIN); // data finale
if (_dataini.empty())
_dataini = cache().get("ESC", _mask->get(F_ANNO)).get_date("D0");
if (_datafin.empty())
_datafin = cache().get("ESC", _mask->get(F_ANNO)).get_date("D1");
TString80 dacdc = _mask->get(F_DACDC); // cdc/commessa iniziale
TString80 dafsc = _mask->get(F_DAFSC); // fase iniziale
TString80 acdc = _mask->get(F_ACDC); // cdc/commessa finale
@ -352,76 +526,69 @@ void TSchedacdc::main_loop()
arec.put(RMV_GRUPPO, _mask->get_int(F_GRUPPOFIN));
arec.put(RMV_CONTO, _mask->get_int(F_CONTOFIN));
arec.put(RMV_SOTTOCONTO, _mask->get_long(F_SOTTOCFIN));
// ordinamento per TSorted_cursor
TString ordin = "CODCMS|FASCMS|GRUPPO|CONTO|SOTTOCONTO|DATAREG|NUMREG|NUMRIG";
TString ordin = "GRUPPO|CONTO|SOTTOCONTO|DATAREG|NUMREG|NUMRIG";
bool ctrlfsc = TRUE;
if (dafsc.empty() && afsc.empty())
{
ctrlfsc = FALSE;
ordin.insert("CODCMS|");
}
else
ordin.insert("CODCMS|FASCMS|");
TSorted_cursor sortcur (&relrmov, ordin, filtro, 2, &darec, &arec);
sortcur.setregion(darec,arec);
sortcur.setfilter(filtro,TRUE);
long num = sortcur.items();
sortcur.freeze();
printer().open();
// setta l'intestazione del form...
set_intestazione();
TRectype currrec(LF_RMOV);
_oldcms = "@@";
_oldfsc = "@@";
_oldsottoc = -1;
_oldfsc = (ctrlfsc) ? "@@" : "";
_oldgruppo = -1;
_oldconto = -1;
_oldsottoc = -1;
_t_cms.azzera();
_t_fsc.azzera();
_t_gruppo.azzera();
real tot_progprec = ZERO;
_t_sottoc.azzera();
_headercms = TRUE;
_headerfsc = (ctrlfsc) ? TRUE : FALSE;
_headersottoc = TRUE;
for (sortcur=0; sortcur.pos()<num; ++sortcur) //scansione su tutte le righe di movimento
{
const TRectype rmovrec = sortcur.curr();
_currcms = rmovrec.get(RMV_CODCMS);
_currfsc = rmovrec.get(RMV_FASCMS);
_currfsc = (ctrlfsc) ? rmovrec.get(RMV_FASCMS) : "";
_currsottoc = rmovrec.get_long(RMV_SOTTOCONTO);
_currgruppo = rmovrec.get_int(RMV_GRUPPO);
_currconto = rmovrec.get_int(RMV_CONTO);
if ((_oldcms == _currcms) && (_oldfsc == _currfsc) && (_oldgruppo == _currgruppo) && (_oldconto == _currconto) && (_oldsottoc == _currsottoc))
{
TDate datareg = rmovrec.get_date(RMV_DATAREG);
TImporto importo(rmovrec.get_char(RMV_SEZIONE), rmovrec.get_real(RMV_IMPORTO));
if (datareg < _dataini)
tot_progprec+=importo.valore();
else
{
if (tot_progprec != ZERO)
{
print_progprec(tot_progprec);
tot_progprec = ZERO;
}
print_movimento(sortcur);
}
}
else
TDate datareg = rmovrec.get_date(RMV_DATAREG);
TImporto importo(rmovrec.get_char(RMV_SEZIONE), rmovrec.get_real(RMV_IMPORTO));
if ((_oldcms != _currcms) || (_oldfsc != _currfsc) || (_oldgruppo != _currgruppo) || (_oldconto != _currconto) || (_oldsottoc != _currsottoc))
{
if (_oldgruppo != -1)
print_footer_gruppo(_oldgruppo, _oldconto, _oldsottoc);
_oldgruppo = _currgruppo;
_oldconto = _currconto;
_oldsottoc = _currsottoc;
if ((_oldcms != _currcms) || (_oldfsc != _currfsc))
{
if (_oldfsc != "@@")
print_footer_fase(_oldfsc);
_oldfsc = _currfsc;
_t_fsc.azzera();
ctrl_commessa();
print_header_fase(_currfsc);
}
print_header_gruppo(_currgruppo, _currconto, _currsottoc);
}
_headersottoc = TRUE;
_t_sottoc.azzera();
if ((_oldcms != _currcms) || (_oldfsc != _currfsc))
{
if (ctrlfsc)
print_footer_fsc();
if (_oldcms != _currcms)
print_footer_cms();
}
}
aggiorna_totali(importo, datareg);
if (datareg >= _dataini && datareg <= _datafin)
print_movimento(sortcur);
}
if (num > 0)
{
print_footer_gruppo(_currgruppo, _currconto, _currsottoc);
print_footer_fase(_currfsc);
print_footer_commessa(_currcms);
if (ctrlfsc)
print_footer_fsc();
print_footer_cms();
printer().formfeed();
}
printer().close();

View File

@ -1,25 +1,39 @@
// campi del form cm0100a.frm
#define FR_ESERCIZIO 11
#define FR_DATAINI 12
#define FR_DATAFIN 13
#define FR_DACDC 14
#define FR_DAFSC 15
#define FR_ACDC 16
#define FR_AFSC 17
#define FR_ESERCIZIO 11
#define FR_DATAINI 12
#define FR_DATAFIN 13
#define FR_DACDC 14
#define FR_DAFSC 15
#define FR_ACDC 16
#define FR_AFSC 17
#define FR_CMS 21
#define FR_D_CMS 22
#define FR_FSC 23
#define FR_D_FSC 24
#define FR_GRUPPOCONTO 25
#define FR_D_GRUPPOCONTO 26
#define FR_PROGPREC 27
#define FR_CMS 21
#define FR_D_CMS 22
#define FR_FSC 23
#define FR_D_FSC 24
#define FR_DATAREG 31
#define FR_NUMREG 32
#define FR_DESCRMOV 33
#define FR_CODCAUS 34
#define FR_DARE 35
#define FR_AVERE 36
#define FR_GRUPPO 31
#define FR_CONTO 32
#define FR_SOTTOC 33
#define FR_D_SOTTOC 35
#define FR_S_DARE 36
#define FR_S_AVERE 37
#define FR_S_SALDO 38
#define FR_DATAREG 41
#define FR_NUMREG 42
#define FR_DATADOC 43
#define FR_NUMDOC 44
#define FR_DESCRMOV 45
#define FR_CAUSALE 46
#define FR_D_CAUSALE 47
#define FR_DARE 48
#define FR_AVERE 49
#define FR_SALDO 50
#define FR_CODICE 61
#define FR_TOTALE_DARE 62
#define FR_TOTALE_AVERE 63
#define FR_TOTALE_SALDO 64
#define FR_TOTALE_SEGNO 65

View File

@ -1,39 +1,48 @@
#include "cm0200.h"
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
GRID ""
OFFSET 0 0
FONT "Courier New"
SIZE 12
GRID ""
END
SECTION HEADER FIRST 7
SECTION HEADER FIRST 6
STRINGA 1 40 1
STRINGA 1 5
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
KEY "Codice ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA,CODDITTA
PICTURE "#####"
END
STRINGA 2 10
STRINGA 2 40
BEGIN
KEY "Data"
PROMPT 100 1 "Data "
MESSAGE _TODAY
KEY "nome ditta"
PROMPT 13 1 ""
MESSAGE _DITTA,RAGSOC
END
NUMERO 3 7
STRINGA 3 10
BEGIN
KEY "Nr. pagina"
PROMPT 120 1 "Pagina "
MESSAGE _PAGENO
KEY "Data"
PROMPT 100 1 "Data "
MESSAGE _TODAY
END
STRINGA -1 22
NUMERO 4 7
BEGIN
KEY "Nr. pagina"
PROMPT 120 1 "Pagina "
MESSAGE _PAGENO
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 2 "Conti per CDC/Commessa"
PROMPT 1 2 "Scheda per CDC/Commessa"
END
NUMERO FR_ESERCIZIO 16
@ -80,147 +89,262 @@ END
END // section header first
SECTION HEADER ODD 1
// intestazione commessa
SECTION HEADER ODD 2
STRINGA FR_CMS 20
BEGIN
KEY "Intestazione commessa"
PROMPT 1 1 "CDC/Commessa "
KEY "Codice commessa"
PROMPT 1 2 "@bCDC/Commessa "
END
STRINGA FR_D_CMS 50
BEGIN
KEY "Intestazione commessa"
PROMPT 35 1 ""
KEY "Descrizione commessa"
PROMPT 35 2 "@b"
END
END // section header odd
SECTION HEADER LAST 4
// intestazione fase
SECTION HEADER LAST 1
STRINGA FR_FSC 20
BEGIN
KEY "Intestazione fase"
PROMPT 1 1 "Fase "
KEY "Codice fase"
PROMPT 1 1 "@bFase "
END
STRINGA FR_D_FSC 50
BEGIN
KEY "Intestazione fase"
PROMPT 35 1 ""
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 2 "------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 3 "Gr./Co./Sot."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 14 3 "Data reg."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 25 3 "N. reg."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 33 3 "Descrizione movimento"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 100 3 "Dare"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 115 3 "Avere"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 4 "------------------------------------------------------------------------------------------------------------------------------------"
KEY "Descrizione fase"
PROMPT 35 1 "@b"
END
END // section header last
SECTION HEADER EVEN 2
// intestazione vera e proprioa della stampa (a parte perché va stampata o dopo la commessa e dopo la fase)
SECTION HEADER EVEN 3
STRINGA FR_GRUPPOCONTO 12
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 1 ""
PROMPT 1 1 "------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA FR_D_GRUPPOCONTO 50
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 14 1 ""
PROMPT 1 2 "Gr./Co./Sot."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 16 2 "Data reg."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 27 2 "N. reg."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 35 2 "N. doc."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 43 2 "Data doc."
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 54 2 "Causale"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 94 2 "Dare"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 108 2 "Avere"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 123 2 "Saldo"
END
STRINGA -1
BEGIN
KEY "Intestazione stampa"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------"
END
END // section header even
// intestazione gruppo/conto/sottoconto
SECTION BODY FIRST 1
NUMERO FR_PROGPREC 14 2
NUMERO FR_GRUPPO 3
BEGIN
KEY "Progressivo precedente"
PROMPT 14 1 "Prog. prec. "
PICTURE "###.###.###,##"
KEY "Gruppo"
PROMPT 1 1 ""
END
END // section header last
NUMERO FR_CONTO 3
BEGIN
KEY "Conto"
PROMPT 5 1 ""
END
SECTION BODY ODD 1
NUMERO FR_SOTTOC 6
BEGIN
KEY ""
PROMPT 9 1 ""
END
STRINGA FR_D_SOTTOC 50
BEGIN
KEY "Descrizione sottoconto"
PROMPT 16 1 ""
END
STRINGA -1
BEGIN
KEY "Testo: progressivo precedente"
PROMPT 68 1 "PROG. PREC. "
END
VALUTA FR_S_DARE 14
BEGIN
KEY "Colonna dare prog.prec. sottoconto"
PROMPT 84 1 ""
PICTURE "."
END
VALUTA FR_S_AVERE 14
BEGIN
KEY "Colonna avere prog.prec. sottoconto"
PROMPT 99 1 ""
PICTURE "."
END
VALUTA FR_S_SALDO 14
BEGIN
KEY "Colonna saldo prog.prec. sottoconto"
PROMPT 114 1 ""
PICTURE "."
END
END // section body first
// riga del movimento
SECTION BODY ODD 2
DATA FR_DATAREG
BEGIN
PROMPT 14 1 ""
PROMPT 16 1 ""
END
NUMERO FR_NUMREG 7
BEGIN
PROMPT 25 1 ""
PROMPT 27 1 ""
END
STRINGA FR_DESCRMOV 30 2
STRINGA FR_DESCRMOV 45
BEGIN
PROMPT 33 1 ""
PROMPT 35 1 ""
END
STRINGA FR_CODCAUS 3
STRINGA FR_NUMDOC 7
BEGIN
PROMPT 71 1 ""
PROMPT 35 2 ""
END
NUMERO FR_DARE 14 2
DATA FR_DATADOC 10
BEGIN
PROMPT 100 1 ""
PICTURE "###.###.###,##"
PROMPT 43 2 ""
END
NUMERO FR_AVERE 14 2
STRINGA FR_CAUSALE 3
BEGIN
PROMPT 115 1 ""
PICTURE "###.###.###,##"
PROMPT 54 2 ""
END
END // section body
STRINGA FR_D_CAUSALE 25
BEGIN
PROMPT 58 2 ""
END
VALUTA FR_DARE 14
BEGIN
PROMPT 84 1 ""
PICTURE "."
END
VALUTA FR_AVERE 14
BEGIN
PROMPT 99 1 ""
PICTURE "."
END
VALUTA FR_SALDO 14
BEGIN
PROMPT 99 1 ""
PICTURE "."
END
END // section body odd
// totali per commessa o fase
SECTION FOOTER FIRST 1
STRINGA FR_CODICE 50
BEGIN
KEY "Codice commessa o fase"
PROMPT 1 1 "TOTALI "
END
VALUTA FR_TOTALE_DARE 14
BEGIN
KEY "Colonna dare totale periodo o generale"
PROMPT 84 1 ""
PICTURE "."
END
VALUTA FR_TOTALE_AVERE 14
BEGIN
KEY "Colonna avere totale periodo o generale"
PROMPT 99 1 ""
PICTURE "."
END
VALUTA FR_TOTALE_SALDO 14
BEGIN
KEY "Colonna saldo totale periodo"
PROMPT 114 1 ""
PICTURE "."
END
STRINGA FR_TOTALE_SEGNO 1
BEGIN
KEY "Segno D/A del saldo"
PROMPT 129 1 ""
END
END // section footer first
END // form

View File

@ -41,7 +41,6 @@ BEGIN
PROMPT 2 4 "Codice esercizio "
HELP "Codice esercizio per cui si vuole la lista"
USE ESC
CHECKTYPE NORMAL
INPUT CODTAB F_ANNO
DISPLAY "Codice" CODTAB
DISPLAY "Data inizio esercizio" D0
@ -49,6 +48,8 @@ BEGIN
OUTPUT F_ANNO CODTAB
FLAGS "RZ"
ADD RUN cg0 -5 esc
CHECKTYPE REQUIRED
WARNING "Codice esercizio obbligatorio"
END
DATE F_DATAINI

7
cm/cmprassi.men Executable file
View File

@ -0,0 +1,7 @@
[PRASSICM_000]
Caption = "Commesse"
Picture =
Module = 15
Flags = ""
Item_01 = "Stampa conti per CDC/Commessa", "cm0.exe -0","F"
Item_02 = "Stampa scheda CDC/Commessa", "cm0.exe -1","F"

View File

@ -131,3 +131,14 @@ int TDistinta::remove(char tipodist, long ndist)
reset();//elimino gli effetti dalla memoria resettando l'array
return err;
}
bool TDistinta::contabilizzata() const
{
bool yes = FALSE;
if (_righe_dist.items() > 0)
{
const TRectype& eff = (const TRectype&)_righe_dist[0];
yes = eff.get_bool(EFF_EFFCONT);
}
return yes;
}

View File

@ -59,6 +59,8 @@ public:
const TString& cabp()const { return eff(0).get(EFF_CODCABP); }
// restituisce l'effetto n-esimo
TEffetto& operator[](const int index) { return eff(index); }
// Ritorna vero se la distinta è stata contabilizzata
bool contabilizzata() const;
//costruttore di default
TDistinta() { }
//costruttore distinta del tipo e numero passato

View File

@ -557,14 +557,14 @@ void TEmissione::print()
int emis = _msk->get_int(F_EMIS);
int ndist = _msk->get_int(F_NUMBER);
char tipodist = _msk->get(F_TIPODIST)[0];
_rel->lfile().put(EFF_TIPODIST,tipodist);
_rel->lfile().put(EFF_NDIST,ndist);
_rel->lfile().put(EFF_NRIGADIST,1);
_rel->curr().put(EFF_TIPODIST,tipodist);
_rel->curr().put(EFF_NDIST,ndist);
_rel->curr().put(EFF_NRIGADIST,1);
_rel->lfile().setkey(4);
_rel->read();
long codabi = _rel->lfile().get_long(EFF_CODABIP);
const char tipocf = _rel->lfile().get_char(EFF_TIPOCF);
const char tipopag = _rel->lfile().get_char(EFF_TIPOPAG);
long codabi = _rel->curr().get_long(EFF_CODABIP);
const char tipocf = _rel->curr().get_char(EFF_TIPOCF);
const char tipopag = _rel->curr().get_char(EFF_TIPOPAG);
char tipost = _msk->get(F_TIPOST)[0];
char tipord = _msk->get(F_TIPORD)[0];
@ -728,7 +728,7 @@ bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
in.ltrim(1);
TRelation* rel = relation();
const bool pick_normal = rel->lfile(LF_CFVEN).get_int(CFV_CODINDEFF) == 0;
const bool pick_normal = rel->curr(LF_CFVEN).get_int(CFV_CODINDEFF) == 0;
if (in=="IND")
{
@ -755,10 +755,10 @@ bool TRiba_form::validate(TForm_item &cf, TToken_string &s)
}
else
if (in=="RAGSOC")
valore = rel->lfile(pick_normal ? LF_CLIFO : LF_INDSP).get(pick_normal ? CLI_RAGSOC : IND_RAGSOC);
valore = rel->curr(pick_normal ? LF_CLIFO : LF_INDSP).get(pick_normal ? CLI_RAGSOC : IND_RAGSOC);
else
if (in=="CAPCF")
valore = rel->lfile(pick_normal ? LF_CLIFO : LF_INDSP).get(pick_normal ? CLI_CAPCF : IND_CAP);
valore = rel->curr(pick_normal ? LF_CLIFO : LF_INDSP).get(pick_normal ? CLI_CAPCF : IND_CAP);
}
cf.put_paragraph(valore);
return (TRUE);

View File

@ -1,6 +1,6 @@
USE 31
JOIN 14 INTO NPROGTR==NPROGTR
JOIN 20 INTO TIPOCF=="C" CODCF==CODCF
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 17 TO 20 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 16 TO 17 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDEFF
JOIN 13 TO 20 ALIAS 113 INTO COM==COMCF

View File

@ -49,9 +49,9 @@ public:
real exchange(const real& num,
const char* fromval, const real& fromchg, exchange_type fromeuro,
const char* toval, const real& tochg, exchange_type toeuro,
bool price = FALSE);
int price = 0);
real exchange(const real& num, const TExchange& frval, const TExchange& toval, bool price = FALSE);
real exchange(const real& num, const TExchange& frval, const TExchange& toval, int price = 0);
int get_dec(const char* val, bool prices = FALSE);
const real& get_change(const char* val, exchange_type& contro_euro);
@ -208,7 +208,7 @@ real TDowJones::exchange(const real& num, // Importo da convertire
const char* toval, // Alla valuta
const real& tochg, // Al cambio
exchange_type toeur, // Al cambio in euro
bool price) // e' un prezzo ?
int price) // e' un prezzo ?
{
real n = num;
if (!n.is_zero())
@ -238,7 +238,8 @@ real TDowJones::exchange(const real& num, // Importo da convertire
n = n * fr / to; // Vecchio modo
break;
}
n.round(price ? datato._dec_prices : datato._dec); // Arrotonda
if (price == 0 || price == 1) // Arrotonda solo in caso normale
n.round(price ? datato._dec_prices : datato._dec);
}
return n;
}
@ -246,7 +247,7 @@ real TDowJones::exchange(const real& num, // Importo da convertire
real TDowJones::exchange(const real& num, // Importo da convertire
const TExchange& frval, // Dalla valuta
const TExchange& toval, // Alla valuta
bool price) // e' un prezzo ?
int price) // e' un prezzo ?
{
exchange_type fret, toet;
const real& frch = frval.get_change(fret);
@ -393,6 +394,11 @@ bool TExchange::is_euro_value() const
return DowJones.get_euro_val() == _val;
}
int TExchange::decimals(bool price) const
{
return DowJones.get_dec(_val, price);
}
void TExchange::set(const char* val, const real& chg, exchange_type et)
{
val = DowJones.normalize_value(val, chg, et);
@ -632,3 +638,11 @@ bool same_values(const char * valuea, const char * valueb)
return stricmp(valuea, valueb) == 0;
}
real change_currency(const real& num,
const char* fromval, const real& fromchg, exchange_type fromeuro,
const char* toval, const real& tochg, exchange_type toeuro,
int price)
{
return DowJones.exchange(num, fromval, fromchg, fromeuro, toval, tochg, toeuro, price);
}

View File

@ -38,6 +38,7 @@ public:
const real& get_change(exchange_type& et) const;
real get_base_change() const;
real get_contro_change() const;
int decimals(bool price = FALSE) const;
TExchange(const char* val = NULL, const real& exc = ZERO, exchange_type et = _exchange_undefined);
TExchange(const TExchange& exc) { copy(exc); }
@ -138,4 +139,10 @@ inline bool is_true_value(const char * value) { return !is_firm_value(value);}
inline bool is_euro_value(const char * value) { return (value && *value) ? TCurrency::get_euro_val() == value : TCurrency::get_euro_val() == TCurrency::get_firm_val();}
bool same_values(const char * valuea, const char * valueb);
// Funzione di levello super-basso: usate solo se sapete bene cosa state facendo
real change_currency(const real& num,
const char* fromval, const real& fromchg, exchange_type fromeuro,
const char* toval, const real& tochg, exchange_type toeuro = _exchange_undefined,
int price_round = 0);
#endif

View File

@ -448,7 +448,7 @@ const TString& TString::mid(
#ifdef DBG
if (from < 0)
{
NFCHECK("Ivalid MID parameter: from = %d", from);
NFCHECK("Invalid MID parameter: from = %d", from);
from = 0;
}
#endif
@ -944,7 +944,9 @@ void TFixed_string::resize(int size, bool)
void TFixed_string::strncpy(const char* s, int n)
{
CHECKD(n <= _size, "Fixed string can't be strncpyed: lenght ", n);
for (int i = 0; *s && i < n; i++) _str[i] = *s++;
int i = 0;
if (s && *s)
for (; *s && i < n; i++) _str[i] = *s++;
_str[i] = '\0';
}

View File

@ -1,4 +1,6 @@
// 771230.cpp - Quadri C, D, D bis, D1, E, E1, E2
// 771230.cpp - Quadri C, D, D bis, D1, E, E1, E2,
// Dal 2002 il Quadro LA riassume SC ed SE, che a loro volta erano D e D1)
#include <msksheet.h>
#include <progind.h>
#include <recarray.h>
@ -142,7 +144,7 @@ void TRighe_pagamento::add_riga(const TRectype& scheda, const TRectype& riga)
class TQuadroC_E2 : public TRelation_application
{
private:
TString _quadro; // Codice del quadro in gestione
TString8 _quadro; // Codice del quadro in gestione
int _file;
bool _registra; // Se TRUE fa i riporti
TRelation* _rel;
@ -157,6 +159,7 @@ private:
bool QuadroE() const { return _quadro == "E"; }
bool QuadroE1() const { return _quadro == "E1"; }
bool QuadroE2() const { return _quadro == "E2"; }
bool QuadroLA() const { return _quadro == "LA"; }
protected:
virtual bool user_create();
@ -190,6 +193,7 @@ protected:
void genera_d1(TRectype& quadro, const TRectype& riga) const;
void genera_e(TRectype& quadro, const TRectype& riga) const;
void genera_e1(TRectype& quadro, const TRectype& riga) const;
void genera_la(TRectype& quadro, const TRectype& riga) const;
void genera_righe(TRighe_pagamento& righe) const;
void distruzione() const;
void generazione();
@ -202,6 +206,7 @@ protected:
static bool ricalcola_imposte_d(TMask_field& f, KEY key);
static bool ricalcola_imposte_dbis(TMask_field& f, KEY key);
static bool ricalcola_imposte_e(TMask_field& f, KEY key);
static bool ricalcola_imposte_la(TMask_field& f, KEY key);
static bool ricalcola_imposte_e1(TMask_field& f, KEY key);
static bool prospetto_e1_notify(TSheet_field& s, int r, KEY k);
@ -356,7 +361,7 @@ bool TQuadroC_E2::user_create()
_codditta = get_firm_770();
_registra = FALSE;
TString name("771230");
TString8 name("771230");
name << _quadro;
_msk = new TMask(name);
@ -377,7 +382,7 @@ bool TQuadroC_E2::user_create()
m.set_handler(107, ricalcola_imposte_c);
m.set_handler(108, ricalcola_imposte_c);
} else
if (QuadroD())
if (QuadroD()) // Obsoleto dal 2002: confluito in LA
{
_file = LF_QUAD;
m.set_handler(102, ricalcola_imposte_d);
@ -386,7 +391,7 @@ bool TQuadroC_E2::user_create()
m.set_handler(106, ricalcola_imposte_d);
m.set_handler(107, ricalcola_imposte_d);
} else
if (QuadroD1())
if (QuadroD1()) // Obsoleto dal 2002: confluito in LA
{
_file = LF_QUAD1;
m.set_handler(102, ricalcola_imposte_d);
@ -427,6 +432,15 @@ bool TQuadroC_E2::user_create()
m.set_handler(103, ricalcola_imposte_e2);
m.set_handler(104, ricalcola_imposte_e2);
m.set_handler(105, ritenute_handler_e2);
} else
if (QuadroLA()) // Nuovo del 2002: riassume SC ed SE
{
_file = LF_QUALA;
m.set_handler(102, ricalcola_imposte_la);
m.set_handler(105, ricalcola_imposte_la);
m.set_handler(106, ricalcola_imposte_la);
m.set_handler(107, ricalcola_imposte_la);
m.set_handler(108, ricalcola_imposte_la);
}
_rel = new TRelation(_file);
@ -708,6 +722,31 @@ void TQuadroC_E2::genera_e1(TRectype& quadro, const TRectype& riga) const
genera_aliquota(quadro, QE1_PERC, QE1_AMMONTARE, QUE_IMPORTO); // 14
}
void TQuadroC_E2::genera_la(TRectype& quadro, const TRectype& riga) const
{
quadro.put(QUD_PERC, riga.get(PAG_PERC));
real ammlordo = riga.get(PAG_IMPONIBILE);
ammlordo += riga.get_real(PAG_SOMNSRIT);
ammlordo += riga.get_real(PAG_CONTROBB);
ammlordo += riga.get_real(PAG_SOMREGCONV);
quadro.put(QUD_TOTALE, ammlordo); // 16
real somme = riga.get_real(PAG_COMPENSO);
somme -= riga.get_real(PAG_IMPONIBILE);
somme += riga.get_real(PAG_SPESA);
somme -= riga.get_real(PAG_IMPCPA);
somme -= riga.get_real(PAG_SOMREGCONV);
quadro.put(QUD_SOMME, somme); // 17
quadro.put(QUD_SOMREGCONV, riga.get(PAG_SOMREGCONV)); // 18
quadro.put(QUD_IMPONIBILE, riga.get(PAG_IMPONIBILE)); // 19
quadro.put(QUD_IMPORTO, riga.get(PAG_RITENUTA)); // 20
genera_aliquota(quadro, QUD_PERC, QUD_IMPONIBILE, QUD_IMPORTO);
}
void TQuadroC_E2::genera_righe(TRighe_pagamento& righe) const
{
TLocalisamfile file(_file);
@ -750,6 +789,10 @@ void TQuadroC_E2::genera_righe(TRighe_pagamento& righe) const
genera_e(curr, riga);
}
break;
case 'L':
if (_quadro[1] == 'A')
genera_la(curr, riga);
break;
default:
CHECK(FALSE, "Quadro non generabile dalle schede");
break;
@ -826,11 +869,11 @@ void TQuadroC_E2::generazione()
TCursor cur(&rel, NULL, 1, &rec, &rec);
TString16 filter; filter.format("(%d->S1=\"%s\")", LF_TABCOM, (const char*) _quadronuovo);
TString16 filter; filter.format("(%d->S1=\"%s\")", LF_TABCOM, (const char*)_quadronuovo);
cur.setfilter(filter, TRUE);
const int anno770 = anno_770();
const long items = cur.items();
const long items = cur.items();
const TRectype& scheda = cur.curr();
const TRectype& riga = cur.curr(LF_RPAG);
@ -993,7 +1036,10 @@ bool TQuadroC_E2::ricalcola_imposte_d(TMask_field& f, KEY key)
else
{
if (key == K_ENTER && imponibile != imponibile_v)
f.warning_box("L'imponibile dovrebbe essere %s", imponibile_v.string("."));
{
const TCurrency imponibile_c(imponibile_v);
f.warning_box("L'imponibile dovrebbe essere %s", imponibile_c.string(TRUE));
}
}
const real imposta_v = m.get_real(102) * imponibile / 100.0;
@ -1006,7 +1052,10 @@ bool TQuadroC_E2::ricalcola_imposte_d(TMask_field& f, KEY key)
else
{
if (key == K_ENTER && imposta != imposta_v)
f.warning_box("L'imposta dovrebbe essere %s", imposta_v.string("."));
{
const TCurrency imposta_c(imposta_v);
f.warning_box("L'imposta dovrebbe essere %s", imposta_c.string(TRUE));
}
}
}
return TRUE;
@ -1129,6 +1178,55 @@ bool TQuadroC_E2::ricalcola_imposte_e2(TMask_field& f, KEY key)
return TRUE;
}
bool TQuadroC_E2::ricalcola_imposte_la(TMask_field& f, KEY key)
{
if (key == K_F8)
{
f.reset();
f.set_dirty();
key == K_TAB;
}
if (key == K_TAB && f.focusdirty() ||
key == K_ENTER && f.dlg() == 105)
{
TMask& m = f.mask();
const real imponibile_v = m.get_real(105) - m.get_real(106) - m.get_real(107);
real imponibile = m.get(108);
if (imponibile.is_zero())
{
imponibile = imponibile_v;
m.set(108, imponibile);
}
else
{
if (key == K_ENTER && imponibile != imponibile_v)
{
const TCurrency imponibile_c(imponibile_v);
f.warning_box("L'imponibile dovrebbe essere %s", imponibile_c.string(TRUE));
}
}
const real imposta_v = m.get_real(102) * imponibile / 100.0;
real imposta = m.get(109);
if (imposta.is_zero())
{
imposta = imposta_v;
m.set(109, imposta);
}
else
{
if (key == K_ENTER && imposta != imposta_v)
{
const TCurrency imposta_c(imposta_v);
f.warning_box("L'imposta dovrebbe essere %s", imposta_c.string(TRUE));
}
}
}
return TRUE;
}
bool TQuadroC_E2::ritenute_handler_e2(TMask_field& f, KEY key)
{
if (key == K_TAB && f.focusdirty() || key == K_ENTER)
@ -1210,43 +1308,40 @@ int TQuadroC_E2::write_prospetto_e1() const
return error;
}
int quadriC_E2(int argc, char* argv[])
{
TString16 taitol;
taitol << "Riepilogo ";
const char * nome_quadro = argv[2];
const char* nome_quadro = argv[2];
if (strnicmp(nome_quadro, "C", 1) == 0)
taitol << "C";
else
if (strnicmp(nome_quadro, "DB", 2) == 0)
taitol << "SG";
else
if (strnicmp(nome_quadro, "D1", 2) == 0)
{
_quadronuovo = "SE";
taitol << "SE";
}
else
if (strnicmp(nome_quadro, "D", 1) == 0)
{
_quadronuovo = "SC";
taitol << "SC";
}
else
if (strnicmp(nome_quadro, "E1", 2) == 0)
{
_quadronuovo = "SG";
taitol << "SG";
}
else
if (strnicmp(nome_quadro, "E", 1) == 0)
{
_quadronuovo = "SF";
taitol << "SF";
}
else
taitol << nome_quadro;
taitol << "C"; else
if (strnicmp(nome_quadro, "DB", 2) == 0)
taitol << "SG"; else
if (strnicmp(nome_quadro, "D1", 2) == 0)
{
_quadronuovo = "SE";
taitol << "SE";
} else
if (strnicmp(nome_quadro, "D", 1) == 0)
{
_quadronuovo = "SC";
taitol << "SC";
} else
if (strnicmp(nome_quadro, "E1", 2) == 0)
{
_quadronuovo = "SG";
taitol << "SG";
} else
if (strnicmp(nome_quadro, "E", 1) == 0)
{
_quadronuovo = "SF";
taitol << "SF";
}
else
{
_quadronuovo = nome_quadro;
taitol << nome_quadro;
}
TQuadroC_E2 a(nome_quadro);
a.run(argc, argv, taitol);

View File

@ -305,6 +305,8 @@ END
// Prima colonna
//
/* Obsoleto dal 2002
TEXT DLG_NULL_D
BEGIN
PROMPT 5 12 "Riepilogo SC"
@ -333,6 +335,26 @@ BEGIN
GROUP MENU_MAIN MENU_MAIN_VIS
END
*/
// Roba nuova 2002
TEXT DLG_NULL_D
BEGIN
PROMPT 5 12 "Riepilogo LA"
GROUP MENU_MAIN MENU_MAIN_VIS
END
BUTTON DLG_STOPREC_D 1 1
BEGIN
PROMPT 1 12 ""
PICTURE 123
MESSAGE RUN,771MOD,-5,LA|K_TAB,RILEGGI_QUADRI
GROUP MENU_MAIN MENU_MAIN_VIS
END
// Fine roba nuova 2002
TEXT DLG_NULL_E
BEGIN
PROMPT 5 14 "Riepilogo SF"
@ -1114,6 +1136,7 @@ END
//Prima colonna
/* Roba obsoleta dal 2002
TEXT T_D
BEGIN
PROMPT COL1 ROW3 "Riepilogo SC"
@ -1146,6 +1169,28 @@ BEGIN
GROUP MENU_STAMPEDICH MENU_STAMPEDICH_VIS
END
*/
// Roba nuova del 2002
TEXT T_D
BEGIN
PROMPT COL1 ROW3 "Riepilogo LA"
FLAGS "H"
GROUP MENU_STAMPEDICH MENU_STAMPEDICH_VIS
END
BUTTON B_D 1 1
BEGIN
PROMPT 1 ROW3 ""
PICTURE 123
MESSAGE RUN,772MOD,-5,LA,D|K_TAB,RILEGGI_QUADRI
FLAGS "H"
GROUP MENU_STAMPEDICH MENU_STAMPEDICH_VIS
END
// Fine roba nuova del 2002
TEXT T_E
BEGIN
PROMPT COL1 ROW5 "Riepilogo SF"

View File

@ -51,10 +51,8 @@ LIST F_QUADRCE2 2
BEGIN
PROMPT 1 3 "Codice quadro "
HELP "Inserire il codice quadro"
ITEM "SC|SC"
ITEM "LA|LA"
MESSAGE ENABLE,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|ENABLE,TCF_PERCASSPREV|RESET,GR_NOCAUD@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SE|SE"
MESSAGE ENABLE,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_PERCASSPREV|DISABLE,TCF_PERCASSPREV|RESET,GR_NOCAUD1@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD1|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SF|SF"
MESSAGE CLEAR,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_PERCASSPREV|DISABLE,TCF_PERCASSPREV|RESET,GR_NOCAUE@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSE|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SG|SG"
@ -68,10 +66,8 @@ LIST F_QUADRAT 2
BEGIN
PROMPT 1 3 "Codice quadro "
HELP "Inserire il codice quadro"
ITEM "SC|SC"
ITEM "LA|LA"
MESSAGE ENABLE,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|ENABLE,TCF_PERCASSPREV|RESET,GR_NOCAUD@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SE|SE"
MESSAGE ENABLE,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_PERCASSPREV|DISABLE,TCF_PERCASSPREV|RESET,GR_NOCAUD1@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSD1|DISABLE,TCF_CAUSD|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SF|SF"
MESSAGE CLEAR,TCF_BINPS|K_SPACE,TCF_BINPS|RESET,G_ICTS@|DISABLE,G_ICTS@|RESET,TCF_PERCASSPREV|DISABLE,TCF_PERCASSPREV|RESET,GR_NOCAUE@|DISABLE,GR_CAUDD1@|ENABLE,TCF_CAUSE|SHOW,F_DESCR1|HIDE,F_DESCR2
ITEM "SG|SG"
@ -85,8 +81,7 @@ END
LIST F_CODQUA 2
BEGIN
PROMPT 1 3 ""
ITEM "SC|SC"
ITEM "SE|SE"
ITEM "LA|LA"
ITEM "SF|SF"
ITEM "SG|SG"
ITEM "ST|ST"
@ -118,28 +113,30 @@ STRING TCF_CAUSD 1
BEGIN
PROMPT 1 6 "Causale LA "
FLAGS "U"
SHEET "Codice|Descrizione@250"
INPUT TCF_CAUSD
ITEM " | "
ITEM "A|per prestazioni di lavoro autonomo rientranti nell'esercizio di arte o professione abituale"
ITEM "B|per prestazioni rese da amministratori, sindaci e revisori di societá, associazione ed altri enti con o senza personalitá giuridica"
ITEM "C|per prestazioni rese da collaboratori a giornali, riviste, enciclopedie e simili (che non costituiscono diritti d'autore)"
ITEM "D|per prestazioni rese da partecipanti a collegi e commissioni"
ITEM "E|per prestazioni rese nell'ambito di rapporti di collaborazione coordinata e continuativa diversi da quelli sopra elencati"
ITEM "F|per indennitá corrisposte per la cessazione di rapporti di collaborazione coordinata e continuativa, assoggettabili a tassazione separata"
ITEM "G|per l'utilizzazione economica, da parte dell'autore o dell'inventore, di opere dell'ingegno, di brevetti industriali e di processi, formule o informazioni relativi ad esperienze acquisite in campo industriale, commerciale o scientifico"
ITEM "H|a titolo di utili derivanti da contratti di associazione in partecipazione e da contratti di cointeressenza, quando l'apporto é costituito esclusivamente dalla prestazione di lavoro"
ITEM "I|a titolo di utili spettanti ai soci promotori ed ai soci fondatori delle societá di capitali"
ITEM "K|per la levata di protesti cambiari da parte di segretari comunali"
ITEM "L|per prestazioni rese dagli sportivi con contratto di lavoro autonomo"
ITEM "M|a titolo di indennitá corrisposte per la cessazione di attivitá sportiva professionale"
ITEM "N|a titolo di indennitá corrisposte per la cessazione dei rapporti di agenzia delle persone fisiche"
ITEM "P|a titolo di indennitá corrisposte per la cessazione da funzioni notarili"
ITEM "Q|per l'utilizzazione economica, da parte di soggetto diverso dall'autore o dall'inventore, di opere dell'ingegno, di brevetti industriali e di processi, formule e informazioni relativi ad esperienze acquisite in campo indust., commer. o scient."
ITEM "R|per prestazioni di lavoro autonomo non esercitate abitualmente"
ITEM "S|a titolo di indennitá di trasferta o di rimborso forfetario di spese spettanti a soggetti che svolgono attivitá sportiva dilettantistica di cui alla L n. 80 del 1986"
ITEM "T|per altro titolo diverso dai precedenti"
ITEM "A|Prestazioni di lavoro autonomo rientranti nell'esercizio di arte o professione abituale"
ITEM "B|Utilizzazione economica, da parte dell'autore o dell'inventore, di opere dell'ingegno, di brevetti industriali e di processi, formule o informazioni relativi ad esperienzeacquisite in campo industriale, commerciale o scientifico"
ITEM "C|Utili derivanti da contratti di associazione in partecipazione e da contratti di cointeressenza quando l' apporto e' costituito esclusivamente dalla prestazione di lavoro"
ITEM "D|utili spettanti ai soci promotori ed ai soci fondatori delle societa' di capitali"
ITEM "E|Levata di protesti cambiari da parte dei segretari comunali"
ITEM "F|Prestazioni rese dagli sportivi con contratto di lavoro autonomo"
ITEM "G|Idennita' corrisposte per la cessazione di attivita' sportiva professionale"
ITEM "H|Idennita' corrisposte per la cessazione dei rapporti di agenzia delle persone fisiche"
ITEM "I|Idennita' corrisposte per la cessazione da funzionari notarili"
ITEM "L|Utilizzaz. economica, da parte di sogg. diverso dall'autore o dall'inventore, di opere dell'ingegno, di brevetti industiali e di processi, formule e informaz. relativi ad esperienze acquisite in campo industriale, commerciale, scientifico"
ITEM "M|Prestazioni di lavoro autonomo non esercitate abitualmente"
ITEM "N|Idennita' di trasferta, rinborso forfetario di spese, premi e compensi erogati nell' esercizio diretto di attivita' sportiva dilettantistiche"
ITEM "P|Prestazioni in forma di capitale e riscatti erogati dalle forme di previdenza complementare di cui al D.Lgs 21 aprile 1993,n. 124 e sucessive modificazioni a lavoratori autonomi e imprenditori individuali"
ITEM "Q|Provvigioni corrisposte ad agente o rappresentante di commercio monomandatario"
ITEM "R|Provvigioni corrisposte ad agente o rappresentante plurimandatario"
ITEM "S|Provvigioni corrisposte a commissionario"
ITEM "T|Provvigioni corrisposte a mediatore"
ITEM "U|Provvigioni corrisposte a procacciatore di affari"
ITEM "V|Provvigioni corrisposte a incaricato per le vendite a domicilio"
ITEM "W|Provvigioni corrisposte a incaricato per la vendita porta a porta e per la vendita ambulante di giornali quotidiani e periodici (L. 25 febbraio 1987, n. 67)"
ITEM "Z|Titolo diverso dai precedenti"
OUTPUT TCF_CAUSD
OUTPUT TCF_CAUSD_DESCR
FIELD LF_TABCOM->S2
@ -182,7 +179,7 @@ BEGIN
OUTPUT TCF_CAUSD1
OUTPUT TCF_CAUSD1_DESCR
FIELD LF_TABCOM->S3
FLAGS "D"
FLAGS "DH"
GROUP GR_CAUDD1
GROUP GR_NOCAUC
GROUP GR_NOCAUD
@ -194,7 +191,7 @@ END
STRING TCF_CAUSD1_DESCR 250 60
BEGIN
PROMPT 16 8 ""
FLAGS "D"
FLAGS "DH"
GROUP GR_CAUDD1
GROUP GR_NOCAUC
GROUP GR_NOCAUD
@ -391,3 +388,4 @@ END
ENDPAGE
ENDMASK

View File

@ -14,6 +14,17 @@
#endif
TCausale_magazzino& get_cau(const char* codcaus)
{
static TAssoc_array _c;
TCausale_magazzino * caus = (TCausale_magazzino*) _c.objptr(codcaus);
if (caus == NULL)
{
caus = new TCausale_magazzino(codcaus);
_c.add(codcaus, caus);
}
return *caus;
}
class TForm_schedemag : public TForm_stampemg
{
int _tolivgiac,_tolivart;
@ -49,6 +60,7 @@ public:
void set_options(bool no_valori, bool no_ff, bool sintetica);
const char* descr_tiposcheda() const;
const char* nomecampo_scheda() const;
TTipo_saldomag tiposcheda() const {return _tiposcheda;} ;
TForm_schedemag(const char *name,const char *code) ;
virtual ~TForm_schedemag();
@ -181,7 +193,8 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
const TRectype& movmag = relation()->curr(LF_MOVMAG);
const TString16 cau_r= rmovmag.get(RMOVMAG_CODCAUS);
const TString16 cau_m= movmag.get(MOVMAG_CODCAUS);
const TCausale_magazzino cau(cau_r.empty() ? cau_m : cau_r);
// const TCausale_magazzino cau(cau_r.empty() ? cau_m : cau_r);
const TCausale_magazzino & cau = get_cau(cau_r.empty() ? cau_m : cau_r);
if (subcode=="*SEGNOCAUS") {
const char qv = s.get_char(); // Segno per Quantita'o Valore
int sgn = cau.sgn(_tiposcheda);
@ -346,7 +359,7 @@ bool TForm_schedemag::validate(TForm_item &cf, TToken_string &s)
if (subcode.left(3) == "ADD")
{
const TString16 cau = cf.section().find_field(FF_CAUSALE_RIGA).get();
TCausale_magazzino ccrr(cau);
TCausale_magazzino & ccrr = get_cau(cau);
const bool is_qta = subcode.right(3) == "QTA";
const bool ok = is_qta && ccrr.update_qta() || !is_qta && ccrr.update_val();
if (ok)
@ -646,6 +659,7 @@ protected:
virtual bool destroy();
virtual void main_loop();
static bool negatives_only(const TRelation* rel);
static bool cau_filter(const TRelation* rel);
void setprint_perarticoli();
void setprint_permagazzini();
@ -655,6 +669,7 @@ protected:
static bool handle_adata(TMask_field& f, KEY k);
public:
TTipo_saldomag tiposcheda() const {return _form->tiposcheda();} ;
void autorun() { _autorun = TRUE; }
TStampa_schede_mag() {}
};
@ -672,6 +687,15 @@ bool TStampa_schede_mag::negatives_only(const TRelation* rel)
return giac < ZERO;
}
bool TStampa_schede_mag::cau_filter(const TRelation* rel)
{
const TRectype& rmov = rel->curr(LF_RMOVMAG);
TString16 cau = rmov.get(RMOVMAG_CODCAUS);
if (cau.empty())
cau = cache().get(LF_MOVMAG, rmov.get(RMOVMAG_NUMREG), MOVMAG_CODCAUS);
return get_cau(cau).sgn(app().tiposcheda()) != 0;
}
void TStampa_schede_mag::setprint_permagazzini()
{
char subordine=*_mask->get(F_ORDINEART);
@ -834,6 +858,8 @@ void TStampa_schede_mag::setprint_perarticoli()
darecr.put(RMOVMAG_CODART,darec.get(ANAMAG_CODART));
arecr.put(RMOVMAG_CODART,arec.get(ANAMAG_CODART));
rmovmag->setregion(darecr,arecr,0x2);
if (tiposcheda() != s_giac)
rmovmag->cursor().set_filterfunction(cau_filter);
_cur->relation()->replace(rmovmag,1, _form->rmov_joinexp() );
TLocalisamfile *mag=new TLocalisamfile(LF_MAG);

View File

@ -27,6 +27,8 @@ BEGIN
MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_CLIFO@|SHOW,GR_AGE@|ENABLE,GR_AGE@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|ENABLE,F_DETTAGLIO|" ",F_DETTAGLIO|CLEAR,GR_DETAIL@|CLEAR,GR_DETAILART@|ENABLE,F_DETAIL_BY_CLI|HIDE,GR_CATMER@
ITEM "3|Articolo"
MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_AGE@|SHOW,GR_CLIFO@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|DISABLE,F_DETTAGLIO|"X",F_DETTAGLIO|ENABLE,GR_CLIFO@|ENABLE,GR_ART@|ENABLE,GR_DETAILART@|ENABLE,GR_DETAIL@|DISABLE,F_DETAIL_BY_DOC|HIDE,GR_CATMER@
ITEM "4|Data consegna"
MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_AGE@|SHOW,GR_CLIFO@|ENABLE,GR_CLIFO@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|ENABLE,F_DETTAGLIO|" ",F_DETTAGLIO|CLEAR,GR_DETAIL@|CLEAR,GR_DETAILART@|SHOW,GR_CATMER@
END
GROUPBOX DLG_NULL 40 6

View File

@ -8,9 +8,10 @@
// Tipi di stampa per selezionare il form
enum tipo_stampa {
numero, // or1100a.frm
clifo, // or1100b.frm
clifo, // or1100bp.frm
agente, // or1100c.frm
articolo // or1100d.frm
articolo, // or1100d.frm
datacons // or1100ep.frm
};
// Tipi di ordinamento
@ -1004,6 +1005,9 @@ void TStampa_ordini::main_loop()
case articolo:
form_name = "or1100d";
break;
case datacons:
form_name = "or1100ep";
break;
default:
form_name = "or1100a";
break;
@ -1016,6 +1020,7 @@ void TStampa_ordini::main_loop()
{
case clifo:
case agente:
case datacons:
filter_for_clifo_agent();
break;
case articolo:

View File

@ -1,20 +1,2 @@
#include <default.url>
/* or1 -0 Stampe ordini */
MENU TASK_MENUBAR
SUBMENU MENU_FILE "~File"
/* or1 -1 Stampa dettaglio disponbilita' articoli*/
MENUBAR MENU_BAR(1)
MENU MENU_BAR(1)
SUBMENU MENU_FILE "~File"
/* or1 -2 Stampa statistiche sui tempi di consegna*/
MENUBAR MENU_BAR(2)
MENU MENU_BAR(2)
SUBMENU MENU_FILE "~File"
#include <mainmenu.url>

26
ve/condv.h Executable file
View File

@ -0,0 +1,26 @@
#ifndef __CONDV_H
#define __CONDV_H
#define CONDV_TIPO "TIPO"
#define CONDV_CATVEN "CATVEN"
#define CONDV_TIPOCF "TIPOCF"
#define CONDV_CODCF "CODCF"
#define CONDV_COD "COD"
#define CONDV_DESCR "DESCR"
#define CONDV_CODVAL "CODVAL"
#define CONDV_CAMBIO "CAMBIO"
#define CONDV_CONTROEURO "CONTROEURO"
#define CONDV_DATACAM "DATACAM"
#define CONDV_VALIN "VALIN"
#define CONDV_VALFIN "VALFIN"
#define CONDV_IMPLORDI "IMPLORDI"
#define CONDV_GESTUM "GESTUM"
#define CONDV_GESTSCAGL "GESTSCAGL"
#define CONDV_GESTSCO "GESTSCO"
#define CONDV_SCONST "SCONST"
#define CONDV_OBBLIG "OBBLIG"
#define CONDV_CODLISSUCC "CODLISSUCC"
#define CONDV_SEQRIC "SEQRIC"
#define CONDV_DECIMALI "DECIMALI"
#endif

View File

@ -57,7 +57,7 @@ CONLEG|4|15|5|Peso Legno (Kg) per CONAI
CONVET|4|15|5|Peso Vetro (Kg) per CONAI
CONTOINDA|1|12|0|Codice piano dei conti industriale (GrCoSo) Acquisti
CONTOINDV|1|12|0|Codice piano dei conti industriale (GrCoSo) Vendite
USER1|1|20|0|Campo libero 1
USER1|1|40|0|Campo libero 1
USER2|1|20|0|Campo libero 2
USER3|1|20|0|Campo libero 3
USER4|1|20|0|Campo libero 4
@ -70,4 +70,4 @@ USER10|1|20|0|Campo libero 10
3
CODART|
UPPER(DESCR)|X
GRMERC+CODART|
GRMERC+CODART|

27
ve/rcondv.h Executable file
View File

@ -0,0 +1,27 @@
#ifndef __RCONDV_H
#define __RCONDV_H
#define RCONDV_TIPO "TIPO"
#define RCONDV_CATVEN "CATVEN"
#define RCONDV_TIPOCF "TIPOCF"
#define RCONDV_CODCF "CODCF"
#define RCONDV_COD "COD"
#define RCONDV_TIPORIGA "TIPORIGA"
#define RCONDV_CODRIGA "CODRIGA"
#define RCONDV_UM "UM"
#define RCONDV_NSCAGL "NSCAGL"
#define RCONDV_QLIM "QLIM"
#define RCONDV_PREZZO "PREZZO"
#define RCONDV_SCONTO "SCONTO"
#define RCONDV_ADDIVA "ADDIVA"
#define RCONDV_CODIVA "CODIVA"
#define RCONDV_PERCPROVV "PERCPROVV"
#define RCONDV_QOM "QOM"
#define RCONDV_QBASE "QBASE"
#define RCONDV_CODARTOM "CODARTOM"
#define RCONDV_PROMAGGIO "PROMAGGIO"
#define RCONDV_UMOM "UMOM"
#define RCONDV_CODLOTTO "CODLOTTO"
#define RCONDV_ARTES "ARTES"
#endif

View File

@ -283,8 +283,8 @@ void TMotore_application::on_firm_change()
bool TMotore_application::user_create( )
{
open_files(LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART,
LF_TAB, LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON, LF_DESLIN, LF_CODCORR,
open_files(LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART, LF_DESLIN, LF_CODCORR,
LF_TAB, LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON,
LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
_config_ditta = new TConfig(CONFIG_DITTA);
@ -384,13 +384,22 @@ void TMotore_application::ini2mask(TConfig& ini, TMask& msk, bool query)
{
TRelation_application::ini2mask(ini, msk, query); // Default processing
TMask_field& campo = msk.field(F_TIPODOC);
TString16 str = campo.field()->read(ini, format("%d", LF_DOC));
if (str.not_empty())
campo.set(str);
if (query)
{
{
// Dobbiamo riempire il tipo documento per determinare il profilo corretto!
TMask_field& campo = msk.field(F_TIPODOC);
TString16 str = campo.field()->read(ini, format("%d", LF_DOC));
if (str.empty())
{
TToken_string key;
key.add(msk.get(F_PROVV));
key.add(msk.get(F_ANNO));
key.add(msk.get(F_CODNUM));
key.add(msk.get(F_NDOC));
str = cache().get(LF_DOC, key, DOC_TIPODOC);
}
campo.set(str);
}
else
{
@ -503,4 +512,4 @@ int ve0100( int argc, char* argv[])
a.run( argc, argv, "Gestione documenti" );
return 0;
}
}

View File

@ -136,8 +136,8 @@ BEGIN
FIELD LEN_USER[1]
GROUP 11
FLAGS "U"
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=20)
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 20 caratteri"
NUM_EXPR (#THIS_FIELD>0)&&(#THIS_FIELD<=40)
WARNING "La lunghezza del campo deve essere maggiore di 0 e non puo' superare 40 caratteri"
END
STRING F_DEC_USER1 2
@ -507,6 +507,7 @@ BEGIN
FIELD CHK_USER[9]
END
STRING F_PROMPT_USER9 20
BEGIN
PROMPT 2 12 "Prompt "
@ -594,4 +595,4 @@ END
ENDPAGE
ENDMASK
ENDMASK

View File

@ -443,6 +443,7 @@ public:
bool is_articolo() const;
bool is_checked() const { return get_bool(RDOC_CHECKED);}
bool is_evadibile() const { return is_merce() || is_omaggio() || is_spese() || is_prestazione(); }
bool is_evasa() const; // Ritorna vero se la riga è evasa
void checked(bool on = TRUE) { put(RDOC_CHECKED, (bool)on); }
void unchecked() { checked(FALSE); }
bool linked() const { return get(RDOC_DACODNUM).not_empty();}

View File

@ -641,6 +641,11 @@ real TRiga_documento::qtaresidua() const
return val;
}
bool TRiga_documento::is_evasa() const
{
return qtaresidua().is_zero();
}
real TRiga_documento::valore(bool totale, int ndec) const
{
real val;

View File

@ -573,10 +573,10 @@ void TDocumento::test_firm()
}
}
real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
real TDocumento::spese_incasso(real& /* imp */, int ndec, TTipo_importo t) const
{
real imp_spese;
real percentuale = get_real("PERCSPINC");
const real percentuale = get_real("PERCSPINC");
static TArray spese_inc;
if (percentuale > ZERO)
@ -585,8 +585,7 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
ndec = decimals();
if (spese_inc.objptr(_rim_dir) == NULL)
{
TConfig conf(CONFIG_STUDIO);
TConfig conf(CONFIG_STUDIO, "ve");
for (TTipo_pag p = _rim_dir; p < _nessun_pag; p = (TTipo_pag) ((int)p + 1))
{
real r(conf.get("IMPSPINC", "ve", p));
@ -603,11 +602,6 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
}
imp_spese *= percentuale / 100.0;
real cambio = get_real("CAMBIO");
if (cambio == ZERO)
cambio = 1.0;
if (t == _lordo || t == _imposta)
{
TString16 codiva_es;
@ -620,7 +614,14 @@ real TDocumento::spese_incasso(real & imp, int ndec, TTipo_importo t) const
if (t == _imposta)
imp_spese = iva_spese;
}
imp_spese /= cambio;
const real cambio = get_real("CAMBIO");
if (!cambio.is_zero())
{
const exchange_type ce = get_bool(DOC_CONTROEURO) ? _exchange_contro : _exchange_base;
imp_spese = change_currency(imp_spese, "", ZERO, _exchange_undefined,
get(DOC_CODVAL), cambio, ce, -1);
}
imp_spese.round(ndec);
}
return imp_spese;
@ -682,24 +683,29 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
}
if (ndec == AUTO_DECIMALS)
ndec = decimals();
real cambio = get_real("CAMBIO");
if (cambio == ZERO)
cambio = 1.0;
real importo = imp*cambio;
TCurrency_documento imp_val(imp);
imp_val.change_to_firm_val();
real importo = imp_val.get_num();
TPagamento & pag = ((TDocumento*)this)->pagamento();
const int nrate = pag.n_rate();
real old_bolli = -1.00;
real iva_bolli;
real imp_orig = imposta();
real sp_orig = spese();
TCurrency_documento imp_orig_val(imposta());
imp_orig_val.change_to_firm_val();
const real imp_orig = imp_orig_val.get_num();
TCurrency_documento spese_val(spese());
spese_val.change_to_firm_val();
const real sp_orig = spese_val.get_num();
for (int j = 0; j < 5 && tot_bolli+iva_bolli != old_bolli; j++)
{
old_bolli = tot_bolli + iva_bolli;
const real imposte = imp_orig * cambio + iva_bolli;
const real imp_spese = sp_orig * cambio + tot_bolli - iva_bolli;
const real imposte = imp_orig + iva_bolli;
const real imp_spese = sp_orig + tot_bolli - iva_bolli;
const real imponibile = importo - imposte - imp_spese;
tot_bolli = ZERO;
if (!tipo().nota_credito())
@ -782,7 +788,14 @@ real TDocumento::bolli(real & imp, int ndec, TTipo_importo t) const
else
if (t == _imposta)
tot_bolli = iva_bolli;
tot_bolli /= cambio;
const real cambio = get_real("CAMBIO");
if (!cambio.is_zero())
{
const exchange_type ce = get_bool(DOC_CONTROEURO) ? _exchange_contro : _exchange_base;
tot_bolli = change_currency(tot_bolli, "", ZERO, _exchange_undefined,
get(DOC_CODVAL), cambio, ce, -1);
}
tot_bolli.round(ndec);
}
@ -1324,7 +1337,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
}
if (r.is_evadibile() && is_ordine())
{
docevaso &= (r.get_bool(RDOC_RIGAEVASA) || r.get_real(RDOC_QTA) == ZERO);
docevaso &= r.is_evasa();
const TDate dcons = r.get(RDOC_DATACONS);
if (!dcons.ok())
r.put(RDOC_DATACONS, datacons);
@ -1966,7 +1979,7 @@ void TDocumento::update_tabella_iva()
if (!r.is_descrizione())
{
const real imposta = doc_al_lordo ? ZERO :r.imposta(FALSE);
// Aggiorna o aggiunge l'elemento se non esiste
// Aggiorna o aggiunge l'elemento se non esiste
const TCodiceIVA & iva = r.iva();
const TString16 cod(iva.codice());
if (cod.not_empty())
@ -2040,12 +2053,12 @@ void TDocumento::update_tabella_iva()
if (fatt_comm)
calc_iva_fattura_commerciale();
real val = spese_incasso(tot_doc, ALL_DECIMALS, _netto);
TString16 codiva(codiva_es.not_empty() ? (const TString &) codiva_es : codiva_spese());
TRiepilogo_iva * ri = (TRiepilogo_iva *) table.objptr(codiva);
real val = spese_incasso(tot_doc, ALL_DECIMALS, doc_al_lordo ? _lordo : _netto);
if (val != ZERO)
{
const TString16 codiva = codiva_es.not_empty() ? (const TString &) codiva_es : codiva_spese();
TRiepilogo_iva* ri = (TRiepilogo_iva*)table.objptr(codiva);
if (ri == NULL)
{
ri = new TRiepilogo_iva(TCodiceIVA(codiva));
@ -2054,19 +2067,20 @@ void TDocumento::update_tabella_iva()
ri->imp_spese() += val;
tot_doc += val;
val = spese_incasso(tot_doc, ALL_DECIMALS, _imposta);
if (doc_al_lordo)
ri->imp_spese() += val;
else
if (!doc_al_lordo)
{
val = spese_incasso(tot_doc, ALL_DECIMALS, _imposta);
ri->iva_spese() += val;
tot_doc += val;
tot_doc += val;
}
}
val = bolli(tot_doc, ALL_DECIMALS, _netto);
val = bolli(tot_doc, ALL_DECIMALS, doc_al_lordo ? _lordo : _netto);
if (val != ZERO)
{
codiva = codiva_bolli();
ri = (TRiepilogo_iva *) table.objptr(codiva);
const TString16 codiva = codiva_bolli();
TRiepilogo_iva* ri = (TRiepilogo_iva *) table.objptr(codiva);
if (ri == NULL)
{
ri = new TRiepilogo_iva(TCodiceIVA(codiva));
@ -2075,24 +2089,25 @@ void TDocumento::update_tabella_iva()
ri->imp_spese() += val;
tot_doc += val;
val = bolli(tot_doc, ALL_DECIMALS, _imposta);
if (doc_al_lordo)
ri->imp_spese() += val;
else
if (!doc_al_lordo)
{
val = bolli(tot_doc, ALL_DECIMALS, _imposta);
ri->iva_spese() += val;
tot_doc += val;
tot_doc += val;
}
}
// SCORPORO
if (doc_al_lordo)
{
table.restart();
for (ri = (TRiepilogo_iva *) table.get(); ri != NULL;
for (TRiepilogo_iva* ri = (TRiepilogo_iva *) table.get(); ri != NULL;
ri = (TRiepilogo_iva *) table.get())
{
const TCodiceIVA & iva = ri->cod_iva();
ri->iva() = iva.scorpora(ri->imp(), ndec);
ri->iva() = iva.scorpora(ri->imp(), ndec);
ri->iva_spese() = iva.scorpora(ri->imp_spese(), ndec);
iva.scorpora(ri->imp_spese_row(), ndec);
@ -2603,7 +2618,7 @@ bool TDocumento::is_evaso() const
{
const TRiga_documento& riga = physical_row(r);
if (riga.is_evadibile())
ok = riga.get_bool(RDOC_RIGAEVASA) || riga.get_real(RDOC_QTA) == ZERO;
ok = riga.is_evasa();
}
return ok;
}

View File

@ -43,12 +43,13 @@
#define MAX_VIS_RATE 5
bool numdocrif_hndl( TMask_field& field, KEY key )
{
if (key == K_ENTER)
{
TDocumento_mask & m = (TDocumento_mask &) field.mask();
const TString16 ndocrif(field.get());
TDocumento_mask& m = (TDocumento_mask&)field.mask();
TString16 campo = DOC_NUMDOCRIF;
if (field.field() != NULL)
campo = field.field()->name();
TRectype filtrec(LF_DOC);
filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF));
@ -57,14 +58,14 @@ bool numdocrif_hndl( TMask_field& field, KEY key )
filtrec.put(DOC_ANNO, m.get(F_ANNO));
TRelation rel(LF_DOC);
// rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF");
TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec);
TString80 f; f.format("CODNUM==\"%s\"", (const char *)m.get(F_CODNUM));
TString sortkey = "TIPOCF|CODCF|PROVV|ANNO|CODNUM|"; sortkey << campo;
TSorted_cursor cur(&rel, sortkey, "", 2, &filtrec, &filtrec);
TString80 f; f.format("CODNUM==\"%s\"", (const char*)m.get(F_CODNUM));
cur.setfilter(f);
filtrec.put(DOC_CODNUM, m.get(F_CODNUM));
filtrec.put(DOC_NUMDOCRIF, ndocrif);
filtrec.put(campo, field.get());
cur.curr() = filtrec;
cur.read(_isequal);
@ -72,8 +73,8 @@ bool numdocrif_hndl( TMask_field& field, KEY key )
{
const long numdoc = m.get_long(F_NDOC);
if (numdoc != cur.curr().get_long(DOC_NDOC))
return yesno_box("il nunero di rifermento %s é giá stati utilizzato\n devo registrare ugualmente",
(const char *)ndocrif);
return yesno_box("Il numero di riferimento %s è già stato utilizzato\nsi desidera registrare ugualmente?",
(const char *)field.get());
}
}
return TRUE;