private void butAgregar_Click(object sender, System.EventArgs e) { try { int cantServicios = Utiles.Validaciones.obtieneEntero(this.txtCantServicios.Text); string codigob = txtCodigoBarras.Text; ICodigoBarras cb = CodigoBarrasFactory.GetCodigoBarras(); //para que no ingresen un codigo de barra que tenga un concepto FQ 18/01/2016 if (cb.validaCBCOncepto(codigob) > 0) { throw new Exception("El código de barras " + codigob + "no es válido para esta sección ya que está vinculado a un Concepto Facturable. Debe ingresarlo en la sección de Conceptos Facturables"); } bool valido = false; int retorno = 0; string nroCodigoBarras = string.Empty; if (!int.TryParse(txtCodigoBarras.Text.Substring(0, 1), out retorno)) { for (int i = 1; i < txtCodigoBarras.Text.Length; i++) { if (txtCodigoBarras.Text.Substring(i, 1) == "0") { retorno = i; } else { ++retorno; break; } } nroCodigoBarras = txtCodigoBarras.Text.Substring(0, 1) + txtCodigoBarras.Text.Substring(retorno); } else { nroCodigoBarras = txtCodigoBarras.Text; } ICodigoBarras codigoBarra = CodigoBarrasFactory.GetCodigoBarras(); codigoBarra.NroCodigoBarras = nroCodigoBarras; if (codigoBarra.Consultar()) { // valido que el código de barras ingresado esté prevendido o asignado if (codigoBarra.EstadoCodigoBarrasID == (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.AsignadoAgencia) { //...si está asignado, valido que esté asignado a la agencia conectada if (codigoBarra.AgenciaID == Utiles.Validaciones.obtieneEntero(this.txtAgenciaID.Text)) { valido = true; } else { valido = false; } } else if (codigoBarra.EstadoCodigoBarrasID == (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.Prevendido) { valido = true; } else if (codigoBarra.EstadoCodigoBarrasID == (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.AsignadoCliente) { if (codigoBarra.ClienteID == Utiles.Validaciones.obtieneEntero(this.txtClienteID.Text)) { valido = true; } else { valido = false; } } bool esUnidadVenta = false; if (valido) { string descripcion = ""; int tiempoEntregaID = 0; if (codigoBarra.UnidadVentaID != 0) { IUnidadVenta unidadVenta = UnidadVentaFactory.GetUnidadVenta(); unidadVenta.UnidadVentaID = codigoBarra.UnidadVentaID; unidadVenta.Consultar(); descripcion = unidadVenta.UnidadVentaDescrip; tiempoEntregaID = unidadVenta.TiempoEntrega.TiempoEntregaID; codigoBarra.ProductoID = unidadVenta.Producto.ProductoID; esUnidadVenta = true; string servicios = ""; string serviciosDescrip = ""; //obtengo todos los servicios id de la unidad de venta for (int i = 0; i < unidadVenta.ServiciosCol.getCount(); i++) { servicios += ((IServicio)unidadVenta.ServiciosCol.GetServicio(i)).ServicioID.ToString(); serviciosDescrip += ((IServicio)unidadVenta.ServiciosCol.GetServicio(i)).ServicioDescrip; if (i < unidadVenta.ServiciosCol.getCount() - 1) { servicios += ";"; serviciosDescrip += ","; } } this.txtServicios.Text = servicios; this.txtServiciosDescrip.Text = serviciosDescrip; // voy acumulando los ServicioID de todos los codigos asociados a servicios que se // vayan ingresando string servicioTemp = this.txtServicioIDSel.Text; if (servicioTemp.Length <= 0) { servicioTemp += servicios; } else { if (servicios.Length > 0) { servicioTemp += "," + servicios; } } this.txtServicioIDSel.Text = servicioTemp; if (codigoBarra.EstadoCodigoBarrasID == (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.Prevendido) { this.txtValorDeclarado.Text = codigoBarra.ObtieneValorDeclarado().ToString(); this.txtImporteCR.Text = codigoBarra.ObtieneImporteCR().ToString(); } } else if (codigoBarra.ServicioID != 0) { IServicio servicio = ServicioFactory.GetServicio(); servicio.ServicioID = codigoBarra.ServicioID; servicio.Consultar(); descripcion = servicio.ServicioDescrip; esUnidadVenta = false; // voy acumulando los ServicioID de todos los codigos asociados a servicios que se // vayan ingresando string servicioTemp = this.txtServicioIDSel.Text; if (servicioTemp.Length <= 0) { servicioTemp += servicio.ServicioID.ToString(); } else { servicioTemp += "," + servicio.ServicioID.ToString(); } this.txtServicioIDSel.Text = servicioTemp; } // controlo que el codigo de barras seleccionado no haya sido agregado antes DsCodigoBarrasGuia.DatosRow[] dr = (DsCodigoBarrasGuia.DatosRow[])dsCodigoBarras.Datos.Select("CodigoBarras LIKE '" + this.txtCodigoBarras.Text + "'"); if (dr.Length <= 0) { if (esUnidadVenta) { // si es unidad de venta lo que se agrega, controlo que haya sólo una dr = (DsCodigoBarrasGuia.DatosRow[])dsCodigoBarras.Datos.Select("UnidadVentaID <> 0"); if (dr.Length > 0) { throw new Exception("Errores.Invalidos.YaExisteCodigoAsigandoUV"); } } else { // controlo que no haya otro codigo de barras para el mismo servicio dr = (DsCodigoBarrasGuia.DatosRow[])dsCodigoBarras.Datos.Select("ServicioID = " + codigoBarra.ServicioID); if (dr.Length > 0) { throw new Exception("Errores.Invalidos.YaExisteCodigoAsigandoServicio"); } else { cantServicios = cantServicios + 1; } } bool prevendido = false; if (codigoBarra.EstadoCodigoBarrasID == (int)NegociosSisPackInterface.SisPack.EstadoCodigoBarras.Prevendido) { this.txtPrevendido.Text = "1"; prevendido = true; } else { this.txtPrevendido.Text = "0"; prevendido = false; } dsCodigoBarras.Datos.AddDatosRow(codigoBarra.NroCodigoBarras, descripcion, codigoBarra.ProductoID, tiempoEntregaID, codigoBarra.ServicioID, codigoBarra.ModalidadEntregaID, codigoBarra.UnidadVentaID, prevendido); } else { throw new Exception("Errores.Invalidos.CodigoBarrasIngresado"); } SisPackController.AdministrarGrillas.ConfigurarChica(dtgCodigos, "CodigoBarras"); Session["DsCodigoBarras"] = (DsCodigoBarrasGuia)dsCodigoBarras; this.dtgCodigos.DataSource = dsCodigoBarras; this.dtgCodigos.CurrentPageIndex = 0; this.dtgCodigos.DataBind(); this.txtCodigoBarras.Text = ""; MuestraOcultaBotonAceptar(); this.txtCantServicios.Text = cantServicios.ToString(); } else { throw new Exception("Errores.Invalidos.CodigoBarras"); } } else { throw new Exception("Errores.Invalidos.CodigoBarras"); } this.butAceptar.Enabled = true; } catch (Exception ex) { ManejaErrores(ex); } }