/// <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); }
/// <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); }
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); }
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); }
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()); }
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(); } }
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("金方子客户代码为空"); } }
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); }
/// <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); }