// POST: api/Index public string PostInsertOrder(SapSalesOrder sapSalesOrder) { string _OrderNumber = ""; _OrderNumber = this._sapConnectorInterface.CreateOrder(sapSalesOrder); return(_OrderNumber); }
private void BtnOrder_Click(object sender, EventArgs e) { SapSalesOrder _SapSalesOrder = setSalesOrder(); string json = JsonConvert.SerializeObject(_SapSalesOrder); string _Action = "Index"; string _Uri = _ConnectionString + _Action; ApiResultEntity _ApiResult = CallWebAPI.Post(json, _Uri); }
private SapSalesOrder setSalesOrder() { SapSalesOrder _SapSalesOrder = new SapSalesOrder(); List <SalesItem> _ItemList = new List <SalesItem>(); List <SalesPartner> _PartnerList = new List <SalesPartner>(); List <SalesSchedule> _ScheduleList = new List <SalesSchedule>(); SalesHeader _Header = new SalesHeader(); _Header.DOC_TYPE = "ZOR3"; _Header.SALES_ORG = "1000"; _Header.DISTR_CHAN = "10"; _Header.DIVISION = "13"; _Header.PURCH_NO_C = "C#"; _SapSalesOrder.Header = _Header; SalesItem _Item = new SalesItem(); _Item.ITM_NUMBER = "000010"; _Item.MATERIAL = "12-04BFFB-SL7001"; _Item.TARGET_QTY = "555"; _ItemList.Add(_Item); SalesItem _Item2 = new SalesItem(); _Item2.ITM_NUMBER = "000020"; _Item2.MATERIAL = "ADC-07PMMS-LS7001"; _Item2.TARGET_QTY = "100"; _ItemList.Add(_Item2); _SapSalesOrder.ItemList = _ItemList; SalesPartner _Partner = new SalesPartner(); _Partner.PARTN_ROLE = "AG"; _Partner.PARTN_NUMB = "0010000242"; _PartnerList.Add(_Partner); _SapSalesOrder.PartnerList = _PartnerList; SalesSchedule _Schedule = new SalesSchedule(); _Schedule.REQ_QTY = "555"; _Schedule.ITM_NUMBER = "000010"; _Schedule.SCHED_LINE = "0001"; _Schedule.REQ_DATE = "20190920"; _ScheduleList.Add(_Schedule); SalesSchedule _Schedule2 = new SalesSchedule(); _Schedule2.REQ_QTY = "50"; _Schedule2.ITM_NUMBER = "000020"; _Schedule2.SCHED_LINE = "0001"; _Schedule2.REQ_DATE = "20190923"; _ScheduleList.Add(_Schedule2); SalesSchedule _Schedule3 = new SalesSchedule(); _Schedule3.REQ_QTY = "50"; _Schedule3.ITM_NUMBER = "000020"; _Schedule3.SCHED_LINE = "0002"; _Schedule3.REQ_DATE = "20190928"; _ScheduleList.Add(_Schedule3); _SapSalesOrder.ScheduleList = _ScheduleList; return(_SapSalesOrder); }
/// <summary> /// insert 850 table /// Edi_SalesHeader/Edi_SalesItem/Edi_SalesPartner/Edi_SalesSchedule /// Is_Proc:V success F fail /// CreateBy:Edi/Web /// </summary> /// <param name="sapSalesOrder"></param> /// <param name="orderNumber"></param> public void InsertSapSalesOrder(SapSalesOrder sapSalesOrder, string orderNumber) { Edi_SalesHeader _Edi_SalesHeader = new Edi_SalesHeader(); _Edi_SalesHeader.DOC_TYPE = sapSalesOrder.Header.DOC_TYPE; _Edi_SalesHeader.SALES_ORG = sapSalesOrder.Header.SALES_ORG; _Edi_SalesHeader.DISTR_CHAN = sapSalesOrder.Header.DISTR_CHAN; _Edi_SalesHeader.DIVISION = sapSalesOrder.Header.DIVISION; _Edi_SalesHeader.PURCH_NO_C = sapSalesOrder.Header.PURCH_NO_C; _Edi_SalesHeader.PURCH_DATE = sapSalesOrder.Header.PURCH_DATE; _Edi_SalesHeader.Is_Proc = orderNumber != "" ? "V" : "F"; _Edi_SalesHeader.DateTime = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss:"); _Edi_SalesHeader.OrderNumber = orderNumber; _Edi_SalesHeader.CreateBy = sapSalesOrder.CreateBy; this._edi_SalesHeaderService.Create(_Edi_SalesHeader); foreach (SalesItem si in sapSalesOrder.ItemList) { Edi_SalesItem _Edi_SalesItem = new Edi_SalesItem(); _Edi_SalesItem.OrderNumber = orderNumber; _Edi_SalesItem.ITM_NUMBER = si.ITM_NUMBER; _Edi_SalesItem.MATERIAL = si.MATERIAL; _Edi_SalesItem.CUST_MAT35 = si.CUST_MAT35; _Edi_SalesItem.CustomerItemNumber = si.CustomerItemNumber; _Edi_SalesItem.CustomerUnit = si.CustomerUnit; _Edi_SalesItem.CustomerPrice = si.CustomerPrice; _Edi_SalesItem.DateTime = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"); _Edi_SalesItem.CustomerUnitOfPrice = si.CustomerUnitOfPrice; this._edi_SalesItemService.Create(_Edi_SalesItem); } foreach (SalesSchedule ss in sapSalesOrder.ScheduleList) { Edi_SalesSchedule _Edi_SalesSchedule = new Edi_SalesSchedule(); _Edi_SalesSchedule.OrderNumber = orderNumber; _Edi_SalesSchedule.ITM_NUMBER = ss.ITM_NUMBER; _Edi_SalesSchedule.REQ_DATE = ss.REQ_DATE; _Edi_SalesSchedule.SCHED_LINE = ss.SCHED_LINE; _Edi_SalesSchedule.DateTime = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"); _Edi_SalesSchedule.REQ_QTY = ss.REQ_QTY; this._edi_SalesScheduleService.Create(_Edi_SalesSchedule); } foreach (SalesPartner sp in sapSalesOrder.PartnerList) { Edi_SalesPartner _Edi_SalesPartner = new Edi_SalesPartner(); _Edi_SalesPartner.OrderNumber = orderNumber; _Edi_SalesPartner.PARTN_ROLE = sp.PARTN_ROLE; _Edi_SalesPartner.PARTN_NUMB = sp.PARTN_NUMB; _Edi_SalesPartner.STREET = sp.STREET; _Edi_SalesPartner.CITY = sp.CITY; _Edi_SalesPartner.REGION = sp.REGION; _Edi_SalesPartner.POSTL_CODE = sp.POSTL_CODE; _Edi_SalesPartner.COUNTRY = sp.COUNTRY; _Edi_SalesPartner.NAME = sp.NAME; _Edi_SalesPartner.DateTime = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss"); _Edi_SalesPartner.TELEPHONE = sp.TELEPHONE; this._edi_SalesPartnerService.Create(_Edi_SalesPartner); } }
/// <summary> /// call webapi to create order & return order number /// </summary> /// <param name="sapSalesOrder"></param> /// <returns></returns> public static string creatOrder(SapSalesOrder sapSalesOrder) { string json = JsonConvert.SerializeObject(sapSalesOrder); string _Action = "BapiOrder"; string _Uri = _ConnectionString + _Action; ApiResultEntity _ApiResult = CallWebAPI.Post(json, _Uri); return(_ApiResult.Data.ToString()); }
// POST: api/Index /// <summary> /// create order /// send email to responsible sales /// </summary> /// <param name="sapSalesOrder"></param> /// <returns></returns> public string PostInsertOrder(SapSalesOrder sapSalesOrder) { string _OrderNumber = ""; _OrderNumber = this._sapConnectorInterface.CreateOrder(sapSalesOrder); if (_OrderNumber != "") { this._sapEDIService.Email(_OrderNumber, sapSalesOrder); } this._ediSerivice.InsertSapSalesOrder(sapSalesOrder, _OrderNumber); return(_OrderNumber); }
public bool Email(string ordernumber, SapSalesOrder sapSalesOrder) { string[] _Email = sapSalesOrder.SalesEmail.Split('@'); string _Body = "Hello " + _Email[0] + "<br>order:" + Function.SetFontColor(ordernumber, "blue") + " has created <br>"; List <SalesHeader> _HeaderList = new List <SalesHeader>(); _HeaderList.Add(sapSalesOrder.Header); DataTable dtHeader = Function.ListToDataTable(_HeaderList); DataTable dtItem = Function.ListToDataTable(sapSalesOrder.ItemList); DataTable dtPartner = Function.ListToDataTable(sapSalesOrder.PartnerList); DataTable dtSchedule = Function.ListToDataTable(sapSalesOrder.ScheduleList); string _BodyTable = Function.RenderDataTableToHtml(dtHeader) + Function.RenderDataTableToHtml(dtItem) + Function.RenderDataTableToHtml(dtPartner) + Function.RenderDataTableToHtml(dtSchedule); _Body = _Body + _BodyTable; bool _Success = Function.SendEmail("EDI data-" + sapSalesOrder.CustomerName, _Body, "*****@*****.**", sapSalesOrder.SalesEmail); return(_Success); }
/// <summary> /// you need excute(se38) ABLM_MODIFY_ITEMS in sap system and set relavant parameter /// previous when you use BAPI_SALESORDER_CREATEFROMDAT2 this RFC module /// </summary> /// <param name="destinationName"></param> /// <returns></returns> public string CreateOrder(SapSalesOrder salesOrder) { if (rfcDestination == null) { rfcDestination = RfcDestinationManager.GetDestination(WebApiApplication.destinationConfigName); } RfcRepository repo = rfcDestination.Repository; IRfcFunction _SalesDoc = repo.CreateFunction("BAPI_SALESORDER_CREATEFROMDAT2"); IRfcFunction _SalesDocCommit = repo.CreateFunction("BAPI_TRANSACTION_COMMIT"); IRfcStructure _SalesHeader = _SalesDoc.GetStructure("ORDER_HEADER_IN"); IRfcTable _SalesItems = _SalesDoc.GetTable("ORDER_ITEMS_IN"); IRfcTable _SalesPartners = _SalesDoc.GetTable("ORDER_PARTNERS"); IRfcTable _SalesSchedule = _SalesDoc.GetTable("ORDER_SCHEDULES_IN"); _SalesHeader.SetValue("DOC_TYPE", salesOrder.Header.DOC_TYPE); _SalesHeader.SetValue("SALES_ORG", salesOrder.Header.SALES_ORG); _SalesHeader.SetValue("DISTR_CHAN", salesOrder.Header.DISTR_CHAN); _SalesHeader.SetValue("DIVISION", salesOrder.Header.DIVISION); _SalesHeader.SetValue("PURCH_NO_C", salesOrder.Header.PURCH_NO_C); //test 採購日期 _SalesHeader.SetValue("PURCH_DATE", salesOrder.Header.PURCH_DATE); foreach (SalesItem si in salesOrder.ItemList) { IRfcStructure _SalesItemsStruct = _SalesItems.Metadata.LineType.CreateStructure(); _SalesItemsStruct.SetValue("ITM_NUMBER", si.ITM_NUMBER); //_SalesItemsStruct.SetValue("MATERIAL", si.MATERIAL); _SalesItemsStruct.SetValue("MATERIAL_LONG", si.MATERIAL); _SalesItemsStruct.SetValue("TARGET_QTY", si.TARGET_QTY); //test 客戶物料號碼 _SalesItemsStruct.SetValue("CUST_MAT35", si.CUST_MAT35); _SalesItems.Append(_SalesItemsStruct); } foreach (SalesPartner sp in salesOrder.PartnerList) { IRfcStructure _SalesPartnersStruct = _SalesPartners.Metadata.LineType.CreateStructure(); _SalesPartnersStruct.SetValue("PARTN_ROLE", sp.PARTN_ROLE); _SalesPartnersStruct.SetValue("PARTN_NUMB", sp.PARTN_NUMB); _SalesPartners.Append(_SalesPartnersStruct); } foreach (SalesSchedule ss in salesOrder.ScheduleList) { IRfcStructure _SalesScheduleStruct = _SalesSchedule.Metadata.LineType.CreateStructure(); _SalesScheduleStruct.SetValue("REQ_QTY", ss.REQ_QTY); _SalesScheduleStruct.SetValue("ITM_NUMBER", ss.ITM_NUMBER); _SalesScheduleStruct.SetValue("SCHED_LINE", ss.SCHED_LINE); _SalesScheduleStruct.SetValue("REQ_DATE", ss.REQ_DATE); _SalesSchedule.Append(_SalesScheduleStruct); } ////salesPartnersStruct.SetValue("PARTN_ROLE", "RE"); ////salesPartnersStruct.SetValue("PARTN_NUMB", "0010000650"); ////salesPartners.Append(salesPartnersStruct); RfcSessionManager.BeginContext(rfcDestination); _SalesDoc.Invoke(rfcDestination); _SalesDocCommit.Invoke(rfcDestination); RfcSessionManager.EndContext(rfcDestination); string _SalesCocument = _SalesDoc.GetString("SALESDOCUMENT"); DataTable dtReturn = ConvertToDotNetTable(_SalesDoc.GetTable("RETURN")); List <ErrorLog> _ErrorList = SetErrorLog(dtReturn, "BAPI_SALESORDER_CREATEFROMDAT2", _SalesCocument, salesOrder.Header.PURCH_NO_C); List <string> _Error = this._errorLogService.MiltiCreate(_ErrorList); return(_SalesCocument); }
/// <summary> /// for mouser /// </summary> /// <param name="b"></param> /// <returns></returns> public override string Parse(EdiBatch b, Edi_Customer c, string parserFile) { int _ItemNumber = 1; string _CustomerName = ""; string _Log = ""; SapSalesOrder _SapSalesOrder = new SapSalesOrder(); List <SalesItem> _ItemList = new List <SalesItem>(); List <SalesPartner> _PartnerList = new List <SalesPartner>(); List <SalesSchedule> _ScheduleList = new List <SalesSchedule>(); SalesHeader _Header = new SalesHeader(); _Header.DOC_TYPE = c.DOC_TYPE; //need to discuss _Header.SALES_ORG = c.SALES_ORG; //need to discuss _Header.DISTR_CHAN = c.DISTR_CHAN; //need to discuss _Header.DIVISION = c.DIVISION; //need to discuss try { EdiTrans _PO = b.Interchanges[0].Groups[0].Transactions[0]; EdiSegment _BEG = (EdiSegment)_PO.Content.FirstOrDefault(l => l.Definition.Name == "BEG"); if (_BEG != null) { _Header.PURCH_NO_C = _BEG.Content[2].ToString(); _Header.PURCH_DATE = _BEG.Content[4].ToString(); } _SapSalesOrder.Header = _Header; var listL_N1 = _PO.Content.Where(l => l.Definition.GetType() == typeof(M_850.L_N1)).Select(l => l).ToList(); foreach (EdiLoop n1 in listL_N1) { SalesPartner _Partner = new SalesPartner(); // var _N1Loop = (EdiLoop)n1; EdiSegment _N1 = (EdiSegment)n1.Content.FirstOrDefault(l => l.Definition.Name == "N1"); if (_N1 != null) { if ((_N1.Content[0].ToString() == "BT") || (_N1.Content[0].ToString() == "BY")) { _Partner.PARTN_ROLE = "AG"; } else if (_N1.Content[0].ToString() == "ST") { _Partner.PARTN_ROLE = "WE"; } if (c.EdiType == 1) { _Partner.PARTN_NUMB = c.SapCustomerId; //how to know what code in altw sap ,loop edi table } else { _Partner.PARTN_NUMB = _N1.Content[3].ToString(); } _CustomerName = _N1.Content[1].ToString(); } EdiSegment _N3 = (EdiSegment)n1.Content.FirstOrDefault(l => l.Definition.Name == "N3"); if (_N3 != null) { _Partner.STREET = _N3.Content[0].ToString(); } EdiSegment _N4 = (EdiSegment)n1.Content.FirstOrDefault(l => l.Definition.Name == "N4"); if (_N4 != null) { _Partner.CITY = _N4.Content[0].ToString(); _Partner.POSTL_CODE = _N4.Content[2].ToString(); _Partner.COUNTRY = _N4.Content[3].ToString(); _Partner.REGION = _N4.Content[1].ToString(); } EdiSegment _PER = (EdiSegment)n1.Content.FirstOrDefault(l => l.Definition.Name == "PER"); if (_PER != null) { _Partner.NAME = _PER.Content[1].ToString(); _Partner.TELEPHONE = _PER.Content[3].ToString(); } _PartnerList.Add(_Partner); } _SapSalesOrder.PartnerList = _PartnerList; var listL_PO1 = _PO.Content.Where(l => l.Definition.GetType() == typeof(M_850.L_PO1)).Select(l => l).ToList(); foreach (EdiLoop po1 in listL_PO1) { int _SchedLine = 1; SalesItem _Item = new SalesItem(); // var _PO1Loop = (EdiLoop)po1; EdiSegment _PO1 = (EdiSegment)po1.Content.FirstOrDefault(l => l.Definition.Name == "PO1"); if (_PO1 != null) { _Item.ITM_NUMBER = (_ItemNumber * 10).ToString().PadLeft(6, '0'); //need use altw rule 000010 //mouser special logic PO111 is part number // if(c.SapCustomerId== "0010000136") _Item.MATERIAL = _PO1.Content[10].ToString(); //else _Item.MATERIAL = _PO1.Content[8].ToString(); _Item.MATERIAL = _PO1.Content[Convert.ToInt32(c.PartNumberIndex)].ToString(); _Item.TARGET_QTY = _PO1.Content[1].ToString(); _Item.CUST_MAT35 = _PO1.Content[6].ToString(); _Item.CustomerItemNumber = _PO1.Content[0].ToString(); _Item.CustomerPrice = _PO1.Content[3].ToString(); _Item.CustomerUnit = _PO1.Content[2].ToString(); _Item.CustomerUnitOfPrice = _PO1.Content[4].ToString(); } _ItemList.Add(_Item); var listL_SCH = po1.Content.Where(l => l.Definition.GetType() == typeof(M_850.L_SCH)).Select(l => l).ToList(); foreach (EdiLoop sch in listL_SCH) { SalesSchedule _Schedule = new SalesSchedule(); // var _SCHLoop = (EdiLoop)sch; EdiSegment _SCH = (EdiSegment)sch.Content.FirstOrDefault(l => l.Definition.Name == "SCH"); if (_SCH != null) { _Schedule.REQ_QTY = _SCH.Content[0].ToString(); _Schedule.ITM_NUMBER = _Item.ITM_NUMBER; _Schedule.SCHED_LINE = _SchedLine.ToString().PadLeft(4, '0'); _Schedule.REQ_DATE = _SCH.Content[5].ToString(); } _ScheduleList.Add(_Schedule); _SchedLine++; } _ItemNumber++; } _SapSalesOrder.ItemList = _ItemList; _SapSalesOrder.ScheduleList = _ScheduleList; _SapSalesOrder.CustomerName = _CustomerName; _SapSalesOrder.CreateBy = "Edi"; _SapSalesOrder.SalesEmail = c.SalesEmail; edi.SapSalesOrder = _SapSalesOrder; } catch (Exception ex) { _Log = "\r\n" + DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss") + " setSalesOrderByEdi: Customer Id:" + c.SapCustomerId + " File :" + parserFile + "\r\n" + ex.Message; logger.Error(_Log); edi.Log = _Log; } return(_Log); }