From 0b04b259ad4baa01c650d5ccc323fc0c454a63bc Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 4 Jan 2010 10:06:04 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : ef0.exe ef0a00a.msk Ricompilazione Demo : [ ] Commento : Aggiunto report conm possibili problemi in fase di generazione effetti, ad es: manca ABI/CAB sul cli/fo in caso di ri.ba git-svn-id: svn://10.65.10.50/trunk@19858 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ef/ef0a00.cpp | 117 ++++++++++++++++++++++++++++++++++++------------- ef/ef0a00a.uml | 97 +++++++++++++++++++--------------------- 2 files changed, 131 insertions(+), 83 deletions(-) diff --git a/ef/ef0a00.cpp b/ef/ef0a00.cpp index 2d81b8a42..868d5e7ee 100755 --- a/ef/ef0a00.cpp +++ b/ef/ef0a00.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -28,7 +29,8 @@ class TPE_mask : public TAutomask protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); bool on_sheet_event(TOperable_field& o, TField_event e, long jolly); - + bool check_bank(TEffetto& effetto, TLog_report& log) const; + public: bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag, char& accsal, int& rdist, int& reff, @@ -477,8 +479,7 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, for (int i = 0; i < dist.items(); i++) { TEffetto& eff = dist[i]; - if (eff.get_char(EFF_TIPOCF) == tipocf && - eff.get_long(EFF_CODCF) == codcf) + if (eff.get_char(EFF_TIPOCF) == tipocf && eff.get_long(EFF_CODCF) == codcf) { neweff = &eff; rigadist = i+1; @@ -501,14 +502,70 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, return neweff->row_r(rigaeff, TRUE); } +bool TPE_mask::check_bank(TEffetto& effetto, TLog_report& log) const +{ + const int tipopag = effetto.get_int(EFF_TIPOPAG); + if (tipopag != 3 && tipopag != 9) // Controllo solo ri.ba. e bonifici + return true; + + TString8 abi = effetto.get(EFF_CODABI); + TString8 cab = effetto.get(EFF_CODCAB); + TString80 iban = effetto.get(EFF_IBAN); + + TToken_string key; + key = effetto.get(EFF_TIPOCF); + key.add(effetto.get(EFF_CODCF)); + const TRectype& clifo = cache().get(LF_CLIFO, key); + + if (atol(abi) == 0 || atol(cab) == 0L) + { + abi = clifo.get(CLI_CODABI); + cab = clifo.get(CLI_CODCAB); + } + if (iban.blank()) + iban = clifo.get(CLI_IBAN); + if (iban.starts_with("IT") && atol(abi)> 0 && atol(cab)>0) + { + TString16 abicab; abicab << abi << cab; + if (iban.mid(5, 10) != abicab) + iban.cut(0); + } + + effetto.put(EFF_CODABI, abi); + effetto.put(EFF_CODCAB, cab); + effetto.put(EFF_IBAN, iban); + + if (tipopag == 3 && (atol(abi)==0 || atol(cab)==0)) + { + TString msg; + msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"), + (const char*)key, effetto.get_long(EFF_NPROGTR)); + log.log(2, msg); + return false; + } + + if (tipopag == 9 && iban.blank()) + { + TString msg; + msg.format(FR("Impossibile determinare IBAN del %s sull'effetto %ld"), + (const char*)key, effetto.get_long(EFF_NPROGTR)); + log.log(2, msg); + return false; + } + + return true; +} + void TPE_mask::save_rate() { + TLog_report log(TR("Generazione effetti")); + const char tipodist = get(F_TIPODIST)[0]; long numdist = get_long(F_DIST); if (_is_new) { TLocalisamfile f(LF_EFFETTI); f.setkey(4); - while (TRUE) + while (true) { f.put(EFF_TIPODIST, tipodist); f.put(EFF_NDIST, numdist); @@ -516,7 +573,8 @@ void TPE_mask::save_rate() if (f.read() != NOERR) break; const long nd = get_free_num(); - warning_box("La distinta %ld č giā presente: verrā rinumerata in %ld", numdist, nd); + TString msg; msg.format(FR("La distinta %ld č giā presente: verrā rinumerata in %ld"), numdist, nd); + log.log(1, msg); numdist = nd; } _is_new = FALSE; @@ -527,6 +585,7 @@ void TPE_mask::save_rate() const TString& codval = get(F_CODVAL); const real cambio = get(F_CAMBIO); const bool eurocambio = get_bool(F_EURO); + const int tipopag = get_int(F_TIPOPAG); bool zeroes = FALSE; // Esistono righe effetto da cancellare @@ -549,8 +608,8 @@ void TPE_mask::save_rate() { if (rigaeff <= 0) { - char tipocf = get(F_TIPOCF)[0]; - long codcf = row->get_long(sheet.cid2index(F_CODCF)); + const char tipocf = get(F_TIPOCF)[0]; + const long codcf = row->get_long(sheet.cid2index(F_CODCF)); TRectype& reff = new_row_effetto(distinta, tipocf, codcf, rigadist, rigaeff); reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO))); @@ -578,25 +637,14 @@ void TPE_mask::save_rate() TString8 abi = scad.get(SCAD_CODABI); TString8 cab = scad.get(SCAD_CODCAB); - key = get(F_TIPOCF); - key.add(row->get(sheet.cid2index(F_CODCF))); + key.format("%c|%ld", tipocf, codcf); const TRectype& clifo = cache().get(LF_CLIFO, key); - TString80 iban = clifo.get(CLI_IBAN); - - if (atol(cab) == 0L) + TString80 iban = clifo.get(CLI_IBAN); + if (atol(abi) == 0 || atol(cab) == 0L) { abi = clifo.get(CLI_CODABI); cab = clifo.get(CLI_CODCAB); } - else - { - if (iban.starts_with("IT")) - { - TString16 abicab; abicab << abi << cab; - if (iban.mid(5, 10) != abicab) - iban.cut(0); - } - } TEffetto& eff = distinta[rigadist-1]; eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD)); @@ -606,6 +654,8 @@ void TPE_mask::save_rate() } TEffetto& eff = distinta[rigadist-1]; + check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN + TRectype& reff = eff.row_r(rigaeff); real oldimp = reff.get(REFF_IMPORTO); real oldimpval = reff.get(REFF_IMPORTOVAL); @@ -648,11 +698,15 @@ void TPE_mask::save_rate() if (err == NOERR) distinta.righe().destroy(rd, TRUE); else - error_box("Errore %d durante la cancellazione della riga %d", err, rd+1); + { + TString msg; + msg.format(FR("Errore %d durante la cancellazione della riga %d"), err, rd+1); + log.log(2, msg); + } } else { - eff.put(EFF_TIPOPAG, get(F_TIPOPAG)); + eff.put(EFF_TIPOPAG, tipopag); eff.put(EFF_IMPORTO, totimp); eff.put(EFF_IMPORTOVAL, totimpval); eff.put(EFF_CODVAL, codval); @@ -670,6 +724,9 @@ void TPE_mask::save_rate() dati_dist.add(get(F_ABI)); dati_dist.add(get(F_CAB)); distinta.write(FALSE, &dati_dist); + + if (log.recordset()->items() > 0) + log.preview(); } void TPE_mask::print() @@ -713,7 +770,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) m.reset(F_IMPORTO); m.reset(F_ACCSAL); } - _spork = TRUE; + _spork = true; } break; case F_SHEET: @@ -725,7 +782,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) if (ronaldo.active()) on_field_event(ronaldo, fe_button, 0); } - return FALSE; + return false; case se_notify_modify: _spork = TRUE; update_total(); @@ -737,7 +794,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly) default: break; } - return TRUE; + return true; } long TPE_mask::get_free_num() const @@ -788,8 +845,8 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) const TRectype& rec = cur.curr(); if (rec.get_bool(EFF_EFFCONT)) { - warning_box("La distinta %s č giā stata contabilizzata,\n" - "per cui non č possibile modificarla", (const char*)ef.get()); + warning_box(FR("La distinta %s č giā stata contabilizzata,\n" + "per cui non č possibile modificarla"), (const char*)ef.get()); show(F_UNCONTABIL); } ok = fill_distinta(true); @@ -826,14 +883,14 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) if (!numdist.enabled() && sfield(F_SHEET).items() > 0) { go = check_fields(); - if (go && _spork && yesno_box("Si desidera registrare la distinta?")) + if (go && _spork && yesno_box(TR("Si desidera registrare la distinta?"))) save_rate(); } if (go) go = fill_rate(); } else - return error_box("E' necessario specificare un numero di distinta"); + return error_box(TR("E' necessario specificare un numero di distinta")); } break; case F_CONTABILI: diff --git a/ef/ef0a00a.uml b/ef/ef0a00a.uml index c482ba17b..9670590ac 100755 --- a/ef/ef0a00a.uml +++ b/ef/ef0a00a.uml @@ -1,6 +1,7 @@ #include "ef0A00a.h" TOOLBAR "topbar" 0 0 0 2 + BUTTON DLG_NEWREC 10 2 BEGIN PROMPT -16 -1 "~Nuovo" @@ -32,31 +33,7 @@ BEGIN PICTURE BMP_PRINT END -BUTTON DLG_CANCEL 10 2 -BEGIN - PROMPT -56 -1 "" -END - -BUTTON DLG_QUIT 10 2 -BEGIN - PROMPT -66 -1 "" -END - -ENDPAGE - -TOOLBAR "Toolbar" 0 -2 0 2 - -BUTTON F_UNCONTABIL 30 2 -BEGIN - PROMPT -12 -11 "~Annulla contabilizzazione" - FLAGS "H" -END - -BUTTON F_CONTABILI 30 2 -BEGIN - PROMPT -22 -11 "~Contabilizzazione" - GROUP 5 -END +#include ENDPAGE @@ -235,9 +212,14 @@ BEGIN MESSAGE COPY,F_TIPOCF END +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 6 "@bSelezione effetti" +END + LIST F_TIPOCF 1 9 BEGIN - PROMPT 2 6 "" + PROMPT 2 7 "" ITEM "C|Cliente" ITEM "F|Fornitore" FLAGS "D" @@ -246,7 +228,7 @@ END NUMBER F_CLIFO 6 BEGIN - PROMPT 15 6 "" + PROMPT 15 7 "" USE LF_CLIFO INPUT TIPOCF F_TIPOCF SELECT INPUT CODCF F_CLIFO @@ -255,11 +237,12 @@ BEGIN OUTPUT F_CLIFO CODCF OUTPUT F_RAGSOCCF RAGSOC CHECKTYPE NORMAL + ADD RUN cg0 -1 END STRING F_RAGSOCCF 50 37 BEGIN - PROMPT 25 6 "" + PROMPT 25 7 "" USE LF_CLIFO KEY 2 INPUT TIPOCF F_TIPOCF SELECT INPUT RAGSOC F_RAGSOCCF @@ -267,22 +250,23 @@ BEGIN DISPLAY "Codice" CODCF COPY OUTPUT F_CLIFO CHECKTYPE NORMAL + ADD RUN cg0 -1 END DATE F_DA_DATA BEGIN - PROMPT 2 7 "Dal " + PROMPT 2 8 "Dal " END DATE F_A_DATA BEGIN - PROMPT 20 7 "Al " + PROMPT 20 8 "Al " FLAGS "A" END LISTBOX F_SORT 10 BEGIN - PROMPT 35 7 "Ordinamento " + PROMPT 35 8 "Ordinamento " ITEM " |Standard" ITEM "1|Scadenza" ITEM "2|Residuo" @@ -290,13 +274,40 @@ END BUTTON F_AGGIORNA 10 2 BEGIN - PROMPT 66 6 "" + PROMPT 66 7 "" PICTURE BMP_SELECT END +LIST F_TIPOPAGEFF 1 30 +BEGIN + PROMPT 2 9 "Solo effetti con tipo pagamento " + ITEM " | " + ITEM "1|Rimessa Diretta" + ITEM "2|Tratta" + ITEM "3|Ricevuta Bancaria" + ITEM "4|Cessione" + ITEM "5|Paghero'" + ITEM "6|Lettera di credito" + ITEM "7|Tratta accettata" + ITEM "8|Rapporti interbancari diretti" + ITEM "9|Bonifico" +END + +BUTTON F_CONTABILI 30 1 +BEGIN + PROMPT 2 11 "~Contabilizzazione" + GROUP 5 +END + +BUTTON F_UNCONTABIL 30 1 +BEGIN + PROMPT 47 11 "~Annulla contabilizzazione" + FLAGS "H" +END + SPREADSHEET F_SHEET 0 -2 BEGIN - PROMPT 0 8 "" + PROMPT 0 12 "" ITEM "Importo@18" ITEM "A/S@3" ITEM "Residuo@18" @@ -326,26 +337,6 @@ END ENDPAGE -PAGE "Selezione effetti" -1 -1 78 19 - -LIST F_TIPOPAGEFF 1 30 -BEGIN - PROMPT 2 1 "Solo effetti con tipo pagamento " - ITEM " | " - ITEM "1|Rimessa Diretta" - ITEM "2|Tratta" - ITEM "3|Ricevuta Bancaria" - ITEM "4|Cessione" - ITEM "5|Paghero'" - ITEM "6|Lettera di credito" - ITEM "7|Tratta accettata" - ITEM "8|Rapporti interbancari diretti" - ITEM "9|Bonifico" -END - -ENDPAGE - - ENDMASK PAGE "Rate" -1 -1 60 10