Patch level : 10.0 250
Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : Selezione multipla articoli, spese, etc sui documenti. Se aggiunge una riga vuota sul documento e si clicca sul numero di fianco e' possibili fare una selezione multipla che poi viene riportata sul documento (Rif. CRPA) git-svn-id: svn://10.65.10.50/trunk@18365 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
57237d9de9
commit
1e9640d677
@ -1162,8 +1162,8 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga)
|
|||||||
if (close_filter) filter << ')';
|
if (close_filter) filter << ')';
|
||||||
browse.set_filter(filter);
|
browse.set_filter(filter);
|
||||||
}
|
}
|
||||||
m->set_handler(DLG_USER, link_handler);
|
|
||||||
}
|
}
|
||||||
|
m->set_handler(DLG_USER, link_handler);
|
||||||
|
|
||||||
// Quasi qualsiasi cosa analitica va bene
|
// Quasi qualsiasi cosa analitica va bene
|
||||||
const bool ca_active = _ges_ca && !(riga.is_descrizione() || riga.is_omaggio() || riga.is_sconto());
|
const bool ca_active = _ges_ca && !(riga.is_descrizione() || riga.is_omaggio() || riga.is_sconto());
|
||||||
@ -1460,8 +1460,6 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
|||||||
{
|
{
|
||||||
m.update_giacenza();
|
m.update_giacenza();
|
||||||
set_curr_um(rdoc.get(RDOC_UMQTA));
|
set_curr_um(rdoc.get(RDOC_UMQTA));
|
||||||
const bool on = rdoc.get(RDOC_DACODNUM).not_empty();
|
|
||||||
ss.sheet_mask().enable(DLG_USER, on);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rdoc.get(RDOC_CODART).empty() && rdoc.get(RDOC_DESCR).empty())
|
if (rdoc.get(RDOC_CODART).empty() && rdoc.get(RDOC_DESCR).empty())
|
||||||
@ -3596,6 +3594,23 @@ void TDocumento_mask::save_father_rows()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool conf_num_handler(TMask_field& f, KEY key)
|
||||||
|
{
|
||||||
|
if (key == K_TAB && f.to_check(key, true))
|
||||||
|
{
|
||||||
|
TMask & m = f.mask();
|
||||||
|
|
||||||
|
__codnum = f.get();
|
||||||
|
|
||||||
|
TCursor * cur = m.efield(F_TIPODOC).browse()->cursor();
|
||||||
|
TCursor * descur = m.efield(F_DESTIPODOC).browse()->cursor();
|
||||||
|
|
||||||
|
cur->set_filterfunction(tip_filter);
|
||||||
|
descur->set_filterfunction(tip_filter);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
|
bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
@ -3622,8 +3637,11 @@ bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
|
|||||||
|
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
|
TString saved_codnum = __codnum;
|
||||||
|
|
||||||
m.set(F_CODNUM, codnum);
|
m.set(F_CODNUM, codnum);
|
||||||
m.enable(F_CODNUM, codnum.blank());
|
m.enable(F_CODNUM, codnum.blank());
|
||||||
|
m.set_handler(F_CODNUM, ::conf_num_handler);
|
||||||
m.enable(F_DESNUM, codnum.blank());
|
m.enable(F_DESNUM, codnum.blank());
|
||||||
m.set(F_TIPODOC, tipodoc);
|
m.set(F_TIPODOC, tipodoc);
|
||||||
m.enable(F_TIPODOC, tipodoc.blank());
|
m.enable(F_TIPODOC, tipodoc.blank());
|
||||||
@ -3634,6 +3652,7 @@ bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
|
|||||||
codnum = m.get(F_CODNUM);
|
codnum = m.get(F_CODNUM);
|
||||||
tipodoc = m.get(F_TIPODOC);
|
tipodoc = m.get(F_TIPODOC);
|
||||||
}
|
}
|
||||||
|
__codnum = saved_codnum;
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = codnum.full() && tipodoc.full();
|
ok = codnum.full() && tipodoc.full();
|
||||||
|
@ -2411,12 +2411,79 @@ bool link_handler( TMask_field& f, KEY key )
|
|||||||
{
|
{
|
||||||
if (key == K_SPACE)
|
if (key == K_SPACE)
|
||||||
{
|
{
|
||||||
const TSheet_field & sf = *f.mask().get_sheet();
|
TSheet_field & sf = *f.mask().get_sheet();
|
||||||
const TDocumento_mask & m = (const TDocumento_mask & )sf.mask();
|
const TDocumento_mask & m = (const TDocumento_mask & )sf.mask();
|
||||||
const TDocumento & d = m.doc();
|
TDocumento & d = (TDocumento &) m.doc();
|
||||||
const int nrow = sf.selected() + 1;
|
int row = sf.selected();
|
||||||
const TRiga_documento & r = d[nrow];
|
const TRiga_documento & r = d[row + 1];
|
||||||
r.edit(LF_DOC, "DAPROVV|DAANNO|DACODNUM|DANDOC");
|
const TMask & row_mask = f.mask();
|
||||||
|
|
||||||
|
if (r.linked())
|
||||||
|
r.edit(LF_DOC, "DAPROVV|DAANNO|DACODNUM|DANDOC");
|
||||||
|
else
|
||||||
|
if (!row_mask.is_running() && row_mask.id2pos(FR_CODART) >= 0)
|
||||||
|
{
|
||||||
|
TBrowse * brw = row_mask.efield(FR_CODART).browse();
|
||||||
|
|
||||||
|
if (row_mask.get(FR_CODART).empty() && brw)
|
||||||
|
{
|
||||||
|
TCursor& cur = *brw->cursor();
|
||||||
|
TToken_string siblings;
|
||||||
|
|
||||||
|
TToken_string head(brw->head());
|
||||||
|
head.insert("@1|", 0);
|
||||||
|
TToken_string items(brw->items());
|
||||||
|
items.insert(" |", 0);
|
||||||
|
|
||||||
|
cur = 0L;
|
||||||
|
siblings.add(FR_CODART);
|
||||||
|
|
||||||
|
TBrowse_sheet sht(&cur, items, "Selezione Multipla", head, 0, row_mask.efield(FR_CODART), siblings);
|
||||||
|
|
||||||
|
if (sht.run() == K_ENTER && sht.one_checked())
|
||||||
|
{
|
||||||
|
const int items_selected = sht.checked();
|
||||||
|
const long totit = cur.items();
|
||||||
|
if (items_selected * d.physical_rows() < 950)
|
||||||
|
{
|
||||||
|
int processed = 0L;
|
||||||
|
TToken_string out_id(brw->get_output_fields());
|
||||||
|
TToken_string out_fnames(brw->get_output_field_names());
|
||||||
|
const TString4 tipo(row_mask.get(FR_TIPORIGA));
|
||||||
|
|
||||||
|
cur.freeze(TRUE);
|
||||||
|
for (cur = 0L; cur.pos() < totit; ++cur)
|
||||||
|
if (sht.checked(cur.pos()))
|
||||||
|
{
|
||||||
|
if (++processed < items_selected)
|
||||||
|
sf.insert(row, false); // call notify ?
|
||||||
|
d.insert_row(row + 1);
|
||||||
|
d[row + 1].put(RDOC_TIPORIGA, tipo);
|
||||||
|
TToken_string & shrow = sf.row(row);
|
||||||
|
shrow.add(tipo, sf.cid2index(FR_TIPORIGA));
|
||||||
|
shrow.add("", sf.cid2index(FR_CHECKED));
|
||||||
|
|
||||||
|
TMask & m = sf.sheet_row_mask(row);
|
||||||
|
|
||||||
|
m.set(FR_TIPORIGA, tipo);
|
||||||
|
out_fnames.restart();
|
||||||
|
for (short id = out_id.get_int(0); id > 0; id = out_id.get_int())
|
||||||
|
{
|
||||||
|
const TString16 fn(out_fnames.get());
|
||||||
|
const TFieldref fr(fn, 0);
|
||||||
|
m.set(id, fr.read(cur.curr()));
|
||||||
|
shrow.add(m.get(id), sf.cid2index(id));
|
||||||
|
}
|
||||||
|
sf.check_row(row, 0x2);
|
||||||
|
d[row + 1].autosave(sf);
|
||||||
|
row++;
|
||||||
|
}
|
||||||
|
cur.freeze(FALSE);
|
||||||
|
sf.force_update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user