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
|
class TCaus_app : public TRelation_application
|
||||||
{
|
{
|
||||||
TRelation* _rel; // Relazione principale
|
TRelation* _rel; // Relazione principale
|
||||||
|
TLocalisamfile * _rcaus;
|
||||||
|
TTable * _dpn;
|
||||||
TMask* _msk; // Maschera principale
|
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.
|
int _filtro; // tipo di filtro su tab. reg.
|
||||||
// 1 vendite senza corrisp
|
// 1 vendite senza corrisp
|
||||||
@ -35,10 +34,12 @@ typedef enum { no_descr, acquisto, vendita, incasso_pagamento,
|
|||||||
// 4 sia acquisti che vendite
|
// 4 sia acquisti che vendite
|
||||||
|
|
||||||
TSheet_field* _sheet;
|
TSheet_field* _sheet;
|
||||||
|
TRecord_array * _rcaus_rec;
|
||||||
|
|
||||||
// Parametri ditta
|
// Parametri ditta
|
||||||
bool _valuta, _saldaconto;
|
bool _valuta, _saldaconto;
|
||||||
int _anno_iva;
|
int _anno_iva;
|
||||||
|
tipo_descr _last_descr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -58,9 +59,6 @@ protected:
|
|||||||
static bool m770_hndl (TMask_field& f, KEY k);
|
static bool m770_hndl (TMask_field& f, KEY k);
|
||||||
static bool ss_notify (int r, KEY k);
|
static bool ss_notify (int r, KEY k);
|
||||||
|
|
||||||
void togli_dal_file(const TString&);
|
|
||||||
|
|
||||||
void read_rcaus(TMask&);
|
|
||||||
bool fill_sheet(TMask&);
|
bool fill_sheet(TMask&);
|
||||||
|
|
||||||
void set_descr (int numrig, const char* descr);
|
void set_descr (int numrig, const char* descr);
|
||||||
@ -87,9 +85,9 @@ protected:
|
|||||||
virtual void init_modify_mode(TMask&);
|
virtual void init_modify_mode(TMask&);
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
virtual int write(const TMask& m);
|
virtual int write(const TMask& m);
|
||||||
int re_write (const TMask& m, bool rewrite);
|
|
||||||
virtual int read(TMask& m);
|
virtual int read(TMask& m);
|
||||||
// int cancella(long items);
|
void load_rcaus(TMask& m);
|
||||||
|
int re_write(const TMask& m, bool re);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
tipo_descr _tipo_des; // Il tipo di causale corrente
|
tipo_descr _tipo_des; // Il tipo di causale corrente
|
||||||
@ -106,7 +104,7 @@ public:
|
|||||||
bool saldaconto() const { return _saldaconto; }
|
bool saldaconto() const { return _saldaconto; }
|
||||||
int anno_iva() const { return _anno_iva; }
|
int anno_iva() const { return _anno_iva; }
|
||||||
|
|
||||||
TCaus_app() {}
|
TCaus_app() : _last_descr(no_descr) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
HIDDEN TCaus_app& app() { return (TCaus_app&) main_app(); }
|
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)
|
void TCaus_app::clear(int riga)
|
||||||
{
|
{
|
||||||
TToken_string& r = ss().row(riga);
|
TToken_string& r = ss().row(riga);
|
||||||
r = r.get(0);
|
r = r.get(0);
|
||||||
ss().force_update(riga);
|
ss().force_update(riga);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +163,11 @@ void TCaus_app::carica_righe_libere(int from)
|
|||||||
if (from < 0) from = ss().items();
|
if (from < 0) from = ss().items();
|
||||||
for (int i = from; i < 20; i++)
|
for (int i = from; i < 20; i++)
|
||||||
set_descr(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
|
// Cancella tutte le descrizioni delle righe
|
||||||
@ -179,8 +181,8 @@ void TCaus_app::clear_descr()
|
|||||||
TToken_string& r = (TToken_string&)a[i];
|
TToken_string& r = (TToken_string&)a[i];
|
||||||
r.add("", 0);
|
r.add("", 0);
|
||||||
}
|
}
|
||||||
carica_righe_libere();
|
|
||||||
_tipo_des = no_descr;
|
_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 Imp. non soggetti");
|
||||||
set_descr(i++, "C Ritenute fiscali");
|
set_descr(i++, "C Ritenute fiscali");
|
||||||
set_descr(i++, "C Ritenute soc.");
|
set_descr(i++, "C Ritenute soc.");
|
||||||
carica_righe_libere(i);
|
|
||||||
_tipo_des = vendita;
|
_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 Imp. non soggetti");
|
||||||
set_descr(i++, "C Ritenute fiscali");
|
set_descr(i++, "C Ritenute fiscali");
|
||||||
set_descr(i++, "C Ritenute soc.");
|
set_descr(i++, "C Ritenute soc.");
|
||||||
carica_righe_libere(i);
|
|
||||||
_tipo_des = acquisto;
|
_tipo_des = acquisto;
|
||||||
|
carica_righe_libere(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,8 +233,8 @@ void TCaus_app::causale_ritenute()
|
|||||||
set_descr (i++, "Costo");
|
set_descr (i++, "Costo");
|
||||||
set_descr (i++, "Cassa/banca");
|
set_descr (i++, "Cassa/banca");
|
||||||
set_descr (i++, "Erario");
|
set_descr (i++, "Erario");
|
||||||
carica_righe_libere(i);
|
|
||||||
_tipo_des = ritenuta_occas;
|
_tipo_des = ritenuta_occas;
|
||||||
|
carica_righe_libere(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,8 +258,8 @@ void TCaus_app::causale_inc_pag()
|
|||||||
set_descr ( i++, "C Ritenute fiscali");
|
set_descr ( i++, "C Ritenute fiscali");
|
||||||
if (_tipo_des == incasso_pagamento_gesval)
|
if (_tipo_des == incasso_pagamento_gesval)
|
||||||
set_descr (i++, "C Differenza cambio");
|
set_descr (i++, "C Differenza cambio");
|
||||||
carica_righe_libere(i);
|
|
||||||
_tipo_des = tipo_des;
|
_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)
|
int TCaus_app::read(TMask& m)
|
||||||
{
|
{
|
||||||
m.autoload(_rel);
|
int err = TRelation_application::read(m);
|
||||||
read_rcaus(m);
|
if (err == NOERR)
|
||||||
fill_sheet(m);
|
{
|
||||||
|
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);
|
const TString16 tpd = m.get(F_TIPO_DOC);
|
||||||
calc_filter(tpd);
|
calc_filter(tpd);
|
||||||
|
}
|
||||||
return NOERR;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::add_riga(int numrig, char sz, TConto& tc, const TString& d, const TString& da)
|
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);
|
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));
|
const TString16 cod(_rel->lfile().get(RCA_CODCAUS));
|
||||||
TString16 d;
|
TString16 d;
|
||||||
TString80 da;
|
TString80 da;
|
||||||
|
const int last = _rcaus_rec->last_row();
|
||||||
|
|
||||||
_righe_gia_presenti.reset();
|
for (int i = 1; i <= last; i++)
|
||||||
|
{
|
||||||
rcaus.zero();
|
TRectype & r = _rcaus_rec->row(i, TRUE);
|
||||||
rcaus.put(RCA_CODCAUS, cod);
|
const char sz = r.get_char(RCA_SEZIONE);
|
||||||
|
const char cf = r.get_char(RCA_TIPOCF);
|
||||||
for (int err = rcaus.read(_isgteq);
|
const int g = r.get_int(RCA_GRUPPO);
|
||||||
err == NOERR && rcaus.get(RCA_CODCAUS) == cod;
|
const int c = r.get_int(RCA_CONTO);
|
||||||
err = rcaus.next())
|
const long s = r.get_long(RCA_SOTTOCONTO);
|
||||||
{
|
d = r.get(RCA_CODDESC);
|
||||||
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);
|
|
||||||
|
|
||||||
if (d.not_empty())
|
if (d.not_empty())
|
||||||
{
|
{
|
||||||
dpn.put("CODTAB", d);
|
_dpn->put("CODTAB", d);
|
||||||
dpn.read() ;
|
_dpn->read() ;
|
||||||
da = dpn.get("S0");
|
da = _dpn->get("S0");
|
||||||
} else da.cut(0);
|
} else da.cut(0);
|
||||||
|
|
||||||
TConto tc(g,c,s,cf);
|
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;
|
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)
|
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)
|
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)
|
int TCaus_app::re_write(const TMask& m, bool re)
|
||||||
{
|
{
|
||||||
const TString16 codcau(m.get(F_COD_CAUS));
|
_rcaus_rec->destroy_rows();
|
||||||
TString16 coddesc;
|
if (m.insert_mode())
|
||||||
|
_rcaus_rec->renum_key(RCA_CODCAUS, m.get(F_COD_CAUS));
|
||||||
TLocalisamfile& caus = _rel->lfile(LF_CAUSALI);
|
|
||||||
TLocalisamfile& rcaus = _rel->lfile(LF_RCAUSALI);
|
|
||||||
|
|
||||||
m.autosave(_rel);
|
|
||||||
if (!re && caus.write() == _isreinsert)
|
|
||||||
return _isreinsert;
|
|
||||||
|
|
||||||
int err = NOERR;
|
for (int i = 0; i < ss().items(); i++)
|
||||||
|
|
||||||
for (int i = 0; err == NOERR && i < ss().items(); i++)
|
|
||||||
{
|
{
|
||||||
TToken_string &riga = ss().row(i);
|
TToken_string &riga = ss().row(i);
|
||||||
|
|
||||||
const char sezione = riga.get_char(1);
|
const char sezione = riga.get_char(1);
|
||||||
const char tipo_cf = riga.get_char();
|
const char tipo_cf = riga.get_char();
|
||||||
const int g = riga.get_int();
|
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)
|
if (g > 0)
|
||||||
{
|
{
|
||||||
rcaus.zero();
|
const int row = i + 1 ;
|
||||||
rcaus.put (RCA_CODCAUS, codcau);
|
TRectype & r = _rcaus_rec->row(row, TRUE);
|
||||||
rcaus.put (RCA_NRIGA, i+1); // Numerare da uno!
|
const int c = riga.get_int();
|
||||||
rcaus.put (RCA_SEZIONE, sezione);
|
const long s = riga.get_long();
|
||||||
rcaus.put (RCA_TIPOCF, tipo_cf);
|
riga.get(); // Salta descrizione conto
|
||||||
rcaus.put (RCA_GRUPPO , g);
|
const TString80 coddesc(riga.get());
|
||||||
rcaus.put (RCA_CONTO , c);
|
|
||||||
rcaus.put (RCA_SOTTOCONTO, s);
|
r.put (RCA_SEZIONE, sezione);
|
||||||
rcaus.put (RCA_CODDESC, coddesc);
|
r.put (RCA_TIPOCF, tipo_cf);
|
||||||
if (_righe_gia_presenti[i+1])
|
r.put (RCA_GRUPPO , g);
|
||||||
{
|
r.put (RCA_CONTO , c);
|
||||||
err = rcaus.rewrite();
|
r.put (RCA_SOTTOCONTO, s);
|
||||||
_righe_gia_presenti.reset(i+1);
|
r.put (RCA_CODDESC, coddesc);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
err = rcaus.write();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return _rcaus_rec->write(re);
|
||||||
if (err == NOERR &&re)
|
|
||||||
{
|
|
||||||
togli_dal_file(codcau); // Elimina dal file le righe rimaste nel bitarray
|
|
||||||
return caus.rewrite();
|
|
||||||
}
|
|
||||||
else return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TCaus_app::remove()
|
bool TCaus_app::remove()
|
||||||
{
|
{
|
||||||
_rel->restore_status(); // senno' non riesco a leggere il cod. caus.
|
return TRelation_application::remove() && _rcaus_rec->remove() == NOERR;
|
||||||
_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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::init_mask(TMask& m)
|
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)
|
void TCaus_app::init_insert_mode(TMask& m)
|
||||||
{
|
{
|
||||||
init_mask(m);
|
init_mask(m);
|
||||||
_righe_gia_presenti.reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCaus_app::init_modify_mode(TMask& m)
|
void TCaus_app::init_modify_mode(TMask& m)
|
||||||
@ -919,7 +860,11 @@ void TCaus_app::on_config_change()
|
|||||||
bool TCaus_app::user_create()
|
bool TCaus_app::user_create()
|
||||||
{
|
{
|
||||||
_rel = new TRelation (LF_CAUSALI);
|
_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");
|
_msk = new TMask("cg0500a");
|
||||||
_sheet = &(TSheet_field&)_msk->field(F_SHEET_GCS);
|
_sheet = &(TSheet_field&)_msk->field(F_SHEET_GCS);
|
||||||
@ -944,6 +889,9 @@ bool TCaus_app::user_destroy()
|
|||||||
{
|
{
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _rel;
|
delete _rel;
|
||||||
|
delete _rcaus;
|
||||||
|
delete _dpn;
|
||||||
|
delete _rcaus_rec;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user