From 747f18f1fa8640591a6f907a53c1205f4711d7ea Mon Sep 17 00:00:00 2001 From: Mattia Tollari Date: Tue, 24 Jul 2018 18:09:54 +0200 Subject: [PATCH] Patch level : 12.0 Files correlati : fp Commento : - Aggiunto stato "D" alla ricerca o si rischiavano di perdere fatture nel limbo - Aggiunti controlli nella visualizzazione di fatture - Sistemata la gestione dei filtri --- src/fp/fp0300.cpp | 105 +++++++++++++++++++++++++++++++++------------ src/fp/fp0300a.uml | 1 + 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/src/fp/fp0300.cpp b/src/fp/fp0300.cpp index c4149e775..0f3aa64dc 100644 --- a/src/fp/fp0300.cpp +++ b/src/fp/fp0300.cpp @@ -411,7 +411,7 @@ TPaf_record::TPaf_record(const char* table) : _table(table), _key(15, ',') class TPA_mask : public TAutomask { protected: - void setFilterChanged(); + void set_filter_changed(); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); void next_page(int p); bool checkNotEmpty(); @@ -425,6 +425,7 @@ protected: public: TPA_mask() : TAutomask("fp0300a"), _filter_changed(true) { + disable(DLG_OK); } }; @@ -441,6 +442,7 @@ bool TPA_mask::is_fattura(const TRectype& doc) const void TPA_mask::fill() { + TSheet_field& docs = sfield(F_DOCS); TString_array& sht = docs.rows_array(); docs.hide(); @@ -448,7 +450,8 @@ void TPA_mask::fill() sht.destroy(); const TDate dal = get(F_DATAINI); - TString filter_selected = get(F_FATTSEL); + TString filter_selected = get(F_FATTSEL); + enable(DLG_OK, filter_selected != "N"); // Record di controllo per eventuali elaborazioni precedenti TString hfatt(LEN_HFATT), bfatt(LEN_BFATT); @@ -457,7 +460,7 @@ void TPA_mask::fill() TString query; query << "USE 33 " << - "SELECT (BETWEEN(33.DATADOC,#DADATADOC,#ADATADOC))&&(33.TIPOCF=='C')&&((17.PADESTIN!='')||(20.PEC!=''))&&(400@." FLD_TIPO_SDI "!='')"; + "SELECT (BETWEEN(33.DATADOC,#DADATADOC,#ADATADOC))&&(33.TIPOCF=='C')"; if(get(F_DATIPODOC).full() && get(F_ATIPODOC).full()) { query << "&&(BETWEEN(33.TIPODOC, #DATIPODOC, #ATIPODOC))"; @@ -485,6 +488,14 @@ void TPA_mask::fill() TProgress_monitor pi(rec.items(), NULL); + // Setto variabili di errore + static bool first; + static bool show; + static bool ask; + + first = show = true; + ask = false; + for (bool okc = rec.move_first(); okc; okc = rec.move_next()) { if (!pi.add_status()) @@ -492,33 +503,72 @@ void TPA_mask::fill() const TRectype& doc = rec.cursor()->curr(); const TTipo_documento& td = cached_tipodoc(doc.get(DOC_TIPODOC)); + // Controllo che il tipo documento sia OK + if (td.tipo_doc_sdi().empty() || td.reg_fisc().empty()) + continue; + bool sent = false; if (chiave_paf(doc, hfatt, bfatt)) { - if (paf0100f.search(NULL, hfatt, bfatt)) - { - sent = true; - if (!filter_selected.full() || paf0100f.sq_get("P1_GESTIONE") != filter_selected) - continue; - } + if (paf0100f.search(NULL, hfatt, bfatt)) + { + if (paf0100f.sq_get("P1_GESTIONE") != filter_selected) + continue; + sent = true; + } + else if (filter_selected.not_empty()) + continue; } - TToken_string* row = new TToken_string; - *row = sent ? " " : "X"; - row->add(rec.get(DOC_ANNO).as_int(), 1); - row->add(rec.get(DOC_CODNUM).as_string()); - row->add(rec.get(DOC_TIPODOC).as_string()); - row->add(td.tipo_doc_sdi()); - row->add(rec.get(DOC_NDOC).as_int()); - row->add(rec.get(DOC_DATADOC).as_date()); - row->add(rec.get(CFV_CODCF).as_int()); - row->add(rec.get("20." CLI_RAGSOC).as_string()); + TToken_string& row = docs.row(-1); + row = sent ? " " : "X"; + row.add(rec.get(DOC_ANNO).as_int(), 1); + row.add(rec.get(DOC_CODNUM).as_string()); + row.add(rec.get(DOC_TIPODOC).as_string()); + row.add(td.tipo_doc_sdi()); + row.add(rec.get(DOC_NDOC).as_int()); + row.add(rec.get(DOC_DATADOC).as_date()); + row.add(rec.get(CFV_CODCF).as_int()); + row.add(rec.get("20." CLI_RAGSOC).as_string()); TString rif = rec.get("17." CFV_PADESTIN).as_string(); if (rif.empty()) rif = rec.get("20.PEC").as_string(); - row->add(rif); - row->add(rec.get("17." CFV_PARIFAMM).as_string()); - row->add(rec.get("20." CLI_COFI).as_string()); + // Se è ancora vuoto potrebbe essere estero + if(rif.empty()) + { + static TString codcf; codcf.cut(0) << "C|" << rec.get(CFV_CODCF).as_string(); + TAnagrafica a(LF_CLIFO, codcf); + if (a.estero()) + rif = "XXXXXXX"; + else + { + disable(DLG_OK); + + if (show) + { + // Segno la riga errata + docs.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, rec.cursor()->pos()); + TString msg; msg << "Trovata fattura " << rec.get(DOC_CODNUM).as_string() << "/" << rec.get(DOC_TIPODOC).as_string() << "/" << rec.get(DOC_NDOC).as_int() << " senza nessun codice destinatario/pec, Continuare?"; + const bool force_stop = !yesno_box(msg); + if (!first && !ask && !force_stop) + { + show = yesno_box("Continuare a mostrare questo messaggio?"); + ask = true; + } + if (force_stop) + { + row.cut(0); + docs.force_update(); + docs.show(); + return; + } + first = false; + } + } + } + row.add(rif); + row.add(rec.get("17." CFV_PARIFAMM).as_string()); + row.add(rec.get("20." CLI_COFI).as_string()); bool split = rec.get("20." CLI_SPLITPAY).as_bool(); if (split) @@ -530,12 +580,12 @@ void TPA_mask::fill() split = is_split_payment(mov); } } - row->add(split ? "X" : " "); + row.add(split ? "X" : " "); const bool attach = !rec.get("COLL_GOLEM").is_empty(); - row->add(attach ? "X" : " "); + row.add(attach ? "X" : " "); - row->add(!td.invio_xml() ? "X" : ""); + row.add(!td.invio_xml() ? "X" : ""); sht.add(row); } @@ -543,7 +593,7 @@ void TPA_mask::fill() docs.show(); } -void TPA_mask::setFilterChanged() +void TPA_mask::set_filter_changed() { _filter_changed = true; } @@ -608,7 +658,7 @@ bool TPA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { if (o.dlg() >= START_MASK && o.dlg() <= END_MASK) { - setFilterChanged(); + set_filter_changed(); } } return true; @@ -646,6 +696,7 @@ bool TPA_mask::checkNotEmpty() return sheet.full(); } + ///////////////////////////////////////////////////////////////////////////////////// // TDoc2Paf ///////////////////////////////////////////////////////////////////////////////////// diff --git a/src/fp/fp0300a.uml b/src/fp/fp0300a.uml index cf2174c8f..9e67ab5c6 100644 --- a/src/fp/fp0300a.uml +++ b/src/fp/fp0300a.uml @@ -25,6 +25,7 @@ RADIOBUTTON F_FATTSEL 25 BEGIN PROMPT 1 1 "Fatture da visualizzare" ITEM "|Da inviare" + ITEM "D|Diagnosticate" ITEM "P|Pronte" ITEM "X|XML Generato" ITEM "E|In errore"