Patch level : 12.0 844
Files correlati : fp0.exe, fp0400a.msk Commento : - Corretto calcolo ritenute fiscali se piu di una - Aggiunta colonna ritenute fiscali nel monitor passive
This commit is contained in:
parent
f25fbff4d2
commit
8266f805c9
104
src/f1/f1lib.cpp
104
src/f1/f1lib.cpp
@ -5,10 +5,10 @@
|
||||
#include "cg2102.h"
|
||||
#include "execp.h"
|
||||
#include "cfven.h"
|
||||
#include "../fp/fp0400a.h"
|
||||
#include "reputils.h"
|
||||
#include "../fp/fplib.h"
|
||||
#include "causali.h"
|
||||
#include "clifo.h"
|
||||
#include "../fp/fplib.h"
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// TFppro
|
||||
@ -18,9 +18,7 @@ TFppro& fppro_db()
|
||||
{
|
||||
static TFppro* fppro = nullptr;
|
||||
if (fppro == nullptr)
|
||||
{
|
||||
fppro = new TFppro();
|
||||
}
|
||||
return *fppro;
|
||||
}
|
||||
|
||||
@ -37,14 +35,14 @@ bool TFppro::guess_the_doc(const TLocalisamfile& mov)
|
||||
"\tP7_NUMERO AS NUMDOC, PQ_IMPTOTDOC AS IMPTOTDOC, P2_FISCIVAPAESE AS STATOPIVA, P2_FISCIVACOD AS PIVA FROM PAA2700F\n" <<
|
||||
"JOIN PAA0700F ON PQ_KEYPRGINVIO = P7_KEYPRGINVIO AND PQ_KEYHEADERFATT = P7_KEYHEADERFATT AND PQ_KEYBODYFATT = P7_KEYBODYFATT\n" <<
|
||||
"JOIN PAA0200F ON PQ_KEYPRGINVIO = P2_KEYPRGINVIO AND PQ_KEYHEADERFATT = P2_KEYHEADERFATT AND PQ_KEYBODYFATT = P2_KEYBODYFATT\n";
|
||||
fp_db().sq_set_exec(query);
|
||||
_db->sq_set_exec(query);
|
||||
|
||||
const keys_s keys = { fp_db().sq_get("KEYPRGINVIO"), fp_db().sq_get("KEYHEADERFATT"), fp_db().sq_get("KEYBODYFATT") };
|
||||
const TDate data = fp_db().sq_get_date("DATA");
|
||||
const TString numdoc = fp_db().sq_get("NUMDOC");
|
||||
const real imptotdoc(fp_db().sq_get("IMPTOTDOC"));
|
||||
const TString4 statopiva = fp_db().sq_get("STATOPIVA");
|
||||
const TString piva = fp_db().sq_get("PIVA");
|
||||
const keys_s keys = { _db->sq_get("KEYPRGINVIO"), _db->sq_get("KEYHEADERFATT"), _db->sq_get("KEYBODYFATT") };
|
||||
const TDate data = _db->sq_get_date("DATA");
|
||||
const TString numdoc = _db->sq_get("NUMDOC");
|
||||
const real imptotdoc(_db->sq_get("IMPTOTDOC"));
|
||||
const TString4 statopiva = _db->sq_get("STATOPIVA");
|
||||
const TString piva = _db->sq_get("PIVA");
|
||||
|
||||
// Prendo il fornitore del mov per controllare la p.iva
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
@ -78,10 +76,10 @@ int TFppro::get_numreg()
|
||||
if (!_is_set)
|
||||
{
|
||||
if (set_query())
|
||||
return fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
||||
return -1;
|
||||
}
|
||||
return fp_db().sq_get_int("PZ_NUMREGCONT");
|
||||
return _db->sq_get_int("PZ_NUMREGCONT");
|
||||
}
|
||||
|
||||
int TFppro::get_numreg(TToken_string& keys)
|
||||
@ -95,31 +93,33 @@ TDate TFppro::get_datareg()
|
||||
if (!_is_set)
|
||||
{
|
||||
if (set_query())
|
||||
return fp_db().sq_get_date("PZ_DATAREGCONT");
|
||||
return _db->sq_get_date("PZ_DATAREGCONT");
|
||||
return TDate();
|
||||
}
|
||||
return fp_db().sq_get_date("PZ_DATAREGCONT");
|
||||
return _db->sq_get_date("PZ_DATAREGCONT");
|
||||
}
|
||||
|
||||
TDate TFppro::get_datareg(TToken_string& keys)
|
||||
{
|
||||
if (set_keys(keys))
|
||||
set_keys(keys);
|
||||
if (_is_set)
|
||||
return get_datareg();
|
||||
return TDate();
|
||||
}
|
||||
|
||||
real TFppro::get_ritenute() const
|
||||
{
|
||||
real imp = ZERO;
|
||||
TString query;
|
||||
query << "SELECT P7_IMPORTORIT AS IMPORTO FROM PAA0700F\n" <<
|
||||
"WHERE P7_KEYPRGINVIO = '" << _keys.prginvio << "' AND P7_KEYHEADERFATT = '" << _keys.headerfatt << "' AND P7_KEYBODYFATT = '" << _keys.bodyfatt << "'";
|
||||
fp_db().sq_set_exec(query);
|
||||
if(fp_db().sq_items() >= 1)
|
||||
return fp_db().sq_get_real("IMPORTO");
|
||||
return ZERO;
|
||||
_db->sq_set_exec(query, false);
|
||||
for(bool ok = _db->sq_next(); ok; ok = _db->sq_next())
|
||||
imp += _db->sq_get_real("IMPORTO");
|
||||
return imp;
|
||||
}
|
||||
|
||||
bool TFppro::set_keys(TToken_string& keys)
|
||||
TFppro& TFppro::set_keys(TToken_string& keys)
|
||||
{
|
||||
if(keys.items() == 3)
|
||||
{
|
||||
@ -127,30 +127,32 @@ bool TFppro::set_keys(TToken_string& keys)
|
||||
_keys.headerfatt = keys.get(1);
|
||||
_keys.bodyfatt = keys.get(2);
|
||||
_is_set = false;
|
||||
return _keys_setted = true;
|
||||
_keys_setted = true;
|
||||
}
|
||||
return _keys_setted = false;
|
||||
_keys_setted = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool TFppro::set_keys(keys_s keys)
|
||||
TFppro& TFppro::set_keys(keys_s keys)
|
||||
{
|
||||
if(*keys.prginvio != 0 && *keys.headerfatt != 0 && *keys.bodyfatt != 0)
|
||||
{
|
||||
_keys = keys;
|
||||
_is_set = false;
|
||||
return _keys_setted = true;
|
||||
_keys_setted = true;
|
||||
}
|
||||
_is_set = false;
|
||||
return _keys_setted = false;
|
||||
_keys_setted = false;
|
||||
return *this;
|
||||
}
|
||||
|
||||
TDate TFppro::get_data_first_doc()
|
||||
TDate TFppro::get_data_first_doc() const
|
||||
{
|
||||
TString query;
|
||||
query << "SELECT min(a.DATA) AS DATA \nFROM( \n\tSELECT P7_DATA as DATA \n" <<
|
||||
"\tFROM PAA0700F \n\tUNION \n\tSELECT P7_DATA as DATA \n\tFROM PAF0700F \n) a";
|
||||
fp_db().sq_set_exec(query);
|
||||
return fp_db().sq_get_date("DATA");
|
||||
_db->sq_set_exec(query);
|
||||
return _db->sq_get_date("DATA");
|
||||
}
|
||||
|
||||
bool TFppro::set_query()
|
||||
@ -158,7 +160,7 @@ bool TFppro::set_query()
|
||||
if (_keys_setted)
|
||||
{
|
||||
_fppro_query.cut(0) << "SELECT * FROM FPPRO00F " << where_str();
|
||||
return _is_set = fp_db().sq_set_exec(_fppro_query);
|
||||
return _is_set = _db->sq_set_exec(_fppro_query);
|
||||
}
|
||||
return _is_set = false;
|
||||
}
|
||||
@ -170,6 +172,14 @@ const char* TFppro::where_str() const
|
||||
return str;
|
||||
}
|
||||
|
||||
TFppro::TFppro() : _keys({ "\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false)
|
||||
{
|
||||
_db = new SSimple_query();
|
||||
const bool ok = set_connection(*_db);
|
||||
// Non utilizzo l'autocommit, viene gestito manualmente
|
||||
if (ok) _db->sq_set_autocommit(false);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////
|
||||
// TProtocollo
|
||||
//////////////////////////////////////////////////////////
|
||||
@ -366,4 +376,38 @@ bool TF1_log::show_log()
|
||||
_log = NULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TFppro::set_connection(SSimple_query& s)
|
||||
{
|
||||
bool ok = true;
|
||||
#ifdef DBG
|
||||
TString ip = fp_settings().get_db_indirizzo();
|
||||
if (ip.upper() != "TESTCAMPO2012")
|
||||
{
|
||||
if (s.sq_connect("TESTCAMPO2012@campo_fp",
|
||||
"fp",
|
||||
"fp",
|
||||
TSDB_MSSQL) != NOERR)
|
||||
{
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#endif
|
||||
if (s.sq_connect(
|
||||
fp_settings().get_db_str_con(),
|
||||
fp_settings().get_db_user(),
|
||||
fp_settings().get_db_password(),
|
||||
TSDB_MSSQL) != NOERR)
|
||||
{
|
||||
warning_box("Impossibile connettersi al DB esterno");
|
||||
ok = false;
|
||||
}
|
||||
#ifdef DBG
|
||||
}
|
||||
#endif
|
||||
return ok;
|
||||
}
|
@ -2,9 +2,8 @@
|
||||
#define _F1LIBH_
|
||||
|
||||
#include "strings.h"
|
||||
#include "config.h"
|
||||
#include "report.h"
|
||||
#include "reputils.h"
|
||||
#include "tsdb.h"
|
||||
|
||||
#define FILE_CONFIG CONFIG_DITTA
|
||||
#define FILE_SECTION "f1"
|
||||
@ -34,6 +33,7 @@ class TFppro : public TObject
|
||||
const char* bodyfatt;
|
||||
};
|
||||
private:
|
||||
SSimple_query* _db;
|
||||
keys_s _keys;
|
||||
bool _guess;
|
||||
bool _keys_setted;
|
||||
@ -45,21 +45,24 @@ public:
|
||||
|
||||
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);
|
||||
void get_keys_fppro();
|
||||
int get_numreg();
|
||||
int get_numreg(TToken_string& keys);
|
||||
TDate get_datareg();
|
||||
TDate get_datareg(TToken_string& keys);
|
||||
real get_ritenute() const;
|
||||
bool set_query();
|
||||
bool set_keys(TToken_string& keys);
|
||||
bool set_keys(keys_s keys);
|
||||
bool guess_the_doc(const TLocalisamfile& mov);
|
||||
// Getters
|
||||
void get_keys_fppro();
|
||||
int get_numreg();
|
||||
int get_numreg(TToken_string& keys);
|
||||
TDate get_datareg();
|
||||
TDate get_datareg(TToken_string& keys);
|
||||
real get_ritenute() const;
|
||||
TDate get_data_first_doc() const;
|
||||
// Setters
|
||||
bool set_query();
|
||||
TFppro& set_keys(TToken_string& keys);
|
||||
TFppro& set_keys(keys_s keys);
|
||||
|
||||
static TDate get_data_first_doc();
|
||||
static bool set_connection(SSimple_query& s);
|
||||
|
||||
TFppro() : _keys({"\0", "\0", "\0" }), _guess(false), _keys_setted(false), _is_set(false) { }
|
||||
TFppro::TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
||||
TFppro();
|
||||
TFppro(TToken_string& keys) : TFppro() { set_keys(keys); }
|
||||
};
|
||||
|
||||
class TProtocollo : TObject
|
||||
|
@ -247,6 +247,8 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT");
|
||||
const TString& filter_elab = get_fattsel();
|
||||
const bool is_contab = dataregcont != TDate("20010101");
|
||||
TToken_string keys("", ';');
|
||||
keys.add(fp_db().sq_get("KEYPROG")); keys.add(fp_db().sq_get("KEYHEAD")); keys.add(fp_db().sq_get("KEYFATT"));
|
||||
|
||||
clifo.zero();
|
||||
clifo.put(CLI_TIPOCF, 'F');
|
||||
@ -271,6 +273,7 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(fp_db().sq_get_date("DATA_RIC"));
|
||||
row.add(fp_db().sq_get_date("DATA_DOC"));
|
||||
row.add(fp_db().sq_get("TOT_DOC"));
|
||||
row.add(fppro_db().set_keys(keys).get_ritenute());
|
||||
|
||||
// Decido se mettere o meno il flag
|
||||
if (forn_code == 0)
|
||||
@ -301,12 +304,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(paa_codpaese, sf.cid2index(S_STATOPAIV));
|
||||
row.add(paa_piva);
|
||||
row.add(paa_codfisc);
|
||||
|
||||
row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X");
|
||||
row.add(denom);
|
||||
row.add(TProtocollo(fp_db().sq_get_int("ANNO_PROT"), fp_db().sq_get("TIPO_PROT"), fp_db().sq_get("NUM_PROT")));
|
||||
TString key_prot; key_prot << fp_db().sq_get("KEYPROG") << ";" << fp_db().sq_get("KEYHEAD") << ";" << fp_db().sq_get("KEYFATT");
|
||||
row.add(key_prot);
|
||||
row.add(keys);
|
||||
}
|
||||
|
||||
}
|
||||
@ -599,7 +600,7 @@ int TPassive_mask::prepara_contab() const
|
||||
real imp = calcola_importo(riva);
|
||||
totdoc.cut(0) << imp;
|
||||
}
|
||||
real rit = TFppro(keys).get_ritenute();
|
||||
real rit = fppro_db().set_keys(keys).get_ritenute();
|
||||
if(rit != ZERO)
|
||||
{
|
||||
contab_ini.set("TOTDOC", (abs(real(totdoc)) - rit).string());
|
||||
|
@ -30,18 +30,19 @@
|
||||
#define S_DATARIC 105
|
||||
#define S_DATADOC 106
|
||||
#define S_TOTDOC 107
|
||||
#define S_FPPRO 108
|
||||
#define S_NUMREGCONT 109
|
||||
#define S_DATAREGCONT 110
|
||||
#define S_FORNITORE 111
|
||||
#define S_RAGSOC 112
|
||||
#define S_STATOPAIV 113
|
||||
#define S_PARIVA 114
|
||||
#define S_CODFISC 115
|
||||
#define S_ATTACH 116
|
||||
#define S_RAGXML 117
|
||||
#define S_NPROT 118
|
||||
#define S_PROKEY 119
|
||||
#define S_TOTRIT 108
|
||||
#define S_FPPRO 109
|
||||
#define S_NUMREGCONT 110
|
||||
#define S_DATAREGCONT 111
|
||||
#define S_FORNITORE 112
|
||||
#define S_RAGSOC 113
|
||||
#define S_STATOPAIV 114
|
||||
#define S_PARIVA 115
|
||||
#define S_CODFISC 116
|
||||
#define S_ATTACH 117
|
||||
#define S_RAGXML 118
|
||||
#define S_NPROT 119
|
||||
#define S_PROKEY 120
|
||||
|
||||
|
||||
#define F_ERR 301
|
||||
|
@ -184,23 +184,24 @@ BEGIN
|
||||
PROMPT 0 4 ""
|
||||
ITEM ""
|
||||
ITEM "Anno"
|
||||
ITEM "Tipo Doc.\nSDI@6"
|
||||
ITEM "Numero\nDocumento@18"
|
||||
ITEM "Tipo Doc.\nSDI@5"
|
||||
ITEM "Numero\nDocumento@14"
|
||||
ITEM "Data\nRicezione@8"
|
||||
ITEM "Data\nDoc.@8"
|
||||
ITEM "Totale\nDocumento@12"
|
||||
ITEM "Fornitore\nassociato@7"
|
||||
ITEM "Num. Registrazione\ncontabile@12"
|
||||
ITEM "Data Registrazione\ncontabile@12"
|
||||
ITEM "Fornitore@7"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Totale\nDocumento@7"
|
||||
ITEM "Totale\nritenute@6"
|
||||
ITEM "Fornitore\nassociato@6"
|
||||
ITEM "Num. Regis.\ncontabile@8"
|
||||
ITEM "Data Regis.\ncontabile@8"
|
||||
ITEM "Fornitore@5"
|
||||
ITEM "Ragione Sociale@40"
|
||||
ITEM "Stato\nP.IVA@4"
|
||||
ITEM "Partita IVA@10"
|
||||
ITEM "Cod. Fiscale@16"
|
||||
ITEM "Allegati@7"
|
||||
ITEM "Ragione Sociale (XML)@50"
|
||||
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22"
|
||||
ITEM "Chiave Prot.@80"
|
||||
ITEM "Cod. Fiscale@12"
|
||||
ITEM "Allegati@6"
|
||||
ITEM "Ragione Sociale (XML)@40"
|
||||
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@20"
|
||||
ITEM "Chiave Prot.@40"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
@ -311,6 +312,12 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_TOTRIT 10 2
|
||||
BEGIN
|
||||
PROMPT 1 2 "Totale Ritenute"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_FPPRO
|
||||
BEGIN
|
||||
PROMPT 15 2 "Salvato in FP-PRO"
|
||||
|
Loading…
x
Reference in New Issue
Block a user