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:
parent
ffe5e5c386
commit
d2816f518e
@ -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;
|
||||
}
|
77
ce/ce0400a.h
77
ce/ce0400a.h
@ -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
|
||||
|
849
ce/ce0400a.uml
849
ce/ce0400a.uml
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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>
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
312
cm/cm0100.cpp
312
cm/cm0100.cpp
@ -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();
|
||||
|
17
cm/cm0100.h
17
cm/cm0100.h
@ -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
|
||||
|
210
cm/cm0100a.frm
210
cm/cm0100a.frm
@ -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
|
||||
|
@ -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
|
||||
|
415
cm/cm0200.cpp
415
cm/cm0200.cpp
@ -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();
|
||||
|
56
cm/cm0200.h
56
cm/cm0200.h
@ -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
|
||||
|
332
cm/cm0200a.frm
332
cm/cm0200a.frm
@ -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
|
||||
|
@ -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
7
cm/cmprassi.men
Executable 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"
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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';
|
||||
}
|
||||
|
||||
|
177
m770/771230.cpp
177
m770/771230.cpp
@ -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);
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
20
or/or1p.url
20
or/or1p.url
@ -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
26
ve/condv.h
Executable 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
|
@ -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
27
ve/rcondv.h
Executable 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
|
@ -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;
|
||||
}
|
||||
}
|
@ -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
|
@ -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();}
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user