Example #1
0
        public async Task <SapTaskResult> Handle(SapTask dequeuedTask)
        {
            var sapTaskHandler     = _sapServiceSettingsFactory.CreateHandler(_sapSystem);
            var sapServiceSettings = SapServiceSettings.GetSettings(_sapConfig, _sapSystem);
            var message            = new HttpRequestMessage
            {
                RequestUri = new Uri($"{sapServiceSettings.BaseServerUrl}SBOBobService_SetCurrencyRate"),
                Content    = new StringContent(JsonConvert.SerializeObject(dequeuedTask.CurrencyRate),
                                               Encoding.UTF8,
                                               "application/json"),
                Method = HttpMethod.Post
            };

            var cookies = await sapTaskHandler.StartSession();

            message.Headers.Add("Cookie", cookies.B1Session);
            message.Headers.Add("Cookie", cookies.RouteId);

            var client      = _httpClientFactory.CreateClient();
            var sapResponse = await client.SendAsync(message);

            var taskResult = new SapTaskResult
            {
                IsSuccessful       = sapResponse.IsSuccessStatusCode,
                SapResponseContent = await sapResponse.Content.ReadAsStringAsync(),
                TaskName           = $"Setting the {dequeuedTask.CurrencyRate.Currency} Currency Rate"
            };

            return(taskResult);
        }
        private async Task <SapTaskResult> UpdateInvoice(SapTask dequeuedTask, string sapSystem, SapSaleOrderInvoiceResponse invoiceFromSap)
        {
            var billingValidator = GetValidator(sapSystem);

            if (!billingValidator.CanUpdate(invoiceFromSap, dequeuedTask.BillingRequest))
            {
                return(new SapTaskResult
                {
                    IsSuccessful = false,
                    IdUser = dequeuedTask.BillingRequest?.UserId.ToString(),
                    SapResponseContent = $"Failed at updating billing request for the invoice: {dequeuedTask.BillingRequest.InvoiceId}.",
                    TaskName = "Updating Billing Request"
                });
            }

            var serviceSetting = SapServiceSettings.GetSettings(_sapConfig, sapSystem);
            var uriString      = $"{serviceSetting.BaseServerUrl}{serviceSetting.BillingConfig.Endpoint}({invoiceFromSap.DocEntry})";
            var sapResponse    = await SendMessage(dequeuedTask.BillingRequest, sapSystem, uriString, HttpMethod.Patch);

            var taskResult = new SapTaskResult
            {
                IsSuccessful       = sapResponse.IsSuccessStatusCode,
                IdUser             = dequeuedTask.BillingRequest?.UserId.ToString(),
                SapResponseContent = await sapResponse.Content.ReadAsStringAsync(),
                TaskName           = "Updating Invoice"
            };

            return(taskResult);
        }
Example #3
0
        private async Task <SapTaskResult> CancelCreditNote(SapCreditNoteResponse sapCreditNoteResponse, SapTask dequeuedTask, string sapSystem)
        {
            var serviceSetting = SapServiceSettings.GetSettings(_sapConfig, sapSystem);
            var uriString      = $"{serviceSetting.BaseServerUrl}{serviceSetting.BillingConfig.CreditNotesEndpoint}({sapCreditNoteResponse.DocEntry})/Cancel";
            var sapResponse    = await SendMessage(null, sapSystem, uriString, HttpMethod.Post);

            var taskResult = new SapTaskResult
            {
                IsSuccessful       = sapResponse.IsSuccessStatusCode,
                SapResponseContent = await sapResponse.Content.ReadAsStringAsync(),
                TaskName           = "Canceling Credit Note"
            };

            return(taskResult);
        }
Example #4
0
        private async Task <SapTaskResult> CreateBusinessPartner(SapTask dequeuedTask, string sapSystem)
        {
            var serviceSetting = SapServiceSettings.GetSettings(_sapConfig, sapSystem);
            var uriString      = $"{serviceSetting.BaseServerUrl}{serviceSetting.BusinessPartnerConfig.Endpoint}/";
            var sapResponse    = await SendMessage(dequeuedTask.BusinessPartner, sapSystem, uriString, HttpMethod.Post);

            var taskResult = new SapTaskResult
            {
                IsSuccessful       = sapResponse.IsSuccessStatusCode,
                SapResponseContent = await sapResponse.Content.ReadAsStringAsync(),
                TaskName           = "Creating Business Partner"
            };

            return(taskResult);
        }
Example #5
0
        private async Task <SapTaskResult> UpdateBusinessPartner(SapTask dequeuedTask, string sapSystem)
        {
            var serviceSetting = SapServiceSettings.GetSettings(_sapConfig, sapSystem);

            //SAP uses a non conventional patch where you have to send only the fields that you want to be changed with the new values
            dequeuedTask.BusinessPartner.BPAddresses      = GetBPAddressesPatchObject(dequeuedTask.BusinessPartner.BPAddresses);
            dequeuedTask.BusinessPartner.ContactEmployees = GetContactEmployeesPatchObject(dequeuedTask.BusinessPartner.ContactEmployees, dequeuedTask.ExistentBusinessPartner.ContactEmployees);
            //we don't want to update: CUITs/DNI and Currency
            dequeuedTask.BusinessPartner.FederalTaxID = null;
            dequeuedTask.BusinessPartner.Currency     = null;

            var uriString   = $"{serviceSetting.BaseServerUrl}{serviceSetting.BusinessPartnerConfig.Endpoint}('{dequeuedTask.ExistentBusinessPartner.CardCode}')";
            var sapResponse = await SendMessage(dequeuedTask.BusinessPartner, sapSystem, uriString, HttpMethod.Patch);

            var taskResult = new SapTaskResult
            {
                IsSuccessful       = sapResponse.IsSuccessStatusCode,
                SapResponseContent = await sapResponse.Content.ReadAsStringAsync(),
                TaskName           = "Updating Business Partner"
            };

            return(taskResult);
        }