Beispiel #1
0
        public virtual RefundInfo LoadBySysNo(int sysNo, out string customerName,
                                              out CustomerContactInfo contactInfo,
                                              out PromotionCode_Customer_Log promotionCodeLog)
        {
            RefundInfo refund = ObjectFactory <RefundProcessor> .Instance.LoadWithItemsBySysNo(sysNo);

            CustomerInfo customer = ExternalDomainBroker.GetCustomerInfo(refund.CustomerSysNo.Value);

            customerName          = customer.BasicInfo.CustomerName;
            refund.IncomeBankInfo = ExternalDomainBroker.GetSOIncomeRefundInfo(sysNo, RefundOrderType.RO);
            contactInfo           = null;
            if (refund.RefundPayType == RefundPayType.BankRefund && refund.IncomeBankInfo != null &&
                string.IsNullOrEmpty(refund.IncomeBankInfo.CardNumber))
            {
                if (refund.RefundItems != null && refund.RefundItems.Count > 0)
                {
                    RMARequestInfo request = ObjectFactory <RequestProcessor> .Instance.LoadByRegisterSysNo(refund.RefundItems[0].RegisterSysNo.Value);

                    contactInfo = ObjectFactory <CustomerContactProcessor> .Instance.LoadByRequestSysNo(request.SysNo.Value);
                }
            }
            promotionCodeLog = ExternalDomainBroker.GetPromotionCodeLog(refund.SOSysNo.Value);
            if (promotionCodeLog != null)
            {
                promotionCodeLog.UsedOrderSysNo = ExternalDomainBroker.GetSOSysNoByCouponSysNo(promotionCodeLog.CouponCodeSysNo.Value);
            }
            return(refund);
        }
Beispiel #2
0
        protected void btnSave_Click(object sender, EventArgs e)
        {
            //实例化一个控件数据映射对象
            ControlDataMap cdm = new ControlDataMap();
            //收集数据到实体对象
            CustomerContactInfo info = cdm.CollectDataToObject <CustomerContactInfo>(
                MyWebForm.GetIBControls(this.tbCustomerInfo.Controls)
                );

            //调用业务类,保存数据
            bool result           = false;
            CustomerManageBIZ biz = new CustomerManageBIZ();

            if (dbtCID.ReadOnly)
            {
                //这里规定主键对应的控件是只读状态,表示当前表单是修改状态,否则是新增状态
                result = biz.UpdateContactInfo(info);
            }
            else
            {
                result          = biz.AddContactInfo(info);
                dbtCID.ReadOnly = true;
                txtComeIn.Text  = dbtCID.Text;
            }
            lblMsg.Text = result ? "保存成功!请进入本超市!(也可以继续修改你的个人信息)" : "保存失败";
        }
Beispiel #3
0
        /// <summary>
        /// 获取商品销售单视图
        /// </summary>
        /// <returns></returns>
        public IEnumerable <GoodsSellNoteVM> GetGoodsSellNote()
        {
            GoodsSellNote       note = new GoodsSellNote();
            Employee            emp  = new Employee();
            CustomerContactInfo cst  = new CustomerContactInfo();
            OQL joinQ = OQL.From(note)
                        .InnerJoin(emp).On(note.SalesmanID, emp.WorkNumber)
                        .InnerJoin(cst).On(note.CustomerID, cst.CustomerID)
                        .Select(note.NoteID, cst.CustomerName, note.ManchinesNumber, emp.EmployeeName, note.SalesType, note.SellDate)
                        .OrderBy(note.NoteID, "desc")
                        .END;

            PWMIS.DataProvider.Data.AdoHelper db = PWMIS.DataProvider.Adapter.MyDB.GetDBHelper();
            EntityContainer ec = new EntityContainer(joinQ, db);

            ec.Execute();
            //可以使用下面的方式获得各个成员元素列表
            //var noteList = ec.Map<GoodsSellNote>().ToList();
            //var empList = ec.Map<Employee>().ToList();
            //var cstList = ec.Map<CustomerContactInfo>().ToList();
            //直接使用下面的方式获得新的视图对象
            var result = ec.Map <GoodsSellNoteVM>(e =>
            {
                e.NoteID          = ec.GetItemValue <int>(0);
                e.CustomerName    = ec.GetItemValue <string>(1);
                e.ManchinesNumber = ec.GetItemValue <string>(2);
                e.EmployeeName    = ec.GetItemValue <string>(3);
                e.SalesType       = ec.GetItemValue <string>(4);
                e.SellDate        = ec.GetItemValue <DateTime>(5);
                return(e);
            }
                                                  );

            return(result);
        }
Beispiel #4
0
        public virtual CustomerContactInfo LoadByRequestSysNo(int sysNo)
        {
            CustomerContactInfo entity = null;

            entity = da.Load(sysNo);
            if (entity == null)
            {
                RMARequestInfo request = ObjectFactory <IRequestDA> .Instance.LoadBySysNo(sysNo);

                if (request != null)
                {
                    entity = new CustomerContactInfo();
                    entity.ReceiveAddress   = request.Address;
                    entity.ReceiveAreaSysNo = request.AreaSysNo;
                    entity.ReceiveContact   = request.Contact;
                    entity.ReceiveName      = request.Contact;
                    entity.ReceivePhone     = request.Phone;
                    if (request.SOSysNo.HasValue)
                    {
                        SOInfo so = ExternalDomainBroker.GetSOInfo(request.SOSysNo.Value);
                        if (so != null)
                        {
                            entity.ReceiveCellPhone = so.ReceiverInfo.MobilePhone;
                            entity.ReceiveZip       = so.ReceiverInfo.Zip;
                        }
                    }
                }
            }
            return(entity);
        }
Beispiel #5
0
        public bool UpdateByRequestSysNo(CustomerContactInfo entity)
        {
            DataCommand updateCommand = DataCommandManager.GetDataCommand("UpdateCustomerContactInfoByRequestSysNo");

            updateCommand.SetParameterValue <CustomerContactInfo>(entity);

            return(updateCommand.ExecuteNonQuery() > 0);
        }
Beispiel #6
0
        public virtual CustomerContactInfo LoadOriginByRequestSysNo(int sysNo)
        {
            CustomerContactInfo entity = null;

            entity = da.LoadOrigin(sysNo);

            return(entity);
        }
Beispiel #7
0
 public DBContextResult<bool> SaveContactInfo(CustomerContactInfo InfoObj)
 {
     return ExecuteDALMethod(db, (DataContext, p_InfoObj) =>
     {
         DataContext.CustomerContactInfoes.Add(p_InfoObj);
         DataContext.SaveChanges();
         return true;
     }, InfoObj);
 }
Beispiel #8
0
        public CustomerContactInfo Insert(CustomerContactInfo entity)
        {
            DataCommand insertCommand = DataCommandManager.GetDataCommand("InsertCustomerContact");

            insertCommand.SetParameterValue <CustomerContactInfo>(entity);

            insertCommand.ExecuteNonQuery();
            entity.SysNo = (int)insertCommand.GetParameterValue("@SysNo");
            return(entity);
        }
Beispiel #9
0
        /// <summary>
        /// 获取联系人信息记录数量
        /// </summary>
        /// <returns></returns>
        public int GetContactInfoCount()
        {
            CustomerContactInfo info = new CustomerContactInfo();
            OQL q = OQL.From(info)
                    .Select()
                    .Count(info.CustomerID, "tempField").END;
            CustomerContactInfo infoCount = EntityQuery <CustomerContactInfo> .QueryObject(q);

            return(Convert.ToInt32(infoCount.PropertyList("tempField")));
        }
Beispiel #10
0
        /// <summary>
        /// 获取指定页的联系人信息
        /// </summary>
        /// <param name="pageSize"></param>
        /// <param name="pageNumber"></param>
        /// <param name="allCount"></param>
        /// <returns></returns>
        public List <CustomerContactInfo> GetContactInfoList(int pageSize, int pageNumber, int allCount)
        {
            CustomerContactInfo info = new CustomerContactInfo();
            OQL q = new OQL(info);

            q.Select().OrderBy(info.CustomerName, "asc");
            q.Limit(pageSize, pageNumber);
            q.PageWithAllRecordCount = allCount;

            return(EntityQuery <CustomerContactInfo> .QueryList(q));
        }
        public CustomerContactInfoBuilder WithTestValues()
        {
            customerContactInfo = new CustomerContactInfo
            {
                Channel         = Core.Abstractions.Api.CustomerApi.DeleteCustomerContactInfo.Channel.Phone,
                ContactInfoType = "Cell",
                Value           = "245-555-0173"
            };

            return(this);
        }
Beispiel #12
0
        /// <summary>
        /// 获取一个已经注册的客户,如果获取不成功,则返回空
        /// </summary>
        /// <param name="customerID">客户号</param>
        /// <returns></returns>
        public Customer GetRegistedCustomer(string customerID)
        {
            CustomerContactInfo info = GetCustomerContactInfo(customerID);

            if (info != null)
            {
                return(new Customer()
                {
                    CustomerID = info.CustomerID, CustomerName = info.CustomerName
                });
            }
            return(null);
        }
Beispiel #13
0
        /// <summary>
        /// 获取一个顾客信息,如果没有则返回空对象
        /// </summary>
        /// <param name="customerID"></param>
        /// <returns></returns>
        public CustomerContactInfo GetCustomerContactInfo(string customerID)
        {
            CustomerContactInfo info = new CustomerContactInfo()
            {
                CustomerID = customerID
            };

            if (EntityQuery <CustomerContactInfo> .Fill(info))
            {
                return(info);
            }
            else
            {
                return(null);
            }
        }
Beispiel #14
0
        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            lblMsg.Text = "Selected id=" + GridView1.SelectedRow.Cells[1].Text;
            string customerId = GridView1.SelectedRow.Cells[1].Text;
            //调用业务层方法获取实体
            CustomerManageBIZ   biz  = new CustomerManageBIZ();
            CustomerContactInfo info = biz.GetCustomerContactInfo(customerId);

            //将实体与页面控件绑定
            WebControlDataMap.FillDataFromEntityClass(info,
                                                      MyWebForm.GetIBControls(this.tbCustomerInfo.Controls)
                                                      );
            //标记当前表单为编辑状态,主键控件不可编辑
            dbtCID.ReadOnly             = true;
            this.tbCustomerInfo.Visible = true;
            lblMsg.Text = "编辑客户联系信息后请保存!";
        }
Beispiel #15
0
        private CustomerContactInfo GetCustomerContactInfo(RMARequestInfo request)
        {
            if (request == null)
            {
                return(null);
            }
            CustomerContactInfo customerContactInfo = new CustomerContactInfo();

            customerContactInfo.ReceiveAddress   = request.Address;
            customerContactInfo.ReceiveAreaSysNo = request.AreaSysNo;
            customerContactInfo.ReceiveCellPhone = request.Phone;
            customerContactInfo.ReceiveContact   = request.Contact;
            customerContactInfo.ReceiveName      = request.Contact;
            customerContactInfo.ReceivePhone     = request.Phone;
            customerContactInfo.RMARequestSysNo  = request.SysNo;

            return(customerContactInfo);
        }
        public static CustomerContactInfo CreateCustomerContactInfo(string dataAreaId,
                                                                    string customerAccountNumber,
                                                                    string customerDataAreaId,
                                                                    string locator,
                                                                    string description,
                                                                    global::Microsoft.Dynamics.DataEntities.CustomerV3 customer)
        {
            CustomerContactInfo customerContactInfo = new CustomerContactInfo();

            customerContactInfo.dataAreaId            = dataAreaId;
            customerContactInfo.CustomerAccountNumber = customerAccountNumber;
            customerContactInfo.CustomerDataAreaId    = customerDataAreaId;
            customerContactInfo.Locator     = locator;
            customerContactInfo.Description = description;
            if ((customer == null))
            {
                throw new global::System.ArgumentNullException("customer");
            }
            customerContactInfo.Customer = customer;
            return(customerContactInfo);
        }
Beispiel #17
0
        protected void btnDelete_Click(object sender, EventArgs e)
        {
            if (GridView1.SelectedIndex >= 0)
            {
                string customerId        = GridView1.SelectedRow.Cells[1].Text;
                CustomerContactInfo info = new CustomerContactInfo()
                {
                    CustomerID = customerId
                };

                CustomerManageBIZ biz = new CustomerManageBIZ();
                if (biz.RemoveContactInfo(info))
                {
                    this.tbCustomerInfo.Visible = false;
                    lblMsg.Text = "删除成功!";
                    bindGrid();
                }
            }
            else
            {
                lblMsg.Text = "请先选择一行有效的记录!";
            }
        }
Beispiel #18
0
 public bool UpdateContactInfo(CustomerContactInfo info)
 {
     return(EntityQuery <CustomerContactInfo> .Instance.Update(info) > 0);
 }
Beispiel #19
0
        /// <summary>
        /// 验证奥硕是否支持上门取件
        /// </summary>
        /// <param name="areaSysNo">申请地区编号</param>
        //void ValidOZZOFetchToHome(RMARequestInfo request)
        //{
        //    //根据行政区划判断是否可以上门取件,如不支持进行提示,且不能保存。
        //    int? areaSysNo = request.AreaSysNo;
        //    bool isFetch = true;

        //    var ozzoShipTypeAreasSysNo = new int[] { 21, 65, 370 };

        //    //获取不支持的地区的列表
        //    var unFetchAreaList = ObjectFactory<IBizInteract.ICommonBizInteract>.Instance.QueryShipAreaUnByAreaSysNo(ozzoShipTypeAreasSysNo, areaSysNo.Value);
        //    // QueryModelProxy.CommonDataQueryProvider.QueryShipAreaUnByAreaSysNo(ozzoShipTypeAreasSysNo, areaSysNo.Value);
        //    if (unFetchAreaList.Count > 0)
        //    {
        //        isFetch = false;
        //        //判断逻辑为:如果有一种配送点可支持上门取件,那判断将终止
        //        foreach (int shipTypeAreaSysNo in ozzoShipTypeAreasSysNo)
        //        {
        //            //可配送的终止条件为配送点没有在不支持地区中配置
        //            if (unFetchAreaList.Count(p => p.ShipTypeSysNo == shipTypeAreaSysNo) == 0)
        //            {
        //                isFetch = true;
        //                break;
        //            }
        //        }
        //    }

        //    //不支持抛出异常
        //    if (!isFetch)
        //    {
        //        throw new BizException("本地区不支持上门取件服务!");
        //    }

        //}


        /// <summary>
        /// 更新申请单(包括单件信息)
        /// </summary>
        /// <param name="request">申请单信息</param>
        public virtual void Update(RMARequestInfo request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            if (!request.SysNo.HasValue)
            {
                throw new ArgumentNullException("request.SysNo");
            }
            request.VerifyUpdate(LoadBySysNo(request.SysNo.Value));

            if (request.ShipViaCode.Trim() == ozzShip)
            {
                //ValidOZZOFetchToHome(request);

                #region [时间限制]

                //if (!request.ETakeDate.HasValue)
                //{
                //    request.ETakeDate = request.CustomerSendTime;
                //}
                //else
                //{
                //    request.CustomerSendTime = request.ETakeDate;
                //}
                //DateTime minReceiveDate = DateTime.Now;
                //DateTime tmpDate = DateTime.Now;
                ////周一四点后
                //if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Monday && request.CreateDate.Value.Hour >= 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(2);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {

                //        throw new BizException("周一下午四点之后至周二下午四点前申请,预约取货时间最早可选周三取件!");
                //    }

                //}
                ////周二四点前
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Tuesday && request.CreateDate.Value.Hour < 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周一下午四点之后至周二下午四点前申请,预约取货时间最早可选周三取件!");
                //    }
                //}
                ////周二四点后
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Tuesday && request.CreateDate.Value.Hour >= 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(2);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周二下午四点后至周三下午四点前申请,预约取货时间最早可选周四取件!");
                //    }

                //}
                ////周三四点前
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Wednesday && request.CreateDate.Value.Hour < 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周二下午四点后至周三下午四点前申请,预约取货时间最早可选周四取件!");
                //    }
                //}
                ////周三四点后
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Wednesday && request.CreateDate.Value.Hour >= 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(2);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周三下午四点后至周四下午四点前申请,预约取货时间最早可选周五取件!");

                //    }

                //}
                ////周四四点前Thursday
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Thursday && request.CreateDate.Value.Hour < 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周三下午四点后至周四下午四点前申请,预约取货时间最早可选周五取件!");
                //    }
                //}
                ////周四四点后
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Thursday && request.CreateDate.Value.Hour >= 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(2);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周四下午四点后至周五下午四点前申请,预约取货时间最早可选周六取件!");
                //    }

                //}
                ////周五四点前
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Friday && request.CreateDate.Value.Hour < 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周四下午四点后至周五下午四点前申请,预约取货时间最早可选周六取件!");
                //    }
                //}
                ////周五四点后
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Friday && request.CreateDate.Value.Hour >= 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(4);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {

                //        throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!");
                //    }
                //}
                ////周六全天
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Saturday)
                //{

                //    tmpDate = request.CreateDate.Value.AddDays(3);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!");
                //    }
                //}
                ////周日全天
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Sunday)
                //{
                //    tmpDate = request.CreateDate.Value.AddDays(2);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!");
                //    }
                //}
                ////周一四点前
                //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Monday && request.CreateDate.Value.Hour < 16)
                //{

                //    tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour);
                //    minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0);
                //    if (request.CustomerSendTime.Value < minReceiveDate)
                //    {
                //        throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!");
                //    }
                //}

                #endregion
            }

            if (request.CreateDate.Value.Year > request.CustomerSendTime.Value.Year ||
                (request.CreateDate.Value.Year == request.CustomerSendTime.Value.Year && (request.CreateDate.Value.DayOfYear - request.CustomerSendTime.Value.DayOfYear) > 7))
            {
                throw new BizException(ResouceManager.GetMessageString("RMA.Request", "OrderTimeNotPreviousWeek"));
            }


            request.Registers = registerProcessor.LoadByRequestSysNo(request.SysNo.Value);

            CustomerContactInfo customerContactInfo = GetCustomerContactInfo(request);

            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                customerContactDA.UpdateByRequestSysNo(customerContactInfo);

                bool?isWithin7Days = null;
                if (request.CustomerSendTime.HasValue)
                {
                    isWithin7Days = IsWithin7Days(request.SOSysNo.Value, request.CustomerSendTime.Value);
                }
                request.Registers.ForEach(reg =>
                {
                    reg.BasicInfo.IsWithin7Days = isWithin7Days;
                });

                UpdateWithRegisters(request);

                scope.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_Update", BizLogType.RMA_Request_Update, request.SysNo.Value, request.CompanyCode);
        }
Beispiel #20
0
        private string ozzShip = AppSettingManager.GetSetting("RMA", "PushShipTypeName"); // 上门取件物流  "OZZO奥硕物流";

        /// <summary>
        /// 创建申请单
        /// </summary>
        /// <param name="request">申请单信息</param>
        /// <returns>申请单信息</returns>
        public virtual RMARequestInfo Create(RMARequestInfo request)
        {
            request.VerifyForCreate();

            if (request.ShipViaCode.Trim() == ozzShip)
            {
                //奥硕上门地点判断
                //ValidOZZOFetchToHome(request);
            }

            var refundItems = ObjectFactory <IRefundDA> .Instance.GetMasterByOrderSysNo(request.SOSysNo.Value);

            if (refundItems != null)
            {
                refundItems.ForEach(p =>
                {
                    if (p.Status == RMARefundStatus.Refunded && p.RefundReason.HasValue && p.RefundReason == 2)
                    {
                        throw new BizException(ResouceManager.GetMessageString("RMA.Request", "ExsitsNotCreateRequest"));
                    }
                });
            }

            SOInfo so = ExternalDomainBroker.GetSOInfo(request.SOSysNo.Value);

            if (so.BaseInfo.Status.Value != SOStatus.OutStock && so.BaseInfo.Status.Value != SOStatus.Shipping && so.BaseInfo.Status != SOStatus.Complete && so.BaseInfo.Status != SOStatus.Reported)
            {
                throw new BizException(ResouceManager.GetMessageString("RMA.Request", "OutStockNotCreateRequest"));
            }

            if (so.BaseInfo.SOType == SOType.ElectronicCard || so.BaseInfo.SOType == SOType.PhysicalCard)
            {
                throw new BizException(ResouceManager.GetMessageString("RMA.Request", "GiftCardNoRMA"));
            }
            if (so.BaseInfo.PayTypeSysNo == 203)
            {
                throw new BizException(ResouceManager.GetMessageString("RMA.Request", "RedeemGiftCertificatesNoRMA"));
            }


            if (so.BaseInfo.PayTypeSysNo.HasValue)
            {
                int t;

                if (int.TryParse(AppSettingManager.GetSetting(SOConst.DomainName, "GiftVoucher_PayTypeSysNo"), out t))
                {
                    if (so.BaseInfo.PayTypeSysNo.Value == t)
                    {
                        throw new BizException(ResouceManager.GetMessageString("RMA.Request", "GiftCertificatesNoRMA"));
                    }
                }
            }


            CustomerContactInfo customerContactInfoEntity = GetCustomerContactInfo(request);

            BizEntity.Invoice.DeliveryType shipType = BizEntity.Invoice.DeliveryType.SELF;
            InvoiceType?invoceType    = InvoiceType.SELF;
            StockType?  stockType     = StockType.SELF;
            int         merchantSysNo = 1;

            if (so != null)
            {
                shipType      = so.ShippingInfo.ShippingType;
                invoceType    = so.InvoiceInfo.InvoiceType;
                stockType     = so.ShippingInfo.StockType;
                merchantSysNo = so.BaseInfo.Merchant.MerchantID ?? 0;
            }

            using (TransactionScope tran = new TransactionScope())
            {
                request.SysNo     = CreateSysNo();
                request.RequestID = GenerateId(request.SysNo.Value);
                //创建申请单初始状态为【待审核】 add by norton 2012.11.21
                request.Status        = RMARequestStatus.WaitingAudit;
                request.IsSubmit      = true;
                request.ShippingType  = shipType;
                request.InvoiceType   = invoceType;
                request.StockType     = stockType;
                request.MerchantSysNo = merchantSysNo;
                requestDA.Create(request);

                customerContactInfoEntity.RMARequestSysNo = request.SysNo;

                customerContactInfoEntity.ReceiveCellPhone = so.ReceiverInfo.MobilePhone;
                customerContactInfoEntity.ReceiveZip       = so.ReceiverInfo.Zip;

                ObjectFactory <CustomerContactProcessor> .Instance.Create(customerContactInfoEntity);

                request.Registers.ForEach(register =>
                {
                    register.SysNo                       = registerDA.CreateSysNo();
                    register.BasicInfo.Status            = RMARequestStatus.Origin;
                    register.BasicInfo.OwnBy             = RMAOwnBy.Origin;
                    register.BasicInfo.Location          = RMALocation.Origin;
                    register.BasicInfo.IsWithin7Days     = false;
                    register.CheckInfo.IsRecommendRefund = false;
                    register.RevertInfo.NewProductStatus = RMANewProductStatus.Origin;
                    register.BasicInfo.NextHandler       = RMANextHandler.RMA;
                    register.CompanyCode                 = request.CompanyCode;

                    SOItemInfo item = so.Items.FirstOrDefault(p => p.ProductSysNo == register.BasicInfo.ProductSysNo.Value);
                    register.BasicInfo.ShippedWarehouse = item.StockSysNo.ToString();

                    register.VerifyCreate();

                    registerDA.Create(register);

                    registerDA.InsertRequestItem(request.SysNo.Value, register.SysNo.Value);

                    //创建成功后,发送邮件
                    //if (request.VerifyForSendCreateEmail())
                    //{
                    //    var customer = ExternalDomainBroker.GetCustomerInfo(request.CustomerSysNo.Value);
                    //    SendCreateEmail(customer.BasicInfo.Email, request.RequestID);
                    //}
                });

                tran.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_Create", BizLogType.RMA_Request_Create, request.SysNo.Value, request.CompanyCode);

            return(request);
        }
Beispiel #21
0
 public bool RemoveContactInfo(CustomerContactInfo info)
 {
     return(EntityQuery <CustomerContactInfo> .Instance.Delete(info) > 0);
 }
Beispiel #22
0
        /// <summary>
        /// 保存销售信息
        /// </summary>
        /// <param name="customer">客户信息</param>
        /// <param name="integral">要增加的积分</param>
        /// <returns></returns>
        private GoodsSellNote SaveSalesInfo(Customer customer, int integral)
        {
            GoodsSellNote note = new GoodsSellNote();

            note.CustomerID       = customer.CustomerID;
            note.ManchinesNumber  = this.CurrCRManchines.CashRegisterNo;
            note.SalesmanID       = this.CurrCashier.WorkNumber;
            note.SalesType        = "店内销售";
            note.SellDate         = DateTime.Now;
            note.GoodsSellDetails = new List <GoodsSellDetail>();

            AdoHelper db = MyDB.GetDBHelper();

            db.BeginTransaction();
            try
            {
                EntityQuery <GoodsSellNote> query = new EntityQuery <GoodsSellNote>(db);
                if (query.Insert(note) > 0)
                {
                    foreach (Goods goods in customer.Goodss)
                    {
                        if (goods.GoodsNumber > 0)
                        {
                            //处理详单
                            GoodsSellDetail detail = new GoodsSellDetail();
                            detail.GoodsPrice   = goods.GoodsPrice;
                            detail.NoteID       = note.NoteID;
                            detail.SellNumber   = goods.GoodsNumber;
                            detail.SerialNumber = goods.SerialNumber;

                            note.GoodsSellDetails.Add(detail);

                            //更新库存
                            SuperMarketDAL.Entitys.GoodsStock stock = new SuperMarketDAL.Entitys.GoodsStock();
                            stock.GoodsID = goods.GoodsID;
                            stock.Stocks  = goods.GoodsNumber;

                            OQL q = OQL.From(stock)
                                    .UpdateSelf('-', stock.Stocks)
                                    .Where(stock.GoodsID)
                                    .END;
                            EntityQuery <SuperMarketDAL.Entitys.GoodsStock> .ExecuteOql(q, db);
                        }
                    }

                    EntityQuery <GoodsSellDetail> queryDetail = new EntityQuery <GoodsSellDetail>(db);
                    queryDetail.Insert(note.GoodsSellDetails);

                    //更新会员的积分
                    if (integral > 0)
                    {
                        SuperMarketDAL.Entitys.CustomerContactInfo ccInfo = new CustomerContactInfo();
                        ccInfo.CustomerID = customer.CustomerID;
                        ccInfo.Integral   = integral;
                        OQL qc = OQL.From(ccInfo)
                                 .UpdateSelf('+', ccInfo.Integral)
                                 .Where(ccInfo.CustomerID)
                                 .END;
                        EntityQuery <SuperMarketDAL.Entitys.GoodsStock> .ExecuteOql(qc, db);
                    }
                }
                db.Commit();
            }
            catch (Exception ex)
            {
                db.Rollback();
                throw new Exception("插入销售记录失败,内部错误原因:" + ex.Message);
            }
            return(note);
        }
Beispiel #23
0
 public virtual void Update(CustomerContactInfo entity)
 {
     da.Update(entity);
 }
Beispiel #24
0
 public virtual CustomerContactInfo Create(CustomerContactInfo entity)
 {
     return(da.Insert(entity));
 }
 public virtual CustomerContactInfo Create(CustomerContactInfo contactInfo)
 {
     return(ObjectFactory <CustomerContactProcessor> .Instance.Create(contactInfo));
 }
 public virtual void Update(CustomerContactInfo contactInfo)
 {
     ObjectFactory <CustomerContactProcessor> .Instance.Update(contactInfo);
 }
 public CustomerContactInfo UpdateCustomerContact(CustomerContactInfo customerContact)
 {
     return(ObjectFactory <CustomerContactAppService> .Instance.Create(customerContact));
 }
Beispiel #28
0
 public DBContextResult <bool> DAL_SaveContactInfo(CustomerContactInfo InfoObj)
 {
     return(SaveContactInfo(InfoObj));
 }
Beispiel #29
0
 public bool AddContactInfo(CustomerContactInfo info)
 {
     return(EntityQuery <CustomerContactInfo> .Instance.Insert(info) > 0);
 }