//Value && AND && Single_SKU private void Value_and_Single_SKU(tblt_Order_line orederLineitem, int promoId) { var tpSingleSkuDefinitionOrderLine = _db.tblt_TradePromotionDefinition.FirstOrDefault(x => x.condition_sku_id == orederLineitem.sku_id && x.promo_line_type == 3 && x.promo_id == promoId); //Get Full Line if (tpSingleSkuDefinitionOrderLine != null) { int discountAmount = ((orederLineitem.quantity_delivered - (orederLineitem.quantity_delivered % tpSingleSkuDefinitionOrderLine.condition_sku_amount)) / tpSingleSkuDefinitionOrderLine.condition_sku_amount) * tpSingleSkuDefinitionOrderLine.offer_sku_amount; _db.tblt_Order.Where(x => x.Orderid == orederLineitem.Orderid).ToList().ForEach(x => { x.total_delivered = x.total_delivered - discountAmount; }); //Update TP Order By discount Update _db.tblt_Order_line.Where(x => x.id == orederLineitem.id).ToList().ForEach(x => { x.total_discount_amount = discountAmount; x.total_billed_amount = (x.unit_sale_price * x.quantity_delivered) - discountAmount; x.promotion_id = tpSingleSkuDefinitionOrderLine.promo_id; }); //Update TP Order Line By Promo_id Update _db.SaveChanges(); } }
//Quentity && AND && Single_SKU private void Quentity_and_Single_SKU(tblt_Order_line orederLineitem, int promoId) { var tpSingleSkuDefinitionOrderLine = _db.tblt_TradePromotionDefinition.FirstOrDefault(x => x.condition_sku_id == orederLineitem.sku_id && x.promo_line_type == 1 && x.promo_id == promoId); //Get Full Line var tpSingleSkuDefinitionFreeLine = _db.tblt_TradePromotionDefinition.FirstOrDefault(x => x.promo_id == tpSingleSkuDefinitionOrderLine.promo_id && x.promo_line_type == 2 && x.promo_id == promoId); //Get Free Line if (tpSingleSkuDefinitionFreeLine != null && tpSingleSkuDefinitionOrderLine != null) { int getfreequantityOrder = (orederLineitem.quantity_ordered - (orederLineitem.quantity_ordered % tpSingleSkuDefinitionOrderLine.condition_sku_amount)) / tpSingleSkuDefinitionOrderLine.condition_sku_amount * tpSingleSkuDefinitionFreeLine.offer_sku_amount; int getfreequantityDelivered = (orederLineitem.quantity_delivered - (orederLineitem.quantity_delivered % tpSingleSkuDefinitionOrderLine.condition_sku_amount)) / tpSingleSkuDefinitionOrderLine.condition_sku_amount * tpSingleSkuDefinitionFreeLine.offer_sku_amount; int getfreequantityconfirmed = (orederLineitem.quantity_confirmed - (orederLineitem.quantity_confirmed % tpSingleSkuDefinitionOrderLine.condition_sku_amount)) / tpSingleSkuDefinitionOrderLine.condition_sku_amount * tpSingleSkuDefinitionFreeLine.offer_sku_amount; if (getfreequantityOrder > 0 || getfreequantityDelivered > 0 || getfreequantityconfirmed > 0) { tblt_Order_line freeOrderLine = new tblt_Order_line { Orderid = orederLineitem.Orderid, Bundelitmeid = 0, sku_id = tpSingleSkuDefinitionFreeLine.offer_sku_id, Betch_id = tpSingleSkuDefinitionFreeLine.offer_sku_Batch, Pack_size = tpSingleSkuDefinitionFreeLine.offer_sku_pack_size, unit_sale_price = 0, sku_order_type_id = 2, promotion_id = tpSingleSkuDefinitionOrderLine.promo_id, lpec = 0, quantity_ordered = getfreequantityOrder, quantity_confirmed = getfreequantityconfirmed, quantity_delivered = getfreequantityDelivered, total_sale_price = 0, total_discount_amount = 0, total_billed_amount = 0, }; TradepromotatonFreeOrderLine(freeOrderLine); } _db.tblt_Order_line.Where(x => x.id == orederLineitem.id).ToList().ForEach(x => { x.promotion_id = tpSingleSkuDefinitionOrderLine.promo_id; }); //Update TP Order Line By Promo_id Update _db.SaveChanges(); } }
private void TradepromotatonFreeOrderLine(tblt_Order_line freeOrderLine) { _db.tblt_Order_line.Add(freeOrderLine); _db.SaveChanges(); }
//Quentity && OR && Multi_Slub private void Quentity_OR_Multi_Slab(List <int> tpAffactedPromoid, List <tblt_Order_line> orederLine, int orderid) { foreach (var promoid in tpAffactedPromoid) { List <Tpvm> slabCount = new List <Tpvm>(); var tradePromotionDefinitionLine = _db.tblt_TradePromotionDefinition.Where(x => x.promo_id == promoid && x.promo_line_type == 1); var tradePromotionFreeLine = _db.tblt_TradePromotionDefinition.SingleOrDefault(x => x.promo_id == promoid && x.promo_line_type == 2); foreach (var item in tradePromotionDefinitionLine) { var dataLine = (from a in orederLine where a.sku_id == item.condition_sku_id && a.Betch_id == item.condition_sku_Batch select new Tpvm { PromoId = promoid, SkuId = a.sku_id, BatchId = a.Betch_id, QuantityOrdered = a.quantity_ordered >= item.condition_sku_amount?a.quantity_ordered / item.condition_sku_pack_size:0, QuantityConfirmed = a.quantity_confirmed >= item.condition_sku_amount ? a.quantity_confirmed / item.condition_sku_pack_size : 0, QuantityDelivered = a.quantity_delivered >= item.condition_sku_amount ? a.quantity_delivered / item.condition_sku_pack_size : 0, }).SingleOrDefault(); if (dataLine != null) { slabCount.Add(dataLine); } } if (tradePromotionFreeLine != null) { var quantityOrderedslabCount = slabCount.Where(x => x.PromoId == promoid).Select(x => x.QuantityOrdered).Sum() / tradePromotionFreeLine.condition_bundle_qty_CS; var quantityConfirmedslabCount = slabCount.Where(x => x.PromoId == promoid).Select(x => x.QuantityConfirmed).Sum() / tradePromotionFreeLine.condition_bundle_qty_CS; var quantityDeliveredslabCount = slabCount.Where(x => x.PromoId == promoid).Select(x => x.QuantityDelivered).Sum() / tradePromotionFreeLine.condition_bundle_qty_CS; var orederLineids = (from a in orederLine join b in slabCount on new { A = a.sku_id, B = a.Betch_id } equals new { A = b.SkuId, B = b.BatchId } select a.id).ToList(); int getfreequantityOrder = tradePromotionFreeLine.offer_sku_amount * quantityOrderedslabCount; int getfreequantityDelivered = tradePromotionFreeLine.offer_sku_amount * quantityConfirmedslabCount; int getfreequantityconfirmed = tradePromotionFreeLine.offer_sku_amount * quantityDeliveredslabCount; if (getfreequantityOrder > 0 || getfreequantityDelivered > 0 || getfreequantityconfirmed > 0) { tblt_Order_line freeOrderLine = new tblt_Order_line { Orderid = orderid, Bundelitmeid = 0, sku_id = tradePromotionFreeLine.offer_sku_id, Betch_id = tradePromotionFreeLine.offer_sku_Batch, Pack_size = tradePromotionFreeLine.offer_sku_pack_size, unit_sale_price = 0, sku_order_type_id = 2, promotion_id = tradePromotionFreeLine.promo_id, lpec = 0, quantity_ordered = getfreequantityOrder, quantity_confirmed = getfreequantityconfirmed, quantity_delivered = getfreequantityDelivered, total_sale_price = 0, total_discount_amount = 0, total_billed_amount = 0, }; TradepromotatonFreeOrderLine(freeOrderLine); } _db.tblt_Order_line.Where(x => orederLineids.Contains(x.id)).ToList().ForEach(x => { x.promotion_id = promoid; }); //Update TP Order Line By Promo_id Update _db.SaveChanges(); } } }