public static void AfectarExistenciaYKardex(int iParteID, int iSucursalID, int iOperacionID, string sFolio, int iUsuarioID, string sEntidad , string sOrigen, string sDestino, decimal mCantidad, decimal mImporte, string sTabla, int iId) { // Se manda a afectar la existencia AdmonProc.AgregarExistencia(iParteID, iSucursalID, mCantidad, sTabla, iId); // Se manda a afectar en el kardex var oSucursal = Datos.GetEntity <Sucursal>(c => c.SucursalID == iSucursalID && c.Estatus); var oKardex = new ParteKardex() { ParteID = iParteID, OperacionID = iOperacionID, SucursalID = iSucursalID, Folio = sFolio, Fecha = DateTime.Now, RealizoUsuarioID = iUsuarioID, Entidad = sEntidad, Origen = sOrigen, Destino = sDestino, Cantidad = mCantidad, Importe = mImporte, RelacionTabla = sTabla, RelacionID = iId }; AdmonProc.RegistrarKardex(oKardex); }
public static void EliminarVenta(int iVentaID) { var oVenta = Datos.GetEntity <Venta>(q => q.VentaID == iVentaID && q.Estatus); // De momento sólo están contempladas las ventas que sólo han sido registradas. No cobradas, pagadas, canceladas if (oVenta.VentaEstatusID != Cat.VentasEstatus.Realizada) { return; } var oVentaDet = Datos.GetListOf <VentaDetalle>(q => q.VentaID == oVenta.VentaID && q.Estatus); // Se regresa la existencia y se borra el detalle de la venta foreach (var oParteDet in oVentaDet) { AdmonProc.AgregarExistencia(oParteDet.ParteID, oVenta.SucursalID, oParteDet.Cantidad, Cat.Tablas.Venta, iVentaID); Datos.Eliminar <VentaDetalle>(oParteDet, true); } // Se borra la venta en sí Datos.Eliminar <Venta>(oVenta, true); // Se borran los datos del kardex var oPartesKardex = Datos.GetListOf <ParteKardex>(c => c.OperacionID == Cat.OperacionesKardex.Venta && c.RelacionTabla == Cat.Tablas.Venta && c.RelacionID == iVentaID); foreach (var oReg in oVentaDet) { var oKardex = oPartesKardex.FirstOrDefault(c => c.ParteID == oReg.ParteID); if (oKardex == null) { continue; } Datos.Eliminar <ParteKardex>(oKardex); // Se verifica si hubo algún otro movimiento en kardex de la misma parte, para hacer el reajuste var oDespues = Datos.GetListOf <ParteKardex>(c => c.ParteKardexID > oKardex.ParteKardexID && c.ParteID == oKardex.ParteID); foreach (var oRegD in oDespues) { oRegD.ExistenciaNueva += (oKardex.Cantidad * -1); Datos.Guardar <ParteKardex>(oRegD); } } }