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 int InsertarCompra(CompraInfo ventaInfo) { int resultado = 0; try { resultado = _ventaAccesoDatos.InsertarCompra(ventaInfo); } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaLogicaNegocio); if (rethrow) { throw; } } return(resultado); }
public int ActualizarCompra(CompraInfo compraInfo) { int resultado; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "ActualizarCompras", CommandType = CommandType.StoredProcedure }; //sqlComando.Parameters.Add("ComprasDetalleId", SqlDbType.Int).Value = ventaInfo.ComprasDetalleId; sqlComando.Parameters.Add("CompraId", SqlDbType.Int).Value = compraInfo.CompraId; sqlComando.Parameters.Add("ProveedorId", SqlDbType.Int).Value = compraInfo.ProveedorId; sqlComando.Parameters.Add("NumeroComprobante", SqlDbType.VarChar).Value = compraInfo.NumeroComprobante; sqlComando.Parameters.Add("NumeroSerie", SqlDbType.VarChar).Value = compraInfo.NumeroSerie; sqlComando.Parameters.Add("MonedaId", SqlDbType.Int).Value = compraInfo.MonedaId; sqlComando.Parameters.Add("TipoDocumentoId", SqlDbType.Int).Value = compraInfo.TipoDocumentoId; //sqlComando.Parameters.Add("FormaPagoId", SqlDbType.Int).Value = ventaInfo.FormaPagoId; sqlComando.Parameters.Add("FechaEmision", SqlDbType.DateTime).Value = compraInfo.FechaEmision.Date; //sqlComando.Parameters.Add("FechaVencimiento", SqlDbType.DateTime).Value = ventaInfo.FechaVencimiento.Date; //sqlComando.Parameters.Add("FechaPago", SqlDbType.DateTime).Value = ventaInfo.FechaPago == DateTime.MinValue ? (object)System.DBNull.Value : ventaInfo.FechaPago.Date; sqlComando.Parameters.Add("EstadoComprobanteId", SqlDbType.Int).Value = compraInfo.EstadoComprobanteId; sqlComando.Parameters.Add("Glosa", SqlDbType.VarChar).Value = compraInfo.Glosa; sqlComando.Parameters.Add("MontoCompra", SqlDbType.Decimal).Value = compraInfo.SubTotal; sqlComando.Parameters.Add("MontoIgv", SqlDbType.Decimal).Value = compraInfo.Igv; sqlComando.Parameters.Add("MontoTotal", SqlDbType.Decimal).Value = compraInfo.Total; sqlComando.Parameters.Add("MotivoIngresoId", SqlDbType.Int).Value = compraInfo.MotivoIngresoId; sqlComando.Parameters.Add("UsuarioModificacionId", SqlDbType.Int).Value = compraInfo.UsuarioModificacionId; oConnection.Open(); resultado = Convert.ToInt32(sqlComando.ExecuteScalar()); oConnection.Close(); } } catch (Exception ex) { throw ex; } return(resultado); }
public int InsertarCompra(CompraInfo compraInfo) { int resultado; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "InsertarCompras", CommandType = CommandType.StoredProcedure }; sqlComando.Parameters.Add("ProveedorId", SqlDbType.Int).Value = compraInfo.ProveedorId; sqlComando.Parameters.Add("NumeroComprobante", SqlDbType.VarChar).Value = compraInfo.NumeroComprobante; sqlComando.Parameters.Add("NumeroSerie", SqlDbType.VarChar).Value = compraInfo.NumeroSerie; sqlComando.Parameters.Add("MonedaId", SqlDbType.Int).Value = compraInfo.MonedaId; sqlComando.Parameters.Add("TipoDocumentoId", SqlDbType.Int).Value = compraInfo.TipoDocumentoId; sqlComando.Parameters.Add("FechaEmision", SqlDbType.DateTime).Value = compraInfo.FechaEmision.Date; sqlComando.Parameters.Add("EstadoComprobanteId", SqlDbType.Int).Value = compraInfo.EstadoComprobanteId; sqlComando.Parameters.Add("Glosa", SqlDbType.VarChar).Value = compraInfo.Glosa; sqlComando.Parameters.Add("MontoCompra", SqlDbType.Decimal).Value = compraInfo.SubTotal; sqlComando.Parameters.Add("MontoIgv", SqlDbType.Decimal).Value = compraInfo.Igv; sqlComando.Parameters.Add("MontoTotal", SqlDbType.Decimal).Value = compraInfo.Total; sqlComando.Parameters.Add("MotivoingresoId", SqlDbType.Int).Value = compraInfo.MotivoIngresoId; sqlComando.Parameters.Add("TipoNegocioId", SqlDbType.Int).Value = compraInfo.TipoNegocioId; sqlComando.Parameters.Add("UsuarioCreacionId", SqlDbType.Int).Value = compraInfo.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); }
private static CompraInfo CargarCompraInfoPag(IDataReader dr) { int colCount = dr.FieldCount; var values = new object[colCount]; #region Indices int indCompraId = dr.GetOrdinal("CompraId"); int indProveedorId = dr.GetOrdinal("ProveedorId"); int indProveedor = dr.GetOrdinal("Proveedor"); int indGlosa = dr.GetOrdinal("Glosa"); int indNumeroComprobante = dr.GetOrdinal("NumeroComprobante"); int indNumeroSerie = dr.GetOrdinal("NumeroSerie"); int indTipoDocumentoId = dr.GetOrdinal("TipoDocumentoId"); int indTipoDocumento = dr.GetOrdinal("TipoDocumento"); int indMoneda = dr.GetOrdinal("Moneda"); int indMonedaId = dr.GetOrdinal("MonedaId"); int indFechaEmision = dr.GetOrdinal("FechaEmision"); int indSubTotal = dr.GetOrdinal("SubTotal"); int indIgv = dr.GetOrdinal("Igv"); int indTotal = dr.GetOrdinal("Total"); int indMotivoIngresoId = dr.GetOrdinal("MotivoIngresoId"); int indTipoNegocioId = dr.GetOrdinal("TipoNegocioId"); int indEstadoComprobanteId = dr.GetOrdinal("EstadoComprobanteId"); int indEstadoComprobante = dr.GetOrdinal("EstadoComprobante"); int indNumeroFila = dr.GetOrdinal("NumeroFila"); int indTotalFilas = dr.GetOrdinal("TotalFilas"); #endregion var compraInfo = new CompraInfo(); dr.GetValues(values); #region Campos compraInfo.CompraId = Convert.ToInt32(values[indCompraId]); compraInfo.ProveedorId = Convert.ToInt32(values[indProveedorId]); compraInfo.Proveedor = Convert.ToString(values[indProveedor]); compraInfo.NumeroComprobante = Convert.ToString(values[indNumeroComprobante]); compraInfo.NumeroSerie = Convert.ToString(values[indNumeroSerie]); compraInfo.TipoDocumento = Convert.ToString(values[indTipoDocumento]); compraInfo.Moneda = Convert.ToString(values[indMoneda]); compraInfo.FechaEmision = Convert.ToDateTime(values[indFechaEmision]); compraInfo.EstadoComprobante = Convert.ToString(values[indEstadoComprobante]); if (values[indSubTotal] != DBNull.Value) { compraInfo.SubTotal = Convert.ToDecimal(values[indSubTotal]); } if (values[indIgv] != DBNull.Value) { compraInfo.Igv = Convert.ToDecimal(values[indIgv]); } if (values[indTotal] != DBNull.Value) { compraInfo.Total = Convert.ToDecimal(values[indTotal]); } compraInfo.MonedaId = Convert.ToInt32(values[indMonedaId]); compraInfo.TipoDocumentoId = Convert.ToInt32(values[indTipoDocumentoId]); if (values[indEstadoComprobanteId] != DBNull.Value) { compraInfo.EstadoComprobanteId = Convert.ToInt32(values[indEstadoComprobanteId]); } if (values[indGlosa] != DBNull.Value) { compraInfo.Glosa = Convert.ToString(values[indGlosa]); } if (values[indMotivoIngresoId] != DBNull.Value) { compraInfo.MotivoIngresoId = Convert.ToInt32(values[indMotivoIngresoId]); } compraInfo.TipoNegocioId = Convert.ToInt32(values[indTipoNegocioId]); compraInfo.NumeroFila = Convert.ToInt32(values[indNumeroFila]); compraInfo.TotalFilas = Convert.ToInt32(values[indTotalFilas]); #endregion return(compraInfo); }