Patch level : 10.0 1052

Files correlati     : fetbcon.msk fe0.exe
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione rateizzazione dei contratti


git-svn-id: svn://10.65.10.50/branches/R_10_00@22379 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-07-07 09:01:00 +00:00
parent e82013110e
commit 73364e8163
3 changed files with 84 additions and 62 deletions

View File

@ -3,13 +3,16 @@
#include <automask.h> #include <automask.h>
#include <modtbapp.h> #include <modtbapp.h>
#include "fetbcon.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Maschera gestione contratti FE // Maschera gestione contratti FE
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
class TFE_contract_mask : public TAutomask class TFE_contract_mask : public TAutomask
{ {
TSheet_field& rate_sheet() const; enum { MAX_RATE = 4 };
TSheet_field& rate_sheet() const { return sfield(F_CON_RATE); }
protected: protected:
virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
@ -20,15 +23,6 @@ public:
TFE_contract_mask() : TAutomask("fetbcon") {} TFE_contract_mask() : TAutomask("fetbcon") {}
}; };
// L'ultimo (e unico) sheet della maschera contiene la rateizzazione delle fatture
TSheet_field& TFE_contract_mask::rate_sheet() const
{
int f;
for (f = fields()-1; f > 0 && !fld(f).is_sheet(); f--);
CHECK(f > 0, "Rate sheet non found");
return (TSheet_field&)fld(f);
}
// carica i normalmente i campi standard e la sequenza degli R* nello sheet // carica i normalmente i campi standard e la sequenza degli R* nello sheet
void TFE_contract_mask::autoload(const TRelation& rel) void TFE_contract_mask::autoload(const TRelation& rel)
{ {
@ -42,7 +36,7 @@ void TFE_contract_mask::autoload(const TRelation& rel)
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
for (int i = 0; i < 4; i++) for (int i = 0; i < MAX_RATE; i++)
{ {
TToken_string& row = s.row(i); TToken_string& row = s.row(i);
row.add(curr.get(anno)); row.add(curr.get(anno));
@ -65,7 +59,7 @@ void TFE_contract_mask::autosave(TRelation& rel) const
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
for (int i = 0; i < s.items(); i++) for (int i = 0; i < s.items() && i < MAX_RATE; i++)
{ {
TToken_string& row = s.row(i); TToken_string& row = s.row(i);
curr.put(anno, row.get(0)); curr.put(anno, row.get(0));
@ -79,13 +73,42 @@ void TFE_contract_mask::autosave(TRelation& rel) const
bool TFE_contract_mask::on_field_event(TOperable_field &o, TField_event e, long jolly) bool TFE_contract_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
{ {
switch (e) if (o.is_sheet())
{ {
case se_query_add: switch (e)
case se_query_del: {
return false; // Non permetto aggiunta/cancellazione di righe case fe_init:
default: break; if (o.mask().mode() == MODE_INS)
{
TSheet_field& s = (TSheet_field&)o;
for (int i = s.items(); i < MAX_RATE; i++)
s.row(i);
s.force_update();
}
break;
case se_query_add:
case se_query_del:
return false; // Non permetto aggiunta/cancellazione di righe
default: break;
}
} }
else
{
switch (o.dlg())
{
case R_CON_ANNO:
if (e == fe_modify && !o.empty() && jolly > 0)
{
const int anno_prec = atoi(rate_sheet().cell(jolly-1, o.dlg()));
const int anno_corr = atoi(o.get());
if (anno_corr <= anno_prec)
return error_box(TR("Inserire un anno successivo al %d"), anno_prec);
}
break;
default: break;
}
}
return true; return true;
} }
@ -98,7 +121,6 @@ class TFE_table_app : public TTable_module_application
{ {
protected: // TRelation_application protected: // TRelation_application
virtual TMask* user_create_mask(); virtual TMask* user_create_mask();
public: public:
}; };

View File

@ -1,14 +1,14 @@
#define F_TIPOCF 201 #define F_CON_TIPOCF 201
#define F_CODCF 202 #define F_CON_CODCF 202
#define F_RAGSOC 203 #define F_CON_RAGSOC 203
#define F_CONTRATTO 204 #define F_CON_CONTRATTO 204
#define F_DESCRIZIONE 205 #define F_CON_DESCRIZIONE 205
#define F_PADRE 206 #define F_CON_PADRE 206
#define F_DESPADRE 207 #define F_CON_DESPADRE 207
#define F_INIZIO 220 #define F_CON_INIZIO 220
#define F_FINE 221 #define F_CON_FINE 221
#define F_RATE 250 #define F_CON_RATE 250
#define R_ANNO 101 #define R_CON_ANNO 101
#define R_IMPORTO 102 #define R_CON_IMPORTO 102
#define R_IMPOSTA 103 #define R_CON_IMPOSTA 103

View File

@ -11,7 +11,7 @@ BEGIN
PROMPT 1 1 "@bEstremi" PROMPT 1 1 "@bEstremi"
END END
LIST F_TIPOCF 1 9 LIST F_CON_TIPOCF 1 9
BEGIN BEGIN
PROMPT 2 2 "" PROMPT 2 2 ""
ITEM "F|Fornitore" ITEM "F|Fornitore"
@ -20,16 +20,16 @@ BEGIN
KEY 1 KEY 1
END END
NUMBER F_CODCF 6 NUMBER F_CON_CODCF 6
BEGIN BEGIN
PROMPT 14 2 "" PROMPT 14 2 ""
USE LF_CLIFO USE LF_CLIFO
INPUT TIPOCF F_TIPOCF SELECT INPUT TIPOCF F_CON_TIPOCF SELECT
INPUT CODCF F_CODCF INPUT CODCF F_CON_CODCF
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
OUTPUT F_CODCF CODCF OUTPUT F_CON_CODCF CODCF
OUTPUT F_RAGSOC RAGSOC OUTPUT F_CON_RAGSOC RAGSOC
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD CODTAB[2,7] FIELD CODTAB[2,7]
KEY 1 KEY 1
@ -37,69 +37,69 @@ BEGIN
MESSAGE DISABLE,F_RAGSOC MESSAGE DISABLE,F_RAGSOC
END END
STRING F_RAGSOC 50 STRING F_CON_RAGSOC 50
BEGIN BEGIN
PROMPT 24 2 "" PROMPT 24 2 ""
USE LF_CLIFO KEY 2 USE LF_CLIFO KEY 2
INPUT TIPOCF F_TIPOCF SELECT INPUT TIPOCF F_CON_TIPOCF SELECT
INPUT RAGSOC F_RAGSOC INPUT RAGSOC F_CON_RAGSOC
DISPLAY "Ragione Sociale@50" RAGSOC DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Codice" CODCF DISPLAY "Codice" CODCF
COPY OUTPUT F_CODCF COPY OUTPUT F_CON_CODCF
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
STRING F_CONTRATTO 18 STRING F_CON_CONTRATTO 18
BEGIN BEGIN
PROMPT 2 3 "Codice contratto " PROMPT 2 3 "Codice contratto "
FLAGS "U" FLAGS "U"
FIELD CODTAB[8,25] FIELD CODTAB[8,25]
USE &CON USE &CON
JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7] JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7]
INPUT CODTAB[1,1] F_TIPOCF SELECT INPUT CODTAB[1,1] F_CON_TIPOCF SELECT
INPUT CODTAB[2,7] F_CODCF INPUT CODTAB[2,7] F_CON_CODCF
INPUT CODTAB[8,25] F_CONTRATTO INPUT CODTAB[8,25] F_CON_CONTRATTO
DISPLAY "Contratto" CODTAB[8,] DISPLAY "Contratto" CODTAB[8,]
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Tipo" CODTAB[1,1] DISPLAY "Tipo" CODTAB[1,1]
DISPLAY "Cli/For" LF_CLIFO->CODCF DISPLAY "Cli/For" LF_CLIFO->CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
OUTPUT F_CODCF CODTAB[2,7] OUTPUT F_CON_CODCF CODTAB[2,7]
OUTPUT F_CONTRATTO CODTAB[8,] OUTPUT F_CON_CONTRATTO CODTAB[8,]
OUTPUT F_DESCRIZIONE S0 OUTPUT F_CON_DESCRIZIONE S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
KEY 1 KEY 1
END END
STRING F_DESCRIZIONE 50 STRING F_CON_DESCRIZIONE 50
BEGIN BEGIN
PROMPT 2 4 "Descrizione " PROMPT 2 4 "Descrizione "
FIELD S0 FIELD S0
USE &CON KEY 2 SELECT (CODTAB[1,1]==#F_TIPOCF)&&(STR(CODTAB[2,7]=#F_CODCF)) USE &CON KEY 2 SELECT (CODTAB[1,1]==#F_TIPOCF)&&(STR(CODTAB[2,7]=#F_CODCF))
JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7] JOIN LF_CLIFO INTO TIPOCF=CODTAB[1,1] CODCF=CODTAB[2,7]
INPUT S0 F_DESCRIZIONE INPUT S0 F_CON_DESCRIZIONE
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
DISPLAY "Contratto" CODTAB[8,] DISPLAY "Contratto" CODTAB[8,]
DISPLAY "Tipo" CODTAB[1,1] DISPLAY "Tipo" CODTAB[1,1]
DISPLAY "Cli/For" LF_CLIFO->CODCF DISPLAY "Cli/For" LF_CLIFO->CODCF
DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
COPY OUTPUT F_CONTRATTO COPY OUTPUT F_CON_CONTRATTO
KEY 2 KEY 2
END END
STRING F_PADRE 18 STRING F_CON_PADRE 18
BEGIN BEGIN
PROMPT 2 5 "Contratto principale " PROMPT 2 5 "Contratto principale "
FLAGS "U" FLAGS "U"
FIELD S1 FIELD S1
COPY USE F_CONTRATTO COPY USE F_CON_CONTRATTO
INPUT CODTAB[1,1] F_TIPOCF SELECT INPUT CODTAB[1,1] F_CON_TIPOCF SELECT
INPUT CODTAB[2,7] F_CODCF SELECT INPUT CODTAB[2,7] F_CON_CODCF SELECT
INPUT CODTAB[8,25] F_PADRE INPUT CODTAB[8,25] F_CON_PADRE
COPY DISPLAY F_CONTRATTO COPY DISPLAY F_CON_CONTRATTO
OUTPUT F_PADRE CODTAB[8,] OUTPUT F_CON_PADRE CODTAB[8,]
//OUTPUT F_DESPADRE S0 //OUTPUT F_CON_DESPADRE S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
END END
@ -108,14 +108,14 @@ BEGIN
PROMPT 1 7 "@bDurata" PROMPT 1 7 "@bDurata"
END END
DATA F_INIZIO DATA F_CON_INIZIO
BEGIN BEGIN
PROMPT 2 8 "Inizio " PROMPT 2 8 "Inizio "
HELP "Data inizio contratto" HELP "Data inizio contratto"
FIELD D0 FIELD D0
END END
DATA F_FINE DATA F_CON_FINE
BEGIN BEGIN
PROMPT 24 8 "Fine " PROMPT 24 8 "Fine "
HELP "Data fine contratto" HELP "Data fine contratto"
@ -124,7 +124,7 @@ BEGIN
WARNING "La data finale deve essere successiva a quella iniziale" WARNING "La data finale deve essere successiva a quella iniziale"
END END
SPREADSHEET F_RATE 40 6 SPREADSHEET F_CON_RATE 40 6
BEGIN BEGIN
PROMPT 2 11 "" PROMPT 2 11 ""
ITEM "Anno" ITEM "Anno"