public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } // Se il codice fiscale è un aziendale non ci sono controlli da fare sulla validità dello stesso if (R["cf"].ToString().Length == 11) { return(true); } CalcolaCodiceFiscale.CheckCF(R["cf"].ToString(), out errmess); if (errmess != "") { errfield = "cf"; return(false); } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } string cf = R["cf"].ToString().Trim(); if (cf == "") { errmess = "Inserire il codice fiscale"; errfield = "cf"; return(false); } CalcolaCodiceFiscale.CheckCF(cf, out errmess); if (errmess != "") { errfield = "cf"; return(false); } errmess = null; return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } decimal imponibilePrevidenziale = CfgFn.GetNoNullDecimal(R["taxablepension"]); if (imponibilePrevidenziale < 0) { errmess = "L'imponibile Previdenziale non può essere negativo"; errfield = "taxablepension"; return(false); } decimal imponibileFiscaleLordo = CfgFn.GetNoNullDecimal(R["taxablegross"]); if (imponibileFiscaleLordo < 0) { errmess = "L'imponibile Fiscale Lordo non può essere negativo"; errfield = "taxablenet"; return(false); } if (imponibilePrevidenziale < imponibileFiscaleLordo) { errmess = "L'imponibile previdenziale deve essere maggiore o uguale all'imponibile fiscale lordo"; errfield = "imponibilefiscalelordo"; return(false); } if (R["cfotherdeputy"].ToString().Trim() == "") { errmess = "Attenzione! Bisogna specificare il codice fiscale del sostituto"; errfield = "cfotherdeputy"; return(false); } string errori; int lunghezzaCF = R["cfotherdeputy"].ToString().Length; if ((lunghezzaCF != 11) && (lunghezzaCF != 16)) { errmess = "La lunghezza del Codice Fiscale è errata, essa deve essere di 11 o 16 caratteri"; errfield = "cfotherdeputy"; return(false); } if (lunghezzaCF == 16) { CalcolaCodiceFiscale.CheckCF(R["cfotherdeputy"].ToString().ToUpper(), out errori); if (errori != "") { errmess = "Nel codice fiscale inserito compaiono i seguenti errori:\n\r " + errori; errfield = "cfotherdeputy"; return(false); } } // Il controllo lo faccio sul DBNull in quanto se metto ZERO volutamente devo specificare la regione fiscale if (((R["regionaltaxapplied"] != DBNull.Value) || (R["suspendedregionaltax"] != DBNull.Value)) && (R["idfiscaltaxregion"] == DBNull.Value)) { errmess = "Bisogna specificare la regione fiscale alla quale si è versata l'addizionale regionale"; errfield = "idfiscaltaxregion"; return(false); } // Il controllo lo faccio sul DBNull in quanto se metto ZERO volutamente devo specificare la regione fiscale if (((R["citytax_account"] != DBNull.Value) || (R["citytaxapplied"] != DBNull.Value) || (R["suspendedcitytax"] != DBNull.Value)) && (R["idcity"] == DBNull.Value)) { errmess = "Bisogna specificare il comune al quale si è versata l'addizionale comunale e/o l'acconto"; errfield = "idcity"; return(false); } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } string errori; if ((R["forename"] == DBNull.Value) || (R["forename"].ToString() == "")) { errmess = "Inserire il Nome del familiare"; errfield = "forename"; return(false); } if ((R["surname"] == DBNull.Value) || (R["surname"].ToString() == "")) { errmess = "Inserire il Cognome del familiare"; errfield = "surname"; return(false); } if (R["birthdate"] == DBNull.Value) { errmess = "Inserire la Data di Nascita del familiare"; errfield = "birthdate"; return(false); } if (R["gender"] == DBNull.Value) { errmess = "Inserire il Sesso del familiare"; errfield = "gender"; return(false); } string TipoGeo = ""; int idgeo = 0; if (R["flagforeign"] == DBNull.Value) { errmess = null; errfield = null; return(false); } if (R["flagforeign"].ToString() == "S") { TipoGeo = "N"; idgeo = CfgFn.GetNoNullInt32(R["idnation"]); if (idgeo <= 0) { errmess = "Manca lo stato estero di nascita"; errfield = "idnation"; return(false); } } if (R["flagforeign"].ToString() == "N") { TipoGeo = "C"; idgeo = CfgFn.GetNoNullInt32(R["idcitybirth"]); if (idgeo <= 0) { errmess = "Manca il comune di nascita"; errfield = "idnation"; return(false); } } if (R["cf"] == DBNull.Value) { errmess = "CF Mancante"; errfield = "cf"; return(false); } CalcolaCodiceFiscale.CheckCF(R["cf"].ToString(), out errori); if (errori != "") { errmess = errori = "Nel codice fiscale inserito compaiono i seguenti errori:\n\r " + errori; errfield = "cf"; return(false); } string codicefiscalecalcolato; bool isValid; string errCF; string cfNormal = CalcolaCodiceFiscale.normalizza(R["cf"].ToString().ToUpper()); // Se arrivo a questo punto del codice vuol dire che i dati presenti nel dataset sono quantomeno diversi da null codicefiscalecalcolato = CalcolaCodiceFiscale.Make(this.Conn, R["forename"].ToString(), R["surname"].ToString(), (DateTime)R["birthdate"], idgeo.ToString(), R["gender"].ToString(), TipoGeo, out isValid, out errCF); if (cfNormal.Substring(0, 15) != codicefiscalecalcolato.Substring(0, 15)) { errmess = "Dati anagrafici errati!"; errfield = "cf"; if (cfNormal.Substring(0, 3) != codicefiscalecalcolato.Substring(0, 3)) { errmess += "\r\nCF non coerente con il cognome"; } if (cfNormal.Substring(3, 3) != codicefiscalecalcolato.Substring(3, 3)) { errmess += "\r\nCF non coerente con il nome"; } if (cfNormal.Substring(6, 2) != codicefiscalecalcolato.Substring(6, 2)) { errmess += "\r\nCF non coerente con l'anno di nascita"; } if (cfNormal.Substring(8, 1) != codicefiscalecalcolato.Substring(8, 1)) { errmess += "\r\nCF non coerente con il mese di nascita"; } int g1 = Convert.ToInt32(cfNormal.Substring(9, 2)); int g2 = Convert.ToInt32(codicefiscalecalcolato.Substring(9, 2)); string s1 = "M"; string s2 = "M"; if (g1 > 40) { s1 = "F"; g1 -= 40; } if (g2 > 40) { s2 = "F"; g2 -= 40; } if (g1 != g2) { errmess += "\r\nCF non coerente con il giorno di nascita"; } if (s1 != s2) { errmess += "\r\nCF non coerente con il sesso"; } if (cfNormal.Substring(11, 4) != codicefiscalecalcolato.Substring(11, 4)) { errmess += "\r\nCF non coerente con il comune o la nazione di nascita"; } return(false); } decimal perc = 1; if (R["appliancepercentage"] != DBNull.Value) { perc = (decimal)R["appliancepercentage"]; } if ((R["flagdependent"].ToString().ToUpper() == "S") && (perc == 0)) { errmess = "Se il familiare risulta a carico la percentuale di applicazione deve essere diversa da zero"; errfield = "appliancepercentage"; return(false); } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (R["completed"].ToString() == "S" && R.Table.Columns.Contains("datecompleted")) { if (R["datecompleted"] == DBNull.Value) { errmess = "E' necessario specificare la data di acquisizione documentazione definitiva"; errfield = "datecompleted"; return(false); } } if ((R.RowState == DataRowState.Added || ( R.RowState == DataRowState.Modified && R["datecompleted", DataRowVersion.Original] == DBNull.Value) ) && R["datecompleted"] != DBNull.Value ) { DateTime dateCompleted = (DateTime)R["datecompleted"]; if (R["stop"] == DBNull.Value) { errmess = "Non è possibile considerare pagare una parcella senza data fine"; errfield = "stop"; return(false); } DateTime stop = (DateTime)R["stop"]; if (dateCompleted < stop) { errmess = "La data di acquisizione documentazione definitiva non può precedere la data fine"; errfield = "datecompleted"; return(false); } if (dateCompleted.Year != Conn.GetEsercizio()) { errmess = "La data di acquisizione documentazione definitiva deve essere quella dell'esercizio all'atto dell'inserimento"; errfield = "datecompleted"; return(false); } int ycon = CfgFn.GetNoNullInt32(R["ycon"]); if (dateCompleted.Year < ycon) { errmess = "La data di acquisizione documentazione definitiva non può precedere l'anno parcella"; errfield = "datecompleted"; return(false); } } if (!base.IsValid(R, out errmess, out errfield)) { return(false); } if ((R["idser"] is DBNull) || (CfgFn.GetNoNullInt32(R["idser"]) == 0)) { errmess = "il campo prestazione è obbligatorio"; errfield = "idser"; return(false); } string filterRitEnpals = QHS.AppAnd(QHS.CmpEq("idser", R["idser"]), QHS.CmpEq("taxkind", 3), QHS.Like("taxref", "%enpals%")); DataTable TRitEnpals = Conn.RUN_SELECT("servicetaxview", "*", null, filterRitEnpals, null, false); if (TRitEnpals.Rows.Count > 0) { errmess = "La denuncia UNIEMENS per il compenso assoggettato ad ENPALS \n\r " + "non sarà prodotta con il flusso UNIEMENS di Easy ma \n\r " + "dovrà essere eventualmente effettuata direttamente dal sito \n\r " + "http://www.inps.it/ . Si raccomanda di informare tempestivamente \n\r " + "l'ufficio competente alla trasmissione della denuncia UNIEMENS."; errfield = "idser"; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } if (R["description"].ToString() == "") { errmess = "Il campo descrizione è obbligatorio."; errfield = "description"; return(false); } //cascon§2006§2 bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; string filter_idrelated = "cascon§" + R["ycon"].ToString() + "§" + R["ncon"].ToString(); filter_idrelated = QHS.CmpEq("idrelated", filter_idrelated); DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["description", DataRowVersion.Current].ToString() != R["description", DataRowVersion.Original].ToString()) { message = message + "Descrizione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["feegross", DataRowVersion.Current])) != CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["feegross", DataRowVersion.Original]))) { message = message + "Lordo al beneficiario \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // DataRow[] righeImpContr = R.GetChildRows("casualcontractcasualcontractyear"); if (R["!codiceritenutainps"] != DBNull.Value) { if (righeImpContr[0]["idemenscontractkind"] is DBNull) { errmess = "Per una prestazione soggetta ad INPS è obbligatorio specificare il 'Tipo Rapporto'"; errfield = "codicerapporto"; return(false); } string filtro = QHS.AppAnd(QHS.CmpEq("idemenscontractkind", righeImpContr[0]["idemenscontractkind"]), QHS.CmpEq("ayear", R["ycon"])); object flagAttivitaObbligatoria = Conn.DO_READ_VALUE("emenscontractkind", filtro, "flagactivityrequested"); if (flagAttivitaObbligatoria != null && flagAttivitaObbligatoria.Equals("S") && (righeImpContr[0]["activitycode"] is DBNull)) { errmess = "Per il 'Tipo Rapporto' scelto è necessario specificare l'Attività Previdenziale"; errfield = "activitycode"; return(false); } if (flagAttivitaObbligatoria != null && !flagAttivitaObbligatoria.Equals("S") && !(righeImpContr[0]["activitycode"] is DBNull)) { errmess = "Per il 'Tipo Rapporto' scelto non va selezionata l'Attività Previdenziale"; errfield = "activitycode"; return(false); } string codiceritenutainps = R["!codiceritenutainps"].ToString(); if ((codiceritenutainps == "07_INPS_M") && (righeImpContr[0]["idotherinsurance"] is DBNull)) { errmess = "Per i soggetti mutuati è necessario specificare l'altra forma assicurativa"; return(false); } if ((codiceritenutainps == "07_INPS_P") && (!righeImpContr[0]["idotherinsurance"].Equals("002"))) { errmess = "Per i titolari di pensione diretta è necessario specificare 'Titolari di pensione diretta' come altra forma assicurativa"; return(false); } if ((codiceritenutainps == "07_INPS_P") && (!righeImpContr[0]["idotherinsurance"].Equals("002"))) { errmess = "La prestazione scelta non è compatibile con l'altra forma assicurativa 'Titolari di pensione diretta'"; errfield = "idser"; return(false); } } if (CfgFn.GetNoNullDecimal(R["feegross"]) <= 0) { errmess = "L'importo lordo del contratto deve essere maggiore di zero"; errfield = "feegross"; return(false); } DateTime dataInizio = (DateTime)R["start"]; DateTime dataFine = (DateTime)R["stop"]; if (dataInizio > dataFine) { errmess = "La data di fine deve essere identica o successiva a quella di inizio"; errfield = "stop"; return(false); } //Se il percipiente ha un indirizzo AP, nel form del compenso si deve scegliere o S o N String codeaddress = "07_SW_ANP"; DateTime DataInizio = (DateTime)R["start"]; object idaddresskind = Conn.DO_READ_VALUE("address", QHS.CmpEq("codeaddress", codeaddress), "idaddress"); DataTable Address = DataAccess.RUN_SELECT(Conn, "registryaddress", "*", null, QHS.AppAnd(QHS.CmpEq("idaddresskind", idaddresskind), QHS.CmpEq("idreg", R["idreg"]), QHS.CmpLe("start", DataInizio), QHS.NullOrGe("stop", DataInizio)), false); if (Address.Rows.Count > 0) { if ((R["authneeded"].ToString() != "S") && (R["authneeded"].ToString() != "N")) { errfield = "authneeded"; errmess = "Il percipiente ha un indirizzo Anagrafe delle Prestazioni, pertanto va indicato se necessita o meno dell'autorizzazione."; return(false); } } if (R["authneeded"].ToString() == "S" && R["authdoc"].ToString() == "") { errmess = "Il campo 'Documento' è obbligatorio"; errfield = "authdoc"; return(false); } if (R["authneeded"].ToString() == "S" && R["authdocdate"] == DBNull.Value) { errmess = "Il campo 'data' è obbligatorio"; errfield = "authdocdate"; return(false); } if (R["authneeded"].ToString() == "N" && R["noauthreason"].ToString() == "") { errmess = "Il campo 'Motivo' è obbligatorio"; errfield = "authdoc"; return(false); } if ((R.RowState == DataRowState.Added) && (!RowChange.IsAutoIncrement(R.Table.Columns["ncon"]))) { int NPRESENT = Conn.RUN_SELECT_COUNT("casualcontract", "(ycon=" + QueryCreator.quotedstrvalue(R["ycon"], true) + ")AND" + "(ncon=" + QueryCreator.quotedstrvalue(R["ncon"], true) + ")", true); if (NPRESENT > 0) { errmess = "Esiste già un contratto con lo stesso numero."; errfield = "ncon"; return(false); } } //Se il DS contiene la tabella registry, controlla che l'idreg abbia il CF,se SI chiama il metodo. if (R.Table.DataSet.Tables.Contains("registry") && (R.Table.DataSet.Tables["registry"].Rows.Count > 0)) { DataRow Registry = R.Table.DataSet.Tables["registry"].Rows[0]; if (Registry["cf"] != DBNull.Value) { string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } else { //Se il DS non contiene la tabella registry,controlla che l'idreg abbia il CF se SI legge la riga dal DB // e chiama il metodo. object CF = Conn.DO_READ_VALUE("registry", QHS.CmpEq("idreg", R["idreg"]), "cf"); if (CF != DBNull.Value) { DataTable TRegistry = Conn.RUN_SELECT("registry", "*", null, QHS.CmpEq("idreg", R["idreg"]), null, null, true); if (TRegistry.Rows.Count > 0) { DataRow Registry = TRegistry.Rows[0]; string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } } if (!CfgFn.IsValidString(R["cigcode"].ToString())) { errmess = "Il CIG contiene caratteri non validi.I caratteri ammessi sono solo numeri e lettere."; errfield = "cigcode"; return(false); } return(true); }
private void button4_Click(object sender, System.EventArgs e) { if (Meta.IsEmpty) { return; } string errori; string idgeo; bool ok = Meta.GetFormData(true); CalcolaCodiceFiscale.CheckCF(txtCF.Text, out errori); if (errori != "") { errori = "Nel codice fiscale inserito compaiono i seguenti errori:\n\r " + errori; MessageBox.Show(this, errori, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } DataRow R = DS.parasubcontractfamily.Rows[0]; string codicefiscale = R["cf"].ToString().ToUpper(); codicefiscale = CalcolaCodiceFiscale.normalizza(codicefiscale); chkEstero.Checked = (codicefiscale[11] == 'Z'); string sesso = InfoDaCodiceFiscale.Sesso(codicefiscale); object datanascita = InfoDaCodiceFiscale.DataNascita(Meta.Conn, codicefiscale); if (sesso != null) { R["gender"] = sesso; } if (datanascita != null) { R["birthdate"] = datanascita; } if (!chkEstero.Checked) { string idcomune = InfoDaCodiceFiscale.Comune(Meta.Conn, codicefiscale); if ((idcomune != null) && (idcomune != "")) { R["idcitybirth"] = idcomune; idgeo = idcomune; } else { MessageBox.Show(this, "Impossibile ricavare il comune dal codice '" + codicefiscale.Substring(11, 4) + "'", "Elaborazione del codice fiscale", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else { string idnazione = InfoDaCodiceFiscale.Nazione(Meta.Conn, codicefiscale); if ((idnazione != null) && (idnazione != "")) { R["idnation"] = idnazione; idgeo = idnazione; } else { MessageBox.Show(this, "Impossibile ricavare lo stato estero dal codice '" + codicefiscale.Substring(11, 4) + "'", "Elaborazione del codice fiscale", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } Meta.FreshForm(true); }
private void button3_Click(object sender, System.EventArgs e) { string cognome; string nome; string sesso; DateTime datanascita; string codicelocalita; string tipogeo; bool IsValid; string errori; string CF; Meta.GetFormData(true); codicelocalita = ""; tipogeo = ""; if (DS.parasubcontractfamily.Rows[0]["surname"] == DBNull.Value) { return; } cognome = DS.parasubcontractfamily.Rows[0]["surname"].ToString(); if (DS.parasubcontractfamily.Rows[0]["forename"] == DBNull.Value) { return; } nome = DS.parasubcontractfamily.Rows[0]["forename"].ToString(); if (DS.parasubcontractfamily.Rows[0]["gender"] == DBNull.Value) { return; } sesso = DS.parasubcontractfamily.Rows[0]["gender"].ToString(); if (DS.parasubcontractfamily.Rows[0]["birthdate"] == DBNull.Value) { return; } datanascita = (DateTime)DS.parasubcontractfamily.Rows[0]["birthdate"]; if (DS.parasubcontractfamily.Rows[0]["flagforeign"] == DBNull.Value) { return; } if (DS.parasubcontractfamily.Rows[0]["flagforeign"].ToString() == "N") { if (DS.parasubcontractfamily.Rows[0]["idcitybirth"] != DBNull.Value) { codicelocalita = DS.parasubcontractfamily.Rows[0]["idcitybirth"].ToString(); tipogeo = "C"; } } if (DS.parasubcontractfamily.Rows[0]["flagforeign"].ToString() == "S") { if (DS.parasubcontractfamily.Rows[0]["idnation"] != DBNull.Value) { codicelocalita = DS.parasubcontractfamily.Rows[0]["idnation"].ToString(); tipogeo = "N"; } } CF = CalcolaCodiceFiscale.Make(Meta.Conn, nome, cognome, datanascita, codicelocalita, sesso, tipogeo, out IsValid, out errori); if (IsValid) { txtCF.Text = CF; } else { MessageBox.Show("Sono stati riscontrati i seguenti errori " + "durante il calcolo del codice fiscale:\r\r" + errori, "Calcolo Codice Fiscale", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } //profservice§2006§34 if (CfgFn.GetNoNullInt32(R["idser"]) <= 0) { errmess = "Bisogna specificare la prestazione"; errfield = "idser"; return(false); } string filterRitEnpals = QHS.AppAnd(QHS.CmpEq("idser", R["idser"]), QHS.CmpEq("taxkind", 3), QHS.Like("taxref", "%enpals%")); DataTable TRitEnpals = Conn.RUN_SELECT("servicetaxview", "*", null, filterRitEnpals, null, false); if (TRitEnpals.Rows.Count > 0) { errmess = "La denuncia UNIEMENS per il compenso assoggettato ad ENPALS \n\r " + "non sarà prodotta con il flusso UNIEMENS di Easy ma \n\r " + "dovrà essere eventualmente effettuata direttamente dal sito \n\r " + "http://www.inps.it/ . Si raccomanda di informare tempestivamente \n\r " + "l'ufficio competente alla trasmissione della denuncia UNIEMENS."; errfield = "idser"; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; string filter_idrelated = QHC.CmpEq("idrelated", "profservice§" + R["ycon"] + "§" + R["ncon"]); //filter_idrelated = "(idrelated="+QueryCreator.quotedstrvalue(filter_idrelated,true)+")"; DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["description", DataRowVersion.Current].ToString() != R["description", DataRowVersion.Original].ToString()) { message = message + "Descrizione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalcost", DataRowVersion.Current])) != CfgFn.RoundValuta(CfgFn.GetNoNullDecimal(R["totalcost", DataRowVersion.Original]))) { message = message + "Lordo al beneficiario \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // if (CfgFn.GetNoNullInt32(R["idreg"]) == 0) { errmess = "Inserire il percipiente"; errfield = "idreg"; return(false); } if (R["description"].ToString() == "") { errmess = "Il campo descrizione è obbligatorio."; errfield = "description"; return(false); } if (R["doc"].ToString() == "") { errmess = "Il campo documento è obbligatorio e dovrebbe contenere il rif. alla fattura."; errfield = "doc"; } if (R["docdate"].ToString() == "") { errmess = "Il campo data documento è obbligatorio e dovrebbe contenere la data della fattura."; errfield = "docdate"; } //A questo controllo è stato tolto l' uguale,perchè ci sono dei casi in cui i professionisti fatturano solo spese non imponibili //anticipate per conto del committente quindi è possibile che l'importo della prestazione sia uguale a zero. Task 3750 if (CfgFn.GetNoNullDecimal(R["feegross"]) < 0) { errmess = "L'importo lordo del contratto deve essere maggiore di zero"; errfield = "feegross"; return(false); } DateTime dataInizio = (DateTime)R["start"]; DateTime dataFine = (DateTime)R["stop"]; if (dataInizio > dataFine) { errmess = "La data di fine deve essere identica o successiva a quella di inizio"; errfield = "stop"; return(false); } //Se il percipiente ha un indirizzo AP, nel form del compenso si deve scegliere o S o N String codeaddress = "07_SW_ANP"; DateTime DataInizio = (DateTime)R["start"]; object idaddresskind = Conn.DO_READ_VALUE("address", QHS.CmpEq("codeaddress", codeaddress), "idaddress"); DataTable Address = DataAccess.RUN_SELECT(Conn, "registryaddress", "*", null, QHS.AppAnd(QHS.CmpEq("idaddresskind", idaddresskind), QHS.CmpEq("idreg", R["idreg"]), QHS.CmpLe("start", DataInizio), QHS.NullOrGe("stop", DataInizio)), false); if (Address.Rows.Count > 0) { if ((R["authneeded"].ToString() != "S") && (R["authneeded"].ToString() != "N")) { errfield = "authneeded"; errmess = "Il percipiente ha un indirizzo Anagrafe delle Prestazioni, pertanto va indicato se necessita o meno dell'autorizzazione."; return(false); } } if (R["authneeded"].ToString() == "S" && R["authdoc"].ToString() == "") { errmess = "Il campo 'Documento' è obbligatorio"; errfield = "authdoc"; return(false); } if (R["authneeded"].ToString() == "S" && R["authdocdate"] == DBNull.Value) { errmess = "Il campo 'data' è obbligatorio"; errfield = "authdocdate"; return(false); } if (R["authneeded"].ToString() == "N" && R["noauthreason"].ToString() == "") { errmess = "Il campo 'Motivo' è obbligatorio"; errfield = "authdoc"; return(false); } if ((R.RowState == DataRowState.Added) && (!RowChange.IsAutoIncrement(R.Table.Columns["ncon"]))) { string filterProfService = QHS.AppAnd(QHS.CmpEq("ycon", R["ycon"]), QHS.CmpEq("ncon", R["ncon"])); int NPRESENT = Conn.RUN_SELECT_COUNT("profservice", filterProfService, true); if (NPRESENT > 0) { errmess = "Esiste già un contratto con lo stesso numero."; errfield = "ncon"; return(false); } } //Se il DS contiene la tabella registry, controlla che l'idreg abbia il CF,se SI chiama il metodo. if (R.Table.DataSet.Tables.Contains("registry") && (R.Table.DataSet.Tables["registry"].Rows.Count > 0)) { DataRow Registry = R.Table.DataSet.Tables["registry"].Rows[0]; if (Registry["cf"] != DBNull.Value) { string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } else { //Se il DS non contiene la tabella registry,controlla che l'idreg abbia il CF se SI legge la riga dal DB // e chiama il metodo. object CF = Conn.DO_READ_VALUE("registry", QHS.CmpEq("idreg", R["idreg"]), "cf"); if (CF != DBNull.Value) { DataTable TRegistry = Conn.RUN_SELECT("registry", "*", null, QHS.CmpEq("idreg", R["idreg"]), null, null, true); if (TRegistry.Rows.Count > 0) { DataRow Registry = TRegistry.Rows[0]; string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; return(false); } } } } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } //parasubcon§06000011 string filter_idrelated = "parasubcontract§" + R["idcon"].ToString(); filter_idrelated = QHS.CmpEq("idrelated", filter_idrelated); bool IsAdmin = (GetSys("manage_prestazioni") != null) ? GetSys("manage_prestazioni").ToString() == "S" : false; DataTable Tserviceregistry = Conn.RUN_SELECT("serviceregistry", "*", null, filter_idrelated, null, null, true); if ((Tserviceregistry.Rows.Count > 0) && (R.RowState == DataRowState.Modified)) { bool error = false; string message = ""; if (R["idreg", DataRowVersion.Current].ToString() != R["idreg", DataRowVersion.Original].ToString()) { message = "Percipiente \n\r "; error = true; } if (R["duty", DataRowVersion.Current].ToString() != R["duty", DataRowVersion.Original].ToString()) { message = message + "Mansione \n\r "; error = true; } if (R["start", DataRowVersion.Current].ToString() != R["start", DataRowVersion.Original].ToString()) { message = message + "Data Inizio \n\r "; error = true; } if (R["stop", DataRowVersion.Current].ToString() != R["stop", DataRowVersion.Original].ToString()) { message = message + "Data Fine \n\r "; error = true; } if (R["grossamount", DataRowVersion.Current].ToString() != R["grossamount", DataRowVersion.Original].ToString()) { message = message + "Lordo al beneficiario \n\r "; error = true; } if (error) { if (IsAdmin) { errmess = "L'Anagrafe delle Prestazioni è stata già generata, e risultano modificati i seguenti dati: \n\r" + message + "Adeguare anche i dati dell'Incarico."; MessageBox.Show(errmess, "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { errmess = "Risultano modificati i seguenti dati: \n\r" + message + "La modifica non è consentita perché l'Anagrafe delle Prestazioni è stata già generata.\r\n" + "Contattare il servizio assistenza o un utente con ruolo 'manage_prestazioni' "; return(false); } } } // if (Convert.ToInt32(R["grossamount"]) <= 0) { errmess = "L'importo del contratto deve essere maggiore di zero"; errfield = "grossamount"; return(false); } if (CfgFn.GetNoNullInt32(R["idser"]) != 0) { string q = "SELECT * FROM servicetax JOIN tax " + "ON servicetax.taxcode = tax.taxcode WHERE " + QHS.AppAnd(QHS.CmpEq("tax.taxkind", 4), QHS.CmpEq("servicetax.idser", R["idser"])); DataTable prestazione = Conn.SQLRunner(q, -1, out errmess); if (prestazione == null) { errfield = null; return(false); } if (prestazione.Rows.Count != 0) { if (CfgFn.GetNoNullInt32(R["idpat"]) <= 0) { errmess = "Scegliere una Posizione Assicurativa Territoriale"; errfield = "idpat"; return(false); } } } else { errmess = "Inserire la prestazione"; errfield = "idser"; return(false); } if (!(R["start"] is DateTime)) { errmess = "Inserire la data di inizio del contratto"; errfield = "start"; return(false); } if (!(R["stop"] is DateTime)) { errmess = "Inserire la data di fine del contratto"; errfield = "stop"; return(false); } DateTime dataInizio = (DateTime)R["start"]; DateTime dataFine = (DateTime)R["stop"]; if (dataInizio.Year > (int)GetSys("esercizio")) { errmess = "L'anno di inizio del contratto deve essere minore o uguale all'esercizio"; errfield = "start"; return(false); } if (dataInizio > dataFine) { errmess = "La data di fine del contratto deve essere successiva alla data di inizio del contratto"; errfield = "stop"; return(false); } if (CfgFn.GetNoNullInt32(R["idreg"]) <= 0) { errmess = "Inserire il Percipiente"; errfield = "registry.title"; return(false); } //Se il DS contiene la tabella registry, controlla che l'idreg abbia il CF,se SI chiama il metodo. if (R.Table.DataSet.Tables.Contains("registry") && (R.Table.DataSet.Tables["registry"].Rows.Count > 0)) { DataRow Registry = R.Table.DataSet.Tables["registry"].Rows[0]; if (Registry["cf"] != DBNull.Value) { string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; errfield = "idreg"; return(false); } } } else { //Se il DS non contiene la tabella registry,controlla che l'idreg abbia il CF se SI legge la riga dal DB // e chiama il metodo. object CF = Conn.DO_READ_VALUE("registry", QHS.CmpEq("idreg", R["idreg"]), "cf"); if (CF != DBNull.Value) { DataTable TRegistry = Conn.RUN_SELECT("registry", "*", null, QHS.CmpEq("idreg", R["idreg"]), null, null, true); if (TRegistry.Rows.Count > 0) { DataRow Registry = TRegistry.Rows[0]; string errori; if (!CalcolaCodiceFiscale.CodiceFiscaleValido(this.Conn, Registry, out errori)) { errmess = "Il Codice Fiscale non è valido!\n" + errori; errfield = "idreg"; return(false); } } } else { errmess = "E' necessario che il percipiente abbia il codice fiscale"; errfield = "idreg"; return(false); } } return(true); }
public override bool IsValid(DataRow R, out string errmess, out string errfield) { if (!base.IsValid(R, out errmess, out errfield)) { return(false); } if (CfgFn.GetNoNullDecimal(R["amount"]) <= 0) { errmess = "L'importo non può essere nullo, negativo o uguale a zero"; errfield = "amount"; return(false); } if (R["flaghuman"].ToString().ToUpper() == "S") { if (R["surname"] == DBNull.Value) { errmess = "Inserire il Cognome"; errfield = "surname"; return(false); } if (R["forename"] == DBNull.Value) { errmess = "Inserire il Nome"; errfield = "forename"; return(false); } if (R["birthdate"] == DBNull.Value) { errmess = "Inserire la data di nascita"; errfield = "birthdate"; return(false); } if (R["gender"] == DBNull.Value) { errmess = "Inserire il sesso"; errfield = "gender"; return(false); } if ((CfgFn.GetNoNullInt32(R["idcity"]) == 0) && (CfgFn.GetNoNullInt32(R["idnation"]) == 0)) { errmess = "Inserire la città di nascita o lo stato estero di nascita"; errfield = "idcity"; return(false); } if (R["cap"] == DBNull.Value) { errmess = "Inserire il C.A.P."; errfield = "cap"; return(false); } if (R["address"] == DBNull.Value) { errmess = "Inserire l'indirizzo"; errfield = "address"; return(false); } if (R["location"] == DBNull.Value) { errmess = "Inserire la località"; errfield = "location"; return(false); } if (R["province"] == DBNull.Value) { errmess = "Inserire la sigla della provincia"; errfield = "province"; return(false); } // Controlli sul codice fiscale if (R["cf"] == DBNull.Value) { errmess = "Inserire il codice fiscale"; errfield = "cf"; return(false); } string errori; CalcolaCodiceFiscale.CheckCF(R["cf"].ToString(), out errori); if (errori != "") { errmess = errori = "Nel codice fiscale inserito compaiono i seguenti errori:\n\r " + errori; errfield = "cf"; return(false); } string codicefiscalecalcolato; bool isValid; string errCF; int idgeo; string TipoGeo; // Se sono arrivato in questo punto vuol dire che idcity o idnation sono valorizzati if (CfgFn.GetNoNullInt32(R["idcity"]) > 0) { idgeo = CfgFn.GetNoNullInt32(R["idcity"]); TipoGeo = "C"; } else { idgeo = CfgFn.GetNoNullInt32(R["idnation"]); TipoGeo = "N"; } string cfNormal = CalcolaCodiceFiscale.normalizza(R["cf"].ToString().ToUpper()); // Se arrivo a questo punto del codice vuol dire che i dati presenti nel dataset sono quantomeno diversi da null codicefiscalecalcolato = CalcolaCodiceFiscale.Make(this.Conn, R["forename"].ToString(), R["surname"].ToString(), (DateTime)R["birthdate"], idgeo.ToString(), R["gender"].ToString(), TipoGeo, out isValid, out errCF); if (cfNormal != codicefiscalecalcolato) { errmess = "Dati anagrafici errati!"; errfield = "cf"; if (cfNormal.Substring(0, 3) != codicefiscalecalcolato.Substring(0, 3)) { errmess += "\r\nCF non coerente con il cognome"; } if (cfNormal.Substring(3, 3) != codicefiscalecalcolato.Substring(3, 3)) { errmess += "\r\nCF non coerente con il nome"; } if (cfNormal.Substring(6, 2) != codicefiscalecalcolato.Substring(6, 2)) { errmess += "\r\nCF non coerente con l'anno di nascita"; } if (cfNormal.Substring(8, 1) != codicefiscalecalcolato.Substring(8, 1)) { errmess += "\r\nCF non coerente con il mese di nascita"; } int g1 = Convert.ToInt32(cfNormal.Substring(9, 2)); int g2 = Convert.ToInt32(codicefiscalecalcolato.Substring(9, 2)); string s1 = "M"; string s2 = "M"; if (g1 > 40) { s1 = "F"; g1 -= 40; } if (g2 > 40) { s2 = "F"; g2 -= 40; } if (g1 != g2) { errmess += "\r\nCF non coerente con il giorno di nascita"; } if (s1 != s2) { errmess += "\r\nCF non coerente con il sesso"; } if (cfNormal.Substring(11, 4) != codicefiscalecalcolato.Substring(11, 4)) { errmess += "\r\nCF non coerente con il comune o la nazione di nascita"; } return(false); } } else //E' un'azienda { if (R["title"] == DBNull.Value) { errmess = "Inserire la denominazione"; errfield = "title"; return(false); } if ((R["p_iva"] == DBNull.Value) && (R["cf"] == DBNull.Value)) { errmess = "Inserire la Partita IVA o il Codice Fiscale"; errfield = "p_iva"; return(false); } } if ((R["abi"] != DBNull.Value) && (R["abi"].ToString().Length < 5)) { errmess = "Il codice A.B.I. deve essere composto da 5 numeri"; errfield = "abi"; return(false); } if ((R["cab"] != DBNull.Value) && (R["cab"].ToString().Length < 5)) { errmess = "Il codice C.A.B. deve essere composto da 5 numeri"; errfield = "cab"; return(false); } if (CfgFn.GetNoNullInt32(R["paymethodcode"]) == 0) { errmess = "Deve essere scelta una modalità di pagamento"; errfield = "paymethodcode"; return(false); } return(true); }