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 <modtbapp.h>
#include "fetbcon.h"
///////////////////////////////////////////////////////////
// Maschera gestione contratti FE
///////////////////////////////////////////////////////////
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:
virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
@ -20,15 +23,6 @@ public:
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
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 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);
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 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);
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)
{
switch (e)
if (o.is_sheet())
{
case se_query_add:
case se_query_del:
return false; // Non permetto aggiunta/cancellazione di righe
default: break;
switch (e)
{
case fe_init:
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;
}
@ -98,7 +121,6 @@ class TFE_table_app : public TTable_module_application
{
protected: // TRelation_application
virtual TMask* user_create_mask();
public:
};

View File

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

View File

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