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)
{
const int anno_corr = app()._anno;
TRectype sch_curr(rel->lfile().curr());
const TRectype& sch_curr = rel->curr();
TSchedaP scheda(sch_curr);
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);
_totdoc = sch_curr.get_real(SPR_TOTALE);
const int anno_doc = datadoc.year();
TSchedaP scheda(sch_curr);
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;
bool stampa_scheda = false;
if (_datada > botime || _dataa < eotime)
{
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)
return true;
@ -481,7 +488,6 @@ bool TStampa_mov::init_print()
TRectype da(LF_SCPERC), a(LF_SCPERC);
TString filter;
da.put(SPR_CODDITTA, _codditta);
da.put(SPR_TIPOA, _tipoa_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() <<")";
}
if (filter.full())
{
filter.insert("(");
filter << ")||(" << SPR_ANNOC << "==0)";
}
current_cursor()->setregion(da, a);
current_cursor()->setfilter(filter);
@ -603,6 +615,6 @@ bool TStampa_mov::user_destroy()
int m72300(int argc, char* argv[])
{
TStampa_mov a(*argv[2]);
a.run(argc, argv, "Stampa movimenti per percipienti");
a.run(argc, argv, TR("Stampa movimenti per percipienti"));
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);
// 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
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;
}
bool esiste_pag_in_periodo(TSchedaP& sch, const TDate& data_da, const TDate& data_a)
{
return esiste_pag_in_anno(sch, 0, data_da, 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); }
// Determina se esiste un pagamento con annopag = anno passato come par.
// 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);
const bool filtra_anno = annodic != 0;
const bool filtra_periodo = !filtra_anno;
rpag->zero();
rpag->put(PAG_CODDITTA, sch.codditta());
rpag->put(PAG_TIPOA, sch.tipoa());
rpag->put(PAG_CODANAGR, sch.codanagr());
rpag->put(PAG_NPROG, sch.nprog());
TRectype mst(rpag->curr());
for (rpag->read(_isgteq); !rpag->eof(); rpag->next())
TLocalisamfile rpag(LF_RPAG);
rpag.put(PAG_CODDITTA, sch.codditta());
rpag.put(PAG_TIPOA, sch.tipoa());
rpag.put(PAG_CODANAGR, sch.codanagr());
rpag.put(PAG_NPROG, sch.nprog());
const TRectype mst(rpag.curr());
for (int err = rpag.read(_isgteq); err == NOERR; err = rpag.next())
{
if (rpag->curr() > mst) break;
const TDate datapag = rpag->get_date(PAG_DATAPAG);
if (rpag.curr() > mst)
break;
const TDate datapag = rpag.get_date(PAG_DATAPAG);
if (filtra_anno)
if (annodic != 0)
{
int annopag = datapag.year();
if (annocomp)
annopag = annocomp;
const int annopag = annocomp > 0 ? annocomp : datapag.year();
if (annopag == annodic)
return TRUE;
return true;
}
if (filtra_periodo)
else
{
if (datapag <= data_a && datapag >= data_da)
return TRUE;
if (datapag >= data_da && datapag <= data_a)
return true;
}
}
return FALSE;
return false;
}
// 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);
// istanza relazione per cursore
TRelation* rl;
rl = new TRelation (LF_QUAL);
TRelation rl(LF_QUAL);
// istanza cursore
TCursor* cl;
cl = new TCursor(rl,filt,1);
TCursor cl (&rl,filt,1);
// numero righe compilate
int righe = (int)cl->items();
// libera istanze
delete cl;
delete rl;
int righe = (int)cl.items();
// quadri esauriti sul modulo base
righe -= rbase;
@ -951,16 +938,16 @@ TSchedaP::TSchedaP (const long codditta, const char tipoa, const long codanagr,
TSchedaP::TSchedaP(const TRectype& rec)
{
_codditta = rec.get_long("CODDITTA");
_tipoa = rec.get("TIPOA")[0];
_codanagr = rec.get_long("CODANAGR");
_nprog = rec.get_int("NPROG");
_codditta = rec.get_long(SCH_CODDITTA);
_tipoa = rec.get_char(SCH_TIPOA);
_codanagr = rec.get_long(SCH_CODANAGR);
_nprog = rec.get_int(SCH_NPROG);
}
TVersamento::TVersamento(const TRectype& rec)
{
_codditta = rec.get_long(VER_CODDITTA);
_tipoa = rec.get(VER_TIPOA)[0];
_tipoa = rec.get_char(VER_TIPOA);
_codanagr = rec.get_long(VER_CODANAGR);
_nprog = rec.get_int(VER_NPROG);
_nriga = rec.get_int(VER_NRIGA);
@ -1026,10 +1013,13 @@ int TVersamento_stampa::num_pags(TLocalisamfile* pag)
int TVersamento_stampa::read_pags(TLocalisamfile* frpag)
{
TLocalisamfile* tmp = frpag ? NULL : new TLocalisamfile(LF_RPAG);
TLocalisamfile& rpag = frpag ? *frpag : *tmp;
const bool exists = frpag == NULL;
if (!exists)
frpag = new TLocalisamfile(LF_RPAG);
TLocalisamfile& rpag = *frpag;
int ctr = 0;
TRecnotype recno = frpag ? frpag->recno() : 0L;
const TRecnotype recno = exists ? frpag->recno() : 0L;
rpag.zero();
rpag.put(PAG_CODDITTA, (long)_codditta);
@ -1046,8 +1036,11 @@ int TVersamento_stampa::read_pags(TLocalisamfile* frpag)
_num_last_pag = nriga;
ctr++;
}
_gia_letti_pag = TRUE;
if (frpag) frpag->readat(recno); // ripristina la posizione prec.
_gia_letti_pag = true;
if (exists)
frpag->readat(recno); // ripristina la posizione prec.
else
delete frpag;
return ctr;
}