Beispiel #1
0
        protected virtual PayItemInfo PreCheckForCancelLock(PayItemInfo entity, out PayableInfo payableInfo)
        {
            var payItemInfo = PayItemBizProcessor.LoadBySysNo(entity.SysNo.Value);

            //付款状态是否为已锁定
            if (payItemInfo.Status != PayItemStatus.Locked)
            {
                ThrowBizException("PayItem_UnLock_StatusNotMatchLocked");
            }

            //校验应付款的供应商是否已锁定
            if (PayItemBizProcessor.IsHoldByVendor(payItemInfo))
            {
                ThrowBizException("PayItem_UnLock_CannotUnLockByVendor");
            }

            if (PayItemBizProcessor.IsHoldByVendorPM(payItemInfo))
            {
                ThrowBizException("PayItem_UnLock_CannotUnLockByPM");
            }

            payableInfo = PayableBizProcessor.LoadBySysNo(payItemInfo.PaySysNo.Value);
            //应付款是否为已作废或者已支付
            if (payableInfo.PayStatus == PayableStatus.Abandon)
            {
                ThrowBizException("PayItem_UnLock_AbandonStatusCannotUnLock");
            }
            else if (payableInfo.PayStatus == PayableStatus.FullPay)
            {
                ThrowBizException("PayItem_UnLock_FullPayStatusCannotUnLock");
            }
            return(payItemInfo);
        }
Beispiel #2
0
        protected virtual PayItemInfo PreCheckForAbandon(PayItemInfo entity)
        {
            var payItemInfo = PayItemBizProcessor.LoadBySysNo(entity.SysNo.Value);

            if (payItemInfo.Status != PayItemStatus.Origin)
            {
                ThrowBizException("PayItem_Abandon_StatusNotMatchOrigin");
            }
            return(payItemInfo);
        }
Beispiel #3
0
        protected virtual PayItemInfo PreCheckForCancelPay(PayItemInfo entity, out PayableInfo payableInfo)
        {
            var payItemInfo = PayItemBizProcessor.LoadBySysNo(entity.SysNo.Value);

            if (payItemInfo.Status != PayItemStatus.Paid)
            {
                ThrowBizException("PayItem_CancelPay_OnlyPaidCanCancelPay");
            }
            //payItemInfo.PayUserSysNo = entity.PayUserSysNo;
            payableInfo             = PayableBizProcessor.LoadBySysNo(payItemInfo.PaySysNo.Value);
            payItemInfo.OrderSysNo  = payableInfo.OrderSysNo;
            payItemInfo.BatchNumber = payableInfo.BatchNumber;

            if (payableInfo.PayStatus == PayableStatus.UnPay || payableInfo.PayStatus == PayableStatus.Abandon)
            {
                ThrowBizException("PayItem_CancelPay_CannotCancelPay");
            }
            return(payItemInfo);
        }
Beispiel #4
0
        protected virtual PayItemInfo PreCheckForLock(PayItemInfo entity, out PayableInfo payableInfo)
        {
            var payItemInfo = PayItemBizProcessor.LoadBySysNo(entity.SysNo.Value);

            if (payItemInfo.Status != PayItemStatus.Origin)
            {
                ThrowBizException("PayItem_Lock_StatusNotMatchOrigin");
            }

            payableInfo = PayableBizProcessor.LoadBySysNo(payItemInfo.PaySysNo.Value);
            //应付款是否为已作废或者已支付
            if (payableInfo.PayStatus == PayableStatus.Abandon)
            {
                ThrowBizException("PayItem_Lock_AbandonStatusCannotLock");
            }
            else if (payableInfo.PayStatus == PayableStatus.FullPay)
            {
                ThrowBizException("PayItem_Lock_FullPayStatusCannotLock");
            }
            return(payItemInfo);
        }
Beispiel #5
0
        protected virtual PayItemInfo PreCheckForCancelAbandon(PayItemInfo entity, out PayableInfo payableInfo)
        {
            var payItemInfo = PayItemBizProcessor.LoadBySysNo(entity.SysNo.Value);

            if (payItemInfo.Status != PayItemStatus.Abandon)
            {
                ThrowBizException("PayItem_CancelAbandon_StatusNotMatchAbandon");
            }

            payableInfo = PayableBizProcessor.LoadBySysNo(payItemInfo.PaySysNo.Value);
            if (payableInfo.PayStatus == PayableStatus.FullPay)
            {
                ThrowBizException("PayItem_CancelAbandon_FullPayCannotCancel");
            }

            payableInfo.PayItemList.Where(x => x.SysNo == entity.SysNo).First().Status = PayItemStatus.Paid;
            if (payableInfo.PayItemList.Where(x => x.Status != PayItemStatus.Abandon).Sum(x => x.PayAmt) > payableInfo.OrderAmt)
            {
                ThrowBizException("PayItem_CancelAbandon_PayItemTotalPayAmtCannotMoreThanPayOrderAmt");
            }

            return(payItemInfo);
        }