Ejemplo n.º 1
0
        public virtual RMARegisterInfo CloseForVendorRefund(RMARegisterInfo register)
        {
            RMARegisterInfo original = LoadBySysNo(register.SysNo.Value);

            register.BasicInfo.CloseTime      = DateTime.Now;
            register.BasicInfo.CloseUserSysNo = ServiceContext.Current.UserSysNo;
            register.VerifyCloseForVendorRefund(original);

            register.BasicInfo.Status         = RMARequestStatus.Complete;
            register.BasicInfo.OwnBy          = RMAOwnBy.Origin;
            register.BasicInfo.Location       = RMALocation.Origin;
            register.BasicInfo.OutBoundStatus = RMAOutBoundStatus.VendorRefund;

            using (TransactionScope tran = new TransactionScope())
            {
                registerDA.CloseForVendorRefund(register);

                RMARequestInfo request = ObjectFactory <RequestProcessor> .Instance.LoadByRegisterSysNo(register.SysNo.Value);

                request.Registers = LoadByRequestSysNo(request.SysNo.Value);

                bool allClosed = true;
                request.Registers.ForEach(
                    reg =>
                {
                    if (reg.BasicInfo.Status == RMARequestStatus.Handling)
                    {
                        allClosed = false;
                    }
                }
                    );
                if (allClosed && request.Status != RMARequestStatus.Complete)
                {
                    request.Status = RMARequestStatus.Complete;
                    ObjectFactory <RequestProcessor> .Instance.UpdateWithoutRegisters(request);
                }

                tran.Complete();
            }

            return(register);
        }