Patch level : 10.0

Files correlati     : ef0.exe ef0800a.msk
Ricompilazione Demo : [ ]
Commento            :
Corretta gestione campo progressivo per banca di presentazione in programma gestione disitinte / effetti


git-svn-id: svn://10.65.10.50/trunk@20374 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-04-26 13:18:35 +00:00
parent c6e659655d
commit 873b32e0fc
5 changed files with 86 additions and 45 deletions

View File

@ -171,12 +171,18 @@ void TVariazione_distinte::aggiorna()
// una TToken_string che servirà per passarli alla write della distinta // una TToken_string che servirà per passarli alla write della distinta
TToken_string* TVariazione_distinte::common_f(const TMask& m, TToken_string& datidist) TToken_string* TVariazione_distinte::common_f(const TMask& m, TToken_string& datidist)
{ {
char tipodist = m.get(F_TIPODIST)[0];// prendo i dati const char tipodist = m.get(F_TIPODIST)[0]; // prendo i dati
long ndist = m.get_long(F_NUMBER); // identificatvi della const long ndist = m.get_long(F_NUMBER); // identificatvi della
TDate datadist = (TDate)m.get(F_DATA);// distinta const TDate datadist = (TDate)m.get(F_DATA); // distinta
long codabi = m.get_long(F_CODABIP); // dalla maschera const TString& codabi = m.get(F_CODABIP); // dalla maschera
long codcab = m.get_long(F_CODCABP); const TString& codcab = m.get(F_CODCABP);
long prog = m.get_long(F_PROG);
TString4 progbnp = m.get(F_PROG);
if (real::is_null(progbnp))
progbnp.cut(0);
else
progbnp.right_just(2, '0');
m.autosave(*_rel); m.autosave(*_rel);
datidist.add(tipodist); // inserisco i dati nella 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(datadist);
datidist.add(codabi); datidist.add(codabi);
datidist.add(codcab); datidist.add(codcab);
datidist.add(prog); datidist.add(progbnp);
return &datidist; return &datidist;
} }
@ -332,6 +338,7 @@ int TVariazione_distinte::rewrite(const TMask& m)
eff.zero(EFF_NRIGADIST); eff.zero(EFF_NRIGADIST);
eff.zero(EFF_CODABIP); eff.zero(EFF_CODABIP);
eff.zero(EFF_CODCABP); eff.zero(EFF_CODCABP);
eff.zero(EFF_PROGBNP);
eff.rewrite(file); eff.rewrite(file);
} }
} }

View File

@ -21,6 +21,29 @@ class TRiba_file;
#define RIBAFILENAME "ribael.dat" #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 // // 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("%BAN", "CODTAB=CODABI+CODCAB", 1, 0, 402);
_rel->add(LF_COMUNI, "STATO==STATOCF|COM==COMCF",1,LF_CLIFO); _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(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->add(LF_DOC, "PROVV==PROVV|ANNO==ANNODOC|CODNUM==CODNUM|NDOC==NFATT", 1, LF_REFFETTI);
_rel->lfile(LF_DOC).set_curr(new TDocumento); _rel->lfile(LF_DOC).set_curr(new TDocumento);
@ -243,16 +266,8 @@ void TEmissione::floppy()
const long codabi = eff.get_long(EFF_CODABIP); const long codabi = eff.get_long(EFF_CODABIP);
const char tipocf = eff.get_char(EFF_TIPOCF); const char tipocf = eff.get_char(EFF_TIPOCF);
const char tipopag = eff.get_char(EFF_TIPOPAG); const char tipopag = eff.get_char(EFF_TIPOPAG);
TFilename ribaini; TFilename ribaini;
ribaini.format("r%c%c%05ld.ini", tipocf, tipopag, codabi); // compongo il nome del tracciato if (!build_ribaini_name(codabi, tipocf, tipopag, ribaini))
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!
{ {
cantread_box(ribaini); cantread_box(ribaini);
return; return;
@ -272,13 +287,16 @@ void TEmissione::floppy()
if (condition) if (condition)
{ {
const TRecnotype n_eff = _cur->items(); 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) if (n_eff > 0)
{ {
TString_array keys ; TString_array keys ;
_trasfile->tracciati().get_keys(keys); _trasfile->tracciati().get_keys(keys);
keys.sort(); 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 header_rb();//intestazione flusso effetti
//scandisco tutti gli effetti della distinta selezionata //scandisco tutti gli effetti della distinta selezionata
@ -293,7 +311,7 @@ void TEmissione::floppy()
} }
footer_ef(); //chiusura flusso effetti footer_ef(); //chiusura flusso effetti
} }
message_box(FR("Effetti emessi: %d"), n_eff); message_box(msg);
} }
else else
error_box(TR("Impossibile scrivere sull'unita' di destinazione")); error_box(TR("Impossibile scrivere sull'unita' di destinazione"));
@ -329,6 +347,12 @@ void TEmissione::header_rb()
TString16 codtab = eff.get(EFF_CODABIP); TString16 codtab = eff.get(EFF_CODABIP);
codtab << eff.get(EFF_CODCABP); 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 TRectype& bnp = cache().get("BNP", codtab);
const bool setif = bnp.get_bool("B0"); const bool setif = bnp.get_bool("B0");

View File

@ -238,7 +238,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
char tipo_prec = rec.get_char(EFF_TIPODIST); char tipo_prec = rec.get_char(EFF_TIPODIST);
TDate data_prec(rec.get(EFF_DATADIST)); TDate data_prec(rec.get(EFF_DATADIST));
TString16 codabi, codcab, codval; TString8 codabi, codcab, codprg, codval;
char tipocf; char tipocf;
bool enabled = true; bool enabled = true;
int num_eff = 0; int num_eff = 0;
@ -258,6 +258,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
t->add(num_eff); t->add(num_eff);
t->add(codabi); t->add(codabi);
t->add(codcab); t->add(codcab);
t->add(codprg);
t->add(codval); t->add(codval);
t->add(tipocf); t->add(tipocf);
t->add(data_prec); t->add(data_prec);
@ -266,13 +267,18 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
ndist_prec = ndist; ndist_prec = ndist;
tipo_prec = tipo; tipo_prec = tipo;
data_prec = data_dist; data_prec = data_dist;
enabled = TRUE; enabled = true;
num_eff = 0; num_eff = 0;
} }
if (num_eff == 0) if (num_eff == 0)
{ {
codabi = rec.get(EFF_CODABIP); // Memorizza dati della prima riga codabi = rec.get(EFF_CODABIP); // Memorizza dati della prima riga
codcab = rec.get(EFF_CODCABP); 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); codval = rec.get(EFF_CODVAL);
tipocf = rec.get_char(EFF_TIPOCF); tipocf = rec.get_char(EFF_TIPOCF);
} }
@ -288,6 +294,7 @@ void TContabilizzazione_effetti_app::build_dist_sheet()
t->add(num_eff); t->add(num_eff);
t->add(codabi); t->add(codabi);
t->add(codcab); t->add(codcab);
t->add(codprg);
t->add(rec.get(EFF_CODVAL)); t->add(rec.get(EFF_CODVAL));
t->add(rec.get(EFF_TIPOCF)); t->add(rec.get(EFF_TIPOCF));
t->add(rec.get(EFF_DATADIST)); t->add(rec.get(EFF_DATADIST));
@ -357,8 +364,8 @@ bool TContabilizzazione_effetti_app::create()
_msk = new TContabilizzazione_mask(); _msk = new TContabilizzazione_mask();
_distinta = new TDistinta; _distinta = new TDistinta;
_movimento = new TMovimentoPN; _movimento = new TMovimentoPN;
_dist_sheet = new TArray_sheet(-1, -1, -4, -4, TR("Selezione distinte"), _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|Valuta|C/F|Data Dist.")); HR("@1|Tipo|Numero distinta@R|Numero effetti@R|ABI@5|CAB@5|Prg.|Valuta|C/F|Data Dist."));
_part_array = new TPartite_array; _part_array = new TPartite_array;
return TSkeleton_application::create(); 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 // setta i valori per la riga cliente
TRectype& c_rec = (TRectype&)customers[customers.last()]; TRectype& c_rec = (TRectype&)customers[customers.last()];
const real c_imp = imp + c_rec.get_real(RMV_IMPORTO); c_rec.add(RMV_IMPORTO, imp);
c_rec.put(RMV_IMPORTO, c_imp);
// setta i valori per la riga banca // setta i valori per la riga banca
TString16 key; TString16 key;
key.format("%3d%3d%6ld",_banca.gruppo(),_banca.conto(),_banca.sottoconto()); key.format("%3d%3d%6ld",_banca.gruppo(),_banca.conto(),_banca.sottoconto());
TRectype& b_rec = (TRectype&)banks.find(key); 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.add(RMV_IMPORTO, imp); // aggiorna l'importo per questa banca
b_rec.put(RMV_IMPORTO,b_imp);
} }
@ -566,7 +571,7 @@ void TContabilizzazione_effetti_app::join_row(const TRectype& row)
bool TContabilizzazione_effetti_app::add_spese_rows(const real& spese) bool TContabilizzazione_effetti_app::add_spese_rows(const real& spese)
{ {
if (spese.is_zero()) if (spese.is_zero())
return FALSE; return false;
TRectype& row_spese = _movimento->cg(-1); TRectype& row_spese = _movimento->cg(-1);
TRectype& row_banca = _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_SEZIONE, sez_spese);
row_spese.put(RMV_IMPORTO, spese); row_spese.put(RMV_IMPORTO, spese);
conto_spese.put(row_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)); row_spese.put(RMV_DESCR, _caus->desc_agg(11));
if (_sc_enabled) if (_sc_enabled)
row_spese.put(RMV_ROWTYPE, 'G'); 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_SEZIONE, sez_banca);
row_banca.put(RMV_IMPORTO, spese); row_banca.put(RMV_IMPORTO, spese);
_banca.put(row_banca); _banca.put(row_banca);
conto_spese.put(row_banca, TRUE); conto_spese.put(row_banca, true);
if (_sc_enabled) if (_sc_enabled)
row_banca.put(RMV_ROWTYPE, 'L'); 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); _trandiffcam.put(rec); _trandiffcam.put(rec, TRUE);
riga.put(RMV_SEZIONE, diffcam.sezione() == 'D' ? 'A' : 'D'); 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); riga.zero(RMV_ROWTYPE);
join_row(riga); join_row(riga);
@ -690,7 +695,7 @@ error_type TContabilizzazione_effetti_app::search_clifo_bill(char tipo, const lo
{ {
_error = no_error; _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); const TRectype & clifo = cache().get(LF_CLIFO, key);
if (clifo.empty()) 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 // La banca di presentazione effetti e' una unica per tutta la distinta
// e non puo' essere vuota // e non puo' essere vuota
_error = no_error; _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... _banca.set(0,0,0); // resetta il conto...
TString16 codtab(_distinta->abip()); TString16 codtab(_distinta->abip());
codtab << _distinta->cabp(); 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); const TRectype& bnp = cache().get("BNP", codtab);
if (!bnp.empty()) if (!bnp.empty())
{ {
const char* fg; const char* fg = NULL;
const char* fc; const char* fc = NULL;
const char* fs; const char* fs = NULL;
const char tipodist = _distinta->tipodist(); const char tipodist = _distinta->tipodist();
switch (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 long numreg = mov.get_long(MOV_NUMREG)+1; // Calcola il numero di registrazione
const TDate datadist(_distinta->data_dist()); const TDate datadist(_distinta->data_dist());
const TDate datacam(_distinta->data_cam()); const TDate datacam(_distinta->data_cam());
const TString80 codval(_distinta->codval()); const TString4 codval(_distinta->codval());
const real cambio(_distinta->cambio()); const real cambio(_distinta->cambio());
const long ndist = _distinta->ndist(); 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_CODCAUS,_caus->codice());
mov.put(MOV_TIPOMOV,_caus->tipomov()); mov.put(MOV_TIPOMOV,_caus->tipomov());
if (codval.not_empty()) if (is_true_value(codval))
{ {
mov.put(MOV_CODVAL, codval); mov.put(MOV_CODVAL, codval);
mov.put(MOV_DATACAM, _distinta->data_cam()); 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; char old_ap, new_ap;
TImporto old_abb, new_abb, old_diffcam, new_diffcam; 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); const TDate datacam = eff.get(EFF_DATACAMBIO);
real cambio = eff.get(EFF_CAMBIO); real cambio = eff.get(EFF_CAMBIO);
exchange_type et = eff.get_bool(EFF_CONTROEURO) ? _exchange_contro : _exchange_base; exchange_type et = eff.get_bool(EFF_CONTROEURO) ? _exchange_contro : _exchange_base;

View File

@ -1,7 +1,7 @@
#include "ef0800a.h" #include "ef0800a.h"
TOOLBAR "topbar" 0 0 0 2 TOOLBAR "topbar" 0 0 0 2
#include <stdbar.h> #include <elabar.h>
ENDPAGE ENDPAGE
PAGE "Contabilizzazione effetti" 0 2 0 0 PAGE "Contabilizzazione effetti" 0 2 0 0

View File

@ -726,7 +726,7 @@ void TPE_mask::save_rate()
const TRectype& reff = eff.row_r(i); const TRectype& reff = eff.row_r(i);
if (reff.get_char(REFF_ACCSAL) == 'Z') if (reff.get_char(REFF_ACCSAL) == 'Z')
{ {
eff.destroy_row_r(i, TRUE); eff.destroy_row_r(i, true);
} }
else else
{ {
@ -740,7 +740,7 @@ void TPE_mask::save_rate()
if (err == NOERR) if (err == NOERR)
err = eff.remove(f); err = eff.remove(f);
if (err == NOERR) if (err == NOERR)
distinta.righe().destroy(rd, TRUE); distinta.righe().destroy(rd, true);
else else
{ {
TString msg; TString msg;