Patch level : 12.0 1032

Files correlati     : ve0.exe

Commento :

Corretta l'autoevasione ordini

Interno

Da ggiornare anche il programma di esportazione bolle major
This commit is contained in:
Alessandro Bonazzi 2021-02-17 02:09:44 +01:00
parent 5d1ae08d56
commit aeaaa0c0e6
3 changed files with 21 additions and 7 deletions

View File

@ -385,9 +385,7 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
const TDate adata(31, 12, year);
TLista_documenti docs;
TString_array saved;
TString_array evaded;
TArray saved_qta;
TArray evaded_qta;
TString_array to_delete;
TToken_string tok(get(RDOC_ORIGINAL_ROWS), ',');
@ -431,6 +429,8 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
for (int i = storno ? ndocs - 1 : 0; (qta_da_evadere > ZERO) && (storno ? i >= 0 : i < ndocs); storno ? i-- : i++)
{
TDocumento & d = docs[i];
TString_array evaded;
TArray evaded_qta;
for (int nrow = d.find_nrow(tiporiga, codart, storno); (qta_da_evadere > ZERO) && nrow > 0; nrow = d.find_nrow(tiporiga, codart, storno, nrow))
{
@ -502,14 +502,30 @@ void TRiga_documento::update_orders(real qta, TToken_string & tipi, TToken_strin
qta_da_evadere -= qta_evasa;
}
}
TString_array orig_saved(saved);
TArray orig_saved_qta(saved_qta);
const int items = orig_saved.items();
saved.merge_token(evaded);
if (items > 0)
{
saved_qta.destroy();
for (int i = 0; i < items; i++)
{
const int pos = saved.find(orig_saved.row(i));
if (pos >= 0)
saved_qta.add(orig_saved_qta[i], pos);
}
}
FOR_EACH_ARRAY_ITEM(evaded_qta, i, eobj)
{
const int pos = saved.find(evaded.row(i));
real *q = (real *)saved_qta.objptr(pos);
if (q == nullptr)
saved_qta.add(q = new real);
saved_qta.add(q = new real, pos);
*q += *((real *)eobj);
}
FOR_EACH_ARRAY_ITEM(to_delete, i, riga)

View File

@ -3710,7 +3710,7 @@ void TDocumento::auto_evasione(const int nrow)
{
TRiga_documento & rdoc = d[nrow];
if (!rdoc.is_evasa())
if (!rdoc.is_evasa() || storno)
{
TToken_string rdoc_key = rdoc.get_rdoc_key();
real qta_evasa = qta_da_evadere;

View File

@ -58,8 +58,6 @@ int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
CHECK(tipocf == 'C' || tipocf == 'F' || tipocf == ' ', "Il tipo deve essere Cliente o Fornitore o Entrambi");
CHECKD(tipocf == ' ' || clifo > 0L, "Codice cliente non valido", clifo);
CHECKD(anno > 2000, "Anno non valido: ", anno);
CHECK(!tipidoc.empty_items(), "Lista dei tipi documento vuota");
CHECK(!statidoc.empty_items(), "Lista degli stati documento vuota");
const int key = (tipocf == ' ' && clifo == 0L) ? 1:2;
TRelation doc(LF_DOC);
@ -143,7 +141,7 @@ int TLista_documenti::read(char provv, char tipocf, long clifo, int anno,
{
const TString4 tipodoc = head.get(DOC_TIPODOC);
const TString4 statodoc = head.get(DOC_STATO);
bool match = false;
bool match = (tipidoc.items() == 0);
for (int i = tipidoc.items()-1; i>=0; i--)
{