Files correlati : ps Commento : Import ordini export bolle Major Flexform
224 lines
5.0 KiB
C++
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;
|
|
}
|