campo-sirio/src/f1/f1lib.h
Simone Palacino 5c42f6006b Patch level : 12.0 984
Files correlati     : f90.exe
Commento            : Corretta query per fppro
2020-07-28 11:30:04 +02:00

160 lines
4.1 KiB
C++

#ifndef _F1LIB_H_
#define _F1LIB_H_
#include "strings.h"
#include "reputils.h"
#include "tsdb.h"
#define FILE_CONFIG CONFIG_DITTA
#define FILE_SECTION "f1"
#define F1_CAUS "caus"
#define F1_INIREGCONT "cg2CONTAB"
#define LOG_MSG 0
#define LOG_WARN 1
#define LOG_ERR 2
enum err_cont
{
no_codcaus = -1,
no_selected = -2,
is_already_cont = -3,
cancel = -4,
forn_err = -5, // Manca un codice fornitore
is_ready = 0,
no_err = 1
};
typedef struct _prot_s
{
const char* tipo;
const char* num;
int anno;
} prot_s;
/** \class TFppro
* Tutti i metodi che settano le chiavi, possono fallire principalmente per due motivi:
* 1) Possibile SQL Injection;
* 2) Chiavi settate non valide (una delle tre e' vuota).
*/
class TFppro : public TObject
{
struct keys_s
{
TString prginvio;
TString headerfatt;
TString bodyfatt;
operator const char*() const
{
static TToken_string a("", ';');
a.add(prginvio);
a.add(headerfatt);
a.add(bodyfatt);
return a;
}
} _keys;
SSimple_query* _db;
bool _keys_setted;
bool _is_set; // Query is setted
TString _fppro_query;
TString _last_error;
static bool sql_inj(const TString& str);
static bool sql_inj(const keys_s& keys);
public:
const char* where_str() const;
bool check_reg(TToken_string& keys, int numreg);
// Se un mov. registrato non e' collegato all'FPPRO cerco di capire qual'e`
bool guess_the_doc(const TLocalisamfile& mov);
// Getters
const char* get_keys_fppro() const;
int get_numreg();
int get_numreg(TToken_string& keys);
TString get_codforn() const;
TDate get_datareg();
TDate get_datareg(TToken_string& keys);
real get_ritenute() const;
TDate get_data_first_doc() const;
TDate get_dataorarioric() const;
int get_numregcont() const;
TString get_last_error(bool clear = true);
// Setters
bool set_query();
TFppro& set_keys(TToken_string& keys);
TFppro& set_keys(const keys_s& keys);
bool associa_mov(int numreg) const;
const char* get_tipoprot() const;
const char* get_numprot() const;
const char* get_annoprot() const;
const char* get_dataoraric() const;
const char* get_tipodoc() const;
const char* get_numdoc() const;
TFppro();
TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
};
class TProtocollo : TObject
{
TString _tipoprot;
TString _progres;
int _year{};
public:
TProtocollo() = default;
TProtocollo(const int year, const char* tipoprot, const char* progres) : _tipoprot(tipoprot), _progres(progres), _year(year) { }
void set(const TProtocollo& prot);
void sset(const char* prot);
TString& get_prot() const;
prot_s get_prot();
int get_year() const { return _year; }
TString& get_tipoprot() { return _tipoprot; }
TString& get_progres() { return _progres; }
static TString& prot_in(int year, const char* tipoprot, const char* progres);
operator const char*() const { return static_cast<const char*>(get_prot()); }
};
class TF1_log : TObject
{
TLog_report* _log;
public:
TF1_log() : _log(nullptr){}
void log(int severity, const char* msg);
bool show_log();
};
TFppro& fppro_db();
const char* get_ini_codcaus();
const char* get_codcaus(const char * tipodoc, const char* codcf);
bool get_endatareg();
TString get_datainireg();
TString get_dataendreg();
bool get_periodprec();
void set_ini_codcaus(const TString& codcaus);
void set_endatareg(bool enable);
void set_datainireg(const TString& date);
void set_dataendreg(const TString& date);
void set_periodprec(bool flag);
// Controlla se il "cod_caus" e' per Fatture d'acquisto o Note Credito d'Acquisto
bool check_causale(const TString& cod_caus, bool acq = true);
// Controlla se il "cod_caus" ha come "tipo_doc" FA o NC (di acquisto)
bool check_causale(const TString& cod_caus, const TString& tipo_doc, bool acq = true);
bool check_caus_has_rit(const TString& cod_caus, bool rit);
void run_cont_ini(bool liq);
#endif // _F1LIB_H_