private void CargarDatos() { var usuarioInfo = ObtenerUsuarioInfo(); var script = new StringBuilder(""); grvVenta.DataBind(); int numeroRegistros = Convert.ToInt16(ddlNumeroRegistros.SelectedValue); int numeroPagina = Convert.ToInt16(ViewState["PageIndex"]); int indicePagina = numeroPagina == 0 ? 0 : numeroPagina - 1; pageIndex = indicePagina + 1; var compraInfoLista = new Negocio.Compra().ListarPaginado(0, 0, usuarioInfo.TipoNegocioId, numeroRegistros, indicePagina); grvVenta.DataSource = compraInfoLista; grvVenta.DataBind(); if (compraInfoLista.Count > 0) { grvVenta.HeaderRow.Attributes["style"] = "display: none"; grvVenta.UseAccessibleHeader = true; grvVenta.HeaderRow.TableSection = TableRowSection.TableHeader; } rowCount = compraInfoLista.Count > 0 ? compraInfoLista.First().TotalFilas : 0; pageCount = CalcPageCount(rowCount); ViewState["PageCount"] = pageCount; #region Texto del Pie de Página if (compraInfoLista.Count > 0) { if (numeroRegistros == 0) { lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros"; script.Append("document.getElementById('lblPaginacion').innerText = '"); script.Append("Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros';"); } else { lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros"; script.Append("document.getElementById('lblPaginacion').innerText = '"); script.Append("Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros';"); } } else { lblPaginacion.Text = "No se obtuvieron resultados"; script.Append("document.getElementById('lblPaginacion').innerText = 'No se obtuvieron resultados';"); } #endregion RefreshPageButtons(); RegistrarScript(script.ToString(), "Paginacion"); }
protected void btnGuardarCompra_OnClick(object sender, EventArgs e) { var usuarioInfo = ObtenerUsuarioInfo(); var script = new StringBuilder(String.Empty); var mensaje = String.Empty; var compraId = Convert.ToInt32(hdnCompraId.Value); #region Datos Compra var compraInfo = new CompraInfo(); compraInfo.CompraId = Convert.ToInt32(hdnCompraId.Value); compraInfo.ProveedorId = Convert.ToInt32(hdnProveedorId.Value.Trim()); compraInfo.TipoDocumentoId = Convert.ToInt32(ddlTipoComprobante.SelectedValue); compraInfo.NumeroSerie = txtSerie.Text.Trim(); compraInfo.NumeroComprobante = txtNumeroDocumento.Text.Trim(); compraInfo.MonedaId = Convert.ToInt32(ddlMoneda.SelectedValue); compraInfo.FechaEmision = Convert.ToDateTime(txtFechaEmision.Text.Trim()); //compraInfo.FechaVencimiento = Convert.ToDateTime(txtFechaVencimiento.Text.Trim()); compraInfo.Glosa = txtGlosa.Text.Trim(); #endregion if (compraId.Equals(0)) { compraInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; compraId = new Negocio.Compra().InsertarCompra(compraInfo); if (compraId > 0) { script.Append("document.getElementById('hdnCompraId').value = " + compraId + ";"); mensaje = "Se registró la Compra correctamente"; } else { //mensaje = "Ya existe una Venta registrado con el número de comprobante: " + txtNumeroComprobante.Text.Trim(); } } else { compraInfo.UsuarioModificacionId = usuarioInfo.UsuarioId; compraId = new Negocio.Compra().ActualizarCompra(compraInfo); if (compraId > 0) { mensaje = "Se actualizó la Compra correctamente"; } else { //mensaje = "Ya existe una Venta registrada con el número de comprobante: " + txtNumeroComprobante.Text.Trim(); } } script.Append("MostrarMensaje('" + mensaje + "');"); script.Append("LimpiarProductoDetalle();"); //CargarDatos(); RegistrarScript(script.ToString(), "GuardarVenta"); }
public static string AnularComprobante(int compraId) { var mensaje = String.Empty; try { var usuarioInfo = ObtenerUsuarioInfo(); var compraDetalleOriginal = new Negocio.Compra().ListarComprasDetalle(0, compraId); //detalle compra original var tieneSaldoInventario = true; var almacenRevisar = compraDetalleOriginal.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenRevisar) { var productosAlmacen = compraDetalleOriginal.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioReducir = compraDetalleOriginal.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); //Se consulta a BD si hay saldo var saldoActual = new Negocio.Inventario().Listar(almacen, producto, usuarioInfo.TipoNegocioId); if (saldoActual.Count() > 0 && !((saldoActual.First().InventarioActual - inventarioReducir) > 0)) { tieneSaldoInventario = false; break; } } if (!tieneSaldoInventario) { break; } } if (tieneSaldoInventario) { var glosa = "Anulación de comprobante"; Negocio.Helper.ActualizarColumnasTabla("Compras", new string[] { "EstadoComprobanteId", "Glosa", "UsuarioModificacionId", "FechaModificacion" }, new string[] { Constantes.EstadoComprobanteCompraAnulado.ToString(), glosa, usuarioInfo.UsuarioId.ToString(), DateTime.Now.ToString("yyyyMMdd HH:mm:ss") }, new string[] { "CompraId" }, new string[] { compraId.ToString() }); //Al anular el comprobante, se reduce del inventario #region Actualizacion Almacen //Reduccion de Inventario var almacenesAsignados = compraDetalleOriginal.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenesAsignados) { var productosAlmacen = compraDetalleOriginal.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioInfo = new InventarioInfo(); inventarioInfo.AlmacenId = almacen; inventarioInfo.ProductoId = producto; inventarioInfo.InventarioActual = (-1) * compraDetalleOriginal.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; inventarioInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; //Se crea el registro en la tabla inventario new Negocio.Inventario().Actualizar(inventarioInfo); } } #endregion mensaje = compraId + "@" + "El Comprobante se anuló correctamente."; } else { mensaje = "-2" + "@" + "No hay saldo disponible en el Inventario."; } } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion); mensaje = "-1"; mensaje = mensaje + "@" + (rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion); } return(mensaje); }
private void CargarDatos(int codigoCompra) { var usuarioInfo = ObtenerUsuarioInfo(); var script = new StringBuilder(""); grvVenta.DataBind(); int numeroRegistros = 10; int numeroPagina = Convert.ToInt16(ViewState["PageIndex"]); int indicePagina = numeroPagina == 0 ? 0 : numeroPagina - 1; pageIndex = indicePagina + 1; #region Cargar Datos Compra var compra = new Negocio.Compra().ListarPaginado(codigoCompra, 0, usuarioInfo.TipoNegocioId, 0, 0).First(); var proveedor = new Negocio.Proveedor().Listar(compra.ProveedorId).First(); ddlTipoComprobante.SelectedValue = "0" + compra.TipoDocumentoId.ToString(); txtSerie.Text = compra.NumeroSerie; txtNumeroDocumento.Text = compra.NumeroComprobante; ddlMoneda.SelectedValue = compra.MonedaId.ToString(); txtFechaEmision.Text = compra.FechaEmision.ToString("dd/MM/yyyy"); txtProveedor.Text = proveedor.Nombre; txtDireccion.Text = proveedor.Direccion; txtNumeroDocumentoProveedor.Text = proveedor.NumeroDocumento; txtGlosa.Text = compra.Glosa; lblComprobanteSubTotal.Text = compra.SubTotal.ToString("###,##0.#0"); lblComprobanteIgv.Text = compra.Igv.ToString("###,##0.#0"); lblComprobanteTotal.Text = compra.Total.ToString("###,##0.#0"); hdnProveedorId.Value = proveedor.ProveedorId.ToString(); hdnEstadoComprobanteId.Value = compra.EstadoComprobanteId.ToString(); var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMotivoIngresoCompra).ToList(); if (("0" + compra.TipoDocumentoId.ToString()).Equals("01") || ("0" + compra.TipoDocumentoId.ToString()).Equals("09")) { tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo == Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList(); } else { tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo != Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList(); } LlenarCombo(ddlMotivoIngreso, tablaMaestraInfo, "Codigo", "NombreLargo"); ddlMotivoIngreso.SelectedValue = compra.MotivoIngresoId.ToString(); if (compra.EstadoComprobanteId == Constantes.EstadoComprobanteCompraAnulado) { ddlTipoComprobante.Enabled = false; txtSerie.ReadOnly = true; txtNumeroDocumento.ReadOnly = true; ddlMoneda.Enabled = false; ddlAlmacen.Enabled = false; txtFechaEmision.ReadOnly = true; txtProveedor.ReadOnly = true; txtGlosa.ReadOnly = true; btnAgregarItem.Enabled = false; btnCancelar.Enabled = false; ddlMotivoIngreso.Enabled = false; lblDetalleCompra.Text = "DETALLE COMPRA"; script.Append("document.getElementById('lblDetalleCompra').className ='lblTitulo';"); script.Append("document.getElementById('trDatosProducto').style.display='none';"); script.Append("document.getElementById('trMontosProducto').style.display='none';"); script.Append("document.getElementById('trOpcionesItem').style.display='none';"); script.Append("document.getElementById('imgBuscarCliente').style.display='none';"); script.Append("document.getElementById('imgFechaEmision').style.display='none';"); script.Append("document.getElementById('btnGuardar').style.display='none';"); script.Append("document.getElementById('btnCerrar').style.display='';"); } else { txtProveedor.ReadOnly = true; txtGlosa.ReadOnly = true; script.Append("document.getElementById('imgBuscarCliente').style.display='none';"); script.Append("document.getElementById('btnAnular').style.display='';"); } #endregion var compraInfoLista = new Negocio.Compra().ListarComprasDetalle(0, codigoCompra); grvVenta.DataSource = compraInfoLista; grvVenta.DataBind(); if (compraInfoLista.Count > 0) { grvVenta.HeaderRow.Attributes["style"] = "display: none"; grvVenta.UseAccessibleHeader = true; grvVenta.HeaderRow.TableSection = TableRowSection.TableHeader; Session["CompraDetalle"] = compraInfoLista; } else { Session["CompraDetalle"] = null; } rowCount = compraInfoLista.Count > 0 ? compraInfoLista.First().TotalFilas : 0; pageCount = CalcPageCount(rowCount); ViewState["PageCount"] = pageCount; #region Texto del Pie de Página if (compraInfoLista.Count > 0) { if (numeroRegistros == 0) { lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros"; script.Append("document.getElementById('lblPaginacion').innerText = '"); script.Append("Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros';"); } else { lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros"; script.Append("document.getElementById('lblPaginacion').innerText = '"); script.Append("Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros';"); } } else { lblPaginacion.Text = "No se obtuvieron resultados"; script.Append("document.getElementById('lblPaginacion').innerText = 'No se obtuvieron resultados';"); } #endregion RefreshPageButtons(); RegistrarScript(script.ToString(), "Paginacion"); }
public static string GenerarComprobante(int compraId, int proveedorId, string tipoComprobanteId, string serie, string numeroComprobante, string fechaEmision, int monedaId, decimal montoCompra, decimal montoIgv, decimal montoTotal, string glosa, int motivoIngresoId) { var mensaje = String.Empty; try { var usuarioInfo = ObtenerUsuarioInfo(); #region Compra var compraInfo = new CompraInfo(); compraInfo.CompraId = compraId; compraInfo.ProveedorId = proveedorId; compraInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; compraInfo.TipoDocumentoId = Convert.ToInt32(tipoComprobanteId); compraInfo.NumeroComprobante = numeroComprobante; compraInfo.NumeroSerie = serie; compraInfo.Glosa = glosa; compraInfo.FechaEmision = DateTime.ParseExact(fechaEmision, "dd/MM/yyyy", null); compraInfo.EstadoComprobanteId = Constantes.EstadoComprobanteCompraIngresado; compraInfo.SubTotal = montoCompra; compraInfo.Igv = montoIgv; compraInfo.Total = montoTotal; compraInfo.MotivoIngresoId = motivoIngresoId; compraInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; compraInfo.MonedaId = monedaId; #endregion if (compraId > 0) { var compraDetalleListaInfo = (List <ComprasDetalleInfo>)HttpContext.Current.Session["CompraDetalle"]; //detalle compra modificado var compraDetalleOriginal = new Negocio.Compra().ListarComprasDetalle(0, compraId); //detalle compra original var listaIncrementaInventario = new List <ComprasDetalleInfo>(); var listaReduceInventario = new List <ComprasDetalleInfo>(); var listaEliminados = new List <ComprasDetalleInfo>(); //var ventaDetalleListaInfo = (List<VentaDetalleInfo>)grvItem.DataSource; foreach (var cdModificada in compraDetalleListaInfo) { var detOriginal = (from cdOriginal in compraDetalleOriginal where cdOriginal.ComprasDetalleId == cdModificada.ComprasDetalleId select cdOriginal); if (detOriginal.Count() > 0) { if (cdModificada.AlmacenId == detOriginal.First().AlmacenId) { if (cdModificada.ProductoId == detOriginal.First().ProductoId) { if (cdModificada.Cantidad > detOriginal.First().Cantidad) //Incremento de inventario { var diferencia = cdModificada.Cantidad - detOriginal.First().Cantidad; detOriginal.First().Cantidad = diferencia; listaIncrementaInventario.Add(detOriginal.First()); } else if (cdModificada.Cantidad < detOriginal.First().Cantidad) //reduccion de inventario { var diferencia = cdModificada.Cantidad - detOriginal.First().Cantidad; detOriginal.First().Cantidad = Math.Abs(diferencia); listaReduceInventario.Add(detOriginal.First()); } } else { //Al ser un producto distinto, el inventario original debe de reducirse y el modificado debe de agregarse listaIncrementaInventario.Add(cdModificada); listaReduceInventario.Add(detOriginal.First()); } } else { //Al ser un alamcen distinto, no importa el producto, el inventario original debe de reducirse y el modificado debe de agregarse listaIncrementaInventario.Add(cdModificada); listaReduceInventario.Add(detOriginal.First()); } } else { listaIncrementaInventario.Add(cdModificada); //detOriginal.First().Eliminado = 1; //listaReduceInventario.Add(detOriginal.First()); //listaEliminados.Add(detOriginal.First()); } } //buscamos los items eliminados de la lista original para reducir inventario y eliminar del detalle var codigosDetalleCompra = compraDetalleListaInfo.Where(p => p.ComprasDetalleId > 0).Select(x => x.ComprasDetalleId).ToArray(); listaEliminados.AddRange(compraDetalleOriginal.Where(p => !codigosDetalleCompra.Contains(p.ComprasDetalleId))); listaReduceInventario.AddRange(compraDetalleOriginal.Where(p => !codigosDetalleCompra.Contains(p.ComprasDetalleId))); var tieneSaldoInventario = true; var almacenRevisar = listaReduceInventario.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenRevisar) { var productosAlmacen = listaReduceInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioReducir = listaReduceInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); //Se consulta a BD si hay saldo var saldoActual = new Negocio.Inventario().Listar(almacen, producto, usuarioInfo.TipoNegocioId); if (saldoActual.Count() > 0 && !((saldoActual.First().InventarioActual - inventarioReducir) > 0)) { tieneSaldoInventario = false; break; } } if (!tieneSaldoInventario) { break; } } if (tieneSaldoInventario) { new Negocio.Compra().ActualizarCompra(compraInfo); #region Actualizacion Compra Detalle //Actualizacion de detalle de compra foreach (var compraDetalle in compraDetalleListaInfo) { if (compraDetalle.Eliminado == 0) { var compraDetalleInfo = new ComprasDetalleInfo(); compraDetalleInfo.CompraId = compraId; compraDetalleInfo.ComprasDetalleId = compraDetalle.ComprasDetalleId; compraDetalleInfo.ProductoId = compraDetalle.ProductoId; compraDetalleInfo.Cantidad = compraDetalle.Cantidad; compraDetalleInfo.PrecioUnitario = compraDetalle.PrecioUnitario; compraDetalleInfo.SubTotal = compraDetalle.SubTotal; compraDetalleInfo.Igv = compraDetalle.Igv; compraDetalleInfo.Total = compraDetalle.Total; compraDetalleInfo.AlmacenId = compraDetalle.AlmacenId; if (compraDetalle.ComprasDetalleId > 0) { compraDetalleInfo.UsuarioModificacionId = usuarioInfo.UsuarioId; new Negocio.Compra().ActualizarCompraDetalle(compraDetalleInfo); } else { compraDetalleInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new Negocio.Compra().InsertarCompraDetalle(compraDetalleInfo); } } } //Eliminacion de registros de compra detalle foreach (var compraDetalle in listaEliminados) { new Negocio.Compra().EliminarCompraDetalle(compraDetalle.ComprasDetalleId); } #endregion #region Actualizacion Almacen //Incremento de Inventario var almacenesAsignados = listaIncrementaInventario.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenesAsignados) { var productosAlmacen = listaIncrementaInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioInfo = new InventarioInfo(); inventarioInfo.AlmacenId = almacen; inventarioInfo.ProductoId = producto; inventarioInfo.InventarioActual = listaIncrementaInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; inventarioInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; //Se crea el registro en la tabla inventario new Negocio.Inventario().Insertar(inventarioInfo); } } //Reduccion de Inventario almacenesAsignados = listaReduceInventario.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenesAsignados) { var productosAlmacen = listaReduceInventario.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioInfo = new InventarioInfo(); inventarioInfo.AlmacenId = almacen; inventarioInfo.ProductoId = producto; inventarioInfo.InventarioActual = (-1) * listaReduceInventario.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); inventarioInfo.UsuarioModificacionId = usuarioInfo.UsuarioId; inventarioInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; //Se crea el registro en la tabla inventario new Negocio.Inventario().Actualizar(inventarioInfo); } } #endregion mensaje = compraId + "@" + "El Comprobante se actualizó correctamente."; } else { mensaje = "-2" + "@" + "No hay saldo disponible en el Inventario."; } } else { compraId = new Negocio.Compra().InsertarCompra(compraInfo); #region Compra Detalle var compraDetalleListaInfo = (List <ComprasDetalleInfo>)HttpContext.Current.Session["CompraDetalle"]; //var ventaDetalleListaInfo = (List<VentaDetalleInfo>)grvItem.DataSource; foreach (var vd in compraDetalleListaInfo) { var compraDetalleInfo = new ComprasDetalleInfo(); compraDetalleInfo.CompraId = compraId; compraDetalleInfo.ProductoId = vd.ProductoId; compraDetalleInfo.Cantidad = vd.Cantidad; compraDetalleInfo.PrecioUnitario = vd.PrecioUnitario; compraDetalleInfo.SubTotal = vd.SubTotal; compraDetalleInfo.Igv = vd.Igv; compraDetalleInfo.Total = vd.Total; //compraDetalleInfo.AsignacionAlmacen = 1;//por defecto estan asignados compraDetalleInfo.AlmacenId = vd.AlmacenId; compraDetalleInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new Negocio.Compra().InsertarCompraDetalle(compraDetalleInfo); } #endregion #region Asignacion Almacen var almacenesAsignados = compraDetalleListaInfo.Select(p => p.AlmacenId).Distinct(); foreach (var almacen in almacenesAsignados) { var productosAlmacen = compraDetalleListaInfo.Where(p => p.AlmacenId == almacen).Select(grp => grp.ProductoId).Distinct(); foreach (var producto in productosAlmacen) { var inventarioInfo = new InventarioInfo(); inventarioInfo.AlmacenId = almacen; inventarioInfo.ProductoId = producto; inventarioInfo.InventarioActual = compraDetalleListaInfo.Where(p => p.AlmacenId == almacen && p.ProductoId == producto).Sum(x => x.Cantidad); inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; inventarioInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; //Se crea el registro en la tabla inventario new Negocio.Inventario().Insertar(inventarioInfo); } } #endregion #region Tabla Movimientos var movimientosInfo = new MovimientosInfo(); movimientosInfo.OperacionId = compraId; movimientosInfo.TipoMovimientoId = Constantes.TipoMovimientoCompra; movimientosInfo.FechaOperacion = DateTime.Now; movimientosInfo.Glosa = String.Empty; movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new Negocio.Movimientos().InsertarMovimientos(movimientosInfo); #endregion mensaje = compraId + "@" + "El Comprobante se registró correctamente."; } } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaPresentacion); mensaje = "-1"; mensaje = mensaje + "@" + (rethrow ? ex.Message : Constantes.ExcepcionPoliticaPresentacion); } return(mensaje); }