예제 #1
0
        public override Lfx.Types.OperationResult ValidarControl()
        {
            if (EntradaTipo.ValueInt <= 0)
            {
                return(new Lfx.Types.FailureOperationResult("Seleccione el tipo de cliente"));
            }

            Lbl.Personas.Persona Cliente = this.Elemento as Lbl.Personas.Persona;

            if (EntradaNombreFantasia.Text.Length > 0 && EntradaRazonSocial.Text.Length == 0)
            {
                return(new Lfx.Types.FailureOperationResult("Escriba la razón social"));
            }

            if (EntradaRazonSocial.Text.Length == 0 && EntradaNombre.Text.Length == 0 && EntradaApellido.Text.Length == 0)
            {
                return(new Lfx.Types.FailureOperationResult("Escriba el nombre y el apellido o la razón social"));
            }
            else
            {
                //Busco un cliente con datos similares
                Lfx.Data.Row ClienteDup = null;
                string       Sql        = @"SELECT id_persona, nombre_visible, domicilio, telefono, cuit, email FROM personas WHERE (";
                if (this.Text.Length > 0)
                {
                    Sql += @"nombre_visible LIKE '%" + this.Connection.EscapeString(this.Text.Replace("%", "").Replace("_", "")) + @"%'";
                }
                if (EntradaDomicilio.Text.Length > 0)
                {
                    Sql += @" OR domicilio LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaDomicilio.Text) + @"%'";
                }

                if (EntradaNumDoc.Text.Length > 0)
                {
                    Sql += @" OR REPLACE(num_doc, '.', '') LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaNumDoc.Text.Replace(".", "")) + @"%'";
                }

                if (EntradaTelefono.Text.Length > 0)
                {
                    string         Telefono  = EntradaTelefono.Text.Replace(" -", "").Replace("- ", "").Replace("/", " ").Replace(",", " ").Replace(".", " ").Replace("  ", " ").Replace("%", "").Replace("_", "");
                    IList <string> Telefonos = Lfx.Types.Strings.SplitDelimitedString(Telefono, ";");
                    if (Telefonos != null && Telefonos.Count > 0)
                    {
                        foreach (string Tel in Telefonos)
                        {
                            if (Tel != null && Tel.Length > 4)
                            {
                                Sql += @" OR telefono LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(Tel.Replace("%", "").Replace("_", "")) + @"%'";
                            }
                        }
                    }
                }
                if (EntradaEmail.Text.Length > 0)
                {
                    Sql += @" OR email LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaEmail.Text.Replace("%", "").Replace("_", "")) + @"%'";
                }
                if (EntradaClaveTributaria.Text.Length > 0)
                {
                    Sql += @" OR cuit='" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaClaveTributaria.Text.Replace("%", "").Replace("_", "")) + @"'";
                }
                Sql += @") AND id_persona<>" + this.Elemento.Id.ToString();

                ClienteDup = this.Connection.FirstRowFromSelect(Sql);
                if (ClienteDup != null)
                {
                    if (Cliente != null && Cliente.Existe == false)
                    {
                        AltaDuplicada FormAltaDuplicada = new AltaDuplicada();
                        ListViewItem  itm;
                        itm = FormAltaDuplicada.ListaComparacion.Items.Add("Nombre");
                        itm.SubItems.Add(ClienteDup["nombre_visible"].ToString());
                        itm.SubItems.Add(this.Text);
                        itm = FormAltaDuplicada.ListaComparacion.Items.Add("Domicilio");
                        itm.SubItems.Add(ClienteDup["domicilio"].ToString());
                        itm.SubItems.Add(EntradaDomicilio.Text);
                        itm = FormAltaDuplicada.ListaComparacion.Items.Add("Teléfono");
                        itm.SubItems.Add(ClienteDup["telefono"].ToString());
                        itm.SubItems.Add(EntradaTelefono.Text);
                        itm = FormAltaDuplicada.ListaComparacion.Items.Add(Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre);
                        if (ClienteDup["cuit"] != null)
                        {
                            itm.SubItems.Add(ClienteDup["cuit"].ToString());
                        }
                        else
                        {
                            itm.SubItems.Add("");
                        }
                        itm.SubItems.Add(EntradaClaveTributaria.Text);
                        itm = FormAltaDuplicada.ListaComparacion.Items.Add("E-mail");
                        if (ClienteDup["email"] != null)
                        {
                            itm.SubItems.Add(ClienteDup["email"].ToString());
                        }
                        else
                        {
                            itm.SubItems.Add("");
                        }
                        itm.SubItems.Add(EntradaEmail.Text);

                        switch (FormAltaDuplicada.ShowDialog())
                        {
                        case DialogResult.Yes:
                            //Crear uno nuevo
                            return(new Lfx.Types.SuccessOperationResult());

                        case DialogResult.No:
                            //Actualizar
                            this.Elemento = new Lbl.Personas.Persona(this.Elemento.Connection, System.Convert.ToInt32(ClienteDup["id_persona"]));
                            return(new Lfx.Types.SuccessOperationResult());

                        case DialogResult.Cancel:
                            //Volver a la edición
                            return(new Lfx.Types.CancelOperationResult());
                        }
                    }
                }
            }

            switch (Lbl.Sys.Config.Pais.ClaveBancaria.Nombre)
            {
            case "CBU":
                if (EntradaClaveBancaria.Text.Length > 0 && Lbl.Bancos.Claves.Cbu.EsValido(EntradaClaveBancaria.Text) == false)
                {
                    return(new Lfx.Types.FailureOperationResult("La CBU es incorrecta."));
                }
                break;
            }


            if (Cliente.Existe == false && Cliente.Grupo != null && Cliente.Grupo.Id == 2 && (EntradaClaveBancaria.Text.Length > 0 || EntradaNumeroCuenta.Text.Length > 0) && EntradaTipoCuenta.TextKey == "0")
            {
                return(new Lfx.Types.FailureOperationResult("Por favor seleccione el tipo de cuenta bancaria."));
            }


            if (Lbl.Sys.Config.Pais.ClavePersonasJuridicas != null)
            {
                switch (Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre)
                {
                case "CUIT":
                    if (EntradaClaveTributaria.Text.Length > 0)
                    {
                        if (EntradaSituacion.ValueInt == 1)
                        {
                            return(new Lfx.Types.FailureOperationResult(@"Un Cliente con CUIT no debe estar en Situación de ""Consumidor Final""."));
                        }
                        if (System.Text.RegularExpressions.Regex.IsMatch(EntradaClaveTributaria.Text, @"^\d{11}$"))
                        {
                            EntradaClaveTributaria.Text = EntradaClaveTributaria.Text.Substring(0, 2) + "-" + EntradaClaveTributaria.Text.Substring(2, 8) + "-" + EntradaClaveTributaria.Text.Substring(10, 1);
                        }

                        //Agrego los guiones si no los tiene
                        if (EntradaClaveTributaria.Text.Length == 11)
                        {
                            EntradaClaveTributaria.Text = EntradaClaveTributaria.Text.Substring(0, 2) + "-" + EntradaClaveTributaria.Text.Substring(2, 8) + "-" + EntradaClaveTributaria.Text.Substring(10, 1);
                        }

                        if (Lbl.Personas.Claves.Cuit.EsValido(EntradaClaveTributaria.Text) == false)
                        {
                            return(new Lfx.Types.FailureOperationResult("La CUIT no es correcta." + Environment.NewLine + "El sistema le permite dejar la CUIT en blanco, pero no aceptará una incorrecta."));
                        }
                    }
                    break;
                }
            }

            if (EntradaClaveTributaria.Text.Length > 0)
            {
                Lfx.Data.Row RowPersMismaClave = this.Connection.FirstRowFromSelect("SELECT id_persona FROM personas WHERE cuit='" + EntradaClaveTributaria.Text + "' AND id_persona<>" + this.Elemento.Id.ToString());
                if (RowPersMismaClave != null)
                {
                    if (Cliente.Existe == false || System.Convert.ToInt32(RowPersMismaClave["id_persona"]) != this.Elemento.Id)
                    {
                        Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Ya existe una empresa o persona con esa clave tributaria (" + Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre + ") en la base de datos. ¿Desea continuar y crear una nueva de todos modos?", "Clave tributaria duplicada");
                        Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                        if (Pregunta.ShowDialog() != DialogResult.OK)
                        {
                            return(new Lfx.Types.FailureOperationResult("Cambie la Clave tributaria (" + Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre + ") para antes de continuar."));
                        }
                    }
                }
            }

            return(new Lfx.Types.SuccessOperationResult());
        }
예제 #2
0
                public override Lfx.Types.OperationResult ValidarControl()
                {
                        if (EntradaTipo.ValueInt <= 0)
                                return new Lfx.Types.FailureOperationResult("Seleccione el tipo de cliente");

                        Lbl.Personas.Persona Cliente = this.Elemento as Lbl.Personas.Persona;

                        if (EntradaRazonSocial.Text.Length == 0 && EntradaNombre.Text.Length == 0 && EntradaApellido.Text.Length == 0) {
                                return new Lfx.Types.FailureOperationResult("Escriba el nombre y el apellido o la razón social");
                        } else {
                                //Busco un cliente con datos similares
                                Lfx.Data.Row ClienteDup = null;
                                string Sql = @"SELECT id_persona, nombre_visible, domicilio, telefono, cuit, email FROM personas WHERE (";
                                if (this.Text.Length > 0)
                                        Sql += @"nombre_visible LIKE '%" + this.Connection.EscapeString(this.Text.Replace("%", "").Replace("_", "")) + @"%'";
                                if (EntradaDomicilio.Text.Length > 0)
                                        Sql += @" OR domicilio LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaDomicilio.Text) + @"%'";

                                if (EntradaNumDoc.Text.Length > 0)
                                        Sql += @" OR REPLACE(num_doc, '.', '') LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaNumDoc.Text.Replace(".", "")) + @"%'";

                                if (EntradaTelefono.Text.Length > 0) {
                                        string Telefono = EntradaTelefono.Text.Replace(" -", "").Replace("- ", "").Replace("/", " ").Replace(",", " ").Replace(".", " ").Replace("  ", " ").Replace("%", "").Replace("_", "");
                                        IList<string> Telefonos = Lfx.Types.Strings.SplitDelimitedString(Telefono, ";");
                                        if (Telefonos != null && Telefonos.Count > 0) {
                                                foreach (string Tel in Telefonos) {
                                                        if (Tel != null && Tel.Length > 4)
                                                                Sql += @" OR telefono LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(Tel.Replace("%", "").Replace("_", "")) + @"%'";
                                                }
                                        }
                                }
                                if (EntradaEmail.Text.Length > 0)
                                        Sql += @" OR email LIKE '%" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaEmail.Text.Replace("%", "").Replace("_", "")) + @"%'";
                                if (EntradaClaveTributaria.Text.Length > 0)
                                        Sql += @" OR cuit='" + Lfx.Workspace.Master.MasterConnection.EscapeString(EntradaClaveTributaria.Text.Replace("%", "").Replace("_", "")) + @"'";
                                Sql += @") AND id_persona<>" + this.Elemento.Id.ToString();

                                ClienteDup = this.Connection.FirstRowFromSelect(Sql);
                                if (ClienteDup != null) {
                                        if (Cliente != null && Cliente.Existe == false) {
                                                AltaDuplicada FormAltaDuplicada = new AltaDuplicada();
                                                ListViewItem itm;
                                                itm = FormAltaDuplicada.ListaComparacion.Items.Add("Nombre");
                                                itm.SubItems.Add(ClienteDup["nombre_visible"].ToString());
                                                itm.SubItems.Add(this.Text);
                                                itm = FormAltaDuplicada.ListaComparacion.Items.Add("Domicilio");
                                                itm.SubItems.Add(ClienteDup["domicilio"].ToString());
                                                itm.SubItems.Add(EntradaDomicilio.Text);
                                                itm = FormAltaDuplicada.ListaComparacion.Items.Add("Teléfono");
                                                itm.SubItems.Add(ClienteDup["telefono"].ToString());
                                                itm.SubItems.Add(EntradaTelefono.Text);
                                                itm = FormAltaDuplicada.ListaComparacion.Items.Add(Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre);
                                                if (ClienteDup["cuit"] != null)
                                                        itm.SubItems.Add(ClienteDup["cuit"].ToString());
                                                else
                                                        itm.SubItems.Add("");
                                                itm.SubItems.Add(EntradaClaveTributaria.Text);
                                                itm = FormAltaDuplicada.ListaComparacion.Items.Add("E-mail");
                                                itm.SubItems.Add(ClienteDup["email"].ToString());
                                                itm.SubItems.Add(EntradaEmail.Text);

                                                switch (FormAltaDuplicada.ShowDialog()) {
                                                        case DialogResult.Yes:
                                                                //Crear uno nuevo
                                                                return new Lfx.Types.SuccessOperationResult();
                                                        case DialogResult.No:
                                                                //Actualizar
                                                                this.Elemento = new Lbl.Personas.Persona(this.Elemento.Connection, System.Convert.ToInt32(ClienteDup["id_persona"]));
                                                                return new Lfx.Types.SuccessOperationResult();
                                                        case DialogResult.Cancel:
                                                                //Volver a la edición
                                                                return new Lfx.Types.OperationResult(false);
                                                }
                                        }
                                }
                        }

                        switch (Lbl.Sys.Config.Pais.ClaveBancaria.Nombre) {
                                case "CBU":
                                        if (EntradaClaveBancaria.Text.Length > 0 && Lbl.Bancos.Claves.Cbu.EsValido(EntradaClaveBancaria.Text) == false) {
                                                return new Lfx.Types.FailureOperationResult("La CBU es incorrecta.");
                                        }
                                        break;
                        }


                        if (Cliente.Existe == false && Cliente.Grupo != null && Cliente.Grupo.Id == 2 && (EntradaClaveBancaria.Text.Length > 0 || EntradaNumeroCuenta.Text.Length > 0) && EntradaTipoCuenta.TextKey == "0")
                        {
                                return new Lfx.Types.FailureOperationResult("Por favor seleccione el tipo de cuenta bancaria.");
                        }


                        if (Lbl.Sys.Config.Pais.ClavePersonasJuridicas != null) {
                                switch (Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre) {
                                        case "CUIT":
                                                if (EntradaClaveTributaria.Text.Length > 0) {
                                                        if (EntradaSituacion.ValueInt == 1) {
                                                                return new Lfx.Types.FailureOperationResult(@"Un Cliente con CUIT no debe estar en Situación de ""Consumidor Final"".");
                                                        }
                                                        if (System.Text.RegularExpressions.Regex.IsMatch(EntradaClaveTributaria.Text, @"^\d{11}$")) {
                                                                EntradaClaveTributaria.Text = EntradaClaveTributaria.Text.Substring(0, 2) + "-" + EntradaClaveTributaria.Text.Substring(2, 8) + "-" + EntradaClaveTributaria.Text.Substring(10, 1);
                                                        }

                                                        //Agrego los guiones si no los tiene
                                                        if (EntradaClaveTributaria.Text.Length == 11)
                                                                EntradaClaveTributaria.Text = EntradaClaveTributaria.Text.Substring(0, 2) + "-" + EntradaClaveTributaria.Text.Substring(2, 8) + "-" + EntradaClaveTributaria.Text.Substring(10, 1);

                                                        if (Lbl.Personas.Claves.Cuit.EsValido(EntradaClaveTributaria.Text) == false) {
                                                                return new Lfx.Types.FailureOperationResult("La CUIT no es correcta." + Environment.NewLine + "El sistema le permite dejar la CUIT en blanco, pero no aceptará una incorrecta.");
                                                        }
                                                }
                                                break;
                                }
                        }

                        if (EntradaClaveTributaria.Text.Length > 0) {
                                Lfx.Data.Row RowPersMismaClave = this.Connection.FirstRowFromSelect("SELECT id_persona FROM personas WHERE cuit='" + EntradaClaveTributaria.Text + "' AND id_persona<>" + this.Elemento.Id.ToString());
                                if (RowPersMismaClave != null) {
                                        if (Cliente.Existe == false || System.Convert.ToInt32(RowPersMismaClave["id_persona"]) != this.Elemento.Id) {
                                                Lui.Forms.YesNoDialog Pregunta = new Lui.Forms.YesNoDialog("Ya existe una empresa o persona con esa clave tributaria (" + Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre + ") en la base de datos. ¿Desea continuar y crear una nueva de todos modos?", "Clave tributaria duplicada");
                                                Pregunta.DialogButtons = Lui.Forms.DialogButtons.YesNo;
                                                if (Pregunta.ShowDialog() != DialogResult.OK) {
                                                        return new Lfx.Types.FailureOperationResult("Cambie la Clave tributaria (" + Lbl.Sys.Config.Pais.ClavePersonasJuridicas.Nombre + ") para antes de continuar.");
                                                }
                                        }
                                }
                        }

                        return new Lfx.Types.SuccessOperationResult();
                }