campo-sirio/src/ps/ps6362100.cpp
Alessandro Bonazzi 09aab17a34 Patch level : 12.0 no-patch
Files correlati     : ps
Commento            :

Import ordini export bolle Major Flexform
2020-11-25 19:32:22 +01:00

224 lines
5.0 KiB
C++

//#include <strings.h>
#include <applicat.h> // TSkeleton_application
#include <automask.h> // TAutomask
#include <config.h>
#include <isam.h>
#include <lffiles.h>
#include <progind.h> // TProgress_monitor
#include <recarray.h>
#include <tabutil.h> // TTable
#include <sqlset.h> // TSQL_recordset
#include <utility.h> // list_files
#include <clifo.h>
#include "../mg/anamag.h"
#include "../ve/velib.h"
#include "ps6362.h"
#include "ps6362100a.h"
#include "flexform_xml.h"
///////////////////////////////////////////////////////////
// Main Mask
///////////////////////////////////////////////////////////
class TMajor_export_mask:public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
public:
void load_all();
TMajor_export_mask() : TAutomask("ps6362100a") {}
// ~TMajor_export_mask() {}
};
bool TMajor_export_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch(o.dlg())
{
default:
break;
}
return true;
}
void TMajor_export_mask::load_all()
{
load();
TFilename dir = get(F_FLDDEST);
if (dir.blank())
{
dir = get_system_dir(desktop_dir);
set(F_FLDDEST, dir);
set(F_SUBFLD, true);
}
set(F_ANNO_ELAB, today.year());
dir = get(F_FLDSOURCE);
if (dir.blank())
{
dir = get_system_dir(desktop_dir);
dir.add("upload");
set(F_FLDSOURCE, dir);
}
if(get(F_NUMDDT).blank())
set(F_NUMDDT, "B01");
if (get(F_NUMORD).blank())
set(F_NUMORD, "ORC");
}
///////////////////////////////////////////////////////////
// Main Program
///////////////////////////////////////////////////////////
class TMajor_flexform_boll_app:public TSkeleton_application
{
TString _fld_dest;
bool create();
bool check_name_file(const TString & dir, TFilename & xml, bool sub_fld, int from, int to, bool ddt = true);
bool export_ddt(TMask& msk);
bool import_ordini(TMask& msk);
void main_loop();
public:
TMajor_flexform_boll_app() {}
};
bool TMajor_flexform_boll_app::create()
{
open_files(LF_DOC, LF_RIGHEDOC, LF_CLIFO, 0);
return TSkeleton_application::create();
}
bool TMajor_flexform_boll_app::check_name_file(const TString & dir, TFilename & xml, const bool sub_fld, const int from, const int to, bool ddt)
{
TString cartella = dir; cartella << "/";
TString da, a;
TString name;
if (sub_fld)
cartella << "CAMPO_" << TDate(TODAY).date2ansi() << "/";
da.format("%07d", from);
a.format("%07d", to);
name << (ddt ? "ddt" : "ord") << TDate(TODAY).year() << da << a;
xml = cartella;
if (!xml.exist())
make_dir(xml);
xml << name << ".xml";
TString msg(TR("Il file ")); msg << xml << TR(" esiste.Devo rigenerarlo ? ");
return !xml.exist() || yesnocancel_box(msg) == K_YES;
}
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);
const int year = msk.get_int(F_ANNO_ELAB);
const long codcli = msk.get_long(F_CODCF);
const long from = msk.get_long(F_NUMDDT_DA);
const long to = msk.get_int(F_NUMDDT_A);
const TString & codnum = msk.get(F_NUMDDT);
TLog_report log;
TFilename path_xml;
bool ok = check_name_file(dir, path_xml, sub_fld, from, to);
if (ok)
{
TFlexform_xml_ddt xml_ddts(path_xml);
xml_ddts.export_docs(codnum, codcli, year, from,to, &log);
#ifdef DBG
log.print_or_preview();
#endif
}
return ok;
}
bool TMajor_flexform_boll_app::import_ordini(TMask& msk)
{
bool ok = false;
const TString& dir_in = msk.get(F_FLDSOURCE);
TFilename path(dir_in);
TString_array flist;
TBit_array lookup_t;
TString header("Importazione ordini");
TLog_report log(header);
path.add("*.xml");
list_files(path, flist);
{
TProgress_monitor prog(flist.items(), header);
FOR_EACH_ARRAY_ROW(flist, nr, str)
{
if (prog.add_status())
{
TFilename ford_filename(*str);
if (ford_filename.exist())
{
TFlexform_xml_ordini order(ford_filename, &log, msk.get(F_NUMORD), msk.get_int(F_CODCF));
ok = order.create_doc();
}
else
{
TString msg;
msg << TR("Il file ") << ford_filename << TR("non esiste\nProcedura terminata.");
log.log(2, msg);
}
}
}
}
#ifdef DBG
// log.print_or_preview();
#endif
return ok;
}
void TMajor_flexform_boll_app::main_loop()
{
TMajor_export_mask msk;
msk.load_all();
while (msk.run() == K_ENTER)
{
bool ok = true;
TString msg;
msk.save();
if (msk.get(F_TIPODOC) == "D")
{
msg << "Esportazione ";
ok &= export_ddt(msk);
msg << "DDT";
}
else
{
msg << "Importazione ";
ok &= import_ordini(msk);
msg << "ordini";
}
if (ok)
message_box(msg << " eseguita correttamente.");
else
warning_box(msg << " non completata.");
}
}
int ps6362100(const int argc, char* argv[])
{
TMajor_flexform_boll_app pe;
pe.run(argc, argv, TR("Import/Export Major-Flexform"));
return 0;
}