public SalesOrderDetailsResponse DeleteSalesOrderLine(string salesOrderExternalId, int salesOrderLineNum) { SalesOrderDetailsResponse response = new SalesOrderDetailsResponse(); var request = new SalesOrderMaintainRequestBundleMessage_sync(); request.SalesOrder = new SalesOrderMaintainRequest[1]; var sapSalesOrder = new SalesOrderMaintainRequest(); sapSalesOrder.ID = new SalesOrderManageService.BusinessTransactionDocumentID(); sapSalesOrder.ID.Value = salesOrderExternalId; sapSalesOrder.Item = new SalesOrderMaintainRequestItem[1]; sapSalesOrder.Item[0] = new SalesOrderMaintainRequestItem(); sapSalesOrder.Item[0].ID = salesOrderLineNum.ToString(); sapSalesOrder.Item[0].actionCode = ActionCode.Item03; sapSalesOrder.Item[0].actionCodeSpecified = true; request.SalesOrder[0] = sapSalesOrder; var sapResponse = _manageClient.MaintainBundle(request); return(ParseSapManageResponse(sapResponse)); }
public SalesOrderDetailsResponse SetSalesOrder(SalesOrderDetailsRequest salesOrder) { //SalesOrderDetailsResponse response = new SalesOrderDetailsResponse(); var request = new SalesOrderMaintainRequestBundleMessage_sync(); request.SalesOrder = new SalesOrderMaintainRequest[1]; var sapSalesOrder = new SalesOrderMaintainRequest(); if (salesOrder.ExternalId == null) { sapSalesOrder.actionCode = ActionCode.Item01; sapSalesOrder.actionCodeSpecified = true; } else { sapSalesOrder.ID = new SalesOrderManageService.BusinessTransactionDocumentID(); sapSalesOrder.ID.Value = salesOrder.ExternalId; } sapSalesOrder.itemListCompleteTransmissionIndicator = true; sapSalesOrder.itemListCompleteTransmissionIndicatorSpecified = true; sapSalesOrder.ReleaseAllItemsToExecution = true; sapSalesOrder.ReleaseAllItemsToExecutionSpecified = true; sapSalesOrder.ReleaseCustomerRequest = true; sapSalesOrder.ReleaseCustomerRequestSpecified = true; sapSalesOrder.UltimateDestination = salesOrder.UltDestinationId; sapSalesOrder.FreightAccount = salesOrder.FreightAccount; sapSalesOrder.SalesAndServiceBusinessArea = new SalesOrderMaintainRequestSalesAndServiceBusinessArea(); sapSalesOrder.SalesAndServiceBusinessArea.DistributionChannelCode = new SalesOrderManageService.DistributionChannelCode(); sapSalesOrder.SalesAndServiceBusinessArea.DistributionChannelCode.Value = "01"; if (!string.IsNullOrEmpty(salesOrder.AccountExternalId)) { sapSalesOrder.AccountParty = new SalesOrderMaintainRequestPartyParty(); sapSalesOrder.AccountParty.PartyID = new SalesOrderManageService.PartyID(); sapSalesOrder.AccountParty.PartyID.Value = salesOrder.AccountExternalId; //set account external id } if (!string.IsNullOrEmpty(salesOrder.ContactExternalId)) { sapSalesOrder.AccountParty.ContactParty = new SalesOrderMaintainRequestPartyContactParty[1]; sapSalesOrder.AccountParty.ContactParty[0] = new SalesOrderMaintainRequestPartyContactParty(); sapSalesOrder.AccountParty.ContactParty[0].PartyID = new SalesOrderManageService.PartyID(); sapSalesOrder.AccountParty.ContactParty[0].PartyID.Value = salesOrder.ContactExternalId; //contaact external id } if (!string.IsNullOrEmpty(salesOrder.OrganizationID)) { sapSalesOrder.SalesUnitParty = new SalesOrderMaintainRequestPartyIDParty(); sapSalesOrder.SalesUnitParty.PartyID = new SalesOrderManageService.PartyID(); sapSalesOrder.SalesUnitParty.PartyID.Value = salesOrder.OrganizationID; //mapped to external id from middleware request --S5200 } if (salesOrder.Ownership != null && salesOrder.Ownership.LeadOwner != null && !string.IsNullOrEmpty(salesOrder.Ownership.LeadOwner.ExternalId)) { sapSalesOrder.EmployeeResponsibleParty = new SalesOrderMaintainRequestPartyIDParty(); sapSalesOrder.EmployeeResponsibleParty.PartyID = new SalesOrderManageService.PartyID(); sapSalesOrder.EmployeeResponsibleParty.PartyID.Value = salesOrder.Ownership.LeadOwner.ExternalId; //owner external id. example is --7000022 } if (!string.IsNullOrEmpty(salesOrder.CustomerPo)) { sapSalesOrder.BuyerID = new SalesOrderManageService.BusinessTransactionDocumentID(); sapSalesOrder.BuyerID.Value = salesOrder.CustomerPo; //set customer po } sapSalesOrder.DeliveryTerms = new SalesOrderMaintainRequestDeliveryTerms(); sapSalesOrder.DeliveryTerms.Incoterms = new SalesOrderManageService.Incoterms(); sapSalesOrder.DeliveryTerms.Incoterms.ClassificationCode = salesOrder.IncotermID; //mapped to external id from middleware request --DDU if (string.IsNullOrEmpty(salesOrder.IncotermLocation)) { sapSalesOrder.DeliveryTerms.Incoterms.TransferLocationName = salesOrder.IncotermLocation; } sapSalesOrder.CashDiscountTerms = new SalesOrderMaintainRequestCashDiscountTerms(); sapSalesOrder.CashDiscountTerms.Code = new SalesOrderManageService.CashDiscountTermsCode(); sapSalesOrder.CashDiscountTerms.Code.Value = salesOrder.PaymentTermID; //mapped to external id from middleware request --1003 if (!string.IsNullOrEmpty(salesOrder.CurrencyID)) { sapSalesOrder.PricingTerms = new SalesOrderMaintainRequestPricingTerms(); sapSalesOrder.PricingTerms.CurrencyCode = salesOrder.CurrencyID; //to do, use external id --USD } sapSalesOrder.PostingDate = new DateTime(); sapSalesOrder.PostingDate = Convert.ToDateTime(salesOrder.OrderDate);//setting posting date and converting orderdate, probably ok if (salesOrder.SOLines != null) { try { sapSalesOrder.Item = SetSalesOrderLines(salesOrder.SOLines, salesOrder.CurrencyID); } catch (Exception ex) { var error = new SalesOrderDetailsResponse(); error.Errors = new List <string>(); error.Errors.Add(ex.Message); return(error); } //error handling if product specs fail to generate if (salesOrder.SOLines.Count != sapSalesOrder.Item.Count()) { var response = new SalesOrderDetailsResponse(); response.Errors = new List <string>(); response.Errors.Add("product specs failed to generate"); return(response); } } request.SalesOrder[0] = sapSalesOrder; var sapResponse = _manageClient.MaintainBundle(request); var parsedSapResponse = ParseSapManageResponse(sapResponse, salesOrder); if (parsedSapResponse.Errors.Count == 0) { if (salesOrder.SOLines != null) { //make another call to set price now with generated ID request.SalesOrder[0].ID = new SalesOrderManageService.BusinessTransactionDocumentID(); request.SalesOrder[0].ID.Value = parsedSapResponse.SalesOrderExternalId; request.SalesOrder[0].actionCodeSpecified = false; parsedSapResponse = ParseSapManageResponse(_manageClient.MaintainBundle(request), salesOrder); } } return(parsedSapResponse); }