예제 #1
0
        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);
        }
예제 #2
0
        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);
                }
            }
        }