private void tsbEliminar_Click(object sender, EventArgs e) { if (MessageBox.Show("¿Seguro desea anular la orden de venta a facturar?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { ordenVenta.idEstadoOrdenVenta = 4; ordenVenta.fechaHoraEliminacion = Program.fechaHora; ordenVenta.idUsuarioEliminacion = idUsuario; ordenVenta.terminalEliminacion = Program.terminal; ordenVenta.tbOrdenVentaDetalle.Where(x => x.estadoRegistro).ToList().ForEach(y => { long idBodega = y.idBodega.Value; long idProducto = y.idProducto; int cantidad = y.cantidad; tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodega && I.idProducto == idProducto && y.estadoRegistro select I).FirstOrDefault(); _tbInventario.reservado -= cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; }); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Orden de venta anulada satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); this.DialogResult = System.Windows.Forms.DialogResult.OK; } }
private void tsbEliminar_Click(object sender, EventArgs e) { dgvOrdenVentaCabecera_CellEndEdit(null, null); List <tbOrdenVentaCabecera> ordenesVenta = ((BindingList <tbOrdenVentaCabecera>)dgvOrdenVentaCabecera.DataSource).ToList(); if (ordenesVenta.Where(x => x.seleccionado).Count() == 0) { MessageBox.Show("Seleccione un registro para poder eliminarlo", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (MessageBox.Show("¿Seguro desea anular las facturas seleccionadas?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { ordenesVenta.Where(x => x.seleccionado).ToList().ForEach(x => { long numeroFactura = x.numeroFactura.Value; x.idEstadoOrdenVenta = 6; x.fechaHoraEliminacion = Program.fechaHora; x.idUsuarioEliminacion = idUsuario; x.terminalEliminacion = Program.terminal; x.tbOrdenVentaDetalle.Where(y => y.estadoRegistro).ToList().ForEach(z => { long idProducto = z.idProducto; if (edmCosolemFunctions.isProductoInventariable(idProducto)) { long idBodega = z.idBodega.Value; int cantidad = z.cantidad; tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodega && I.idProducto == idProducto && I.estadoRegistro select I).FirstOrDefault(); _tbInventario.fisicoDisponible += cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; tbTransaccionInventario _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Ingreso de inventario por anulación de factura " + Util.setFormatoNumeroFactura(idEmpresa, idTienda, numeroFactura); _tbTransaccionInventario.idBodega = idBodega; _tbTransaccionInventario.idProducto = idProducto; _tbTransaccionInventario.cantidad = cantidad; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); } }); }); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Facturas anuladas satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); tsbBuscar_Click(null, null); } } }
private void btnAgregarParaIngresarInventario_Click(object sender, EventArgs e) { string mensaje = String.Empty; long idEmpresa = ((Empresa)cmbEmpresa.SelectedItem).idEmpresa; long idTienda = ((Tienda)cmbTienda.SelectedItem).idTienda; long idBodega = ((Bodega)cmbBodega.SelectedItem).idBodega; if (idEmpresa == 0) { mensaje += "Seleccione empresa\n"; } if (idTienda == 0) { mensaje += "Seleccione tienda\n"; } if (idBodega == 0) { mensaje += "Seleccione bodega\n"; } if (idBodega > 0 && _BindingListtbInventario.Where(x => x.idBodega != idBodega).Count() > 0) { mensaje += "Favor verifique los parámetros seleccionados son distintos a los agregados en el inventario\n"; } if (this.listaProducto.Where(x => x.seleccionado).Count() == 0) { mensaje += "Seleccione al menos 1 producto\n"; } if (String.IsNullOrEmpty(mensaje.Trim())) { List <Producto> listaProducto = this.listaProducto.Where(x => x.seleccionado).ToList(); listaProducto.ForEach(x => { tbInventario _tbInventario = _BindingListtbInventario.Where(y => y.idBodega == idBodega && y.idProducto == x.idProducto).FirstOrDefault(); long fisicoDisponible = edmCosolemFunctions.getFisicoDisponible(idEmpresa, idBodega, x.idProducto); if (_tbInventario == null) { _BindingListtbInventario.Add(new tbInventario { idBodega = idBodega, idProducto = x.idProducto, codigoProducto = x.codigoProducto, descripcionProducto = x.descripcion, fisicoDisponible = fisicoDisponible, cantidad = 0 }); } else { _tbInventario.fisicoDisponible = fisicoDisponible; } }); } else { MessageBox.Show(mensaje, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
private void tsbEliminar_Click(object sender, EventArgs e) { dgvOrdenVentaCabecera_CellEndEdit(null, null); List <tbOrdenVentaCabecera> ordenesVenta = ((SortableBindingList <tbOrdenVentaCabecera>)dgvOrdenVentaCabecera.DataSource).ToList(); if (ordenesVenta.Where(x => x.seleccionado).Count() == 0) { MessageBox.Show("Seleccione un registro para poder eliminarlo", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { if (MessageBox.Show("¿Seguro desea anular las ordenes de venta seleccionadas?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) { ordenesVenta.ForEach(x => { x.idEstadoOrdenVenta = 4; x.fechaHoraEliminacion = Program.fechaHora; x.idUsuarioEliminacion = idUsuario; x.terminalEliminacion = Program.terminal; x.tbOrdenVentaDetalle.Where(y => y.estadoRegistro).ToList().ForEach(z => { long idBodega = z.idBodega.Value; long idProducto = z.idProducto; int cantidad = z.cantidad; tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodega && I.idProducto == idProducto && z.estadoRegistro select I).FirstOrDefault(); _tbInventario.reservado -= cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; }); }); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Ordenes de venta anuladas satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); tsbBuscar_Click(null, null); } } }
private void tsbGrabar_Click(object sender, EventArgs e) { List <tbOrdenVentaDetalle> ordenVentaDetalle = new List <tbOrdenVentaDetalle>(); if (ordenVenta != null) { ordenVentaDetalle = ordenVenta.tbOrdenVentaDetalle.Where(x => x.estadoRegistro && x.tbProducto.tbTipoProducto.esInventariable).ToList(); } if (ordenVenta == null) { MessageBox.Show("Seleccione una factura para poder realizar la devolución", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (ordenVentaDetalle.Where(x => x.idBodegaEntrada != 0).Count() < ordenVentaDetalle.Count) { MessageBox.Show("Seleccione una bodega en los productos que va a devolver", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (String.IsNullOrEmpty(txtComentarios.Text.Trim())) { MessageBox.Show("Ingrese un comentario para poder realizar la devolución", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { long idOrdenVentaCabecera = ordenVenta.idOrdenVentaCabecera; ordenVenta = (from OVC in _dbCosolemEntities.tbOrdenVentaCabecera where OVC.idOrdenVentaCabecera == idOrdenVentaCabecera select OVC).FirstOrDefault(); long idEmpresa = ordenVenta.idEmpresaFactura.Value; long idTienda = ordenVenta.idTiendaFactura.Value; long numeroFactura = ordenVenta.numeroFactura.Value; ordenVenta.idEstadoOrdenVenta = 7; ordenVenta.comentarios = txtComentarios.Text.Trim(); ordenVenta.fechaHoraEliminacion = Program.fechaHora; ordenVenta.idUsuarioEliminacion = idUsuario; ordenVenta.terminalEliminacion = Program.terminal; List <tbInventario> inventario = new List <tbInventario>(); ordenVentaDetalle.ForEach(y => { long idBodega = y.idBodegaEntrada; long idProducto = y.idProducto; int cantidad = y.cantidad; tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodega && I.idProducto == idProducto && I.estadoRegistro select I).FirstOrDefault(); if (_tbInventario == null) { _tbInventario = new tbInventario(); _tbInventario.idBodega = idBodega; _tbInventario.idProducto = idProducto; _tbInventario.fisicoDisponible = cantidad; _tbInventario.reservado = 0; _tbInventario.estadoRegistro = true; _tbInventario.fechaHoraIngreso = Program.fechaHora; _tbInventario.idUsuarioIngreso = idUsuario; _tbInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbInventario.AddObject(_tbInventario); } else { _tbInventario.fisicoDisponible += cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; } _tbInventario.concepto = "DEVOLUCIÓN DE FACTURA " + new String('0', 9 - numeroFactura.ToString().Trim().Length) + numeroFactura.ToString().Trim(); _tbInventario.fechaFactura = ordenVenta.fechaHoraFactura.Value; _tbInventario.cliente = ordenVenta.numeroIdentificacion + " - " + ordenVenta.cliente; _tbInventario.comentarios = ordenVenta.comentarios; _tbInventario.codigoProducto = y.codigoProducto; _tbInventario.descripcionProducto = y.descripcionProducto; _tbInventario.cantidad = cantidad; inventario.Add(_tbInventario); tbTransaccionInventario _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Ingreso de inventario por devolución de factura " + Util.setFormatoNumeroFactura(idEmpresa, idTienda, numeroFactura); _tbTransaccionInventario.idBodega = idBodega; _tbTransaccionInventario.idProducto = idProducto; _tbTransaccionInventario.cantidad = cantidad; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); }); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Factura devuelta satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); if (inventario.Count > 0) { new frmReporteIngresoInventarioConcepto(inventario).ShowDialog(); } tsbNuevo_Click(null, null); } }
private void tsbGrabar_Click(object sender, EventArgs e) { try { long cantidadTransferir = 0; if (!String.IsNullOrEmpty(txtCantidadTransferir.Text.Trim())) { cantidadTransferir = Convert.ToInt64(txtCantidadTransferir.Text.Trim()); } cmbProducto_SelectionChangeCommitted(null, null); txtCantidadTransferir.Text = cantidadTransferir.ToString(); string mensaje = String.Empty; long idBodegaSaliente = ((Bodega)cmbBodegaSaliente.SelectedItem).idBodega; long idBodegaEntrante = ((Bodega)cmbBodegaEntrante.SelectedItem).idBodega; Producto _tbProducto = (Producto)cmbProducto.SelectedItem; long inventario = 0; if (!String.IsNullOrEmpty(txtInventario.Text.Trim())) { inventario = Convert.ToInt64(txtInventario.Text.Trim()); } if (((Tienda)cmbTiendaSaliente.SelectedItem).idTienda == 0) { mensaje += "Seleccione tienda saliente\n"; } if (idBodegaSaliente == 0) { mensaje += "Seleccione bodega saliente\n"; } if (((Tienda)cmbTiendaEntrante.SelectedItem).idTienda == 0) { mensaje += "Seleccione tienda entrante\n"; } if (idBodegaEntrante == 0) { mensaje += "Seleccione bodega entrante\n"; } if (_tbProducto.idProducto == 0) { mensaje += "Seleccione producto\n"; } if (cantidadTransferir == 0) { mensaje += "Ingrese cantidad a transferir\n"; } if (idBodegaSaliente == idBodegaEntrante) { mensaje += "Bodega saliente y entrante no pueden ser iguales\n"; } if (cantidadTransferir > inventario) { mensaje += "Cantidad a transferir mayor a la del inventario\n"; } tbCosto _tbCosto = edmCosolemFunctions.getCosto(idEmpresa, _tbProducto.idProducto); if (_tbCosto == null || _tbCosto.costo == 0) { mensaje += "Producto no tiene costo\n"; } if (String.IsNullOrEmpty(mensaje.Trim())) { tbTransaccionInventario _tbTransaccionInventario = null; _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Transferencia de inventario"; _tbTransaccionInventario.idBodega = idBodegaSaliente; _tbTransaccionInventario.idProducto = _tbProducto.idProducto; _tbTransaccionInventario.cantidad = -cantidadTransferir; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Transferencia de inventario"; _tbTransaccionInventario.idBodega = idBodegaEntrante; _tbTransaccionInventario.idProducto = _tbProducto.idProducto; _tbTransaccionInventario.cantidad = cantidadTransferir; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); tbInventario _tbInventario = null; _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodegaSaliente && I.idProducto == _tbTransaccionInventario.idProducto && I.estadoRegistro select I).FirstOrDefault(); if (_tbInventario == null) { _tbInventario = new tbInventario(); _tbInventario.idBodega = idBodegaSaliente; _tbInventario.idProducto = _tbProducto.idProducto; _tbInventario.fisicoDisponible = cantidadTransferir; _tbInventario.reservado = 0; _tbInventario.estadoRegistro = true; _tbInventario.fechaHoraIngreso = Program.fechaHora; _tbInventario.idUsuarioIngreso = idUsuario; _tbInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbInventario.AddObject(_tbInventario); } else { _tbInventario.fisicoDisponible = _tbInventario.fisicoDisponible - cantidadTransferir; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; } _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodegaEntrante && I.idProducto == _tbTransaccionInventario.idProducto && I.estadoRegistro select I).FirstOrDefault(); if (_tbInventario == null) { _tbInventario = new tbInventario(); _tbInventario.idBodega = idBodegaEntrante; _tbInventario.idProducto = _tbProducto.idProducto; _tbInventario.fisicoDisponible = cantidadTransferir; _tbInventario.reservado = 0; _tbInventario.estadoRegistro = true; _tbInventario.fechaHoraIngreso = Program.fechaHora; _tbInventario.idUsuarioIngreso = idUsuario; _tbInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbInventario.AddObject(_tbInventario); } else { _tbInventario.fisicoDisponible = _tbInventario.fisicoDisponible + cantidadTransferir; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; } long fisicoDisponible = edmCosolemFunctions.getFisicoDisponible(idEmpresa, idBodegaSaliente, _tbProducto.idProducto); if (cantidadTransferir > fisicoDisponible) { MessageBox.Show("Cantidad a transferir mayor a la del inventario", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { _dbCosolemEntities.SaveChanges(); MessageBox.Show("Registro grabado satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); frmTransferencias_Load(null, null); } } else { MessageBox.Show(mensaje, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception ex) { Util.MostrarException(this.Text, ex); } }
private void tsbGrabar_Click(object sender, EventArgs e) { try { dgvInventario_CellEndEdit(null, null); string mensaje = String.Empty; long idEmpresa = ((Empresa)cmbEmpresa.SelectedItem).idEmpresa; long idTienda = ((Tienda)cmbTienda.SelectedItem).idTienda; long idBodega = ((Bodega)cmbBodega.SelectedItem).idBodega; if (idEmpresa == 0) { mensaje += "Seleccione empresa\n"; } if (idTienda == 0) { mensaje += "Seleccione tienda\n"; } if (idBodega == 0) { mensaje += "Seleccione bodega\n"; } if (idBodega > 0 && _BindingListtbInventario.Where(x => x.idBodega != idBodega).Count() > 0) { mensaje += "Favor verifique los parámetros seleccionados son distintos a los agregados en el inventario\n"; } if (_BindingListtbInventario.Where(x => x.cantidad == 0).Count() > 0) { mensaje += "Ingrese cantidad\n"; } _BindingListtbInventario.ToList().ForEach(x => { tbCosto _tbCosto = edmCosolemFunctions.getCosto(idEmpresa, x.idProducto); if (_tbCosto == null || _tbCosto.costo == 0) { mensaje += "Producto " + x.descripcionProducto + " no tiene costo\n"; } }); if (String.IsNullOrEmpty(mensaje.Trim())) { _BindingListtbInventario.ToList().ForEach(x => { tbTransaccionInventario _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Ingreso de inventario"; _tbTransaccionInventario.idBodega = idBodega; _tbTransaccionInventario.idProducto = x.idProducto; _tbTransaccionInventario.cantidad = x.cantidad; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == _tbTransaccionInventario.idBodega && I.idProducto == _tbTransaccionInventario.idProducto && I.estadoRegistro select I).FirstOrDefault(); if (_tbInventario == null) { _tbInventario = new tbInventario(); _tbInventario.idBodega = idBodega; _tbInventario.idProducto = x.idProducto; _tbInventario.fisicoDisponible = x.cantidad; _tbInventario.reservado = 0; _tbInventario.estadoRegistro = true; _tbInventario.fechaHoraIngreso = Program.fechaHora; _tbInventario.idUsuarioIngreso = idUsuario; _tbInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbInventario.AddObject(_tbInventario); } else { _tbInventario.fisicoDisponible = _tbInventario.fisicoDisponible + _tbTransaccionInventario.cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; } }); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Registro grabado satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); new frmReporteIngresoInventario(_BindingListtbInventario.ToList()).ShowDialog(); frmIngresoInventario_Load(null, null); } else { MessageBox.Show(mensaje, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } catch (Exception ex) { Util.MostrarException(this.Text, ex); } }
private void tsbGrabar_Click(object sender, EventArgs e) { dgvOrdenVentaFormaPago_CellEndEdit(null, null); string mensaje = String.Empty; decimal total = Decimal.Parse(txtTotal.Text.Trim(), NumberStyles.Currency, Application.CurrentCulture); decimal cancelado = Decimal.Parse(txtCancelado.Text.Trim(), NumberStyles.Currency, Application.CurrentCulture); long numeroFactura = 0; long.TryParse(txtNumeroFactura.Text.Trim(), out numeroFactura); if (numeroFactura == 0) { mensaje += "Favor ingrese número de factura\n"; } if (numeroFactura > 0 && edmCosolemFunctions.existNumeroFactura(idEmpresa, idTienda, numeroFactura)) { mensaje += "Número de factura ya existe\n"; } if (cancelado < total) { mensaje += "Total de " + Util.FormatoMoneda((total - cancelado), 2) + " pendiente por cancelar\n"; } if (_BindingListtbOrdenVentaFormaPago.Where(x => x.idFormaPago == 0).Count() > 0) { mensaje += "Favor seleccionar forma de pago\n"; } if (_BindingListtbOrdenVentaFormaPago.Where(x => x.valor == 0).Count() > 0) { mensaje += "Favor ingrese valor\n"; } if (String.IsNullOrEmpty(mensaje.Trim())) { ordenVenta.idEstadoOrdenVenta = 5; ordenVenta.idEmpresaFactura = idEmpresa; ordenVenta.idTiendaFactura = idTienda; ordenVenta.numeroFactura = numeroFactura; ordenVenta.fechaHoraFactura = Program.fechaHora; ordenVenta.fechaHoraUltimaModificacion = Program.fechaHora; ordenVenta.idUsuarioUltimaModificacion = idUsuario; ordenVenta.terminalUltimaModificacion = Program.terminal; ordenVenta.tbOrdenVentaDetalle.Where(x => x.estadoRegistro).ToList().ForEach(y => { long idProducto = y.idProducto; if (edmCosolemFunctions.isProductoInventariable(idProducto)) { long idBodega = y.idBodega.Value; int cantidad = y.cantidad; bool estadoRegistro = y.estadoRegistro; tbInventario _tbInventario = (from I in _dbCosolemEntities.tbInventario where I.idBodega == idBodega && I.idProducto == idProducto && estadoRegistro select I).FirstOrDefault(); _tbInventario.fisicoDisponible -= cantidad; _tbInventario.reservado -= cantidad; _tbInventario.fechaHoraUltimaModificacion = Program.fechaHora; _tbInventario.idUsuarioUltimaModificacion = idUsuario; _tbInventario.terminalUltimaModificacion = Program.terminal; tbTransaccionInventario _tbTransaccionInventario = new tbTransaccionInventario(); _tbTransaccionInventario.tipoTransaccion = "Egreso de inventario por factura " + Util.setFormatoNumeroFactura(idEmpresa, idTienda, numeroFactura); _tbTransaccionInventario.idBodega = idBodega; _tbTransaccionInventario.idProducto = idProducto; _tbTransaccionInventario.cantidad = -cantidad; _tbTransaccionInventario.estadoRegistro = true; _tbTransaccionInventario.fechaHoraIngreso = Program.fechaHora; _tbTransaccionInventario.idUsuarioIngreso = idUsuario; _tbTransaccionInventario.terminalIngreso = Program.terminal; _dbCosolemEntities.tbTransaccionInventario.AddObject(_tbTransaccionInventario); } }); _BindingListtbOrdenVentaFormaPago.ToList().ForEach(x => ordenVenta.tbOrdenVentaFormaPago.Add(x)); _dbCosolemEntities.SaveChanges(); MessageBox.Show("Orden de venta facturada satisfactoriamente", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); Excel.Application application = new Excel.Application(); application.Visible = false; Excel.Workbook workbook = application.Workbooks.Open(Application.StartupPath + "\\Reportes\\FORMATO FACTURA.xlsx"); Excel.Worksheet worksheet = workbook.Worksheets["FORMATO"]; worksheet.Cells[5, 2].value = ordenVenta.cliente; worksheet.Cells[6, 2].value = ordenVenta.numeroIdentificacion; worksheet.Cells[7, 2].value = ordenVenta.direccion; worksheet.Cells[5, 10].value = ordenVenta.fechaHoraFactura.Value.ToString("dd/MM/yyyy"); worksheet.Cells[6, 10].value = String.Join(", ", new List <string> { ordenVenta.convencional, ordenVenta.celular }); int RowIndex = 11; ordenVenta.tbOrdenVentaDetalle.Where(x => x.estadoRegistro).ToList().ForEach(y => { decimal precio = (ordenVenta.idFormaPago == 1 ? y.precioOferta : y.precioVentaPublico); if (ordenVenta.tipoVenta == "P") { precio = y.precio; } worksheet.Cells[RowIndex, 1].value = y.cantidad; worksheet.Cells[RowIndex, 3].value = y.tbProducto.descripcion; worksheet.Cells[RowIndex, 9].value = precio; worksheet.Cells[RowIndex, 11].value = precio * y.cantidad; RowIndex += 1; }); worksheet.Cells[22, 3].value = ordenVenta.tbFormaPago.descripcion + (ordenVenta.idFormaPago == 1 ? "" : " - " + ordenVenta.tbProductoFinancieroCabecera.descripcion); worksheet.Cells[23, 11].value = ordenVenta.subTotalBruto; worksheet.Cells[24, 5].value = Util.ConvertirNumeroALetras(ordenVenta.totalNeto.ToString(), true, "dólares"); worksheet.Cells[24, 11].value = (ordenVenta.tipoVenta == "P" ? ordenVenta.descuento : 0M); worksheet.Cells[26, 11].value = ordenVenta.IVA; worksheet.Cells[27, 11].value = ordenVenta.totalNeto; worksheet.PrintOut(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); workbook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value); application.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(application); System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook); System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet); this.DialogResult = System.Windows.Forms.DialogResult.OK; } else { MessageBox.Show(mensaje, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }