Patch level : 10.0

Files correlati     : 772.exe
Ricompilazione Demo : [ ]
Commento            :
Corretto filtro su competenza in stampa movimenti percipiente


git-svn-id: svn://10.65.10.50/branches/R_10_00@22574 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-02-13 15:02:35 +00:00
parent d4bcd5fd79
commit bc38b3776a
3 changed files with 61 additions and 56 deletions

View File

@ -82,7 +82,7 @@ HIDDEN TStampa_mov& app() { return (TStampa_mov&) main_app(); }
bool filter_func (const TRelation * rel) bool filter_func (const TRelation * rel)
{ {
const int anno_corr = app()._anno; const int anno_corr = app()._anno;
TRectype sch_curr(rel->lfile().curr()); const TRectype& sch_curr = rel->curr();
TSchedaP scheda(sch_curr); TSchedaP scheda(sch_curr);
return esiste_pag_in_anno(scheda, anno_corr); return esiste_pag_in_anno(scheda, anno_corr);
} }
@ -293,10 +293,17 @@ bool TStampa_mov::preprocess_page(int file, int counter)
_iva = sch_curr.get_real(SPR_IVA); _iva = sch_curr.get_real(SPR_IVA);
_totdoc = sch_curr.get_real(SPR_TOTALE); _totdoc = sch_curr.get_real(SPR_TOTALE);
const int anno_doc = datadoc.year(); bool stampa_scheda = false;
TSchedaP scheda(sch_curr); if (_datada > botime || _dataa < eotime)
bool esiste_pag_anno_in_periodo = esiste_pag_in_periodo(scheda, _datada, _dataa); {
bool stampa_scheda = (anno_doc == _anno_dic) || esiste_pag_anno_in_periodo; const TSchedaP scheda(sch_curr);
stampa_scheda = esiste_pag_in_periodo(scheda, _datada, _dataa);
}
else
{
const int anno_doc = datadoc.year();
stampa_scheda = anno_doc == _anno_dic;
}
if (!stampa_scheda) if (!stampa_scheda)
return true; return true;
@ -481,7 +488,6 @@ bool TStampa_mov::init_print()
TRectype da(LF_SCPERC), a(LF_SCPERC); TRectype da(LF_SCPERC), a(LF_SCPERC);
TString filter; TString filter;
da.put(SPR_CODDITTA, _codditta); da.put(SPR_CODDITTA, _codditta);
da.put(SPR_TIPOA, _tipoa_da); da.put(SPR_TIPOA, _tipoa_da);
da.put(SPR_CODANAGR, _cod_da); da.put(SPR_CODANAGR, _cod_da);
@ -498,6 +504,12 @@ bool TStampa_mov::init_print()
filter << "(" << SPR_ANNOC << "<=" << _dataa.year() << ")&&(" << SPR_MESEC << "<=" << _dataa.month() <<")"; filter << "(" << SPR_ANNOC << "<=" << _dataa.year() << ")&&(" << SPR_MESEC << "<=" << _dataa.month() <<")";
} }
if (filter.full())
{
filter.insert("(");
filter << ")||(" << SPR_ANNOC << "==0)";
}
current_cursor()->setregion(da, a); current_cursor()->setregion(da, a);
current_cursor()->setfilter(filter); current_cursor()->setfilter(filter);
@ -603,6 +615,6 @@ bool TStampa_mov::user_destroy()
int m72300(int argc, char* argv[]) int m72300(int argc, char* argv[])
{ {
TStampa_mov a(*argv[2]); TStampa_mov a(*argv[2]);
a.run(argc, argv, "Stampa movimenti per percipienti"); a.run(argc, argv, TR("Stampa movimenti per percipienti"));
return 0; return 0;
} }

View File

@ -56,9 +56,9 @@ bool scrivi_erede(const long codditta, const long deceduto, const long erede);
bool riscrivi_erede(const long codditta, const long deceduto, const long erede, const long val); bool riscrivi_erede(const long codditta, const long deceduto, const long erede, const long val);
// Determina se esiste un pagamento con annopag = anno passato come par. // Determina se esiste un pagamento con annopag = anno passato come par.
bool esiste_pag_in_anno(TSchedaP& sch, const int anno=0, const TDate& data_da=NULLDATE, const TDate& data_a=NULLDATE, const int annocomp=0); bool esiste_pag_in_anno(const TSchedaP& sch, const int anno=0, const TDate& data_da=NULLDATE, const TDate& data_a=NULLDATE, const int annocomp=0);
// La stessa cosa tra due date // La stessa cosa tra due date
bool esiste_pag_in_periodo(TSchedaP& sch, const TDate& data_da, const TDate& data_a); bool esiste_pag_in_periodo(const TSchedaP& sch, const TDate& data_da, const TDate& data_a);
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

View File

@ -344,46 +344,39 @@ bool riscrivi_erede(const long codditta, const long deceduto, const long erede,
return TRUE; return TRUE;
} }
bool esiste_pag_in_periodo(TSchedaP& sch, const TDate& data_da, const TDate& data_a) bool esiste_pag_in_periodo(const TSchedaP& sch, const TDate& data_da, const TDate& data_a)
{ { return esiste_pag_in_anno(sch, 0, data_da, data_a); }
return esiste_pag_in_anno(sch, 0, data_da, data_a);
}
// Determina se esiste un pagamento con annopag = anno passato come par. // Determina se esiste un pagamento con annopag = anno passato come par.
// oppure se passato, sostituisce anno pagamento con anno competenza // oppure se passato, sostituisce anno pagamento con anno competenza
bool esiste_pag_in_anno(TSchedaP& sch, const int annodic, const TDate& data_da, const TDate& data_a, const int annocomp) bool esiste_pag_in_anno(const TSchedaP& sch, const int annodic, const TDate& data_da, const TDate& data_a, const int annocomp)
{ {
TLocalisamfile* rpag = new TLocalisamfile(LF_RPAG); TLocalisamfile rpag(LF_RPAG);
const bool filtra_anno = annodic != 0; rpag.put(PAG_CODDITTA, sch.codditta());
const bool filtra_periodo = !filtra_anno; rpag.put(PAG_TIPOA, sch.tipoa());
rpag.put(PAG_CODANAGR, sch.codanagr());
rpag->zero(); rpag.put(PAG_NPROG, sch.nprog());
rpag->put(PAG_CODDITTA, sch.codditta()); const TRectype mst(rpag.curr());
rpag->put(PAG_TIPOA, sch.tipoa()); for (int err = rpag.read(_isgteq); err == NOERR; err = rpag.next())
rpag->put(PAG_CODANAGR, sch.codanagr());
rpag->put(PAG_NPROG, sch.nprog());
TRectype mst(rpag->curr());
for (rpag->read(_isgteq); !rpag->eof(); rpag->next())
{ {
if (rpag->curr() > mst) break; if (rpag.curr() > mst)
const TDate datapag = rpag->get_date(PAG_DATAPAG); break;
const TDate datapag = rpag.get_date(PAG_DATAPAG);
if (filtra_anno) if (annodic != 0)
{ {
int annopag = datapag.year(); const int annopag = annocomp > 0 ? annocomp : datapag.year();
if (annocomp)
annopag = annocomp;
if (annopag == annodic) if (annopag == annodic)
return TRUE; return true;
} }
else
if (filtra_periodo)
{ {
if (datapag <= data_a && datapag >= data_da) if (datapag >= data_da && datapag <= data_a)
return TRUE; return true;
} }
} }
return FALSE; return false;
} }
// in: tipo e codice anagrafico di cui si vuole l'indirizzo // in: tipo e codice anagrafico di cui si vuole l'indirizzo
@ -554,19 +547,13 @@ int num_quadri_L_agg(const long codditta)
filt.format("CODDITTA=%ld", codditta); filt.format("CODDITTA=%ld", codditta);
// istanza relazione per cursore // istanza relazione per cursore
TRelation* rl; TRelation rl(LF_QUAL);
rl = new TRelation (LF_QUAL);
// istanza cursore // istanza cursore
TCursor* cl; TCursor cl (&rl,filt,1);
cl = new TCursor(rl,filt,1);
// numero righe compilate // numero righe compilate
int righe = (int)cl->items(); int righe = (int)cl.items();
// libera istanze
delete cl;
delete rl;
// quadri esauriti sul modulo base // quadri esauriti sul modulo base
righe -= rbase; righe -= rbase;
@ -951,16 +938,16 @@ TSchedaP::TSchedaP (const long codditta, const char tipoa, const long codanagr,
TSchedaP::TSchedaP(const TRectype& rec) TSchedaP::TSchedaP(const TRectype& rec)
{ {
_codditta = rec.get_long("CODDITTA"); _codditta = rec.get_long(SCH_CODDITTA);
_tipoa = rec.get("TIPOA")[0]; _tipoa = rec.get_char(SCH_TIPOA);
_codanagr = rec.get_long("CODANAGR"); _codanagr = rec.get_long(SCH_CODANAGR);
_nprog = rec.get_int("NPROG"); _nprog = rec.get_int(SCH_NPROG);
} }
TVersamento::TVersamento(const TRectype& rec) TVersamento::TVersamento(const TRectype& rec)
{ {
_codditta = rec.get_long(VER_CODDITTA); _codditta = rec.get_long(VER_CODDITTA);
_tipoa = rec.get(VER_TIPOA)[0]; _tipoa = rec.get_char(VER_TIPOA);
_codanagr = rec.get_long(VER_CODANAGR); _codanagr = rec.get_long(VER_CODANAGR);
_nprog = rec.get_int(VER_NPROG); _nprog = rec.get_int(VER_NPROG);
_nriga = rec.get_int(VER_NRIGA); _nriga = rec.get_int(VER_NRIGA);
@ -1026,10 +1013,13 @@ int TVersamento_stampa::num_pags(TLocalisamfile* pag)
int TVersamento_stampa::read_pags(TLocalisamfile* frpag) int TVersamento_stampa::read_pags(TLocalisamfile* frpag)
{ {
TLocalisamfile* tmp = frpag ? NULL : new TLocalisamfile(LF_RPAG); const bool exists = frpag == NULL;
TLocalisamfile& rpag = frpag ? *frpag : *tmp; if (!exists)
frpag = new TLocalisamfile(LF_RPAG);
TLocalisamfile& rpag = *frpag;
int ctr = 0; int ctr = 0;
TRecnotype recno = frpag ? frpag->recno() : 0L; const TRecnotype recno = exists ? frpag->recno() : 0L;
rpag.zero(); rpag.zero();
rpag.put(PAG_CODDITTA, (long)_codditta); rpag.put(PAG_CODDITTA, (long)_codditta);
@ -1046,8 +1036,11 @@ int TVersamento_stampa::read_pags(TLocalisamfile* frpag)
_num_last_pag = nriga; _num_last_pag = nriga;
ctr++; ctr++;
} }
_gia_letti_pag = TRUE; _gia_letti_pag = true;
if (frpag) frpag->readat(recno); // ripristina la posizione prec. if (exists)
frpag->readat(recno); // ripristina la posizione prec.
else
delete frpag;
return ctr; return ctr;
} }