Patch level : 12.0 no-patch
Files correlati : ps6362.exe ps6362100a.msk Commento : - Personalizzazione Major: - Aggiunto campo in esportazione "descampolibero6" - Aggiunto campo maschera per filtro cliente - default: flexform
This commit is contained in:
parent
f28826dc39
commit
3cdf8db1eb
@ -1,6 +1,3 @@
|
|||||||
#include <rpc.h>
|
|
||||||
#include <rpcdce.h>
|
|
||||||
|
|
||||||
#include "flexform_xml.h"
|
#include "flexform_xml.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "date.h"
|
#include "date.h"
|
||||||
@ -117,27 +114,6 @@ TOrdini_riga_xml::~TOrdini_riga_xml()
|
|||||||
// Flexform xml export
|
// Flexform xml export
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const char* TFlexform_xml::generate_GUID()
|
|
||||||
{
|
|
||||||
static TString _guid;
|
|
||||||
if (_guid.empty())
|
|
||||||
{
|
|
||||||
char cstr[39];
|
|
||||||
size_t chars;
|
|
||||||
GUID uuid;
|
|
||||||
if (UuidCreate(&uuid) == RPC_S_OK)
|
|
||||||
{
|
|
||||||
LPOLESTR lpsz;
|
|
||||||
StringFromCLSID(uuid, &lpsz);
|
|
||||||
wcstombs_s(&chars, cstr, lpsz, wcslen(lpsz));
|
|
||||||
_guid = cstr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
_guid = "";
|
|
||||||
}
|
|
||||||
return _guid;
|
|
||||||
}
|
|
||||||
|
|
||||||
TFlexform_xml::TFlexform_xml(const char* xml_name) : _file_name(xml_name), _fout(nullptr)
|
TFlexform_xml::TFlexform_xml(const char* xml_name) : _file_name(xml_name), _fout(nullptr)
|
||||||
{
|
{
|
||||||
// <ESA_IMPORT Source=? CreationDate=? InstanceGuid=? FileVersion="1" />
|
// <ESA_IMPORT Source=? CreationDate=? InstanceGuid=? FileVersion="1" />
|
||||||
@ -163,7 +139,7 @@ int TFlexform_xml_ddt::add_doc()
|
|||||||
return _docs_unico.size();
|
return _docs_unico.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
int TFlexform_xml_ddt::add_row(shared_ptr<TDDT_riga_xml> riga, int which_doc)
|
int TFlexform_xml_ddt::add_row(const shared_ptr<TDDT_riga_xml>& riga, const int which_doc)
|
||||||
{
|
{
|
||||||
int i = which_doc < 0 ? (int)_testate.size() - 1 : which_doc;
|
int i = which_doc < 0 ? (int)_testate.size() - 1 : which_doc;
|
||||||
if (!_testate.empty() && i < (int)_testate.size())
|
if (!_testate.empty() && i < (int)_testate.size())
|
||||||
|
@ -147,7 +147,6 @@ protected:
|
|||||||
ofstream* _fout;
|
ofstream* _fout;
|
||||||
TEsa_import_xml _esa_import;
|
TEsa_import_xml _esa_import;
|
||||||
|
|
||||||
static const char* generate_GUID();
|
|
||||||
void set_indentation(const bool use_tab, const short n_spaces) { _esa_import.set_indentation(use_tab, n_spaces); }
|
void set_indentation(const bool use_tab, const short n_spaces) { _esa_import.set_indentation(use_tab, n_spaces); }
|
||||||
virtual bool print() pure;
|
virtual bool print() pure;
|
||||||
|
|
||||||
@ -174,11 +173,11 @@ public:
|
|||||||
* \returns indice documento in cui e' stata inserita la riga.
|
* \returns indice documento in cui e' stata inserita la riga.
|
||||||
* \returns -1 se non e' mai stato inserito alcun documento o l'indice (\a which_doc) non e' corretto.
|
* \returns -1 se non e' mai stato inserito alcun documento o l'indice (\a which_doc) non e' corretto.
|
||||||
*/
|
*/
|
||||||
int add_row(shared_ptr<TDDT_riga_xml> riga, int which_doc = -1);
|
int add_row(const shared_ptr<TDDT_riga_xml>& riga, int which_doc = -1);
|
||||||
bool print() override;
|
bool print() override;
|
||||||
shared_ptr<TDDT_riga_xml> new_row() { _rows.insert(_rows.end(), make_shared<TDDT_riga_xml>()); return _rows.back(); }
|
shared_ptr<TDDT_riga_xml> new_row() { _rows.insert(_rows.end(), make_shared<TDDT_riga_xml>()); return _rows.back(); }
|
||||||
|
|
||||||
/** Setto testata al documento n. \a which_riga, altrimenti se non specificato setta l'ultimo doc presente.
|
/** Setto testata al documento n. \a which_doc, altrimenti se non specificato setta l'ultimo doc presente.
|
||||||
* \returns indice documento settato.
|
* \returns indice documento settato.
|
||||||
* \returns -1 se non e' mai stato inserito alcun documento o l'indice (\a which_doc) non e' corretto.
|
* \returns -1 se non e' mai stato inserito alcun documento o l'indice (\a which_doc) non e' corretto.
|
||||||
*/
|
*/
|
||||||
@ -188,7 +187,6 @@ public:
|
|||||||
~TFlexform_xml_ddt() = default;
|
~TFlexform_xml_ddt() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Esportatore XML Ordini Flexform.
|
* \brief Esportatore XML Ordini Flexform.
|
||||||
*/
|
*/
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include <Shlobj_core.h>
|
#include <Shlobj_core.h> // KnownFolder di Windows
|
||||||
|
|
||||||
#include "ps6362.h"
|
#include "ps6362.h"
|
||||||
#include "ps6362100a.h"
|
#include "ps6362100a.h"
|
||||||
@ -44,6 +44,7 @@ void TMajor_export_mask::save_all() const
|
|||||||
ini_set_string(CONFIG_DITTA, "ps6362", "fldyear", get(F_ANNO_ELAB));
|
ini_set_string(CONFIG_DITTA, "ps6362", "fldyear", get(F_ANNO_ELAB));
|
||||||
ini_set_string(CONFIG_DITTA, "ps6362", "numddt", get(F_NUMDDT));
|
ini_set_string(CONFIG_DITTA, "ps6362", "numddt", get(F_NUMDDT));
|
||||||
ini_set_string(CONFIG_DITTA, "ps6362", "numord", get(F_NUMORD));
|
ini_set_string(CONFIG_DITTA, "ps6362", "numord", get(F_NUMORD));
|
||||||
|
ini_set_string(CONFIG_DITTA, "ps6362", "codcf", get(F_CODCF));
|
||||||
ini_set_string(CONFIG_DITTA, "ps6362", "num_da", get(F_NUMDDT_DA));
|
ini_set_string(CONFIG_DITTA, "ps6362", "num_da", get(F_NUMDDT_DA));
|
||||||
ini_set_string(CONFIG_DITTA, "ps6362", "num_a", get(F_NUMDDT_A));
|
ini_set_string(CONFIG_DITTA, "ps6362", "num_a", get(F_NUMDDT_A));
|
||||||
}
|
}
|
||||||
@ -67,6 +68,7 @@ void TMajor_export_mask::load_all()
|
|||||||
set(F_ANNO_ELAB, ini_get_string(CONFIG_DITTA, "ps6362", "fldyear", y));
|
set(F_ANNO_ELAB, ini_get_string(CONFIG_DITTA, "ps6362", "fldyear", y));
|
||||||
set(F_NUMDDT, ini_get_string(CONFIG_DITTA, "ps6362", "numddt", ""));
|
set(F_NUMDDT, ini_get_string(CONFIG_DITTA, "ps6362", "numddt", ""));
|
||||||
set(F_NUMORD, ini_get_string(CONFIG_DITTA, "ps6362", "numord", ""));
|
set(F_NUMORD, ini_get_string(CONFIG_DITTA, "ps6362", "numord", ""));
|
||||||
|
set(F_CODCF, ini_get_string(CONFIG_DITTA, "ps6362", "codcf", "12"));
|
||||||
set(F_NUMDDT_DA, ini_get_string(CONFIG_DITTA, "ps6362", "num_da", ""));
|
set(F_NUMDDT_DA, ini_get_string(CONFIG_DITTA, "ps6362", "num_da", ""));
|
||||||
set(F_NUMDDT_A, ini_get_string(CONFIG_DITTA, "ps6362", "num_a", ""));
|
set(F_NUMDDT_A, ini_get_string(CONFIG_DITTA, "ps6362", "num_a", ""));
|
||||||
if(get(F_NUMDDT).empty() || get(F_NUMORD).empty())
|
if(get(F_NUMDDT).empty() || get(F_NUMORD).empty())
|
||||||
@ -102,7 +104,7 @@ class TMajor_export_app : public TSkeleton_application
|
|||||||
|
|
||||||
bool create() override;
|
bool create() override;
|
||||||
static TFilename check_name_file(const TString& dir, bool sub_fld, int from, int to, bool ddt = true);
|
static TFilename check_name_file(const TString& dir, bool sub_fld, int from, int to, bool ddt = true);
|
||||||
static const char* get_riferimento_flexform(const TSQL_recordset& righe_doc);
|
static TString get_riferimento_flexform(const TSQL_recordset& righe_doc);
|
||||||
static bool export_ddt(TMask& msk);
|
static bool export_ddt(TMask& msk);
|
||||||
static bool export_ordini() { return false; }
|
static bool export_ordini() { return false; }
|
||||||
void main_loop() override;
|
void main_loop() override;
|
||||||
@ -132,7 +134,7 @@ TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_
|
|||||||
xml << name << ".xml";
|
xml << name << ".xml";
|
||||||
if (xml.exist())
|
if (xml.exist())
|
||||||
{
|
{
|
||||||
const int key = yesnocancel_box("Esiste gia' un file per questa esportazione. Creare nuovo nome?\nCliccare 'No' se si vuole sostituire il file.");
|
const int key = yesnocancel_box("Esiste gia' un file per questa esportazione. Creare duplicato?\nCliccare 'No' se si vuole sostituire il file.");
|
||||||
if (key == K_YES)
|
if (key == K_YES)
|
||||||
{
|
{
|
||||||
int i = 1;
|
int i = 1;
|
||||||
@ -150,15 +152,15 @@ TFilename TMajor_export_app::check_name_file(const TString& dir, const bool sub_
|
|||||||
return xml;
|
return xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_doc)
|
TString TMajor_export_app::get_riferimento_flexform(const TSQL_recordset& righe_doc)
|
||||||
{
|
{
|
||||||
const TString& rg1 = righe_doc.get(3).as_string();
|
const TString& rg1 = righe_doc.get(3).as_string();
|
||||||
const TToken_string t(rg1, '\n');
|
const TToken_string t(rg1, char(0xB6)); // Simbolo paragrafo ¶
|
||||||
TString line;
|
TString line;
|
||||||
for(int i = 0; i < t.items(); ++i)
|
for(int i = 0; i < t.items(); ++i)
|
||||||
{
|
{
|
||||||
t.get(i, line);
|
t.get(i, line);
|
||||||
if (line.starts_with("RIFERIMENTO_FLEX"))
|
if (line.starts_with("CODFLEX"))
|
||||||
break;
|
break;
|
||||||
line.cut(0);
|
line.cut(0);
|
||||||
}
|
}
|
||||||
@ -176,6 +178,7 @@ bool TMajor_export_app::export_ddt(TMask& msk)
|
|||||||
const TString& dir = msk.get(F_FLDDEST);
|
const TString& dir = msk.get(F_FLDDEST);
|
||||||
const bool sub_fld = msk.get_bool(F_SUBFLD);
|
const bool sub_fld = msk.get_bool(F_SUBFLD);
|
||||||
const int year = msk.get_int(F_ANNO_ELAB);
|
const int year = msk.get_int(F_ANNO_ELAB);
|
||||||
|
const int codcli = msk.get_int(F_CODCF);
|
||||||
const int from = msk.get_int(F_NUMDDT_DA);
|
const int from = msk.get_int(F_NUMDDT_DA);
|
||||||
const int to = msk.get_int(F_NUMDDT_A);
|
const int to = msk.get_int(F_NUMDDT_A);
|
||||||
const TString& codnum = msk.get(F_NUMDDT);
|
const TString& codnum = msk.get(F_NUMDDT);
|
||||||
@ -185,7 +188,8 @@ bool TMajor_export_app::export_ddt(TMask& msk)
|
|||||||
return false;
|
return false;
|
||||||
TFlexform_xml_ddt xml_ddts(path_xml);
|
TFlexform_xml_ddt xml_ddts(path_xml);
|
||||||
TString query_doc;
|
TString query_doc;
|
||||||
query_doc << "SELECT DATADOC, NDOC FROM doc WHERE CODNUM = '" << codnum << "' AND ANNO = " << year << " AND PROVV = 'D' AND NDOC >= " << from << " AND NDOC <= " << to;
|
query_doc << "SELECT DATADOC, NDOC FROM doc WHERE CODNUM = '" << codnum << "' AND ANNO = " << year <<
|
||||||
|
" AND PROVV = 'D' AND TIPOCF = 'C' AND CODCF = " << codcli << " AND NDOC >= " << from << " AND NDOC <= " << to;
|
||||||
TSQL_recordset doc(query_doc);
|
TSQL_recordset doc(query_doc);
|
||||||
TProgress_monitor bar(doc.items(), "Esportazione ddt");
|
TProgress_monitor bar(doc.items(), "Esportazione ddt");
|
||||||
|
|
||||||
@ -209,7 +213,7 @@ bool TMajor_export_app::export_ddt(TMask& msk)
|
|||||||
const TString& cod_art = righe_doc.get(0).as_string();
|
const TString& cod_art = righe_doc.get(0).as_string();
|
||||||
TString descr = righe_doc.get(1).as_string();
|
TString descr = righe_doc.get(1).as_string();
|
||||||
const TString& qta = righe_doc.get(2).as_string();
|
const TString& qta = righe_doc.get(2).as_string();
|
||||||
TString desccampolibero6 = get_riferimento_flexform(righe_doc); // get(3) RG1
|
const TString& desccampolibero6 = get_riferimento_flexform(righe_doc); // get(3) RG1
|
||||||
if (righe_doc.get(4).as_bool())
|
if (righe_doc.get(4).as_bool())
|
||||||
descr << righe_doc.get(5).as_string();
|
descr << righe_doc.get(5).as_string();
|
||||||
|
|
||||||
|
@ -4,5 +4,6 @@
|
|||||||
#define F_NUMORD 104
|
#define F_NUMORD 104
|
||||||
#define F_NUMDDT 105
|
#define F_NUMDDT 105
|
||||||
#define F_ANNO_ELAB 106
|
#define F_ANNO_ELAB 106
|
||||||
#define F_NUMDDT_DA 107
|
#define F_CODCF 107
|
||||||
#define F_NUMDDT_A 108
|
#define F_NUMDDT_DA 108
|
||||||
|
#define F_NUMDDT_A 109
|
@ -38,7 +38,7 @@ END
|
|||||||
|
|
||||||
RADIOBUTTON F_TIPODOC 64
|
RADIOBUTTON F_TIPODOC 64
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 6 5 "@bSelezionare tipo documento da esportare"
|
PROMPT 6 5 "@bSelezionare tipo documento da esportare/importare"
|
||||||
ITEM "D|DDT"
|
ITEM "D|DDT"
|
||||||
ITEM "O|Ordini"
|
ITEM "O|Ordini"
|
||||||
FLAG "ZD"
|
FLAG "ZD"
|
||||||
@ -75,16 +75,29 @@ END
|
|||||||
|
|
||||||
STRING F_ANNO_ELAB 4
|
STRING F_ANNO_ELAB 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 37 8 "Anno elaborazione"
|
PROMPT 32 8 "Anno elaborazione"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 32 9 "cod. cliente "
|
||||||
|
USE LF_CLIFO
|
||||||
|
INPUT TIPOCF "C"
|
||||||
|
INPUT CODCF F_CODCF
|
||||||
|
DISPLAY "Cod." CODCF
|
||||||
|
DISPLAY "Rag. Soc.@50" RAGSOC
|
||||||
|
OUTPUT F_CODCF CODCF
|
||||||
|
FLAGS ""
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_NUMDDT_DA 7
|
STRING F_NUMDDT_DA 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 37 9 "da num. doc. "
|
PROMPT 32 10 "da num. doc. "
|
||||||
USE LF_DOC
|
USE LF_DOC
|
||||||
JOIN %TIP ALIAS 104 INTO CODTAB=TIPODOC
|
JOIN %TIP ALIAS 104 INTO CODTAB=TIPODOC
|
||||||
JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF=CODCF
|
JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||||
INPUT PROVV "D"
|
INPUT PROVV "D"
|
||||||
|
INPUT TIPOCF "C" SELECT
|
||||||
INPUT ANNO F_ANNO_ELAB SELECT
|
INPUT ANNO F_ANNO_ELAB SELECT
|
||||||
INPUT CODNUM F_NUMDDT SELECT
|
INPUT CODNUM F_NUMDDT SELECT
|
||||||
INPUT NDOC F_NUMDDT_DA
|
INPUT NDOC F_NUMDDT_DA
|
||||||
@ -97,9 +110,10 @@ END
|
|||||||
|
|
||||||
STRING F_NUMDDT_A 7
|
STRING F_NUMDDT_A 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 37 10 "a "
|
PROMPT 57 10 "a "
|
||||||
COPY USE F_NUMDDT_DA
|
COPY USE F_NUMDDT_DA
|
||||||
INPUT PROVV "D"
|
INPUT PROVV "D"
|
||||||
|
INPUT TIPOCF "C" SELECT
|
||||||
INPUT ANNO F_ANNO_ELAB SELECT
|
INPUT ANNO F_ANNO_ELAB SELECT
|
||||||
INPUT CODNUM F_NUMDDT SELECT
|
INPUT CODNUM F_NUMDDT SELECT
|
||||||
INPUT NDOC F_NUMDDT_A
|
INPUT NDOC F_NUMDDT_A
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
#include <rpc.h>
|
||||||
|
#include <rpcdce.h>
|
||||||
|
|
||||||
#include "xml_element.h"
|
#include "xml_element.h"
|
||||||
|
|
||||||
#define XML_ESCAPE_CHAR '&'
|
#define XML_ESCAPE_CHAR '&'
|
||||||
@ -84,6 +87,26 @@ void TXML_element::set_value(const TString& _Val)
|
|||||||
_value = _Val;
|
_value = _Val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* generate_GUID()
|
||||||
|
{
|
||||||
|
static TString _guid;
|
||||||
|
if (_guid.empty())
|
||||||
|
{
|
||||||
|
char cstr[39];
|
||||||
|
size_t chars;
|
||||||
|
GUID uuid;
|
||||||
|
if (UuidCreate(&uuid) == RPC_S_OK)
|
||||||
|
{
|
||||||
|
LPOLESTR lpsz;
|
||||||
|
StringFromCLSID(uuid, &lpsz);
|
||||||
|
wcstombs_s(&chars, cstr, lpsz, wcslen(lpsz));
|
||||||
|
_guid = cstr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_guid = "";
|
||||||
|
}
|
||||||
|
return _guid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////
|
||||||
|
@ -45,4 +45,6 @@ public:
|
|||||||
explicit TXML_element(const char* name, bool info_file) : TXML_element(name, "", info_file) { }
|
explicit TXML_element(const char* name, bool info_file) : TXML_element(name, "", info_file) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const char* generate_GUID();
|
||||||
|
|
||||||
#endif // __XMLELEMENT_H__
|
#endif // __XMLELEMENT_H__
|
Loading…
x
Reference in New Issue
Block a user