コード例 #1
0
        public override bool IsValid(DataRow R, out string errmess, out string errfield)
        {
            if (R["idestimkind"].ToString() == "")
            {
                errmess  = "Il codice tipo contratto è obbligatorio";
                errfield = "idestimkind";
                return(false);
            }


            if ((R["doc"].ToString() == "") && (R["cigcode"].ToString() != ""))
            {
                errmess  = "Il documento collegato in presenza di Codice CIG è obbligatorio";
                errfield = "doc";
                return(false);
            }


            object multireg = Conn.DO_READ_VALUE("estimatekind", QHS.CmpEq("idestimkind", R["idestimkind"]), "multireg");

            if (multireg == null || multireg == DBNull.Value)
            {
                multireg = "N";
            }

            if ((CfgFn.GetNoNullInt32(R["idreg"]) == 0) && (multireg.ToString() != "S"))
            {
                errmess  = "Il 'Cliente' è obbligatorio";
                errfield = "idreg";
                return(false);
            }

            if (CfgFn.GetNoNullInt32(R["idcurrency"]) == 0)
            {
                errmess  = "Il campo 'Valuta' è obbligatorio";
                errfield = "idcurrency";
                return(false);
            }
            if ((R["cigcode"].ToString() != "") && (R["cigcode"].ToString().Length != 10))
            {
                errmess  = "Il CIG deve avere lunghezza 10.";
                errfield = "cigcode";
                return(false);
            }
            if ((R["cigcode"].ToString() != "") && !CfgFn.IsValidString(R["cigcode"].ToString()))
            {
                errmess  = "Il CIG contiene caratteri non validi.I caratteri ammessi sono solo numeri e lettere";
                errfield = "cigcode";
                return(false);
            }
            if ((R.RowState == DataRowState.Added) && (!RowChange.IsAutoIncrement(R.Table.Columns["nestim"])))
            {
                int NPRESENT = Conn.RUN_SELECT_COUNT("estimate", "(idestimkind=" + QueryCreator.quotedstrvalue(R["idestimkind"], true) + ")AND" +
                                                     "(yestim=" + QueryCreator.quotedstrvalue(R["yestim"], true) + ")AND" +
                                                     "(nestim=" + QueryCreator.quotedstrvalue(R["nestim"], true) + ")", true);
                if (NPRESENT > 0)
                {
                    errmess  = "Esiste già un Contratto attivo con lo stesso numero.";
                    errfield = "nestim";
                    return(false);
                }
            }

            if (R.Table.DataSet.Tables.Contains("estimatedetail"))
            {
                DataTable md = R.Table.DataSet.Tables["estimatedetail"];
                if (md.Columns.Contains("idepacc"))
                {
                    if (R["active"].ToString() != "S")
                    {
                        if (md.Select(QHC.IsNotNull("idepacc")).Length > 0)
                        {
                            errmess =
                                "Operazione non consentita in presenza di accertamenti di budget.\r\n" +
                                "Occorre procedere con l'annullamento dei dettagli del contratto con apposizione della data di annullamento.";
                            errfield = "active";
                            return(false);
                        }
                    }
                }
            }

            if (!base.IsValid(R, out errmess, out errfield))
            {
                return(false);
            }
            return(true);
        }