protected virtual void ProcessPayedPrepay(PayableInfo entity, PayItemInfo payitem) { PayableInfo payable = null; if (payitem.AvailableAmt < entity.InStockAmt - entity.EIMSAmt) { ThrowBizException("Payable_ProcessPayedPrepay_InStockAmtMoreThanAvailableAmt"); } //更新付款单可用金额 payitem.AvailableAmt -= entity.InStockAmt - entity.EIMSAmt; ObjectFactory <PayItemProcessor> .Instance.UpdateAvailableAmt(payitem.OrderType.Value, payitem.OrderSysNo.Value, payitem.AvailableAmt.Value); var pEntity = m_PayableDA.GetFirstPay(entity.OrderType.Value, entity.OrderSysNo.Value); if (entity.BatchNumber == 1) { if (pEntity == null) { ThrowBizException("Payable_ProcessPayedPrepay_NotExistPaidRecord"); } payable = new PayableInfo(); payable.OrderAmt = pEntity.OrderAmt; payable.SysNo = pEntity.SysNo; payable.PayStatus = PayableStatus.FullPay; payable.OrderStatus = entity.OrderStatus; payable.InStockAmt = entity.InStockAmt; payable.EIMSAmt = entity.EIMSAmt; payable.RawOrderAmt = entity.RawOrderAmt; m_PayableDA.UpdateFirstPay(payable); } else { payable = new PayableInfo(); payable.OrderSysNo = entity.OrderSysNo; payable.OrderType = entity.OrderType; payable.BatchNumber = entity.BatchNumber; payable.PayStatus = PayableStatus.FullPay; payable.AlreadyPayAmt = 0; payable.OrderAmt = payable.AlreadyPayAmt; payable.RawOrderAmt = entity.RawOrderAmt; payable.InStockAmt = entity.InStockAmt; payable.EIMSAmt = entity.EIMSAmt; payable.Note = "auto create during in stock"; payable.CurrencySysNo = 1; payable.OrderStatus = entity.OrderStatus; payable = Create(payable); } PayItemInfo pie = new PayItemInfo(); pie.OrderSysNo = entity.OrderSysNo; pie.OrderType = (PayableOrderType)entity.OrderType; pie.PaySysNo = payable.SysNo.Value; pie.PayAmt = entity.InStockAmt.Value - entity.EIMSAmt.Value; pie.SysNo = payitem.SysNo; pie.OrderStatus = entity.OrderStatus; pie.CompanyCode = entity.CompanyCode; if (entity.BatchNumber != 1) { ObjectFactory <PayItemProcessor> .Instance.CreatePayEx(pie); } if (entity.OrderStatus.Value == (int)PurchaseOrderStatus.PartlyInStocked) { //调用PO接口中止入库 ExternalDomainBroker.StopInStock(entity.OrderSysNo.Value); } }