Patch level : 2.2
Files correlati : ci1.exe Ricompilazione Demo : [ ] Commento : Rese piu' veloci le stampe della contabilita' industriale, grazie alle nuove chiavi su file RIGHEDOC git-svn-id: svn://10.65.10.50/trunk@13740 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f6e9ea74d7
commit
7e95d8da6c
@ -32,7 +32,14 @@ int TRiepiloghi_mask::create_sheet_fields(int lf, int& y, short& dlg, bool requi
|
||||
TSheet_field& sf = sfield(F_COMMESSE);
|
||||
TMask& sm = sf.sheet_mask();
|
||||
|
||||
const int h = ca_create_fields(sm, 0, lf, 1, y, dlg, dlg+50);
|
||||
const char* field = NULL;
|
||||
switch (lf)
|
||||
{
|
||||
case LF_CDC : field = RMOVANA_CODCCOSTO; break;
|
||||
case LF_FASI: field = RMOVANA_CODFASE; break;
|
||||
default : field = RMOVANA_CODCMS; break;
|
||||
}
|
||||
const int h = ca_create_fields(sm, 0, lf, 1, y, dlg, dlg+50, 0, field);
|
||||
|
||||
for (int i = 0; i < h; i++)
|
||||
{
|
||||
@ -133,6 +140,7 @@ protected:
|
||||
static bool rdoc_filter(const TRelation* rel);
|
||||
bool valid_record(const TRelation& rel) const;
|
||||
|
||||
bool has_doc_reference(const char* str) const;
|
||||
virtual void set_custom_filter(TCursor& cur) const;
|
||||
|
||||
public:
|
||||
@ -203,7 +211,7 @@ bool TRiepiloghi_recordset::valid_record(const TRelation& rel) const
|
||||
const TString& fas = rdoc.get(RDOC_FASCMS);
|
||||
if (fas != _codfas)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -213,10 +221,40 @@ bool TRiepiloghi_recordset::rdoc_filter(const TRelation* rel)
|
||||
return myself->valid_record(*rel);
|
||||
}
|
||||
|
||||
bool TRiepiloghi_recordset::has_doc_reference(const char* str) const
|
||||
{
|
||||
TString expr(str); expr.upper();
|
||||
return expr.find("DOC.") >= 0 || expr.find("DOC->") >= 0 ||
|
||||
expr.find("33.") >= 0 || expr.find("33->") >=0;
|
||||
}
|
||||
|
||||
void TRiepiloghi_recordset::set_custom_filter(TCursor& cur) const
|
||||
{
|
||||
// Quanto segue potrebbe essere una magia degli TISAM_recordset
|
||||
// o quanto meno dei TDocument_recordset
|
||||
TString filter = cur.filter();
|
||||
bool has_doc = false;
|
||||
if (has_doc_reference(filter))
|
||||
has_doc = true; else
|
||||
if (cur.is_sorted() && has_doc_reference(((TSorted_cursor&)cur).get_order()))
|
||||
has_doc = true;
|
||||
|
||||
myself = this;
|
||||
cur.set_filterfunction(rdoc_filter, true);
|
||||
cur.set_filterfunction(rdoc_filter, true); // Acc. il true e' obbligatorio :-(
|
||||
cur.setfilter(filter, has_doc, 1);
|
||||
|
||||
int nkey = 6;
|
||||
const TMultilevel_code_info* mci = ca_multilevel_code_info_by_index(0);
|
||||
if (mci != NULL && mci->logic() == LF_CDC)
|
||||
nkey = 7;
|
||||
cur.setkey(nkey);
|
||||
|
||||
TRectype filtrec(LF_RIGHEDOC);
|
||||
if (_codcosto.full())
|
||||
filtrec.put(RDOC_CODCOSTO, _codcosto);
|
||||
if (_codcms.full())
|
||||
filtrec.put(RDOC_CODCMS, _codcms);
|
||||
cur.setregion(filtrec, filtrec);
|
||||
}
|
||||
|
||||
void TRiepiloghi_recordset::set_filter(const TRiepiloghi_mask& msk, int cms_row)
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
<report name="ci1200a" orientation="2" lpi="6" class="ci1200">
|
||||
<description>Stampa Analitica Risorse</description>
|
||||
<font face="Courier New" size="10" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user