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); }
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); }
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); }
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); }