From 92cf15f42f33226f85e391e72e6db379f5c223d6 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Wed, 13 Feb 2019 17:29:08 +0100 Subject: [PATCH] Patch level : 12.0 700 Files correlati : fp Commento : - Corretta visualizzazione monitor passive - Aggiunta pagina elenco errori per fornitori non agganciati --- src/fp/fp0.cpp | 3 +- src/fp/fp0.h | 1 + src/fp/fp0400.cpp | 286 ++++++++++++++++++++++++++++++++++----------- src/fp/fp0400a.h | 41 ++++--- src/fp/fp0400a.uml | 175 ++++++++++++++++++++++++--- src/fp/fpmenu.men | 3 +- 6 files changed, 407 insertions(+), 102 deletions(-) diff --git a/src/fp/fp0.cpp b/src/fp/fp0.cpp index c5ce9321d..bbcdc387c 100644 --- a/src/fp/fp0.cpp +++ b/src/fp/fp0.cpp @@ -8,8 +8,9 @@ int main(int argc, char** argv) switch (r) { - case 2: rt = fp0300(argc, argv); break; // Gestione fatture attive (PAA, Ex Fattura PA) case 1: rt = fp0200(argc, argv); break; // Inserimento massivo PEC e Cod Sdi clifo + case 2: rt = fp0300(argc, argv); break; // Gestione fatture attive (PAA, Ex Fattura PA) + case 3: rt = fp0400(argc, argv); break; // Monitor fatture passive default: rt = fp0100(argc, argv); break; // Configurazione } return rt; diff --git a/src/fp/fp0.h b/src/fp/fp0.h index 84e1d0d7e..229ff7e59 100644 --- a/src/fp/fp0.h +++ b/src/fp/fp0.h @@ -4,5 +4,6 @@ int fp0100(int argc, char* argv[]); int fp0200(int argc, char* argv[]); int fp0300(int argc, char* argv[]); +int fp0400(int argc, char* argv[]); #endif diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index e5a801111..254a488c2 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -10,6 +10,16 @@ #include "fp0400a.h" #include "fplib.h" +enum +{ + no_cf = -14, // Non trovato con cod.fisc. (se non ho nemmeno la p.iva) + no_match_cf = -15, // Trovato forn. ma il cod. fisc non corrisponde + no_forn = -5, // Non trovato forn.con p.iva + err_match_db = -3, // Salvato in db ma non corrisponde a un fornitore + saved_db = 0, // Salvato già in db FPPRO + found_piva = 2, // Lo trovo con p.iva + found_cf = 4, // Non ho p.iva lo trovo con cod.fisc +}; class TPassive_mask : public TAutomask { @@ -19,11 +29,15 @@ protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; void next_page(int p) override; 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); void init(); void load_all_fields(); bool _filter_changed; + void salva_for(); public: void save_all_fields() const; @@ -52,91 +66,186 @@ void TPassive_mask::next_page(int p) void TPassive_mask::fill() { - TSheet_field& sf = sfield(F_DOCS); - //TString_array& sht = sf.rows_array(); + TSheet_field& sf = sfield(F_DOCS); + TSheet_field& sf_err = sfield(F_ERR); + TString query; + TLocalisamfile clifo(LF_CLIFO); + + const TDate dal = get(F_DATAINI); + const TDate al = get(F_DATAEND); + sf.hide(); sf.destroy(); - - const TDate dal = get(F_DATAINI); - const TDate al = get(F_DATAEND); - - TString query; + sf_err.hide(); + sf_err.destroy(); - query << "SELECT 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], PP_ATTACHMENT ATTACHMENT, P1_CODDEST as [COD_SDI], PU_PEC AS PEC\n" << + query << "SELECT 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, " << + "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" << "FROM PAA0100F PAA01\n" << "JOIN PAA0200F PAA02 ON P1_KEYPRGINVIO = P2_KEYPRGINVIO and P1_KEYHEADERFATT = P2_KEYHEADERFATT and P1_KEYBODYFATT = P2_KEYBODYFATT\n" << "JOIN PAA0700F PAA07 ON P1_KEYPRGINVIO = P7_KEYPRGINVIO and P1_KEYHEADERFATT = P7_KEYHEADERFATT and P1_KEYBODYFATT = P7_KEYBODYFATT\n" << "JOIN PAA2700F PAA27 ON P1_KEYPRGINVIO = PQ_KEYPRGINVIO and P1_KEYHEADERFATT = PQ_KEYHEADERFATT and P1_KEYBODYFATT = PQ_KEYBODYFATT\n" << "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 PU_KEYHEADERFATT = PU_KEYHEADERFATT and P1_KEYBODYFATT = PU_KEYBODYFATT\n" << - "WHERE P7_DATA >= \'" << dal.date2ansi() << "\' AND P7_DATA <= \'" << al.date2ansi() << "\'"; + "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" << + "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"; fp_db().sq_set_exec(query, false); - //TProgress_monitor pi(fp_db().sq_items(), nullptr); - - TLocalisamfile clifo(LF_CLIFO); while(fp_db().sq_next()) - //for(bool ok = ; ok; ok = s.sq_next()) { - clifo.zero(); - clifo.put(CLI_TIPOCF, 'F'); - TToken_string& row = sf.row(-1); - TString denom = fp_db().sq_get("RAG_SOC"); - if (denom.blank()) { - denom = fp_db().sq_get("NOME"); - denom.trim(); - denom << " " << fp_db().sq_get("COGNOME"); - denom.trim(); - } - TString id_fisc = fp_db().sq_get("COGNOME"); - - row.add(fp_db().sq_get_int("ANNO"), 0); - row.add(fp_db().sq_get("TIPO_SDI")); - row.add(fp_db().sq_get("NUM_DOC")); - row.add(fp_db().sq_get("DATA_DOC")); - row.add(fp_db().sq_get("TOT_DOC")); - // Cerco se il fornitore è presente in Campo - - if (fp_db().sq_get("P_IVA") == "01903590154") - bool tolla = true; - - - if(fp_db().sq_get("COD_PAESE").full() && fp_db().sq_get("P_IVA").full()) - { - clifo.setkey(5); - clifo.put(CLI_STATOPAIV, fp_db().sq_get("COD_PAESE")); - clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA")); - if(clifo.read() == NOERR) - row.add(clifo.get(CLI_CODCF)); - else if (fp_db().sq_get("COD_PAESE") == "IT") - { - clifo.put(CLI_PAIV, fp_db().sq_get("P_IVA")); - clifo.put(CLI_STATOPAIV, ""); - if (clifo.read() == NOERR) - row.add(clifo.get(CLI_CODCF)); - } - } - else if(fp_db().sq_get("COD_FISC").full()) - { - clifo.setkey(4); - clifo.put(CLI_COFI, fp_db().sq_get("COD_FISC")); - if (clifo.read() == NOERR) - row.add(clifo.get(CLI_CODCF)); - } - row.add(denom, sf.cid2index(S_RAGSOC)); - - row.add(fp_db().sq_get("COD_PAESE") << fp_db().sq_get("P_IVA")); - row.add(fp_db().sq_get("COD_FISC")); - TString appo = fp_db().sq_get("ATTACHMENT"); - row.add( appo.blank() ? "" : "X" ); - row.add(fp_db().sq_get("COD_SDI").blank() ? fp_db().sq_get("PEC") : fp_db().sq_get("COD_SDI")); + aggiungi_riga(clifo, sf, sf_err); } + sf.force_update(); sf.show(); + sf_err.force_update(); + sf_err.show(); +} + +void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TSheet_field& sf_err) +{ + int forn_code = -1; + TString denom = fp_db().sq_get("RAG_SOC"); + const TString paa_codfisc = fp_db().sq_get("COD_FISC"); + 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"); + + TToken_string& row = sf.row(-1); + + clifo.zero(); + clifo.put(CLI_TIPOCF, 'F'); + + if (denom.blank()) { + denom = fp_db().sq_get("NOME"); + denom << " " << fp_db().sq_get("COGNOME"); + } + denom.cut(50); + + row.add(fp_db().sq_get_int("ANNO"), 1); + row.add(fp_db().sq_get("TIPO_SDI")); + row.add(fp_db().sq_get("NUM_DOC")); + 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 + forn_code = find_fornitore(clifo); + + if(forn_code >= 0) + { + row.add(clifo.get(CLI_CODCF)); + row.add(clifo.get(CLI_RAGSOC)); + } + else + { + //sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_FORNITORE)); + //sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_RAGSOC)); + add_row_err_forn(forn_code, sf_err, denom); + } + + row.add(paa_codpaese, sf.cid2index(S_STATOPAIV)); + row.add(paa_piva); + row.add(paa_codfisc); + + row.add(fp_db().sq_get("ATTACHMENT").blank() ? "" : "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")); + 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::add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom) +{ + TToken_string& row_err = sf_err.row(-1); + row_err.add(fp_db().sq_get("COD_PAESE"), 0); + row_err.add(fp_db().sq_get("P_IVA")); + row_err.add(fp_db().sq_get("COD_FISC")); + row_err.add(denom); + + switch (forn_code){ + case err_match_db: + row_err.add("Salvato in db ma non corrisponde a un fornitore."); + break; + case no_forn: + row_err.add("Non trovato fornitore con per quella 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)."); + break; + default: + row_err.add("Errore durante identificazione fornitore."); + break; + } +} + +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"); + 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"); + + // Cerco se il fornitore è presente in Campo + int found_clifo = -1; + + if (fppro_codcf == "17") + bool simo = true; + + TString piva; + // Leggo dall FPPRO se è già stato salvato il fornitore + // Se è già salvato nell FPPRO ricerco in Campo col codice fornitore (chiave 1) + if (fppro_tipocf == "F" && !fppro_codcf.blank()) + { + clifo.setkey(1); + clifo.put(CLI_CODCF, fppro_codcf); + // Se trovo dall FPPRO setto a 0 + clifo.read() == NOERR ? found_clifo = 0 : found_clifo = -3; + } + else if (paa_codpaese.full() && (piva = paa_piva).full()) // Se non c'è nell FPPRO ricerco con chiave 5 + { + if (piva == "01903590154") + bool simo = true; + clifo.setkey(5); + clifo.put(CLI_STATOPAIV, paa_codpaese); + clifo.put(CLI_PAIV, paa_piva); + clifo.read() == NOERR ? found_clifo = 2 : found_clifo = -1; // Se trovo con partita iva setto a 2 + + if (found_clifo != 2 && paa_codpaese == "IT") // Se non l'ho trovato potrebbe essere italiano e ha codice paese blank + { + clifo.put(CLI_PAIV, paa_piva); + clifo.put(CLI_STATOPAIV, ""); + clifo.read() == NOERR ? found_clifo = 2 : found_clifo = -5; // Se trovo con partita iva setto a 2 + } + // Se trovo con p.iva controllo il cod. fisc. e, se c'è da db e se c'è in clienti-fornitori, altrimenti vado avanti + if (found_clifo == 2 && paa_codfisc.full() && clifo.get(CLI_COFI).full()) + { + if (clifo.get(CLI_COFI) == paa_codfisc) // Controllo che il cod fisc (se c'è) corrisponda + found_clifo = 2; + else + found_clifo = -15; + } + } + // Altrimenti lo cerco con chiave 4, se ho il codice fiscale o ho il cod fisc e l'ho trovato con p iva + else if (paa_codfisc.full()) + { + clifo.setkey(4); + clifo.put(CLI_COFI, paa_codfisc); + clifo.read() == NOERR ? found_clifo = 4 : found_clifo = -14; // Se il cod fisc corrisponde setto a 2 + } + + return found_clifo; } void TPassive_mask::init() @@ -147,10 +256,51 @@ void TPassive_mask::load_all_fields() { } +void TPassive_mask::salva_for() +{ + if(fp_db().sq_is_connect()) + { + TString q_update; // Query per update + TSheet_field& sf = sfield(F_DOCS); + TLocalisamfile clifo(LF_CLIFO); // Leggo in Campo per controllare che il codice cliente non sia errato + + FOR_EACH_SHEET_ROW(sf, nr, row) + { + if (row->starts_with("X") && strcmp(clifo.get(CLI_CODCF), "17") == 0) + bool simo = true; + TString cod_forn = row->get(sf.cid2index(S_FORNITORE)); + if(row->starts_with("X") && cod_forn != "") + { + clifo.zero(); + clifo.setkey(1); + clifo.put(CLI_TIPOCF, "F"); + clifo.put(CLI_CODCF, cod_forn); + if(clifo.read() == NOERR) + { + q_update = ""; + TToken_string key(row->get(sf.cid2index(S_PROKEY)), ';'); + TString clifo_cofi = clifo.get(CLI_COFI); + TString clifo_paiv = clifo.get(CLI_PAIV); + if (clifo_cofi != "" && strcmp(row->get(sf.cid2index(S_CODFISC)), clifo_cofi) == 0 || clifo_paiv != "" && strcmp(row->get(sf.cid2index(S_PARIVA)), clifo_paiv) == 0) + { + 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); + } + } + } + } + fp_db().sq_commit(); + } +} + bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { switch (o.dlg()) { + case DLG_SAVEREC: + if (e == fe_button) + salva_for(); + break; case F_DATAINI: if (e == fe_init) o.set(ini_get_string(CONFIG_DITTA, "fp", "LastXML", "01-01-2019")); diff --git a/src/fp/fp0400a.h b/src/fp/fp0400a.h index 873ebaaff..82a98d115 100644 --- a/src/fp/fp0400a.h +++ b/src/fp/fp0400a.h @@ -1,32 +1,41 @@ #define START_MASK 401 #define F_DATAINI 401 #define F_DATAEND 402 +#define F_SAVEFOR 403 #define END_MASK 499 -#define F_DOCUMENTI_TIPO 301 - +//#define F_DOCUMENTI_TIPO 301 //#define S_SELCODNUM 101 //#define S_TIPODOCSEL 102 //#define S_DASTATO 103 //#define S_ASTATO 104 //#define S_TIPODOCSDI 105 -#define F_DOCS 201 - -//#define S_SELECTED 101 -#define S_ANNO 101 -#define S_CODSDI 102 -#define S_NDOC 103 -#define S_DATADOC 104 -#define S_TOTDOC 105 -#define S_CLIENTE 106 -#define S_RAGSOC 107 -#define S_PARIVA 108 -#define S_CODFISC 109 -#define S_ATTACH 110 -#define S_COFI 111 +#define F_DOCS 201 +#define S_SELECTED 101 +#define S_ANNO 102 +#define S_CODSDI 103 +#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 F_ERR 301 +#define S_STATOERR 101 +#define S_PIVAERR 102 +#define S_CODFIERR 103 +#define S_RAGSERR 104 +#define S_DESCERR 105 \ No newline at end of file diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml index 1d9a29d84..6a24f988d 100644 --- a/src/fp/fp0400a.uml +++ b/src/fp/fp0400a.uml @@ -8,18 +8,11 @@ BEGIN PICTURE TOOL_MULTISEL END -BUTTON DLG_OK 2 2 -BEGIN - PROMPT 1 1 "Elabora" - PICTURE TOOL_ELABORA - FLAGS "D" -END - BUTTON DLG_SAVEREC 2 2 BEGIN - PROMPT 1 1 "Elimina" - PICTURE TOOL_WARNING - FLAGS "D" + PROMPT 1 1 "Salva Fornitori" + PICTURE TOOL_ELABORA + FLAGS "" END BUTTON DLG_FINDREC 2 2 @@ -57,6 +50,7 @@ PAGE "Elenco Fatture" 0 2 0 0 SPREADSHEET F_DOCS BEGIN PROMPT 0 2 "" + ITEM "" ITEM "Anno" ITEM "Tipo SDI@4" ITEM "Num.\nDoc.@11" @@ -64,10 +58,28 @@ BEGIN ITEM "Totale\nDoc." 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 "Rag. Soc. (XML)@50" + ITEM "Numero Protocollo" + ITEM "Chiave Prot.@80" +END + +ENDPAGE + +PAGE "Errore Fornitori" 0 2 0 0 + +SPREADSHEET F_ERR +BEGIN + PROMPT 0 2 "" + ITEM "Stato\nP.IVA@5" + ITEM "P. IVA@16" + ITEM "Cod. Fiscale@16" + ITEM "Rag. Soc. (XML)@50" + ITEM "Descrizione @100" END ENDPAGE @@ -76,6 +88,12 @@ ENDMASK PAGE "Documento" -1 -1 78 9 +BOOLEAN S_SELECTED +BEGIN + PROMPT 1 8 "" + FLAGS "" +END + NUMBER S_ANNO 4 BEGIN PROMPT 1 2 "Anno " @@ -113,28 +131,96 @@ BEGIN FLAGS "D" END -NUMBER S_CLIENTE 6 +NUMBER S_FORNITORE 6 BEGIN PROMPT 1 4 "Fornitore " - FLAGS "D" + FIELD CODCF + FLAGS "GR" + KEY 1 + USE LF_CLIFO + INPUT TIPOCF "F" SELECT + INPUT CODCF S_FORNITORE + DISPLAY "Codice@6R" CODCF + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Codice fiscale@16" COFI + DISPLAY "Partita IVA@11" PAIV + OUTPUT S_FORNITORE CODCF + OUTPUT S_RAGSOC RAGSOC + HELP "Codice relativo al cliente o fornitore" + MESSAGE COPY,2@ + CHECKTYPE REQUIRED END STRING S_RAGSOC 50 BEGIN PROMPT 21 4 "" - FLAGS "D" + KEY 2 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC S_RAGSOC + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Sospeso@C" SOSPESO + DISPLAY "Codice@R" CODCF + DISPLAY "Codice fiscale@16" COFI + DISPLAY "Partita IVA@11" PAIV + COPY OUTPUT S_FORNITORE + HELP "Prima parte della ragione sociale o cognome" + MESSAGE COPY,3@ + WARNING "Manca la ragione sociale" + CHECKTYPE REQUIRED END +STRING S_STATOPAIV 2 +BEGIN + PROMPT 1 5 "" + HELP "Codice ISO dello stato" + FLAGS "U" + USE %SCE + INPUT CODTAB S_STATOPAIV + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT S_STATOPAIV CODTAB + CHECKTYPE NORMAL + FLAGS "D" +END + + STRING S_PARIVA 50 20 BEGIN PROMPT 1 5 "" - FLAGS "D" + KEY 5 + USE LF_CLIFO KEY 5 + INPUT TIPOCF "F" + INPUT STATOPAIV F_STATOPAIV + INPUT PAIV S_PAIV + DISPLAY "ISO@3" STATOPAIV + DISPLAY "Partita IVA@11" PAIV + DISPLAY "Sospeso" SOSPESO + DISPLAY "Codice@R" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Codice fiscale@16" COFI + COPY OUTPUT S_FORNITORE + HELP "Partita IVA del cliente/fornitore" + FLAGS "D" END STRING S_CODFISC 50 20 BEGIN PROMPT 1 5 "" - FLAGS "D" + FLAGS "U" + KEY 4 + USE LF_CLIFO KEY 4 + INPUT TIPOCF "F" + INPUT COFI F_COFI + DISPLAY "Codice fiscale@16" COFI + DISPLAY "Sospeso" SOSPESO + DISPLAY "Codice@R" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Partita IVA@11" PAIV + COPY OUTPUT S_FORNITORE + HELP "Codice fiscale del cliente/fornitore" + FLAGS "D" END STRING S_COFI 20 @@ -149,6 +235,27 @@ BEGIN FLAGS "D" END +STRING S_RAGXML 50 + BEGIN + PROMPT 21 4 "" + FLAG "D" + HELP "Ragione sociale scritta nell'xml" +END + +STRING S_NPROT 20 +BEGIN + PROMPT 1 5 "" + HELP "Numero Protocollo" + FLAGS "D" +END + +STRING S_PROKEY 80 +BEGIN + PROMPT 1 5 "" + HELP "Numero Protocollo" + FLAGS "D" +END + ENDPAGE @@ -172,4 +279,40 @@ BEGIN END ENDPAGE -ENDMASK \ No newline at end of file +ENDMASK + +PAGE "Riga Errore" -1 -1 69 14 + +STRING S_STATOERR 2 +BEGIN + PROMPT 21 4 "" + FLAG "D" +END + +STRING S_PIVAERR 50 20 +BEGIN + PROMPT 21 4 "" + FLAG "D" +END + +STRING S_CODFIERR 50 20 +BEGIN + PROMPT 21 4 "" + FLAG "D" +END + +STRING S_RAGSERR 50 +BEGIN + PROMPT 21 4 "" + FLAG "D" +END + +STRING S_DESCERR 100 +BEGIN + PROMPT 21 4 "" + FLAG "D" +END + + +ENDPAGE +ENDMASK diff --git a/src/fp/fpmenu.men b/src/fp/fpmenu.men index a84ac4d81..15728c373 100644 --- a/src/fp/fpmenu.men +++ b/src/fp/fpmenu.men @@ -5,4 +5,5 @@ Module = fp Flags = "" Item_01 = "Configurazione", "fp0 -0", ""+ Item_02 = "Invio fatture", "fp0 -2", "" -Item_03 = "Inserimento riferimenti C/F", "fp0 -1", "" \ No newline at end of file +Item_03 = "Inserimento riferimenti C/F", "fp0 -1", "" +Item_04 = "Monitor Fatture Passive", "fp0 -3", "" \ No newline at end of file