public int InsertarMovimientos(MovimientosInfo movimientosInfo) { int resultado; try { using (var oConnection = new SqlConnection(HelperAccesoDatos.GetCadenaConexion())) { var sqlComando = new SqlCommand { Connection = oConnection, CommandText = "InsertarMovimientos", CommandType = CommandType.StoredProcedure }; //sqlComando.Parameters.Add("ComprasDetalleId", SqlDbType.Int).Value = ventaInfo.ComprasDetalleId; sqlComando.Parameters.Add("OperacionId", SqlDbType.Int).Value = movimientosInfo.OperacionId; sqlComando.Parameters.Add("TipoMovimientoId", SqlDbType.Int).Value = movimientosInfo.TipoMovimientoId; sqlComando.Parameters.Add("FechaOperacion", SqlDbType.DateTime2).Value = movimientosInfo.FechaOperacion; sqlComando.Parameters.Add("Glosa", SqlDbType.VarChar).Value = movimientosInfo.Glosa; sqlComando.Parameters.Add("UsuarioCreacionId", SqlDbType.Int).Value = movimientosInfo.UsuarioCreacionId; oConnection.Open(); resultado = Convert.ToInt32(sqlComando.ExecuteScalar()); oConnection.Close(); } } catch (Exception ex) { throw ex; } return(resultado); }
public int InsertarMovimientos(MovimientosInfo movimientosInfo) { int resultado = 0; try { resultado = _movimientoAccesoDatos.InsertarMovimientos(movimientosInfo); } catch (Exception ex) { bool rethrow = ExceptionPolicy.HandleException(ex, Constantes.ExcepcionPoliticaLogicaNegocio); if (rethrow) { throw; } } 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); }
protected void btnGuardarTraslado_OnClick(object sender, EventArgs e) { var usuarioInfo = ObtenerUsuarioInfo(); var script = new StringBuilder(String.Empty); var mensaje = String.Empty; var ventaId = Convert.ToInt32(hdnVentaId.Value); var productoId = Convert.ToInt32(hdnProductoId.Value); var trasladoInfo = new TrasladoAlmacenInfo(); trasladoInfo.AlmacenOrigenId = Convert.ToInt32(ddlAlmacenOrigen.SelectedValue); trasladoInfo.AlmacenDestinoId = Convert.ToInt32(ddlAlmacenDestino.SelectedValue); trasladoInfo.ProductoId = productoId; trasladoInfo.CantidadProducto = Convert.ToDecimal(txtCantidad.Text); trasladoInfo.UsuarioResponsableId = Convert.ToInt32(ddlResponsable.SelectedValue); trasladoInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; trasladoInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; trasladoInfo.FechaTraslado = DateTime.ParseExact(txtFechaTraslado.Text.Trim(), "dd/MM/yyyy", null); //se registra el traslado var trasladoId = new Negocio.TrasladoAlmacen().Insertar(trasladoInfo); //se crea o actualiza el producto en el nuevo almacen destino var inventarioInfo = new InventarioInfo(); inventarioInfo.AlmacenId = Convert.ToInt32(ddlAlmacenDestino.SelectedValue); inventarioInfo.ProductoId = productoId; inventarioInfo.InventarioActual = Convert.ToDecimal(txtCantidad.Text); inventarioInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; inventarioInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; var inventarioDestinoId = new Negocio.Inventario().Insertar(inventarioInfo); //se crea el movimiento de ingreso de almacen var movimientosInfo = new MovimientosInfo(); movimientosInfo.OperacionId = trasladoId; movimientosInfo.TipoMovimientoId = Constantes.TipoMovimientoTrasladoIngreso; movimientosInfo.FechaOperacion = DateTime.Now; movimientosInfo.Glosa = "Traslado de Inventario Ingreso"; movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new Negocio.Movimientos().InsertarMovimientos(movimientosInfo); //Se actualiza el saldo del producto en el almacenOriginal var inventarioOrigenInfo = new InventarioInfo(); inventarioOrigenInfo.AlmacenId = Convert.ToInt32(ddlAlmacenOrigen.SelectedValue); inventarioOrigenInfo.ProductoId = productoId; inventarioOrigenInfo.InventarioActual = (-1) * Convert.ToDecimal(txtCantidad.Text); //se reduce el stock inventarioOrigenInfo.UsuarioModificacionId = usuarioInfo.UsuarioId; inventarioOrigenInfo.TipoNegocioId = usuarioInfo.TipoNegocioId; var inventarioOrigenId = new Negocio.Inventario().Actualizar(inventarioOrigenInfo); //se crea el movimiento de salida de almacen movimientosInfo = new MovimientosInfo(); movimientosInfo.OperacionId = trasladoId; movimientosInfo.TipoMovimientoId = Constantes.TipoMovimientoTrasladoEgreso; movimientosInfo.FechaOperacion = DateTime.Now; movimientosInfo.Glosa = "Traslado de Inventario Egreso"; movimientosInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new Negocio.Movimientos().InsertarMovimientos(movimientosInfo); mensaje = "Se realizo el traslado correctamente"; script.Append("MostrarMensaje('" + mensaje + "');"); script.Append("LimpiarVenta();"); script.Append("var modalDialog = $find('mpeTraslado'); modalDialog.hide();"); CargarDatos(); RegistrarScript(script.ToString(), "GuardarTraslado"); }