private Boolean isNotEffectiveOrExpire(CProcessingResult res) { DateTime effDate = package.EffectiveDate; DateTime expDate = package.ExpireDate; String effStr = ""; String expStr = ""; String currDateStr = CUtil.DateTimeToDateStringInternal(billDate); if (effDate != null) { effStr = CUtil.DateTimeToDateStringInternalMin(effDate); if (currDateStr.CompareTo(effStr) < 0) { res.SetErrorCode("ERROR_PROMOTION_NOT_EFFECTIVE"); return(true); } } if (expDate != null) { expStr = CUtil.DateTimeToDateStringInternalMin(expDate); if (currDateStr.CompareTo(expStr) >= 0) { res.SetErrorCode("ERROR_PROMOTION_IS_EXPIRE"); return(true); } } return(false); }
public CBasketSet MergeUsedToAvailable(CBasketSet inBasket, Boolean trayFlag) { BasketTypeEnum type1 = BasketTypeEnum.Available; BasketTypeEnum type2 = BasketTypeEnum.Used; String name = "MergeUsedToAvailable"; if (trayFlag) { type1 = BasketTypeEnum.AvailableTray; type2 = BasketTypeEnum.UsedTray; name = name + "Tray"; } CBasketSet output = new CBasketSet(); CProcessingResult res = new CProcessingResult(name); res.SetInputBasketSet(inBasket.Clone()); ArrayList useds = inBasket.GetAllBasketByType(type2); ArrayList avails = inBasket.GetAllBasketByType(type1); if (avails != null) { foreach (CBasket a in avails) { //Move the original 'Available' basket CBasket na = new CBasket(type1); na.CopyEntireFrom(a); output.AddBasket(na); } } if (useds != null) { foreach (CBasket u in useds) { CBasket nb = new CBasket(type1); nb.CopyEntireFrom(u); output.AddBasket(nb); } } Hashtable filterSet = new Hashtable(); filterSet[type1] = null; filterSet[type2] = null; copyBasketsExc(output, inBasket, filterSet); res.IsOperation = true; res.SetOutputBasketSet(output); res.SetStatus(ProcessingResultStatus.ProcessingSuccess); addProcessingResult(res); return(output); }
protected Boolean isPackageEligible(CProcessingResult res, CBasket inBsk, Boolean chkNullFlag) { if (chkNullFlag && (inBsk == null)) { res.SetErrorCode("ERROR_NO_PROMOTION_MATCH"); res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } if (package.IsEnabled != true) { res.SetErrorCode("ERROR_PROMOTION_IS_DISABLE"); res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } if (isNotEffectiveOrExpire(res)) { res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } if (package.IsTimeSpecific == true) { Boolean isTimeOK = isTimeEligible(); if (!isTimeOK) { res.SetErrorCode("ERROR_TIME_NOT_MATCH"); res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } } if (package.IsCustomerSpecific == true) { Boolean isCustomerOK = isCustomerEligible(); if (!isCustomerOK) { res.SetErrorCode("ERROR_CUSTOMER_NOT_MATCH"); res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } } if (package.IsBranchSpecific == true) { Boolean isBranchOK = isBranchEligible(); if (!isBranchOK) { res.SetErrorCode("ERROR_BRANCH_NOT_MATCH"); res.SetStatus(ProcessingResultStatus.ProcessingFail); return(false); } } return(true); }
private static CProcessingResultJob createJobResultNode(CProcessingResult rs) { CProcessingResultJob j = new CProcessingResultJob(rs); CBasketSet inset = rs.GetInputBasketSet(); processBasketSetNode(inset); CBasketSet outset = rs.GetOutputBasketSet(); processBasketSetNode(outset); j.AddItem(inset); j.AddItem(outset); return(j); }
public CBasketSet SumInGroup(CBasketSet inBasket, BasketTypeEnum bt) { CBasketSet output = new CBasketSet(); CProcessingResult res = new CProcessingResult("SumInGroup-" + bt.ToString()); res.SetInputBasketSet(inBasket.Clone()); Hashtable quantities = new Hashtable(); Hashtable objects = new Hashtable(); ArrayList keys = new ArrayList(); ArrayList items = inBasket.GetAllBasketByType(bt); if (items == null) { items = new ArrayList(); } foreach (CBasket b in items) { int cnt = b.GetBasketItemCount(); for (int i = 0; i < cnt; i++) { CBasketItem bi = b.GetBasketItem(i); object o = quantities[bi.Key]; if (o == null) { quantities[bi.Key] = bi.Quantity; objects[bi.Key] = bi; keys.Add(bi.Key); } else { double tmp = (double)quantities[bi.Key]; tmp = tmp + bi.Quantity; quantities[bi.Key] = tmp; } } } CBasket bkt = new CBasket(bt); foreach (String k in keys) { CBasketItem bi = (CBasketItem)objects[k]; double qty = (double)quantities[k]; CBasketItem bki = new CBasketItem(k, bi.Item, qty); bkt.AddBasketItem(bki); } if (bkt.GetBasketItemCount() > 0) { output.AddBasket(bkt); } Hashtable filterSet = new Hashtable(); filterSet[bt] = null; copyBasketsExc(output, inBasket, filterSet); res.IsOperation = true; res.SetOutputBasketSet(output); res.SetStatus(ProcessingResultStatus.ProcessingSuccess); addProcessingResult(res); return(output); }
public CPromotionProcessorBundle(MBaseModel pkg, String grpName, MBaseModel bill) : base(pkg, grpName, bill) { res = new CProcessingResult((pkg as MPackage)); }
protected void addProcessingResult(CProcessingResult result) { result.SetGroupName(groupName); procResults.Add(result); }
//private double finalDiscount = 0.00; public CProcessingResultJob(CProcessingResult rs) { result = rs; package = rs.GetPackage(); }
public CProcessingResultGroup(CProcessingResult rs) { result = rs; }