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;
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,
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);
@ -41,6 +41,7 @@ public:
bool fill_distinta(bool clear_all = false);
void sort_sheet();
void update_total();
virtual bool on_key(KEY key);
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf,
int& rigadist, int& rigaeff) const;
@ -52,10 +53,32 @@ public:
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
// effetti non ancora contabilizzati
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,
bool& partially_unassigned, int& tipopag,
bool is_old) const
@ -137,6 +160,8 @@ bool TPE_mask::calc_residual(const TRiga_scadenze& scad,
if (effkey == key)
{
rdist = effe.get_int(EFF_NRIGADIST);
datapag = effe.get_date(EFF_DATASCAD);
valben = effe.get_bool(EFF_DSCVAL);
reff = riga.get_int(REFF_NRIGATR);
accsal = riga.get_char(REFF_ACCSAL);
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;
real impres, imppag;
char accsal; int rigadist, rigaeff;
TDate datapag;
bool valben = false;
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)
ok = tipopageff == 0 || tipopag == tipopageff; // Eventuale filtro sul tipo pagamento
if (ok)
{
row.add(imppag.string());
row.add(accsal);
row.add(datapag == rs.get_date(SCAD_DATASCAD) ? "" : datapag);
row.add(valben ? "X" : "");
row.add(impres.string());
row.add(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];
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_CODABI, abi);
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);
}
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:
return on_sheet_event(o, e, jolly);
default:

View File

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

View File

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

View File

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