internal async Task <InvoiceEntity> CreateInvoiceCoreRaw(CreateInvoiceRequest invoice, StoreData store, string serverUrl, List <string> additionalTags = null, CancellationToken cancellationToken = default) { var storeBlob = store.GetStoreBlob(); var entity = _InvoiceRepository.CreateNewInvoice(); entity.ExpirationTime = entity.InvoiceTime + (invoice.Checkout.Expiration ?? storeBlob.InvoiceExpiration); entity.MonitoringExpiration = entity.ExpirationTime + (invoice.Checkout.Monitoring ?? storeBlob.MonitoringExpiration); if (invoice.Metadata != null) { entity.Metadata = InvoiceMetadata.FromJObject(invoice.Metadata); } invoice.Checkout ??= new CreateInvoiceRequest.CheckoutOptions(); entity.Currency = invoice.Currency; entity.Price = invoice.Amount; entity.SpeedPolicy = invoice.Checkout.SpeedPolicy ?? store.SpeedPolicy; entity.DefaultLanguage = invoice.Checkout.DefaultLanguage; IPaymentFilter excludeFilter = null; if (invoice.Checkout.PaymentMethods != null) { var supportedTransactionCurrencies = invoice.Checkout.PaymentMethods .Select(c => PaymentMethodId.TryParse(c, out var p) ? p : null) .ToHashSet(); excludeFilter = PaymentFilter.Where(p => !supportedTransactionCurrencies.Contains(p)); } entity.PaymentTolerance = invoice.Checkout.PaymentTolerance ?? storeBlob.PaymentTolerance; entity.RedirectURLTemplate = invoice.Checkout.RedirectURL?.Trim(); if (additionalTags != null) { entity.InternalTags.AddRange(additionalTags); } return(await CreateInvoiceCoreRaw(entity, store, excludeFilter, cancellationToken)); }
/// <summary> /// Extrae la información del PDF y la almacena en un CSV. /// </summary> private void GetCsvFromMetadata() { if (_Model.Invoice == null) { return; } InvoiceMetadata invoice = _Model.Invoice; Dictionary <string, string> data = new Dictionary <string, string>(); NumberFormatInfo numFormatInfo = new NumberFormatInfo(); numFormatInfo.NumberDecimalSeparator = ","; string issueDate = null; string grossAmount = null; foreach (PropertyInfo pInf in invoice.GetType().GetProperties()) { if (pInf.Name == "InvoiceNumber" || pInf.Name == "SellerPartyID" || pInf.Name == "BuyerPartyID" || pInf.Name == "CurrencyCode") { object pValue = pInf.GetValue(invoice); var text = $"{pValue}"; data.Add(pInf.Name, text); } else if (pInf.Name == "IssueDate") { if (pInf.GetValue(invoice) != null) { issueDate = ((DateTime)pInf.GetValue(invoice)).ToString("dd/MM/yyyy"); } } else if (pInf.Name == "GrossAmount") { if (System.Convert.ToDecimal(pInf.GetValue(invoice)) != 0) { grossAmount = ((decimal)pInf.GetValue(invoice)).ToString(numFormatInfo); } } } string[] file = _Model.PdfPath.Split('\\'); string nameFile = file[file.Length - 1]; string line = string.Format("{0};{1};{2};{3};{4};{5};{6}\n", data["SellerPartyID"], data["BuyerPartyID"], data["InvoiceNumber"], issueDate, grossAmount, data["CurrencyCode"], nameFile); string path = @"C:\Users\Juan Bautista\Documents\Util\FicherosPdfTaggerModif\OUTPUT\datosPdfTaggerModif.csv"; Console.WriteLine("Escribiendo en fichero"); File.AppendAllText(path, line); }
private InvoiceMetadata GetMetadataFromView() { //ExtraerDatosCSV(); InvoiceMetadata invoice = new InvoiceMetadata(); NumberFormatInfo numFormatInfo = new NumberFormatInfo(); numFormatInfo.NumberDecimalSeparator = ","; NumberFormatInfo numFormatInfo2 = new NumberFormatInfo(); numFormatInfo2.NumberDecimalSeparator = "."; foreach (PropertyInfo pInf in invoice.GetType().GetProperties()) { Control[] ctlrs = Controls.Find($"tx{pInf.Name}", true); if (ctlrs.Length != 0) { TextBox txb = (TextBox)ctlrs[0]; if (!string.IsNullOrEmpty(txb.Text)) { object pValue = null; if (txb.TextAlign == HorizontalAlignment.Right) { try { pValue = System.Convert.ToDecimal(txb.Text, numFormatInfo); } catch { pValue = System.Convert.ToDecimal(txb.Text, numFormatInfo2); } } else { pValue = Convert(pInf.PropertyType, txb.Text); } pInf.SetValue(invoice, pValue); } } } return(invoice); }
/// <summary> /// Extraer los datos del CSV en vez de la vista. /// </summary> /// <param name="path"></param> public Dictionary <string, string> ExtraerDatosCSV(bool allInfo = true) { var txt = File.ReadAllText(@"C:\Users\Juan Bautista\Documents\Util\FicherosPdfTagger\jFras.csv"); var lines = txt.Split('\n'); string[] data; Dictionary <string, string> inMet = new Dictionary <string, string>(); InvoiceMetadata invoiceMetadata = new InvoiceMetadata(); foreach (var line in lines) { var textGroup = line.Split(';'); var filePath = _Model.PdfPath.Split('\\'); string[] file = filePath[filePath.Length - 1].Split('.'); int filename = int.Parse(file[0]); if (textGroup[0].Equals(filename.ToString())) { data = textGroup; txSellerPartyID.Text = data[7]; _Model.Pdf.DocID = txSellerPartyID.Text; if (allInfo) { txBuyerPartyID.Text = data[5]; txInvoiceNumber.Text = data[10]; txIssueDate.Text = data[9]; txGrossAmount.Text = data[12]; txCurrencyCode.Text = data[13]; } else { invoiceMetadata.BuyerPartyID = data[5]; invoiceMetadata.Add("BuyerPartyID", data[5]); invoiceMetadata.Add("InvoiceNumber", data[10]); invoiceMetadata.InvoiceNumber = data[10]; invoiceMetadata.Add("IssueDate", data[9]); invoiceMetadata.IssueDate = data[9]; // ((DateTime)pInf.GetValue(invoice)).ToString("dd/MM/yyyy"); invoiceMetadata.Add("GrossAmount", data[12]); invoiceMetadata.Add("CurrencyCode", data[13]); } } } return(invoiceMetadata); }
private void GetViewFromMetadata() { if (_Model.Invoice == null) { return; } InvoiceMetadata invoice = _Model.Invoice; NumberFormatInfo numFormatInfo = new NumberFormatInfo(); numFormatInfo.NumberDecimalSeparator = "."; foreach (PropertyInfo pInf in invoice.GetType().GetProperties()) { Control[] ctlrs = Controls.Find($"tx{pInf.Name}", true); if (ctlrs.Length != 0 && pInf.Name != "SellerPartyID") { TextBox txb = (TextBox)ctlrs[0]; object pValue = pInf.GetValue(invoice); if (pValue != null) { if (pInf.PropertyType == typeof(decimal) && System.Convert.ToDecimal(pValue) != 0) { txb.Text = ((decimal)pValue).ToString(numFormatInfo); } else if (pInf.PropertyType == typeof(DateTime?) && pValue != null) { txb.Text = ((DateTime)pValue).ToString("dd/MM/yyyy"); } else { txb.Text = $"{pValue}"; } } } } }
public async Task <IActionResult> PayPaymentRequest(string payReqId, bool redirectToInvoice = true, decimal?amount = null, CancellationToken cancellationToken = default) { if (amount.HasValue && amount.Value <= 0) { return(BadRequest("Please provide an amount greater than 0")); } var result = await _PaymentRequestService.GetPaymentRequest(payReqId, GetUserId()); if (result == null) { return(NotFound()); } if (result.Archived) { if (redirectToInvoice) { return(RedirectToAction("ViewPaymentRequest", new { Id = payReqId })); } return(BadRequest("Payment Request cannot be paid as it has been archived")); } result.HubPath = PaymentRequestHub.GetHubPath(Request); if (result.AmountDue <= 0) { if (redirectToInvoice) { return(RedirectToAction("ViewPaymentRequest", new { Id = payReqId })); } return(BadRequest("Payment Request has already been settled.")); } if (result.ExpiryDate.HasValue && DateTime.UtcNow >= result.ExpiryDate) { if (redirectToInvoice) { return(RedirectToAction("ViewPaymentRequest", new { Id = payReqId })); } return(BadRequest("Payment Request has expired")); } var stateAllowedToDisplay = new HashSet <InvoiceState> { new InvoiceState(InvoiceStatusLegacy.New, InvoiceExceptionStatus.None), new InvoiceState(InvoiceStatusLegacy.New, InvoiceExceptionStatus.PaidPartial), }; var currentInvoice = result .Invoices .FirstOrDefault(invoice => stateAllowedToDisplay.Contains(invoice.State)); if (currentInvoice != null) { if (redirectToInvoice) { return(RedirectToAction("Checkout", "UIInvoice", new { currentInvoice.Id })); } return(Ok(currentInvoice.Id)); } if (result.AllowCustomPaymentAmounts && amount != null) { amount = Math.Min(result.AmountDue, amount.Value); } else { amount = result.AmountDue; } var pr = await _PaymentRequestRepository.FindPaymentRequest(payReqId, null, cancellationToken); var blob = pr.GetBlob(); var store = pr.StoreData; try { var redirectUrl = _linkGenerator.PaymentRequestLink(payReqId, Request.Scheme, Request.Host, Request.PathBase); var invoiceMetadata = new InvoiceMetadata { OrderId = PaymentRequestRepository.GetOrderIdForPaymentRequest(payReqId), PaymentRequestId = payReqId, BuyerEmail = result.Email }; var invoiceRequest = new CreateInvoiceRequest { Metadata = invoiceMetadata.ToJObject(), Currency = blob.Currency, Amount = amount.Value, Checkout = { RedirectURL = redirectUrl } }; var additionalTags = new List <string> { PaymentRequestRepository.GetInternalTag(payReqId) }; var newInvoice = await _InvoiceController.CreateInvoiceCoreRaw(invoiceRequest, store, Request.GetAbsoluteRoot(), additionalTags, cancellationToken); if (redirectToInvoice) { return(RedirectToAction("Checkout", "UIInvoice", new { newInvoice.Id })); } return(Ok(newInvoice.Id)); } catch (BitpayHttpException e) { return(BadRequest(e.Message)); } }