Patch level : 12.0 no-patch

Files correlati     : ps6362.exe (ps Major)
Commento            :
- Importazione articoli con ricerca codice interno major.
- Esportazione bolle con condice articolo COD_PMS (flexform).
This commit is contained in:
Simone Palacino 2020-08-20 12:37:35 +02:00
parent 8dfc4b9a9f
commit 6c5012c9ab
4 changed files with 36 additions and 19 deletions

View File

@ -6,6 +6,7 @@
#include "date.h"
#include "progind.h"
#include "velib.h"
#include "sqlset.h"
#define CHECK_CONDXML_OR_RETURNFALSE(cond, msg) { \
TString str; \
@ -275,6 +276,16 @@ bool TFlexform_xml_ordini::convert() const
return false;
}
TString TFlexform_xml_ordini::flexart2codart(const TString& cod_art_flexform)
{
TSQL_recordset sql("");
TString query; query << "SELECT * FROM ANAMAG WHERE COD_PMS = '" << cod_art_flexform << "'";
sql.set(query);
if(sql.items() == 1)
return sql.get(sql.find_column("CODART")).as_string();
return "";
}
bool TFlexform_xml_ordini::create_doc()
{
const shared_ptr<TXML_element> esa_import = _importer._imported[1];
@ -320,9 +331,11 @@ bool TFlexform_xml_ordini::create_doc()
const TString& dat_evas_riga = datarow_r.get_val_child("dat_evas_riga");
const TString& des_campo_libero6 = datarow_r.get_val_child("des_campo_libero6");
TString cod_art_major = flexart2codart(cod_art);
TRiga_documento& d_row = doc.new_row(ind_tiporiga == "D" ? "05" : "01");
if (ind_tiporiga != "D")
d_row.put(RDOC_CODART, cod_art); // todo: codice articolo da mandarlo a cercare nell'altro campo
d_row.put(RDOC_CODART, !cod_art_major.empty() ? cod_art_major : cod_art);
d_row.put(RDOC_DESCR, des_articolo_riga);
d_row.put(RDOC_QTA, qta_merce);
d_row.put("DATA_EVASIONE_RIGA", dat_evas_riga); // RG1 -> DATA_EVASIONE_RIGA

View File

@ -209,6 +209,8 @@ public:
bool convert() const;
bool create_doc();
static TString flexart2codart(const TString& string);
TFlexform_xml_ordini(const char* xml_name = "", const char* codnum = "", int codcli_flex = 12);
};

View File

@ -9,7 +9,7 @@ int main(int argc, char** argv)
switch (r)
{
default:
case 0: rt = ps6362100(argc, argv); break; // Esportrazione Major-Flexform
case 0: rt = ps6362100(argc, argv); break; // Import/Export Major-Flexform
}
return rt;
}

View File

@ -151,7 +151,7 @@ void TMajor_export_mask::load_all()
// Main Program
///////////////////////////////////////////////////////////
class TMajor_export_app : public TSkeleton_application
class TMajor_flexform_boll_app : public TSkeleton_application
{
TString _fld_dest;
@ -163,16 +163,16 @@ class TMajor_export_app : public TSkeleton_application
void main_loop() override;
public:
TMajor_export_app() = default;
TMajor_flexform_boll_app() = default;
};
bool TMajor_export_app::create()
bool TMajor_flexform_boll_app::create()
{
open_files(LF_DOC, LF_RIGHEDOC);
return TSkeleton_application::create();
}
TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_fld, const int from, const int to, bool ddt)
TFilename TMajor_flexform_boll_app::check_name_file(const TString& dir, const bool sub_fld, const int from, const int to, bool ddt)
{
TString cartella = dir; cartella << "/";
if (sub_fld)
@ -206,7 +206,7 @@ TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_
return xml;
}
TString TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_doc)
TString TMajor_flexform_boll_app::get_riferimento_flexform(const TSQL_recordset& righe_doc)
{
const TString& rg1 = righe_doc.get(3).as_string();
const TToken_string t(rg1, char(0xB6)); // Simbolo paragrafo ¶
@ -227,7 +227,7 @@ TString TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_
return "";
}
bool TMajor_export_app::export_ddt(TMask& msk)
bool TMajor_flexform_boll_app::export_ddt(TMask& msk)
{
const TString& dir = msk.get(F_FLDDEST);
const bool sub_fld = msk.get_bool(F_SUBFLD);
@ -257,21 +257,23 @@ bool TMajor_export_app::export_ddt(TMask& msk)
xml_ddts.set_testata(day.string(), n_doc);
// Righe documento
TString query_righe;
query_righe << "SELECT CODART, DESCR, QTA, RG1, DESCLUNGA, DESCEST\n"
"FROM rdoc\nWHERE CODNUM = '" << codnum << "' AND ANNO = " << year << " AND PROVV = 'D' AND NDOC=" << n_doc;
query_righe << "SELECT rdoc.CODART, rdoc.DESCR, rdoc.QTA, rdoc.RG1, rdoc.DESCLUNGA, rdoc.DESCEST, COD_PMS\n"
"FROM rdoc\n"
"JOIN anamag ON rdoc.CODART = anamag.CODART\n"
"WHERE CODNUM = '" << codnum << "' AND ANNO = " << year << " AND PROVV = 'D' AND NDOC=" << n_doc;
TSQL_recordset righe_doc(query_righe);
for (bool ok_r = righe_doc.move_first(); ok_r; ok_r = righe_doc.move_next())
{
shared_ptr<TDDT_riga_xml> riga = xml_ddts.new_row();
const TString& cod_art = righe_doc.get(0).as_string(); // todo: usa il cod.art. di flexform non quello di campo (vedi terza colonna nell'anteprima)
const TString& cod_art_flexform = righe_doc.get(6).as_string();
TString descr = righe_doc.get(1).as_string();
const TString& qta = righe_doc.get(2).as_string();
const TString& desccampolibero6 = get_riferimento_flexform(righe_doc); // get(3) RG1
if (righe_doc.get(4).as_bool())
descr << righe_doc.get(5).as_string();
riga->set_datarow("C", cod_art, descr, qta, desccampolibero6);
riga->set_datarow("C", cod_art_flexform, descr, qta, desccampolibero6);
xml_ddts.add_row(riga);
}
}
@ -281,7 +283,7 @@ bool TMajor_export_app::export_ddt(TMask& msk)
return ok;
}
bool TMajor_export_app::import_ordini(TMask& msk)
bool TMajor_flexform_boll_app::import_ordini(TMask& msk)
{
bool ok = false;
const TString& dir_in = msk.get(F_FLDSOURCE);
@ -323,7 +325,7 @@ bool TMajor_export_app::import_ordini(TMask& msk)
return ok;
}
void TMajor_export_app::main_loop()
void TMajor_flexform_boll_app::main_loop()
{
TMajor_export_mask msk;
while (msk.run() == K_ENTER)
@ -351,7 +353,7 @@ void TMajor_export_app::main_loop()
int ps6362100(const int argc, char* argv[])
{
TMajor_export_app pe;
pe.run(argc, argv, TR("Esportazione Major-Flexform"));
TMajor_flexform_boll_app pe;
pe.run(argc, argv, TR("Import/Export Major-Flexform"));
return 0;
}