diff --git a/ef/ef0300.cpp b/ef/ef0300.cpp index 4b7ff2da2..29b2f3216 100755 --- a/ef/ef0300.cpp +++ b/ef/ef0300.cpp @@ -171,12 +171,18 @@ void TVariazione_distinte::aggiorna() // una TToken_string che servirà per passarli alla write della distinta TToken_string* TVariazione_distinte::common_f(const TMask& m, TToken_string& datidist) { - char tipodist = m.get(F_TIPODIST)[0];// prendo i dati - long ndist = m.get_long(F_NUMBER); // identificatvi della - TDate datadist = (TDate)m.get(F_DATA);// distinta - long codabi = m.get_long(F_CODABIP); // dalla maschera - long codcab = m.get_long(F_CODCABP); - long prog = m.get_long(F_PROG); + const char tipodist = m.get(F_TIPODIST)[0]; // prendo i dati + const long ndist = m.get_long(F_NUMBER); // identificatvi della + const TDate datadist = (TDate)m.get(F_DATA); // distinta + const TString& codabi = m.get(F_CODABIP); // dalla maschera + const TString& codcab = m.get(F_CODCABP); + + TString4 progbnp = m.get(F_PROG); + if (real::is_null(progbnp)) + progbnp.cut(0); + else + progbnp.right_just(2, '0'); + m.autosave(*_rel); datidist.add(tipodist); // inserisco i dati nella @@ -184,7 +190,7 @@ TToken_string* TVariazione_distinte::common_f(const TMask& m, TToken_string& dat datidist.add(datadist); datidist.add(codabi); datidist.add(codcab); - datidist.add(prog); + datidist.add(progbnp); return &datidist; } @@ -332,6 +338,7 @@ int TVariazione_distinte::rewrite(const TMask& m) eff.zero(EFF_NRIGADIST); eff.zero(EFF_CODABIP); eff.zero(EFF_CODCABP); + eff.zero(EFF_PROGBNP); eff.rewrite(file); } } diff --git a/ef/ef0500.cpp b/ef/ef0500.cpp index f50cce307..dbf137c6f 100755 --- a/ef/ef0500.cpp +++ b/ef/ef0500.cpp @@ -21,6 +21,29 @@ class TRiba_file; #define RIBAFILENAME "ribael.dat" +static bool build_ribaini_name(long codabi, char tipocf, char tipopag, TFilename& ribaini) +{ + // Compongo il nome del tracciato + ribaini.format("r%c%c%05ld.ini", tipocf, tipopag, codabi); + bool good = ribaini.custom_path(); + if (!good) // Se non esiste + { + ribaini.overwrite("00000", 3); // Elimino codice banca + good = ribaini.custom_path(); + if (!good) // Se non esiste + { + ribaini.overwrite("0", 2); // Elimino tipo pagamaneto + good = ribaini.custom_path(); + } + } + if (!good) // Se non esiste + { + ribaini = "riba.ini"; // Uso riba.ini standard + good = ribaini.custom_path(); + } + return good; +} + /////////////////////////////////////////////////////////////////////// // Classe per l'emissione di effetti e distinte su carta o su floppy // /////////////////////////////////////////////////////////////////////// @@ -164,7 +187,7 @@ bool TEmissione::create() _rel->add("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402); _rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF",1,LF_CLIFO); _rel->add(LF_COMUNI, "STATO==STATO|COM==COM", 1, LF_INDSP, 213); - _rel->add("BNP", "CODTAB=CODABIP+CODCABP", 1, 0, 403); + _rel->add("BNP", "CODTAB=CODABIP+CODCABP+PROGBNP", 1, 0, 403); _rel->add(LF_DOC, "PROVV==PROVV|ANNO==ANNODOC|CODNUM==CODNUM|NDOC==NFATT", 1, LF_REFFETTI); _rel->lfile(LF_DOC).set_curr(new TDocumento); @@ -243,16 +266,8 @@ void TEmissione::floppy() const long codabi = eff.get_long(EFF_CODABIP); const char tipocf = eff.get_char(EFF_TIPOCF); const char tipopag = eff.get_char(EFF_TIPOPAG); - TFilename ribaini; - ribaini.format("r%c%c%05ld.ini", tipocf, tipopag, codabi); // compongo il nome del tracciato - if (!ribaini.exist()) // se non esiste - ribaini.overwrite("00000", 3); // Elimino codice banca - if (!ribaini.exist()) // se non esiste - ribaini.overwrite("0", 2); // Elimino tipo pagamaneto - if (!ribaini.exist()) // se non esiste - ribaini = "riba.ini"; // utilizzo quello generico - if (!ribaini.custom_path()) // se non esiste ancora! + if (!build_ribaini_name(codabi, tipocf, tipopag, ribaini)) { cantread_box(ribaini); return; @@ -272,13 +287,16 @@ void TEmissione::floppy() if (condition) { const TRecnotype n_eff = _cur->items(); + + TString msg; + msg.format(FR("Emissione di %d effetti su file %s\ncon tracciato %s"), n_eff, RIBAFILENAME, (const char*)ribaini); if (n_eff > 0) { TString_array keys ; _trasfile->tracciati().get_keys(keys); keys.sort(); - TProgind pi(n_eff, TR("Emissione Ri.Ba. su file..."), true, true); + TProgind pi(n_eff, msg, true, true); header_rb();//intestazione flusso effetti //scandisco tutti gli effetti della distinta selezionata @@ -293,7 +311,7 @@ void TEmissione::floppy() } footer_ef(); //chiusura flusso effetti } - message_box(FR("Effetti emessi: %d"), n_eff); + message_box(msg); } else error_box(TR("Impossibile scrivere sull'unita' di destinazione")); @@ -329,6 +347,12 @@ void TEmissione::header_rb() TString16 codtab = eff.get(EFF_CODABIP); codtab << eff.get(EFF_CODCABP); + TString4 prog = eff.get(EFF_PROGBNP); + if (!real::is_null(prog)) + { + prog.right_just(2, '0'); + codtab << prog; + } const TRectype& bnp = cache().get("BNP", codtab); const bool setif = bnp.get_bool("B0"); diff --git a/ef/ef0800.cpp b/ef/ef0800.cpp index ced843803..19a92f818 100755 --- a/ef/ef0800.cpp +++ b/ef/ef0800.cpp @@ -238,7 +238,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet() char tipo_prec = rec.get_char(EFF_TIPODIST); TDate data_prec(rec.get(EFF_DATADIST)); - TString16 codabi, codcab, codval; + TString8 codabi, codcab, codprg, codval; char tipocf; bool enabled = true; int num_eff = 0; @@ -258,6 +258,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet() t->add(num_eff); t->add(codabi); t->add(codcab); + t->add(codprg); t->add(codval); t->add(tipocf); t->add(data_prec); @@ -266,13 +267,18 @@ void TContabilizzazione_effetti_app::build_dist_sheet() ndist_prec = ndist; tipo_prec = tipo; data_prec = data_dist; - enabled = TRUE; + enabled = true; num_eff = 0; } if (num_eff == 0) { codabi = rec.get(EFF_CODABIP); // Memorizza dati della prima riga codcab = rec.get(EFF_CODCABP); + codprg = rec.get(EFF_PROGBNP); + if (real::is_null(codprg)) + codprg.cut(0); + else + codprg.right_just(2, '0'); codval = rec.get(EFF_CODVAL); tipocf = rec.get_char(EFF_TIPOCF); } @@ -283,11 +289,12 @@ void TContabilizzazione_effetti_app::build_dist_sheet() TToken_string * t = new TToken_string; - t->add(" ");t->add(tipo_prec); + t->add(" "); t->add(tipo_prec); t->add(ndist_prec); t->add(num_eff); t->add(codabi); t->add(codcab); + t->add(codprg); t->add(rec.get(EFF_CODVAL)); t->add(rec.get(EFF_TIPOCF)); t->add(rec.get(EFF_DATADIST)); @@ -357,8 +364,8 @@ bool TContabilizzazione_effetti_app::create() _msk = new TContabilizzazione_mask(); _distinta = new TDistinta; _movimento = new TMovimentoPN; - _dist_sheet = new TArray_sheet(-1, -1, -4, -4, TR("Selezione distinte"), - HR("@1|Tipo|Numero distinta@R|Numero effetti@R|ABI@5|CAB@5|Valuta|C/F|Data Dist.")); + _dist_sheet = new TArray_sheet(-1, -1, -4, -6, TR("Selezione distinte"), + HR("@1|Tipo|Numero distinta@R|Numero effetti@R|ABI@5|CAB@5|Prg.|Valuta|C/F|Data Dist.")); _part_array = new TPartite_array; return TSkeleton_application::create(); } @@ -541,15 +548,13 @@ void TContabilizzazione_effetti_app::sum_cg_row(const TRectype& reff, TArray& cu // setta i valori per la riga cliente TRectype& c_rec = (TRectype&)customers[customers.last()]; - const real c_imp = imp + c_rec.get_real(RMV_IMPORTO); - c_rec.put(RMV_IMPORTO, c_imp); + c_rec.add(RMV_IMPORTO, imp); // setta i valori per la riga banca TString16 key; key.format("%3d%3d%6ld",_banca.gruppo(),_banca.conto(),_banca.sottoconto()); TRectype& b_rec = (TRectype&)banks.find(key); - const real b_imp = b_rec.get_real(RMV_IMPORTO) + imp; // aggiorna l'importo per questa banca - b_rec.put(RMV_IMPORTO,b_imp); + b_rec.add(RMV_IMPORTO, imp); // aggiorna l'importo per questa banca } @@ -566,7 +571,7 @@ void TContabilizzazione_effetti_app::join_row(const TRectype& row) bool TContabilizzazione_effetti_app::add_spese_rows(const real& spese) { if (spese.is_zero()) - return FALSE; + return false; TRectype& row_spese = _movimento->cg(-1); TRectype& row_banca = _movimento->cg(-1); @@ -580,7 +585,7 @@ bool TContabilizzazione_effetti_app::add_spese_rows(const real& spese) row_spese.put(RMV_SEZIONE, sez_spese); row_spese.put(RMV_IMPORTO, spese); conto_spese.put(row_spese); - _banca.put(row_spese, TRUE); + _banca.put(row_spese, true); row_spese.put(RMV_DESCR, _caus->desc_agg(11)); if (_sc_enabled) row_spese.put(RMV_ROWTYPE, 'G'); @@ -590,7 +595,7 @@ bool TContabilizzazione_effetti_app::add_spese_rows(const real& spese) row_banca.put(RMV_SEZIONE, sez_banca); row_banca.put(RMV_IMPORTO, spese); _banca.put(row_banca); - conto_spese.put(row_banca, TRUE); + conto_spese.put(row_banca, true); if (_sc_enabled) row_banca.put(RMV_ROWTYPE, 'L'); @@ -664,7 +669,7 @@ void TContabilizzazione_effetti_app::join_rows(TArray& customers, TAssoc_array& _trandiffcam.put(rec); _trandiffcam.put(rec, TRUE); riga.put(RMV_SEZIONE, diffcam.sezione() == 'D' ? 'A' : 'D'); - _trandiffcam.put(riga); _trandiffcam.put(riga, TRUE); + _trandiffcam.put(riga); _trandiffcam.put(riga, true); riga.zero(RMV_ROWTYPE); join_row(riga); @@ -690,7 +695,7 @@ error_type TContabilizzazione_effetti_app::search_clifo_bill(char tipo, const lo { _error = no_error; - TString16 key; key.format("%c|%ld", tipo, codcf); + TString8 key; key.format("%c|%ld", tipo, codcf); const TRectype & clifo = cache().get(LF_CLIFO, key); if (clifo.empty()) @@ -714,19 +719,24 @@ error_type TContabilizzazione_effetti_app::search_bank_counter_bill(int tipopag) // La banca di presentazione effetti e' una unica per tutta la distinta // e non puo' essere vuota _error = no_error; - if (tipopag == 0) // cerca sulla tabella e poi sulla 2a riga di causale + if (tipopag <= 0) // cerca sulla tabella e poi sulla 2a riga di causale { _banca.set(0,0,0); // resetta il conto... - + TString16 codtab(_distinta->abip()); codtab << _distinta->cabp(); - codtab << _distinta->progbnp(); + TString4 prog = _distinta->progbnp(); + if (!real::is_null(prog)) + { + prog.right_just(2, '0'); + codtab << prog; + } const TRectype& bnp = cache().get("BNP", codtab); if (!bnp.empty()) { - const char* fg; - const char* fc; - const char* fs; + const char* fg = NULL; + const char* fc = NULL; + const char* fs = NULL; const char tipodist = _distinta->tipodist(); switch (tipodist) { @@ -807,7 +817,7 @@ void TContabilizzazione_effetti_app::compile_head_mov() const long numreg = mov.get_long(MOV_NUMREG)+1; // Calcola il numero di registrazione const TDate datadist(_distinta->data_dist()); const TDate datacam(_distinta->data_cam()); - const TString80 codval(_distinta->codval()); + const TString4 codval(_distinta->codval()); const real cambio(_distinta->cambio()); const long ndist = _distinta->ndist(); @@ -852,7 +862,7 @@ void TContabilizzazione_effetti_app::compile_head_mov() mov.put(MOV_CODCAUS,_caus->codice()); mov.put(MOV_TIPOMOV,_caus->tipomov()); - if (codval.not_empty()) + if (is_true_value(codval)) { mov.put(MOV_CODVAL, codval); mov.put(MOV_DATACAM, _distinta->data_cam()); @@ -1045,7 +1055,7 @@ void TContabilizzazione_effetti_app::compile_saldac(const TEffetto& eff, char old_ap, new_ap; TImporto old_abb, new_abb, old_diffcam, new_diffcam; - const TString16 codval = eff.get(EFF_CODVAL); + const TString4 codval = eff.get(EFF_CODVAL); const TDate datacam = eff.get(EFF_DATACAMBIO); real cambio = eff.get(EFF_CAMBIO); exchange_type et = eff.get_bool(EFF_CONTROEURO) ? _exchange_contro : _exchange_base; diff --git a/ef/ef0800a.uml b/ef/ef0800a.uml index 9e5c934a6..c492ae998 100755 --- a/ef/ef0800a.uml +++ b/ef/ef0800a.uml @@ -1,7 +1,7 @@ #include "ef0800a.h" TOOLBAR "topbar" 0 0 0 2 -#include +#include ENDPAGE PAGE "Contabilizzazione effetti" 0 2 0 0 diff --git a/ef/ef0a00.cpp b/ef/ef0a00.cpp index 2593f23be..7b4016120 100755 --- a/ef/ef0a00.cpp +++ b/ef/ef0a00.cpp @@ -726,7 +726,7 @@ void TPE_mask::save_rate() const TRectype& reff = eff.row_r(i); if (reff.get_char(REFF_ACCSAL) == 'Z') { - eff.destroy_row_r(i, TRUE); + eff.destroy_row_r(i, true); } else { @@ -740,7 +740,7 @@ void TPE_mask::save_rate() if (err == NOERR) err = eff.remove(f); if (err == NOERR) - distinta.righe().destroy(rd, TRUE); + distinta.righe().destroy(rd, true); else { TString msg;