Migliorato controllo giacenze negative in evasione ordini

git-svn-id: svn://10.65.10.50/branches/R_10_00@23093 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2015-05-15 08:49:56 +00:00
parent 49319d0200
commit 3b8a54b884
2 changed files with 27 additions and 22 deletions

View File

@ -339,19 +339,18 @@ bool TFatturazione_bolle::get_num_tip_out(const TDocumento& doc, TString& codnum
if (tipo_cfv.full())
tipodoc = tipo_cfv;
const TCodice_numerazione& cn = cached_numerazione(codnum);
bool ok = cn.find_tipo_doc(tipodoc) >= 0;
const TCodice_numerazione& cn_std = cached_numerazione(codnum);
bool ok = cn_std.find_tipo_doc(tipodoc) >= 0;
if (!ok)
{
TISAM_recordset num_recset("USE %NUM SELECT I1=2");
for (ok = num_recset.move_first(); ok; ok = num_recset.move_next()) // giro sui vari tipi fattura
{
const TString4 codtab = num_recset.get("CODTAB").as_string();
const TCodice_numerazione cn(codtab);
if (cn.find_tipo_doc(tipodoc) >= 0)
const TCodice_numerazione cn_alt(num_recset.cursor()->curr());
if (cn_alt.find_tipo_doc(tipodoc) >= 0)
{
codnum = codtab;
codnum = cn_alt.codice();
break;
}
}

View File

@ -11,7 +11,6 @@ class TConsegna_mask : public TAutomask
{
bool _ordina_per_codice;
bool _ignora_descrizioni;
bool _check_giac;
const TDocumento* _indoc;
const TDocumento* _outdoc;
@ -98,12 +97,12 @@ bool TConsegna_mask::on_field_event(class TOperable_field& f, TField_event e, lo
return false;
if (e == fe_close)
{
const TString& codcausmag = _outdoc->get(DOC_CAUSMAG);
if (codcausmag.full() && _check_giac)
const TString8 codcausmag = _outdoc->get(DOC_CAUSMAG);
if (codcausmag.full() && _outdoc->tipo().check_giac())
{
const TCausale_magazzino& causmag = ::cached_causale_magazzino(codcausmag);
const int segno = causmag.sgn(s_giac);
if (segno < 0) // Scala dalla giacenza?
const int alarm = causmag.get_int("I4");
if (alarm > 0)
{
TSheet_field& s = (TSheet_field&)f;
TAssoc_array giacenze;
@ -133,19 +132,28 @@ bool TConsegna_mask::on_field_event(class TOperable_field& f, TField_event e, lo
}
}
bool some_errors = false;
FOR_EACH_ASSOC_OBJECT(giacenze, h, k, o)
{
const real& g = *(real*)o;
if (g < ZERO)
{
TString msg;
msg << TR("L'articolo ") << k
<< TR(" avrà una giacenza di ") << g.stringa() << ":\n"
<< TR("Si desidera proseguire ugualmente?");
if (!yesno_box(msg))
return false;
msg << TR("L'articolo ") << k << TR(" avrà una giacenza di ") << g.stringa();
switch (alarm)
{
case 1: warning_box(msg); break;
case 2:
msg << ":\n" << TR("Si desidera proseguire ugualmente?");
if (!yesno_box(msg))
some_errors = true;
break;
default: some_errors = !error_box(msg); break;
}
}
}
if (some_errors)
return false;
}
}
}
@ -293,7 +301,7 @@ void TConsegna_mask::doc2mask(const TDocumento& indoc, const TDocumento& outdoc,
TConsegna_mask::TConsegna_mask(int header_code, bool per_codice, bool ignora_descrizioni)
: TAutomask("velib04d"), _ordina_per_codice(per_codice), _indoc(NULL), _outdoc(NULL),
_ignora_descrizioni(ignora_descrizioni), _check_giac(false)
_ignora_descrizioni(ignora_descrizioni)
{
TCodgiac_livelli cl;
TSheet_field& s = sfield(F_ROWS);
@ -329,7 +337,6 @@ TConsegna_mask::TConsegna_mask(int header_code, bool per_codice, bool ignora_des
agg.set_prompt(codagg);
}
}
_check_giac = c.get_bool("CHECK_GIAC", "mg");
}
///////////////////////////////////////////////////////////
@ -383,12 +390,11 @@ bool TConsegna_ordini::genera_righe_riferimento(const TDocumento& indoc, TDocume
}
TRiga_documento& rout = outdoc[riga_rif];
TString memo(1024);
memo = rout.get(RDOC_DESCR);
TString memo = rout.get(RDOC_DESCR);
if (rout.get_bool(RDOC_DESCLUNGA))
memo << rout.get(RDOC_DESCEST);
// Costruisce la stringa di riferimento
TString rifrow(indoc.tipo().descrizione());