private async Task <HttpResponseMessage> SendMessage(SapCreditNoteModel creditNote, string sapSystem, string uriString, HttpMethod method) { var message = new HttpRequestMessage() { RequestUri = new Uri(uriString), Method = method }; if (creditNote != null) { message.Content = new StringContent(JsonConvert.SerializeObject(creditNote, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore }), Encoding.UTF8, "application/json"); } var sapTaskHandler = _sapServiceSettingsFactory.CreateHandler(sapSystem); var cookies = await sapTaskHandler.StartSession(); message.Headers.Add("Cookie", cookies.B1Session); message.Headers.Add("Cookie", cookies.RouteId); var client = _httpClientFactory.CreateClient(); return(await client.SendAsync(message)); }
public SapCreditNoteModel MapToSapCreditNote(SapSaleOrderInvoiceResponse sapSaleOrderInvoiceResponse, CreditNoteRequest creditNoteRequest) { var sapCreditNoteModel = new SapCreditNoteModel { NumAtCard = sapSaleOrderInvoiceResponse.NumAtCard ?? "", U_DPL_RECURRING_SERV = sapSaleOrderInvoiceResponse.U_DPL_RECURRING_SERV, U_DPL_CARD_HOLDER = sapSaleOrderInvoiceResponse.U_DPL_CARD_HOLDER, U_DPL_CARD_NUMBER = sapSaleOrderInvoiceResponse.U_DPL_CARD_NUMBER, U_DPL_CARD_TYPE = sapSaleOrderInvoiceResponse.U_DPL_CARD_TYPE, U_DPL_CARD_ERROR_COD = creditNoteRequest.CardErrorCode, U_DPL_CARD_ERROR_DET = creditNoteRequest.CardErrorDetail, U_DPL_CN_ID = creditNoteRequest.CreditNoteId, DocumentLines = new List <SapCreditNoteDocumentLineModel>(), DocDate = _dateTimeProvider.GetDateByTimezoneId(_dateTimeProvider.UtcNow, _timezoneConfig.InvoicesTimeZone).ToString("yyyy-MM-dd"), DocDueDate = _dateTimeProvider.GetDateByTimezoneId(_dateTimeProvider.UtcNow, _timezoneConfig.InvoicesTimeZone).ToString("yyyy-MM-dd"), TaxDate = _dateTimeProvider.GetDateByTimezoneId(_dateTimeProvider.UtcNow, _timezoneConfig.InvoicesTimeZone).ToString("yyyy-MM-dd"), CreditNoteId = creditNoteRequest.CreditNoteId, CardCode = sapSaleOrderInvoiceResponse.CardCode, TransferReference = creditNoteRequest.TransferReference }; var balance = creditNoteRequest.Amount; var isPartial = sapSaleOrderInvoiceResponse.DocTotal > Convert.ToDecimal(creditNoteRequest.Amount); foreach (SapDocumentLineResponse line in sapSaleOrderInvoiceResponse.DocumentLines) { if (balance == 0) { break; } var amount = (line.UnitPrice > balance) ? balance : line.UnitPrice; SapCreditNoteDocumentLineModel creditNoteLine = new SapCreditNoteDocumentLineModel { BaseEntry = (creditNoteRequest.Type == (int)CreditNoteEnum.NoRefund) ? sapSaleOrderInvoiceResponse.DocEntry : (int?)null, BaseLine = (creditNoteRequest.Type == (int)CreditNoteEnum.NoRefund) ? line.LineNum : (int?)null, BaseType = (creditNoteRequest.Type == (int)CreditNoteEnum.NoRefund) ? _invoiceType : (int?)null, CostingCode = line.CostingCode, CostingCode2 = line.CostingCode2, CostingCode3 = line.CostingCode3, CostingCode4 = line.CostingCode4, Currency = line.Currency, FreeText = isPartial ? $"Partial refund - Invoice: {sapSaleOrderInvoiceResponse.DocNum}." : $"Cancel invoice: {sapSaleOrderInvoiceResponse.DocNum}.", ItemCode = line.ItemCode, Quantity = line.Quantity, TaxCode = line.TaxCode, UnitPrice = amount, ReturnReason = string.IsNullOrEmpty(creditNoteRequest.Reason) ? -1 : _creditNoteReason.TryGetValue(creditNoteRequest.Reason, out var outReason) ? outReason : -1 }; sapCreditNoteModel.DocumentLines.Add(creditNoteLine); balance -= amount; } return(sapCreditNoteModel); }
public SapCreditNoteModel MapToSapCreditNote(CancelCreditNoteRequest cancelCreditNoteRequest) { var sapCreditNoteModel = new SapCreditNoteModel { U_DPL_CN_ID = cancelCreditNoteRequest.CreditNoteId, BillingSystemId = cancelCreditNoteRequest.BillingSystemId }; return(sapCreditNoteModel); }
public SapCreditNoteModel MapToSapCreditNote(CreditNoteRequest creditNoteRequest) { var sapCreditNoteModel = new SapCreditNoteModel { BillingSystemId = creditNoteRequest.BillingSystemId, CreditNoteId = creditNoteRequest.InvoiceId, U_DPL_CARD_ERROR_COD = creditNoteRequest.CardErrorCode, U_DPL_CARD_ERROR_DET = creditNoteRequest.CardErrorDetail, TransactionApproved = creditNoteRequest.TransactionApproved, TransferReference = creditNoteRequest.TransferReference }; return(sapCreditNoteModel); }