예제 #1
0
        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);
            }
        }