From 07d0029df824f67cb410ad5b3c145f9d89eba0d1 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 6 Apr 2010 13:32:21 +0000 Subject: [PATCH] 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 --- ef/ef0a00.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++---- ef/ef0a00a.h | 24 +++++++++++---------- ef/ef0a00a.uml | 23 +++++++++++++++++--- include/effetti.h | 1 + 4 files changed, 84 insertions(+), 18 deletions(-) diff --git a/ef/ef0a00.cpp b/ef/ef0a00.cpp index 7ff7b112c..899aef4e6 100755 --- a/ef/ef0a00.cpp +++ b/ef/ef0a00.cpp @@ -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: diff --git a/ef/ef0a00a.h b/ef/ef0a00a.h index 7fb64bb17..5c6bc0dd7 100755 --- a/ef/ef0a00a.h +++ b/ef/ef0a00a.h @@ -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 diff --git a/ef/ef0a00a.uml b/ef/ef0a00a.uml index c40c5598e..c0dcf27b3 100755 --- a/ef/ef0a00a.uml +++ b/ef/ef0a00a.uml @@ -33,7 +33,7 @@ BEGIN PICTURE BMP_PRINT END -#include +#include 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 "" diff --git a/include/effetti.h b/include/effetti.h index c92c6fba8..3dc34464b 100755 --- a/include/effetti.h +++ b/include/effetti.h @@ -36,5 +36,6 @@ #define EFF_ACCSAL "ACCSAL" #define EFF_SPESE "SPESE" #define EFF_PROGBNP "PROGBNP" +#define EFF_DSCVAL "DSCVAL" #endif