private static ComprasDetalleInfo CargarDetalleCompraAlmacen(IDataReader dr) { int colCount = dr.FieldCount; var values = new object[colCount]; #region Indices int indCompraId = dr.GetOrdinal("CompraId"); int indComprasDetalleId = dr.GetOrdinal("ComprasDetalleId"); int indProductoId = dr.GetOrdinal("ProductoId"); int indProducto = dr.GetOrdinal("Producto"); int indCodigo = dr.GetOrdinal("Codigo"); int indCantidad = dr.GetOrdinal("Cantidad"); int indPrecioUnitario = dr.GetOrdinal("PrecioUnitario"); int indUnidadMedidaId = dr.GetOrdinal("UnidadMedidaId"); int indUnidadMedida = dr.GetOrdinal("UnidadMedida"); int indSubTotal = dr.GetOrdinal("SubTotal"); int indIgv = dr.GetOrdinal("Igv"); int indTotal = dr.GetOrdinal("Total"); int indNumeroSerie = dr.GetOrdinal("NumeroSerie"); int indNumeroComprobante = dr.GetOrdinal("NumeroComprobante"); int indTipoDocumento = dr.GetOrdinal("TipoDocumento"); //int indUsuarioModificacionId = dr.GetOrdinal("UsuarioModificacionId"); //int indFechaModificacion = dr.GetOrdinal("FechaModificacion"); int indNumeroFila = dr.GetOrdinal("NumeroFila"); int indTotalFilas = dr.GetOrdinal("TotalFilas"); #endregion var tipoProductoInfo = new ComprasDetalleInfo(); dr.GetValues(values); #region Campos tipoProductoInfo.CompraId = Convert.ToInt32(values[indCompraId]); tipoProductoInfo.ComprasDetalleId = Convert.ToInt32(values[indComprasDetalleId]); tipoProductoInfo.ProductoId = Convert.ToInt32(values[indProductoId]); tipoProductoInfo.Producto = Convert.ToString(values[indProducto]); tipoProductoInfo.Codigo = Convert.ToString(values[indCodigo]); tipoProductoInfo.Cantidad = Convert.ToDecimal(values[indCantidad]); tipoProductoInfo.PrecioUnitario = Convert.ToDecimal(values[indPrecioUnitario]); tipoProductoInfo.UnidadMedidaId = Convert.ToInt32(values[indUnidadMedidaId]); tipoProductoInfo.UnidadMedida = Convert.ToString(values[indUnidadMedida]); tipoProductoInfo.SubTotal = Convert.ToDecimal(values[indSubTotal]); tipoProductoInfo.Igv = Convert.ToDecimal(values[indIgv]); tipoProductoInfo.Total = Convert.ToDecimal(values[indTotal]); tipoProductoInfo.NumeroComprobante = Convert.ToString(values[indNumeroComprobante]); tipoProductoInfo.NumeroSerie = Convert.ToString(values[indNumeroSerie]); tipoProductoInfo.TipoDocumento = Convert.ToString(values[indTipoDocumento]); //tipoProductoInfo.Activo = Convert.ToInt32(values[indActivo]); //tipoProductoInfo.UsuarioCreacionId = Convert.ToInt32(values[indUsuarioCreacionId]); //tipoProductoInfo.FechaCreacion = Convert.ToDateTime(values[indFechaCreacion]); //tipoProductoInfo.UsuarioModificacionId = Convert.ToInt32(values[indUsuarioModificacionId]); //tipoProductoInfo.FechaModificacion = Convert.ToDateTime(values[indFechaModificacion]); tipoProductoInfo.NumeroFila = Convert.ToInt32(values[indNumeroFila]); tipoProductoInfo.TotalFilas = Convert.ToInt32(values[indTotalFilas]); #endregion return(tipoProductoInfo); }
protected void GuardarCompraDetalle(object sender, EventArgs e) { var script = new StringBuilder(); var usuarioInfo = ObtenerUsuarioInfo(); var compraDetalleListaInfo = (List <ComprasDetalleInfo>)Session["CompraDetalle"]; if (compraDetalleListaInfo == null) { compraDetalleListaInfo = new List <ComprasDetalleInfo>(); } var compraInfo = new ComprasDetalleInfo(); compraInfo.ComprasDetalleId = (-1) * (compraDetalleListaInfo.Count + 1); compraInfo.CompraId = Convert.ToInt32(hdnCompraId.Value); compraInfo.ProductoId = Convert.ToInt32(hdnProductoId.Value); compraInfo.Cantidad = Convert.ToDecimal(txtCantidad.Text); compraInfo.PrecioUnitario = Convert.ToDecimal(txtPrecio.Text); compraInfo.SubTotal = Convert.ToDecimal(txtSubTotal.Text.Replace(",", "")); compraInfo.Igv = Convert.ToDecimal(txtIgv.Text.Replace(",", "")); compraInfo.Total = Convert.ToDecimal(txtTotal.Text.Replace(",", "")); compraInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; compraInfo.AlmacenId = Convert.ToInt32(ddlAlmacen.SelectedValue); compraInfo.Almacen = ddlAlmacen.SelectedItem.Text; compraInfo.Codigo = Request["txtProductoCodigo"]; compraInfo.Producto = Request["txtProductoDescripcion"]; compraInfo.UnidadMedida = ddlUnidad.SelectedItem.Text; compraDetalleListaInfo.Add(compraInfo); Session["CompraDetalle"] = compraDetalleListaInfo; grvVenta.DataSource = compraDetalleListaInfo; grvVenta.DataBind(); if (compraDetalleListaInfo.Count > 0) { grvVenta.HeaderRow.Attributes["style"] = "display: none"; grvVenta.UseAccessibleHeader = true; grvVenta.HeaderRow.TableSection = TableRowSection.TableHeader; } script.Append("CalcularMontoFinal();LimpiarProductoDetalle();"); RegistrarScript(script.ToString(), "GuardarCompra"); }
public int ActualizarCompraDetalle(ComprasDetalleInfo ventaInfo) { int resultado = 0; try { resultado = _ventaAccesoDatos.ActualizarCompraDetalle(ventaInfo); } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaLogicaNegocio); if (rethrow) { throw; } } return(resultado); }
public int ActualizarCompraDetalle(ComprasDetalleInfo compraDetalleInfo) { int resultado = 0; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "ActualizarComprasDetalle", CommandType = CommandType.StoredProcedure }; sqlComando.Parameters.Add("ComprasDetalleId", SqlDbType.Int).Value = compraDetalleInfo.ComprasDetalleId; sqlComando.Parameters.Add("CompraId", SqlDbType.Int).Value = compraDetalleInfo.CompraId; sqlComando.Parameters.Add("ProductoId", SqlDbType.Int).Value = compraDetalleInfo.ProductoId; sqlComando.Parameters.Add("Cantidad", SqlDbType.Decimal).Value = compraDetalleInfo.Cantidad; sqlComando.Parameters.Add("PrecioUnitario", SqlDbType.Decimal).Value = compraDetalleInfo.PrecioUnitario; sqlComando.Parameters.Add("SubTotal", SqlDbType.Decimal).Value = compraDetalleInfo.SubTotal; sqlComando.Parameters.Add("Igv", SqlDbType.Decimal).Value = compraDetalleInfo.Igv; sqlComando.Parameters.Add("Total", SqlDbType.Decimal).Value = compraDetalleInfo.Total; sqlComando.Parameters.Add("UsuarioModificacionId", SqlDbType.Int).Value = compraDetalleInfo.UsuarioModificacionId; oConnection.Open(); resultado = Convert.ToInt32(sqlComando.ExecuteScalar()); oConnection.Close(); } } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaAccesoDatos); if (rethrow) { throw ex; } } return(resultado); }
public int InsertarCompraDetalle(ComprasDetalleInfo ventaInfo) { int resultado; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "InsertarComprasDetalle", CommandType = CommandType.StoredProcedure }; //sqlComando.Parameters.Add("ComprasDetalleId", SqlDbType.Int).Value = ventaInfo.ComprasDetalleId; sqlComando.Parameters.Add("CompraId", SqlDbType.Int).Value = ventaInfo.CompraId; sqlComando.Parameters.Add("ProductoId", SqlDbType.Int).Value = ventaInfo.ProductoId; sqlComando.Parameters.Add("Cantidad", SqlDbType.Decimal).Value = ventaInfo.Cantidad; sqlComando.Parameters.Add("PrecioUnitario", SqlDbType.Decimal).Value = ventaInfo.PrecioUnitario; sqlComando.Parameters.Add("SubTotal", SqlDbType.Decimal).Value = ventaInfo.SubTotal; sqlComando.Parameters.Add("Igv", SqlDbType.Decimal).Value = ventaInfo.Igv; sqlComando.Parameters.Add("Total", SqlDbType.Decimal).Value = ventaInfo.Total; sqlComando.Parameters.Add("AlmacenId", SqlDbType.Int).Value = ventaInfo.AlmacenId; //sqlComando.Parameters.Add("Activo", SqlDbType.Int).Value = ventaInfo.Activo; sqlComando.Parameters.Add("UsuarioCreacionId", SqlDbType.Int).Value = ventaInfo.UsuarioCreacionId; oConnection.Open(); resultado = Convert.ToInt32(sqlComando.ExecuteScalar()); oConnection.Close(); } } catch (Exception ex) { throw ex; } return(resultado); }
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); }