Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }