Patch level : 4.0 451

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 650


git-svn-id: svn://10.65.10.50/trunk@14160 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2006-07-11 15:45:54 +00:00
parent ab43b2cf08
commit 53330f618f
3 changed files with 0 additions and 1348 deletions

File diff suppressed because it is too large Load Diff

View File

@ -47,29 +47,6 @@ bool TOriginal_row_mask::on_key(KEY key)
}
class TOriginal_row_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual bool on_key(KEY key);
public:
TOriginal_row_mask() : TAutomask("ve0100c") { }
};
bool TOriginal_row_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
bool TOriginal_row_mask::on_key(KEY key)
{
if (key == K_SHIFT + K_F12)
enable(-1);
return TAutomask::on_key(key);
}
TDocumento_mask::TDocumento_mask(const char* td)
: TVariable_mask(), _progs_page(-1),
_condv(NULL), _smartcard(NULL),

View File

@ -348,7 +348,6 @@ bool data_hndl( TMask_field& field, KEY key )
return field.error_box("Data documento inferiore alla data del documento precedente");
}
}
}
return true;
}
@ -709,342 +708,6 @@ bool pricerange_handler(TMask_field& f, KEY key )
return true;
}
static bool __in_handler = false;
int sort_sheet(const TObject** a, const TObject** b)
{
TToken_string * t1 = (TToken_string *) *a;
TToken_string * t2 = (TToken_string *) *b;
const char * a1 = t1->get(1);
const char * a2 = t2->get(1);
int cmp = strcmp(a1, a2);
if (cmp == 0)
{
TDate d1(t1->get(2));
TDate d2(t2->get(2));
cmp = d2 - d1;
if (cmp == 0)
return t2->get_int(8) - t1->get_int(8);
}
return cmp;
}
void search_price(TMask_field& f, KEY key )
{
TMask& row_mask = f.mask();
TSheet_field& sh = *row_mask.get_sheet();
TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
TArray_sheet sheet(0, 3, -1, 16, "Ricerca Prezzi",
"N.ro doc.|Codice articolo@20|Data@10|Prezzo@18P|Quantità|Sconto@10|Numerazione@18|Tipo Documento@18", 0, 1);
TString_array & el = sheet.rows_array();
TString form;
TRelation * rel = new TRelation(LF_DOC);
TRectype from(rel->curr());
TRectype to(rel->curr());
TDate datadoc = mask.get_date(F_DATADOC);
const long codcf = mask.get_long(F_CODCF);
const TString16 numdoc(mask.get(F_NDOC));
const int last_anno = mask.get_int(F_ANNO);
const int current_doc_row = sh.selected() + 1;
const int first_anno = last_anno - ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_years();
TToken_string nums(((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_nums());
const TString& tipocf = mask.get(F_TIPOCF);
from.put(DOC_TIPOCF, tipocf);
to.put(DOC_TIPOCF, tipocf);
from.put(DOC_CODCF, codcf);
to.put(DOC_CODCF, codcf);
from.put(DOC_PROVV, "D");
to.put(DOC_PROVV, "D");
from.put(DOC_ANNO, first_anno);
to.put(DOC_ANNO, last_anno);
to.put(DOC_DATADOC, datadoc);
if (nums.empty())
nums = mask.get(F_CODNUM);
TString8 first_num(nums.get(0));
TString8 last_num(first_num);;
form << "((CODNUM==\"" << first_num << "\")";
for (const char * s = nums.get(); s && *s; s = nums.get())
{
if (first_num > s)
first_num = s;
if (last_num < s)
last_num = s;
form << "||(CODNUM==\"" << s << "\")";
}
form << ")";
TCursor cur(rel, form, 2, &from, &to);
const int items = cur.items();
cur.freeze();
TRecord_array r(LF_RIGHEDOC, RDOC_NRIGA);
TRectype rec(LF_RIGHEDOC);
for(cur = 0L; cur.pos() < items; ++cur)
{
const TString16 data(cur.curr().get(DOC_DATADOC));
const TString80 num(cache().get("%NUM", cur.curr().get(DOC_CODNUM), "S0"));
const TString80 tipo(cache().get("%TIP", cur.curr().get(DOC_TIPODOC), "S0"));
rec.zero();
rec.put(RDOC_PROVV, cur.curr().get(DOC_PROVV));
rec.put(RDOC_ANNO, cur.curr().get(DOC_ANNO));
rec.put(RDOC_CODNUM, cur.curr().get(DOC_CODNUM));
rec.put(RDOC_NDOC, cur.curr().get(DOC_NDOC));
r.read(rec);
int last_row = r.last_row();
for (int i = r.first_row(); i <= last_row; i = r.succ_row(i))
{
const TRectype & rdoc = r.row(i);
const TString & codart = rdoc.get(RDOC_CODART);
if (codart.not_empty())
{
TToken_string row;
row.add(rdoc.get(RDOC_NDOC));
row.add(codart);
row.add(data);
row.add(rdoc.get(RDOC_PREZZO));
row.add(rdoc.get(RDOC_QTA));
row.add(rdoc.get(RDOC_SCONTO));
row.add(num);
row.add(tipo);
row.add(rdoc.get(RDOC_NRIGA));
el.add(row);
}
}
}
el.TArray::sort(sort_sheet);
const int max_rows = ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).max_rows_art();
if (max_rows > 0)
{
const int items = el.items();
TString80 last_cod;
long last_doc = 0L;
real last_price(ZERO);
int count = 0;
for (int i = 0 ; i < items; i++)
{
const TString & codart = el.row(i).get(1);
long ndoc = el.row(i).get_long(0);
real price(el.row(i).get(3));
if (codart != last_cod)
{
last_cod = codart;
last_doc = ndoc;
last_price = price;
count = 1;
}
else
{
if (ndoc == last_doc && price == last_price)
{
el.destroy(i);
}
else
{
last_doc = ndoc;
last_price = price;
count++;
if (count > max_rows)
el.destroy(i);
}
}
}
el.pack();
}
if (sheet.run() == K_ENTER)
{
__in_handler = true;
const TString & xx = sheet.row(-1).get(3);
row_mask.set(FR_PREZZO, xx);
const TString & codart_sel = sheet.row(-1).get(1);
row_mask.set(FR_CODART, codart_sel, 3);
row_mask.field(FR_CODART).set_dirty(false);
const TString & prezzo = sheet.row(-1).get(3);
row_mask.set(FR_PREZZO, prezzo);
const TString & sconto = sheet.row(-1).get(5);
row_mask.set(FR_SCONTO, sconto);
__in_handler = false;
}
}
void search_price_article(TMask_field& f, KEY key )
{
TMask& row_mask = f.mask();
TSheet_field& sh = *row_mask.get_sheet();
TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
const int current_doc_row = sh.selected() + 1;
const TString16 numdoc(mask.get(F_NDOC));
const TString80 codart(row_mask.get(FR_CODART));
TDate datadoc = mask.get_date(F_DATADOC);
const char tipocf = mask.get(F_TIPOCF)[0];
const TString16 codcf = mask.get(F_CODCF);
TToken_string nums(((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_nums());
if (nums.empty())
nums = mask.get(F_CODNUM);
TString8 first_num(nums.get(0));
TString8 last_num(first_num);;
TString form;
form << "(33->TIPOCF==\"" << tipocf << "\")&&(33->CODCF==\"" << (const char *)codcf << "\")&&(ANSI(33->DATADOC)<=\"" << datadoc.string(ANSI) << "\")" << "&&((CODNUM==\"" << first_num << "\")";
for (const char * s = nums.get(); s && *s; s = nums.get())
{
if (first_num > s)
first_num = s;
if (last_num < s)
last_num = s;
form << "||(CODNUM==\"" << s << "\")";
}
form << ")";
TRelation rel(LF_RIGHEDOC);
TRectype from(rel.curr());
TRectype to(rel.curr());
rel.add(LF_DOC, "PROVV==PROVV|ANNO=ANNO|CODNUM==CODNUM|NDOC==NDOC");
const int last_anno = mask.get_int(F_ANNO);
const int first_anno = last_anno - ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_years();
from.put(RDOC_CODART, codart);
from.put(RDOC_CODNUM, first_num);
from.put(RDOC_ANNO, first_anno);
from.put(RDOC_PROVV, "D");
to.put(RDOC_CODART, codart);
to.put(RDOC_CODNUM, last_num);
to.put(RDOC_ANNO, last_anno);
to.put(RDOC_PROVV, "D");
TSorted_cursor cur(&rel, "33->DATADOC-|CODNUM|NDOC-", form, 5, &from, &to);
cur.items();
cur.freeze();
cur.relation()->add("%NUM", "CODTAB==CODNUM", 1, 0, 201);
cur.relation()->add("%TIP", "CODTAB==TIPODOC", 1, LF_DOC, 202);
TCursor_sheet sheet(&cur, "NDOC|CODART|33->DATADOC|PREZZO|QTA|SCONTO|-201->S0|-202->S0",
"Ricerca Prezzi",
"N.ro doc.|Codice articolo@20|Data@10|Prezzo@18P|Quantità|Sconto@10|Numerazione@18|Tipo Documento@18",
0, 4);
sheet.add_string (101, 0, "Codice Articolo ", 2, 1, 20, "D");
sheet.add_string (102, 0, "Descrizione ", 2, 3, 50, "D");
sheet.set(101, codart);
sheet.set(102, cache().get(LF_ANAMAG, codart, "DESCR"));
if (sheet.run() == K_ENTER)
{
__in_handler = true;
row_mask.set(FR_CODART, codart, 3);
row_mask.field(FR_CODART).set_dirty(false);
__in_handler = false;
const TString & prezzo = sheet.row(-1).get(3);
row_mask.set(FR_PREZZO, prezzo);
const TString & sconto = sheet.row(-1).get(5);
row_mask.set(FR_SCONTO, sconto);
}
}
bool search_price_handler(TMask_field& f, KEY key )
{
TMask& row_mask = f.mask();
TSheet_field& sh = *row_mask.get_sheet();
if (key == K_F8 && !sh.sheet_mask().is_running())
{
const TString & codart = row_mask.get(FR_CODART);
if (codart.empty())
search_price(f, key);
else
search_price_article(f,key);
return true;
}
else
if ((key == K_TAB && f.focusdirty()))
{
TDocumento_mask& mask = (TDocumento_mask &)sh.mask();
const TString80 codart(row_mask.get(FR_CODART));
if (!__in_handler && codart.not_empty() && row_mask.get(FR_PREZZO).empty())
{
TDate datadoc = mask.get_date(F_DATADOC);
const char tipocf = mask.get(F_TIPOCF)[0];
const TString16 codcf = mask.get(F_CODCF);
const int current_doc_row = sh.selected() + 1;
TToken_string nums(((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_nums());
if (nums.empty())
nums = mask.get(F_CODNUM);
TString8 first_num(nums.get(0));
TString8 last_num(first_num);;
TString form;
form << "(33->TIPOCF==\"" << tipocf << "\")&&(33->CODCF==\"" << (const char *)codcf << "\")&&(ANSI(33->DATADOC)<=\"" << datadoc.string(ANSI) << "\")" << "&&((CODNUM==\"" << first_num << "\")";
for (const char * s = nums.get(); s && *s; s = nums.get())
{
if (first_num > s)
first_num = s;
if (last_num < s)
last_num = s;
form << "||(CODNUM==\"" << s << "\")";
}
form << ")";
TRelation rel(LF_RIGHEDOC);
TRectype from(rel.curr());
TRectype to(rel.curr());
rel.add(LF_DOC, "PROVV==PROVV|ANNO=ANNO|CODNUM==CODNUM|NDOC==NDOC");
const int last_anno = mask.get_int(F_ANNO);
const int first_anno = last_anno - ((TTipo_riga_documento&)mask.doc()[current_doc_row].tipo()).search_years();
from.put(RDOC_CODART, codart);
from.put(RDOC_CODNUM, first_num);
from.put(RDOC_ANNO, first_anno);
from.put(RDOC_PROVV, "D");
to.put(RDOC_CODART, codart);
to.put(RDOC_CODNUM, last_num);
to.put(RDOC_ANNO, last_anno);
to.put(RDOC_PROVV, "D");
TSorted_cursor cur(&rel, "33->DATADOC-|CODNUM|NDOC-", "", 5, &from, &to);
cur.setfilter(form, true);
if (cur.items() > 0L)
{
cur = 0L;
__in_handler = true;
row_mask.set(FR_CODART, codart, 3);
row_mask.field(FR_CODART).set_dirty(false);
__in_handler = false;
const TString & prezzo = cur.curr().get(RDOC_PREZZO);
row_mask.set(FR_PREZZO, prezzo);
const TString & sconto = cur.curr().get(RDOC_SCONTO);
row_mask.set(FR_SCONTO, sconto);
}
}
}
return codart_handler( f, key);
}
static bool __in_handler = false;
int sort_sheet(const TObject** a, const TObject** b)