Patch level : 2.2 214

Files correlati     :  ve0.exe
Ricompilazione Demo : [ ]
Commento

Bug 0000526

Se faccio una elaborazione che aggiunge al documento attuale e non ci sono la numerazione o l'anno ho le seguenti segnalazioni errate numerazione nulla o anno assente.

 Attenzione : Bisogna riprovare tutti i tipi di elaborazioni interattive


git-svn-id: svn://10.65.10.50/trunk@13480 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2005-11-09 16:31:19 +00:00
parent ed36aea3ab
commit 6569293e02
2 changed files with 64 additions and 5 deletions

View File

@ -130,7 +130,7 @@ END
NUMBER F_ANNO_ELAB 4
BEGIN
PROMPT 2 5 "Anno documento "
CHECKTYPE REQUIRED
// CHECKTYPE REQUIRED
END
LIST F_TIPOCF_ELAB 1 11

View File

@ -2262,9 +2262,15 @@ int TElabora_mask::update_list()
int items = 0;
if (from_elab)
{
items = _elab.select(elabs, tipo, stato,"","") ;
field(F_ANNO_ELAB).check_type(CHECK_REQUIRED);
}
else
{
field(F_ANNO_ELAB).check_type(CHECK_NONE);
items = _elab.select(elabs, tipo_elab, stato_elab, tipo, stato);
}
TList_field & f = (TList_field &) field(F_ELAB);
TToken_string codes;
@ -2313,7 +2319,7 @@ bool TElabora_mask::elabora()
const long numdoc = field(F_NDOC_ELAB).active() ? get_long(F_NDOC_ELAB) : app_doc.get_long(DOC_NDOC);
const bool update_header = get_bool(F_UPDATE_HEADER);
TDocumento* newdoc = new TDocumento(get(F_PROVV_ELAB)[0], get_int(F_ANNO_ELAB), get(F_CODNUM_ELAB), numdoc);
/* TDocumento* newdoc = new TDocumento(get(F_PROVV_ELAB)[0], get_int(F_ANNO_ELAB), get(F_CODNUM_ELAB), numdoc);
TDocumento& d = *newdoc;
if (numdoc <= 0)
@ -2355,8 +2361,8 @@ bool TElabora_mask::elabora()
app_doc.put(DOC_DATADOC, datadoc);
app_doc.put(DOC_DATAINSC, datainsc);
app_doc.put(DOC_STATO, stato);
}
} */
const bool from_elab = !get_bool(F_TYPE);
TElaborazione * e = curr_elab();
@ -2372,6 +2378,39 @@ bool TElabora_mask::elabora()
}
if (from_elab)
{
const char provv = get(F_PROVV_ELAB)[0];
const int anno = get_int(F_ANNO_ELAB);
const TString16 codnum(get(F_CODNUM_ELAB));
const TString16 tipo(get(F_TIPODOC_ELAB));
const TString16 stato(get(F_STATODOC_ELAB));
if (anno == 0 || codnum.empty() || tipo.empty() || stato.empty())
return false;
TDocumento* newdoc = new TDocumento(provv, anno , codnum, numdoc);
TDocumento& d = *newdoc;
if (numdoc <= 0)
{
TDocumento::copy_data(d.head(), app_doc.head());
d.put(DOC_TIPODOC, tipo);
d.put(DOC_STATO, stato);
const TDate datadoc = d.get_date(DOC_DATADOC);
const TDate datainsc = d.get_date(DOC_DATAINSC);
const bool equal = !datainsc.ok() || datadoc == datainsc;
d.put(DOC_DATADOC, get(F_DATADOC_ELAB));
if (equal)
d.zero(DOC_DATAINSC);
const TTipo_documento & t = d.tipo();
if (t.mov_mag())
d.put(DOC_CAUSMAG, t.caus_mov());
else
d.zero(DOC_CAUSMAG);
}
in.add(app_doc);
out.add(d);
if (e->elabora(in, out, TDate(TODAY), TRUE))
@ -2385,6 +2424,8 @@ bool TElabora_mask::elabora()
update_mask = TRUE;
}
}
delete newdoc;
}
else
{
@ -2401,6 +2442,24 @@ bool TElabora_mask::elabora()
in.add(d);
}
if (update_header)
{
const TString16 tipo_doc(app_doc.get(DOC_TIPODOC));
const TString16 caus_mag(app_doc.get(DOC_CAUSMAG));
const long movmag = app_doc.get_long(DOC_MOVMAG);
const TDate datadoc = app_doc.get_date(DOC_DATADOC);
const TDate datainsc = app_doc.get_date(DOC_DATAINSC);
const char stato = app_doc.stato();
TDocumento::copy_data(app_doc.head(), in[0].head());
app_doc.put(DOC_TIPODOC, tipo_doc);
app_doc.put(DOC_CAUSMAG, caus_mag);
app_doc.put(DOC_MOVMAG, movmag);
app_doc.put(DOC_DATADOC, datadoc);
app_doc.put(DOC_DATAINSC, datainsc);
app_doc.put(DOC_STATO, stato);
}
if (e->elabora(in, out, TDate(TODAY), TRUE))
{
if (out[0] != app_doc)
@ -2431,7 +2490,7 @@ bool TElabora_mask::elabora()
}
}
delete newdoc;
// delete newdoc;
// Azzera l'anno in caso di ordini
if (in.items() > 0 && in[0].is_ordine())