Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :sistemati casini da riporto 3.2


git-svn-id: svn://10.65.10.50/trunk@17124 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-08-28 13:28:46 +00:00
parent 34bbc4d456
commit af76bbf855
2 changed files with 3 additions and 229 deletions

View File

@ -1370,26 +1370,10 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
const TTipo_riga_documento & t = riga.tipo();
if (s.full())
{
if (r < doc.rows())
{
TRiga_documento & riga = doc[r + 1];
if (riga.is_omaggio() && riga.is_generata())
{
const bool enabled = ss.cell_enabled(r, 0);
if (!enabled) ss.enable_row(r);
ss.force_update(r);
ss.select(r);
m.send_key(K_CTRL + '+', 0);
if (!enabled) ss.disable_row(r);
ss.force_update(r);
return false;
}
{
s.left_just(3);
s << ven_rec.get(CFV_CODDEP);
}
}
else
{
s = m.get(F_CAUSMAG);
@ -3480,8 +3464,6 @@ bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
qmask.set(F_ANNO, dest.get_int(DOC_ANNO));
qmask.set(F_NDOC, dest.get_long(DOC_NDOC));
qmask.field(F_NDOC).update_flags("RP");
// qmask.send_key(K_ENTER, 0);
}
else
return error_box("Errore %d nella generazione del documento definitivo", err);
@ -3489,211 +3471,3 @@ bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
}
return ok;
}
void TDocumento_mask::update_father_rows(bool add)
{
if (_auto_reopen_nums.empty())
return;
const int rows = doc().physical_rows();
for (int i = 1; i <= rows; i++)
{
const TRiga_documento & r = doc()[i];
if (r.is_merce() || r.is_omaggio()|| r.is_prestazione())
{
TRiga_documento * original_row = (TRiga_documento *) r.find_original_rdoc();
if (original_row != NULL && _auto_reopen_nums.objptr(original_row->get(RDOC_CODNUM)) != NULL)
{
TToken_string key;
key.add(original_row->get(RDOC_PROVV));
key.add(original_row->get(RDOC_ANNO));
key.add(original_row->get(RDOC_CODNUM));
key.add(original_row->get(RDOC_NDOC));
key.add(original_row->get(RDOC_IDRIGA));
real * qta = (real *) _father_rows.objptr(key);
if (qta == NULL)
{
qta = new real;
_father_rows.add(key, qta);
}
real value = r.quantita();
if (r.is_articolo())
{
TArticolo art(r.get(RDOC_CODARTMAG));
value = art.convert_to_um(value, original_row->get(RDOC_UMQTA), r.get(RDOC_UMQTA));
}
if(add)
*qta += value;
else
*qta -= value;
if (*qta == ZERO)
_father_rows.remove(key);
}
}
}
}
TAssoc_array TDocumento_mask::_father_rows;
TAssoc_array TDocumento_mask::_auto_reopen_nums;
TAssoc_array TDocumento_mask::_tipidoc_rels;
void TDocumento_mask::save_father_rows()
{
if (_auto_reopen_nums.empty())
return;
TLocalisamfile rdoc(LF_RIGHEDOC);
TString_array rows;
TToken_string last_doc;
TToken_string curr_doc;
int nrows = 0;
FOR_EACH_ASSOC_OBJECT(_father_rows, h, k, o)
{
rows.add(k);
}
rows.sort();
rows.add("");
FOR_EACH_ARRAY_ROW(rows, i, r)
{
curr_doc = r->get(0);
curr_doc.add(r->get());
curr_doc.add(r->get());
curr_doc.add(r->get());
if (last_doc != curr_doc && nrows > 0)
{
TDocumento d;
d.read(last_doc.get_char(0), last_doc.get_int(1), last_doc.get(2), last_doc.get_long(3), _isequal, _lock);
for (int j = i - nrows; j < i; j++)
{
TToken_string & key = rows.row(j);
const long idriga = key.get_long(4);
const int nrows = d.physical_rows();
for (int k = 1; k <= nrows; k++)
{
TRiga_documento & rdoc_row = d[k];
if (idriga == rdoc_row.get_long(RDOC_IDRIGA))
{
const real * qta = (const real *) _father_rows.objptr(key);
const TString16 name = rdoc_row.field_qtaevasa();
real qtaevasa = rdoc_row.get_real(name) + * qta;
if (qtaevasa < ZERO)
qtaevasa = ZERO;
rdoc_row.put(name, qtaevasa);
if (qtaevasa < rdoc_row.quantita())
rdoc_row.zero(RDOC_RIGAEVASA);
else
rdoc_row.put(RDOC_RIGAEVASA, "X");
break;
}
}
}
TToken_string key(d.tipo().codice());
key.add(doc().tipo().codice());
TStati * stati = (TStati *) _tipidoc_rels.objptr(key);
if (stati != NULL)
{
const int nrows = d.physical_rows();
bool evaso = true;
for (int k = 1; evaso && k <= nrows; k++)
evaso &= d[k].is_evasa();
d.stato(evaso ? stati->finale() : stati->iniziale());
}
d.rewrite();
nrows = 0;
}
last_doc = curr_doc;
nrows++;
}
}
bool TDocumento_mask::confirm_handler( TMask_field& f, KEY key )
{
if (key == K_SPACE)
{
TMask m("ve0100d");
TDocumento_mask & mask = (TDocumento_mask &) f.mask();
const TDocumento& src = mask.doc();
TCodice_numerazione num(src.numerazione());
TString4 codnum(num.codnumdef());
TString4 tipodoc(num.tipodocdef());
if (!num.newnumdef())
{
codnum = src.get(DOC_CODNUM);
tipodoc = src.get(DOC_TIPODOC);
}
else
{
codnum = num.get("S8");
tipodoc = num.get("S9");
}
bool ok = codnum.full() && tipodoc.full();
if (!ok)
{
m.set(F_CODNUM, codnum);
m.enable(F_CODNUM, codnum.blank());
m.enable(F_DESNUM, codnum.blank());
m.set(F_TIPODOC, tipodoc);
m.enable(F_TIPODOC, tipodoc.blank());
m.enable(F_DESTIPODOC, tipodoc.blank());
ok = m.run() == K_ENTER;
if (ok)
{
codnum = m.get(F_CODNUM);
tipodoc = m.get(F_TIPODOC);
}
}
ok = codnum.full() && tipodoc.full();
if (ok)
{
TDocumento dest(src);
dest.put(DOC_CODNUM, codnum);
dest.put(DOC_TIPODOC, tipodoc);
dest.put(DOC_PROVV, "D");
dest.zero(DOC_NDOC);
int err = dest.write();
if (err == NOERR)
{
err = src.remove();
if (err != NOERR)
warning_box("Errore %d nell'eliminazione del documento provvisorio", err);
mask.stop_run(K_ESC);
TMask & qmask = app().query_mask();
qmask.set(F_CODNUM, codnum);
qmask.set(F_PROVV, dest.get_char(DOC_PROVV));
qmask.set(F_ANNO, dest.get_int(DOC_ANNO));
qmask.set(F_NDOC, dest.get_long(DOC_NDOC));
qmask.field(F_NDOC).update_flags("RP");
// qmask.send_key(K_ENTER, 0);
}
else
return error_box("Errore %d nella generazione del documento definitivo", err);
}
}
return ok;
}

View File

@ -218,7 +218,7 @@ void TScalare_recordset::requery()
filter << query_text()[pos1++];
distinta.explode(boom(), false, RAGGR_EXP_NONE, level, filter);
}
pos = query().find("FILTER", pos);
pos = query_text().find("FILTER", pos);
if (pos > 0)
{
pos = query_text().find("==", pos);