From 5ef06865172babdd710dbb76e57e1ebab129d911 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Fri, 10 May 2019 13:16:53 +0200 Subject: [PATCH] Patch level : 12.0 786 Files correlati : cg2100 Commento : - Spostato bottone Fatture SDI - Modificata query elenco fatture FPPRO per: - ricerca default codice fornitore; - query per salvataggio verifica fattura - query con data - Corretto caricamento chiavi db sbagliato: prendeva sempre lo stesso (ultimo) - Aggiunta possibilita di ricerca per p. iva - Aggiunto filtro data documento - Caricamento automatico alla pressione dei flag - Aggiunto controllo tipo documento Nota Credito di Acquisto --- src/cg/cg2100.cpp | 69 +++++--------- src/cg/cg2100.h | 40 ++++---- src/cg/cg2100c.uml | 11 ++- src/cg/cg2102.cpp | 223 +++++++++++++++++++++++++++++++++++--------- src/cg/cg2102.h | 8 ++ src/cg/cg2FPPRO.uml | 42 ++++++++- 6 files changed, 283 insertions(+), 110 deletions(-) diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 5a1b57487..9571645cd 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -124,13 +124,14 @@ TMask* TPrimanota_application::load_mask(int n) ism.set_handler(CG_RATEO, sheet_rateo_handler); ism.set_handler(CG_RISCONTO, sheet_risconto_handler); if (!is_fp(m)) - m->hide(F_PROTFPPRO); - else { - m->add_button_tool(DLG_LINK, "Fatture SDI", TOOL_ELABORA); - m->set_handler(DLG_LINK, fppro_mask); + m->hide(F_PROTFPPRO); + if(m->find_by_id(DLG_LINK) != NULL) + m->disable(DLG_LINK); } - + else + if (m->find_by_id(DLG_LINK) != NULL) + m->set_handler(DLG_LINK, fppro_mask); if (_quadratura) m->set_handler(F_ADJUST_IVA, quadratura_handler); @@ -1572,7 +1573,7 @@ void TPrimanota_application::clean_fppro() // Controlli: solo in mod modifica; che abbia fp (no F8); che non sono in salvataggio if (_mode != MODE_MOD || !is_fp(&msk) - || last_key != 127 && last_key != K_SAVE) + || last_key != K_DEL && last_key != K_SAVE) return; const TString& numreg = msk.get(F_NUMREG); @@ -2380,11 +2381,8 @@ int TPrimanota_application::save_fppro() else return pro_notsaved; } - // Controllo che sto registrando un documento FA Fattura di Acquisto - TLocalisamfile clifo(LF_CAUSALI); - clifo.setkey(1); - clifo.put("CODCAUS", msk.get(F_CODCAUS)); - if (clifo.read() != NOERR || clifo.get("TIPODOC") != "FA") + // Controllo che sto registrando un documento FA Fattura di Acquisto o NC Acquisto + if (!TPro_msk::check_causale(msk.get(F_CODCAUS))) return pro_notsaved; if (last != K_SAVE) { // Se sto uscendo avvertimento di non salvataggio e salto message_box("La registrazione del movimento non verrā salvata sul database."); @@ -2395,48 +2393,25 @@ int TPrimanota_application::save_fppro() const TDate data_documento(msk.get(F_DATADOC)); const TString& numero_docext = msk.get(F_NUMDOCEXT); const TString& numero_doc = msk.get(F_NUMDOC); - const TString& codfisc = msk.get(F_COFI); + const TString& codforn = msk.get(F_CODCLIFOR); const TString& stato_piva = msk.get(F_STATOPAIV); const TString& piva = msk.get(F_PIVA); const TString& tot_doc = msk.get(F_TOTALE); + TToken_string fppro_keys(msk.get(F_PROKEY), ';'); + const TString& keyprginvio = fppro_keys.get(); + const TString& keyheaderfatt = fppro_keys.get(); + const TString& keybodyfatt = fppro_keys.get(); - TString id_fornitore; - - if (!piva.empty()) - { - id_fornitore << " (P2_FISCIVAPAESE = "; - if (!stato_piva.empty()) - id_fornitore << "\'" << stato_piva << "\'"; - else - id_fornitore << "\'IT\'"; - id_fornitore << " AND P2_FISCIVACOD = \'" << piva << "\'"; - } - if(!codfisc.empty()) - { - if (!id_fornitore.empty()) - id_fornitore << " OR "; - id_fornitore << " P2_CODFISCALE = \'" << codfisc << "\'"; - } - if(!id_fornitore.empty()) - id_fornitore << ")"; - else - { - error_box("Attenzione non č stata inserita ne la partita iva ne il cod.fisc del fornitore:\nimpossibile associarlo in FPPRO"); - return pro_notsaved; - } - - TString query; - query << "SELECT PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << - "FROM PAA0200F\n" << "JOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << - "JOIN PAA0100F\n" << " ON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_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) << "\' ;"; + TString where_str; + where_str << " (PZ_DATA = \'" << data_documento.date2ansi() << "\' AND PQ_IMPTOTDOC = \'" << tot_doc << "\' AND PZ_NUMERO = \'" << (!numero_docext.empty() ? numero_docext : numero_doc) << "\') "; + TString& query = TPro_msk::query_fppro(keyprginvio, keyheaderfatt, keybodyfatt, where_str); + fp_db().sq_set_exec(query); const int n = fp_db().sq_items(); if (n != 1) { - message_box(TString("Attenzione,") << "al movimento non č stato abbinato nessun documento elettronico.\n" << - "Per conserntire una corretta archiviazione sostitutiva si consiglia di non confermare la registrazione e di procedere\n" << + message_box(TString("Attenzione, ") << "al movimento non č stato abbinato nessun documento elettronico.\n" << + "Per consentire una corretta archiviazione sostitutiva si consiglia di non confermare la registrazione e di procedere\n" << "all'identificazione del fornitore tramite il monitor fatture passive.\n" << "In caso di documento escluso dalla fatturazione elettronica ignorate questo messaggio."); return pro_notsaved; @@ -2456,9 +2431,9 @@ int TPrimanota_application::save_fppro() return pro_notsaved; } - const TString keyprginvio = fp_db().sq_get("PZ_KEYPRGINVIO"); + /*const TString keyprginvio = fp_db().sq_get("PZ_KEYPRGINVIO"); const TString keyheaderfatt = fp_db().sq_get("PZ_KEYHEADERFATT"); - const TString keybodyfatt = fp_db().sq_get("PZ_KEYBODYFATT"); + const TString keybodyfatt = fp_db().sq_get("PZ_KEYBODYFATT");*/ const int numregcont = msk.get_int(F_NUMREG); const int clifor = msk.get_int(F_CODCLIFOR); diff --git a/src/cg/cg2100.h b/src/cg/cg2100.h index a421b9f7d..9c9fb80d2 100755 --- a/src/cg/cg2100.h +++ b/src/cg/cg2100.h @@ -201,25 +201,31 @@ #define F_COFIS 603 #define F_STATOPAIVS 604 #define F_PIVAS 605 -#define F_SHEETFPPROS 606 +#define F_RAGSOCS 606 +#define F_ENABSEARCH 607 +#define F_ENABDATE 608 +#define F_DATESEARCH 609 +#define F_SHEETFPPROS 610 -#define F_NUMEROI 607 -#define F_DATAI 608 -#define F_TOTDOCI 609 -#define F_PROTFPPROI 610 -#define F_FPPROKEYSI 611 -#define F_SHEET_TEXT 612 -#define F_SHOWALL 613 +#define F_NUMEROI 611 +#define F_DATAI 612 +#define F_TOTDOCI 613 +#define F_PROTFPPROI 614 +#define F_FPPROKEYSI 615 +#define F_SHEET_TEXT 616 +#define F_SHOWALL 617 #define F_SELFPPROS 101 -#define F_DATAORARICS 102 -#define F_DATAS 103 -#define F_IMPTOTDOCS 104 -#define F_NUMEROS 105 -#define F_FISCIVAPAESES 106 -#define F_FISCIVACODS 107 -#define F_CODFISCALES 108 -#define F_TIPOPROTS 109 -#define F_PROGRESSS 110 +#define F_TIPODOCS 102 +#define F_DATAORARICS 103 +#define F_DATAS 104 +#define F_IMPTOTDOCS 105 +#define F_NUMEROS 106 +#define F_FISCIVAPAESES 107 +#define F_FISCIVACODS 108 +#define F_CODFISCALES 109 +#define F_TIPOPROTS 110 +#define F_PROGRESSS 111 +#define F_KEYFPPROS 112 #endif diff --git a/src/cg/cg2100c.uml b/src/cg/cg2100c.uml index e88fbd652..34a9cf376 100755 --- a/src/cg/cg2100c.uml +++ b/src/cg/cg2100c.uml @@ -2,8 +2,17 @@ #include "cg21sld.h" TOOLBAR "topbar" 0 0 0 2 + +BUTTON DLG_LINK 2 2 +BEGIN + PROMPT 3 1 "Fatture SDI" + PICTURE TOOL_ELABORA + MODULE FP +END + #include + ENDPAGE PAGE "Testata" -1 -1 77 20 @@ -597,7 +606,7 @@ END STRING F_PROTFPPRO 18 BEGIN - PROMPT 1 17 "Codice Protocollo FPPRO " + PROMPT 1 18 "Codice Protocollo FPPRO " FLAGS "D" END diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index 40b32e5e7..5c6bffdfa 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -2259,18 +2259,21 @@ bool TPrimanota_application::caus_query_handler(TMask_field& f, KEY key) return true; } +#define TIPO_REG_ACQ 2 + void TPrimanota_application::check_fppro_fields(TMask& m) { - if(m.get(F_TIPODOC) != "FA" && m.find_by_id(F_PROTFPPRO) != NULL) + if (!TPro_msk::check_causale(m.get(F_CODCAUS)) && m.find_by_id(F_PROTFPPRO) != NULL) { m.hide(F_PROTFPPRO); m.disable(DLG_LINK); } - else if(m.get(F_TIPODOC) == "FA" && m.find_by_id(F_PROTFPPRO) != NULL && m.field(F_PROTFPPRO).hidden()) - { - m.show(F_PROTFPPRO); - m.enable(DLG_LINK); - } + else + if (TPro_msk::check_causale(m.get(F_CODCAUS)) && m.find_by_id(F_PROTFPPRO) != NULL && m.field(F_PROTFPPRO).hidden()) + { + m.show(F_PROTFPPRO); + m.enable(DLG_LINK); + } } // Handler of the F_CODCAUS field on the modify mask @@ -3842,7 +3845,7 @@ bool TPrimanota_application::quadratura_handler(TMask_field& f, KEY key) bool TPrimanota_application::fppro_mask(TMask_field& f, KEY key) { TMask& cg_msk = f.mask(); - if (!app().get_isfp() || key != K_SPACE && key != K_TAB || f.mask().get(F_TIPODOC) != "FA") + if (!app().get_isfp() || key != K_SPACE && key != K_TAB || !TPro_msk::check_causale(f.mask().get(F_CODCAUS))) return true; auto msk = std::make_shared(cg_msk); @@ -3877,38 +3880,25 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k) const int forn = msk->get_int(F_CODCLIFORS); if (forn == 0) { - message_box("Inserire prima il fornitore"); - return false; + msk->set(F_ENABSEARCH, "X"); + abilita_piva(msk); + //message_box("Inserire prima il fornitore"); + //return false; } const TString& codfisc = msk->get(F_COFIS); const TString& stato_piva = msk->get(F_STATOPAIVS); const TString& piva = msk->get(F_PIVAS); - TString id_fornitore; - if (!piva.empty()) - { - id_fornitore << " (P2_FISCIVAPAESE = "; - if (!stato_piva.empty()) - id_fornitore << "\'" << stato_piva << "\'"; - else - id_fornitore << "\'IT\'"; - id_fornitore << " AND P2_FISCIVACOD = \'" << piva << "\'"; - } - if (!codfisc.empty()) - { - if (!id_fornitore.empty()) - id_fornitore << " OR "; - id_fornitore << " P2_CODFISCALE = \'" << codfisc << "\'"; - } - if (!id_fornitore.empty()) - id_fornitore << ")"; TString query; - query << "SELECT PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, PZ_NUMPROT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << - "FROM PAA0200F\n" << "JOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << - "JOIN PAA0100F\n" << " ON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << - "JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << - "WHERE " << id_fornitore << "\n" << - "ORDER BY P1_DATAORARIC ASC;"; + TString date = ""; + if (msk->get_bool(F_ENABDATE)) + date = TDate(msk->get_date(F_DATESEARCH)); + if(!msk->get_bool(F_ENABSEARCH)) + query = query_fppro(msk->get(F_CODCLIFORS), date); + else + query = query_fppro(stato_piva, piva, date); + + fp_db().sq_set_exec(query, false); TSheet_field& sf = msk->sfield(F_SHEETFPPROS); @@ -3923,6 +3913,7 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k) continue; TToken_string& row = sf.row(-1); row.add("", 0); + row.add(fp_db().sq_get("P7_TIPODOC")); row.add(TDate(fp_db().sq_get_date("P1_DATAORARIC"))); row.add(TDate(fp_db().sq_get_date("PZ_DATA"))); row.add(fp_db().sq_get("PQ_IMPTOTDOC")); @@ -3932,6 +3923,9 @@ bool TPro_msk::load_fppro_mask(TMask* msk, KEY k) row.add(fp_db().sq_get("P2_CODFISCALE")); row.add(fp_db().sq_get("PZ_TIPOPROT")); row.add(fp_db().sq_get("PZ_NUMPROT")); + TString fppro_keys; + fppro_keys << fp_db().sq_get("PZ_KEYPRGINVIO") << ";" << fp_db().sq_get("PZ_KEYHEADERFATT") << ";" << fp_db().sq_get("PZ_KEYBODYFATT"); + row.add(fppro_keys); } sf.force_update(); sf.show(); @@ -3960,13 +3954,12 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k) { if(!loaded && *row->get(0) == 'X') { - msk.set(F_NUMEROI, row->get(4)); - msk.set(F_DATAI, row->get(2)); - msk.set(F_TOTDOCI, row->get(3)); - TString protocollo; protocollo << TDate(row->get(1)).year() << "-" << row->get(8) << "/" << row->get(9); + msk.set(F_NUMEROI, row->get(5)); + msk.set(F_DATAI, row->get(3)); + msk.set(F_TOTDOCI, row->get(4)); + TString protocollo; protocollo << TDate(row->get(2)).year() << "-" << row->get(9) << "/" << row->get(10); msk.set(F_PROTFPPROI, protocollo); - TString key_prot; key_prot << fp_db().sq_get("PZ_KEYPRGINVIO") << ";" << fp_db().sq_get("PZ_KEYHEADERFATT") << ";" << fp_db().sq_get("PZ_KEYBODYFATT"); - msk.set(F_FPPROKEYSI, key_prot); + msk.set(F_FPPROKEYSI, row->get(11)); loaded = true; ok = true; break; @@ -3981,6 +3974,43 @@ bool TPro_msk::fppro_ok_handler(TMask_field& f, KEY k) return true; } +bool TPro_msk::piva_handler(TMask_field& f, KEY k) +{ + TMask& msk = f.mask(); + bool ok = true; + if(k == K_TAB && f.active() && f.focusdirty()) + { + ok = load_fppro_mask(&msk, 32); + } + return ok; +} + +bool TPro_msk::date_handler(TMask_field& f, KEY k) +{ + TMask& msk = f.mask(); + bool ok = true; + if (k == K_TAB && f.active() && f.focusdirty()) + { + ok = load_fppro_mask(&msk, 32); + } + return ok; +} + +bool TPro_msk::check_causale(const TString& cod_caus) +{ + bool nc = false; + bool nc_acq = false; + bool fa = false; + TCausale caus(cod_caus); + + if ((nc = caus.tipo_doc() == "NC")) + nc_acq = caus.reg().tipo() == TIPO_REG_ACQ; + + fa = caus.tipo_doc() == "FA"; + + return fa || nc && nc_acq; +} + void TPro_msk::fppro_selfatt() const { const TMask& mask = *this; @@ -3997,21 +4027,130 @@ void TPro_msk::fppro_selfatt() const bool TPro_msk::on_field_event(TOperable_field& o, TField_event e, long jolly) { - if (o.dlg() == F_SELFPPROS) + switch (o.dlg()) { - if(e == fe_modify) + case F_SELFPPROS: + if (e == fe_modify) fppro_selfatt(); + break; + case F_SHOWALL: + if (e == fe_modify) + load_fppro_mask(this, 32); + break; + case F_ENABSEARCH: + if (e == fe_modify) + { + abilita_piva(this); + load_fppro_mask(this); + } + break; + case F_ENABDATE: + if (e == fe_modify) + { + field(F_DATESEARCH).show(o.mask().get_bool(F_ENABDATE)); + if (!o.mask().get_bool(F_ENABDATE)) + load_fppro_mask(this); + } + break; + default: + break; + } + return true; +} + +TString& TPro_msk::query_fppro(const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, + const TString& where_str) +{ + return query_fppro("", "", "", where_str, "", keyprginvio, keyheaderfatt, keybodyfatt, false, false); +} + +TString& TPro_msk::query_fppro(const TString& codforn, const TString& date) +{ + return query_fppro(codforn, "", "", "", date, "", "", "", true, false); +} + +TString& TPro_msk::query_fppro(const TString& stato_piva, const TString& piva, const TString& date) +{ + return query_fppro("", stato_piva, piva, "", date, "", "", "", true, true); +} + +TString& TPro_msk::query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order, bool piva_research) +{ + TString id_fornitore; + TString keys; + if(piva_research && !piva.empty()) + { + id_fornitore << " (P2_FISCIVAPAESE = "; + if (!stato_piva.empty()) + id_fornitore << "\'" << stato_piva << "\'"; + else + id_fornitore << "\'IT\'"; + id_fornitore << " AND P2_FISCIVACOD = \'" << piva << "\') "; + } + else + { + if(codforn.empty() && !keyprginvio.empty() && !keyheaderfatt.empty() && !keybodyfatt.empty()) + { + keys << " (PZ_KEYPRGINVIO = '" << keyprginvio << "' AND PZ_KEYHEADERFATT = '" << keyheaderfatt << "' AND PZ_KEYBODYFATT = '" << keybodyfatt << "') "; + } + if(!codforn.empty()) + id_fornitore << " (PZ_CLIFOR = '" << codforn << "') "; } - return true; + static TString query; + query.cut(0) << "SELECT PZ_CLIFOR, PZ_DATA, CAST(P1_DATAORARIC AS DATE) AS P1_DATAORARIC, P7_TIPODOC, PQ_IMPTOTDOC, PZ_NUMERO, PZ_NUMREGCONT, PZ_TIPOPROT, PZ_NUMPROT, P2_FISCIVAPAESE, P2_FISCIVACOD, P2_CODFISCALE, PZ_KEYPRGINVIO, PZ_KEYHEADERFATT, PZ_KEYBODYFATT\n" << + "FROM PAA0200F\n" << "JOIN FPPRO00F\n" << " ON P2_KEYPRGINVIO = PZ_KEYPRGINVIO AND P2_KEYHEADERFATT = PZ_KEYHEADERFATT AND P2_KEYBODYFATT = PZ_KEYBODYFATT\n" << + "JOIN PAA0100F\n" << " ON P2_KEYPRGINVIO = P1_KEYPRGINVIO AND P2_KEYHEADERFATT = P1_KEYHEADERFATT AND P2_KEYBODYFATT = P1_KEYBODYFATT\n" << + "JOIN PAA2700F\n" << "ON P2_KEYPRGINVIO = PQ_KEYPRGINVIO AND P2_KEYHEADERFATT = PQ_KEYHEADERFATT AND P2_KEYBODYFATT = PQ_KEYBODYFATT\n" << + "JOIN PAA0700F\n" << "ON P7_KEYPRGINVIO = PQ_KEYPRGINVIO AND P7_KEYHEADERFATT = PQ_KEYHEADERFATT AND P7_KEYBODYFATT = PQ_KEYBODYFATT\n" << + "WHERE "; + + if (!id_fornitore.empty()) + { + query << id_fornitore << " "; + if (!date.empty()) + query << " AND PZ_DATA = '" << TDate(date).date2ansi() << "' "; + if (order) + query << "\nORDER BY P1_DATAORARIC ASC"; + query << ";"; + } + else if(!keys.empty()) + { + query << keys; + if (!where_str.empty()) + query << " AND " << where_str; + query << ";"; + } + else + query.cut(0); + + return query; +} + +void TPro_msk::abilita_piva(TMask* msk) +{ + if (msk->get_bool(F_ENABSEARCH)) + { + msk->enable(F_PIVAS); + msk->enable(F_STATOPAIVS); + } + else + { + msk->enable(F_PIVAS, false); + msk->enable(F_STATOPAIVS, false); + } } TPro_msk::TPro_msk(TMask& cg_msk) : TAutomask("cg2fppro"), _parent_mask(cg_msk) { TMask::set_handler(DLG_CONFIG, fppro_handler); TMask::set_handler(DLG_LINK, fppro_ok_handler); + TMask::set_handler(F_PIVAS, piva_handler); + TMask::set_handler(F_DATESEARCH, date_handler); TMask::set(F_CODCLIFORS, cg_msk.get(F_CODCLIFOR)); TMask::set(F_COFIS, cg_msk.get(F_COFI)); TMask::set(F_STATOPAIVS, cg_msk.get(F_STATOPAIV)); TMask::set(F_PIVAS, cg_msk.get(F_PIVA)); + TMask::set(F_RAGSOCS, cg_msk.get(F_RAGSOCCF)); + set(F_DATESEARCH, TDate(TODAY)); } diff --git a/src/cg/cg2102.h b/src/cg/cg2102.h index 8db50e7f3..25c710c60 100755 --- a/src/cg/cg2102.h +++ b/src/cg/cg2102.h @@ -380,13 +380,21 @@ class TPro_msk : public TAutomask static bool fppro_handler(TMask_field& f, KEY k); // Bottone riporta doc FPPRO in testata Prima Nota static bool fppro_ok_handler(TMask_field& f, KEY k); + static bool piva_handler(TMask_field& f, KEY k); + static bool date_handler(TMask_field& f, KEY k); // Non permette la selezione multipla void fppro_selfatt() const; bool on_field_event(TOperable_field& o, TField_event e, long jolly) override; public: + static TString& query_fppro(const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, const TString& where_str); + static TString& query_fppro(const TString& codforn, const TString& date); + static TString& query_fppro(const TString& stato_piva, const TString& piva, const TString& date); + static TString& query_fppro(const TString& codforn, const TString& stato_piva, const TString& piva, const TString& where_str, const TString& date, const TString& keyprginvio, const TString& keyheaderfatt, const TString& keybodyfatt, bool order = true, bool piva_research = false); + static void abilita_piva(TMask* msk); //bool is_fp(); // Carica documenti FPPRO sulla maschera static bool load_fppro_mask(TMask* msk, KEY k = 32); + static bool check_causale(const TString& cod_caus); TPro_msk() = delete; TPro_msk(TMask& cg_msk); }; diff --git a/src/cg/cg2FPPRO.uml b/src/cg/cg2FPPRO.uml index 9bdbc1e28..ae922cd06 100644 --- a/src/cg/cg2FPPRO.uml +++ b/src/cg/cg2FPPRO.uml @@ -49,20 +49,43 @@ BEGIN FLAGS "D" END +STRING F_RAGSOCS 50 +BEGIN + PROMPT 0 3 "Rag. Soc." + FLAGS "D" +END + +BOOLEAN F_ENABSEARCH +BEGIN + PROMPT 0 4 "Effettua ricerca per P.IVA/Disabilita ricerca per cod. Fornitore" +END + +BOOLEAN F_ENABDATE +BEGIN + PROMPT 0 5 "Abilita filtro per data" +END + +DATE F_DATESEARCH +BEGIN + PROMPT 35 5 "Data documento" + FLAGS "H" +END + TEXT F_SHEET_TEXT BEGIN - PROMPT 0 4 "@BSelezionare la fattura, quindi premere 'Riporta Dati'" + PROMPT 0 6 "@BSelezionare la fattura, quindi premere 'Riporta Dati'" END BOOLEAN F_SHOWALL BEGIN - PROMPT 0 5 "Mostra anche fatture giā registrate" + PROMPT 0 7 "Mostra anche fatture giā registrate" END SPREADSHEET F_SHEETFPPROS 0 15 BEGIN - PROMPT 0 6 "" + PROMPT 0 8 "" ITEM " " + ITEM "Tipo Doc@7" ITEM "Data Ricezione" ITEM "Data Doc." ITEM "Importo Totale" @@ -72,6 +95,7 @@ BEGIN ITEM "Cod. Fiscale" ITEM "Tipo Protocollo\nin ingresso" ITEM "Progressivo di ingresso" + ITEM "Chiave FPPRO@H" END STRING F_NUMEROI 20 @@ -117,6 +141,12 @@ BEGIN FLAGS "" END +STRING F_TIPODOCS 4 +BEGIN + PROMPT 10 0 "TIPODOC" + FLAGS "D" +END + DATE F_DATAS BEGIN PROMPT 1 1 "DATA" @@ -171,6 +201,12 @@ BEGIN FLAGS "D" END +STRING F_KEYFPPROS 80 +BEGIN + PROMPT 1 10 "CHIAVE FPPRO" + FLAGS "" +END + ENDPAGE TOOLBAR "Documento" 0 0 0 2