Patch level : 10.0 700

Files correlati     : ef0.exe
Ricompilazione Demo : [ ]
Commento            :

Bug     0001574: Inserire campo per data valuta nelle disposizioni di bonifico fornitore

Nel programma Disposizioni di incasso e pagamento occorre inserire un nuovo campo per la data valuta delle disposizioni di bonifico


git-svn-id: svn://10.65.10.50/trunk@20309 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-04-06 13:32:21 +00:00
parent 9645f8a124
commit 07d0029df8
4 changed files with 84 additions and 18 deletions

View File

@ -32,7 +32,7 @@ protected:
bool check_bank(TEffetto& effetto, TLog_report& log) const; bool check_bank(TEffetto& effetto, TLog_report& log) const;
public: public:
bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, TDate & datapag, bool & valben,
char& accsal, int& rdist, int& reff, char& accsal, int& rdist, int& reff,
bool& partially_unassigned, int& tipopag, bool is_old = false) const; bool& partially_unassigned, int& tipopag, bool is_old = false) const;
bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_new); bool fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& partially_unassigned, bool force, bool is_new);
@ -41,6 +41,7 @@ public:
bool fill_distinta(bool clear_all = false); bool fill_distinta(bool clear_all = false);
void sort_sheet(); void sort_sheet();
void update_total(); void update_total();
virtual bool on_key(KEY key);
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf, TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf,
int& rigadist, int& rigaeff) const; int& rigadist, int& rigaeff) const;
@ -52,10 +53,32 @@ public:
virtual ~TPE_mask(); virtual ~TPE_mask();
}; };
bool TPE_mask::on_key(KEY key)
{
if (key == K_F8)
{
TSheet_field & s = sfield(F_SHEET);
const int row = s.selected();
if (row >= 0)
{
s.update_row(row);
TToken_string & r = s.row(row);
r.add(get(F_DATADIST), s.cid2index(F_DATAPAG));
s.update_mask(row);
s.force_update(row);
}
return false;
}
return true;
}
// Calcola il residuo di una rata tenendo conto anche degli eventuali // Calcola il residuo di una rata tenendo conto anche degli eventuali
// effetti non ancora contabilizzati // effetti non ancora contabilizzati
bool TPE_mask::calc_residual(const TRiga_scadenze& scad, bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
real& impres, real& imppag, real& impres, real& imppag, TDate & datapag, bool & valben,
char& accsal, int& rdist, int& reff, char& accsal, int& rdist, int& reff,
bool& partially_unassigned, int& tipopag, bool& partially_unassigned, int& tipopag,
bool is_old) const bool is_old) const
@ -137,6 +160,8 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
if (effkey == key) if (effkey == key)
{ {
rdist = effe.get_int(EFF_NRIGADIST); rdist = effe.get_int(EFF_NRIGADIST);
datapag = effe.get_date(EFF_DATASCAD);
valben = effe.get_bool(EFF_DSCVAL);
reff = riga.get_int(REFF_NRIGATR); reff = riga.get_int(REFF_NRIGATR);
accsal = riga.get_char(REFF_ACCSAL); accsal = riga.get_char(REFF_ACCSAL);
imppag += riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO); imppag += riga.get_real(valuta ? REFF_IMPORTOVAL : REFF_IMPORTO);
@ -177,14 +202,19 @@ bool TPE_mask::fill_row(const TRiga_scadenze& rs, TToken_string& row, bool& part
int tipopag = 0; int tipopag = 0;
real impres, imppag; real impres, imppag;
char accsal; int rigadist, rigaeff; char accsal; int rigadist, rigaeff;
TDate datapag;
bool valben = false;
row.cut(0); row.cut(0);
bool ok = calc_residual(rs, impres, imppag, accsal, rigadist, rigaeff, partially_unassigned, tipopag, is_old) || force; bool ok = calc_residual(rs, impres, imppag, datapag, valben, accsal, rigadist, rigaeff, partially_unassigned, tipopag, is_old) || force;
if (ok) if (ok)
ok = tipopageff == 0 || tipopag == tipopageff; // Eventuale filtro sul tipo pagamento ok = tipopageff == 0 || tipopag == tipopageff; // Eventuale filtro sul tipo pagamento
if (ok) if (ok)
{ {
row.add(imppag.string()); row.add(imppag.string());
row.add(accsal); row.add(accsal);
row.add(datapag == rs.get_date(SCAD_DATASCAD) ? "" : datapag);
row.add(valben ? "X" : "");
row.add(impres.string()); row.add(impres.string());
row.add(rs.get_long(SCAD_SOTTOCONTO)); row.add(rs.get_long(SCAD_SOTTOCONTO));
TString8 cod; cod << rs.get_char(SCAD_TIPOCF) << '|' << rs.get_long(SCAD_SOTTOCONTO); TString8 cod; cod << rs.get_char(SCAD_TIPOCF) << '|' << rs.get_long(SCAD_SOTTOCONTO);
@ -654,7 +684,14 @@ void TPE_mask::save_rate()
} }
TEffetto& eff = distinta[rigadist-1]; TEffetto& eff = distinta[rigadist-1];
eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD));
// eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD));
TDate datapag(row->get(sheet.cid2index(F_DATAPAG)));
if (!datapag.ok())
datapag = scad.get(SCAD_DATASCAD);
eff.put(EFF_DATASCAD, datapag);
eff.put(EFF_DSCVAL, row->get(sheet.cid2index(F_VALBEN)));
eff.put(EFF_TIPOPAG, tipopag); eff.put(EFF_TIPOPAG, tipopag);
eff.put(EFF_CODABI, abi); eff.put(EFF_CODABI, abi);
eff.put(EFF_CODCAB, cab); eff.put(EFF_CODCAB, cab);
@ -1021,6 +1058,15 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
enable(F_AGGIORNA); enable(F_AGGIORNA);
} }
break; break;
case F_DATAPAG:
if (e == fe_close)
{
TDate datapag(o.get());
if (!datapag.ok())
datapag = o.mask().get(F_DATA);
return datapag >= get_date(F_DATADIST) || yesno_box("Riga n. %d. Data pagamento precedente alla data distinta.\n Si desidera continuare", sfield(F_SHEET).selected());
}
case F_SHEET: case F_SHEET:
return on_sheet_event(o, e, jolly); return on_sheet_event(o, e, jolly);
default: default:

View File

@ -31,14 +31,16 @@
#define F_PAGA 100 #define F_PAGA 100
#define F_IMPORTO 101 #define F_IMPORTO 101
#define F_ACCSAL 102 #define F_ACCSAL 102
#define F_RESIDUO 103 #define F_DATAPAG 103
#define F_CODCF 104 #define F_VALBEN 104
#define F_RAGSOC 105 #define F_RESIDUO 105
#define F_ANNO 106 #define F_CODCF 106
#define F_PARTITA 107 #define F_RAGSOC 107
#define F_RIGA 108 #define F_ANNO 108
#define F_RATA 109 #define F_PARTITA 109
#define F_DATA 110 #define F_RIGA 110
#define F_RIGADIST 111 #define F_RATA 111
#define F_RIGAEFF 112 #define F_DATA 112
#define F_DESC_TIPO 113 #define F_RIGADIST 113
#define F_RIGAEFF 114
#define F_DESC_TIPO 115

View File

@ -33,7 +33,7 @@ BEGIN
PICTURE BMP_PRINT PICTURE BMP_PRINT
END END
#include <helpbar.h> #include <cancelbar.h>
ENDPAGE ENDPAGE
@ -324,6 +324,8 @@ BEGIN
PROMPT 0 12 "" PROMPT 0 12 ""
ITEM "Importo@18" ITEM "Importo@18"
ITEM "A/S@3" ITEM "A/S@3"
ITEM "Data Pagamento"
ITEM "Val.Ben."
ITEM "Residuo@18" ITEM "Residuo@18"
ITEM "Codice" ITEM "Codice"
ITEM "Ragione Sociale@20" ITEM "Ragione Sociale@20"
@ -353,7 +355,7 @@ ENDPAGE
ENDMASK ENDMASK
PAGE "Rate" -1 -1 60 10 PAGE "Rate" -1 -1 70 10
NUMBER F_RIGADIST 4 NUMBER F_RIGADIST 4
BEGIN BEGIN
@ -409,6 +411,17 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
BOOLEAN F_VALBEN
BEGIN
PROMPT 21 4 "Valuta benefciario"
END
DATE F_DATAPAG
BEGIN
PROMPT 40 4 "Data pagamento "
END
CURRENCY F_RESIDUO 18 CURRENCY F_RESIDUO 18
BEGIN BEGIN
PROMPT 1 5 "Residuo " PROMPT 1 5 "Residuo "
@ -429,12 +442,16 @@ BEGIN
ITEM "S|Saldo" ITEM "S|Saldo"
END END
STRING F_DESC_TIPO 20 STRING F_DESC_TIPO 30
BEGIN BEGIN
PROMPT 1 7 "Tipo pagamento " PROMPT 1 7 "Tipo pagamento "
FLAGS "D" FLAGS "D"
END END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 10 2 BUTTON DLG_OK 10 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT -13 -1 ""

View File

@ -36,5 +36,6 @@
#define EFF_ACCSAL "ACCSAL" #define EFF_ACCSAL "ACCSAL"
#define EFF_SPESE "SPESE" #define EFF_SPESE "SPESE"
#define EFF_PROGBNP "PROGBNP" #define EFF_PROGBNP "PROGBNP"
#define EFF_DSCVAL "DSCVAL"
#endif #endif