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:
parent
d4bcd5fd79
commit
bc38b3776a
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user