Patch level : 12.0 1034
Files correlati : ve0.exe Commento : Corretta l'autoevasione ordini Interno Da ggiornare anche il programma di esportazione bolle major Da verificare i casi normali
This commit is contained in:
parent
cce0c55a8c
commit
82ed71694b
@ -435,36 +435,41 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
|
||||
for (int nrow = d.find_nrow(tiporiga, codart, storno); (qta_da_evadere > ZERO) && nrow > 0; nrow = d.find_nrow(tiporiga, codart, storno, nrow))
|
||||
{
|
||||
TRiga_documento & rdoc = d[nrow];
|
||||
const TToken_string & rdoc_key = rdoc.get_rdoc_key();
|
||||
|
||||
if (!rdoc.is_evasa() || storno)
|
||||
{
|
||||
TToken_string rdoc_key = rdoc.get_rdoc_key();
|
||||
real qta_evasa = qta_da_evadere;
|
||||
bool riga_evasa = false;
|
||||
|
||||
if (storno)
|
||||
{
|
||||
const real & evaso = rdoc.qtaevasa();
|
||||
|
||||
if (qta_evasa > evaso)
|
||||
if (get(RDOC_ORIGINAL_ROWS).find(rdoc_key) >= 0)
|
||||
{
|
||||
qta_evasa = evaso;
|
||||
to_delete.add(rdoc_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
const int pos = saved.find(rdoc_key);
|
||||
const real & evaso = rdoc.qtaevasa();
|
||||
|
||||
if (pos >= 0)
|
||||
if (qta_evasa > evaso)
|
||||
{
|
||||
real *q = (real *)saved_qta.objptr(pos);
|
||||
|
||||
if (q == nullptr)
|
||||
evaded_qta.add(q = new real);
|
||||
*q -= qta_evasa;
|
||||
qta_evasa = evaso;
|
||||
to_delete.add(rdoc_key);
|
||||
}
|
||||
else
|
||||
{
|
||||
const int pos = saved.find(rdoc_key);
|
||||
|
||||
if (pos >= 0)
|
||||
{
|
||||
real *q = (real *)saved_qta.objptr(pos);
|
||||
|
||||
if (q == nullptr)
|
||||
evaded_qta.add(q = new real);
|
||||
*q -= qta_evasa;
|
||||
}
|
||||
}
|
||||
rdoc.sub(RDOC_QTAEVASA, qta_evasa);
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
rdoc.sub(RDOC_QTAEVASA, qta_evasa);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -472,7 +477,7 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
|
||||
|
||||
if (residuo <= qta_da_evadere)
|
||||
{
|
||||
if (i < ndocs - 1)
|
||||
if (i < ndocs - 1 || d.find_nrow(tiporiga, codart, storno, nrow) >= 0)
|
||||
qta_evasa = residuo;
|
||||
riga_evasa = true;
|
||||
}
|
||||
@ -497,9 +502,9 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
|
||||
evaded_qta.add(q = new real);
|
||||
*q += qta_evasa;
|
||||
}
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3672,8 +3672,10 @@ void TDocumento::auto_evasione(const int nrow)
|
||||
const TString key(k);
|
||||
const TString4 tiporiga = key.left(2);
|
||||
real qta_da_evadere = storno ? -qta : qta;
|
||||
const TString40 codart(key.mid(2));
|
||||
TString codart = key.mid(2, 28);
|
||||
const TString original_rdoc_key = key.mid(30);
|
||||
|
||||
codart.rtrim();
|
||||
if (codart.full())
|
||||
{
|
||||
const int year = get_date(DOC_DATADOC).year();
|
||||
@ -3682,7 +3684,6 @@ void TDocumento::auto_evasione(const int nrow)
|
||||
TLista_documenti docs;
|
||||
TString_array evaded;
|
||||
TArray evaded_qta;
|
||||
TString_array to_delete;
|
||||
|
||||
int ndocs = docs.read('D', get_char(DOC_TIPOCF), get_long(DOC_CODCF),
|
||||
year, tipi, stati, dadata, adata);
|
||||
@ -3709,23 +3710,25 @@ void TDocumento::auto_evasione(const int nrow)
|
||||
for (int nrow = d.find_nrow(tiporiga, codart, storno); (qta_da_evadere > ZERO) && nrow > 0; nrow = d.find_nrow(tiporiga, codart, storno, nrow))
|
||||
{
|
||||
TRiga_documento & rdoc = d[nrow];
|
||||
const TToken_string & rdoc_key = rdoc.get_rdoc_key();
|
||||
|
||||
if (!rdoc.is_evasa() || storno)
|
||||
{
|
||||
TToken_string rdoc_key = rdoc.get_rdoc_key();
|
||||
real qta_evasa = qta_da_evadere;
|
||||
bool riga_evasa = false;
|
||||
|
||||
if (storno)
|
||||
{
|
||||
const real & evaso = rdoc.qtaevasa();
|
||||
|
||||
if (qta_evasa > evaso)
|
||||
if (original_rdoc_key.find(rdoc_key) >= 0)
|
||||
{
|
||||
qta_evasa = evaso;
|
||||
to_delete.add(rdoc_key);
|
||||
const real & evaso = rdoc.qtaevasa();
|
||||
|
||||
if (qta_evasa > evaso)
|
||||
qta_evasa = evaso;
|
||||
rdoc.sub(RDOC_QTAEVASA, qta_evasa);
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
rdoc.sub(RDOC_QTAEVASA, qta_evasa);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3733,14 +3736,14 @@ void TDocumento::auto_evasione(const int nrow)
|
||||
|
||||
if (residuo <= qta_da_evadere)
|
||||
{
|
||||
if (i < ndocs - 1)
|
||||
if (i < ndocs - 1 || d.find_nrow(tiporiga, codart, storno, nrow) >= 0)
|
||||
qta_evasa = residuo;
|
||||
riga_evasa = true;
|
||||
}
|
||||
rdoc.add(RDOC_QTAEVASA, qta_evasa);
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
rdoc.put(RDOC_RIGAEVASA, riga_evasa);
|
||||
qta_da_evadere -= qta_evasa;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3764,17 +3767,18 @@ void TDocumento::auto_evasione(const int nrow)
|
||||
|
||||
if (codart.full())
|
||||
{
|
||||
real * qta = (real *)_qta_evasa_auto_changed.objptr(codart);
|
||||
TString key(rdoc.tipo().codice());
|
||||
|
||||
key.rpad(2);
|
||||
key << codart;
|
||||
key.rpad(30);
|
||||
key << rdoc.get(RDOC_ORIGINAL_ROWS);
|
||||
|
||||
real * qta = (real *)_qta_evasa_auto_changed.objptr(key);
|
||||
real qta_da_stornare = (real &)_qta_evasa_auto[nrow];
|
||||
|
||||
if (qta == nullptr)
|
||||
{
|
||||
TString key = rdoc.tipo().codice();
|
||||
|
||||
key.rpad(2);
|
||||
key << codart;
|
||||
_qta_evasa_auto_changed.add(key, qta = new real);
|
||||
}
|
||||
*qta += qta_da_stornare;
|
||||
_row_auto_cod_changed.set(nrow, true);
|
||||
_auto_cod_modify_pend = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user