Patch level : 12.0 1176
Files correlati : ve0.exe ve1.exe ve5.exe ve6.exe Commento: L'autoevasione viene fatta indipendentemente dallo stato del documento che evade (bolla, fattura...) aggiunta una segnalazione quanto si cerca di stornare ordini già in stato evaso Interno: la segnalazione è : La quantità impostata (NR 3)è minore di quella\nrelativa ad ordini già evasi(NR 5) per sistemare la situazione bisogna andare a spostare gli ordini in stato evaso in stato non evaso
This commit is contained in:
parent
d2f68becc6
commit
1bad317f99
@ -1020,6 +1020,7 @@ public:
|
||||
|
||||
void update_row_auto_qta(int nrow, real & qta, bool plus = true, bool insert = false);
|
||||
bool check_auto_evasione() const { return _qta_evasa_auto.items() > 0; }
|
||||
real TDocumento::qta_bloccata_auto_evasione(const int nrow);
|
||||
void auto_evasione(const int nrow = -1);
|
||||
void qta_evasa_auto_pack(const int nrow) { _qta_evasa_auto.destroy(nrow, true); }
|
||||
|
||||
|
@ -3683,6 +3683,33 @@ void TDocumento::update_row_auto_qta(int nrow, real & qta, bool plus, bool inser
|
||||
_qta_evasa_auto.destroy(nrow);
|
||||
}
|
||||
|
||||
real TDocumento::qta_bloccata_auto_evasione(const int nrow)
|
||||
{
|
||||
real qta_bloccata;
|
||||
TConsegna_ordini e(tipo().auto_evasione_elab());
|
||||
const char stato_evaso = e.cstato_finale_doc_iniziale();
|
||||
TToken_string rows(row(nrow).get(RDOC_ORIGINAL_ROWS), ',');
|
||||
TToken_string qtas(row(nrow).get(RDOC_ORIGINAL_QTAROWS), ',');
|
||||
int pos = 0;
|
||||
|
||||
FOR_EACH_TOKEN(rows, k)
|
||||
{
|
||||
TToken_string key(k);
|
||||
const int anno = key.get_int(1);
|
||||
const char provv = key.get_char(2);
|
||||
const long num = key.get_long(3);
|
||||
const TString codnum = key.get(0);
|
||||
TDocumento d(provv, anno, codnum, num);
|
||||
|
||||
|
||||
|
||||
if (d.stato() >= stato_evaso)
|
||||
qta_bloccata += qtas.get_real(pos);
|
||||
pos++;
|
||||
}
|
||||
return qta_bloccata;
|
||||
}
|
||||
|
||||
void TDocumento::auto_evasione(const int nrow)
|
||||
{
|
||||
if (tipo().auto_evasione())
|
||||
|
@ -2054,9 +2054,21 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
if (doc.tipo().auto_evasione() && !__new_row)
|
||||
{
|
||||
const TCodice_articolo codart = ss.get_str_row_cell(r, FR_CODART);
|
||||
const real qta_bloccata = doc.qta_bloccata_auto_evasione(r + 1);
|
||||
const real qta = ss.get_real_row_cell(r, FR_QTA);
|
||||
|
||||
if (qta_bloccata > qta)
|
||||
{
|
||||
const TString & um = ss.get_str_row_cell(r, FR_UMQTA);
|
||||
|
||||
ss.set_row_cell(FR_QTA, qta_bloccata, r);
|
||||
return ss.error_box(FR("La quantità impostata (%s %s)è minore di quella\nrelativa ad ordini già evasi(%s %s)"),
|
||||
(const char *) um, (const char *) qta.stringa(),
|
||||
(const char *)um, (const char *) qta_bloccata.stringa());
|
||||
}
|
||||
if (codart != m.codart())
|
||||
doc.auto_evasione(r + 1);
|
||||
|
||||
}
|
||||
__new_row = false;
|
||||
riga.autosave(ss);
|
||||
|
Loading…
x
Reference in New Issue
Block a user