Esempio n. 1
0
        public virtual PricePromotion GetPrice(ParameterPromotion parPromotion)
        {
            var PriceDealer = db.ExecuteScalar <ParameterPromotion, decimal>(SqlGetPriceDealer, parPromotion);
            var Res         = new PricePromotion()
            {
                Price = PriceDealer
            };

            foreach (var el in db.Execute <ParameterPromotion, PricePromotion>(SqlGetPrice, parPromotion))
            {
                if ((el.CalcPrice(PriceDealer) < Res.Price && Res.Priority <= el.Priority) || Res.Priority < el.Priority)
                {
                    var IsUsePrice = (Res.Priority == el.Priority);
                    Res = el;

                    Res.Price = el.CalcPrice(PriceDealer, IsUsePrice);
                }
            }
            return(Res);
        }
Esempio n. 2
0
        public override bool RecalcPrice(IdReceiptWares pIdReceiptWares)
        {
            var startTime = System.Diagnostics.Stopwatch.StartNew();

            lock (GetObjectForLockByIdWorkplace(pIdReceiptWares.IdWorkplace))
            {
                try
                {
                    var RH = ViewReceipt(pIdReceiptWares);
                    ParameterPromotion par;
                    var InfoClient = GetInfoClientByReceipt(pIdReceiptWares);
                    if (InfoClient.Count() == 1)
                    {
                        par = InfoClient.First();
                    }
                    else
                    {
                        par = new ParameterPromotion();
                    }

                    //par.BirthDay = DateTime.Now.Date; Test
                    par.CodeWarehouse = Global.CodeWarehouse;
                    par.Time          = Convert.ToInt32(RH.DateReceipt.ToString("HHmm"));
                    par.CodeDealer    = Global.DefaultCodeDealer;

                    var r = ViewReceiptWares(pIdReceiptWares);

                    foreach (var RW in r)
                    {
                        var MPI = GetMinPriceIndicative((IdReceiptWares)RW);
                        par.CodeWares = RW.CodeWares;
                        var Res = GetPrice(par);

                        if (Res != null && RW.ParPrice1 != 999999 && (Res.Priority > 0 || string.IsNullOrEmpty(RW.BarCode2Category)))//Не перераховуємо для  Сигарет s для 2 категорії окрім пріоритет 1
                        {
                            RW.Price     = MPI.GetPrice(Res.Price, Res.IsIgnoreMinPrice == 0, Res.CodePs > 0);
                            RW.TypePrice = MPI.typePrice;
                            RW.ParPrice1 = Res.CodePs;
                            RW.ParPrice2 = (int)Res.TypeDiscont;
                            RW.ParPrice3 = Res.Data;
                            RW.Priority  = Res.Priority;
                        }
                        //Якщо друга категорія - перераховуємо на основі Роздрібної ціни.
                        if (Res.Priority == 0 && !string.IsNullOrEmpty(RW.BarCode2Category) && RW.BarCode2Category.Length == 13)
                        {
                            RW.Price = RW.PriceDealer;
                        }

                        ReplaceWaresReceipt(RW);
                    }
                    GetPricePromotionKit(pIdReceiptWares, pIdReceiptWares.CodeWares);
                    RecalcHeadReceipt(pIdReceiptWares);
                    startTime.Stop();
                    Console.WriteLine($"RecalcPrice=>{startTime.Elapsed}  {r?.Count()}");

                    /*foreach (var RW in r)
                     *  Console.WriteLine($"{RW.NameWares}");*/

                    return(true);
                }
                catch (Exception ex)
                {
                    Global.OnSyncInfoCollected?.Invoke(new SyncInformation {
                        TerminalId = Global.GetTerminalIdByIdWorkplace(pIdReceiptWares.IdWorkplace), Exception = ex, Status = eSyncStatus.Error, StatusDescription = "RecalcPrice=>" + ex.Message + '\n' + new System.Diagnostics.StackTrace().ToString()
                    });
                    return(false);
                }
            }
        }