Exemplo n.º 1
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (validarCampos())
            {
                    bool ok = true;

                    for (int i = 0; i < dgvArticulos.Rows.Count; i++)
                    {
                        dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.White;
                    }

                    total=0;

                    for (int i = 0; i < dgvArticulos.Rows.Count; i++)
                    {
                        string s1 = dgvArticulos.Rows[i].Cells["cantidad"].Value.ToString();//cantidad

                        int cantidad;

                        if (!String.IsNullOrEmpty(s1) && int.TryParse(s1, out cantidad) && cantidad>0)
                        {
                            listaArtxPack[i].CantidadPack = cantidad;
                        }
                        else
                        {
                            ok = false;
                            dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
                        }
                    }

                    if (ok)
                    {
                        pack.Nombre = this.txtNombre.Text;
                        pack.PrecioPack = float.Parse(this.txtPrecioPack.Text);
                        pack.FechaInicio = this.dtpFechaInicio.Value.Date;
                        pack.FechaFin = this.dtpFechaFin.Value.Date;
                        pack.CantidadPacks = (int)this.upDwNumPacks.Value;
                        pack.CantidadUtilizada = int.Parse(this.lblCantidadUtilizada.Text);
                        pack.CodigoPack = "0";

                        if (pack.FechaInicio.Value <= DateTime.Today && pack.FechaFin.Value >= DateTime.Today) pack.Estado = "Activo";
                        else pack.Estado = "Inactivo";

                        PackBL objpackBL = new PackBL();

                        objpackBL.Grabar(pack);

                        if (pack.CantidadUtilizada == 0)
                        {
                            //graba articulos participantes

                            foreach (ArticuloXPack artxpack in listaArtEliminados)
                                objArtxPackBL.Eliminar(artxpack);

                            for (int i = 0; i < dgvArticulos.Rows.Count; i++)// listaArtxPack.Count; i++)
                            {
                                listaArtxPack[i].Pack = pack;
                                listaArtxPack[i].CantidadPack = int.Parse(dgvArticulos.Rows[i].Cells["cantidad"].Value.ToString());
                                objArtxPackBL.Grabar(listaArtxPack[i]);
                            }

                            //graba categoria de clientes participantes

                            if (listaPackxCat != null)
                                foreach (PackXCategoriaCliente packxcat in listaPackxCat)
                                    objcatCliente.Eliminar(packxcat);

                            foreach (int index in chkClientes.CheckedIndices)
                            {
                                PackXCategoriaCliente packxCatxCliente = new PackXCategoriaCliente();
                                packxCatxCliente.Pack = pack;
                                packxCatxCliente.CategoriaCliente = categorias[index];
                                objcatCliente.Grabar(packxCatxCliente);
                            }
                        }

                        Utils.Utils.OK(Utils.Utils.REGISTRO_OK);
                        this.Close();
                    }

                    else
                    {
                        Utils.Utils.Error(null, "Las cantidades sombreadas no son válidas");
                    }
                }
        }
Exemplo n.º 2
0
        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            int cantidadDevolucion;
            DocumentoLineaBL objDocLineaBL = new DocumentoLineaBL();
            ArticuloXLocalBL objArtxLocal=new ArticuloXLocalBL();
            PackBL objPackBL=new PackBL();
            IList<DocumentoLinea> lineasNotaCredito=new List<DocumentoLinea>();
            List<NotaIngresoSalidaLinea> lineasNotaIngreso = new List<NotaIngresoSalidaLinea>();
            ArticuloXPackBL objArtxPack=new ArticuloXPackBL();
            bool crearDevolucion = false; //si al menos una de las cantidades devueltas>0 ,se procede a registrar la devolucion

            calcularDevolucion();

            for (int i = 0; i < dgvArticulos.Rows.Count; i++) //actualizando los docs lineas q son de articulos
            {
               cantidadDevolucion=Int32.Parse(dgvArticulos.Rows[i].Cells["CantidadDevolucion"].Value.ToString());

               if (cantidadDevolucion>0){

                   crearDevolucion = true;

                   //docLineaVenta
                   listaArticulos[i].CantidadDevuelta = listaArticulos[i].CantidadDevuelta + cantidadDevolucion;
                   objDocLineaBL.Grabar(listaArticulos[i]); //las lineas fueron actualizadas cada vez q se calculaban los montos de devolucion

                   //actualizamos la cantidad de articulos en EL LOCAL EN Q SE REALIZA LA DEVOLUCION
                   ArticuloXLocal artxlocal=objArtxLocal.findArticuloEnLocal(listaArticulos[i].ArticuloXLocal.Articulo.Id,empleado.Local.Id);
                   artxlocal.Cantidad=artxlocal.Cantidad+cantidadDevolucion;
                   objArtxLocal.Actualizar(artxlocal);

                   DocumentoLinea lineaNotaCredito=new DocumentoLinea();

                   lineaNotaCredito.Cantidad=cantidadDevolucion;
                   lineaNotaCredito.Impuesto=listaArticulos[i].Impuesto;
                   lineaNotaCredito.PrecioLinea=(float)(listaArticulos[i].PrecioLinea*cantidadDevolucion/listaArticulos[i].Cantidad);
                   lineaNotaCredito.ArticuloXLocal=listaArticulos[i].ArticuloXLocal;
                   lineaNotaCredito.CantidadDevuelta=0;
                   lineaNotaCredito.DescuentoXArticulo=listaArticulos[i].DescuentoXArticulo;

                   NotaIngresoSalidaLinea lineaNotaIngreso = new NotaIngresoSalidaLinea();
                   lineaNotaIngreso.Cantidad = cantidadDevolucion;
                   lineaNotaIngreso.ArticuloXLocal = artxlocal;

                   lineasNotaIngreso.Add(lineaNotaIngreso);
                   lineasNotaCredito.Add(lineaNotaCredito);
               }
            }

            for (int i = 0; i < dgvPacks.Rows.Count; i++)
            {
                cantidadDevolucion = Int32.Parse(dgvPacks.Rows[i].Cells["CantidadDev"].Value.ToString());

                if (cantidadDevolucion > 0)
                {
                    crearDevolucion = true;

                    //Pack
                    listaPacks[i].Pack.CantidadUtilizada = listaPacks[i].Pack.CantidadUtilizada - cantidadDevolucion;
                    objPackBL.Grabar(listaPacks[i].Pack);

                    //Doclinea Venta
                    listaPacks[i].CantidadDevuelta = listaPacks[i].CantidadDevuelta + cantidadDevolucion;
                    objDocLineaBL.Grabar(listaPacks[i]);

                    //ArticuloXLocal

                    IList<ArticuloXPack> articulosPack = objArtxPack.findArticulosXPack(listaPacks[i].Pack.Id);

                    foreach (ArticuloXPack artxpack in articulosPack)
                    {
                        ArticuloXLocal artxlocal = objArtxLocal.findArticuloEnLocal(artxpack.Articulo.Id, empleado.Local.Id);
                        artxlocal.Cantidad = artxlocal.Cantidad + artxpack.CantidadPack * cantidadDevolucion;
                        objArtxLocal.Actualizar(artxlocal);

                        //creamos una linea de ingreso para el producto del pack
                        NotaIngresoSalidaLinea lineaNotaIngreso = new NotaIngresoSalidaLinea();
                        lineaNotaIngreso.Cantidad = cantidadDevolucion*artxpack.CantidadPack;
                        lineaNotaIngreso.ArticuloXLocal = artxlocal;

                        lineasNotaIngreso.Add(lineaNotaIngreso);
                    }

                    DocumentoLinea lineaNotaCredito = new DocumentoLinea();

                    lineaNotaCredito.Cantidad = cantidadDevolucion;
                    lineaNotaCredito.Impuesto = listaPacks[i].Impuesto;
                    lineaNotaCredito.PrecioLinea = (float)(listaPacks[i].Pack.PrecioPack*cantidadDevolucion);
                    lineaNotaCredito.CantidadDevuelta = 0;
                    lineaNotaCredito.Pack = listaPacks[i].Pack;

                    lineasNotaCredito.Add(lineaNotaCredito);
                }
            }

            //creamos el DOCUMENTO

            if (crearDevolucion)
            {

                Documento documento = new Documento();
                documento.FechaEmision = DateTime.Today;
                documento.Estado = "Registrado";
                documento.Total = totalDevolucion;
                documento.Caja = new RegistroCajaBL().DameCaja(empleado);
                documento.NroDocumentoVenta = Int32.Parse(empleado.Local.Id + "" + empleado.Id);
                documento.Cliente = documentoVentaActual.Cliente;
                documento.FechaAnulacion = DateTime.Today;

                //creamos la NOTA DE CREDITO

                NotaCredito notaCred = new NotaCredito();
                notaCred.MontoDevolucion = totalDevolucion;
                notaCred.Motivo = richTxtMotivo.Text;
                notaCred.DocVenta = new DocVentaBL().findById(documentoVentaActual.Id.ToString());

                new NotaCreditoBL().Devolver(documento, notaCred, lineasNotaCredito, lineasNotaIngreso);
                Utils.Utils.OK(Utils.Utils.REGISTRO_OK);
            }

            else

                Utils.Utils.Error(null,"No se puede registrar la Nota de Crédito porque ningún producto fue devuelto");
        }
Exemplo n.º 3
0
        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            int cantidadDevolucion;
            DocumentoLineaBL objDocLineaBL = new DocumentoLineaBL();
            ArticuloXLocalBL objArtxLocal=new ArticuloXLocalBL();
            PackBL objPackBL=new PackBL();
            IList<DocumentoLinea> lineasNotaCredito=new List<DocumentoLinea>();
            List<NotaIngresoSalidaLinea> lineasNotaIngreso = new List<NotaIngresoSalidaLinea>();
            ArticuloXPackBL objArtxPack=new ArticuloXPackBL();
            bool crearDevolucion = false; //si al menos una de las cantidades devueltas>0 ,se procede a registrar la devolucion

            calcularDevolucion();

            if (dgvArticulos.Rows.Count == 0 && dgvPacks.Rows.Count == 0)
            {
                Utils.Utils.Error(null, "No se ha ingresado un documento de venta");
                return;
            }

            if (empleado.Local.Estado=="Inactivo"){
                Utils.Utils.Error(null, "No se puede registrar la devolucion ya que el local se encuentra inactivo");
                return;
            }

            for (int i = 0; i < dgvArticulos.Rows.Count; i++)
            {
                dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }

            for (int i = 0; i < dgvPacks.Rows.Count; i++)
            {
                dgvPacks.Rows[i].DefaultCellStyle.BackColor = Color.White;
            }

            for (int i = 0; i < dgvArticulos.Rows.Count; i++) //actualizando los docs lineas q son de articulos
            {
               cantidadDevolucion=Int32.Parse(dgvArticulos.Rows[i].Cells["CantidadDevolucion"].Value.ToString());

               if (cantidadDevolucion > 0)
               {
                   crearDevolucion = true;

                   //docLineaVenta
                   listaArticulos[i].CantidadDevuelta = listaArticulos[i].CantidadDevuelta + cantidadDevolucion;
                   objDocLineaBL.Grabar(listaArticulos[i]); //las lineas fueron actualizadas cada vez q se calculaban los montos de devolucion

                   //actualizamos la cantidad de articulos en EL LOCAL EN Q SE REALIZA LA DEVOLUCION
                   ArticuloXLocal artxlocal = objArtxLocal.findArticuloEnLocal(listaArticulos[i].ArticuloXLocal.Articulo.Id, empleado.Local.Id);
                   artxlocal.Cantidad = artxlocal.Cantidad + cantidadDevolucion;
                   objArtxLocal.Actualizar(artxlocal);

                   DocumentoLinea lineaNotaCredito = new DocumentoLinea();

                   lineaNotaCredito.Cantidad = cantidadDevolucion;
                   lineaNotaCredito.Impuesto = listaArticulos[i].Impuesto;
                   lineaNotaCredito.PrecioLinea = (float)(listaArticulos[i].PrecioLinea * cantidadDevolucion / listaArticulos[i].Cantidad);
                   lineaNotaCredito.ArticuloXLocal = listaArticulos[i].ArticuloXLocal;
                   lineaNotaCredito.CantidadDevuelta = 0;
                   lineaNotaCredito.DescuentoXArticulo = listaArticulos[i].DescuentoXArticulo;

                   NotaIngresoSalidaLinea lineaNotaIngreso = new NotaIngresoSalidaLinea();
                   lineaNotaIngreso.Cantidad = cantidadDevolucion;
                   lineaNotaIngreso.ArticuloXLocal = artxlocal;

                   lineasNotaIngreso.Add(lineaNotaIngreso);
                   lineasNotaCredito.Add(lineaNotaCredito);
               }
               else
               {
                   dgvArticulos.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;
               }
            }

            for (int i = 0; i < dgvPacks.Rows.Count; i++)
            {
                cantidadDevolucion = Int32.Parse(dgvPacks.Rows[i].Cells["CantidadDev"].Value.ToString());

                if (cantidadDevolucion > 0)
                {
                    crearDevolucion = true;

                    //Pack
                    listaPacks[i].Pack.CantidadUtilizada = listaPacks[i].Pack.CantidadUtilizada - cantidadDevolucion;
                    objPackBL.Grabar(listaPacks[i].Pack);

                    //Doclinea Venta
                    listaPacks[i].CantidadDevuelta = listaPacks[i].CantidadDevuelta + cantidadDevolucion;
                    objDocLineaBL.Grabar(listaPacks[i]);

                    //ArticuloXLocal

                    IList<ArticuloXPack> articulosPack = objArtxPack.findArticulosXPack(listaPacks[i].Pack.Id);

                    foreach (ArticuloXPack artxpack in articulosPack)
                    {
                        ArticuloXLocal artxlocal = objArtxLocal.findArticuloEnLocal(artxpack.Articulo.Id, empleado.Local.Id);
                        artxlocal.Cantidad = artxlocal.Cantidad + artxpack.CantidadPack * cantidadDevolucion;
                        objArtxLocal.Actualizar(artxlocal);

                        //creamos una linea de ingreso para cada producto del pack
                        NotaIngresoSalidaLinea lineaNotaIngreso = new NotaIngresoSalidaLinea();
                        lineaNotaIngreso.Cantidad = cantidadDevolucion*artxpack.CantidadPack;
                        lineaNotaIngreso.ArticuloXLocal = artxlocal;

                        lineasNotaIngreso.Add(lineaNotaIngreso);
                    }

                    DocumentoLinea lineaNotaCredito = new DocumentoLinea();

                    lineaNotaCredito.Cantidad = cantidadDevolucion;
                    lineaNotaCredito.Impuesto = listaPacks[i].Impuesto;
                    lineaNotaCredito.PrecioLinea = (float)(listaPacks[i].Pack.PrecioPack*cantidadDevolucion);
                    lineaNotaCredito.CantidadDevuelta = 0;
                    lineaNotaCredito.Pack = listaPacks[i].Pack;

                    lineasNotaCredito.Add(lineaNotaCredito);
                }

                else
                {
                    dgvPacks.Rows[i].DefaultCellStyle.BackColor = Color.RosyBrown;

                }
            }

            //creamos el DOCUMENTO

            if (crearDevolucion)
            {

                Documento documento = new Documento();
                documento.FechaEmision = DateTime.Today;
                documento.FechaAnulacion = null;
                documento.TipoDocumento = "NotaCredito";
                documento.Estado = "Registrado";
                documento.Total = totalDevolucion;
                documento.Subtotal = subtotal;
                documento.Caja = new RegistroCajaBL().DameCaja(empleado);
               // documento.NroDocumentoVenta = Int32.Parse(empleado.Local.Id + "" +1710);
                documento.Cliente = documentoVentaActual.Cliente;

                //creamos la NOTA DE CREDITO

                NotaCredito notaCred = new NotaCredito();
                notaCred.MontoDevolucion = totalDevolucion;
                notaCred.Motivo = richTxtMotivo.Text;
                notaCred.DocVenta = new DocVentaBL().findById(documentoVentaActual.Id.ToString());

                new NotaCreditoBL().Devolver(documento, notaCred, lineasNotaCredito, lineasNotaIngreso);

                Utils.Utils.OK(Utils.Utils.REGISTRO_OK);

                if (Utils.Utils.ContinuarOperacion("Desea exportar el documento?"))
                {
                    NotaCreditoDatos dsNotaCredito = new NotaCreditoBL().exportarDocumento(documento.NroDocumentoVenta.ToString());//, notaCred, lineasNotaCredito);

                    new frmDocumentoNotaCredito(dsNotaCredito).ShowDialog(this);
                }

                limpiarCampos();
            }

            else

                Utils.Utils.Error(null,"Las cantidades sombreadas no son válidas");
        }