Ejemplo n.º 1
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (dgvProductos.RowCount == 0)
            {
                if (txtNroDocumento.Text.Equals(""))
                    Utils.Utils.Mensaje("Ingrese el documento asociado a la entrada de productos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else
                    Utils.Utils.Mensaje("Cargue los datos del documento ingresado", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            /* variables para generar la incidencia */
            bool hayIncidencia = false;
            string descripcionIncidencia = "";
            int cantidadArticulosDiferentes = 0;
            int cantidadDeltaTotal = 0;

            bool ok= true;
            /* Grabo movimiento */
            BE.Movimiento movEntrada = new BE.Movimiento();
            movEntrada.Local = this.local;
            movEntrada.Fecha = System.DateTime.Now;
            movEntrada.TipoMovimiento = "Ingreso";
            new MovimientoBL().Grabar(movEntrada);

            /* Grabo nota de ingreso */
            NotaIngresoSalida notaIngreso = new NotaIngresoSalida();
            notaIngreso.Fecha = System.DateTime.Now;
            notaIngreso.Local = this.local;
            notaIngreso.NroMovimiento = movEntrada;
            new NotaIngresoSalidaBL().Grabar(notaIngreso);

            /* Grabo el detalle de la nota de ingreso y verifico incidencias */
            List<NotaIngresoSalidaLinea> notaLineas = new List<NotaIngresoSalidaLinea>();
            foreach (DataGridViewRow fila in dgvProductos.Rows)
            {
                NotaIngresoSalidaLinea notaIngresoLinea = new NotaIngresoSalidaLinea();
                notaIngresoLinea.CodNota = notaIngreso;
                int cantIngresada = 0;
                if ((fila.Cells["cantIngresada"].Value!= null)
                    &&(int.TryParse(fila.Cells["cantIngresada"].Value.ToString(), out cantIngresada))
                    && int.Parse(fila.Cells["cantPedida"].Value.ToString()) >= cantIngresada)
                    notaIngresoLinea.Cantidad = cantIngresada;
                else
                {
                    ok = false;
                    fila.Cells["cantIngresada"].Style.BackColor = Color.RosyBrown;
                }
                if ((notaIngresoLinea.CodAnaquel = (Anaquel)fila.Cells["cboAnaquel"].Value) == null)
                {
                    ok = false;
                    fila.Cells["cboAnaquel"].Style.BackColor = Color.RosyBrown;
                }
                if (ok)
                {
                    notaLineas.Add(notaIngresoLinea);
                    if (int.Parse(fila.Cells["cantPedida"].Value.ToString()) != int.Parse(fila.Cells["cantIngresada"].Value.ToString()))
                    {
                        hayIncidencia = true;
                        descripcionIncidencia += fila.Cells["codigo"];
                        int diferencia = int.Parse(fila.Cells["cantPedida"].Value.ToString()) - int.Parse(fila.Cells["cantIngresada"].Value.ToString());
                        descripcionIncidencia += " " + diferencia.ToString() + " ";
                        cantidadArticulosDiferentes++;
                        cantidadDeltaTotal += diferencia;
                    }
                }
            }

            if (ok)
            {
                /* Agregar el articulo por local a la lista */
                int i = 0;
                if (ordenCompra != null)
                {
                    foreach (OrdenCompraLinea auxOCL in ordenCompra.OrdenCompraOrdenCompraLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxOCL.ArticuloXProveedor.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxOCL.ArticuloXProveedor.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }

                }
                else if (consignacion != null)
                {
                    foreach (DocumentoConsignacionLinea auxConsigL in consignacion.DocumentoConsignacionDocumentoConsignacionLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxConsigL.ArticuloXProveedor.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxConsigL.ArticuloXProveedor.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }
                }
                else if (transferencia != null)
                {
                    foreach (TransferenciaLinea auxTransfL in transferencia.TransferenciaTransferenciaLineafk)
                    {
                        ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxTransfL.ArticuloXLocal.Articulo.Id, local.Id);
                        if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                        else
                        {
                            axl = new ArticuloXLocal();
                            axl.Local = this.local;
                            axl.Cantidad = notaLineas[i].Cantidad;
                            axl.Articulo = auxTransfL.ArticuloXLocal.Articulo;
                        }
                        new ArticuloXLocalBL().Actualizar(axl);
                        notaLineas[i].ArticuloXLocal = axl;
                        i++;
                    }
                }

                if (hayIncidencia)
                {
                    //Ingresar incidencia
                    Incidencia incidencia = new Incidencia();
                    incidencia.DescripcionAdicional = descripcionIncidencia + " - AUTO - Ingreso de articulos por " + cboTipoMovimiento.Text + " inconsistente con documento nro. " + txtNroDocumento.Text;
                    incidencia.Estado = "Creada";
                    incidencia.Fecha = DateTime.Now;
                    incidencia.Local = this.local;
                    incidencia.TipoIncidencia = "Recepción";
                    incidencia.NroMovimiento = movEntrada;

                    //creacion de objetos incidencialinea
                    IncidenciaLinea incidlinea1 = new IncidenciaLinea();
                    IncidenciaLinea incidlinea2 = new IncidenciaLinea();
                    //Cantidad de articulos diferentes
                    incidlinea1.Cantidad = cantidadArticulosDiferentes;
                    incidlinea1.NroIncidencia = incidencia;
                    //cantidad total de arituclos dañados
                    incidlinea2.Cantidad = cantidadDeltaTotal;
                    incidlinea2.NroIncidencia = incidencia;

                    //GRABAR MOVIMIENTO E INCIDENCIA
                    //new MovimientoBL().Grabar(movEntrada);
                    //new NotaIngresoSalidaBL().Grabar(notaIngreso);
                    new IncidenciaBL().Grabar(incidencia);
                    new IncidenciaLineaBL().Grabar(incidlinea1);
                    new IncidenciaLineaBL().Grabar(incidlinea2);

                }
                new NotaIngresoSalidaLineaBL().Grabar(notaLineas);
                Utils.Utils.Mensaje("Se han registrado los productos ingresados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Dispose();
            }
            else Utils.Utils.Error(this, "Ha ocurrido un error en la grabación");
        }
Ejemplo 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");
        }
Ejemplo n.º 3
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            foreach (DataGridViewRow fila in dgvDocumentos.Rows)
            {
            /*creo movimiento*/
                BE.Movimiento movSalida = new BE.Movimiento();
                movSalida.Local = this.local;
                movSalida.Fecha = System.DateTime.Now;
                movSalida.TipoMovimiento = "Salida";
                new MovimientoBL().Grabar(movSalida);

            /* creo nota de salida */
                NotaIngresoSalida notaSalida = new NotaIngresoSalida();
                notaSalida.NroMovimiento = movSalida;
                notaSalida.Local = this.local;
                notaSalida.Fecha = System.DateTime.Now;
                new NotaIngresoSalidaBL().Grabar(notaSalida);

            /* creo guia de remisión */
                GuiaRemision guiaRemision = new GuiaRemision();
                guiaRemision.Fecha = System.DateTime.Now;
                guiaRemision.NroMovimiento = movSalida;
                guiaRemision.TipoGuia = "Salida";
                guiaRemision.Estado = "Emitida";
                new GuiaRemisionBL().Grabar(guiaRemision);

                if (fila.Cells["TipoMovimiento"].Value.ToString().Equals("Transferencia"))
                {
                    List<NotaIngresoSalidaLinea> notaSalidaLineas = new List<NotaIngresoSalidaLinea>();
                    List<GuiaRemisionLinea> guiaRemisionLineas = new List<GuiaRemisionLinea>();
                    int nroDocumento = int.Parse(fila.Cells["NroDocumento"].Value.ToString());
                    Transferencia t = new TransferenciaBL().cargarTransferencia(nroDocumento);
                    foreach (TransferenciaLinea tl in t.TransferenciaTransferenciaLineafk)
                    {
                        NotaIngresoSalidaLinea auxL = new NotaIngresoSalidaLinea();
                        auxL.ArticuloXLocal = tl.ArticuloXLocal;
                        auxL.Cantidad = tl.CantidadArticulosAprob;
                        auxL.CodNota = notaSalida;
                        notaSalidaLineas.Add(auxL);
                        GuiaRemisionLinea auxGuiaRemLinea = new GuiaRemisionLinea();
                        auxGuiaRemLinea.Articulo = tl.ArticuloXLocal.Articulo;
                        auxGuiaRemLinea.Cantidad = tl.CantidadArticulosAprob;
                        auxGuiaRemLinea.NroGuia = guiaRemision;
                        guiaRemisionLineas.Add(auxGuiaRemLinea);
                        ArticuloXLocal axl = auxL.ArticuloXLocal;
                        axl.Cantidad = axl.Cantidad - auxL.Cantidad;
                        new ArticuloXLocalBL().Actualizar(axl);
                    }
                    new NotaIngresoSalidaLineaBL().Grabar(notaSalidaLineas);
                    new GuiaRemisionBL().Grabar(guiaRemisionLineas);
                    Utils.Utils.Mensaje("Usted ha registrado satisfactoriamente la salida de productos. "
                                        + "\nNota de Salida asociada: " + notaSalida.Id.ToString()
                                        + "\nGuia de Remisión asociada: " + guiaRemision.Id,
                                        MessageBoxButtons.OK, Utils.Utils.REGISTRO_OK);
                    this.Dispose();
                }
                else
                {//Devolucion al proveedor
                    List<NotaIngresoSalidaLinea> notaSalidaLineas = new List<NotaIngresoSalidaLinea>();
                    int nroDocumento = int.Parse(fila.Cells["nroDocumento"].ToString());
                    Incidencia devolucion = new IncidenciaBL().cargarIncidencia(nroDocumento);
                    List<GuiaRemisionLinea> guiaRemisionLineas = new List<GuiaRemisionLinea>();
                    List<object[]> listaDatosDevolucion = new IncidenciaBL().GetListaDatosDevolucion(devolucion, local);
                    /* es una lista de duplas: cantidadArticulo - articuloXLocal */

                    foreach (object[] dupla in listaDatosDevolucion)
                    {
                        NotaIngresoSalidaLinea auxL = new NotaIngresoSalidaLinea();
                        auxL.ArticuloXLocal = (ArticuloXLocal)dupla[1];
                        auxL.Cantidad = (int)dupla[0];
                        auxL.CodNota = notaSalida;
                        notaSalidaLineas.Add(auxL);
                        GuiaRemisionLinea auxGuiaRemLinea = new GuiaRemisionLinea();
                        auxGuiaRemLinea.Articulo = ((ArticuloXLocal)dupla[1]).Articulo;
                        auxGuiaRemLinea.Cantidad = (int)dupla[0];
                        auxGuiaRemLinea.NroGuia = guiaRemision;
                        guiaRemisionLineas.Add(auxGuiaRemLinea);
                        ArticuloXLocal axl = auxL.ArticuloXLocal;
                        axl.Cantidad = axl.Cantidad - auxL.Cantidad;
                        new ArticuloXLocalBL().Actualizar(axl);
                    }
                    new NotaIngresoSalidaLineaBL().Grabar(notaSalidaLineas);
                    new GuiaRemisionBL().Grabar(guiaRemisionLineas);
                    Utils.Utils.Mensaje("Usted ha registrado satisfactoriamente la salida de productos. "
                                        + "\nNota de Salida asociada: " + notaSalida.Id.ToString()
                                        + "\nGuia de Remisión asociada: " + guiaRemision.Id,
                                        MessageBoxButtons.OK, Utils.Utils.REGISTRO_OK);
                    this.Dispose();
                }
            }
        }
Ejemplo n.º 4
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");
        }
Ejemplo n.º 5
0
        private void btnAceptar_Click(object sender, EventArgs e)
        {
            bool ok= true;
            /* Grabo movimiento */
            Movimiento movEntrada = new Movimiento();
            movEntrada.Local = this.local;
            movEntrada.Fecha = System.DateTime.Now;
            new MovimientoBL().Grabar(movEntrada);

            /* Grabo nota de ingreso */
            NotaIngresoSalida notaIngreso = new NotaIngresoSalida();
            notaIngreso.Fecha = System.DateTime.Now;
            notaIngreso.Local = this.local;
            notaIngreso.NroMovimiento = movEntrada;
            new NotaIngresoSalidaBL().Grabar(notaIngreso);

            /* Grabo el detalle de la nota de ingreso y verifico incidencias */
            List<NotaIngresoSalidaLinea> notaLineas = new List<NotaIngresoSalidaLinea>();
            foreach (DataGridViewRow fila in dgvProductos.Rows)
            {
                NotaIngresoSalidaLinea notaIngresoLinea = new NotaIngresoSalidaLinea();
                notaIngresoLinea.CodNota = notaIngreso;
                int cantIngresada = 0;
                if ((fila.Cells["cantIngresada"].Value!= null)&&(int.TryParse(fila.Cells["cantIngresada"].Value.ToString(), out cantIngresada)))
                    notaIngresoLinea.Cantidad = cantIngresada;
                else
                {
                    ok = false;
                    fila.Cells["cantIngresada"].Style.BackColor = Color.RosyBrown;
                }
                if ((notaIngresoLinea.CodAnaquel = (Anaquel)fila.Cells["cboAnaquel"].Value) == null)
                {
                    ok = false;
                    fila.Cells["cboAnaquel"].Style.BackColor = Color.RosyBrown;
                }
                if (ok)
                {
                    notaLineas.Add(notaIngresoLinea);
                    if (int.Parse(fila.Cells["cantPedida"].Value.ToString()) != int.Parse(fila.Cells["cantIngresada"].Value.ToString()))
                    {
                        //Ingresar incidencia
                        Incidencia incidencia = new Incidencia();
                        incidencia.DescripcionAdicional = "AUTO - Ingreso de articulos por "+ cboTipoMovimiento.Text +  " inconsistente con documento nro. " + txtNroDocumento.Text;
                        incidencia.Estado = "CREADA";
                        incidencia.Fecha = DateTime.Today;
                        incidencia.Local = this.local;
                        incidencia.TipoIncidencia = "RECEPCION";
                        incidencia.NroMovimiento = movEntrada;
                        new IncidenciaBL().Grabar(incidencia);
                    }
                }
            }

            if (ok)
            {
                /* Agregar el articulo por local a la lista */
                int i = 0;
                foreach (OrdenCompraLinea auxOCL in ordenCompra.OrdenCompraOrdenCompraLineafk)
                {
                    ArticuloXLocal axl = new ArticuloXLocalBL().findArticuloXLocal(auxOCL.ArticuloXProveedor.Articulo.Id, local.Id);
                    if (axl != null) axl.Cantidad += notaLineas[i].Cantidad;
                    else
                    {
                        axl = new ArticuloXLocal();
                        axl.Local = this.local;
                        axl.Cantidad = notaLineas[i].Cantidad;
                        axl.Articulo = auxOCL.ArticuloXProveedor.Articulo;
                    }
                    new ArticuloXLocalBL().Actualizar(axl);
                    notaLineas[i].ArticuloXLocal = axl;
                    i++;
                }

                new NotaIngresoSalidaLineaBL().Grabar(notaLineas);
                Utils.Utils.Mensaje("Se han registrado los productos ingresados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.Dispose();
            }
            else Utils.Utils.Error(this, "Ha ocurrido un error en la grabación");
        }