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()); }
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(); }