From 860be2a0c42683018ff709adcca3e1688d269d73 Mon Sep 17 00:00:00 2001 From: Simone Palacino Date: Thu, 4 Jul 2019 17:08:32 +0200 Subject: [PATCH] Patch level : 12.0 852 Files correlati : cg2, cg2100t.msk, fp0.exe, fp0400a.msk Commento : - Modificati bottoni maschera fatture SDI - Corretto riporta codice fornitore se non e' valorizzato - Aggiunto scollegamento movimento da FPPRO - Corretto controllo righe vuote IVA - Riporta dati numdoc e datadoc anche col collega (per quelli che non hanno f1) - Corretto salvataggio quando si riregistra lo stesso movimento - Aggiunto filtro sul fornitore --- src/cg/cg2100.cpp | 9 +-- src/cg/cg2100t.uml | 2 +- src/cg/cg2102.cpp | 7 +- src/fp/fp0400.cpp | 57 +++++++++++++++- src/fp/fp0400a.h | 7 ++ src/fp/fp0400a.uml | 162 +++++++++++++++++++++++++++++++++++++-------- 6 files changed, 204 insertions(+), 40 deletions(-) diff --git a/src/cg/cg2100.cpp b/src/cg/cg2100.cpp index 0347ebf6d..ef4896d3c 100755 --- a/src/cg/cg2100.cpp +++ b/src/cg/cg2100.cpp @@ -1546,7 +1546,7 @@ int TPrimanota_application::controlli_f1(const TMask& m){ if (data_operazione < dataoraric) return pro_dataric_err; const int numreg = fppro_db().set_keys(keys).get_numregcont(); - if (numreg != 0) + if (numreg != 0 && numreg != m.get_int(F_NUMREG)) { const TDate data_documento(m.get(F_DATADOC)); TString msg; msg << "Attenzione il documento " << data_documento.year() << " / " << m.get(F_NUMDOCEXT) << @@ -2588,7 +2588,7 @@ int TPrimanota_application::save_fppro() { message_box(TString("Attenzione!") << " E' stato modificato un movimento già collegato a un documento in ingresso."); clean_fppro(); // Pulisco db - save_dbmov(true); // Svuoto riferimento doc ingresso sul mov + save_dbmov(true); // Svuoto riferimento doc ingresso sul mov e proseguo col regolare salvataggio } } else return pro_notsaved; // In altre modalita' esco senza fare nulla sul db @@ -2666,11 +2666,6 @@ bool TPrimanota_application::save_dbmov(bool clean) const mov.put(MOV_KEYFPPRO, !clean ? keyfppro : ""); ok = mov.rewrite() == NOERR; } - if(clean && ok) - { - app().curr_mask().set(F_PROKEY, ""); - app().curr_mask().set(F_COLFPPRO, ""); - } return ok; } diff --git a/src/cg/cg2100t.uml b/src/cg/cg2100t.uml index 2c535055c..ec4eb71cd 100644 --- a/src/cg/cg2100t.uml +++ b/src/cg/cg2100t.uml @@ -58,7 +58,7 @@ END STRING F_RAGSOCS 50 BEGIN PROMPT 20 1 "" - INPUT TIPOCF F_CLIFO SELECT + INPUT TIPOCF "F" INPUT RAGSOC F_RAGSOCCF FLAGS "D" END diff --git a/src/cg/cg2102.cpp b/src/cg/cg2102.cpp index 49acfefb9..6e0080d84 100755 --- a/src/cg/cg2102.cpp +++ b/src/cg/cg2102.cpp @@ -4048,7 +4048,12 @@ bool TPrimanota_application::scollega_handler(TMask_field& f, KEY key) { scollega(true); app().clean_fppro(); - app().save_dbmov(true); + const bool ok = app().save_dbmov(true); + if (ok) + { + app().curr_mask().set(F_PROKEY, ""); + app().curr_mask().set(F_COLFPPRO, ""); + } message_box("Il movimento e' stato scollegato dalla fattura elettronica\nin ingresso, precedentemente associata."); } } diff --git a/src/fp/fp0400.cpp b/src/fp/fp0400.cpp index 46c06d7c0..45219c578 100644 --- a/src/fp/fp0400.cpp +++ b/src/fp/fp0400.cpp @@ -57,6 +57,7 @@ protected: std::map _list_fatt_err; + static bool clifo_handler(TMask_field& f, KEY key); void set_filter_changed(); void select_all(int sheet_field); @@ -100,6 +101,45 @@ public: TPassive_mask(bool f1); }; +bool TPassive_mask::clifo_handler(TMask_field& f, KEY key) +{ + + if (key == K_TAB && f.active()) + { + TMask& m = f.mask(); + + const TString4 cf = "F"; + const long codice = atol(f.get()); + + if (codice == 0) + { + m.show(F_STATOPAIV); // Stato partita IVA + m.show(F_PARIVA); // Partita IVA + m.show(F_CODFISC); // Codice Fiscale + return true; + } + + TRelation cliforel(LF_CLIFO); cliforel.add(LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF"); + TRectype& clifo = cliforel.curr(); + clifo.put(CLI_TIPOCF, cf); + clifo.put(CLI_CODCF, codice); + cliforel.read(); + + const bool occas = clifo.get_bool(CLI_OCCAS); + m.show(F_STATOPAIV, !occas); // Stato partita IVA + if (!occas) { + m.set(F_RAGSOC, clifo.get(CLI_RAGSOC)); + m.set(F_STATOPAIV, clifo.get(CLI_STATOPAIV)); + m.set(F_PARIVA, clifo.get(CLI_PAIV)); + m.set(F_CODFISC, clifo.get(CLI_COFI)); + } + m.show(F_PARIVA, !occas); // Partita IVA + m.show(F_CODFISC, !occas); // Codice Fiscale + } + + return true; +} + void TPassive_mask::set_filter_changed() { _filter_changed = true; @@ -220,7 +260,7 @@ vector& TPassive_mask::get_righe_iva(TToken_string& keys) { TString imponibile = fp_db().sq_get("IMPONIBILE"); TString imposta = fp_db().sq_get("IMPOSTA"); - if (imponibile.full() || imposta.full()) + if (imponibile != "0" || imposta != "0") riva.insert(riva.end(), { real(imponibile), real(imposta), real(fp_db().sq_get("ALIQUOTA")), fp_db().sq_get("NATURA") }); } return riva; @@ -243,7 +283,6 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee 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"); const TDate& dataregcont = fp_db().sq_get_date("DATAREGCONT"); const TString& filter_elab = get_fattsel(); const bool is_contab = dataregcont != TDate("20010101"); @@ -254,6 +293,10 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee clifo.put(CLI_TIPOCF, 'F'); const int forn_code = find_fornitore(clifo); + // Se abilitato il flag di ricerca per fornitore controllo che il codice sia giusto + if (get_bool(F_ENABLEFORN) && (forn_code < 0 || clifo.get_int(CLI_CODCF) != get_int(F_FORNITORE))) + return; + const bool data_range = dataregcont >= TDate(get(F_DATAINIREG)) && dataregcont <= TDate(get(F_DATAENDREG)); if( filter_elab.blank() && forn_code != 0 // Filtro sui non associati || filter_elab == FILTER_ASS && forn_code == 0 && !is_contab // Filtro sui associati e non contab. @@ -1023,6 +1066,15 @@ bool TPassive_mask::on_field_event(TOperable_field& o, TField_event e, long joll if (e == fe_init) o.set(get_periodprec()? "X" : ""); break; + case F_ENABLEFORN: + if(e == fe_modify) + { + bool en = o.get() == "X"; + field(F_FORNITORE).enable(en); + field(F_RAGSOC).enable(en); + field(F_PARIVA).enable(en); + field(F_CODFISC).enable(en); + } default: break; } if (o.dlg() >= F_ASSOC && o.dlg() <= F_CONTABIL) @@ -1061,6 +1113,7 @@ TPassive_mask::TPassive_mask(bool f1) : TAutomask("fp0400a"), _f1(f1), _filter_c { _tmp_dir = _tmp_dir.tempdir(); TMask::set_handler(F_CAUSFA, causfa_handler); + TMask::set_handler(F_FORNITORE, clifo_handler); } diff --git a/src/fp/fp0400a.h b/src/fp/fp0400a.h index c786acb81..9944c954f 100644 --- a/src/fp/fp0400a.h +++ b/src/fp/fp0400a.h @@ -13,6 +13,13 @@ #define F_GROUPCON2 512 #define F_PERIODPREC 513 #define F_GROUPCAU 514 +#define F_ENABLEFORN 515 +#define F_FORNITORE 516 +#define F_RAGSOC 517 +#define F_STATOPAIV 518 +#define F_PARIVA 519 +#define F_CODFISC 520 + #define END_MASK 599 #define F_PROT 401 diff --git a/src/fp/fp0400a.uml b/src/fp/fp0400a.uml index 9ef3dea02..2b2730d9d 100644 --- a/src/fp/fp0400a.uml +++ b/src/fp/fp0400a.uml @@ -65,20 +65,147 @@ BEGIN CHECKTYPE REQUIRED END +RADIOBUTTON F_FATTORD 20 20 +BEGIN + PROMPT 56 1 "Ordinamento fatture per " + ITEM "|Data Ricezione" + ITEM "D|Data Documento" + FLAGS "" +END + +RADIOBUTTON F_VERSOORD 20 20 +BEGIN + PROMPT 56 5 "Ordinamento:" + ITEM "|Decrescente" + ITEM "C|Crescente" + FLAGS "" +END + +GROUPBOX DLG_NULL 55 6 +BEGIN + PROMPT 0 5 "@BFiltro fornitore" +END + +BOOLEAN F_ENABLEFORN +BEGIN + PROMPT 1 6 "Abilita" +END + +NUMBER F_FORNITORE 6 +BEGIN + PROMPT 17 6 "Codice fornitore " + FIELD CODCF + FLAGS "GRD" + KEY 1 + USE LF_CLIFO + INPUT TIPOCF "F" SELECT + INPUT CODCF F_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 F_FORNITORE CODCF + OUTPUT F_RAGSOC RAGSOC + OUTPUT F_STATOPAIV STATOPAIV + OUTPUT F_PARIVA PAIV + OUTPUT F_CODFISC COFI + ADD RUN cg0 -1 F F_FORNITORE + HELP "Codice relativo al cliente o fornitore" + MESSAGE COPY,2@ +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 1 7 "" + KEY 2 + USE LF_CLIFO KEY 2 + INPUT TIPOCF "F" + INPUT RAGSOC F_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 F_FORNITORE + HELP "Prima parte della ragione sociale o cognome" + MESSAGE COPY,3@ + WARNING "Manca la ragione sociale" + FLAGS "D" +END + +STRING F_STATOPAIV 2 +BEGIN + PROMPT 1 8 "" + HELP "Codice ISO dello stato" + FLAGS "U" + USE %SCE + INPUT CODTAB F_STATOPAIV + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_STATOPAIV CODTAB + CHECKTYPE NORMAL + FLAGS "D" +END + +STRING F_PARIVA 50 20 +BEGIN + PROMPT 10 8 "P. IVA" + KEY 5 + USE LF_CLIFO KEY 5 + INPUT TIPOCF "F" + INPUT STATOPAIV F_STATOPAIV + INPUT PAIV F_PARIVA + 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 F_FORNITORE + HELP "Partita IVA del cliente/fornitore" + FLAGS "D" +END + +STRING F_CODFISC 50 20 +BEGIN + PROMPT 1 9 "Cod. Fisc." + FLAGS "U" + KEY 4 + USE LF_CLIFO KEY 4 + INPUT TIPOCF "F" + INPUT COFI F_CODFISC + DISPLAY "Codice fiscale@16" COFI + DISPLAY "Sospeso" SOSPESO + DISPLAY "Codice@R" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + DISPLAY "Partita IVA@11" PAIV + COPY OUTPUT F_FORNITORE + HELP "Codice fiscale del cliente/fornitore" + FLAGS "D" +END + +SPREADSHEET F_PROT 25 4 +BEGIN + PROMPT 0 11 "Selezionare o aggiungere un filtro sul Tipo Progressivo" + ITEM "@1" + ITEM "Codice\nProtocol.@12" +END + GROUPBOX F_GROUPCON 32 5 BEGIN - PROMPT 0 10 "@BContabilita'" + PROMPT 0 16 "@BContabilita'" END BOOLEAN F_CONTABIL BEGIN - PROMPT 1 11 "Mostra solo doc. registrati" + PROMPT 1 17 "Mostra solo doc. registrati" MODULE F1 END DATE F_DATAINIREG BEGIN - PROMPT 1 12 "Data iniziale" + PROMPT 1 18 "Data iniziale" VALIDATE DATE_CMP_FUNC <= F_DATAENDREG WARNING "La data iniziale non puo' essere superiore della data iniziale" CHECKTYPE REQUIRED @@ -87,44 +214,21 @@ END DATE F_DATAENDREG BEGIN - PROMPT 1 13 "Data finale " + PROMPT 1 19 "Data finale " VALIDATE DATE_CMP_FUNC >= F_DATAINIREG WARNING "La data finale non puo' essere minore della data iniziale" CHECKTYPE REQUIRED MODULE F1 END -RADIOBUTTON F_FATTORD 20 20 -BEGIN - PROMPT 52 1 "Ordinamento fatture per " - ITEM "|Data Ricezione" - ITEM "D|Data Documento" - FLAGS "" -END - -RADIOBUTTON F_VERSOORD 20 20 -BEGIN - PROMPT 52 5 "Ordinamento:" - ITEM "|Decrescente" - ITEM "C|Crescente" - FLAGS "" -END - -SPREADSHEET F_PROT 25 4 -BEGIN - PROMPT 0 5 "Selezionare o aggiungere un filtro sul Tipo Progressivo" - ITEM "@1" - ITEM "Codice\nProtocol.@12" -END - GROUPBOX F_GROUPCON2 59 3 BEGIN - PROMPT 33 10 "@BContabilizzazione automatica:" + PROMPT 33 16 "@BContabilizzazione automatica:" END BOOLEAN F_PERIODPREC BEGIN - PROMPT 34 11 "Selezione automatica liquid. periodo precedente" + PROMPT 34 17 "Selezione automatica liquid. periodo precedente" MODULE F1 END