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
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);
}
}

View File

@ -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");

View File

@ -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;

View File

@ -1,7 +1,7 @@
#include "ef0800a.h"
TOOLBAR "topbar" 0 0 0 2
#include <stdbar.h>
#include <elabar.h>
ENDPAGE
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);
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;