diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 2706a9db5..8f97e3261 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -2283,10 +2283,10 @@ void TPrimanota_application::mask2ini(const TMask& msk, TConfig& ini) bool TPrimanota_application::save_fppro() const { 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; // 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 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" << "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); - - const TDate& dataoraric = fp_db().sq_get_date("P1_DATAORARIC"); // Devo controllare che la data operazione sia maggiore della data ric - if (dataoraric.empty()) + const int n = fp_db().sq_items(); + if (n != 1) { - 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; } + 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)) { error_box("Attenzione non è possibile registrare una fattura\ncon data operazione minore della data di ricezione."); diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index aa3ee26b2..f3fe2d323 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -108,7 +108,7 @@ void TPassive_mask::fill() 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, " << + "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" << "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" << @@ -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 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" << - "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" << "ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC"; 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_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"); - TString filter_elab = get(F_FATTSEL); + const TString prot = fp_db().sq_get("TIPO_PROT"); + const TDate dataregcont = fp_db().sq_get_date("DATAREGCONT"); + const TString filter_elab = get(F_FATTSEL); clifo.zero(); clifo.put(CLI_TIPOCF, 'F'); @@ -199,6 +200,11 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee else 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 if (forn_code >= 0) { diff --git a/src/fp/fp0400a.h b/src/fp/fp0400a.h index 27b457893..db514b34e 100644 --- a/src/fp/fp0400a.h +++ b/src/fp/fp0400a.h @@ -15,21 +15,23 @@ #define S_SELECTED 101 #define S_ANNO 102 -#define S_TIPODOCSDI 103 +#define S_TIPODOCSDI 103 #define S_NDOC 104 #define S_DATADOC 105 #define S_TOTDOC 106 #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_CODSDI 114 -#define S_RAGXML 115 -#define S_NPROT 116 -#define S_PROKEY 117 +#define S_NUMREGCONT 108 +#define S_DATAREGCONT 109 +#define S_FORNITORE 110 +#define S_RAGSOC 111 +#define S_STATOPAIV 112 +#define S_PARIVA 113 +#define S_CODFISC 114 +#define S_ATTACH 115 +#define S_CODSDI 116 +#define S_RAGXML 117 +#define S_NPROT 118 +#define S_PROKEY 119 #define F_ERR 301 diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml index 67e18c116..33a020327 100644 --- a/src/fp/fp0400a.uml +++ b/src/fp/fp0400a.uml @@ -74,16 +74,18 @@ BEGIN ITEM "" ITEM "Anno" ITEM "Tipo Doc.\nSDI@6" - ITEM "Numero\nDocumento@20" - ITEM "Data\nDoc.@10" - ITEM "Totale\nDocumento" + ITEM "Numero\nDocumento@18" + ITEM "Data\nDoc.@8" + ITEM "Totale\nDocumento@12" 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 "Stato\nP.IVA@4" - ITEM "Partita IVA@16" + ITEM "Partita IVA@10" ITEM "Cod. Fiscale@16" - ITEM "Allegati" + ITEM "Allegati@7" ITEM "Codice\ndestinatario@8" ITEM "Ragione Sociale (XML)@50" ITEM "Numero Protocollo (in entrata)\n[anno-tipo prot/progressivo]@22" @@ -199,6 +201,18 @@ BEGIN FLAGS "D" 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 BEGIN PROMPT 1 4 "Fornitore "