Merge branch 'R_10_00' of http://10.65.20.33/sirio/CAMPO/campo into R_10_00

This commit is contained in:
Alessandro Bonazzi 2020-09-16 13:33:43 +02:00
commit eea8980d70
13 changed files with 203 additions and 52 deletions

15
cd/test/cg0996.txt Normal file
View File

@ -0,0 +1,15 @@
cg0.exe
cg2.exe
cg4.exe
- Sistemato enum tipo sospensione (lista progressivi liquidazione stampa registri apertura esercizio iva apertura conti ricostruzione saldi)
- Sistemanto enum tiporeg
- Sistemato enum tiposal ( conferma movimeni provvisori
- Aggiuta cache di registri
- Sistemato enum tipo sospensione (lista progressivi liquidazione stampa registri apertura esercizio iva apertura conti ricostruzione saldi)
- Sistemanto enum tiporeg
- Sistemato enum tiposal ( conferma movimeni provvisori
- Aggiuta cache di registri
- Una fattura con pgamenti antecedenti alla fattura stessa e flag di liquidazione nel periodo precedente non veniva liquidato ne nel mese
corrente ne nel mese precedente

108
cd/test/cg0996a.ini Normal file
View File

@ -0,0 +1,108 @@
[Main]
Demo=0
[cg0]
File(0) = cg0.exe|X
Patch = 0996
Versione = 21511200
[cg2]
File(51) = cg2.exe|X
Patch = 0996
Versione = 21511200
[cg4]
File(84) = cg4.exe|X
Patch = 0996
Versione = 21511200
[cg99]
Kill(0) = bastreg.rep|x
Kill(1) = bastesc.rep|x
Kill(2) = bastzon.rep|x
Kill(3) = bastarb.msk|x
Kill(4) = batbtit.msk|x
Kill(5) = bastcfi.rep|x
Kill(6) = bastivd.msk|x
Kill(7) = bastcve.rep|x
Kill(8) = batbdpn.msk|x
Kill(9) = cg2fppro.msk|x
Kill(10) = bastnot.rep|x
Kill(11) = bastreg.msk|x
Kill(12) = batbnot.msk|x
Kill(13) = bastcco.msk|x
Kill(14) = batbver.msk|x
Kill(15) = batbcve.msk|x
Kill(16) = batbleg.msk|x
Kill(17) = bastcam.rep|x
Kill(18) = batbinl.msk|x
Kill(19) = batbzon.msk|x
Kill(20) = batbind.msk|x
Kill(21) = bastvet.rep|x
Kill(22) = bastpdb.msk|x
Kill(23) = bastvet.msk|x
Kill(24) = bastcco.rep|x
Kill(25) = bastdpn.rep|x
Kill(26) = batbpor.msk|x
Kill(27) = batblbu.msk|x
Kill(28) = bastmsp.msk|x
Kill(29) = bastarb.rep|x
Kill(30) = bastntb.rep|x
Kill(31) = bastzon.msk|x
Kill(32) = bastesc.msk|x
Kill(33) = batbscc.msk|x
Kill(34) = bastscc.rep|x
Kill(35) = batbins.msk|x
Kill(36) = batbpdb.msk|x
Kill(37) = batbivd.msk|x
Kill(38) = batblia.msk|x
Kill(39) = bastver.rep|x
Kill(40) = batbreg.msk|x
Kill(41) = bastntb.msk|x
Kill(42) = batbcco.msk|x
Kill(43) = bastpor.rep|x
Kill(44) = bastver.msk|x
Kill(45) = batbcfi.msk|x
Kill(46) = batbarb.msk|x
Kill(47) = batbndo.msk|x
Kill(48) = bastmsp.rep|x
Kill(49) = bastndo.msk|x
Kill(50) = bastndo.rep|x
Kill(51) = batbmsp.msk|x
Kill(52) = batbtra.msk|x
Kill(53) = bastcve.msk|x
Kill(54) = bastivd.rep|x
Kill(55) = batbcam.msk|x
Kill(56) = bastscc.msk|x
Kill(57) = bastcam.msk|x
Kill(58) = bastnot.msk|x
Kill(59) = batblia.msk|x
Kill(60) = bastpdb.rep|x
Kill(61) = bastleg.msk|x
Kill(62) = batbntb.msk|x
Kill(63) = bastdpn.msk|x
Kill(64) = batbdel.msk|x
Kill(65) = batbesc.msk|x
Kill(66) = bastpor.msk|x
Kill(67) = bastcfi.msk|x
Kill(68) = cgtbcon.msk|x
Kill(69) = bastleg.rep|x
Kill(70) = batbvet.msk|x
[cg]
Data = 15-09-2020
Descrizione = Contabilita' Generale
Dischi = 1
Edit_19 = cg0 -0
Edit_20 = cg0 -1
Edit_26 = cg0 -4
Edit_5 = cg0 -5
Moduli = ba
OEM =
Patch = 0996
PostProcess = bainst -0 CG
PreProcess =
Prezzo(1) =
Prezzo(2) =
Versione = 21511200

BIN
cd/test/cg0996a1.zip Normal file

Binary file not shown.

6
cd/test/f90996.txt Normal file
View File

@ -0,0 +1,6 @@
f90.exe
f90200a.msk
- Aggiornamento codici per nuovo tracciato in vigore dall'1 Ottobre: TipoDocSDI TipoRitenute Pagamenti.
- Aggiunta possib. di eliminare pacchetti se in errore web o sost anche in definit.
- Ricarimento cat. doc. a ogni giro.

20
cd/test/f90996a.ini Normal file
View File

@ -0,0 +1,20 @@
[Main]
Demo=0
[f90]
File(0) = f90.exe|X
File(5) = f90200a.msk|X
Patch = 0996
Versione = 21511200
[f9]
Data = 16-09-2020
Descrizione = Archiviazione Sostitutiva
Dischi = 1
Moduli = f9
OEM =
Patch = 996
PostProcess =
PreProcess =
Versione = 21511200

BIN
cd/test/f90996a1.zip Normal file

Binary file not shown.

View File

@ -410,15 +410,15 @@ void TMonitor_mask::delete_pack(const bool all) const
TString query;
const TString& codsoc(F9CONF.get_ambiente());
query << "BEGIN\n"
" DECLARE @stato CHAR(2);\n\n"
" SELECT @stato = " DRD_STATO "\n"
" DECLARE @flag_prov CHAR(1), @stato CHAR(2);\n\n"
" SELECT @flag_prov = " DRD_FLAG_PD ", @stato = " DRD_STATO "\n"
" FROM " F9_DRD "\n"
" WHERE " DRD_ID_EST " = '" << id_estr << "';\n\n"
" IF(@stato = '" D_GEST_ERR "' OR @stato = '" IN_DIAGN "') BEGIN\n"
" IF (@flag_prov = 'P' OR @stato = '" D_GEST_ERR "' OR @stato = '" IN_DIAGN "' OR @stato = '" D_WA_ERR "' OR @stato = '" D_ERR_SOS "') BEGIN\n"
" DELETE FROM " F9_ERR " WHERE " ERR_CODSOC " = '" << codsoc << "' AND " ERR_IDESTR " = '" << id_estr << "';\n"
" END\n"
" ELSE BEGIN\n"
" SELECT @stato AS STATO;\n"
" SELECT @flag_prov AS FLAG, @stato AS STATO;\n"
" END\n"
"END";
fp_db().sq_set_exec(query);
@ -428,7 +428,7 @@ void TMonitor_mask::delete_pack(const bool all) const
" SELECT @flag_prov = " DRD_FLAG_PD ", @stato = " DRD_STATO "\n"
" FROM " F9_DRD "\n"
" WHERE " DRD_ID_EST " = '" << id_estr << "';\n\n"
" IF (@flag_prov = 'P' OR @stato = '" D_GEST_ERR "' OR @stato = '" IN_DIAGN "') BEGIN\n"
" IF (@flag_prov = 'P' OR @stato = '" D_GEST_ERR "' OR @stato = '" IN_DIAGN "' OR @stato = '" D_WA_ERR "' OR @stato = '" D_ERR_SOS "') BEGIN\n"
" DELETE FROM " F9_DRD " WHERE " DRD_CODSOC " = '" << codsoc << "' AND " DRD_ID_EST " = '" << id_estr << "';\n"
" DELETE FROM " F9_IVA " WHERE " IVA_CODSOC " = '" << codsoc << "' AND " IVA_IDLAN " = '" << id_estr << "';\n"
" DELETE FROM " F9_MOVESTR " WHERE " MES_CODSOC " = '" << codsoc << "' AND " MES_IDESTR " = '" << id_estr << "';\n"
@ -436,9 +436,10 @@ void TMonitor_mask::delete_pack(const bool all) const
" SELECT @flag_prov AS FLAG, @stato AS STATO;\n"
"END";
fp_db().sq_set_exec(query);
if (fp_db().sq_get("FLAG") != "P" && fp_db().sq_get("STATO") != "02" && !all)
TString stato = fp_db().sq_get("STATO");
if (fp_db().sq_get("FLAG") != "P" && stato != D_GEST_ERR && stato != IN_DIAGN && stato != D_WA_ERR && stato != D_ERR_SOS && !all)
{
warning_box("E' possibile eliminare solo un'estrazione provvisoria o in stato di errore diagnostica gestionale.");
warning_box("E' possibile eliminare solo un'estrazione provvisoria\no in uno degli stati di errore se definitiva (02 - 05 - 08).");
return;
}
fp_db().sq_commit();

View File

@ -37,7 +37,7 @@ public:
class TF9_categorie_doc_msk : public TAutomask
{
std::shared_ptr<TArray_sheet> _annessi_sheet;
TRecord_categorie _categorie_doc;
TCategorie_doc _categorie_doc;
bool _mod_precaricate;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;

View File

@ -27,7 +27,6 @@ class TImport_msk : public TAutomask
{
friend class TGestione_doc_cartacei_f9_msk;
std::shared_ptr<TArray_sheet> _catdocs;
map<TString, unique_ptr<TArray_sheet>> _annessi;
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
@ -36,7 +35,7 @@ class TImport_msk : public TAutomask
static bool catannpadre_handler(TMask_field& field, KEY key);
static bool ok_handler(TMask_field& field, KEY key);
const char* select_catdoc();
static const char* select_catdoc();
public:
void set_fields(const TString& impaddress, const TString& impnumreg, bool isannesso = false, const TString& catannpadre = "",
@ -59,7 +58,7 @@ bool TImport_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
case F_IMPNUMREG:
if(e == fe_modify)
{
const std::shared_ptr<TCategorie_doc::classe_doc> c = categorie_doc().mov2cat(o.get_int());
const std::shared_ptr<TCategorie_doc::classe_doc> c = TCategorie_doc().mov2cat(o.get_int());
if (c != nullptr)
{
set(F_CATANNPADRE, c->catdoc);
@ -82,12 +81,13 @@ bool TImport_msk::catdocann_handler(TMask_field& field, KEY key)
static const char* msg_notexist = "Non esistono tipologie di annessi per questa categoria documentale.";
static const char* msg_inspadre = "Questa registrazione non e' riconosciuta in nessuna categoria documentale.\nImpossible inserire un annesso.\n"
"Si prega di inserire prima una cat. documentale che comprenda questo tipo di registrazione\naggiungendo anche eventuali tipologie di annessi.";
TCategorie_doc cd;
TImport_msk& msk = (TImport_msk&)field.mask();
if (key == K_TAB && field.dirty() && field.full())
{
if (msk.get(F_CATANNPADRE).full())
{
const TString_array names_ann = categorie_doc().get_array_ann(msk.get(F_CATANNPADRE));
const TString_array names_ann = cd.get_array_ann(msk.get(F_CATANNPADRE));
if (names_ann.items() > 0)
{
bool ok = false;
@ -115,7 +115,7 @@ bool TImport_msk::catdocann_handler(TMask_field& field, KEY key)
{
if (msk.get(F_CATANNPADRE).full())
{
TArray_sheet* annessi = categorie_doc().get_sheet_ann(msk.get(F_CATANNPADRE)).get();
TArray_sheet* annessi = cd.get_sheet_ann(msk.get(F_CATANNPADRE)).get();
if (annessi && annessi->items() > 0)
{
@ -123,7 +123,7 @@ bool TImport_msk::catdocann_handler(TMask_field& field, KEY key)
{
const char* s = annessi->row(annessi->selected()).get(0);
TCategorie_doc::annesso annesso;
if (categorie_doc().get_ann(s, annesso))
if (cd.get_ann(s, annesso))
{
if (annesso.opcee != "RC")
msk.set(F_CATDOCANN, annesso.catdoc);
@ -145,10 +145,11 @@ bool TImport_msk::catdocann_handler(TMask_field& field, KEY key)
bool TImport_msk::catannpadre_handler(TMask_field& field, KEY key)
{
TCategorie_doc cd;
TImport_msk& msk = (TImport_msk&)field.mask();
if (key == K_TAB && field.dirty() && field.full())
{
std::set<TString>& name_cats = categorie_doc().get_name_catdocs();
std::set<TString>& name_cats = cd.get_name_catdocs();
const bool ok = name_cats.find(field.get()) != name_cats.end();
if (!ok)
@ -159,10 +160,9 @@ bool TImport_msk::catannpadre_handler(TMask_field& field, KEY key)
}
if (key == K_F9)
{
field.set(msk.select_catdoc());
field.set(select_catdoc());
msk.set(F_CATDOCANN, "");
}
return true;
}
@ -174,10 +174,9 @@ bool TImport_msk::ok_handler(TMask_field& field, KEY key)
const char* TImport_msk::select_catdoc()
{
if(_catdocs == nullptr)
_catdocs = categorie_doc().get_sheet_catdocs();
if (_catdocs->run() == K_ENTER)
return _catdocs->row().get(0);
auto catdocs = TCategorie_doc().get_sheet_catdocs();
if (catdocs->run() == K_ENTER)
return catdocs->row().get(0);
return "";
}

View File

@ -200,7 +200,8 @@ void TF9_test_app::main_loop()
//TEstrazione::fill_id(clifo, statopaiv, idfisc, paiv, codfisc);
TCategorie_doc::annesso annesso;
if(categorie_doc().get_ann("INTREVC", annesso))
TCategorie_doc categorie_doc;
if(categorie_doc.get_ann("INTREVC", annesso))
TEstrazione::make_prosp_int_revc(153480, annesso);
TString s = TEstrai_mask::get_numdoc_exp_fp(105396);

View File

@ -220,14 +220,6 @@ public:
TRecord_categorie(type table = catdocs);
};
inline TCategorie_doc& categorie_doc()
{
static unique_ptr<TCategorie_doc> cd = nullptr;
if (cd == nullptr)
cd = make_unique<TCategorie_doc>();
return *cd;
}
struct movimento_t
{
enum err_mov
@ -330,13 +322,13 @@ struct movimento_t
class TEstrazione : public TObject
{
drd _head;
vector<movimento_t> _movs;
ofstream* _error_sql;
bool _escluso;
const TString _descr;
bool _has_cartacei;
TFilename _spotlite_path;
drd _head;
vector<movimento_t> _movs;
unique_ptr<ofstream> _error_sql;
bool _escluso;
const TString _descr;
bool _has_cartacei;
TFilename _spotlite_path;
/** Aggiorna stato estrazione. Utilizzato ad esempio dopo la diagnostica per riportare
* il nuovo stato sul db.
@ -388,6 +380,8 @@ private:
static bool pura_iva(const TLocalisamfile& mov);
void write_errorsql_log(const TString& query) const;
static TCategorie_doc& categorie_doc(bool reload = false);
public:
void add_mov(const movimento_t& movimento);

View File

@ -10,7 +10,6 @@
#include "mov.h"
#include "../fp/fplib.h"
#include "annessif9.h"
#include "modaut.h"
#include "dongle.h"
#include "execp.h"
@ -61,8 +60,7 @@ void TEstrazione::check_annessi(movimento_t& mov_i, const int numreg)
bool TEstrazione::check_annessi_oblig(const TString& catdoc, const int numreg, _Out_ TToken_string& ann_nexist)
{
ann_nexist.destroy(-1);
TCategorie_doc categorie;
const TString_array lista_cat_annessi = categorie.get_array_ann(catdoc); // Lista cat annessi
const TString_array lista_cat_annessi = categorie_doc().get_array_ann(catdoc); // Lista cat annessi
TF9_doccart file_cart;
std::vector<annesso_t> list_file_ann; // Lista file annessi
file_cart.mov2listann_vect(TString() << numreg, list_file_ann);
@ -70,7 +68,7 @@ bool TEstrazione::check_annessi_oblig(const TString& catdoc, const int numreg, _
FOR_EACH_ARRAY_ITEM(lista_cat_annessi, nr, ann)
{
TCategorie_doc::annesso annesso;
const bool ok_cat = categorie.get_ann(*(TToken_string*)ann, annesso);
const bool ok_cat = categorie_doc().get_ann(*(TToken_string*)ann, annesso);
// Ignoro il flag obbligatorio per il prospetto di reverse charge
if (ok_cat && annesso.obblig && annesso.opcee != "RC")
{
@ -586,6 +584,15 @@ void TEstrazione::write_errorsql_log(const TString& query) const
#endif
}
TCategorie_doc& TEstrazione::categorie_doc(const bool reload)
{
static TCategorie_doc* _doc_cats = nullptr;
if (_doc_cats == nullptr)
_doc_cats = new TCategorie_doc();
else if (reload)
_doc_cats->reload();
return *_doc_cats;
}
// Public methods /////////////////////////////////////////////////////////////////////////////////////////////
@ -615,6 +622,7 @@ bool TEstrazione::update_drd_stato_estr() const
const char* TEstrazione::diagnostica_mov()
{
categorie_doc(true);
bool ok = true;
const TipoIVA tipo = get_tipoiva();
_stats.total = _movs.size();
@ -995,12 +1003,11 @@ bool TEstrazione::estrazione_iva(bool escluso)
if(!it->annessi.empty())
{
vector<annesso_t>& ann = it->annessi;
TCategorie_doc cd;
size_t i = 0;
size_t size = ann.size();
size_t i = 0;
const size_t size = ann.size();
iva_query.add(IVA_CLASAN1, ann[i].catdocann, 10);
iva_query.add(IVA_NOMF1, ann[i++].filename, 100);
// HOW DID MY LIFE COME TO THIS?....
// HOW DID MY LIFE COME TO THIS?...
if (size > i)
{
iva_query.add(IVA_CLASAN2, ann[i].catdocann, 10);
@ -1115,7 +1122,7 @@ TEstrazione::TEstrazione(const TString& ambiente, const bool flag_prov, const ch
_head.addr_cart = addrcart;
_escluso = escluso;
_error_sql = new ofstream;
_error_sql = make_unique<ofstream>();
_error_sql->open("f9_TEstrazione_error_sql.txt");
// Svuoto log.

View File

@ -1,11 +1,11 @@
#ifndef __ANNESSIF9_H_
#define __ANNESSIF9_H_
#define F9A_NUMREG "NUMREG"
#define F9A_FILENAME "FILENAME"
#define F9A_CATDOCPAD "CATDOCPAD"
#define F9A_CATDOCANN "CATDOCANN"
#define F9A_LOADDATE "LOADDATE"
#define F9A_USER "USER"
#define F9A_NUMREG "NUMREG"
#define F9A_FILENAME "FILENAME"
#define F9A_CATDOCPAD "CATDOCPAD"
#define F9A_CATDOCANN "CATDOCANN"
#define F9A_LOADDATE "LOADDATE"
#define F9A_USER "USER"
#endif // __ANNESSIF9_H_