Patch level : 12.0 750

Files correlati     : cg2100, fp0400
Commento            :
- Per prima nota: aggiunto controllo esistenza programma fp
- Migliorato controllo corrispondenza documento in FPPRO
- Aggiunto controllo se già registrato in FPPRO
- Per monitor passive: aggiunte colonne per registrazione contabile
This commit is contained in:
Simone Palacino 2019-03-27 14:53:22 +01:00
parent 979dec06f4
commit 06c0588356
4 changed files with 56 additions and 27 deletions

View File

@ -2283,10 +2283,10 @@ void TPrimanota_application::mask2ini(const TMask& msk, TConfig& ini)
bool TPrimanota_application::save_fppro() const bool TPrimanota_application::save_fppro() const
{ {
const KEY last = curr_mask().last_key(); const KEY last = curr_mask().last_key();
if (last == K_ESC || last == K_QUIT || last == K_F9) // Salto se sto uscendo if (last == K_ESC || last == K_QUIT || last == K_F9 || last == K_INS) // Salto se sto uscendo
return true; return true;
// Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP // Provo a vedere se hanno l'FP: se c'è l'indirizzo controllo che non sia F8 se non c'è non hanno l'FP
if (fp_settings().get_db_indirizzo().empty() || fp_settings().is_f8()) if (!fexist("fp0.exe") || fp_settings().get_db_indirizzo().empty() || fp_settings().is_f8())
return true; // Salto il salvataggio in FPPRO return true; // Salto il salvataggio in FPPRO
TMask& msk = curr_mask(); TMask& msk = curr_mask();
@ -2332,13 +2332,20 @@ bool TPrimanota_application::save_fppro() const
"JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << "JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" <<
"WHERE " << id_fornitore << " AND PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\' ;"; "WHERE " << id_fornitore << " AND PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\' ;";
fp_db().sq_set_exec(query); fp_db().sq_set_exec(query);
const int n = fp_db().sq_items();
const TDate& dataoraric = fp_db().sq_get_date("P1_DATAORARIC"); // Devo controllare che la data operazione sia maggiore della data ric if (n != 1)
if (dataoraric.empty())
{ {
message_box("Attenzione non è stato possibile indentificare\nil documento con una fattura in FPPRO"); message_box("Attenzione non è stato possibile indentificare\nil documento con una specifica fattura in FPPRO");
return false; return false;
} }
const int numreg = fp_db().sq_get_int("PZ_NUMREGCONT");
if (numreg != 0)
{
error_box(TString("Il documento ") << data_documento.year() << " / " << numero_doc << " è già stato inserito con la registrazione numero " << numreg << "\nSalvataggio in FPPRO impossibile.");
return false;
}
const TString& dataoraric = fp_db().sq_get("P1_DATAORARIC"); // Devo controllare che la data operazione sia maggiore della data ric
if(data_operazione < TDate(dataoraric)) if(data_operazione < TDate(dataoraric))
{ {
error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione."); error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione.");

View File

@ -108,7 +108,7 @@ void TPassive_mask::fill()
elenco_prots_sel(prots_query); 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], " << 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, " << "P7_DATA AS [DATA_DOC], PQ_IMPTOTDOC AS [TOT_DOC], PZ_NUMREGCONT AS NUMREGCONT, PZ_DATAREGCONT AS DATAREGCONT, 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" << "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, " << "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, " <<
"PZ_TIPOPROT AS [TIPO_PROT], PZ_NUMPROT AS [NUM_PROT], PZ_ANNOPROT AS [ANNO_PROT], PZ_TIPOCF AS [TIPO_CF], PZ_CLIFOR AS [COD_CLIFOR]\n" << "PZ_TIPOPROT AS [TIPO_PROT], PZ_NUMPROT AS [NUM_PROT], PZ_ANNOPROT AS [ANNO_PROT], PZ_TIPOCF AS [TIPO_CF], PZ_CLIFOR AS [COD_CLIFOR]\n" <<
@ -120,7 +120,7 @@ void TPassive_mask::fill()
"LEFT JOIN PAA3200F PAA32 ON P1_KEYPRGINVIO = PU_KEYPRGINVIO and P1_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_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" << "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() << "\'" << prots_query << "\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" << "GROUP BY YEAR(P7_DATA), P7_TIPODOC, P7_NUMERO, P7_DATA, PQ_IMPTOTDOC, PZ_NUMREGCONT, PZ_DATAREGCONT, 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\n" << "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"; "ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC";
fp_db().sq_set_exec(query, false); fp_db().sq_set_exec(query, false);
@ -170,8 +170,9 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
const TString paa_piva = fp_db().sq_get("P_IVA"); const TString paa_piva = fp_db().sq_get("P_IVA");
const TString paa_codpaese = fp_db().sq_get("COD_PAESE"); const TString paa_codpaese = fp_db().sq_get("COD_PAESE");
const TString paa_codsdi = fp_db().sq_get("COD_SDI"); const TString paa_codsdi = fp_db().sq_get("COD_SDI");
TString prot = fp_db().sq_get("TIPO_PROT"); const TString prot = fp_db().sq_get("TIPO_PROT");
TString filter_elab = get(F_FATTSEL); const TDate dataregcont = fp_db().sq_get_date("DATAREGCONT");
const TString filter_elab = get(F_FATTSEL);
clifo.zero(); clifo.zero();
clifo.put(CLI_TIPOCF, 'F'); clifo.put(CLI_TIPOCF, 'F');
@ -199,6 +200,11 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
else else
row.add(""); row.add("");
row.add(fp_db().sq_get("NUMREGCONT"));
if(dataregcont == TDate("20010101"))
row.add("");
else
row.add(dataregcont);
// Valorizzo le colonne rimanenti o la tabella degli errori // Valorizzo le colonne rimanenti o la tabella degli errori
if (forn_code >= 0) if (forn_code >= 0)
{ {

View File

@ -15,21 +15,23 @@
#define S_SELECTED 101 #define S_SELECTED 101
#define S_ANNO 102 #define S_ANNO 102
#define S_TIPODOCSDI 103 #define S_TIPODOCSDI 103
#define S_NDOC 104 #define S_NDOC 104
#define S_DATADOC 105 #define S_DATADOC 105
#define S_TOTDOC 106 #define S_TOTDOC 106
#define S_FPPRO 107 #define S_FPPRO 107
#define S_FORNITORE 108 #define S_NUMREGCONT 108
#define S_RAGSOC 109 #define S_DATAREGCONT 109
#define S_STATOPAIV 110 #define S_FORNITORE 110
#define S_PARIVA 111 #define S_RAGSOC 111
#define S_CODFISC 112 #define S_STATOPAIV 112
#define S_ATTACH 113 #define S_PARIVA 113
#define S_CODSDI 114 #define S_CODFISC 114
#define S_RAGXML 115 #define S_ATTACH 115
#define S_NPROT 116 #define S_CODSDI 116
#define S_PROKEY 117 #define S_RAGXML 117
#define S_NPROT 118
#define S_PROKEY 119
#define F_ERR 301 #define F_ERR 301

View File

@ -74,16 +74,18 @@ BEGIN
ITEM "" ITEM ""
ITEM "Anno" ITEM "Anno"
ITEM "Tipo Doc.\nSDI@6" ITEM "Tipo Doc.\nSDI@6"
ITEM "Numero\nDocumento@20" ITEM "Numero\nDocumento@18"
ITEM "Data\nDoc.@10" ITEM "Data\nDoc.@8"
ITEM "Totale\nDocumento" ITEM "Totale\nDocumento@12"
ITEM "Salvato in\nFP PRO@7" ITEM "Salvato in\nFP PRO@7"
ITEM "Fornitore" ITEM "Num. Registrazione\ncontabile@12"
ITEM "Data Registrazione\ncontabile@12"
ITEM "Fornitore@7"
ITEM "Ragione Sociale@50" ITEM "Ragione Sociale@50"
ITEM "Stato\nP.IVA@4" ITEM "Stato\nP.IVA@4"
ITEM "Partita IVA@16" ITEM "Partita IVA@10"
ITEM "Cod. Fiscale@16" ITEM "Cod. Fiscale@16"
ITEM "Allegati" ITEM "Allegati@7"
ITEM "Codice\ndestinatario@8" ITEM "Codice\ndestinatario@8"
ITEM "Ragione Sociale (XML)@50" ITEM "Ragione Sociale (XML)@50"
ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22" ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22"
@ -199,6 +201,18 @@ BEGIN
FLAGS "D" FLAGS "D"
END END
NUMBER S_NUMREGCONT 6 0
BEGIN
PROMPT 1 3 "Num. Registrazione contabile"
FLAGS "D"
END
DATE S_DATAREGCONT
BEGIN
PROMPT 1 3 "Data Registrazione contabile"
FLAGS "D"
END
NUMBER S_FORNITORE 6 NUMBER S_FORNITORE 6
BEGIN BEGIN
PROMPT 1 4 "Fornitore " PROMPT 1 4 "Fornitore "