コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }