public void Vender(Documento documento, DocVenta documentoVenta, IList<DocumentoLinea> lineasDocumento, IList<PagoLinea> lineasMedioPago) { if (documento.Cliente == null) documento.TipoDocumento = "Boleta"; else { if (documento.Cliente.TipoDocumento == "RUC") documento.TipoDocumento = "Factura"; else documento.TipoDocumento = "Boleta"; } new DocumentoBL().Grabar(documento); documento.NroDocumentoVenta = Int32.Parse(documento.Caja.Local.Id + "" + documento.Id); new DocumentoBL().Grabar(documento); foreach (DocumentoLinea documentoLinea in lineasDocumento) { documentoLinea.Documento = documento; documentoLinea.ArticuloXLocal.Cantidad -= documentoLinea.Cantidad.Value; new ArticuloXLocalBL().Actualizar(documentoLinea.ArticuloXLocal); new DocumentoLineaBL().Grabar(documentoLinea); } documentoVenta.DescuentoArticulo = 0; documentoVenta.DescuentoCliente = 0; documentoVenta.DescuentoPacks = 0; new DocVentaDA().SaveOrUpdate(documentoVenta); foreach (PagoLinea pagoLinea in lineasMedioPago) { new PagoLineaBL().Grabar(pagoLinea); } }
public void Vender(Documento documento, DocVenta documentoVenta, IList<DocumentoLinea> lineasDocumento, IList<PagoLinea> lineasMedioPago) { new DocumentoBL().Grabar(documento); foreach (DocumentoLinea documentoLinea in lineasDocumento) { documentoLinea.Documento = documento; documentoLinea.ArticuloXLocal.Cantidad -= documentoLinea.Cantidad.Value; new ArticuloXLocalBL().Actualizar(documentoLinea.ArticuloXLocal); new DocumentoLineaBL().Grabar(documentoLinea); } documentoVenta.DescuentoArticulo = 0; documentoVenta.DescuentoCliente = 0; documentoVenta.DescuentoPacks = 0; new DocVentaDA().SaveOrUpdate(documentoVenta); foreach (PagoLinea pagoLinea in lineasMedioPago) { new PagoLineaBL().Grabar(pagoLinea); } }
public void Devolver(Documento documento,NotaCredito notaCredito, IList<DocumentoLinea> lineasDocumento,List<NotaIngresoSalidaLinea> lineasIngresosSalidas) { documento.TipoDocumento = "NotaCredito"; new DocumentoBL().Grabar(documento); documento.NroDocumentoVenta = Int32.Parse(documento.Caja.Local.Id + "" + documento.Id); new DocumentoBL().Grabar(documento); foreach (DocumentoLinea documentoLinea in lineasDocumento) { documentoLinea.Documento = documento; new DocumentoLineaBL().Grabar(documentoLinea); } //MOVIMIENTO BE.Movimiento movimiento = new BE.Movimiento(); movimiento.Local=documento.Caja.Local; movimiento.Fecha=DateTime.Today; new MovimientoBL().Grabar(movimiento); //GRABAMOS LA NOTA DE CREDITO notaCredito.Documento = documento; notaCredito.NroMovimiento = movimiento; Grabar(notaCredito); //CREAMOS LA NOTA DE INGRESOSALIDA NotaIngresoSalida notaIngSal=new NotaIngresoSalida(); notaIngSal.Local=documento.Caja.Local; notaIngSal.Fecha=DateTime.Today; notaIngSal.NroMovimiento=movimiento; new NotaIngresoSalidaBL().Grabar(notaIngSal); foreach (NotaIngresoSalidaLinea linea in lineasIngresosSalidas) linea.CodNota = notaIngSal; new NotaIngresoSalidaLineaBL().Grabar(lineasIngresosSalidas); }
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"); }
public void CargarDocumentoVenta(Documento doc) { this.documentoVenta = doc; txtNroDocumento.Text = doc.NroDocumentoVenta.ToString(); }
private void llenarGrillas() { double totalImpuestos; float descuentoUnit, precioVenta, total; int filaArt = 0; int filaPack = 0; dgvArticulos.Rows.Clear(); dgvPacks.Rows.Clear(); listaArticulos = new List<DocumentoLinea>(); listaPacks = new List<DocumentoLinea>(); listaLineasDevolucion = new List<DocumentoLinea>(); this.totalDevolucion = 0; IList<DocumentoLinea> listadocLinea = new DocumentoLineaBL().findByIdDocumento(this.documentoVenta.Id.ToString()); DescuentoXArticuloBL objDescXArtBL = new DescuentoXArticuloBL(); foreach (DocumentoLinea linea in listadocLinea) { if (linea.Pack == null) { descuentoUnit = 0; precioVenta = (float)linea.PrecioLinea / (float)linea.Cantidad; if (linea.DescuentoXArticulo != null) //si es un articulo con descuento { // DescuentoXArticulo descxArt=objDescXArtBL.findById(linea.DescuentoXArticulo.ToString()); //descuentoUnit =(float)descxArt.PorcentajeDescuento; descuentoUnit = linea.DescuentoXArticulo.PorcentajeDescuento; } totalImpuestos = linea.PrecioLinea * linea.Impuesto; total = (float)(precioVenta*(linea.Cantidad-linea.CantidadDevuelta) + totalImpuestos - descuentoUnit *linea.Cantidad); object[] row = { linea.ArticuloXLocal.Articulo.CodigoArticulo, linea.ArticuloXLocal.Articulo.Titulo, linea.ArticuloXLocal.Articulo.Tipo,linea.Impuesto, precioVenta,descuentoUnit,linea.Cantidad,linea.CantidadDevuelta,0,0}; dgvArticulos.Rows.Add(row); listaArticulos.Add(linea); filaArt++; } else //si la linea trata de un pack,agregamos este a la grilla de packs { object[] row = { linea.Pack.CodigoPack, linea.Pack.Nombre, linea.Pack.PrecioPack, linea.Cantidad,linea.CantidadDevuelta, 0, 0 }; dgvPacks.Rows.Add(row); listaPacks.Add(linea); filaPack++; } } agregarControlesGrilla(); this.lblTotalVentas.Text = documentoVenta.Total.ToString(); if (documentoVenta.Cliente != null) this.lblCliente.Text = documentoVenta.Cliente.Nombre; this.linkNroDocumento.Text = documentoVenta.NroDocumentoVenta.ToString(); this.lblFechaVenta.Text = documentoVenta.FechaEmision.ToString(); documentoVentaActual = documentoVenta; documentoVenta = null; }
private void llenarDatosDevolucion() { if (txtNroDocumento.Text.Trim() == "") Utils.Utils.Error(null, "Ingrese al menos un numero de documento de venta"); else { if (documentoVenta == null) { //el codigo fue ingresado manualmente documentoVenta = new DocumentoBL().findByIdDocumento(txtNroDocumento.Text.Trim()); //buscamos por el id ingresado if (documentoVenta == null) { Utils.Utils.Error(null, "El numero de documento no existe"); return; } } if (!validarLocalDevolucion()) { Utils.Utils.Error(null, "No se puede realizar la devolucion porque la venta se realizo en otro local"); return; } llenarGrillas(); } }
public void SaveOrUpdate(Documento instance) { ISession hisession = null; try { hisession = NHibernateHelper.GetCurrentSession(); hisession.BeginTransaction(); if (instance.Id == 0) { hisession.Save(instance); } else { hisession.Update(instance); } hisession.Transaction.Commit(); hisession.Close(); } catch (Exception ex) { if (hisession != null) { if (hisession.IsOpen) { hisession.Close(); } } } }
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"); }
private void llenarGrillas() { double totalImpuestos; float descuentoUnit, precioVenta, total; int filaArt = 0; int filaPack = 0; limpiarCampos(); DescuentoXArticuloBL objDescXArtBL = new DescuentoXArticuloBL(); foreach (DocumentoLinea linea in documentoVenta.DocumentoDocumentoLineafk) { if (linea.Pack == null) { descuentoUnit = 0; precioVenta = (float)linea.PrecioLinea / (float)linea.Cantidad; if (linea.DescuentoXArticulo != null) //si es un articulo con descuento { descuentoUnit = linea.DescuentoXArticulo.PorcentajeDescuento; } totalImpuestos = linea.PrecioLinea * linea.Impuesto; total = (float)(precioVenta*(linea.Cantidad-linea.CantidadDevuelta) + totalImpuestos - descuentoUnit *linea.Cantidad); object[] row = { linea.ArticuloXLocal.Articulo.CodigoArticulo, linea.ArticuloXLocal.Articulo.Titulo, linea.ArticuloXLocal.Articulo.Tipo,linea.Impuesto, precioVenta,descuentoUnit,linea.Cantidad,linea.CantidadDevuelta,0,0}; dgvArticulos.Rows.Add(row); listaArticulos.Add(linea); filaArt++; } else //si la linea trata de un pack,agregamos este a la grilla de packs { object[] row = { linea.Pack.CodigoPack, linea.Pack.Nombre, linea.Pack.PrecioPack, linea.Cantidad,linea.CantidadDevuelta, 0, 0 }; dgvPacks.Rows.Add(row); listaPacks.Add(linea); filaPack++; } } this.lblTotalVentas.Text = documentoVenta.Total.ToString("0.00"); if (documentoVenta.Cliente != null) this.lblCliente.Text = documentoVenta.Cliente.Nombre; this.linkNroDocumento.Text = documentoVenta.NroDocumentoVenta.ToString(); this.lblFechaVenta.Text =((DateTime)(documentoVenta.FechaEmision)).ToShortDateString(); this.lblTipoDoc.Text = documentoVenta.TipoDocumento; if (documentoVenta.Cliente!=null) { this.lblCliente.Text = documentoVenta.Cliente.Nombre; } documentoVentaActual = documentoVenta; documentoVenta = null; }
private void llenarDatosDevolucion() { if (txtNroDocumento.Text.Trim() == "") Utils.Utils.Error(null, "Ingrese al menos un numero de documento de venta"); else { //if (documentoVenta == null) // { //el codigo fue ingresado manualmente documentoVenta = new DocumentoBL().findByIdDocumento(txtNroDocumento.Text.Trim()); //buscamos por el id ingresado if (documentoVenta == null) { Utils.Utils.Error(null, "El numero de documento no existe"); return; } //} if (!validarLocalDevolucion()) { Utils.Utils.Error(null, "No se puede realizar la devolucion porque la venta se realizo en otro local"); return; } if (documentoVenta.TipoDocumento == "NotaCredito") { Utils.Utils.Error(null, "El numero de documento ingresado no pertenece a un documento de venta"); return; } if (((DateTime) documentoVenta.FechaEmision).AddDays(7)<DateTime.Today) { Utils.Utils.Error(null,"El documento de venta paso el limite los 7 dias"); return; } llenarGrillas(); } }