Errore MI0825
git-svn-id: svn://10.65.10.50/trunk@1598 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
397f941fa3
commit
7d3b8db010
224
cg/cg0500.cpp
224
cg/cg0500.cpp
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user