Merge branch 'R_10_00' of http://10.65.20.17:7990/scm/campo/campo into R_10_00
This commit is contained in:
commit
8b91e599e0
@ -9,6 +9,7 @@
|
||||
#include "tsdb.h"
|
||||
#include "fp0400a.h"
|
||||
#include "fplib.h"
|
||||
#include "sheet.h"
|
||||
|
||||
enum
|
||||
{
|
||||
@ -20,18 +21,24 @@ enum
|
||||
found_piva = 2, // Lo trovo con p.iva
|
||||
found_cf = 4, // Non ho p.iva lo trovo con cod.fisc
|
||||
};
|
||||
enum { filtri = 0, elenco_fe = 1, elenco_err = 2 }; // Enum per bottoni toolbar (numero pagina in cui mi trovo)
|
||||
|
||||
class TPassive_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
|
||||
void set_filter_changed();
|
||||
void select_all(int sheet_field);
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||
void next_page(int p) override;
|
||||
// Elenco dei protocolli selezionati
|
||||
void elenco_prots_sel(TString& string) const;
|
||||
void fill();
|
||||
static int find_fornitore(TLocalisamfile& clifo);
|
||||
static void add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom);
|
||||
static void aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err);
|
||||
// Aggiunge i protocolli che sono già presenti per le fatture nel db alla tabellina per il filtro
|
||||
void aggiungi_prot() const;
|
||||
void init();
|
||||
|
||||
void load_all_fields();
|
||||
@ -69,6 +76,7 @@ void TPassive_mask::fill()
|
||||
TSheet_field& sf = sfield(F_DOCS);
|
||||
TSheet_field& sf_err = sfield(F_ERR);
|
||||
TString query;
|
||||
TString prots_query;
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
|
||||
const TDate dal = get(F_DATAINI);
|
||||
@ -78,8 +86,10 @@ void TPassive_mask::fill()
|
||||
sf.destroy();
|
||||
sf_err.hide();
|
||||
sf_err.destroy();
|
||||
|
||||
query << "SELECT YEAR(P7_DATA) AS ANNO, P7_TIPODOC AS [TIPO_SDI], P7_NUMERO AS [NUM_DOC], " <<
|
||||
|
||||
elenco_prots_sel(prots_query);
|
||||
|
||||
query << "SELECT PZ_TIPOPROT AS TIPO_PROT, YEAR(P7_DATA) AS ANNO, P7_TIPODOC AS [TIPO_SDI], P7_NUMERO AS [NUM_DOC], " <<
|
||||
"P7_DATA AS [DATA_DOC], PQ_IMPTOTDOC AS [TOT_DOC], P2_ANADENOMIN AS [RAG_SOC], P2_ANANOME AS NOME, " <<
|
||||
"P2_ANACOGNOME AS COGNOME, P2_FISCIVACOD AS [P_IVA], P2_CODFISCALE AS [COD_FISC], P2_FISCIVAPAESE AS [COD_PAESE],\n" <<
|
||||
"COUNT(PP_ATTACHMENT) AS ATTACHMENT, P1_CODDEST AS [COD_SDI], PU_PEC AS PEC, P1_KEYPRGINVIO AS KEYPROG, P1_KEYHEADERFATT AS KEYHEAD, P1_KEYBODYFATT AS KEYFATT, " <<
|
||||
@ -91,9 +101,10 @@ void TPassive_mask::fill()
|
||||
"LEFT JOIN PAA2600F PAA26 ON P1_KEYPRGINVIO = PP_KEYPRGINVIO and P1_KEYHEADERFATT = PP_KEYHEADERFATT and P1_KEYBODYFATT = PP_KEYBODYFATT\n" <<
|
||||
"LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and P1_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n" <<
|
||||
"LEFT JOIN FPPRO00F FPPRO ON P1_KEYPRGINVIO = PZ_KEYPRGINVIO and P1_KEYHEADERFATT = PZ_KEYHEADERFATT and P1_KEYBODYFATT = PZ_KEYBODYFATT\n" <<
|
||||
"WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'\n" <<
|
||||
"WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'" << prots_query << "\n" <<
|
||||
"GROUP BY YEAR(P7_DATA), P7_TIPODOC, P7_NUMERO, P7_DATA, PQ_IMPTOTDOC, P2_ANADENOMIN, P2_ANANOME, P2_ANACOGNOME, P2_FISCIVACOD, P2_CODFISCALE, P2_FISCIVAPAESE,\n" <<
|
||||
"P1_CODDEST, PU_PEC, P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, PZ_TIPOPROT, PZ_NUMPROT, PZ_ANNOPROT, PZ_TIPOCF, PZ_CLIFOR";
|
||||
"P1_CODDEST, PU_PEC, P1_KEYPRGINVIO, P1_KEYHEADERFATT, P1_KEYBODYFATT, PZ_TIPOPROT, PZ_NUMPROT, PZ_ANNOPROT, PZ_TIPOCF, PZ_CLIFOR\n" <<
|
||||
"ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
|
||||
@ -109,6 +120,32 @@ void TPassive_mask::fill()
|
||||
sf_err.show();
|
||||
}
|
||||
|
||||
void TPassive_mask::elenco_prots_sel(TString& string) const
|
||||
{
|
||||
TString_array elenco;
|
||||
TSheet_field& sf = sfield(F_PROT);
|
||||
|
||||
string << " AND PZ_TIPOPROT IN (";
|
||||
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
if (*row->get(0) == 'X')
|
||||
elenco.add(row->get());
|
||||
}
|
||||
|
||||
// Creo una stringa da aggiungere alla query per la ricerca col codice protocollo, così fatta:
|
||||
// " AND PZ_TIPOPROT IN ('a', 'b', 'c')". (con elenco avente "a", "b" e "c" come stringhe)
|
||||
if (elenco.items() > 0)
|
||||
{
|
||||
for (int i = 0; i < elenco.items() - 1; i++)
|
||||
string << "\'" << elenco.row(i) << "\', ";
|
||||
string << "\'" << elenco.row(elenco.items() - 1) << "\')";
|
||||
}
|
||||
else
|
||||
string = "";
|
||||
}
|
||||
|
||||
|
||||
void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err)
|
||||
{
|
||||
int forn_code = -1;
|
||||
@ -117,6 +154,7 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
const TString paa_piva = fp_db().sq_get("P_IVA");
|
||||
const TString paa_codpaese = fp_db().sq_get("COD_PAESE");
|
||||
const TString paa_codsdi = fp_db().sq_get("COD_SDI");
|
||||
TString prot = fp_db().sq_get("TIPO_PROT");
|
||||
|
||||
TToken_string& row = sf.row(-1);
|
||||
|
||||
@ -135,8 +173,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(fp_db().sq_get("DATA_DOC"));
|
||||
row.add(fp_db().sq_get("TOT_DOC"));
|
||||
|
||||
// Dopo aver fatto le ricerche se lo trovo aggiungo se no coloro la cella
|
||||
// Dopo aver fatto le ricerche se lo trovo lo segno e lo aggiungo, se no coloro la cella
|
||||
forn_code = find_fornitore(clifo);
|
||||
if (forn_code == 0) row.add("X");
|
||||
else row.add("");
|
||||
|
||||
if(forn_code >= 0)
|
||||
{
|
||||
@ -154,14 +194,35 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(paa_piva);
|
||||
row.add(paa_codfisc);
|
||||
|
||||
row.add(fp_db().sq_get("ATTACHMENT").blank() ? "" : "X");
|
||||
row.add(fp_db().sq_get("ATTACHMENT") != "0" ? "" : "X");
|
||||
row.add(paa_codsdi.blank() ? fp_db().sq_get("PEC") : paa_codsdi);
|
||||
row.add(denom);
|
||||
row.add(fp_db().sq_get("TIPO_PROT") << fp_db().sq_get("NUM_PROT") << "/" << fp_db().sq_get("ANNO_PROT"));
|
||||
row.add(fp_db().sq_get("ANNO_PROT") << (prot.empty() ? "" : "-") << prot << "/" << fp_db().sq_get("NUM_PROT") << (prot.empty() ? " (no 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);
|
||||
}
|
||||
|
||||
void TPassive_mask::aggiungi_prot() const
|
||||
{
|
||||
TSheet_field& sf_prot = sfield(F_PROT);
|
||||
TString query = "";
|
||||
TString prot = "";
|
||||
|
||||
query << "SELECT DISTINCT(PZ_TIPOPROT) AS TIPO_PROT \nFROM FPPRO00F";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
while (fp_db().sq_next())
|
||||
{
|
||||
TToken_string& row = sf_prot.row(sf_prot.items()+1);
|
||||
prot = fp_db().sq_get("TIPO_PROT");
|
||||
|
||||
row.add("", 0);
|
||||
row.add(prot.empty() ? "no-prot." : prot );
|
||||
}
|
||||
|
||||
sf_prot.force_update();
|
||||
}
|
||||
|
||||
void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom)
|
||||
{
|
||||
TToken_string& row_err = sf_err.row(-1);
|
||||
@ -172,16 +233,16 @@ void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TStrin
|
||||
|
||||
switch (forn_code){
|
||||
case err_match_db:
|
||||
row_err.add("Salvato in db ma non corrisponde a un fornitore.");
|
||||
row_err.add("Salvato in database ma non corrisponde a un fornitore codificato.");
|
||||
break;
|
||||
case no_forn:
|
||||
row_err.add("Non trovato fornitore con per quella P.IVA.");
|
||||
row_err.add("Non trovato fornitore per la P.IVA.");
|
||||
break;
|
||||
case no_match_cf:
|
||||
row_err.add("Trovato fornitore ma il codice fiscale non corrisponde.");
|
||||
break;
|
||||
case no_cf:
|
||||
row_err.add("Non trovato fornitore con quel codice fiscale (senza la P.IVA).");
|
||||
row_err.add("Fornitore senza P. IVA, non trovato il codice fiscale");
|
||||
break;
|
||||
default:
|
||||
row_err.add("Errore durante identificazione fornitore.");
|
||||
@ -192,7 +253,7 @@ void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TStrin
|
||||
int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
|
||||
{
|
||||
TString paa_codfisc = fp_db().sq_get("COD_FISC");
|
||||
TString paa_piva = fp_db().sq_get("P_IVA");
|
||||
const TString paa_piva = fp_db().sq_get("P_IVA");
|
||||
TString paa_codpaese = fp_db().sq_get("COD_PAESE");
|
||||
const TString fppro_tipocf = fp_db().sq_get("TIPO_CF");
|
||||
TString fppro_codcf = fp_db().sq_get("COD_CLIFOR");
|
||||
@ -250,12 +311,28 @@ int TPassive_mask::find_fornitore(TLocalisamfile& clifo)
|
||||
|
||||
void TPassive_mask::init()
|
||||
{
|
||||
aggiungi_prot();
|
||||
}
|
||||
|
||||
void TPassive_mask::load_all_fields()
|
||||
{
|
||||
}
|
||||
|
||||
void TPassive_mask::select_all(int sheet_field)
|
||||
{
|
||||
TSheet_field& docs = sfield(sheet_field);
|
||||
TString_array& sht = docs.rows_array();
|
||||
const int items = sht.items();
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
const TString4 select = *sht.row(0).get(0) == 'X' ? "" : "X";
|
||||
for (int i = 0; i < items; i++)
|
||||
sht.row(i).add(select, 0);
|
||||
docs.force_update();
|
||||
}
|
||||
}
|
||||
|
||||
void TPassive_mask::salva_for()
|
||||
{
|
||||
if(fp_db().sq_is_connect())
|
||||
@ -285,11 +362,15 @@ void TPassive_mask::salva_for()
|
||||
{
|
||||
q_update << "UPDATE FPPRO00F SET PZ_TIPOCF = 'F', PZ_CLIFOR = '" << row->get(sf.cid2index(S_FORNITORE)) << "' WHERE PZ_KEYPRGINVIO = '" << key.get(0) << "' AND PZ_KEYHEADERFATT = '" << key.get(1) << "' AND PZ_KEYBODYFATT = '" << key.get(2) << "'";
|
||||
fp_db().sq_set_exec(q_update, false);
|
||||
row->add("X", sf.cid2index(S_FPPRO));
|
||||
sf.force_update();
|
||||
}
|
||||
}
|
||||
}
|
||||
row->add("", 0);
|
||||
}
|
||||
fp_db().sq_commit();
|
||||
sf.force_update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -297,9 +378,37 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case S_SELCODPROT:
|
||||
if(e == fe_modify)
|
||||
set_filter_changed();
|
||||
break;
|
||||
case F_PROT:
|
||||
if(e == fe_init)
|
||||
init();
|
||||
break;
|
||||
case DLG_ALL:
|
||||
if (e == fe_button)
|
||||
switch (curr_page())
|
||||
{
|
||||
case filtri:
|
||||
select_all(F_PROT);
|
||||
set_filter_changed();
|
||||
break;
|
||||
case elenco_fe:
|
||||
select_all(F_DOCS);
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if (e == fe_button)
|
||||
salva_for();
|
||||
switch(curr_page())
|
||||
{
|
||||
case elenco_fe:
|
||||
salva_for();
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
case F_DATAINI:
|
||||
if (e == fe_init)
|
||||
@ -310,10 +419,11 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
case F_DATAEND:
|
||||
if (e == fe_init)
|
||||
o.set(TDate(TODAY));
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
if ((e == fe_modify || e >= se_enter) && jolly == 0)
|
||||
if (o.dlg() >= START_MASK && o.dlg() <= END_MASK)
|
||||
if (o.dlg() >= START_MASK && o.dlg() <= END_MASK || o.dlg() == F_PROT)
|
||||
set_filter_changed();
|
||||
|
||||
return true;
|
||||
@ -326,7 +436,6 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll
|
||||
|
||||
class TPassive_app : public TSkeleton_application
|
||||
{
|
||||
|
||||
public:
|
||||
void main_loop() override;
|
||||
|
||||
@ -338,7 +447,6 @@ void TPassive_app::main_loop()
|
||||
TPassive_mask mask;
|
||||
while(mask.run() == K_ENTER)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,10 +1,15 @@
|
||||
#define START_MASK 401
|
||||
#define F_DATAINI 401
|
||||
#define F_DATAEND 402
|
||||
#define F_SAVEFOR 403
|
||||
#define END_MASK 499
|
||||
#define START_MASK 501
|
||||
#define F_DATAINI 501
|
||||
#define F_DATAEND 502
|
||||
#define F_SAVEFOR 503
|
||||
#define END_MASK 599
|
||||
|
||||
|
||||
#define F_PROT 401
|
||||
|
||||
#define S_SELCODPROT 101
|
||||
#define S_CODPROT 102
|
||||
|
||||
//#define F_DOCUMENTI_TIPO 301
|
||||
//#define S_SELCODNUM 101
|
||||
//#define S_TIPODOCSEL 102
|
||||
@ -20,16 +25,17 @@
|
||||
#define S_NDOC 104
|
||||
#define S_DATADOC 105
|
||||
#define S_TOTDOC 106
|
||||
#define S_FORNITORE 107
|
||||
#define S_RAGSOC 108
|
||||
#define S_STATOPAIV 109
|
||||
#define S_PARIVA 110
|
||||
#define S_CODFISC 111
|
||||
#define S_ATTACH 112
|
||||
#define S_COFI 113
|
||||
#define S_RAGXML 114
|
||||
#define S_NPROT 115
|
||||
#define S_PROKEY 116
|
||||
#define S_FPPRO 107
|
||||
#define S_FORNITORE 108
|
||||
#define S_RAGSOC 109
|
||||
#define S_STATOPAIV 110
|
||||
#define S_PARIVA 111
|
||||
#define S_CODFISC 112
|
||||
#define S_ATTACH 113
|
||||
#define S_COFI 114
|
||||
#define S_RAGXML 115
|
||||
#define S_NPROT 116
|
||||
#define S_PROKEY 117
|
||||
|
||||
|
||||
#define F_ERR 301
|
||||
|
@ -15,13 +15,6 @@ BEGIN
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BUTTON DLG_FINDREC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Segna pronto"
|
||||
PICTURE TOOL_PERMISSIONS
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
#include <helpbar.h>
|
||||
|
||||
ENDPAGE
|
||||
@ -42,6 +35,13 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
SPREADSHEET F_PROT 25 10
|
||||
BEGIN
|
||||
PROMPT 1 6 "Selezionare o aggiungere un filtro sul Tipo Progressivo"
|
||||
ITEM "@1"
|
||||
ITEM "Codice\nProtocol.@12"
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
@ -56,15 +56,16 @@ BEGIN
|
||||
ITEM "Num.\nDoc.@11"
|
||||
ITEM "Data\nDoc.@10"
|
||||
ITEM "Totale\nDoc."
|
||||
ITEM "Salvato in\nFP PRO@7"
|
||||
ITEM "Fornitore"
|
||||
ITEM "Ragione Sociale@50"
|
||||
ITEM "Stato P.IVA@2"
|
||||
ITEM "P. IVA@16"
|
||||
ITEM "Cod. Fiscale@16"
|
||||
ITEM "Allegati"
|
||||
ITEM "Codice destinatario@20"
|
||||
ITEM "Codice\ndestinatario@7"
|
||||
ITEM "Rag. Soc. (XML)@50"
|
||||
ITEM "Numero Protocollo"
|
||||
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22"
|
||||
ITEM "Chiave Prot.@80"
|
||||
END
|
||||
|
||||
@ -86,6 +87,29 @@ ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
PAGE "Spread protocol " 0 2 0 0
|
||||
|
||||
BOOLEAN S_SELCODPROT
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING S_CODPROT 12
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
PAGE "Documento" -1 -1 78 9
|
||||
|
||||
BOOLEAN S_SELECTED
|
||||
@ -131,6 +155,12 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN S_FPPRO
|
||||
BEGIN
|
||||
PROMPT 28 3 "Salvato"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER S_FORNITORE 6
|
||||
BEGIN
|
||||
PROMPT 1 4 "Fornitore "
|
||||
@ -242,7 +272,7 @@ STRING S_RAGXML 50
|
||||
HELP "Ragione sociale scritta nell'xml"
|
||||
END
|
||||
|
||||
STRING S_NPROT 20
|
||||
STRING S_NPROT 22
|
||||
BEGIN
|
||||
PROMPT 1 5 ""
|
||||
HELP "Numero Protocollo"
|
||||
@ -281,6 +311,7 @@ END
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
PAGE "Riga Errore" -1 -1 69 14
|
||||
|
||||
STRING S_STATOERR 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user