Patch level : 12.0 no-patch
Files correlati : f90.exe d181.des f181.dir f181.trr all-masks Commento : - F9: migliorato codice. - Implementata gestione configurazione - Aggiunta classe per documenti cartacei - Aggiunti controlli per gestione file cart. se la cartella esiste - Corretto controllo file eliminati se la cartella esiste (se no dava errore) - Aggiunta colonna informazione errore per file non trovato nella cartella
This commit is contained in:
parent
c1e4c0935c
commit
c02ff1482c
@ -1,8 +1,8 @@
|
||||
#ifndef __F90_H
|
||||
#define __F90_H
|
||||
#ifndef _F90_H_
|
||||
#define _F90_H_
|
||||
|
||||
int f90100(int argc, char* argv[]);
|
||||
int f90200(int argc, char* argv[]);
|
||||
int f90300(int argc, char* argv[]);
|
||||
|
||||
#endif // __F90_H
|
||||
#endif // _F90_H_
|
||||
|
@ -41,7 +41,12 @@ TString get_checksum(const int version)
|
||||
// Utilities
|
||||
////////////////////////////////////////////////////////
|
||||
|
||||
TF9_config F9CONF;
|
||||
// Getters per semplificare i get dai TRecorset
|
||||
|
||||
const TString& recset_get_string(const TRecordset& rec, const char* field, int zero_filled = -1);
|
||||
int recset_get_int(const TRecordset& rec, const char* field, int zero_filled = -1);
|
||||
bool recset_get_bool(const TRecordset& rec, const char* field);
|
||||
real recset_get_real(const TRecordset& rec, const char* field);
|
||||
|
||||
TMask& descr_msk()
|
||||
{
|
||||
@ -323,19 +328,12 @@ bool TMonitor_mask::save_conf_handler(TMask_field& f, KEY key)
|
||||
TString old_codsoc = F9CONF.get_ambiente();
|
||||
if(config_mask.get(CF_CODSOC).empty())
|
||||
warning_box("Codice Ambiente vuoto. Impossibile salvare i dati.");
|
||||
F9CONF.set_ambiente (config_mask.get(CF_CODSOC));
|
||||
F9CONF.set_addr_doc (config_mask.get(CF_ADDRDOC));
|
||||
F9CONF.set_has_cartexp (config_mask.get_bool(CF_CARTEXP));
|
||||
F9CONF.set_has_checkvend (config_mask.get_bool(CF_CHECKVEND));
|
||||
F9CONF.set_viewmov (config_mask.get_bool(CF_VIEWMOVPRE));
|
||||
F9CONF.set_ambiente (config_mask.get(CF_CODSOC));
|
||||
F9CONF.set_addr_doc (config_mask.get(CF_ADDRDOC));
|
||||
F9CONF.set_has_cartexp (config_mask.get_bool(CF_CARTEXP));
|
||||
F9CONF.set_has_checkvend(config_mask.get_bool(CF_CHECKVEND));
|
||||
F9CONF.set_viewmov (config_mask.get_bool(CF_VIEWMOVPRE));
|
||||
|
||||
if (F9CONF.get_ambiente().full())
|
||||
ini_set_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9, F9CONF.get_ambiente());
|
||||
if (F9CONF.get_addr_doc().full())
|
||||
ini_set_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9, F9CONF.get_addr_doc());
|
||||
ini_set_bool(CONFIG_DITTA, PAR_MOD, CHECKVEND_F9, F9CONF.get_has_checkvend());
|
||||
ini_set_bool(CONFIG_DITTA, PAR_MOD, CARTEXP_F9, F9CONF.get_has_cartexp());
|
||||
ini_set_bool(CONFIG_DITTA, PAR_MOD, VIEWMOV_F9, F9CONF.get_viewmov());
|
||||
config_mask.close();
|
||||
f9_app().edit_wa(old_codsoc);
|
||||
return true;
|
||||
@ -692,11 +690,11 @@ void TMonitor_mask::open_win_conf() const
|
||||
|
||||
m->set_handler(DLG_OK, save_conf_handler);
|
||||
|
||||
m->set(CF_CODSOC, ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9));
|
||||
m->set(CF_ADDRDOC, ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9));
|
||||
m->set(CF_CHECKVEND, ini_get_bool(CONFIG_DITTA, PAR_MOD, CHECKVEND_F9, true));
|
||||
m->set(CF_CARTEXP, ini_get_bool(CONFIG_DITTA, PAR_MOD, CARTEXP_F9));
|
||||
m->set(CF_VIEWMOVPRE, ini_get_bool(CONFIG_DITTA, PAR_MOD, VIEWMOV_F9));
|
||||
m->set(CF_CODSOC, F9CONF.get_ambiente());
|
||||
m->set(CF_ADDRDOC, F9CONF.get_addr_doc());
|
||||
m->set(CF_CHECKVEND, F9CONF.get_has_checkvend());
|
||||
m->set(CF_CARTEXP, F9CONF.get_has_cartexp());
|
||||
m->set(CF_VIEWMOVPRE, F9CONF.get_viewmov());
|
||||
}
|
||||
m->run();
|
||||
}
|
||||
@ -892,13 +890,10 @@ TMask& TControllo_mask::get_win_order()
|
||||
m->add_radio(F_VERSO, 0, "Verso:", 1, 3, 59, "A|D", "Crescente|Decrescente", "Z");
|
||||
|
||||
//m->set_handler(DLG_OK, save_conf_handler);
|
||||
_ordin = ini_get_string(CONFIG_DITTA, PAR_MOD, "ORDINAM", "D")[0];
|
||||
_verso = ini_get_string(CONFIG_DITTA, PAR_MOD, "VERSO", "A")[0];
|
||||
_ordin = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", "D")[0];
|
||||
_verso = ini_get_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", "A")[0];
|
||||
m->set(F_ORDER, &_ordin);
|
||||
m->set(F_VERSO, &_verso);
|
||||
|
||||
/*m->set(CF_CODSOC, ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9));
|
||||
m->set(CF_ADDRDOC, ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9));*/
|
||||
}
|
||||
return *m;
|
||||
}
|
||||
@ -909,8 +904,8 @@ void TControllo_mask::open_win_order()
|
||||
m.run();
|
||||
_ordin = m.get(F_ORDER)[0];
|
||||
_verso = m.get(F_VERSO)[0];
|
||||
ini_set_string(CONFIG_DITTA, PAR_MOD, "ORDINAM", &_ordin);
|
||||
ini_set_string(CONFIG_DITTA, PAR_MOD, "VERSO", &_verso);
|
||||
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "ORDINAM", &_ordin);
|
||||
ini_set_string(CONFIG_DITTA, INI_PAR_MOD, "VERSO", &_verso);
|
||||
}
|
||||
|
||||
TToken_string* TControllo_mask::selected_mov()
|
||||
|
@ -1,12 +1,5 @@
|
||||
#ifndef __F90100H__
|
||||
#define __F90100H__
|
||||
|
||||
#define PAR_MOD "F9"
|
||||
#define AMBIENTE_F9 "CODSOC" // Codice ambiente (codsoc)
|
||||
#define ADDRCART_F9 "ADDDOC" // Indirizzo documenti cartacei
|
||||
#define CHECKVEND_F9 "CHECKVEND" // Flag controlli per vendite (quando hai fatt. con Campo)
|
||||
#define CARTEXP_F9 "CARTEXP" // Flag esporta documenti cartacei
|
||||
#define VIEWMOV_F9 "VIEWMOVPRE" // Flag visualizza moviementi prima di estrarre
|
||||
#ifndef _F90100_H_
|
||||
#define _F90100_H_
|
||||
|
||||
#include "execp.h"
|
||||
#include "f90100a.h"
|
||||
@ -53,41 +46,6 @@ public:
|
||||
|
||||
|
||||
|
||||
class TF9_config
|
||||
{
|
||||
// todo: controllare che siano sqlsafe
|
||||
|
||||
TString _ambiente; // Codice ambiente (codsoc)
|
||||
TString _addr_doc; // Indirizzo documenti cartacei
|
||||
bool _cartexp{ false };
|
||||
bool _checkvend{ false };
|
||||
bool _viewmovpre{ false };
|
||||
|
||||
public:
|
||||
const TString& get_ambiente() const { return _ambiente; }
|
||||
const TString& get_addr_doc() const { return _addr_doc; }
|
||||
bool get_has_cartexp() const { return _cartexp; }
|
||||
bool get_has_checkvend() const { return _checkvend; }
|
||||
bool get_viewmov() const { return _viewmovpre; }
|
||||
|
||||
void set_ambiente(const char* cod) { _ambiente.cut(0) << cod; }
|
||||
void set_addr_doc(const char* add) { _addr_doc.cut(0) << add; }
|
||||
void set_has_cartexp(const bool flag) { _cartexp = flag; }
|
||||
void set_has_checkvend(const bool flag){ _checkvend = flag; }
|
||||
void set_viewmov(const bool flag) { _viewmovpre = flag; } // Unused.
|
||||
|
||||
TF9_config()
|
||||
{
|
||||
_ambiente = ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9);
|
||||
_addr_doc = ini_get_string(CONFIG_DITTA, PAR_MOD, ADDRCART_F9);
|
||||
}
|
||||
};
|
||||
|
||||
extern TF9_config F9CONF;
|
||||
|
||||
|
||||
|
||||
|
||||
class TF9_app : public TSkeleton_application
|
||||
{
|
||||
//friend class TEstrai_mask;
|
||||
@ -261,14 +219,4 @@ inline bool open_mov(const TRectype& mov)
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Getters per semplificare i get dai TRecorset
|
||||
|
||||
const TString& recset_get_string(const TRecordset& rec, const char* field, int zero_filled = -1);
|
||||
int recset_get_int(const TRecordset& rec, const char* field, int zero_filled = -1);
|
||||
bool recset_get_bool(const TRecordset& rec, const char* field);
|
||||
real recset_get_real(const TRecordset& rec, const char* field);
|
||||
|
||||
#endif //__F90100H__
|
||||
#endif //_F90100_H_
|
@ -184,15 +184,15 @@ void TF9_categorie_doc::main_loop()
|
||||
DRT_TIPOCAU ", "
|
||||
DRT_TIPOMOV ", "
|
||||
DRT_OPCEE ")\nVALUES('" <<
|
||||
ini_get_string(CONFIG_DITTA, PAR_MOD, AMBIENTE_F9) << "', '" <<
|
||||
row->get(1) << "', '" << // Catdoc
|
||||
escape(row->get(2)) << "', '" << // Descr
|
||||
row->get(3) << "', '" << // Classe doc sost.
|
||||
row->get(4) << "', '" << // Causale sost.
|
||||
escape(row->get(5)) << "', '" << // Causale cont
|
||||
escape(row->get(6)) << "', '" << // Tipo caus. cont
|
||||
escape(row->get(7)) << "', '" << // Tipo mov.
|
||||
row->get(8) << "');\n"; // "Operat. CEE"
|
||||
F9CONF.get_ambiente() << "', '" <<
|
||||
row->get(1) << "', '" << // Catdoc
|
||||
escape(row->get(2)) << "', '" << // Descr
|
||||
row->get(3) << "', '" << // Classe doc sost.
|
||||
row->get(4) << "', '" << // Causale sost.
|
||||
escape(row->get(5)) << "', '" << // Causale cont
|
||||
escape(row->get(6)) << "', '" << // Tipo caus. cont
|
||||
escape(row->get(7)) << "', '" << // Tipo mov.
|
||||
row->get(8) << "');\n"; // "Operat. CEE"
|
||||
ok &= fp_db().sq_set_exec(query, false) && fp_db().sq_commit();
|
||||
if (!ok)
|
||||
break;
|
||||
|
@ -14,10 +14,9 @@
|
||||
#include "mov.h"
|
||||
#include "isam.h"
|
||||
#include "f9cart.h"
|
||||
#include "f9lib01.h"
|
||||
|
||||
#define INI_ESTENSIONI "DOCUMENTI_EXT"
|
||||
#define TABMOD_CARTDIR "S0"
|
||||
#define F9_ADDRCART "ADDRCART"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// TImport_msk
|
||||
@ -52,24 +51,25 @@ class TGestione_doc_cartacei_f9_msk : public TAutomask
|
||||
TString numreg;
|
||||
TString user;
|
||||
};
|
||||
TString _addr_cart; // Indirizzo cartella doc. cartacei F9
|
||||
const TString& _addr_cart; // Indirizzo cartella doc. cartacei F9
|
||||
std::unique_ptr<std::set<TString>> _extensions; // todo: controllare che con TString funzioni l'ordinamento, quindi la find
|
||||
std::unique_ptr<TImport_msk> _import_msk;
|
||||
std::map<TString, doc_cart_t> _list_file;
|
||||
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||
|
||||
void check_addr_cart() const;
|
||||
static void check_deleted();
|
||||
bool check_file_exist(const TString& file) const;
|
||||
void delete_file();
|
||||
bool doc_already_exists(_In_ const TFilename& file, _Out_ TString& numreg) const;
|
||||
bool doc_already_exists(const TFilename& file, _Out_ TString& numreg) const;
|
||||
void fill();
|
||||
static TString get_addrcart();
|
||||
static TToken_string& get_valid_extensions();
|
||||
void load_extensions();
|
||||
bool load_file(const TFilename& file, const TString& numreg);
|
||||
void open_config_win() const;
|
||||
void open_import_win();
|
||||
static void remove_file_from_f9cart(const std::set<TString>& files);
|
||||
bool verify_extension(const TFilename& file);
|
||||
|
||||
public:
|
||||
@ -99,36 +99,49 @@ bool TGestione_doc_cartacei_f9_msk::on_field_event(TOperable_field& o, TField_ev
|
||||
return true;
|
||||
}
|
||||
|
||||
void TGestione_doc_cartacei_f9_msk::check_addr_cart() const
|
||||
{
|
||||
const TFilename f(_addr_cart);
|
||||
if (f.full() && !f.exist())
|
||||
{
|
||||
warning_box("Cartella documenti cartacei non trovata.\nSalvare nuovamente le impostazioni.");
|
||||
open_config_win();
|
||||
}
|
||||
}
|
||||
|
||||
void TGestione_doc_cartacei_f9_msk::check_deleted()
|
||||
{
|
||||
// Controllo che non ci siano file nella cartella eliminati da piu' di un mese, altrimenti li elimino
|
||||
TString_array result;
|
||||
TString s = get_addrcart(); s << "eliminati\\";
|
||||
list_files(s, result);
|
||||
FOR_EACH_ARRAY_ITEM(result, nr, file)
|
||||
TFilename s; s << TFilename(F9CONF.get_addr_cart()).slash_terminate() << "eliminati\\";
|
||||
if (s.exist())
|
||||
{
|
||||
const char* deletedfile = *(TString*)(file);
|
||||
HANDLE h_file = CreateFile(deletedfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
FILETIME last_access_time;
|
||||
SYSTEMTIME time;
|
||||
bool flag = false;
|
||||
if (h_file != INVALID_HANDLE_VALUE)
|
||||
list_files(s, result);
|
||||
FOR_EACH_ARRAY_ITEM(result, nr, file)
|
||||
{
|
||||
if(GetFileTime(h_file, NULL, &last_access_time, NULL))
|
||||
const char* deletedfile = *(TString*)(file);
|
||||
HANDLE h_file = CreateFile(deletedfile, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
FILETIME last_access_time;
|
||||
SYSTEMTIME time;
|
||||
bool flag = false;
|
||||
if (h_file != INVALID_HANDLE_VALUE)
|
||||
{
|
||||
FileTimeToSystemTime(&last_access_time, &time);
|
||||
TDate today = TDate(TODAY);
|
||||
if(time.wMonth < (unsigned short)today.month() - 1 ||
|
||||
time.wMonth == (unsigned short)today.month() - 1 && time.wDay <= (unsigned short)today.day())
|
||||
if (GetFileTime(h_file, NULL, &last_access_time, NULL))
|
||||
{
|
||||
flag = true;
|
||||
CloseHandle(h_file);
|
||||
DeleteFile(deletedfile);
|
||||
FileTimeToSystemTime(&last_access_time, &time);
|
||||
TDate today = TDate(TODAY);
|
||||
if (time.wMonth < (unsigned short)today.month() - 1 ||
|
||||
time.wMonth == (unsigned short)today.month() - 1 && time.wDay <= (unsigned short)today.day())
|
||||
{
|
||||
flag = true;
|
||||
CloseHandle(h_file);
|
||||
DeleteFile(deletedfile);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!flag)
|
||||
CloseHandle(h_file);
|
||||
}
|
||||
if(!flag)
|
||||
CloseHandle(h_file);
|
||||
}
|
||||
}
|
||||
|
||||
@ -153,8 +166,11 @@ void TGestione_doc_cartacei_f9_msk::delete_file()
|
||||
f9cart.put(F9C_FILENAME, filename);
|
||||
f9cart.put(F9C_NUMREG, numreg);
|
||||
f9cart.read();
|
||||
TFilename filecart = get_addrcart(); filecart << filename;
|
||||
TFilename deleted = get_addrcart(); deleted << "eliminati" << SLASH;
|
||||
TFilename filecart(F9CONF.get_addr_cart());
|
||||
filecart.slash_terminate();
|
||||
TFilename deleted(filecart);
|
||||
filecart << filename;
|
||||
deleted << "eliminati" << SLASH;
|
||||
if (!deleted.exist())
|
||||
make_dir(deleted);
|
||||
deleted << filename;
|
||||
@ -189,14 +205,15 @@ void TGestione_doc_cartacei_f9_msk::fill()
|
||||
sf.hide();
|
||||
sf.destroy();
|
||||
_list_file.clear();
|
||||
std::vector<TString> file_err;
|
||||
std::set<TString> file_err;
|
||||
if(files.first() == NOERR)
|
||||
{
|
||||
do
|
||||
{
|
||||
const TString& namefile = files.get(F9C_FILENAME);
|
||||
if(!check_file_exist(namefile))
|
||||
file_err.emplace_back(namefile);
|
||||
bool not_exist = false;
|
||||
if((not_exist = !check_file_exist(namefile)))
|
||||
file_err.insert(namefile);
|
||||
const TString& numreg = files.get(F9C_NUMREG);
|
||||
TString datamov, caus, numdoc, nprot, descrmov;
|
||||
mov.zero();
|
||||
@ -207,39 +224,62 @@ void TGestione_doc_cartacei_f9_msk::fill()
|
||||
caus = mov.get(MOV_CODCAUS);
|
||||
numdoc = mov.get(MOV_NUMDOCEXT);
|
||||
if(numdoc.empty()) numdoc = mov.get(MOV_NUMDOC);
|
||||
nprot = mov.get(MOV_PROTIVA);
|
||||
nprot << mov.get(MOV_REG) << "/" << mov.get(MOV_PROTIVA);
|
||||
descrmov = mov.get(MOV_DESCR);
|
||||
}
|
||||
TToken_string& r = sf.row(-1);
|
||||
r.add(" ", 0); // F_SEL
|
||||
r.add(namefile); // F_FILENAME
|
||||
r.add(files.get(F9C_LOADDATE)); // F_DATACARIC
|
||||
r.add(numreg); // F_NUMREG
|
||||
r.add(datamov); // F_DATAMOV
|
||||
r.add(caus); // F_CAUS
|
||||
r.add(numdoc); // F_NUMDOC
|
||||
r.add(nprot); // F_NPROTOCOL
|
||||
r.add(descrmov); // F_DESCRMOV
|
||||
r.add(" ", 0); // F_SEL
|
||||
r.add(namefile); // F_FILENAME
|
||||
r.add(files.get(F9C_LOADDATE)); // F_DATACARIC
|
||||
r.add(numreg); // F_NUMREG
|
||||
r.add(datamov); // F_DATAMOV
|
||||
r.add(caus); // F_CAUS
|
||||
r.add(numdoc); // F_NUMDOC
|
||||
r.add(nprot); // F_NPROTOCOL
|
||||
r.add(descrmov); // F_DESCRMOV
|
||||
r.add(not_exist ? "IL FILE NON E' PRESENTE IN ARCHIVIO." : ""); // F_INFO
|
||||
|
||||
_list_file.insert({ namefile, { namefile, files.get(F9C_LOADDATE), numreg, files.get(F9C_USER) } });
|
||||
} while (files.next() == NOERR);
|
||||
sf.force_update();
|
||||
}
|
||||
sf.show();
|
||||
}
|
||||
if(!file_err.empty())
|
||||
{
|
||||
int count = 0;
|
||||
const bool m = (int)file_err.size() == 1;
|
||||
const char p = m ? 'o' : 'i';
|
||||
TString msg; msg << (int)file_err.size() << " file non " << (m ? "e'" : "sono") << " stat" << p <<
|
||||
" trovat" << p << ".\nSi prega di rimuoverl" << p << " dall'elenco\n\nFile non trovat" << p << ":";
|
||||
|
||||
TString TGestione_doc_cartacei_f9_msk::get_addrcart()
|
||||
{
|
||||
return ini_get_string(CONFIG_DITTA, "F9", F9_ADDRCART);
|
||||
for(auto it = file_err.begin(); it != file_err.end(); ++it)
|
||||
{
|
||||
if (count++ == 10)
|
||||
{
|
||||
msg << "\n" << "...";
|
||||
break;
|
||||
}
|
||||
msg << "\n" << *it << " [Num. Reg.: " << _list_file.find(*it)->second.numreg << "]";
|
||||
}
|
||||
#ifndef DBG
|
||||
const bool del = warning_box(msg);
|
||||
#else
|
||||
if (yesno_box(msg))
|
||||
{
|
||||
remove_file_from_f9cart(file_err);
|
||||
fill();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
TToken_string& TGestione_doc_cartacei_f9_msk::get_valid_extensions()
|
||||
{
|
||||
static TToken_string ext(ini_get_string(CONFIG_DITTA, "F9", "DOCUMENTI_EXT"), ',');
|
||||
static TToken_string ext(F9CONF.get_estensioni(), ',');
|
||||
if (ext.items() == 0)
|
||||
{
|
||||
ext = ".pdf, .doc, .docx, .xls, .xlsx, .jpg, .jpeg, .png";
|
||||
ini_set_string(CONFIG_DITTA, "F9", INI_ESTENSIONI, ext);
|
||||
F9CONF.set_estensioni(ext);
|
||||
}
|
||||
ext.replace(" ", "");
|
||||
return ext;
|
||||
@ -285,7 +325,7 @@ bool TGestione_doc_cartacei_f9_msk::load_file(const TFilename& file, const TStri
|
||||
#else
|
||||
f9cart.put(F9C_USER, user());
|
||||
#endif
|
||||
TFilename fdestin = get_addrcart();
|
||||
TFilename fdestin = F9CONF.get_addr_cart();
|
||||
const TString filename = file.name();
|
||||
fdestin << filename;
|
||||
const bool ok = CopyFile(file, fdestin, true);
|
||||
@ -320,8 +360,8 @@ void TGestione_doc_cartacei_f9_msk::open_config_win() const
|
||||
msk->add_static (DLG_NULL, 0, "@BInserire nome cartella, all'interno della area dati della ditta", 2, 5);
|
||||
msk->add_string (102, 0, "", 2, 6, 64, "", 30);
|
||||
|
||||
msk->set(101, ini_get_string(CONFIG_DITTA, "F9", INI_ESTENSIONI));
|
||||
TString s = ini_get_string(CONFIG_DITTA, "F9", F9_ADDRCART);
|
||||
msk->set(101, F9CONF.get_estensioni());
|
||||
TString s = F9CONF.get_addr_cart();
|
||||
s.rtrim(1);
|
||||
s.ltrim(s.rfind('\\') + 1);
|
||||
msk->set(102, s);
|
||||
@ -336,9 +376,9 @@ void TGestione_doc_cartacei_f9_msk::open_config_win() const
|
||||
warning_box("Si prega di inserire il nome della cartella per i documenti cartacei.");
|
||||
continue;
|
||||
}
|
||||
else break;
|
||||
break;
|
||||
}
|
||||
ini_set_string(CONFIG_DITTA, "F9", INI_ESTENSIONI, msk->get(101));
|
||||
F9CONF.set_estensioni(msk->get(101));
|
||||
TString dir = msk->get(102);
|
||||
if (dir.empty())
|
||||
{
|
||||
@ -362,8 +402,7 @@ void TGestione_doc_cartacei_f9_msk::open_config_win() const
|
||||
}
|
||||
else continue;
|
||||
}
|
||||
ini_set_string(CONFIG_DITTA, "F9", F9_ADDRCART, path);
|
||||
|
||||
F9CONF.set_addr_cart(path);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -391,24 +430,40 @@ void TGestione_doc_cartacei_f9_msk::open_import_win()
|
||||
fill();
|
||||
}
|
||||
|
||||
void TGestione_doc_cartacei_f9_msk::remove_file_from_f9cart(const std::set<TString>& files)
|
||||
{
|
||||
TLocalisamfile f9cart(LF_F9CART);
|
||||
for(auto it = files.begin(); it != files.end(); ++it)
|
||||
{
|
||||
f9cart.zero();
|
||||
f9cart.put(F9C_FILENAME, *it);
|
||||
f9cart.read();
|
||||
f9cart.remove();
|
||||
}
|
||||
}
|
||||
|
||||
bool TGestione_doc_cartacei_f9_msk::verify_extension(const TFilename& file)
|
||||
{
|
||||
load_extensions();
|
||||
return _extensions->find(file.ext()) != _extensions->end();
|
||||
}
|
||||
|
||||
TGestione_doc_cartacei_f9_msk::TGestione_doc_cartacei_f9_msk(): TAutomask("f90300a"), _addr_cart(get_addrcart())
|
||||
TGestione_doc_cartacei_f9_msk::TGestione_doc_cartacei_f9_msk(): TAutomask("f90300a"), _addr_cart(F9CONF.get_addr_cart())
|
||||
{
|
||||
if (_addr_cart.empty())
|
||||
{
|
||||
message_box("Inserire nome cartella documenti cartacei.");
|
||||
open_config_win();
|
||||
}
|
||||
else
|
||||
check_addr_cart();
|
||||
check_deleted();
|
||||
fill();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// TGestione_doc_cartacei_f9_app
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -14,4 +14,5 @@
|
||||
#define F_CAUS 106
|
||||
#define F_NUMDOC 107
|
||||
#define F_NPROTOCOL 108
|
||||
#define F_DESCRMOV 109
|
||||
#define F_DESCRMOV 109
|
||||
#define F_INFO 110
|
||||
|
@ -69,14 +69,15 @@ SPREADSHEET S_IMPORTED -1 -1
|
||||
BEGIN
|
||||
PROMPT 0 0 "Doc Importati"
|
||||
ITEM ""
|
||||
ITEM "FILENAME"
|
||||
ITEM "DATACARIC"
|
||||
ITEM "NUMREG"
|
||||
ITEM "DATAMOV"
|
||||
ITEM "CAUS"
|
||||
ITEM "NUMDOC"
|
||||
ITEM "NPROTOCOL"
|
||||
ITEM "DESCRMOV"
|
||||
ITEM "Nome File@25"
|
||||
ITEM "Data\nCaricamento@10"
|
||||
ITEM "Movimento\nContabile N.@7"
|
||||
ITEM "Data\nMovimento@10"
|
||||
ITEM "Causale@7"
|
||||
ITEM "Num. Doc.@7"
|
||||
ITEM "Reg./Prot. IVA@10"
|
||||
ITEM "Descrizione@20"
|
||||
ITEM "Info (Errori)@25"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -131,7 +132,7 @@ BEGIN
|
||||
PROMPT 0 6 "Numero documento"
|
||||
END
|
||||
|
||||
NUMBER F_NPROTOCOL 6
|
||||
STRING F_NPROTOCOL 10
|
||||
BEGIN
|
||||
PROMPT 0 7 "Numero Protocollo IVA"
|
||||
END
|
||||
@ -141,6 +142,11 @@ BEGIN
|
||||
PROMPT 0 8 "Descrizione mov."
|
||||
END
|
||||
|
||||
STRING F_INFO 50
|
||||
BEGIN
|
||||
PROMPT 0 9 "Informazione file."
|
||||
END
|
||||
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
@ -1,9 +1,10 @@
|
||||
#include "f9lib01.h"
|
||||
|
||||
#include "f1lib.h"
|
||||
#include "f901tab.h"
|
||||
#include "progind.h"
|
||||
#include "clifo.h"
|
||||
#include <cg2103.h>
|
||||
#include "cg2103.h"
|
||||
#include "mov.h"
|
||||
#include "../fp/fplib.h"
|
||||
|
||||
@ -837,6 +838,9 @@ std::shared_ptr<TCategorie_doc::classe_doc> TCategorie_doc::mov2cat(const int nu
|
||||
return find_tipodoc(tipodoc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -1,11 +1,14 @@
|
||||
#ifndef __F901001_H__
|
||||
#define __F901001_H__
|
||||
#ifndef _F901001_H_
|
||||
#define _F901001_H_
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "strings.h"
|
||||
#include "date.h"
|
||||
#include "real.h"
|
||||
#include <vector>
|
||||
#include <cglib01.h>
|
||||
#include "cglib01.h"
|
||||
|
||||
#define INI_PAR_MOD "F9"
|
||||
|
||||
const TDate today(TODAY);
|
||||
|
||||
@ -69,6 +72,46 @@ enum state_fppro
|
||||
err_read_db = 999 // Errore lettura da fppro
|
||||
};
|
||||
|
||||
class TF9_config
|
||||
{
|
||||
// todo: controllare che siano sqlsafe
|
||||
// Config in f90100:
|
||||
|
||||
TString _ambiente; // Codice ambiente (codsoc)
|
||||
TString _addr_doc; // Indirizzo documenti cartacei WebApp
|
||||
bool _cartexp;
|
||||
bool _checkvend;
|
||||
bool _viewmovpre;
|
||||
|
||||
// Config in f90300:
|
||||
|
||||
TString _addr_cart; // Indirizzo cartella documenti cartacei
|
||||
TString _estensioni; // Estensioni valide per il caricamenti dei doc. cart.
|
||||
|
||||
public:
|
||||
const TString& get_ambiente() const { return _ambiente; }
|
||||
const TString& get_addr_doc() const { return _addr_doc; }
|
||||
bool get_has_cartexp() const { return _cartexp; }
|
||||
bool get_has_checkvend() const { return _checkvend; }
|
||||
bool get_viewmov() const { return _viewmovpre; }
|
||||
|
||||
const TString& get_addr_cart() const { return _addr_cart; }
|
||||
const TString& get_estensioni() const { return _estensioni; }
|
||||
|
||||
void set_ambiente(const TString& cod_amb);
|
||||
void set_addr_doc(const TString& path);
|
||||
void set_has_cartexp(bool flag);
|
||||
void set_has_checkvend(bool flag);
|
||||
void set_viewmov(bool flag);
|
||||
|
||||
void set_addr_cart(const TString& path);
|
||||
void set_estensioni(const TString& ext);
|
||||
|
||||
TF9_config();
|
||||
};
|
||||
|
||||
extern TF9_config F9CONF;
|
||||
|
||||
class TCategorie_doc
|
||||
{
|
||||
public:
|
||||
@ -317,4 +360,12 @@ public:
|
||||
TF9_dberr();
|
||||
};
|
||||
|
||||
#endif // #ifndef __F901001_H__
|
||||
class TF9_doccart : public TLocalisamfile
|
||||
{
|
||||
public:
|
||||
bool mov2doc(int numreg, _Out_ TFilename& doc);
|
||||
|
||||
TF9_doccart() : TLocalisamfile(LF_F9CART) { }
|
||||
};
|
||||
|
||||
#endif // #ifndef _F901001_H_
|
||||
|
Loading…
x
Reference in New Issue
Block a user