Beispiel #1
0
        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="salesOrder"></param>
        /// <returns></returns>
        public bool SaveSalesOrder(OM_SalesOrderDataObject salesOrder)
        {
            OM_Order order = salesOrder.ToDTO();
            var      user  = DbRepository.GetModel <OM_User>(s => s.Account.ToUpper() == salesOrder.CardCode.ToUpper() && s.IsDel == false);

            if (user == null)
            {
                throw new GenericException("客户代码不存在,保持草稿失败");
            }

            order.DocStatus  = ((int)OM_DocStatusEnum.未提交).ToString();
            order.TotalPrice = salesOrder.TotalPrice;
            order.DocEntry   = GetLastDocEntry();
            order.NoteNotice = GetShortRemarks(order.Remarks, 5);
            var salesOrderHead = DbRepository.Add(order);

            if (salesOrderHead <= 0)
            {
                throw new GenericException("保存草稿失败");
            }


            var orderResult = DbRepository.GetModel <OM_Order>(s => s.Guid == order.Guid);

            List <OM_OrderItem> items = new List <OM_OrderItem>();

            foreach (var item in salesOrder.SalesOrderLine)
            {
                OM_OrderItem oi = new OM_OrderItem()
                {
                    Guid          = Guid.NewGuid().ToString().ToUpper(),
                    Currency      = item.Currency,
                    ItemCode      = item.ItemCode,
                    ItemName      = item.ItemName,
                    Price         = item.Price,
                    Quantity      = item.Quantity,
                    TotalPrice    = (item.CustomerPrice ?? item.Price) * item.Quantity,
                    Remarks       = item.Remarks,
                    Order_Guid    = orderResult.Guid,
                    DocEntry      = orderResult.DocEntry,
                    InnerPrice    = item.InnerPrice,
                    CustomerPrice = item.CustomerPrice,
                    ItemStandard  = item.ItemStandard,
                    ItemUnit      = item.ItemUnit
                };
                items.Add(oi);
            }

            var salesOrderLine = DbRepository.AddRange(items);

            if (salesOrderLine <= 0)
            {
                throw new GenericException("保存草稿失败");
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// 获取当前单据对象的集合
        /// </summary>
        /// <param name="docEntry"></param>
        /// <returns></returns>
        public OM_SalesOrderDataObject GetSalesOrderAndDetail(string salesOrder_Guid)
        {
            OM_SalesOrderDataObject salesOrderDataObject = this.GetSalesOrder(s => s.Guid == salesOrder_Guid).ToDTO();

            salesOrderDataObject.SalesOrderLine.AddRange(this.GetSalesOrderItemList(s => s.Order_Guid == salesOrder_Guid));

            foreach (var item in salesOrderDataObject.SalesOrderLine)
            {
                salesOrderDataObject.TotalPrice += item.TotalPrice;
            }
            return(salesOrderDataObject);
        }
Beispiel #3
0
        public OM_B1InfomationDTO UpdateSalesOrderStatusByToSAP(string orderGuid)
        {
            OM_B1InfomationDTO b1Infomation = null;

            try
            {
                var salesOrder = this.GetSalesOrder(s => s.Guid == orderGuid);
                if (salesOrder == null)
                {
                    throw new GenericException("当前订单不存在,请检查数据");
                }

                OM_SalesOrderDataObject salesOrderDataObject = salesOrder.ToDTO();
                salesOrderDataObject.SalesOrderLine = this.GetSalesOrderItemList(s => s.Order_Guid == orderGuid).ToList();
                if (salesOrderDataObject.SalesOrderLine == null)
                {
                    throw new GenericException("当前订单行不存在,请检查数据");
                }

                //对接SAP实现
                b1Infomation = SaveForSAP(salesOrderDataObject);
                if (b1Infomation.JFZStatus == OMDocStatus.Commit || b1Infomation.GSStatus == OMDocStatus.Commit)
                {
                    if (b1Infomation.GSCode == 200 && b1Infomation.JFZCode == 200)
                    {
                        salesOrder.DocStatus = ((int)OM_DocStatusEnum.已对接).ToString();
                        if (DbRepository.Update(salesOrder) > 0)
                        {
                            LogHelper.Info("Start Update SalesOrder scuess");
                            return(b1Infomation);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                b1Infomation                  = new OM_B1InfomationDTO();
                b1Infomation.IsException      = true;
                b1Infomation.ExceptionMessage = ex.ToString();
                LogHelper.Error(ex.ToString());
                //throw new GenericException(ex.ToString());
            }

            return(b1Infomation);
        }
Beispiel #4
0
        public void UpdateSalesOrder(string cipher, OM_SalesOrderDataObject obj)
        {
            orderManger.UpdateSalesOrder(obj);

            var user  = userManager.GetUser(s => s.Guid == cipher);
            var order = orderManger.GetSalesOrder(s => s.Guid == obj.Guid);
            var log   = new OM_Log
            {
                CreateDatetime = DateTime.Now,
                Doc_View       = "Order/UpdateStatus",
                Guid           = Guid.NewGuid().ToString(),
                Operation      = "修改草稿",
                User_Guid      = user.Guid,
                Message        = string.Format("用户[{0}] : '{1}' 修改草稿【{2}】.", user.Name, DateTime.Now, order.DocEntry)
            };

            logManager.WriteLog(log);
        }
        public OM_SalesOrderDataObject ToDTO()
        {
            OM_SalesOrderDataObject salesOrderDataObejct = new OM_SalesOrderDataObject()
            {
                DocEntry   = this.DocEntry,
                Guid       = this.Guid,
                DocDate    = this.DocDate,
                DocDueDate = this.DocDueDate,
                DocStatus  = this.DocStatus,
                CardCode   = this.CardCode,
                CardName   = this.CardName,
                NumCard    = this.NumCard,
                TPLCompany = this.TPLCompany,
                TPLContact = this.TPLContact,
                TPLOrder   = this.TPLOrder,
                TPLPhone   = this.TPLPhone,
                NoteNotice = this.NoteNotice,
                Remarks    = this.Remarks,
                User_Guid  = this.User_Guid
            };

            return(salesOrderDataObejct);
        }
Beispiel #6
0
        public string SaveSalesOrder(string cipher, OM_SalesOrderDataObject obj)
        {
            var result = orderManger.SaveSalesOrder(obj);

            if (!result)
            {
                throw new GenericException("保存草稿失败。");
            }

            var user  = userManager.GetUser(s => s.Guid == cipher);
            var order = orderManger.GetSalesOrder(s => s.Guid == obj.Guid);
            var log   = new OM_Log
            {
                CreateDatetime = DateTime.Now,
                Doc_View       = "Order/UpdateStatus",
                Guid           = Guid.NewGuid().ToString(),
                Operation      = "保存草稿",
                User_Guid      = user.Guid,
                Message        = string.Format("用户[{0}] : '{1}' 保存草稿【{2}】.", user.Name, DateTime.Now, order.DocEntry)
            };

            logManager.WriteLog(log);
            return(order.DocEntry.ToString());
        }
Beispiel #7
0
 public bool SaveSalesOrderDraft(OM_SalesOrderDataObject salesOrder, OM_B1InfomationDTO b1Informaion)
 {
     if (!this.Connect())
     {
         return(false);
     }
     SAPbobsCOM.Recordset oRs = CurrentCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
     LogHelper.Info(string.Format("GSCompany via script is: select * from ODRF where ObjType='17' and Address2='{0}'", salesOrder.Guid));
     oRs.DoQuery(string.Format("select * from ODRF where ObjType='17' and Address2='{0}'", salesOrder.Guid));
     if (oRs.RecordCount > 0)
     {
         b1Informaion.GSCode     = 200;
         b1Informaion.GSStatus   = OMDocStatus.Commit;
         b1Informaion.JFZMessage = string.Format("This Order-{0}-{1} has commit to SAP", salesOrder.Guid, oRs.Fields.Item("DocEntry").Value);
         LogHelper.Info(string.Format("JFZCompnay Document has exist, and the DocEntry={0},DocNum={1}", oRs.Fields.Item("DocEntry").Value, oRs.Fields.Item("DocNum").Value));
         return(true);
     }
     SAPbobsCOM.Documents oSaleOrder = CurrentCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts);
     try
     {
         oSaleOrder.Address2 = salesOrder.Guid;
         oSaleOrder.CardCode = salesOrder.CardCode;
         oSaleOrder.CardName = salesOrder.CardName;
         oSaleOrder.Comments = "营销远程平台对接生成";
         if (salesOrder.DocDate == null)
         {
             oSaleOrder.DocDate    = DateTime.Now;
             oSaleOrder.DocDueDate = DateTime.Now;
         }
         else if (salesOrder.DocDueDate == null)
         {
             oSaleOrder.DocDueDate = DateTime.Now;
         }
         else
         {
             oSaleOrder.DocDate    = (DateTime)salesOrder.DocDate;
             oSaleOrder.DocDueDate = (DateTime)salesOrder.DocDueDate;
         }
         oSaleOrder.DocObjectCode = SAPbobsCOM.BoObjectTypes.oOrders;
         foreach (var item in salesOrder.SalesOrderLine)
         {
             oSaleOrder.Lines.ItemCode        = item.ItemCode;
             oSaleOrder.Lines.ItemDescription = item.ItemName;
             oSaleOrder.Lines.Quantity        = Convert.ToDouble(item.Quantity);
             oSaleOrder.Lines.Price           = Convert.ToDouble(item.InnerPrice);
             oSaleOrder.Lines.Add();
         }
         if (oSaleOrder.Add() == 0)
         {
             b1Informaion.GSCode    = 200;
             b1Informaion.GSStatus  = OMDocStatus.Commit;
             b1Informaion.GSMessage = (string.Format("高山药业:{0},订单号:{1}对接成功,update ", salesOrder.CardCode, salesOrder.DocEntry));
             LogHelper.Info(string.Format("高山药业:{0},订单号:{1}对接成功,update ", salesOrder.CardCode, salesOrder.DocEntry));
             return(true);
         }
         b1Informaion.GSCode    = -1;
         b1Informaion.GSStatus  = OMDocStatus.Unchange;
         b1Informaion.GSMessage = string.Format("GSSalseOrderAdd----Error Code:{0}----Error Descride:{1}", _Company.GetLastErrorCode().ToString(), _Company.GetLastErrorDescription());
         LogHelper.Error(string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", _Company.GetLastErrorCode().ToString(), _Company.GetLastErrorDescription()));
         return(false);
     }
     catch (Exception ex)
     {
         b1Informaion.GSCode    = -1;
         b1Informaion.GSStatus  = OMDocStatus.Unchange;
         b1Informaion.GSMessage = string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", _Company.GetLastErrorCode().ToString(), _Company.GetLastErrorDescription());
         LogHelper.Error(string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", _Company.GetLastErrorCode().ToString(), _Company.GetLastErrorDescription()));
         return(false);
     }
     finally
     {
         DisConnect();
     }
 }
Beispiel #8
0
 public bool SaveSalesOrderDraftToJFZ(OM_SalesOrderDataObject salesOrder, OM_B1InfomationDTO b1Informaion)
 {
     if (!this.JFZConnect())
     {
         return(false);
     }
     SAPbobsCOM.Recordset oRs = jFZCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
     oRs.DoQuery(string.Format("select * from ODRF where ObjType='17' and Address2='{0}'", salesOrder.Guid));
     if (oRs.RecordCount > 0)
     {
         b1Informaion.JFZCode    = 200;
         b1Informaion.JFZStatus  = OMDocStatus.Commit;
         b1Informaion.JFZMessage = string.Format("This order hac commit to SAP");
         LogHelper.Info(string.Format("JFZCompnay Document has exist, and the DocEntry={0},DocNum={1}", oRs.Fields.Item("DocEntry").Value, oRs.Fields.Item("DocNum").Value));
         return(true);
     }
     oRs.DoQuery(string.Format("select top 1 CardCode from OCRD where CardName='{0}'", salesOrder.CardName.Trim()));
     if (oRs.RecordCount > 0)
     {
         SAPbobsCOM.Documents oSaleOrder = JFZCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oDrafts);
         try
         {
             oSaleOrder.Address  = salesOrder.Guid;
             oSaleOrder.CardCode = oRs.Fields.Item("CardCode").Value;
             oSaleOrder.CardName = salesOrder.CardName;
             oSaleOrder.Comments = "营销远程平台对接生成";
             if (salesOrder.DocDate == null)
             {
                 oSaleOrder.DocDate = DateTime.Now;
             }
             else if (salesOrder.DocDueDate == null)
             {
                 oSaleOrder.DocDueDate = DateTime.Now;
             }
             else
             {
                 oSaleOrder.DocDate    = (DateTime)salesOrder.DocDate;
                 oSaleOrder.DocDueDate = (DateTime)salesOrder.DocDueDate;
             }
             oSaleOrder.DocObjectCode = SAPbobsCOM.BoObjectTypes.oOrders;
             foreach (var item in salesOrder.SalesOrderLine)
             {
                 oSaleOrder.Lines.ItemCode        = item.ItemCode;
                 oSaleOrder.Lines.ItemDescription = item.ItemName;
                 oSaleOrder.Lines.Quantity        = Convert.ToDouble(item.Quantity);
                 oSaleOrder.Lines.Price           = Convert.ToDouble(item.InnerPrice);
                 oSaleOrder.Lines.Add();
                 //LogHelper.Info(string.Format("the OsaleOrderLine Detail ItemCode={0},ItemName={1},Quantity={2},Price={3}", item.ItemCode.ToString(), item.ItemName, item.Quantity, item.Price));
             }
             //LogHelper.Info(string.Format("the OsaleOrder Detail CardeCode={0},CardName={1},DocDate={2},DocDueDate={3}", oSaleOrder.CardCode.ToString(), oSaleOrder.CardName, oSaleOrder.DocDate.ToString("yyyyMMdd"), oSaleOrder.DocDueDate.ToString("yyyyMMdd")));
             if (oSaleOrder.Add() == 0)
             {
                 b1Informaion.JFZCode    = 200;
                 b1Informaion.JFZStatus  = OMDocStatus.Commit;
                 b1Informaion.JFZMessage = string.Format("金方子:{0},订单号:{1}对接成功", salesOrder.CardCode, salesOrder.DocEntry);
                 LogHelper.Info(string.Format("金方子:{0},订单号:{1}对接成功", salesOrder.CardCode, salesOrder.DocEntry));
                 return(true);
             }
             b1Informaion.JFZCode    = -1;
             b1Informaion.JFZStatus  = OMDocStatus.Unchange;
             b1Informaion.JFZMessage = string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", JFZCompany.GetLastErrorCode().ToString(), JFZCompany.GetLastErrorDescription());
             LogHelper.Error(string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", JFZCompany.GetLastErrorCode().ToString(), JFZCompany.GetLastErrorDescription()));
             return(false);
         }
         catch (Exception ex)
         {
             b1Informaion.JFZCode    = -1;
             b1Informaion.JFZStatus  = OMDocStatus.Unchange;
             b1Informaion.JFZMessage = string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", JFZCompany.GetLastErrorCode().ToString(), JFZCompany.GetLastErrorDescription());
             LogHelper.Error(string.Format("SalseOrderAdd----Error Code:{0}----Error Descride:{1}", JFZCompany.GetLastErrorCode().ToString(), JFZCompany.GetLastErrorDescription()));
             return(false);
         }
         finally
         {
             JFZDisConnect();
         }
     }
     else
     {
         LogHelper.Error("金方子客户代码为空");
         throw new GenericException("金方子客户代码为空");
     }
 }
Beispiel #9
0
        private OM_B1InfomationDTO SaveForSAP(OM_SalesOrderDataObject salesOrder)
        {
            bool gsResult  = false;
            bool jfzResult = false;
            OM_B1InfomationDTO      b1Informaion = new OM_B1InfomationDTO();
            OM_SalesOrderDataObject GSSalesOrder = new OM_SalesOrderDataObject();

            GSSalesOrder.Guid       = salesOrder.Guid;
            GSSalesOrder.DocEntry   = salesOrder.DocEntry;
            GSSalesOrder.CardCode   = salesOrder.CardCode;
            GSSalesOrder.CardName   = salesOrder.CardName;
            GSSalesOrder.DocDate    = salesOrder.DocDate;
            GSSalesOrder.DocDueDate = salesOrder.DocDueDate;
            OM_SalesOrderDataObject JFZSalesOrder = new OM_SalesOrderDataObject();

            JFZSalesOrder.Guid       = salesOrder.Guid;
            JFZSalesOrder.DocEntry   = salesOrder.DocEntry;
            JFZSalesOrder.CardCode   = salesOrder.CardCode;
            JFZSalesOrder.CardName   = salesOrder.CardName;
            JFZSalesOrder.DocDate    = salesOrder.DocDate;
            JFZSalesOrder.DocDueDate = salesOrder.DocDueDate;
            foreach (var item in salesOrder.SalesOrderLine)
            {
                var pruduct = GetProduct(c => c.ItemCode == item.ItemCode);
                if (pruduct.GroupType == "0")
                {
                    GSSalesOrder.SalesOrderLine.Add(item);
                }
                else
                {
                    JFZSalesOrder.SalesOrderLine.Add(item);
                }
            }
            if (GSSalesOrder.SalesOrderLine.Count <= 0)
            {
                b1Informaion.GSCode    = 200;
                b1Informaion.GSStatus  = OMDocStatus.Unchange;
                b1Informaion.GSMessage = "高山药业行数据为0,不允许添加";
                LogHelper.Error("GSCompany's salesline is zero");
                gsResult = true;
            }
            else
            {
                gsResult = B1Company.SBOCompany.SaveSalesOrderDraft(GSSalesOrder, b1Informaion);
            }
            if (JFZSalesOrder.SalesOrderLine.Count <= 0)
            {
                b1Informaion.JFZCode    = 200;
                b1Informaion.JFZStatus  = OMDocStatus.Unchange;
                b1Informaion.JFZMessage = "金方子行数据为0,不允许添加";
                LogHelper.Error("JFZCompany's salesline is zero");
                jfzResult = true;
            }
            else
            {
                LogHelper.Info("JFZCompany' has Start");
                LogHelper.Info(string.Format("JFZSalesOrder.SalesOrderLine.Count is :" + JFZSalesOrder.SalesOrderLine.Count.ToString()));
                jfzResult = B1Company.SBOCompany.SaveSalesOrderDraftToJFZ(JFZSalesOrder, b1Informaion);
            }
            if (gsResult & jfzResult)
            {
                B1Company.SBOCompany.Dispose();
                return(b1Informaion);
            }
            return(b1Informaion);
        }
Beispiel #10
0
        /// <summary>
        /// 更新
        /// </summary>
        /// <param name="salesOrder"></param>
        /// <returns></returns>
        public bool UpdateSalesOrder(OM_SalesOrderDataObject salesOrder)
        {
            OM_Order temp = salesOrder.ToDTO();

            var order = DbRepository.GetModel <OM_Order>(s => s.Guid == salesOrder.Guid);

            if (order == null)
            {
                throw new GenericException("订单号不存在,修改草稿失败");
            }

            var user = DbRepository.GetModel <OM_User>(s => s.Account.ToUpper() == salesOrder.CardCode.ToUpper() && s.IsDel == false);

            if (user == null)
            {
                throw new GenericException("客户代码不存在,修改草稿失败");
            }

            order.CardCode   = salesOrder.CardCode;
            order.CardName   = user.Name;
            order.Remarks    = salesOrder.Remarks;
            order.DocDate    = salesOrder.DocDate;
            order.DocDueDate = salesOrder.DocDueDate;
            order.NoteNotice = GetShortRemarks(order.Remarks, 5);
            var salesOrderHead = DbRepository.Update(order);

            if (salesOrderHead <= 0)
            {
                throw new GenericException("修改草稿失败");
            }

            List <OM_OrderItem> items      = DbRepository.GetList <OM_OrderItem>(s => s.Order_Guid == salesOrder.Guid);
            List <OM_OrderItem> removeItem = new List <OM_OrderItem>();

            foreach (var item in salesOrder.SalesOrderLine) //temp
            {
                foreach (var i in items)                    //数据库
                {
                    if (string.IsNullOrWhiteSpace(item.Guid))
                    {
                        item.Guid       = Guid.NewGuid().ToString();
                        item.DocEntry   = salesOrder.DocEntry;
                        item.Order_Guid = salesOrder.Guid;
                        DbRepository.Add(item);
                    }
                    else
                    {  //不为空并且在数据库中找不到对应
                        var exist = salesOrder.SalesOrderLine.Where(s => s.Guid == i.Guid);
                        if ((exist == null || exist.Count() == 0) && !removeItem.Contains(i))
                        {
                            removeItem.Add(i);
                        }
                    }

                    if (i.Guid == item.Guid)
                    {
                        i.ItemCode      = item.ItemCode;
                        i.ItemName      = item.ItemName;
                        i.Remarks       = item.Remarks;
                        i.InnerPrice    = item.InnerPrice;
                        i.CustomerPrice = item.CustomerPrice;
                        i.Price         = item.Price;
                        i.Quantity      = item.Quantity;
                        i.TotalPrice    = item.Price * item.Quantity;
                        i.ItemUnit      = item.ItemUnit;
                        i.ItemStandard  = item.ItemStandard;
                    }
                }
            }

            var salesOrderLine = DbRepository.UpdateRange(items);


            foreach (var delItem in removeItem)
            {
                DbRepository.RealDelete <OM_OrderItem>(s => s.Guid == delItem.Guid);
            }



            if (salesOrderLine <= 0)
            {
                throw new GenericException("修改草稿失败");
            }

            return(true);
        }