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:
guy 2006-01-30 16:37:13 +00:00
parent f6e9ea74d7
commit 7e95d8da6c
2 changed files with 41 additions and 4 deletions

@ -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" />