Patch level : 12.0 no patch

Files correlati     :
Commento            :

Major
Aggiunta gestione di più ordini da importare nello stesso xml
This commit is contained in:
Alessandro Bonazzi 2021-02-05 18:10:52 +01:00
parent 2ef449d9cd
commit 014a99411e

View File

@ -209,69 +209,74 @@ bool TFlexform_xml_ordini::create_doc()
if (import_doc()) if (import_doc())
{ {
TLog_report * log = _log; TLog_report * log = _log;
const TXmlItem * first = FindFirstChild("ORDINE_IMPEGNO"); //const TXmlItem * first = FindFirstChild("ORDINE_IMPEGNO");
long id_ordine; int n = 0;
if (first != nullptr) for (TXmlItem * ord = GetChild(n); ord != nullptr; ord = GetChild(++n))
{ {
if (first->GetAttr("TipoOperazione") != "Insert") long id_ordine;
XML_ERROR(TR("il Tipo Operazione deve essere Insert."));
const TXmlItem * ordine = first->FindFirstChild("OR_ORDINIT"); if (ord->GetTag() == "ORDINE_IMPEGNO")
if (ordine != nullptr)
{ {
const TXmlItem * testata = ordine->FindFirstChild("datarow"); if (ord->GetAttr("TipoOperazione") != "Insert")
XML_ERROR(TR("il Tipo Operazione deve essere Insert."));
if (testata->GetEnclosedLong("des_num_esterno", id_ordine)) const TXmlItem * ordine = ord->FindFirstChild("OR_ORDINIT");
if (ordine != nullptr)
{ {
TDate dat_doc_esterno; const TXmlItem * testata = ordine->FindFirstChild("datarow");
TDate dat_evasione;
if (!testata->GetEnclosedDate("dat_doc_esterno", dat_doc_esterno)) if (testata->GetEnclosedLong("des_num_esterno", id_ordine))
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine");
if (!testata->GetEnclosedDate("dat_evasione", dat_evasione))
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine");
// "sig_serie_esterno"
TDocumento doc('D', dat_doc_esterno.year(), _codnum, -1);
TString msg(TR("Importazione documento ")); msg << id_ordine;
XML_MSG(msg);
doc.put(DOC_TIPODOC, _codnum);
doc.put(DOC_STATO, "2");
doc.put(DOC_DATADOC, dat_doc_esterno);
doc.put(DOC_TIPOCF, "C");
doc.put(DOC_CODCF, _codcli_flex);
doc.put(DOC_DATACONS, dat_evasione);
const int nrow = ordine->GetChildren();
for (int i = 1; i < nrow; i++)
{ {
const TXmlItem * row = ordine->GetChild(i); TDate dat_doc_esterno;
TDate dat_evasione;
if (row->GetTag() == "OR_ORDINIR") if (!testata->GetEnclosedDate("dat_doc_esterno", dat_doc_esterno))
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine");
if (!testata->GetEnclosedDate("dat_evasione", dat_evasione))
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine");
// "sig_serie_esterno"
TDocumento doc('D', dat_doc_esterno.year(), _codnum, -1);
TString msg(TR("Importazione documento ")); msg << id_ordine;
XML_MSG(msg);
doc.put(DOC_TIPODOC, _codnum);
doc.put(DOC_STATO, "2");
doc.put(DOC_DATADOC, dat_doc_esterno);
doc.put(DOC_TIPOCF, "C");
doc.put(DOC_CODCF, _codcli_flex);
doc.put(DOC_DATACONS, dat_evasione);
const int nrow = ordine->GetChildren();
for (int i = 1; i < nrow; i++)
{ {
const TXmlItem * data = row->FindFirstChild("datarow"); const TXmlItem * row = ordine->GetChild(i);
if (data != nullptr) if (row->GetTag() == "OR_ORDINIR")
add_row(id_ordine, i, doc, data, log); {
const TXmlItem * data = row->FindFirstChild("datarow");
if (data != nullptr)
add_row(id_ordine, i, doc, data, log);
else
XML_ROW_NOT_FOUND(id_ordine, i);
}
else else
XML_ROW_NOT_FOUND(id_ordine, i); XML_ROW_NOT_FOUND(id_ordine, i);
} }
else ok = doc.write() == NOERR;
XML_ROW_NOT_FOUND(id_ordine, i);
} }
ok = doc.write() == NOERR; else
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine");
} }
else else
XML_TAG_NOT_FOUND(id_ordine, 0, "N.ro ordine"); XML_NOT_FOUND("Testata");
} }
else else
XML_NOT_FOUND("Testata"); XML_NOT_FOUND("ORDINE_IMPEGNO");
} }
else
XML_NOT_FOUND("ORDINE_IMPEGNO");
} }
return ok; return ok;
} }