Errore MI0825

git-svn-id: svn://10.65.10.50/trunk@1598 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-07-14 09:24:53 +00:00
parent 397f941fa3
commit 7d3b8db010

View File

@ -22,11 +22,10 @@ typedef enum { no_descr, acquisto, vendita, incasso_pagamento,
class TCaus_app : public TRelation_application
{
TRelation* _rel; // Relazione principale
TLocalisamfile * _rcaus;
TTable * _dpn;
TMask* _msk; // Maschera principale
// Bitarray delle righe lette da file all'inizio.
// Quando leggo dal file la riga n setto il bit n.
TBit_array _righe_gia_presenti;
int _filtro; // tipo di filtro su tab. reg.
// 1 vendite senza corrisp
@ -35,10 +34,12 @@ typedef enum { no_descr, acquisto, vendita, incasso_pagamento,
// 4 sia acquisti che vendite
TSheet_field* _sheet;
TRecord_array * _rcaus_rec;
// Parametri ditta
bool _valuta, _saldaconto;
int _anno_iva;
int _anno_iva;
tipo_descr _last_descr;
protected:
@ -58,9 +59,6 @@ protected:
static bool m770_hndl (TMask_field& f, KEY k);
static bool ss_notify (int r, KEY k);
void togli_dal_file(const TString&);
void read_rcaus(TMask&);
bool fill_sheet(TMask&);
void set_descr (int numrig, const char* descr);
@ -87,9 +85,9 @@ protected:
virtual void init_modify_mode(TMask&);
virtual int rewrite(const TMask& m);
virtual int write(const TMask& m);
int re_write (const TMask& m, bool rewrite);
virtual int read(TMask& m);
// int cancella(long items);
void load_rcaus(TMask& m);
int re_write(const TMask& m, bool re);
public:
tipo_descr _tipo_des; // Il tipo di causale corrente
@ -106,7 +104,7 @@ public:
bool saldaconto() const { return _saldaconto; }
int anno_iva() const { return _anno_iva; }
TCaus_app() {}
TCaus_app() : _last_descr(no_descr) {}
};
HIDDEN TCaus_app& app() { return (TCaus_app&) main_app(); }
@ -149,7 +147,7 @@ bool TCaus_app::filtra_reg(const TRelation * r)
void TCaus_app::clear(int riga)
{
TToken_string& r = ss().row(riga);
r = r.get(0);
r = r.get(0);
ss().force_update(riga);
}
@ -165,7 +163,11 @@ void TCaus_app::carica_righe_libere(int from)
if (from < 0) from = ss().items();
for (int i = from; i < 20; i++)
set_descr(i, "");
ss().force_update();
if (_last_descr != _tipo_des)
{
ss().force_update();
_last_descr = _tipo_des;
}
}
// Cancella tutte le descrizioni delle righe
@ -179,8 +181,8 @@ void TCaus_app::clear_descr()
TToken_string& r = (TToken_string&)a[i];
r.add("", 0);
}
carica_righe_libere();
_tipo_des = no_descr;
carica_righe_libere();
}
}
@ -198,8 +200,8 @@ void TCaus_app::causale_vendite()
set_descr(i++, "C Imp. non soggetti");
set_descr(i++, "C Ritenute fiscali");
set_descr(i++, "C Ritenute soc.");
carica_righe_libere(i);
_tipo_des = vendita;
carica_righe_libere(i);
}
}
@ -218,8 +220,8 @@ void TCaus_app::causale_acquisti()
set_descr(i++, "C Imp. non soggetti");
set_descr(i++, "C Ritenute fiscali");
set_descr(i++, "C Ritenute soc.");
carica_righe_libere(i);
_tipo_des = acquisto;
carica_righe_libere(i);
}
}
@ -231,8 +233,8 @@ void TCaus_app::causale_ritenute()
set_descr (i++, "Costo");
set_descr (i++, "Cassa/banca");
set_descr (i++, "Erario");
carica_righe_libere(i);
_tipo_des = ritenuta_occas;
carica_righe_libere(i);
}
}
@ -256,8 +258,8 @@ void TCaus_app::causale_inc_pag()
set_descr ( i++, "C Ritenute fiscali");
if (_tipo_des == incasso_pagamento_gesval)
set_descr (i++, "C Differenza cambio");
carica_righe_libere(i);
_tipo_des = tipo_des;
carica_righe_libere(i);
}
}
@ -668,15 +670,22 @@ void TCaus_app::compila_array(const TString& tpd, int tpm, int tpr, int m770)
///////////////////////////////////////////////////////////
int TCaus_app::read(TMask& m)
{
m.autoload(_rel);
read_rcaus(m);
fill_sheet(m);
{
int err = TRelation_application::read(m);
if (err == NOERR)
{
TRectype r = _rcaus->curr();
r.zero();
r.put(RCA_CODCAUS, m.get(F_COD_CAUS));
_rcaus_rec->read(r);
load_rcaus(m);
fill_sheet(m);
const TString16 tpd = m.get(F_TIPO_DOC);
calc_filter(tpd);
return NOERR;
const TString16 tpd = m.get(F_TIPO_DOC);
calc_filter(tpd);
}
return err;
}
void TCaus_app::add_riga(int numrig, char sz, TConto& tc, const TString& d, const TString& da)
@ -690,45 +699,33 @@ void TCaus_app::add_riga(int numrig, char sz, TConto& tc, const TString& d, cons
riga.add(da);
}
void TCaus_app::read_rcaus(TMask& m)
void TCaus_app::load_rcaus(TMask& m)
{
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
TTable dpn("%DPN");
_rel->update(); // chiamo position_rels()
const TString16 cod(_rel->lfile().get(RCA_CODCAUS));
TString16 d;
TString80 da;
const int last = _rcaus_rec->last_row();
_righe_gia_presenti.reset();
rcaus.zero();
rcaus.put(RCA_CODCAUS, cod);
for (int err = rcaus.read(_isgteq);
err == NOERR && rcaus.get(RCA_CODCAUS) == cod;
err = rcaus.next())
{
const numrig = rcaus.get_int(RCA_NRIGA);
CHECK(numrig > 0, "Causale con numero riga nullo");
const char sz = rcaus.get_char(RCA_SEZIONE);
const char cf = rcaus.get_char(RCA_TIPOCF);
const int g = rcaus.get_int(RCA_GRUPPO);
const int c = rcaus.get_int(RCA_CONTO);
const long s = rcaus.get_long(RCA_SOTTOCONTO);
d = rcaus.get(RCA_CODDESC);
for (int i = 1; i <= last; i++)
{
TRectype & r = _rcaus_rec->row(i, TRUE);
const char sz = r.get_char(RCA_SEZIONE);
const char cf = r.get_char(RCA_TIPOCF);
const int g = r.get_int(RCA_GRUPPO);
const int c = r.get_int(RCA_CONTO);
const long s = r.get_long(RCA_SOTTOCONTO);
d = r.get(RCA_CODDESC);
if (d.not_empty())
{
dpn.put("CODTAB", d);
dpn.read() ;
da = dpn.get("S0");
_dpn->put("CODTAB", d);
_dpn->read() ;
da = _dpn->get("S0");
} else da.cut(0);
TConto tc(g,c,s,cf);
add_riga(numrig-1, sz, tc, d, da);
add_riga(i-1, sz, tc, d, da);
_righe_gia_presenti.set(numrig);
}
}
@ -756,113 +753,58 @@ bool TCaus_app::fill_sheet(TMask& m)
return TRUE;
}
void TCaus_app::togli_dal_file(const TString& cau)
{
long i;
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
long last = _righe_gia_presenti.last_one();
long start = _righe_gia_presenti.first_one();
for (i=start; i<=last; i++)
{
if (_righe_gia_presenti[i])
{
rcaus.zero();
rcaus.put(RCA_CODCAUS,cau);
rcaus.put(RCA_NRIGA, i);
rcaus.remove();
_righe_gia_presenti.reset(i);
}
}
}
int TCaus_app::write(const TMask& m)
{
return re_write(m, FALSE);
int err = TRelation_application::write(m);
if (err == NOERR)
err = re_write(m, FALSE);
return err;
}
int TCaus_app::rewrite(const TMask& m)
{
return re_write(m, TRUE);
int err = re_write(m, TRUE);
int err1 = TRelation_application::rewrite(m);
return err == NOERR ? err1 : err;
}
int TCaus_app::re_write(const TMask& m, bool re)
{
const TString16 codcau(m.get(F_COD_CAUS));
TString16 coddesc;
TLocalisamfile& caus = _rel->lfile(LF_CAUSALI);
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
m.autosave(_rel);
if (!re && caus.write() == _isreinsert)
return _isreinsert;
_rcaus_rec->destroy_rows();
if (m.insert_mode())
_rcaus_rec->renum_key(RCA_CODCAUS, m.get(F_COD_CAUS));
int err = NOERR;
for (int i = 0; err == NOERR && i < ss().items(); i++)
for (int i = 0; i < ss().items(); i++)
{
TToken_string &riga = ss().row(i);
const char sezione = riga.get_char(1);
const char tipo_cf = riga.get_char();
const int g = riga.get_int();
if (g == 0) continue;
const int c = riga.get_int();
long s = riga.get_long();
riga.get(); // Salta descrizione conto
coddesc = riga.get();
if (g > 0)
{
rcaus.zero();
rcaus.put (RCA_CODCAUS, codcau);
rcaus.put (RCA_NRIGA, i+1); // Numerare da uno!
rcaus.put (RCA_SEZIONE, sezione);
rcaus.put (RCA_TIPOCF, tipo_cf);
rcaus.put (RCA_GRUPPO , g);
rcaus.put (RCA_CONTO , c);
rcaus.put (RCA_SOTTOCONTO, s);
rcaus.put (RCA_CODDESC, coddesc);
if (_righe_gia_presenti[i+1])
{
err = rcaus.rewrite();
_righe_gia_presenti.reset(i+1);
}
else
err = rcaus.write();
}
{
const int row = i + 1 ;
TRectype & r = _rcaus_rec->row(row, TRUE);
const int c = riga.get_int();
const long s = riga.get_long();
riga.get(); // Salta descrizione conto
const TString80 coddesc(riga.get());
r.put (RCA_SEZIONE, sezione);
r.put (RCA_TIPOCF, tipo_cf);
r.put (RCA_GRUPPO , g);
r.put (RCA_CONTO , c);
r.put (RCA_SOTTOCONTO, s);
r.put (RCA_CODDESC, coddesc);
}
}
if (err == NOERR &&re)
{
togli_dal_file(codcau); // Elimina dal file le righe rimaste nel bitarray
return caus.rewrite();
}
else return err;
return _rcaus_rec->write(re);
}
bool TCaus_app::remove()
{
_rel->restore_status(); // senno' non riesco a leggere il cod. caus.
_rel->update(); // chiamo position_rels()
const TString cod(_rel->lfile().get(RCA_CODCAUS));
const bool ok = TRelation_application::remove();
if (ok)
{
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
rcaus.zero();
rcaus.put(RCA_CODCAUS, cod);
int e = rcaus.read(_isgteq);
while (e == NOERR && rcaus.get(RCA_CODCAUS) == cod)
{
rcaus.remove();
e = rcaus.next();
}
}
return ok;
return TRelation_application::remove() && _rcaus_rec->remove() == NOERR;
}
void TCaus_app::init_mask(TMask& m)
@ -880,7 +822,6 @@ void TCaus_app::init_query_mode(TMask& m)
void TCaus_app::init_insert_mode(TMask& m)
{
init_mask(m);
_righe_gia_presenti.reset();
}
void TCaus_app::init_modify_mode(TMask& m)
@ -919,7 +860,11 @@ void TCaus_app::on_config_change()
bool TCaus_app::user_create()
{
_rel = new TRelation (LF_CAUSALI);
_rel->add(LF_RCAUSALI, "CODCAUS=CODCAUS");
// _rel->add(LF_RCAUSALI, "CODCAUS=CODCAUS");
_rcaus = new TLocalisamfile(LF_RCAUSALI);
_dpn = new TTable("%DPN");
_rcaus_rec = new TRecord_array(LF_RCAUSALI, RCA_NRIGA);
_msk = new TMask("cg0500a");
_sheet = &(TSheet_field&)_msk->field(F_SHEET_GCS);
@ -944,6 +889,9 @@ bool TCaus_app::user_destroy()
{
delete _msk;
delete _rel;
delete _rcaus;
delete _dpn;
delete _rcaus_rec;
return TRUE;
}