Patch level :2.2 394

Files correlati     :ca3.exe,ca3700.msk
Ricompilazione Demo : [ ]
Commento            :sistemato problema dei campi sovrapposti nella maschera dei conti nel caso si usi il piano dei conti analitico;perfezionata la definizione di piano dei conti riclassificato (da migliorare ulteriormente in seguito); aggiunto un warning non bloccante nel caso si presentino righe documento prive di relativa testata (archivi incasinati di ruffo)


git-svn-id: svn://10.65.10.50/trunk@13875 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-04-04 12:45:21 +00:00
parent 7acca48b02
commit cafac20e45
2 changed files with 80 additions and 83 deletions

View File

@ -145,20 +145,21 @@ TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA); const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);
const int pconana_levels = pconana_info.levels(); const int pconana_levels = pconana_info.levels();
int pconana_prefix = cfg.get_int("PdcPrefix"); int prefix = cfg.get_int("PdcPrefix");
if (pconana_prefix >= pconana_levels) if (prefix >= pconana_levels)
pconana_prefix = pconana_levels-1; prefix = pconana_levels-1;
//setta nel campo F_PIANO il tipo di piano dei conti usato in base alla configurazione..
//..e disabilita il campo (non si puo' cambiare la configurazione in una stampa!!)
disable(F_PIANO); disable(F_PIANO);
set(F_PIANO, use_pdcc ? "C" : "A"); set(F_PIANO, use_pdcc ? "C" : "A");
// Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile // Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile
const int pref = cfg.get_int("PdcPrefix"); if (use_pdcc && prefix > 0)
if (use_pdcc && pref > 0)
{ {
const TMultilevel_code_info& info = ca_multilevel_code_info(LF_PCONANA); const TMultilevel_code_info& info = ca_multilevel_code_info(LF_PCONANA);
const int levels = info.levels(); const int levels = info.levels();
if (levels >= 2 && pref < levels && esistono_riclassificazioni()) if (levels >= 2 && prefix < levels && esistono_riclassificazioni())
{ {
enable(F_PIANO); enable(F_PIANO);
ca_create_fields(*this, 1, LF_PCONANA, 2, 4, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO); ca_create_fields(*this, 1, LF_PCONANA, 2, 4, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO);
@ -166,7 +167,7 @@ TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
// Nascondi i campi che non fanno parte del prefisso // Nascondi i campi che non fanno parte del prefisso
for (int i = 0; i < levels; i++) for (int i = 0; i < levels; i++)
{ {
if (i < pref) if (i < prefix)
{ {
field(F_PRE1 + i).check_type(CHECK_REQUIRED); field(F_PRE1 + i).check_type(CHECK_REQUIRED);
field(F_PRE1 + i).set_group(6); field(F_PRE1 + i).set_group(6);
@ -233,7 +234,7 @@ class TPrint_rendiconto_ca_recordset : public TISAM_recordset
{ {
TExternisamfile* _tmp; TExternisamfile* _tmp;
bool _riclassificato; bool _riclassificato;
TString _prefix, _da_conto_riclas, _a_conto_riclas; TString _prefix;
protected: protected:
int _anno; int _anno;
@ -279,18 +280,11 @@ void TPrint_rendiconto_ca_recordset::set_custom_filter(TCursor& cur) const
TRectype darec(cur.curr()), arec(cur.curr()); //curr perchè è il file externisamfile TRectype darec(cur.curr()), arec(cur.curr()); //curr perchè è il file externisamfile
darec.zero(); darec.zero();
arec.zero(); arec.zero();
if (!_riclassificato)
{
if (_daconto.not_empty()) if (_daconto.not_empty())
darec.put("CONTO", _daconto); darec.put("CONTO", _daconto);
if (_aconto.not_empty()) if (_aconto.not_empty())
arec.put("CONTO", _aconto); arec.put("CONTO", _aconto);
}
else
{
darec.put("CONTO", _da_conto_riclas);
arec.put("CONTO", _a_conto_riclas);
}
//filtro sulla data(non avendo anche codnum non ho la chiave completa per mettere la data nella setregion) //filtro sulla data(non avendo anche codnum non ho la chiave completa per mettere la data nella setregion)
TString filtro; TString filtro;
@ -374,19 +368,13 @@ const TVariant& TPrint_rendiconto_ca_recordset::get(const char* column_name) con
if (strcmp(column_name, "#DACONTO") == 0) if (strcmp(column_name, "#DACONTO") == 0)
{ {
TVariant& var = get_tmp_var(); TVariant& var = get_tmp_var();
if (!_riclassificato)
var = _daconto; var = _daconto;
else
var = _da_conto_riclas;
return var; return var;
} }
if (strcmp(column_name, "#ACONTO") == 0) if (strcmp(column_name, "#ACONTO") == 0)
{ {
TVariant& var = get_tmp_var(); TVariant& var = get_tmp_var();
if (!_riclassificato)
var = _aconto; var = _aconto;
else
var = _a_conto_riclas;
return var; return var;
} }
//cerca l'indicatore di bilancio del conto;utilizzato per stabilire il campo ove sommare.. //cerca l'indicatore di bilancio del conto;utilizzato per stabilire il campo ove sommare..
@ -482,8 +470,8 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(const TRectype& rmovana, const
//ATTENZIONE! Se era stata operata una selezione sui conti riclassificati nella maschera //ATTENZIONE! Se era stata operata una selezione sui conti riclassificati nella maschera
//ed il conto riclassificato attuale non ricade nell'intervallo selezionato il programma //ed il conto riclassificato attuale non ricade nell'intervallo selezionato il programma
//non deve aggiungere il record al file!! //non deve aggiungere il record al file!!
if ((_da_conto_riclas.not_empty() && conto_riclassificato < _da_conto_riclas) || if ((_daconto.not_empty() && conto_riclassificato < _daconto) ||
(_a_conto_riclas.not_empty() && conto_riclassificato.compare(_a_conto_riclas, _a_conto_riclas.len()) > 0)) (_aconto.not_empty() && conto_riclassificato.compare(_aconto, _aconto.len()) > 0))
return; return;
} //if(_riclassificato) } //if(_riclassificato)
@ -866,7 +854,11 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(const TPrint_rendiconto_
if (pi.iscancelled()) if (pi.iscancelled())
break; break;
//La riga esaminata deve avere una testata valida!!!!Se la testata non esiste va saltata..
//..la riga
const TRectype& curr_doc = cur_rdoc.curr(LF_DOC); const TRectype& curr_doc = cur_rdoc.curr(LF_DOC);
if (!curr_doc.empty())
{
//controlla se il documento cui appartiene la rigadoc e' stato contabilizzato; //controlla se il documento cui appartiene la rigadoc e' stato contabilizzato;
//se e' stato contabilizzato lo salta in quanto la riga documento apparira' attraverso le righe //se e' stato contabilizzato lo salta in quanto la riga documento apparira' attraverso le righe
//dei movimenti di analitica //dei movimenti di analitica
@ -906,6 +898,19 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(const TPrint_rendiconto_
scrive_riga(rmov, mov, &doc); scrive_riga(rmov, mov, &doc);
} //for int j... } //for int j...
} //if numregca } //if numregca
} //if !curr_doc.empty()
//Ha trovato una riga senza testata! non puo' considerarla ma avverte l'utente del problema
else
{
const TRectype& bad_row = cur_rdoc.curr();
const TString4 bad_codnum = bad_row.get(RDOC_CODNUM);
const int bad_anno = bad_row.get_int(RDOC_ANNO);
const long bad_ndoc = bad_row.get_long(RDOC_NDOC);
const int bad_nriga = bad_row.get_int(RDOC_NRIGA);
TString error_string;
error_string << bad_codnum << "|" << bad_anno << "|D|" << bad_ndoc << "|" << bad_nriga;
warning_box("Riga documento %s priva di testata!", (const char*)error_string);
}
} //for cur_rdoc.. } //for cur_rdoc..
} //if rdoc_items } //if rdoc_items
@ -980,27 +985,18 @@ void TPrint_rendiconto_ca_recordset::set_filter(const TPrint_rendiconto_ca_mask&
//si utilizza la riclassificazione dei conti? //si utilizza la riclassificazione dei conti?
if (msk.get(F_PIANO) == "A") if (msk.get(F_PIANO) == "A")
_riclassificato = true; {
TLocalisamfile panapdc(LF_PANAPDC);
_riclassificato = panapdc.first() == NOERR;
}
else else
_riclassificato = false; _riclassificato = false;
//conti non riclassificati
if (!_riclassificato)
{
for (int i = 0; i < 4 && msk.id2pos(dlg_da+i) > 0; i++) for (int i = 0; i < 4 && msk.id2pos(dlg_da+i) > 0; i++)
{ {
_daconto << msk.get(dlg_da+i); _daconto << msk.get(dlg_da+i);
_aconto << msk.get(dlg_al+i); _aconto << msk.get(dlg_al+i);
} }
}
else //conti riclassificati
{
for (int i = 0; i < 4 && msk.id2pos(dlg_da+i) > 0; i++)
{
_da_conto_riclas << msk.get(dlg_da+i);
_a_conto_riclas << msk.get(dlg_al+i);
}
}
_dadata = msk.get_date(F_DATAINI); _dadata = msk.get_date(F_DATAINI);
_adata = msk.get_date(F_DATAFIN); _adata = msk.get_date(F_DATAFIN);

View File

@ -109,6 +109,7 @@ BEGIN
MESSAGE HIDE,5@|SHOW,6@ MESSAGE HIDE,5@|SHOW,6@
ITEM "C|Contabile" ITEM "C|Contabile"
MESSAGE HIDE,6@|SHOW,5@ MESSAGE HIDE,6@|SHOW,5@
FLAGS "G"
END END
GROUPBOX F_PRE0 76 6 GROUPBOX F_PRE0 76 6