Пример #1
0
        /// <summary>
        /// 查询我的消息(仅1个月以内的消息)
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <returns></returns>
        public static List<Message> GetMyMessageList(UserInfo User)
        {
            LogWriter.WriteLog("NoticeService.GetMyMessageList:UserName="******"SendTime > '" + DateTime.Today.AddMonths(-1).ToString("yyyy-MM-01") + "'";

            List<Message> lists = new List<Message>(dt.DefaultView.Count);
            foreach (DataRowView row in dt.DefaultView)
            {
                Message m = new Message();
                m.MsgID = (int)row["MsgID"];
                m.Sender = (string)row["Sender"];
                m.SenderRealName = (string)row["SenderRealName"];
                m.Content = (string)row["Content"];
                m.SendTime = (DateTime)row["SendTime"];
                m.IsRead = (string)row["IsRead"];
                m.KeyType = (string)row["KeyType"];
                m.KeyValue = (string)row["KeyValue"];

                lists.Add(m);
            }

            return lists;
        }
        /// <summary>
        /// 获取所有行政城市
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <returns></returns>
        public static List<OfficialCity> GetAllOfficialCitys(UserInfo User)
        {
            LogWriter.WriteLog("OfficialCitySerice.GetAllOfficialCitys:UserName="******"MCS_SYS.dbo.Addr_OfficialCity", c.OfficialCity, 1);
                    if (prov > 0)
                        citys = Addr_OfficialCityBLL.GetModelList("Level<=3 AND Level1_SuperID=" + prov.ToString());
                }
            }

            if (citys == null) citys = Addr_OfficialCityBLL.GetModelList("Level<=3");

            List<OfficialCity> lists = new List<OfficialCity>(citys.Count);
            foreach (Addr_OfficialCity item in citys)
            {
                lists.Add(new OfficialCity(item));
            }
            return lists;
        }
Пример #3
0
        /// <summary>
        /// 结应收款_现金结
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Retailer"></param>
        /// <param name="PayMode">支付方式:1现金、2POS</param>
        /// <param name="Amount">收款金额</param>
        /// <param name="Remark">备注</param>
        /// <param name="WorkList">拜访日志</param>
        /// <param name="ARIDs">应收单据ID,多个单据间以逗号间隔</param>
        /// <param name="ErrorInfo">输出:出错信息</param>
        /// <returns></returns>
        public static int BalanceRetailerAR_Receipt(UserInfo User, int TDP, int Retailer, int PayMode, decimal Amount,
            string Remark, int WorkList, string ARIDs, out string ErrorInfo)
        {
            ErrorInfo = "";
            LogWriter.WriteLog("PBMIFService.BalanceRetailerAR_Receipt:UserName="******",TDP=" + TDP.ToString() +
               ",Retailer=" + Retailer.ToString() + ",PayMode=" + PayMode.ToString() + ",Amount=" + Amount.ToString() +
               ",Remark=" + Remark + ",WorkList=" + WorkList.ToString() + ",ARIDs=" + ARIDs);

            if (User.OwnerType == 3) TDP = User.ClientID;

            int ret = AC_CashFlowListBLL.Receipt_BalanceAR(TDP, Retailer, User.StaffID, PayMode, Math.Round(Amount, 2),
                Remark, User.StaffID, WorkList, ARIDs);

            if (ret < 0)
            {
                switch (ret)
                {
                    case -10:
                        ErrorInfo = "应收款ID为空";
                        break;
                    case -11:
                        ErrorInfo = "应收款金额与收款金额不匹配";
                        break;
                    case -12:
                        ErrorInfo = "统计应收款总额时出错";
                        break;
                    default:
                        ErrorInfo = "收款出错,Ret=" + ret.ToString();
                        break;
                }
            }

            return ret;
        }
        /// <summary>
        /// 获取指定城市的全名
        /// </summary>
        /// <param name="AuthKey">匿名用户登录后的认证码</param>
        /// <param name="CityID"></param>
        /// <returns></returns>
        public static string GetCityFullName(UserInfo User, int CityID)
        {
            LogWriter.WriteLog("OfficialCityService.GetCityFullName:UserName="******",CityID=" + CityID.ToString());

            if (CityID <= 1) return "中国";

            return TreeTableBLL.GetFullPathName("MCS_SYS.dbo.Addr_OfficialCity", CityID).Replace("->", " ");
        }
Пример #5
0
        /// <summary>
        /// 追加评论
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <param name="NoticeID"></param>
        /// <param name="CommentContent"></param>
        /// <returns></returns>
        public static int AddComment(UserInfo User, int NoticeID, string CommentContent)
        {
            LogWriter.WriteLog("NoticeService.AddComment:UserName="******",NoticeID=" + NoticeID.ToString() + ",CommentContent=" + CommentContent);

            if (User.AccountType == 1)
            {
                PN_CommentBLL commentbll = new PN_CommentBLL();
                commentbll.Model.Notice = NoticeID;
                commentbll.Model.Staff = User.StaffID;
                commentbll.Model.Content = CommentContent + "[" + User.UserName + "]";
                commentbll.Model.CommentTime = DateTime.Now;
                commentbll.Add();
            }
            return 0;
        }
Пример #6
0
        /// <summary>
        /// 预售订单汇总
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Vehicle"></param>
        /// <param name="BeginDate"></param>
        /// <param name="EndDate"></param>
        /// <param name="DisplayMode">1:按产品汇总 2:按客户汇总</param>
        /// <returns></returns>
        public static List<DicDataItem> GetOrderSummary(UserInfo User, int TDP, DateTime BeginDate, DateTime EndDate, int DisplayMode)
        {
            LogWriter.WriteLog("PBMIFService.GetOrderSummary:UserName="******",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd") + ",DisplayMode=" + DisplayMode.ToString());

            if (User.OwnerType == 3) TDP = User.ClientID;

            DataTable dt = null;

            if (DisplayMode == 1)
                dt = PBM_OrderBLL.GetOrderSummary_ByProduct(TDP, User.StaffID, BeginDate, EndDate);
            else
                dt = PBM_OrderBLL.GetOrderSummary_ByClient(TDP, User.StaffID, BeginDate, EndDate);

            List<DicDataItem> list = new List<DicDataItem>(dt.Rows.Count);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];

                if (DisplayMode == 1)
                {
                    string remark = "";
                    if ((int)dr["Quantity_T"] != 0)
                    {
                        remark += dr["Quantity_T"].ToString() + dr["Packagint_T"].ToString();
                    }

                    if ((int)dr["Quantity_P"] != 0)
                    {
                        remark += dr["Quantity_P"].ToString() + dr["Packagint_P"].ToString();
                    }

                    //remark += " 重量:" + dr["TotalWeight"].ToString() + "Kg";

                    list.Add(new DicDataItem((int)dr["Product"], dr["ProductName"].ToString(), ((decimal)dr["TotalAmount"]).ToString("0.##"), remark));
                }
                else
                    list.Add(new DicDataItem((int)dr["Client"], dr["ClientName"].ToString(), ((decimal)dr["TotalAmount"]).ToString("0.##"), ""));
            }
            return list;
        }
Пример #7
0
        /// <summary>
        /// 获取当前员工关联的送货车辆,如果员工没有关联到车辆,则无法开展车销、送货服务
        /// </summary>
        /// <param name="User"></param>
        /// <returns></returns>
        public static List<Vehicle> GetRelateVehicleList(UserInfo User, int TDP)
        {
            LogWriter.WriteLog("PBMIFService.GetRelateVehicleList:UserName=" + User.UserName);
            IList<CM_Vehicle> vehicles = null;

            if (User.OwnerType == 3)
            {
                vehicles = CM_VehicleInStaffBLL.GetVehicleByStaff(User.StaffID);

            }
            else if (User.OwnerType == 2)
            {
                if (TDP > 0)
                {
                    vehicles = CM_VehicleBLL.GetVehicleByClient(TDP);
                }
                else
                {
                    IList<CM_Client> clients = GetManagerTDPByStaff(User);
                    if (clients == null || clients.Count == 0) return null;
                    vehicles = CM_VehicleBLL.GetVehicleByClient(clients[0].ID);
                }
            }

            if (vehicles == null) return null;
            List<Vehicle> list = new List<Vehicle>(vehicles.Count);

            foreach (CM_Vehicle item in vehicles)
            {
                list.Add(new Vehicle(item));
            }
            return list;
        }
Пример #8
0
        /// <summary>
        /// 获取当前员工可管辖的经销商
        /// </summary>
        /// <param name="User"></param>
        /// <returns></returns>
        public static List<ClientInfo> GetTDPList(UserInfo User)
        {
            LogWriter.WriteLog("PBMIFService.GetTDPList:UserName=" + User.UserName);

            IList<CM_Client> clients = GetManagerTDPByStaff(User);
            List<ClientInfo> lists = new List<ClientInfo>(clients.Count);
            foreach (CM_Client item in clients)
            {
                lists.Add(new ClientInfo(item, User.OwnerType == 2 ? User.ClientID : 0));
            }

            return lists;
        }
Пример #9
0
        /// <summary>
        /// 上传巡店工作日志关联照片
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <param name="ClientID">巡店工作日志ID</param>
        /// <param name="PicName">图片名称(可选)</param>
        /// <param name="PicData">图片数据</param>
        /// <returns>大于0:成功 -1:巡店工作日志ID无效 -4:照片格式不正确</returns>
        public static int UploadVisitWorkPicture(UserInfo User, int VisitWorkID, string PicName, string Description, string PicData, out Guid PicGUID)
        {
            PicGUID = Guid.Empty;
            LogWriter.WriteLog("PBMIFService.UploadVisitWorkPicture:UserName="******",VisitWorkID=" + VisitWorkID.ToString()
                + ",PicName=" + PicName + ",Description=" + Description + ",PicDataLength=" + PicData.Length);

            try
            {
                if (VisitWorkID == 0) return -1;        //必须指定巡店工作日志ID

                if (string.IsNullOrEmpty(PicData)) return -4;
                byte[] buffer = Convert.FromBase64String(PicData);
                if (buffer.Length == 0 && buffer.Length > 1024 * 1024 * 10) return -4;

                ATMT_AttachmentBLL atm = new ATMT_AttachmentBLL();
                atm.Model.RelateType = 95;          //巡店工作日志
                atm.Model.RelateID = VisitWorkID;
                atm.Model.Name = string.IsNullOrEmpty(PicName) ? "照片" : PicName;
                atm.Model.ExtName = "jpg";          //默认为JPG图片
                atm.Model.FileSize = PicData.Length / 1024;
                atm.Model.Description = Description;
                atm.Model.UploadUser = User.UserName;
                atm.Model.IsDelete = "N";

                int ret = atm.Add(buffer, out PicGUID);
                LogWriter.WriteLog("PBMIFService.UploadVisitWorkPicture Upload Result:UserName="******",VisitWorkID=" + VisitWorkID.ToString()
                    + ",PicGUID=" + PicGUID.ToString() + ",Ret=" + ret.ToString());
                return ret;
            }
            catch (System.Exception err)
            {
                LogWriter.WriteLog("PBMIFService.UploadVisitWorkPicture Exception Error!", err);
                return -100;
            }
        }
Пример #10
0
        /// <summary>
        /// 获取指定拜访路线上的门店列表
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="VisitRoute"></param>
        /// <param name="PageSize"></param>
        /// <param name="PageIndex"></param>
        /// <param name="Counts"></param>
        /// <returns></returns>
        public static List<ClientInfo> GetRetailerListByVisitRoute(UserInfo User, int TDP, string FindKey, int VisitRoute, int PageSize, int PageIndex, out int Counts)
        {
            Counts = 0;
            LogWriter.WriteLog("PBMIFService.GetRetailerListByVisitRoute:UserName="******",TDP=" + TDP.ToString()
                + ",FindKey=" + FindKey + ",VisitRoute=" + VisitRoute + ",PageSize=" + PageSize.ToString() + ",PageIndex=" + PageIndex.ToString());
            if (User.OwnerType == 3) TDP = User.ClientID;

            #region 设定查询条件
            string ExtConditionStr = "";
            if (FindKey.Trim() != "")
                ExtConditionStr = " (CM_Client.FullName LIKE '%" + FindKey.Trim() + "%'  OR CM_Client.ShortName LIKE '%" + FindKey.Trim()
                    + "%' OR CM_Client.Address LIKE '%" + FindKey.Trim() + "%')";

            //根据线路筛选
            if (VisitRoute != 0)
            {
                if (User.OwnerType == 3)
                {
                    ExtConditionStr += " AND CM_Client.ID IN (SELECT Client FROM CM_ClientSupplierInfo WHERE Supplier=" + TDP.ToString() + " AND State = 1 "
                        + " AND VisitRoute=" + VisitRoute.ToString() + ")";
                }
                else if (User.OwnerType == 2)
                {
                    ExtConditionStr += " AND CM_Client.ID IN (SELECT Client FROM CM_ClientManufactInfo WHERE Manufacturer=" + User.ClientID.ToString()
                        + " AND VisitRoute=" + VisitRoute.ToString() + ")";

                    ExtConditionStr += " AND CM_Client.ID IN (SELECT Client FROM CM_ClientSupplierInfo WHERE Supplier=" + TDP.ToString() + " AND State = 1 )";
                }
            }

            IList<CM_Client> clients = CM_ClientBLL.GetModelList(ExtConditionStr);
            #endregion

            Counts = clients.Count;

            #region 分页返回
            if (PageSize == 0) PageSize = 10;
            List<ClientInfo> list = new List<ClientInfo>();
            int fromindex = PageSize * PageIndex;
            int endindex = PageSize * (PageIndex + 1);

            if (fromindex < clients.Count)
            {
                for (int i = fromindex; (i < endindex && i < clients.Count); i++)
                {
                    ClientInfo c = new ClientInfo(clients[i], User.ClientID);
                    list.Add(c);
                }
            }
            return list;
            #endregion
        }
Пример #11
0
        /// <summary>
        /// 查询门店指定日期范围内的销售单
        /// </summary>
        /// <param name="User"></param>
        /// <param name="Retailer"></param>
        /// <param name="StateFlag">状态标志 ALL:所有 COMPLETE:已完成的销售单 UNCOMPLETE:未完成的销售单</param>
        /// <param name="BeginDate"></param>
        /// <param name="EndDate"></param>
        /// <returns></returns>
        public static List<Delivery> GetSaleOutListByRetailer(UserInfo User, int Retailer, string StateFlag, DateTime BeginDate, DateTime EndDate)
        {
            LogWriter.WriteLog("PBMIFService.GetSaleOutListByRetailer:UserName="******",Retailer=" + Retailer.ToString() +
                ",StateFlag=" + StateFlag + ",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd"));

            string condition = " Client=" + Retailer.ToString() + " AND InsertTime BETWEEN '" + BeginDate.ToString("yyyy-MM-dd")
                + "' AND '" + EndDate.ToString("yyyy-MM-dd") + " 23:59:59' ";

            if (User.OwnerType == 3) condition += " AND Supplier=" + User.ClientID.ToString();

            if (StateFlag.ToUpper() == "ALL")
                condition += " AND State<>9";
            else if (StateFlag.ToUpper() == "COMPLETE")
                condition += " AND State = 4";
            else if (StateFlag.ToUpper() == "UNCOMPLETE")
                condition += " AND State IN (1,2,3)";
            else
                condition += " AND State IN (0)";

            IList<PBM_Delivery> deliverys = PBM_DeliveryBLL.GetModelList(condition);
            List<Delivery> list = new List<Delivery>(deliverys.Count);
            foreach (PBM_Delivery item in deliverys.OrderByDescending(p => p.InsertTime))
            {
                list.Add(new Delivery(item));
            }
            return list;
        }
Пример #12
0
        /// <summary>
        /// 获取指定仓库库存
        /// </summary>
        /// <param name="User"></param>
        /// <param name="WareHouse"></param>
        /// <param name="DisplayMode">1:按产品查询库存 2:按批号查询库存</param>
        /// <returns></returns>
        public static List<Inventory> GetInventoryByWareHouse(UserInfo User, int WareHouse, int DisplayMode)
        {
            LogWriter.WriteLog("PBMIFService.GetInventoryByWareHouse:UserName="******",WareHouse=" + WareHouse.ToString()
                + ",IsMergeByProduct=" + DisplayMode);

            CM_WareHouse w = new CM_WareHouseBLL(WareHouse).Model;
            if (w == null) return null;

            if (User.OwnerType == 3 && w.Client != User.ClientID) return null;  //仓库不属于当前登录人员的经销商

            IList<INV_Inventory> invtorys = INV_InventoryBLL.GetModelList("WareHouse=" + WareHouse.ToString() + " AND Quantity>0");
            List<Inventory> list = new List<Inventory>(invtorys.Count);

            foreach (INV_Inventory item in invtorys)
            {
                Inventory inv;
                if (DisplayMode == 1)
                {
                    inv = list.FirstOrDefault(p => p.Product == item.Product);
                    if (inv != null)
                    {
                        inv.Quantity += item.Quantity;

                        inv.Quantity_T = inv.Quantity / inv.ConvertFactor;
                        inv.Quantity_P = inv.Quantity % inv.ConvertFactor;
                        continue;
                    }
                }

                inv = new Inventory(item);

                if (DisplayMode == 1) inv.LotNumber = "";

                #region 获取产品默认销售价
                try
                {
                    inv.Price = new PDT_ProductBLL(item.Product).GetProductExtInfo(w.Client).SalesPrice;
                }
                catch { inv.Price = 0; }
                #endregion

                list.Add(inv);

            }

            return list.OrderBy(p => p.CategoryName).ToList();
        }
Пример #13
0
        /// <summary>
        /// 根据门店ID获取门店详细信息
        /// </summary>
        /// <param name="User"></param>
        /// <param name="ClientID"></param>
        /// <returns></returns>
        public static ClientInfo GetRetailerDeailInfo(UserInfo User, int TDP, int ClientID)
        {
            LogWriter.WriteLog("PBMIFService.GetRetailerDeailInfo:UserName="******",TDP=" + TDP.ToString()
                + ",ClientID=" + ClientID.ToString());
            if (User.OwnerType == 3) TDP = User.ClientID;

            return new ClientInfo(ClientID, TDP);
        }
Пример #14
0
        /// <summary>
        /// 获取赠送方式
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <returns></returns>
        public static List<DicDataItem> GetDictionarySalseMode(UserInfo User)
        {
            LogWriter.WriteLog("PBMIFService.GetDictionarySalseMode:UserName="******"PBM_SalseMode");

            List<DicDataItem> list = new List<DicDataItem>(dicts.Count);
            foreach (Dictionary_Data item in dicts.Values)
            {
                list.Add(new DicDataItem(int.Parse(item.Code), item.Name, item.Code, item.Description));
            }
            return list;
        }
Пример #15
0
        /// <summary>
        /// 获取指定车辆的仓库库存
        /// </summary>
        /// <param name="UserInfo"></param>
        /// <param name="VehicleID"></param>
        /// <param name="DisplayMode">1:按产品查询库存 2:按批号查询库存</param>
        /// <returns></returns>
        public static List<Inventory> GetInventoryByVehicle(UserInfo User, int VehicleID, int DisplayMode)
        {
            LogWriter.WriteLog("PBMIFService.GetInventoryByVehicle:UserName="******",VehicleID=" + VehicleID.ToString()
                + ",IsMergeByProduct=" + DisplayMode.ToString());

            CM_Vehicle v = new CM_VehicleBLL(VehicleID).Model;
            if (v == null) return null;                 //车辆ID无效
            if (v.RelateWareHouse == 0) return null;    //车辆关联仓库无效

            return GetInventoryByWareHouse(User, v.RelateWareHouse, DisplayMode);
        }
Пример #16
0
        /// <summary>
        /// 获取当前用户可管辖的TDP
        /// </summary>
        /// <param name="User"></param>
        /// <returns></returns>
        private static IList<CM_Client> GetManagerTDPByStaff(UserInfo User)
        {
            if (User.OwnerType == 3)
            {
                //TDP员工
                return CM_ClientBLL.GetModelList("ID=" + User.ClientID);
            }
            else
            {
                //公司员工
                string ConditionStr = "ClientType = 2 AND CM_Client.ID IN (SELECT Client FROM dbo.CM_ClientManufactInfo WHERE State = 1 ";

                //获取员工管理的区域
                if (User.OrganizeCity > 1)
                {
                    Addr_OrganizeCityBLL orgcity = new Addr_OrganizeCityBLL(User.OrganizeCity, true);
                    string orgcitys = orgcity.GetAllChildNodeIDs();
                    if (orgcitys != "") orgcitys += ",";
                    orgcitys += User.OrganizeCity.ToString();

                    if (orgcitys != "") ConditionStr += " AND OrganizeCity IN (" + orgcitys + ")";
                }
                ConditionStr += ")";

                return CM_ClientBLL.GetModelList(ConditionStr);
            }
        }
Пример #17
0
        /// <summary>
        /// 新增巡店工作日志(门店拜访记录)
        /// </summary>
        /// <param name="User"></param>
        /// <param name="VisitWorkJson"></param>
        /// <returns>大于0:成功 -1:Json字符串无法解析 -2:新增拜访工作记录失败</returns>
        public static int VisitWorkAdd(UserInfo User, VisitWork Work)
        {
            LogWriter.WriteLog("PBMIFService.VisitWorkAdd:UserName="******",VisitWorkJson=" + JsonConvert.SerializeObject(Work));

            try
            {
                VisitWork v = Work;
                if (v == null) return -1;           //Json字符串无法解析

                VST_WorkListBLL bll;
                if (Work.ID == 0 || new VST_WorkListBLL(Work.ID).Model == null)
                {
                    bll = new VST_WorkListBLL();
                    bll.Model.RelateStaff = v.RelateStaff == 0 ? User.StaffID : v.RelateStaff;
                    bll.Model.Route = v.Route;
                    bll.Model.Client = v.Client;
                    bll.Model.Template = v.VisitTemplate;
                    bll.Model.WorkingClassify = v.WorkingClassify == 0 ? 1 : v.WorkingClassify;
                    bll.Model.IsComplete = v.IsComplete ? "Y" : "N";
                    bll.Model.BeginTime = v.BeginTime;
                    bll.Model.EndTime = v.EndTime;
                    bll.Model.PlanID = v.PlanID;
                    bll.Model.Remark = v.Remark;
                    bll.Model.ApproveFlag = 2;
                    bll.Model.InsertStaff = User.StaffID;
                }
                else
                {
                    bll = new VST_WorkListBLL(Work.ID);
                    bll.Model.IsComplete = v.IsComplete ? "Y" : "N";
                    bll.Model.EndTime = v.EndTime;
                    bll.Model.Remark = v.Remark;
                }

                if (bll.Model.ID == 0)
                {
                    int worklistid = bll.Add();
                    if (worklistid <= 0) return -2;     //新增拜访工作记录失败

                    Work.ID = worklistid;
                }
                else
                {
                    if (bll.Update() < 0) return -3;    //更新拜访工作记录失败
                }

                foreach (VisitWork.VisitWorkItem item in v.Items)
                {
                    if (item.WorkItemID > 0) continue;
                    VST_WorkItem detail = new VST_WorkItem();

                    detail.WorkList = Work.ID;
                    if (item.ProcessCode != "")
                    {
                        VST_Process m = new VST_ProcessBLL(item.ProcessCode).Model;
                        if (m != null) detail.Process = m.ID;
                    }
                    detail.WorkTime = item.WorkTime;
                    detail.Remark = item.Remark;

                    int detailid = bll.AddDetail(detail);

                    switch (item.ProcessCode)
                    {
                        #region 进店详细属性
                        case "JD":
                            {
                                int JobType = 0, JudgeMode = 0;
                                float Longitude = 0, Latitude = 0;

                                if (item.ExtParams.ContainsKey("JobType")) int.TryParse(item.ExtParams["JobType"].ToString(), out JobType);
                                if (item.ExtParams.ContainsKey("JudgeMode")) int.TryParse(item.ExtParams["JudgeMode"].ToString(), out JudgeMode);
                                if (item.ExtParams.ContainsKey("Longitude")) float.TryParse(item.ExtParams["Longitude"].ToString(), out Longitude);
                                if (item.ExtParams.ContainsKey("Latitude")) float.TryParse(item.ExtParams["Latitude"].ToString(), out Latitude);

                                VST_WorkItem_JDBLL jdbll = new VST_WorkItem_JDBLL();
                                jdbll.Model.Job = detailid;
                                jdbll.Model.JobType = JobType;
                                jdbll.Model.JudgeMode = JudgeMode;
                                jdbll.Model.Longitude = Longitude;
                                jdbll.Model.Latitude = Latitude;
                                if (item.ExtParams.ContainsKey("Remark")) jdbll.Model.Remark = item.ExtParams["Remark"].ToString();
                                jdbll.Add();
                                break;
                            }
                        #endregion
                        default:
                            break;
                    }
                }

                return Work.ID;
            }
            catch (System.Exception err)
            {
                LogWriter.WriteLog("PBMIFService.VisitWorkAdd Exception Error!", err);
                return -100;
            }
        }
Пример #18
0
        /// <summary>
        /// 定时上传拜访位置
        /// </summary>
        /// <param name="User"></param>
        /// <param name="Type">1:GPS定位 2:网络定位</param>
        /// <param name="Latitude">纬度</param>
        /// <param name="Longitude">经度</param>
        /// <param name="Remark"></param>
        /// <returns></returns>
        public static int VisitReportLocation(UserInfo User, int Type, float Latitude, float Longitude, string Remark)
        {
            LogWriter.WriteLog("PBMIFService.VisitReportLocation:UserName="******",Type=" + Type.ToString() +
                ",Latitude=" + Latitude.ToString() + ",Longitude=" + Longitude.ToString() + ",Remark=" + Remark.ToString());

            VST_ReportLocationBLL bll = new VST_ReportLocationBLL();
            bll.Model.RelateStaff = User.StaffID;
            bll.Model.LocateType = Type;
            bll.Model.Latitude = Latitude;
            bll.Model.Longitude = Longitude;
            bll.Model.Remark = Remark;
            bll.Model.DeviceCode = User.DeviceCode;

            return bll.Add();
        }
Пример #19
0
        /// <summary>
        /// 查询指定门店的预收款变动记录
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Retailer"></param>
        /// <param name="BeginDate"></param>
        /// <param name="EndDate"></param>
        /// <returns></returns>
        public static List<BalanceUsageInfo> GetRetailerBalanceUsageList(UserInfo User, int TDP, int Retailer, DateTime BeginDate, DateTime EndDate)
        {
            LogWriter.WriteLog("PBMIFService.GetRetailerBalanceUsageList:UserName="******",TDP=" + TDP.ToString() +
                ",Retailer=" + Retailer.ToString() + ",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd"));

            if (User.OwnerType == 3) TDP = User.ClientID;

            string condition = string.Format("OwnerClient={0} AND TradeClient={1} AND InsertTime BETWEEN '{2:yyyy-MM-dd}' AND '{3:yyyy-MM-dd} 23:59:59'",
                TDP, Retailer, BeginDate, EndDate);

            IList<AC_BalanceUsageList> ars = AC_BalanceUsageListBLL.GetModelList(condition);
            List<BalanceUsageInfo> list = new List<BalanceUsageInfo>(ars.Count);
            foreach (AC_BalanceUsageList item in ars.OrderBy(p => p.InsertTime))
            {
                list.Add(new BalanceUsageInfo(item));
            }
            return list;
        }
Пример #20
0
        /// <summary>
        /// 获取附近门店列表
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="FindKey">门店关键字</param>
        /// <param name="Latitude">纬度</param>
        /// <param name="Longitude">经度</param>
        /// <param name="MaxDistance">最大距离范围(米)</param>
        /// <param name="PageSize">分页大小</param>
        /// <param name="PageIndex">页码</param>
        /// <param name="Counts">输出:总记录数</param>
        /// <returns></returns>
        public static List<ClientInfo> GetNearRetailerList(UserInfo User, int TDP, string FindKey, decimal Latitude, decimal Longitude, int MaxDistance, int PageSize, int PageIndex, out int Counts)
        {
            Counts = 0;
            LogWriter.WriteLog("PBMIFService.GetNearRetailerList:UserName="******",TDP=" + TDP.ToString()
                + ",FindKey=" + FindKey + ",Latitude=" + Latitude.ToString() + ",Longitude=" + Longitude.ToString() + ",MaxDistance=" + MaxDistance
                + ",PageSize=" + PageSize.ToString() + ",PageIndex=" + PageIndex.ToString());
            if (User.OwnerType == 3) TDP = User.ClientID;

            #region 设定查询条件
            IList<CM_Client> clients = CM_ClientBLL.GetRetailerListBySalesMan(TDP, User.StaffID);
            FindKey = FindKey.Trim();
            if (FindKey != "")
                clients = clients.Where(p => p.FullName.Contains(FindKey) || p.ShortName.Contains(FindKey) || p.Address.Contains(FindKey)).ToList();
            #endregion

            Counts = clients.Count;

            #region 如果有传入经、纬度,则计算距离,并排序
            Dictionary<int, int> dic_Distance = new Dictionary<int, int>(clients.Count);
            if (Latitude != 0 && Longitude != 0)
            {
                foreach (CM_Client item in clients)
                {
                    //计算距离
                    CM_ClientGeoInfo geo = CM_ClientGeoInfoBLL.GetGeoInfoByClient(item.ID);
                    if (geo != null)
                    {
                        int _distance = (int)GIS_OfficialCityGeoBLL.DistanceByLatLong((double)Latitude, (double)Longitude, (double)geo.Latitude, (double)geo.Longitude);
                        dic_Distance.Add(item.ID, _distance);
                    }
                    else
                    {
                        dic_Distance.Add(item.ID, int.MaxValue);
                    }
                }
                dic_Distance = dic_Distance.OrderBy(p => p.Value).ToDictionary(p => p.Key, p => p.Value);

                if (MaxDistance == 0) MaxDistance = int.MaxValue;

                clients = clients.Where(p => dic_Distance[p.ID] < MaxDistance).OrderBy(p => dic_Distance[p.ID]).ToList();
            }
            #endregion

            #region 分页返回
            if (PageSize == 0) PageSize = 99999;
            List<ClientInfo> list = new List<ClientInfo>();
            int fromindex = PageSize * PageIndex;
            int endindex = PageSize * (PageIndex + 1);

            if (fromindex < clients.Count)
            {
                for (int i = fromindex; (i < endindex && i < clients.Count); i++)
                {
                    ClientInfo c = new ClientInfo(clients[i], User.ClientID);
                    if (dic_Distance != null && dic_Distance.ContainsKey(c.ID)) c.Distance = dic_Distance[c.ID];
                    list.Add(c);
                }
            }
            return list;
            #endregion
        }
Пример #21
0
        /// <summary>
        /// 获取零售店预收款及应收款额
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Retailer"></param>
        /// <param name="PreReceivedAmount">预收款额</param>
        /// <param name="AR">应收款额</param>
        /// <param name="PreReceivedBalance">合计余额(预收款额 - 应收款额)</param>
        /// <returns></returns>
        public static int GetRetailerCurrentAccount(UserInfo User, int TDP, int Retailer,
            out decimal PreReceivedAmount, out decimal AR, out decimal PreReceivedBalance)
        {
            PreReceivedAmount = 0;
            AR = 0;
            PreReceivedBalance = 0;

            LogWriter.WriteLog("PBMIFService.GetRetailerCurrentAccount:UserName="******",TDP=" + TDP.ToString() + ",Retailer=" + Retailer.ToString());

            if (User.OwnerType == 3) TDP = User.ClientID;
            AC_CurrentAccount ac = AC_CurrentAccountBLL.GetByTradeClient(TDP, Retailer);

            if (ac == null)
                return 0;
            else
            {
                PreReceivedAmount = ac.PreReceivedAmount;
                AR = ac.AR;
                PreReceivedBalance = PreReceivedAmount - AR;
                return 0;
            }
        }
Пример #22
0
        /// <summary>
        /// 获取已派发给当前员工的待送货的销售单
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Vehicle">车辆,0时不限定车辆</param>
        /// <param name="BeginDate">预计送货日期-开始</param>
        /// <param name="EndDate">预计送货日期-截止</param>
        /// <returns></returns>
        public static List<Delivery> GetNeedDeliveryList(UserInfo User, int TDP, int Vehicle, DateTime BeginDate, DateTime EndDate)
        {
            LogWriter.WriteLog("PBMIFService.GetNeedDeliveryList:UserName="******",Vehicle=" + Vehicle.ToString() +
            ",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd"));

            if (User.OwnerType == 3) TDP = User.ClientID;

            string condition = " PrepareMode = 3 AND Classify IN (1,4) AND State IN (2,3) AND DeliveryMan=" + User.StaffID.ToString()
                + " AND PreArrivalDate BETWEEN '" + BeginDate.ToString("yyyy-MM-dd") + "' AND '" + EndDate.ToString("yyyy-MM-dd") + " 23:59:59' ";

            if (TDP != 0) condition += " AND Supplier = " + TDP.ToString();

            if (Vehicle != 0) condition += " AND DeliveryVehicle = " + Vehicle.ToString();

            if (User.OwnerType == 3) condition += " AND Supplier=" + User.ClientID.ToString();

            IList<PBM_Delivery> deliverys = PBM_DeliveryBLL.GetModelList(condition);
            List<Delivery> list = new List<Delivery>(deliverys.Count);
            foreach (PBM_Delivery item in deliverys.OrderByDescending(p => p.InsertTime))
            {
                list.Add(new Delivery(item));
            }
            return list;
        }
Пример #23
0
        /// <summary>
        /// 获取所有管辖的门店列表
        /// </summary>
        /// <returns></returns>
        public static List<ClientInfo> GetRetailerList(UserInfo User, int TDP, string FindKey, int PageSize, int PageIndex, out int Counts)
        {
            Counts = 0;
            LogWriter.WriteLog("PBMIFService.GetRetailerList:UserName="******",TDP=" + TDP.ToString()
                + ",FindKey=" + FindKey + ",PageSize=" + PageSize.ToString() + ",PageIndex=" + PageIndex.ToString());
            if (User.OwnerType == 3) TDP = User.ClientID;

            #region 设定查询条件
            IList<CM_Client> clients = CM_ClientBLL.GetRetailerListBySalesMan(TDP, User.StaffID);
            FindKey = FindKey.Trim();
            if (FindKey != "")
                clients = clients.Where(p => p.FullName.Contains(FindKey) || p.ShortName.Contains(FindKey) || p.Address.Contains(FindKey)).ToList();
            #endregion

            Counts = clients.Count;

            #region 分页返回
            if (PageSize == 0) PageSize = 99999;
            List<ClientInfo> list = new List<ClientInfo>();
            int fromindex = PageSize * PageIndex;
            int endindex = PageSize * (PageIndex + 1);

            if (fromindex < clients.Count)
            {
                for (int i = fromindex; (i < endindex && i < clients.Count); i++)
                {
                    ClientInfo c = new ClientInfo(clients[i], TDP);
                    list.Add(c);
                }
            }
            return list;
            #endregion
        }
Пример #24
0
        /// <summary>
        /// 按送货人查询销售收款汇总
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="BeginDate"></param>
        /// <param name="EndDate"></param>
        /// <returns></returns>
        public static List<DicDataItem> GetDeliveryPayInfoSummary(UserInfo User, int TDP, DateTime BeginDate, DateTime EndDate)
        {
            LogWriter.WriteLog("PBMIFService.GetDeliveryPayInfoSummary:UserName="******",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd"));

            if (User.OwnerType == 3) TDP = User.ClientID;

            DataTable dt = PBM_DeliveryBLL.GetPayInfoSummary(TDP, User.StaffID, 0, BeginDate, EndDate);

            List<DicDataItem> list = new List<DicDataItem>(dt.Rows.Count);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];

                list.Add(new DicDataItem(0, dr["PayModeName"].ToString(), ((decimal)dr["Amount"]).ToString("0.##"), ""));
            }
            return list;
        }
Пример #25
0
        /// <summary>
        /// 查询门店预收款可用余额
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Retailer"></param>
        /// <returns></returns>
        public static decimal GetRetailerPreReceivedBalance(UserInfo User, int TDP, int Retailer)
        {
            LogWriter.WriteLog("PBMIFService.GetRetailerPreReceivedBalance:UserName="******",TDP=" + TDP.ToString() + ",Retailer=" + Retailer.ToString());

            if (User.OwnerType == 3) TDP = User.ClientID;
            IList<AC_CurrentAccount> acc = AC_CurrentAccountBLL.GetModelList(string.Format("OwnerClient={0} AND TradeClient={1}", TDP, Retailer));
            if (acc == null || acc.Count == 0)
                return 0;
            else
                return acc[0].PreReceivedBalance;
        }
Пример #26
0
        /// <summary>
        /// 汇总预售待送货列表
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Vehicle"></param>
        /// <param name="BeginDate"></param>
        /// <param name="EndDate"></param>
        /// <returns></returns>
        public static List<DicDataItem> GetNeedDeliverySummary(UserInfo User, int TDP, int Vehicle, DateTime BeginDate, DateTime EndDate)
        {
            LogWriter.WriteLog("PBMIFService.GetNeedDeliverySummary:UserName="******",Vehicle=" + Vehicle.ToString() +
                ",TDP=" + TDP.ToString() + ",BeginDate=" + BeginDate.ToString("yyyy-MM-dd") + ",EndDate=" + EndDate.ToString("yyyy-MM-dd"));

            if (User.OwnerType == 3) TDP = User.ClientID;

            int warehouse = 0;
            if (Vehicle > 0)
            {
                warehouse = new CM_VehicleBLL(Vehicle).Model.RelateWareHouse;
            }
            DataTable dt = PBM_DeliveryBLL.GetNeedDeliverySummary(BeginDate, EndDate, TDP, warehouse, 0, User.StaffID);

            List<DicDataItem> list = new List<DicDataItem>(dt.Rows.Count);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow dr = dt.Rows[i];

                string remark = "";
                if ((int)dr["Quantity_T"] != 0)
                {
                    remark += dr["Quantity_T"].ToString() + dr["Packagint_T"].ToString();
                }

                if ((int)dr["Quantity_P"] != 0)
                {
                    remark += dr["Quantity_P"].ToString() + dr["Packagint_P"].ToString();
                }

                remark += " 重量:" + dr["Weight"].ToString() + "Kg";
                list.Add(new DicDataItem((int)dr["Product"], dr["ProductName"].ToString(), dr["Quantity"].ToString(), remark));
            }
            return list;
        }
Пример #27
0
        /// <summary>
        /// 结应收款_余额结
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <param name="Retailer"></param>
        /// <param name="Amount"></param>
        /// <param name="Remark"></param>
        /// <param name="ARIDs"></param>
        /// <param name="ErrorInfo"></param>
        /// <returns></returns>
        public static int BalanceRetailerAR_UsageBalance(UserInfo User, int TDP, int Retailer, decimal Amount,
            string Remark, string ARIDs, out string ErrorInfo)
        {
            ErrorInfo = "";
            LogWriter.WriteLog("PBMIFService.BalanceRetailerAR_UsageBalance:UserName="******",TDP=" + TDP.ToString() +
               ",Retailer=" + Retailer.ToString() + ",Amount=" + Amount.ToString() + ",Remark=" + Remark + ",ARIDs=" + ARIDs);

            if (User.OwnerType == 3) TDP = User.ClientID;

            int ret = AC_BalanceUsageListBLL.BalanceAR(TDP, Retailer, User.StaffID, Math.Round(Amount, 2), Remark, ARIDs);

            if (ret < 0)
            {
                switch (ret)
                {
                    case -10:
                        ErrorInfo = "预收款金额不够结算";
                        break;
                    case -11:
                        ErrorInfo = "应收款金额与收算金额不匹配";
                        break;
                    case -12:
                        ErrorInfo = "统计应收款总额时出错";
                        break;
                    default:
                        ErrorInfo = "收款出错,Ret=" + ret.ToString();
                        break;
                }
            }

            return ret;
        }
Пример #28
0
        /// <summary>
        /// 查询指定ID的发货单
        /// </summary>
        /// <param name="User"></param>
        /// <param name="DeliveryID">发货单ID</param>
        /// <returns></returns>
        public static Order GetOrderByOrderID(UserInfo User, int OrderID)
        {
            LogWriter.WriteLog("PBMIFService.GetOrderByOrderID:UserName="******",OrderID=" + OrderID.ToString());

            return new Order(OrderID);
        }
Пример #29
0
        /// <summary>
        /// 获取经销商详细资料
        /// </summary>
        /// <param name="User"></param>
        /// <param name="TDP"></param>
        /// <returns></returns>
        public static ClientInfo GetTDP_Info(UserInfo User, int TDP)
        {
            LogWriter.WriteLog("PBMIFService.GetTDP_Info:UserName="******",TDP=" + TDP.ToString());
            if (User.OwnerType == 3) TDP = User.ClientID;

            return new ClientInfo(TDP, User.OwnerType == 2 ? User.ClientID : 0);
        }
Пример #30
0
        /// <summary>
        /// 上传门店照片
        /// </summary>
        /// <param name="AuthKey"></param>
        /// <param name="ClientID">会员店ID,上传当前门店时可置0</param>
        /// <param name="PicName">图片名称(可选)</param>
        /// <param name="PicData">图片数据</param>
        /// <returns>大于0:成功 -1:会员店ID无效 -4:照片格式不正确</returns>
        public static int UploadRetailerPicture(UserInfo User, int ClientID, string PicName, string Description, string PicData, out Guid PicGUID)
        {
            PicGUID = Guid.Empty;
            LogWriter.WriteLog("PBMIFService.UploadRetailerPicture:UserName="******",ClientID=" + ClientID.ToString()
                + ",PicName=" + PicName + ",Description=" + Description + ",PicDataLength=" + PicData.Length);

            try
            {
                if (ClientID == 0 && User.ClientID > 0) ClientID = User.ClientID;

                CM_Client _c = new CM_ClientBLL(ClientID).Model;
                if (_c == null) return -1;

                if (string.IsNullOrEmpty(PicData)) return -4;
                byte[] buffer = Convert.FromBase64String(PicData);
                if (buffer.Length == 0 && buffer.Length > 1024 * 1024 * 10) return -4;

                ATMT_AttachmentBLL atm = new ATMT_AttachmentBLL();
                atm.Model.RelateType = 30;          //终端门店
                atm.Model.RelateID = ClientID;
                atm.Model.Name = string.IsNullOrEmpty(PicName) ? "门店照片" : PicName;
                atm.Model.ExtName = "jpg";          //默认为JPG图片
                atm.Model.FileSize = PicData.Length / 1024;
                atm.Model.Description = Description;
                atm.Model.UploadUser = User.UserName;
                atm.Model.IsDelete = "N";

                return atm.Add(buffer, out PicGUID);
            }
            catch (System.Exception err)
            {
                LogWriter.WriteLog("PBMIFService.UploadRetailerPicture Exception Error!", err);
                return -100;
            }
        }