Пример #1
0
        /// <summary>
        /// 改变凭证状态
        /// </summary>
        /// <param name="srcStatus">原来的状态,如果不符合报错1007,如果为Invalid.就不检查</param>
        /// <param name="destStatus"></param>
        /// <param name="act">在更改状态 同事务执行</param>
        void ChangeStatus(long id, VoucherStatus srcStatus, VoucherStatus destStatus, Action <dynamic> act)
        {
            dynamic tran = DBHelper.GetInstance(mContext).BeginTransaction();

            try
            {
                if (srcStatus != VoucherStatus.Invalid)
                {
                    var obj = DBHelper.GetInstance(mContext).ExecuteScalar(tran, string.Format("select _status from _VoucherHeader where _id = {0}", id));
                    if ((int)obj != (int)srcStatus)
                    {
                        throw new FinanceException(FinanceResult.INCORRECT_STATE);
                    }
                }

                DBHelper.GetInstance(mContext).ExecuteSql(tran, string.Format("update _VoucherHeader set _status={0} where _id={1} ", (int)destStatus, id));
                act?.Invoke(tran);

                DBHelper.GetInstance(mContext).CommitTransaction(tran);
            }
            catch (FinanceException ex)
            {
                DBHelper.GetInstance(mContext).RollbackTransaction(tran);
                throw ex;
            }
            catch (Exception e)
            {
                DBHelper.GetInstance(mContext).RollbackTransaction(tran);
                var traceId = SerialNoService.GetUUID();
                logger.Error(e, traceId);
                throw new FinanceException(FinanceResult.SYSTEM_ERROR, traceId);
            }
        }
Пример #2
0
        public virtual void MarkAsUsed()
        {
            if (!IsValid())
                throw new InvalidVoucherException();

            Status = VoucherStatus.Used;
        }
Пример #3
0
        public ActionResult StockCardAction(long id, string status)
        {
            VoucherStatus vStatus = (VoucherStatus)Enum.Parse(typeof(VoucherStatus), status);

            ViewBag.vStatus = vStatus;
            //if (vStatus == VoucherStatus.Submited)
            //{
            //    var check = salesServices.CheckValidQty(id);
            //    if (!check)
            //    {
            //        return Json(0, JsonRequestBehavior.AllowGet);
            //    }
            //}
            salesServices.StockCardAction(vStatus, CurrenUser.Id, id);

            // var button = ModelExtensions.StockButtonAction(CurrenUser, vStatus, id);
            var model      = salesServices.GetModelById(id);
            var statusview = this.RenderPartialView("_StatusView", model);

            return(Json(new
            {
                status = vStatus.ToString(),
                // button = button,
                view = statusview
            }, JsonRequestBehavior.AllowGet));
        }
Пример #4
0
        public void AddStatus(VoucherStatus s)
        {
            m_VouchersCount++;

            m_vstatusList.Add(new XElement("VoucherStatus",
                                           new XElement("VoucherNumber", s.VoucherNumber.ToString("000000000")),
                                           new XElement("PremierStoreId", s.PremierStoreId),
                                           new XElement("CountryCode", s.CountryCode),
                                           new XElement("TimeStamp", s.TimeStamp),
                                           new XElement("BdvDate", s.BdvDate),
                                           new XElement("IsVoided", s.IsVoided),
                                           new XElement("VoidedDate", s.VoidedDate),
                                           new XElement("IsClaimed", s.IsClaimed),
                                           new XElement("ClaimedDate", s.ClaimedDate),
                                           new XElement("StampedDate", s.StampedDate),
                                           new XElement("IsRefunded", s.IsRefunded),
                                           new XElement("RefundedDate", s.RefundedDate),
                                           new XElement("DebitDate", s.DebitDate),
                                           new XElement("ErrorCode", s.ErrorCode),
                                           new XElement("SiteCodeRose", s.SiteCodeRose),
                                           new XElement("HasFactureP1", s.HasFactureP1),
                                           new XElement("FactureP1Date", s.FactureP1Date),
                                           new XElement("HasFactureP2", s.HasFactureP2),
                                           new XElement("FactureP2Date", s.FactureP2Date)));
        }
Пример #5
0
 void ShowStatusLable(VoucherStatus status)
 {
     if (Constant.VoucherStatusDictionary.ContainsKey(status))
     {
         lblStatus.Content    = Constant.VoucherStatusDictionary[status];
         lblStatus.Visibility = Visibility.Visible;
     }
 }
Пример #6
0
 public VoucherCreated(Guid id, Guid customerId, VoucherStatus status, Money amount, VoucherCode code, DateTime expirationDate)
 {
     Id             = id;
     CustomerId     = customerId;
     Status         = status;
     Amount         = amount;
     Code           = code;
     ExpirationDate = expirationDate;
 }
Пример #7
0
 public VoucherCreated(Guid id, Guid customerId, VoucherStatus status, Money amount, VoucherCode code, DateTime expirationDate)
 {
     Id = id;
     CustomerId = customerId;
     Status = status;
     Amount = amount;
     Code = code;
     ExpirationDate = expirationDate;
 }
Пример #8
0
        public async Task <List <Voucher> > GetByCampaignIdAndStatusAsync(
            Guid campaignId, VoucherStatus status)
        {
            using (var context = _contextFactory.CreateDataContext())
            {
                var query  = context.Vouchers.Where(v => v.CampaignId == campaignId && v.Status == status);
                var result = await query.ToListAsync();

                return(_mapper.Map <List <Voucher> >(result));
            }
        }
        public async Task <int> GetTotalByStatusAsync(Guid spendRuleId, VoucherStatus status)
        {
            using (var context = _contextFactory.CreateDataContext())
            {
                var count = await context.Vouchers
                            .Where(o => o.SpendRuleId == spendRuleId && o.Status == status)
                            .CountAsync();

                return(count);
            }
        }
Пример #10
0
        /// <summary>
        /// Generates a voucher code.
        /// Only admins are allowed to use this functionality
        /// </summary>
        /// <returns></returns>
        public async Task <VoucherCode> GenerateVoucherCode(VoucherStatus status, short numberOfSeats, long scheduleId)
        {
            var voucherCode = new VoucherCode()
            {
                Code = _randomCodeGenerator.Next(),
                NumberOfFreeSeats = numberOfSeats,
                ScheduleId        = scheduleId,
                Status            = status
            };

            await _voucherCodeRepository.Add(voucherCode);

            await _voucherCodeRepository.Commit();

            return(voucherCode);
        }
Пример #11
0
        public ActionResult StockCardAction(long id, string status)
        {
            VoucherStatus vStatus = (VoucherStatus)Enum.Parse(typeof(VoucherStatus), status);

            stockReceivingService.VoucherAction(vStatus, CurrenUser.Id, id);
            ViewBag.vStatus = vStatus;
            // var button = ModelExtensions.StockButtonAction(currentUser, vStatus, id, );
            var model      = stockReceivingService.GetByModel(id);
            var statusview = this.RenderPartialView("_StatusView", model);

            return(Json(new
            {
                status = vStatus.ToString(),
                //  button = button,
                view = statusview
            }, JsonRequestBehavior.AllowGet));
        }
Пример #12
0
        public async Task <IActionResult> UpdateVoucherStatus(int voucherId, VoucherStatus voucherStatus, [FromQuery] string gate, [FromQuery] DateTime entryDate)
        {
            try
            {
                var voucher = await _dbContext.Vouchers.FirstAsync(x => x.Id == voucherId);

                voucher.Gate          = gate;
                voucher.EntryDate     = entryDate;
                voucher.CurrentStatus = voucherStatus;
                await _dbContext.SaveChangesAsync();

                return(Ok());
            }
            catch (InvalidOperationException)
            {
                return(NoContent());
            }
            catch (Exception e)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
            }
        }
Пример #13
0
        public static string StockButtonAction(User user, VoucherStatus status, long id, User owner)
        {
            /* VoucherStatus status = VoucherStatus.Hold;
             * Enum.TryParse(statusInput, true, out status);*/
            string       name       = "Cancel";
            string       nameCancel = "Cancel";
            string       adStatus   = "";
            const string bt         =
                "<input type=\"button\" class=\"btn btn-primary \" id=\"btnAppval\" value=\"{0}\"  onclick=\"return stockCradAction('{1}',{2});\"/>";
            var button = string.Empty;

            switch (status)
            {
            case VoucherStatus.Pending:
                if (user.IsAdmin() || user.Id == owner.Id)
                {
                    name     = "Submit";
                    adStatus = VoucherStatus.Submited.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                }

                break;

            case VoucherStatus.Submited:
                if (user.IsAccountant())
                {
                    name     = "Check";
                    adStatus = VoucherStatus.Checked.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                    name     = nameCancel;
                    adStatus = VoucherStatus.Pending.ToString();
                    button  += string.Format(bt, name, adStatus, id);
                }
                else
                if (user.IsAdmin() || user.Id == owner.Id)
                {
                    name     = nameCancel;
                    adStatus = VoucherStatus.Pending.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                }

                break;

            case VoucherStatus.Checked:
                if (user.IsAdmin() || (user.IsDirecter() && user.AllowApprovedStockCard))
                {
                    name     = "Approval";
                    adStatus = VoucherStatus.Approved.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                    name     = nameCancel;
                    adStatus = VoucherStatus.Submited.ToString();
                    button  += string.Format(bt, name, adStatus, id);
                }
                else if (UsersModel.isAccountant(user))
                {
                    name     = nameCancel;
                    adStatus = VoucherStatus.Submited.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                }
                break;

            case VoucherStatus.Approved:
                if (user.IsAdmin() || (user.IsDirecter() && user.AllowApprovedStockCard))
                {
                    name     = nameCancel;
                    adStatus = VoucherStatus.Pending.ToString();
                    button   = string.Format(bt, name, adStatus, id);
                }
                break;
            }

            return(button);
        }
Пример #14
0
        /// <summary>
        /// Returns the VoucherList with the given filters, page settings and sort settings.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="status"></param>
        /// <param name="archived"></param>
        /// <param name="desc"></param>
        /// <param name="sorter"></param>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public LexOfficeResponse <ResourcePage <VoucherListEntry> > GetVoucherListSorted(VoucherType type, VoucherStatus status, VoucherListArchived archived, bool desc, VoucherListSorter sorter, int page = 0, int pageSize = 25)
        {
            var result = PrepareVoucherListString(type, status, archived, page, pageSize);



            // Parse Sorter
            // Parse Status
            string strSorter = "sort=";

            foreach (VoucherListSorter e in Enum.GetValues(typeof(VoucherListSorter)))
            {
                if (sorter.HasFlag(e))
                {
                    strSorter += e.ToString().ToLower() + ",";
                }
            }
            // TODO: Status "Overdue" cannot be filtered with other status filters
            strSorter = strSorter.Substring(0, strSorter.Length - 1);


            if (desc)
            {
                strSorter += ",DESC";
            }
            else
            {
                strSorter += ",ASC";
            }

            result += $"&{strSorter}&";
            var response = client.SendGetRequest <ResourcePage <VoucherListEntry> >(result);

            return(new LexOfficeResponse <ResourcePage <VoucherListEntry> >(response));
        }
Пример #15
0
        /// <summary>
        /// Prepare and populate the REST-resource string that should be send
        /// </summary>
        /// <param name="type"></param>
        /// <param name="status">Filters the vouchers by their status. Bit flags can be used here. Warning: Status "Overdue" can not be used together with other status.</param>
        /// <param name="archived"></param>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        private string PrepareVoucherListString(VoucherType type, VoucherStatus status, VoucherListArchived archived, int page, int pageSize)
        {
            string resource = "/voucherlist?";



            // Parse Type
            string vouchertype = "voucherType=";

            foreach (VoucherType e in Enum.GetValues(typeof(VoucherType)))
            {
                if (type.HasFlag(e))
                {
                    vouchertype += e.ToString().ToLower() + ",";
                }
            }
            vouchertype = vouchertype.Substring(0, vouchertype.Length - 1);



            // Parse Status
            string voucherstatus = "voucherStatus=";

            foreach (VoucherStatus e in Enum.GetValues(typeof(VoucherStatus)))
            {
                if (status.HasFlag(e))
                {
                    voucherstatus += e.ToString().ToLower() + ",";
                }
            }
            // TODO: Status "Overdue" cannot be filtered with other status filters
            voucherstatus = voucherstatus.Substring(0, voucherstatus.Length - 1);



            // Parse Archived
            string strArchived = "";

            if (archived != VoucherListArchived.Both)
            {
                switch (archived)
                {
                case VoucherListArchived.Archived:
                    strArchived = "archived=true";
                    break;

                case VoucherListArchived.NonArchived:
                    strArchived = "archived=false";
                    break;
                }
            }



            // Parse PageSize
            string strPageSize = "";

            if (pageSize != 25)
            {
                if (pageSize > 250)
                {
                    pageSize = 250;
                }

                if (pageSize < 1)
                {
                    pageSize = 1;
                }
                strPageSize = $"size={pageSize}";
            }



            // Parse Page
            string strPage = "";

            if (page > 0)
            {
                strPage = $"page={page}";
            }

            string result = $"{resource}{vouchertype}&{voucherstatus}&{strArchived}&{strPageSize}&{strPage}";

            return(result);
        }
Пример #16
0
        protected override void SetMemento(IMemento memento)
        {
            var voucherMemento = (VoucherMemento)memento;

            Id = voucherMemento.Id;
            Version = voucherMemento.Version;
            CustomerId = voucherMemento.CustomerId;
            Code = new VoucherCode(voucherMemento.Code);
            Status = (VoucherStatus)voucherMemento.Status;
            ExpirationDate = voucherMemento.ExpirationDate;
            Amount = new Money(voucherMemento.Amount);
        }
Пример #17
0
 private void When(VoucherCreated e)
 {
     Id = e.Id;
     CustomerId = e.CustomerId;
     Code = e.Code;
     Status = e.Status;
     ExpirationDate = e.ExpirationDate;
     Amount = e.Amount;
 }
Пример #18
0
        public virtual async Task SetVoucherStatus(int id, VoucherStatus voucherStatus)
        {
            var entity = await Manager.GetByIdAsync(id);

            entity.VoucherStatus = voucherStatus;
        }
Пример #19
0
        /// <summary>
        /// Returns the VoucherList with the given filters and page settings.
        /// </summary>
        /// <param name="type"></param>
        /// <param name="status"></param>
        /// <param name="archived"></param>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public LexOfficeResponse <ResourcePage <VoucherListEntry> > GetVoucherList(VoucherType type, VoucherStatus status, VoucherListArchived archived, int page = 0, int pageSize = 25)
        {
            var result   = PrepareVoucherListString(type, status, archived, page, pageSize);
            var response = client.SendGetRequest <ResourcePage <VoucherListEntry> >(result);

            return(new LexOfficeResponse <ResourcePage <VoucherListEntry> >(response));
        }