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);
|
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; }
|
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 auto_evasione(const int nrow = -1);
|
||||||
void qta_evasa_auto_pack(const int nrow) { _qta_evasa_auto.destroy(nrow, true); }
|
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);
|
_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)
|
void TDocumento::auto_evasione(const int nrow)
|
||||||
{
|
{
|
||||||
if (tipo().auto_evasione())
|
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)
|
if (doc.tipo().auto_evasione() && !__new_row)
|
||||||
{
|
{
|
||||||
const TCodice_articolo codart = ss.get_str_row_cell(r, FR_CODART);
|
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())
|
if (codart != m.codart())
|
||||||
doc.auto_evasione(r + 1);
|
doc.auto_evasione(r + 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
__new_row = false;
|
__new_row = false;
|
||||||
riga.autosave(ss);
|
riga.autosave(ss);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user