Example #1
0
        /// <summary>
        /// 创建客户加积分申请单
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAddPoint_Click(object sender, RoutedEventArgs e)
        {
            DateTime startTime = CurrentSOVM.BaseInfoVM.OrderTime.Value;

            if (string.IsNullOrEmpty(dpReceiveDate.Text))
            {
                Window.Alert(ResSO.Info_SOProcesser_ChangePrice_ReceiveDate_Error, MessageType.Error);
                return;
            }
            CPApplication.Current.CurrentPage.Context.Window.Confirm(ResSO.Info_Confirm_CreateAddPointRequest, (objConfirm, argsConfirm) =>
            {
                if (argsConfirm.DialogResult == DialogResultType.OK)
                {
                    DateTime endTime     = DateTime.Parse(dpReceiveDate.Text);
                    List <int> sysnoList = new List <int>();
                    foreach (var item in CurrentSOVM.ItemsVM)
                    {
                        sysnoList.Add(item.ProductSysNo.Value);
                    }
                    SOQueryFacade.GetPriceChangeLogs(sysnoList, startTime, endTime, (obj, args) =>
                    {
                        if (args.FaultsHandle())
                        {
                            return;
                        }
                        if (args.Result == null || args.Result.Count == 0)
                        {
                            Window.Alert(ResSO.ErrorInfo_CreateChangePriceRequest, MessageType.Error);
                        }
                        else
                        {
                            List <PriceChangeLogInfo> logList = args.Result;

                            int totalPoint = 0;
                            foreach (var item in CurrentSOVM.ItemsVM)
                            {
                                foreach (var loiitem in logList)
                                {
                                    if (item.ProductSysNo == loiitem.ProductSysNo)
                                    {
                                        item.CompensationPoint = Convert.ToInt32(((item.OriginalPrice - loiitem.NewPrice) * item.Quantity) * 10);
                                        totalPoint            += item.CompensationPoint.Value;
                                    }
                                }
                            }
                            if (totalPoint < 0)
                            {
                                Window.Alert(ResSO.Info_SOProcesser_ChangePrice_Error, MessageType.Error);
                            }
                            else
                            {
                                //生成积分申请备注
                                string note = this.BuildAddPointRequestNote(logList, CurrentSOVM.ItemsVM, endTime.ToString());
                                SOFacade.CreateCustomerPointsAddRequest(CurrentSOVM, totalPoint, note, logList, (innerObj, innerArgs) =>
                                {
                                    if (innerArgs.FaultsHandle())
                                    {
                                        return;
                                    }
                                    if (innerArgs.Result != null && innerArgs.Result.SysNo.HasValue && innerArgs.Result.SysNo != 0)
                                    {
                                        AddPointInfo.Visibility                   = Visibility.Visible;
                                        txtCustomerAddPointRequestInfo.Text       = ResSO.Info_SOProcesser_AddPoint_Request_Sucess;
                                        hlbtnCustomerAddPointRequestSysNo.Content = innerArgs.Result.SysNo;

                                        #region 创建固定信息的更新日志

                                        SOInternalMemoInfo publicMemo = new SOInternalMemoInfo();
                                        publicMemo.CallType           = 14;//价格保护
                                        publicMemo.Content            = note;
                                        publicMemo.SOSysNo            = CurrentSOVM.BaseInfoVM.SysNo.Value;
                                        publicMemo.Note            = txtAddPointNote.Text;
                                        publicMemo.ReasonCodeSysNo = 291;
                                        publicMemo.SourceSysNo     = 5;
                                        SOInternalMemoFacade.Create(publicMemo, (publicMemoObj, publicMemoArgs) =>
                                        {
                                            if (publicMemoArgs.FaultsHandle())
                                            {
                                                return;
                                            }
                                        });
                                        #endregion
                                    }
                                });
                            }
                        }
                    });
                }
            });
        }