From d8024eb52626fe52486abaa2825b251f32627b2f Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Sat, 9 Dec 2023 12:40:51 +0700 Subject: [PATCH 001/219] include voucher tax adjustment in revenues by hub report --- lib/reporting/reports/revenues_by_hub/base.rb | 54 ++++++++-- .../admin/reports/revenues_by_hub_spec.rb | 100 +++++++++++++++++- 2 files changed, 143 insertions(+), 11 deletions(-) diff --git a/lib/reporting/reports/revenues_by_hub/base.rb b/lib/reporting/reports/revenues_by_hub/base.rb index 5fb5de67c3..e539c77fed 100644 --- a/lib/reporting/reports/revenues_by_hub/base.rb +++ b/lib/reporting/reports/revenues_by_hub/base.rb @@ -19,7 +19,7 @@ module Reporting } end - def columns # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity + def columns # rubocop:disable Metrics/AbcSize { hub: proc { |orders| distributor(orders).name }, hub_id: proc { |orders| distributor(orders).id }, @@ -35,16 +35,16 @@ module Reporting hub_address_zipcode: proc { |orders| distributor(orders).address&.zipcode }, hub_address_state_name: proc { |orders| distributor(orders).address&.state_name }, total_orders: proc { |orders| orders.count }, - total_excl_tax: proc { |orders| - orders.sum { |order| order.total - order.total_tax } - }, - total_tax: proc { |orders| orders.sum(&:total_tax) }, - total_incl_tax: proc { |orders| orders.sum(&:total) } + total_excl_tax: :total_excl_tax, + total_tax: :total_tax, + total_incl_tax: :total_incl_tax } end def query_result - search.result.group_by(&:distributor).values + result = search.result.group_by(&:distributor).values + build_tax_data(result) + result end private @@ -52,6 +52,46 @@ module Reporting def distributor(orders) orders.first.distributor end + + def build_tax_data(grouped_orders) + @tax_data = {} + + grouped_orders.each do |orders| + voucher_adjustments = calculate_voucher_adjustments(orders) + + total_incl_tax = orders.sum(&:total) + total_tax = orders.sum(&:total_tax) + voucher_adjustments + total_excl_tax = total_incl_tax - total_tax + + @tax_data[distributor(orders).id] = { + total_incl_tax:, total_tax:, total_excl_tax: + } + end + end + + def calculate_voucher_adjustments(orders) + result = 0.0 + + orders.each do |order| + adjustment_service = VoucherAdjustmentsService.new(order) + result += adjustment_service.voucher_included_tax + + adjustment_service.voucher_excluded_tax + end + + result + end + + def total_incl_tax(orders) + @tax_data[distributor(orders).id][:total_incl_tax] + end + + def total_tax(orders) + @tax_data[distributor(orders).id][:total_tax] + end + + def total_excl_tax(orders) + @tax_data[distributor(orders).id][:total_excl_tax] + end end end end diff --git a/spec/system/admin/reports/revenues_by_hub_spec.rb b/spec/system/admin/reports/revenues_by_hub_spec.rb index 9d622ec355..1ca4fe378e 100644 --- a/spec/system/admin/reports/revenues_by_hub_spec.rb +++ b/spec/system/admin/reports/revenues_by_hub_spec.rb @@ -10,10 +10,37 @@ describe "Revenues By Hub Reports" do :completed_order_with_totals, completed_at: 2.days.ago, order_cycle:, - distributor: create(:enterprise, name: "Hub 1", - owner: create(:user, email: "email@email.com")), + distributor: distributor1 ) end + let(:order_with_voucher_tax_included) do + create( + :order_with_taxes, + completed_at: 2.days.ago, + order_cycle:, + distributor: distributor2, + product_price: 110.0, + tax_rate_amount: 0.1, + included_in_price: true, + tax_rate_name: "Tax 1" + ) + end + let(:order_with_voucher_tax_excluded) do + create( + :order_with_taxes, + completed_at: 2.days.ago, + order_cycle:, + distributor: distributor3, + product_price: 110.0, + tax_rate_amount: 0.1, + included_in_price: true, + tax_rate_name: "Tax 1" + ) + end + let(:distributor1) { create(:enterprise, name: "Hub 1", owner:) } + let(:distributor2) { create(:enterprise, name: "Hub 2", owner:) } + let(:distributor3) { create(:enterprise, name: "Hub 3", owner:) } + let(:owner) { create(:user, email: 'email@email.com') } let(:order_cycle) { create(:simple_order_cycle) } let(:product) { create(:product, supplier:) } let(:supplier) { create(:supplier_enterprise) } @@ -21,11 +48,29 @@ describe "Revenues By Hub Reports" do before do create(:line_item_with_shipment, order:, product:) + order_with_voucher_tax_included.create_tax_charge! + order_with_voucher_tax_included.update_shipping_fees! + order_with_voucher_tax_included.update_order! + + order_with_voucher_tax_excluded.create_tax_charge! + order_with_voucher_tax_excluded.update_shipping_fees! + order_with_voucher_tax_excluded.update_order! + + allow(VoucherAdjustmentsService).to receive(:new) do |order_arg| + if order_arg.id == order.id + next double(voucher_included_tax: 0.0, voucher_excluded_tax: 0.0) + elsif order_arg.id == order_with_voucher_tax_included.id + next double(voucher_included_tax: 0.5, voucher_excluded_tax: 0.0) + elsif order_arg.id == order_with_voucher_tax_excluded.id + next double(voucher_included_tax: 0.0, voucher_excluded_tax: -0.5) + end + end + login_as_admin visit main_app.admin_report_path(report_type: 'revenues_by_hub') end - context "testing report" do + context "testing report", aggregate_failures: true do it "show the right values" do find("[type='submit']").click @@ -49,7 +94,8 @@ describe "Revenues By Hub Reports" do "TOTAL INCL. TAX ($)" ].join(" ")) - expect(page.find("table.report__table tbody tr").text).to have_content([ + lines = page.all('table.report__table tbody tr').map(&:text) + expect(lines[0]).to have_content([ "Hub 1", order.distributor.id, "none", @@ -68,6 +114,52 @@ describe "Revenues By Hub Reports" do order.total_tax, order.total ].compact.join(" ")) + + expect(lines[1]).to have_content([ + "Hub 2", + order_with_voucher_tax_included.distributor.id, + "none", + "none", + "none", + "none", + "email@email.com", + "none", + "10 Lovely Street", + nil, + "Northwest Herndon", + "20170", + "Victoria", + "1", + # 160.0$ - 10.5$ + 149.5, + # 10$ tax + 0.5$ voucher_included_tax + 10.5, + # 5 line_items at 10$ each + 1 line_item at 110$ + 160.0 + ].compact.join(" ")) + + expect(lines[2]).to have_content([ + "Hub 3", + order_with_voucher_tax_excluded.distributor.id, + "none", + "none", + "none", + "none", + "email@email.com", + "none", + "10 Lovely Street", + nil, + "Northwest Herndon", + "20170", + "Victoria", + "1", + # 160.0$ - 9.5$ + 150.5, + # 10$ tax - 0.5$ voucher_excluded_tax + 9.5, + # 5 line_items at 10$ each + 1 line_item at 110$ + 160.0 + ].compact.join(" ")) end end end From 615c001c28c0e1bb70056f76b74db890cb8f5630 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Tue, 24 Oct 2023 09:10:22 +0100 Subject: [PATCH 002/219] implement Invoice#previous_invoice --- app/models/invoice.rb | 4 ++++ app/models/invoice/data_presenter.rb | 2 +- spec/models/invoice_spec.rb | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/app/models/invoice.rb b/app/models/invoice.rb index ef8d627a7e..55524521b2 100644 --- a/app/models/invoice.rb +++ b/app/models/invoice.rb @@ -30,4 +30,8 @@ class Invoice < ApplicationRecord def display_number "#{order.distributor.id}-#{number}" end + + def previous_invoice + order.invoices.where("id < ?", id).first + end end diff --git a/app/models/invoice/data_presenter.rb b/app/models/invoice/data_presenter.rb index c9f0e5de42..8c5c4dbbab 100644 --- a/app/models/invoice/data_presenter.rb +++ b/app/models/invoice/data_presenter.rb @@ -5,7 +5,7 @@ class Invoice include ::ActionView::Helpers::NumberHelper attr_reader :invoice - delegate :display_number, :data, to: :invoice + delegate :display_number, :data, :previous_invoice, to: :invoice delegate :date, to: :invoice, prefix: true FINALIZED_NON_SUCCESSFUL_STATES = %w(canceled returned).freeze diff --git a/spec/models/invoice_spec.rb b/spec/models/invoice_spec.rb index 81dad4005e..b5a3fd94a8 100644 --- a/spec/models/invoice_spec.rb +++ b/spec/models/invoice_spec.rb @@ -18,4 +18,19 @@ RSpec.describe Invoice, type: :model do expect(invoice.data).to eq(Invoice::OrderSerializer.new(order).serializable_hash) end end + + describe "previous_invoice" do + it "should return the previous invoice" do + invoice1 = create(:invoice, order:, number: 1, created_at: 3.days.ago) + invoice2 = create(:invoice, order:, number: 2, created_at: 2.days.ago) + invoice3 = create(:invoice, order:, number: 3, created_at: 1.day.ago) + expect(invoice3.previous_invoice).to eq(invoice2) + expect(invoice2.previous_invoice).to eq(invoice1) + end + + it "should return nil if there is no previous invoice" do + invoice = create(:invoice, order:) + expect(invoice.previous_invoice).to be_nil + end + end end From 915afd85571091237b4e113f876cae74c79529f7 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Tue, 24 Oct 2023 09:10:44 +0100 Subject: [PATCH 003/219] update the invoice v3 template --- .../spree/admin/orders/invoice4.html.haml | 2 ++ config/locales/en.yml | 1 + spec/system/admin/invoice_print_spec.rb | 33 +++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/app/views/spree/admin/orders/invoice4.html.haml b/app/views/spree/admin/orders/invoice4.html.haml index 69c8ec9e8f..bf7eee3679 100644 --- a/app/views/spree/admin/orders/invoice4.html.haml +++ b/app/views/spree/admin/orders/invoice4.html.haml @@ -46,6 +46,8 @@ %br = "#{t :invoice_number}:" = @order.display_number + - if @order.previous_invoice.present? + = "#{t :invoice_cancel_and_replace_invoice} #{ @order.previous_invoice.display_number}" %br = t :invoice_issued_on = l @order.invoice_date diff --git a/config/locales/en.yml b/config/locales/en.yml index 05ee256012..a6bae84eed 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1991,6 +1991,7 @@ en: invoice_column_price_per_unit_without_taxes: "Price Per unit (Excl. tax)" invoice_column_tax_rate: "Tax rate" invoice_tax_total: "GST Total:" + invoice_cancel_and_replace_invoice: "cancels and replaces invoice" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" invoice_shipping_type: "Type:" diff --git a/spec/system/admin/invoice_print_spec.rb b/spec/system/admin/invoice_print_spec.rb index 24649c98ce..5e51aae36b 100644 --- a/spec/system/admin/invoice_print_spec.rb +++ b/spec/system/admin/invoice_print_spec.rb @@ -662,6 +662,39 @@ describe ' end end end + describe "Rendering previous invoice number" do + context "Order doesn't have previous invoices" do + it "should display the invoice number" do + login_as_admin + visit spree.print_admin_order_path(order, params: {}) + + convert_pdf_to_page + expect(page).to have_content "#{order.distributor_id}-#{order.invoices.first.number}" + end + end + + context "Order has previous invoices" do + before do + OrderInvoiceGenerator.new(order).generate_or_update_latest_invoice + first_line_item = order.line_items.first + order.line_items.first.update(quantity: first_line_item.quantity + 1) + end + + it "should display the invoice number along with the latest invoice number" do + login_as_admin + visit spree.print_admin_order_path(order, params: {}) + + expect(order.invoices.count).to eq(2) + + new_invoice_number = "#{order.distributor_id}-#{order.invoices.first.number}" + canceled_invoice_number = "#{order.distributor_id}-#{order.invoices.last.number}" + + convert_pdf_to_page + expect(page).to have_content "#{new_invoice_number} cancels and replaces invoice #{ + canceled_invoice_number}" + end + end + end end end From b84707edd99e41cf586ed48ca66502a8809acdae Mon Sep 17 00:00:00 2001 From: Ryan Murphy Date: Sat, 2 Dec 2023 13:09:34 -0500 Subject: [PATCH 004/219] Cleanse JS errors from DOM on Stripe failure --- .../javascripts/admin/payments/services/payment.js.coffee | 3 ++- spec/system/admin/payments_spec.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/admin/payments/services/payment.js.coffee b/app/assets/javascripts/admin/payments/services/payment.js.coffee index 487dafcd03..ea40e12f96 100644 --- a/app/assets/javascripts/admin/payments/services/payment.js.coffee +++ b/app/assets/javascripts/admin/payments/services/payment.js.coffee @@ -43,7 +43,8 @@ angular.module('admin.payments').factory 'Payment', (AdminStripeElements, curren submit: => munged = @preprocess() PaymentResource.create({order_id: munged.order_id}, munged, (response, headers, status) -> - document.body.innerHTML = Object.values(response).join('') + rawHtml = Object.values(response).join('').replace('[object Object]true', '') + document.body.innerHTML = rawHtml $window.history.pushState({}, '', "/admin/orders/" + munged.order_id + "/payments") , (response) -> StatusMessage.display 'error', t("spree.admin.payments.source_forms.stripe.error_saving_payment") diff --git a/spec/system/admin/payments_spec.rb b/spec/system/admin/payments_spec.rb index f34c35e6bc..e648c5698f 100644 --- a/spec/system/admin/payments_spec.rb +++ b/spec/system/admin/payments_spec.rb @@ -62,6 +62,7 @@ describe ' click_button "Update" expect(page).to have_content "Payments" expect(page).to have_content "Payment has been successfully created!" + expect(page).not_to have_content "[object Object]true" order.reload expect(order.state).to eq "complete" From 1afdbd92ead12cee5e846c4121bd71f67347793b Mon Sep 17 00:00:00 2001 From: drummer83 Date: Mon, 11 Dec 2023 23:39:55 +0100 Subject: [PATCH 005/219] Show Dashboard header in the header area for multi-enterprise users Use correct translation string --- .../admin/overview/multi_enterprise_dashboard.html.haml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/views/spree/admin/overview/multi_enterprise_dashboard.html.haml b/app/views/spree/admin/overview/multi_enterprise_dashboard.html.haml index 4f72a14f9f..bc997ca13a 100644 --- a/app/views/spree/admin/overview/multi_enterprise_dashboard.html.haml +++ b/app/views/spree/admin/overview/multi_enterprise_dashboard.html.haml @@ -1,11 +1,10 @@ +- content_for :page_title do + = t('dashboard') + - content_for :page_actions do = render 'admin/shared/user_guide_link' - %div{ 'ng-app' => 'ofn.admin' } - %h1{ :style => 'margin-bottom: 30px' } - = t 'dashboard' - - if @enterprises.empty? = render partial: "enterprises" From 321e6ef31605084342e9744a417414be0a2634ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 09:32:12 +0000 Subject: [PATCH 006/219] Bump rubocop from 1.58.0 to 1.59.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.58.0 to 1.59.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.58.0...v1.59.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index d59e3ef75d..42e8df0c82 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -575,7 +575,7 @@ GEM redis (4.8.1) redis-client (0.18.0) connection_pool - regexp_parser (2.8.2) + regexp_parser (2.8.3) reline (0.4.1) io-console (~> 0.5) request_store (1.5.1) @@ -634,7 +634,7 @@ GEM rswag-ui (2.13.0) actionpack (>= 3.1, < 7.2) railties (>= 3.1, < 7.2) - rubocop (1.58.0) + rubocop (1.59.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From dc9fd669a25a9461b0af0ca9befcbfb6f8e5ba14 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 13 Dec 2023 14:11:02 +1100 Subject: [PATCH 007/219] Remove unnecessary html_safe calls The tag generator methods should already be returning html_safe strings. --- app/helpers/spree/admin/base_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/helpers/spree/admin/base_helper.rb b/app/helpers/spree/admin/base_helper.rb index 5615d4d62a..de2173c674 100644 --- a/app/helpers/spree/admin/base_helper.rb +++ b/app/helpers/spree/admin/base_helper.rb @@ -110,12 +110,12 @@ module Spree object.preferences.keys.map { |key| preference_label = form.label("preferred_#{key}", - Spree.t(key.to_s.gsub("_from_list", "")) + ": ").html_safe + Spree.t(key.to_s.gsub("_from_list", "")) + ": ") preference_field = preference_field_for( form, "preferred_#{key}", { type: object.preference_type(key) }, object - ).html_safe + ) { label: preference_label, field: preference_field } } end From 0e95b3211b76872d4d1095e2557f50fa207e235b Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 13 Dec 2023 14:18:46 +1100 Subject: [PATCH 008/219] Disable most OutputSafety warnings These all seem to require html_safe/raw, so we'll permit it. Some of the spree code is a bit strange and could probably be improved, but I think it's ok for now. --- .rubocop_todo.yml | 9 --------- app/helpers/angular_form_helper.rb | 2 +- app/helpers/application_helper.rb | 4 ++-- app/helpers/reports_helper.rb | 2 ++ app/helpers/spree/admin/navigation_helper.rb | 4 +++- app/helpers/spree/admin/orders_helper.rb | 2 +- app/helpers/spree/admin/zones_helper.rb | 2 +- lib/reporting/queries/query_builder.rb | 7 +++++-- lib/reporting/queries/query_interface.rb | 2 +- lib/spree/money.rb | 4 ++-- 10 files changed, 18 insertions(+), 20 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index aa12b8a9a5..460e63a892 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -523,16 +523,7 @@ Rails/NegateInclude: # Offense count: 16 Rails/OutputSafety: Exclude: - - 'app/helpers/angular_form_helper.rb' - - 'app/helpers/application_helper.rb' - - 'app/helpers/reports_helper.rb' - 'app/helpers/spree/admin/base_helper.rb' - - 'app/helpers/spree/admin/navigation_helper.rb' - - 'app/helpers/spree/admin/orders_helper.rb' - - 'app/helpers/spree/admin/zones_helper.rb' - - 'lib/reporting/queries/query_builder.rb' - - 'lib/reporting/queries/query_interface.rb' - - 'lib/spree/money.rb' # Offense count: 31 # This cop supports unsafe autocorrection (--autocorrect-all). diff --git a/app/helpers/angular_form_helper.rb b/app/helpers/angular_form_helper.rb index 3b1233302e..a9b03e9608 100644 --- a/app/helpers/angular_form_helper.rb +++ b/app/helpers/angular_form_helper.rb @@ -9,7 +9,7 @@ module AngularFormHelper text, value = option_text_and_value(element).map(&:to_s) %() - end.join("\n").html_safe + end.join("\n").html_safe # rubocop:disable Rails/OutputSafety end def ng_options_from_collection_for_select(collection, value_method, text_method, angular_field) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 223a4c8f41..2f470529b2 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -10,7 +10,7 @@ module ApplicationHelper return "" unless obj && obj.errors[method].present? - errors = obj.errors[method].map { |err| h(err) }.join('
').html_safe + errors = obj.errors[method].map { |err| h(err) }.join('
').html_safe # rubocop:disable Rails/OutputSafety if options[:standalone] content_tag( @@ -36,7 +36,7 @@ module ApplicationHelper hreflang: locale.to_s.gsub("_", "-").downcase, href: "#{request.protocol}#{request.host_with_port}/locales/#{locale}" ) - end.join("\n").html_safe + end.join("\n").html_safe # rubocop:disable Rails/OutputSafety end def ng_form_for(name, *args, &) diff --git a/app/helpers/reports_helper.rb b/app/helpers/reports_helper.rb index 2809ac459a..1f9bf91ed7 100644 --- a/app/helpers/reports_helper.rb +++ b/app/helpers/reports_helper.rb @@ -5,7 +5,9 @@ module ReportsHelper order_cycles.map do |oc| orders_open_at = oc.orders_open_at&.to_fs(:short) || 'NA' orders_close_at = oc.orders_close_at&.to_fs(:short) || 'NA' + # rubocop:disable Rails/OutputSafety ["#{oc.name}   (#{orders_open_at} - #{orders_close_at})".html_safe, oc.id] + # rubocop:enable Rails/OutputSafety end end diff --git a/app/helpers/spree/admin/navigation_helper.rb b/app/helpers/spree/admin/navigation_helper.rb index 5b71c2780a..dcdf00a2e7 100644 --- a/app/helpers/spree/admin/navigation_helper.rb +++ b/app/helpers/spree/admin/navigation_helper.rb @@ -98,7 +98,9 @@ module Spree options[:class] = (options[:class].to_s + " icon_link with-tip #{icon_name}").strip options[:class] += ' no-text' if options[:no_text] options[:title] = text if options[:no_text] + # rubocop:disable Rails/OutputSafety text = options[:no_text] ? '' : raw("#{text}") + # rubocop:enable Rails/OutputSafety options.delete(:no_text) link_to(text, url, options) end @@ -138,7 +140,7 @@ module Spree def text_for_button_link(text, _html_options) s = '' s << text - raw(s) + raw(s) # rubocop:disable Rails/OutputSafety end def configurations_sidebar_menu_item(link_text, url, options = {}) diff --git a/app/helpers/spree/admin/orders_helper.rb b/app/helpers/spree/admin/orders_helper.rb index 81f9066f90..700b6bdcb4 100644 --- a/app/helpers/spree/admin/orders_helper.rb +++ b/app/helpers/spree/admin/orders_helper.rb @@ -7,7 +7,7 @@ module Spree links = [] links << cancel_event_link if @order.can_cancel? links << resume_event_link if @order.can_resume? - links.join(' ').html_safe + links.join(' ').html_safe # rubocop:disable Rails/OutputSafety end def line_item_shipment_price(line_item, quantity) diff --git a/app/helpers/spree/admin/zones_helper.rb b/app/helpers/spree/admin/zones_helper.rb index 57a1a639c1..1ad0927b9f 100644 --- a/app/helpers/spree/admin/zones_helper.rb +++ b/app/helpers/spree/admin/zones_helper.rb @@ -31,7 +31,7 @@ module Spree out = '' out << fields.hidden_field(:_destroy) unless fields.object.new_record? out << (link_to icon('icon-remove'), "#", class: 'remove') - out.html_safe + out.html_safe # rubocop:disable Rails/OutputSafety end end end diff --git a/lib/reporting/queries/query_builder.rb b/lib/reporting/queries/query_builder.rb index 0f20f77c19..02e908ab2d 100644 --- a/lib/reporting/queries/query_builder.rb +++ b/lib/reporting/queries/query_builder.rb @@ -11,7 +11,7 @@ module Reporting def initialize(model, grouping_fields = proc { [] }) @grouping_fields = instance_exec(&grouping_fields) - super model.arel_table + super(model.arel_table) end def selecting(lambda) @@ -68,7 +68,9 @@ module Reporting options_text = variant_table[:unit_presentation] unit_to_display = coalesce(nullify_empty_strings(display_as), options_text) + # rubocop:disable Rails/OutputSafety combined_description = sql_concat(display_name, raw("' ('"), unit_to_display, raw("')'")) + # rubocop:enable Rails/OutputSafety Case.new. when(nullify_empty_strings(display_name).eq(nil)).then(unit_to_display). @@ -79,7 +81,8 @@ module Reporting private def default_mask_rule - line_item_table[:order_id].in(raw("#{managed_orders_alias.name}.id")). + id = raw("#{managed_orders_alias.name}.id") # rubocop:disable Rails/OutputSafety + line_item_table[:order_id].in(id). or(distributor_alias[:show_customer_names_to_suppliers].eq(true)) end diff --git a/lib/reporting/queries/query_interface.rb b/lib/reporting/queries/query_interface.rb index 54d818cc9c..c6e7b8a041 100644 --- a/lib/reporting/queries/query_interface.rb +++ b/lib/reporting/queries/query_interface.rb @@ -86,7 +86,7 @@ module Reporting end def empty_string - raw("''") + raw("''") # rubocop:disable Rails/OutputSafety end def sql_concat(*args) diff --git a/lib/spree/money.rb b/lib/spree/money.rb index 968f349b00..4a11d33497 100644 --- a/lib/spree/money.rb +++ b/lib/spree/money.rb @@ -9,7 +9,7 @@ module Spree delegate :cents, to: :money def initialize(amount, options = {}) - @money = ::Monetize.parse([amount, (options[:currency] || Spree::Config[:currency])].join) + @money = ::Monetize.parse([amount, options[:currency] || Spree::Config[:currency]].join) if options.key?(:symbol_position) options[:format] = position_to_format(options.delete(:symbol_position)) @@ -29,7 +29,7 @@ module Spree def to_html(options = { html_wrap: true }) "#{@money.format(@options.merge(options))}" - .html_safe + .html_safe # rubocop:disable Rails/OutputSafety end def format(options = {}) From f99b0b19e7062922e55b5e26864c9c28bc53965b Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 13 Dec 2023 14:21:27 +1100 Subject: [PATCH 009/219] Disable another OutputSafety warning This one is a little more concerning: what if a model error message includes the user-submitted value? But this is for the admin interface only, and I'm not sure if we have model error messages that do that. So it's probably fine (it's certainly been like this a long time already). --- .rubocop_todo.yml | 5 ----- app/helpers/spree/admin/base_helper.rb | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 460e63a892..a5c489dc1b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -520,11 +520,6 @@ Rails/NegateInclude: - 'lib/spree/localized_number.rb' - 'spec/support/matchers/table_matchers.rb' -# Offense count: 16 -Rails/OutputSafety: - Exclude: - - 'app/helpers/spree/admin/base_helper.rb' - # Offense count: 31 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/Pluck: diff --git a/app/helpers/spree/admin/base_helper.rb b/app/helpers/spree/admin/base_helper.rb index de2173c674..cf8bb97e6b 100644 --- a/app/helpers/spree/admin/base_helper.rb +++ b/app/helpers/spree/admin/base_helper.rb @@ -17,7 +17,9 @@ module Spree obj = object.respond_to?(:errors) ? object : instance_variable_get("@#{object}") if obj && obj.errors[method].present? + # rubocop:disable Rails/OutputSafety errors = obj.errors[method].map { |err| h(err) }.join('
').html_safe + # rubocop:enable Rails/OutputSafety content_tag(:span, errors, class: 'formError') else '' From 1038536c39ef51365470c00f8e31e290d8d67efd Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 11 Dec 2023 10:40:45 +0100 Subject: [PATCH 010/219] show warning when a new invoice can be generated --- app/views/spree/admin/invoices/index.html.haml | 4 ++++ config/locales/en.yml | 3 +++ spec/system/admin/order_spec.rb | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/views/spree/admin/invoices/index.html.haml b/app/views/spree/admin/invoices/index.html.haml index c97e7bed1b..2bb9c9b429 100644 --- a/app/views/spree/admin/invoices/index.html.haml +++ b/app/views/spree/admin/invoices/index.html.haml @@ -1,3 +1,7 @@ +- if show_generate_invoice_button?(@order) + .alert-box.warning + =t(:order_has_changed_and_invoice_might_not_be_up_to_date) + = render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Invoices' } diff --git a/config/locales/en.yml b/config/locales/en.yml index 9facc4a793..e55acccfce 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4182,6 +4182,9 @@ See the %{link} to find out more about %{sitename}'s features and to start using line_item_adjustments: "Line Item Adjustments" order_adjustments: "Order Adjustments" order_total: "Order Total" + invoices: + index: + order_has_changed_and_invoice_might_not_be_up_to_date: "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." overview: enterprises_header: ofn_with_tip: Enterprises are Producers and/or Hubs and are the basic unit of organisation within the Open Food Network. diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index 5776adb41a..b9aec514c3 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -1102,12 +1102,14 @@ describe ' expect(page).to have_content "#{customer.first_name} #{customer.last_name} -" expect(page.find("table").text).to have_content(table_header) - # the New invoice button should be visible + # the New invoice button + the warning should be visible expect(page).to have_link "Create or Update Invoice" + expect(page).to have_content "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." click_link "Create or Update Invoice" # and disappear after clicking expect(page).to have_no_link "Create or Update Invoice" + expect(page).to_not have_content "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." # creating an invoice, displays a second row expect(page.find("table").text).to have_content(table_contents) From db653fc945e2123845471ba4dd1bca9abdb81d17 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 13 Nov 2023 10:18:10 +0100 Subject: [PATCH 011/219] render the shipping category in the invoice. --- app/models/invoice/data_presenter/shipping_method.rb | 4 ++++ app/views/spree/admin/orders/_invoice_table4.html.haml | 4 ++-- config/locales/en.yml | 3 ++- spec/system/admin/invoice_print_spec.rb | 6 ++---- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/models/invoice/data_presenter/shipping_method.rb b/app/models/invoice/data_presenter/shipping_method.rb index 2d9ba86015..ed80c9ffa0 100644 --- a/app/models/invoice/data_presenter/shipping_method.rb +++ b/app/models/invoice/data_presenter/shipping_method.rb @@ -5,6 +5,10 @@ class Invoice class ShippingMethod < Invoice::DataPresenter::Base attributes :id, :name, :require_ship_address invoice_generation_attributes :id + + def category + I18n.t "invoice_shipping_category_#{require_ship_address ? 'delivery' : 'pickup'}" + end end end end diff --git a/app/views/spree/admin/orders/_invoice_table4.html.haml b/app/views/spree/admin/orders/_invoice_table4.html.haml index ffd413a4c9..6ec2fc0170 100644 --- a/app/views/spree/admin/orders/_invoice_table4.html.haml +++ b/app/views/spree/admin/orders/_invoice_table4.html.haml @@ -37,8 +37,8 @@ = item.display_amount_with_adjustments_and_with_taxes %tr %td - %strong= "#{t(:shipping)} " - = "( #{t(:invoice_shipping_type)} #{raw(@order.shipping_method.name)} )" + %strong= "#{@order.shipping_method.category} : " + = "(#{raw(@order.shipping_method.name)})" %td{:align => "right"} %td{:align => "right"} %td{:align => "right"} diff --git a/config/locales/en.yml b/config/locales/en.yml index 08cfddd3b9..9926da47b1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1996,7 +1996,8 @@ en: invoice_cancel_and_replace_invoice: "cancels and replaces invoice" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" - invoice_shipping_type: "Type:" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" total_all_tax: "Total tax:" diff --git a/spec/system/admin/invoice_print_spec.rb b/spec/system/admin/invoice_print_spec.rb index 5e51aae36b..cdd126e208 100644 --- a/spec/system/admin/invoice_print_spec.rb +++ b/spec/system/admin/invoice_print_spec.rb @@ -546,8 +546,7 @@ describe ' expect(page).to have_content "#{enterprise_fee.name} fee by $104.35 15.0% $120.00" expect(page).to have_content "coordinator #{user1.enterprises.first.name}" # Shipping - expect(page).to have_content "Shipping ( Type: $91.41 10.0% $100.55" - expect(page).to have_content "#{shipping_method_name} )" + expect(page).to have_content "Delivery :(#{shipping_method_name}) $91.41 10.0% $100.55" # Tax totals expect(page).to have_content "Total tax (10.0%): $9.14 " \ "Total tax (15.0%): $15.65 Total tax (20.0%): $250.08" @@ -650,8 +649,7 @@ describe ' expect(page).to have_content "#{enterprise_fee.name} fee by $120.00 15.0% $138.00" expect(page).to have_content "coordinator #{user1.enterprises.first.name}" # Shipping - expect(page).to have_content "Shipping ( Type: $100.55 10.0% $110.61" - expect(page).to have_content "#{shipping_method_name} )" + expect(page).to have_content "Delivery :(#{shipping_method_name}) $100.55 10.0% $110.61" # Tax totals expect(page).to have_content "Total tax (10.0%): $10.06 " \ "Total tax (15.0%): $18.00 Total tax (20.0%): $300.09" From 82d50f58f391a16b3d396c47abc1a7d8fa0afbee Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Mon, 11 Dec 2023 08:32:48 +0100 Subject: [PATCH 012/219] remove raw from shipping method name --- app/views/spree/admin/orders/_invoice_table4.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/orders/_invoice_table4.html.haml b/app/views/spree/admin/orders/_invoice_table4.html.haml index 6ec2fc0170..d8527c8c29 100644 --- a/app/views/spree/admin/orders/_invoice_table4.html.haml +++ b/app/views/spree/admin/orders/_invoice_table4.html.haml @@ -38,7 +38,7 @@ %tr %td %strong= "#{@order.shipping_method.category} : " - = "(#{raw(@order.shipping_method.name)})" + = "(#{@order.shipping_method.name})" %td{:align => "right"} %td{:align => "right"} %td{:align => "right"} From 2b1d7923dac22bd568219a813d5d189cd1ddca8a Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Thu, 14 Dec 2023 16:20:59 +0100 Subject: [PATCH 013/219] remove ':' after the shipping category on the invoice template --- app/views/spree/admin/orders/_invoice_table4.html.haml | 2 +- spec/system/admin/invoice_print_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/spree/admin/orders/_invoice_table4.html.haml b/app/views/spree/admin/orders/_invoice_table4.html.haml index d8527c8c29..82a7c57d28 100644 --- a/app/views/spree/admin/orders/_invoice_table4.html.haml +++ b/app/views/spree/admin/orders/_invoice_table4.html.haml @@ -37,7 +37,7 @@ = item.display_amount_with_adjustments_and_with_taxes %tr %td - %strong= "#{@order.shipping_method.category} : " + %strong= "#{@order.shipping_method.category} " = "(#{@order.shipping_method.name})" %td{:align => "right"} %td{:align => "right"} diff --git a/spec/system/admin/invoice_print_spec.rb b/spec/system/admin/invoice_print_spec.rb index cdd126e208..790db07849 100644 --- a/spec/system/admin/invoice_print_spec.rb +++ b/spec/system/admin/invoice_print_spec.rb @@ -546,7 +546,7 @@ describe ' expect(page).to have_content "#{enterprise_fee.name} fee by $104.35 15.0% $120.00" expect(page).to have_content "coordinator #{user1.enterprises.first.name}" # Shipping - expect(page).to have_content "Delivery :(#{shipping_method_name}) $91.41 10.0% $100.55" + expect(page).to have_content "Delivery (#{shipping_method_name}) $91.41 10.0% $100.55" # Tax totals expect(page).to have_content "Total tax (10.0%): $9.14 " \ "Total tax (15.0%): $15.65 Total tax (20.0%): $250.08" @@ -649,7 +649,7 @@ describe ' expect(page).to have_content "#{enterprise_fee.name} fee by $120.00 15.0% $138.00" expect(page).to have_content "coordinator #{user1.enterprises.first.name}" # Shipping - expect(page).to have_content "Delivery :(#{shipping_method_name}) $100.55 10.0% $110.61" + expect(page).to have_content "Delivery (#{shipping_method_name}) $100.55 10.0% $110.61" # Tax totals expect(page).to have_content "Total tax (10.0%): $10.06 " \ "Total tax (15.0%): $18.00 Total tax (20.0%): $300.09" From ad809facc67347b2c0ce1205298aadbdd86b31f1 Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 15 Dec 2023 09:55:01 +1100 Subject: [PATCH 014/219] [fixup] Fix translation key The dot indicates lazy lookup Also the name was missing a letter. It was hard to notice because the key name was so long, so I suggest reducing the key to something like 'order_has_changed' --- app/views/spree/admin/invoices/index.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/invoices/index.html.haml b/app/views/spree/admin/invoices/index.html.haml index 2bb9c9b429..d8cf0b47e1 100644 --- a/app/views/spree/admin/invoices/index.html.haml +++ b/app/views/spree/admin/invoices/index.html.haml @@ -1,6 +1,6 @@ - if show_generate_invoice_button?(@order) .alert-box.warning - =t(:order_has_changed_and_invoice_might_not_be_up_to_date) + = t('.order_has_changed_and_invoice_might_not_be_up_to_date') = render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Invoices' } From aebc378aa8603a7e57f956006b9ccd33fe9eca2f Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 15 Dec 2023 09:57:25 +1100 Subject: [PATCH 015/219] [suggestion] Update translation key --- app/views/spree/admin/invoices/index.html.haml | 2 +- config/locales/en.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/spree/admin/invoices/index.html.haml b/app/views/spree/admin/invoices/index.html.haml index d8cf0b47e1..bd56beac5e 100644 --- a/app/views/spree/admin/invoices/index.html.haml +++ b/app/views/spree/admin/invoices/index.html.haml @@ -1,6 +1,6 @@ - if show_generate_invoice_button?(@order) .alert-box.warning - = t('.order_has_changed_and_invoice_might_not_be_up_to_date') + = t('.order_has_changed') = render partial: 'spree/admin/shared/order_page_title' = render partial: 'spree/admin/shared/order_tabs', locals: { current: 'Invoices' } diff --git a/config/locales/en.yml b/config/locales/en.yml index e55acccfce..2315fa48cb 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -4184,7 +4184,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using order_total: "Order Total" invoices: index: - order_has_changed_and_invoice_might_not_be_up_to_date: "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." + order_has_changed: "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." overview: enterprises_header: ofn_with_tip: Enterprises are Producers and/or Hubs and are the basic unit of organisation within the Open Food Network. From af2b65256f1d9a97878883a375793a4cb504d653 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 11 Dec 2023 12:04:29 +1100 Subject: [PATCH 016/219] Add new enterprise settings tab Connected Apps --- app/helpers/admin/enterprises_helper.rb | 1 + .../form/_connected_apps.html.haml | 1 + config/locales/en.yml | 3 ++ lib/open_food_network/feature_toggle.rb | 4 +++ .../admin/enterprises/connected_apps_spec.rb | 30 +++++++++++++++++++ 5 files changed, 39 insertions(+) create mode 100644 app/views/admin/enterprises/form/_connected_apps.html.haml create mode 100644 spec/system/admin/enterprises/connected_apps_spec.rb diff --git a/app/helpers/admin/enterprises_helper.rb b/app/helpers/admin/enterprises_helper.rb index 7201d9f87f..8393c9d779 100644 --- a/app/helpers/admin/enterprises_helper.rb +++ b/app/helpers/admin/enterprises_helper.rb @@ -50,6 +50,7 @@ module Admin { name: 'shop_preferences', icon_class: "icon-shopping-cart", show: is_shop }, { name: 'users', icon_class: "icon-user", show: true }, { name: 'white_label', icon_class: "icon-leaf", show: true }, + { name: 'connected_apps', icon_class: "icon-puzzle-piece", show: feature?(:connected_apps) }, ] end end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml new file mode 100644 index 0000000000..15b48822d8 --- /dev/null +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -0,0 +1 @@ +in progress diff --git a/config/locales/en.yml b/config/locales/en.yml index 9926da47b1..845cf4b1e3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1279,6 +1279,8 @@ en: create_custom_tab: "Create custom tab in shopfront" custom_tab_title: "Title for custom tab" custom_tab_content: "Content for custom tab" + connected_apps: + legend: "Connected apps" actions: edit_profile: Settings properties: Properties @@ -1532,6 +1534,7 @@ en: users: "Users" vouchers: Vouchers white_label: "White Label" + connected_apps: "Connected apps" enterprise_group: primary_details: "Primary Details" users: "Users" diff --git a/lib/open_food_network/feature_toggle.rb b/lib/open_food_network/feature_toggle.rb index f1a075ef8f..feb89bb597 100644 --- a/lib/open_food_network/feature_toggle.rb +++ b/lib/open_food_network/feature_toggle.rb @@ -47,6 +47,10 @@ module OpenFoodNetwork "invoices" => <<~DESC, Preserve the state of generated invoices and enable multiple invoice numbers instead of only one live-updating invoice. DESC + "connected_apps" => <<~DESC, + Enterprise data can be shared with another app. + The first example is the Australian Discover Regenerative Portal. + DESC }.freeze # Features you would like to be enabled to start with. diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb new file mode 100644 index 0000000000..7a10d5af8b --- /dev/null +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +require "system_helper" + +describe "Connected Apps", feature: :connected_apps do + let(:enterprise) { create(:enterprise) } + + before do + login_as enterprise.owner + end + + it "is not visible by default" do + # Assuming that this feature will be the default one day, I'm treating this + # as special case and disable the feature. I don't want to wrap all other + # test cases in a context block for the feature toggle which will need + # removing one day. + Flipper.disable(:connected_apps) + visit edit_admin_enterprise_path(enterprise) + expect(page).to_not have_content "CONNECTED APPS" + end + + it "is visible" do + visit edit_admin_enterprise_path(enterprise) + expect(page).to have_content "CONNECTED APPS" + + scroll_to :bottom + click_link "Connected apps" + expect(page).to have_content "in progress" + end +end From d4ce3965b105c5dcc7cac61c579d46389a14d312 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 11 Dec 2023 13:45:38 +1100 Subject: [PATCH 017/219] Connected apps can be enabled per user or enterprise --- app/helpers/admin/enterprises_helper.rb | 23 +++++++++++++++---- .../admin/enterprises/connected_apps_spec.rb | 11 ++++++++- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/helpers/admin/enterprises_helper.rb b/app/helpers/admin/enterprises_helper.rb index 8393c9d779..e6e6fdec0b 100644 --- a/app/helpers/admin/enterprises_helper.rb +++ b/app/helpers/admin/enterprises_helper.rb @@ -21,15 +21,28 @@ module Admin show_payment_methods = can?(:manage_payment_methods, enterprise) && is_shop show_enterprise_fees = can?(:manage_enterprise_fees, enterprise) && (is_shop || enterprise.is_primary_producer) + show_connected_apps = feature?(:connected_apps, spree_current_user, enterprise) - build_enterprise_side_menu_items(is_shop, show_properties, show_shipping_methods, - show_payment_methods, show_enterprise_fees) + build_enterprise_side_menu_items( + is_shop:, + show_properties:, + show_shipping_methods:, + show_payment_methods:, + show_enterprise_fees:, + show_connected_apps:, + ) end private - def build_enterprise_side_menu_items(is_shop, show_properties, show_shipping_methods, - show_payment_methods, show_enterprise_fees) + def build_enterprise_side_menu_items( + is_shop:, + show_properties:, + show_shipping_methods:, + show_payment_methods:, + show_enterprise_fees:, + show_connected_apps: + ) [ { name: 'primary_details', icon_class: "icon-home", show: true, selected: 'selected' }, { name: 'address', icon_class: "icon-map-marker", show: true }, @@ -50,7 +63,7 @@ module Admin { name: 'shop_preferences', icon_class: "icon-shopping-cart", show: is_shop }, { name: 'users', icon_class: "icon-user", show: true }, { name: 'white_label', icon_class: "icon-leaf", show: true }, - { name: 'connected_apps', icon_class: "icon-puzzle-piece", show: feature?(:connected_apps) }, + { name: 'connected_apps', icon_class: "icon-puzzle-piece", show: show_connected_apps }, ] end end diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index 7a10d5af8b..f9d5fa0950 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -9,7 +9,7 @@ describe "Connected Apps", feature: :connected_apps do login_as enterprise.owner end - it "is not visible by default" do + it "is only visible when enabled" do # Assuming that this feature will be the default one day, I'm treating this # as special case and disable the feature. I don't want to wrap all other # test cases in a context block for the feature toggle which will need @@ -17,6 +17,15 @@ describe "Connected Apps", feature: :connected_apps do Flipper.disable(:connected_apps) visit edit_admin_enterprise_path(enterprise) expect(page).to_not have_content "CONNECTED APPS" + + Flipper.enable(:connected_apps, enterprise.owner) + visit edit_admin_enterprise_path(enterprise) + expect(page).to have_content "CONNECTED APPS" + + Flipper.disable(:connected_apps) + Flipper.enable(:connected_apps, enterprise) + visit edit_admin_enterprise_path(enterprise) + expect(page).to have_content "CONNECTED APPS" end it "is visible" do From ca7b02d3eedf9e666d211a08830c5d5e678943d6 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 11 Dec 2023 16:59:13 +1100 Subject: [PATCH 018/219] Add basic description of Discover Regen app --- .../enterprises/form/_connected_apps.html.haml | 12 +++++++++++- app/webpacker/css/admin/all.scss | 1 + app/webpacker/css/admin/connected_apps.scss | 15 +++++++++++++++ app/webpacker/css/admin_v3/all.scss | 1 + config/locales/en.yml | 11 +++++++++++ .../admin/enterprises/connected_apps_spec.rb | 4 ++-- 6 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 app/webpacker/css/admin/connected_apps.scss diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 15b48822d8..91ffce0db3 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -1 +1,11 @@ -in progress +%div + .connected-app__head + %div + %h3= t ".title" + %p= t ".tagline" + %div + %button + = t ".action" + %hr + .connected-app__description + = t ".description_html" diff --git a/app/webpacker/css/admin/all.scss b/app/webpacker/css/admin/all.scss index 075fe06797..942e7422e4 100644 --- a/app/webpacker/css/admin/all.scss +++ b/app/webpacker/css/admin/all.scss @@ -83,6 +83,7 @@ @import "alert"; @import "animations"; @import "change_type_form"; +@import "connected_apps"; @import "customers"; @import "dashboard_item"; @import "dashboard-single-ent"; diff --git a/app/webpacker/css/admin/connected_apps.scss b/app/webpacker/css/admin/connected_apps.scss new file mode 100644 index 0000000000..25be555a64 --- /dev/null +++ b/app/webpacker/css/admin/connected_apps.scss @@ -0,0 +1,15 @@ +.connected-app__head { + display: flex; + justify-content: space-between; + margin-bottom: 1em; + + h3 { + margin-bottom: 1em; + } +} + +.connected-app__description { + p { + margin-bottom: 1em; + } +} diff --git a/app/webpacker/css/admin_v3/all.scss b/app/webpacker/css/admin_v3/all.scss index 6e4fe6b7bb..a8125ef1f5 100644 --- a/app/webpacker/css/admin_v3/all.scss +++ b/app/webpacker/css/admin_v3/all.scss @@ -87,6 +87,7 @@ @import "../admin/alert"; @import "../admin/animations"; @import "pages/change_type_form"; // admin_v3 +@import "../admin/connected_apps"; @import "../admin/customers"; @import "dashboard/dashboard_item"; // admin_v3 @import "pages/dashboard-single-ent"; // admin_v3 diff --git a/config/locales/en.yml b/config/locales/en.yml index 845cf4b1e3..aea6a6f337 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1281,6 +1281,17 @@ en: custom_tab_content: "Content for custom tab" connected_apps: legend: "Connected apps" + title: "Discover Regenerative" + tagline: "Allow website to publish your enterprise information." + action: "Share data" + description_html: | +

+ Discover Regenerative makes it easier for buyers to discover + regenerative produce for their procurement, showcase producers that + are using regenerative farming practices, support connection + between buyers and producers within a trusted network. +

+

Visit website

actions: edit_profile: Settings properties: Properties diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index f9d5fa0950..a8a2e32e80 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -30,10 +30,10 @@ describe "Connected Apps", feature: :connected_apps do it "is visible" do visit edit_admin_enterprise_path(enterprise) - expect(page).to have_content "CONNECTED APPS" scroll_to :bottom click_link "Connected apps" - expect(page).to have_content "in progress" + expect(page).to have_content "Discover Regenerative" + expect(page).to have_button "Share data" end end From 2346f03b6ff4348493697b9795db4c20a04c107f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 13 Dec 2023 14:44:19 +1100 Subject: [PATCH 019/219] Add ConnectedApp model --- app/models/connected_app.rb | 8 +++++++ .../20231213054115_create_connected_apps.rb | 12 +++++++++++ db/schema.rb | 9 ++++++++ spec/models/connected_app_spec.rb | 21 +++++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 app/models/connected_app.rb create mode 100644 db/migrate/20231213054115_create_connected_apps.rb create mode 100644 spec/models/connected_app_spec.rb diff --git a/app/models/connected_app.rb b/app/models/connected_app.rb new file mode 100644 index 0000000000..0553bbffa2 --- /dev/null +++ b/app/models/connected_app.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +# An enterprise can be connected to other apps. +# +# Here we store keys and links to access the app. +class ConnectedApp < ApplicationRecord + belongs_to :enterprise +end diff --git a/db/migrate/20231213054115_create_connected_apps.rb b/db/migrate/20231213054115_create_connected_apps.rb new file mode 100644 index 0000000000..73fcdbf9d6 --- /dev/null +++ b/db/migrate/20231213054115_create_connected_apps.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class CreateConnectedApps < ActiveRecord::Migration[7.0] + def change + create_table :connected_apps do |t| + t.belongs_to :enterprise, foreign_key: true + t.json :data + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 7e782b8747..c73b14ac7a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -63,6 +63,14 @@ ActiveRecord::Schema[7.0].define(version: 20231003000823494) do t.index ["user_id", "action_name", "column_name"], name: "index_column_prefs_on_user_id_and_action_name_and_column_name", unique: true end + create_table "connected_apps", force: :cascade do |t| + t.bigint "enterprise_id" + t.json "data" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["enterprise_id"], name: "index_connected_apps_on_enterprise_id" + end + create_table "coordinator_fees", id: :serial, force: :cascade do |t| t.integer "order_cycle_id", null: false t.integer "enterprise_fee_id", null: false @@ -1101,6 +1109,7 @@ ActiveRecord::Schema[7.0].define(version: 20231003000823494) do add_foreign_key "active_storage_variant_records", "active_storage_blobs", column: "blob_id" add_foreign_key "adjustment_metadata", "enterprises", name: "adjustment_metadata_enterprise_id_fk" add_foreign_key "adjustment_metadata", "spree_adjustments", column: "adjustment_id", name: "adjustment_metadata_adjustment_id_fk", on_delete: :cascade + add_foreign_key "connected_apps", "enterprises" add_foreign_key "coordinator_fees", "enterprise_fees", name: "coordinator_fees_enterprise_fee_id_fk" add_foreign_key "coordinator_fees", "order_cycles", name: "coordinator_fees_order_cycle_id_fk" add_foreign_key "custom_tabs", "enterprises", on_delete: :cascade diff --git a/spec/models/connected_app_spec.rb b/spec/models/connected_app_spec.rb new file mode 100644 index 0000000000..57dd56d4c3 --- /dev/null +++ b/spec/models/connected_app_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ConnectedApp, type: :model do + it { is_expected.to belong_to :enterprise } + + it "stores data as json hash" do + # This functionality is just Rails and would usually not warrant a spec but + # it's the first time we use the json datatype in this codebase and + # therefore it's a nice example to see how it works. + expect(subject.data).to eq nil + + subject.enterprise = create(:enterprise) + subject.data = { link: "https://example.net" } + subject.save! + subject.reload + + expect(subject.data).to eq({ "link" => "https://example.net" }) + end +end From 4eb273b06ed941154b040962215620d0e23a7356 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 13 Dec 2023 17:00:04 +1100 Subject: [PATCH 020/219] Create ConnectedApp with a reflex I would have like to use a standard form to submit to the reflex but the whole enterprise settings tab is in a form already and HTML doesn't allow nested forms. While it does still work in browsers, it would have added much more HTML to set up a form with a hidden input field instead of just one additional data attribute. The whole page is rendered by the controller again but the reflex root attribute ensures that only parts of this tab are replaced. Otherwise unsaved data on other tabs could be replaced and the page actually becomes blank because AngularJS doesn't play well with the morph. --- app/models/enterprise.rb | 1 + app/reflexes/admin/connected_app_reflex.rb | 11 +++++++++++ .../admin/enterprises/form/_connected_apps.html.haml | 12 +++++++++--- app/webpacker/css/admin/connected_apps.scss | 10 ++++++++++ config/locales/en.yml | 3 +++ spec/system/admin/enterprises/connected_apps_spec.rb | 7 +++++-- 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 app/reflexes/admin/connected_app_reflex.rb diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index bd9aedbc93..7f9ab5a965 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -62,6 +62,7 @@ class Enterprise < ApplicationRecord has_many :tag_rules, dependent: :destroy has_one :stripe_account, dependent: :destroy has_many :vouchers + has_many :connected_apps, dependent: :destroy has_one :custom_tab, dependent: :destroy delegate :latitude, :longitude, :city, :state_name, to: :address diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb new file mode 100644 index 0000000000..eb4c9abe5e --- /dev/null +++ b/app/reflexes/admin/connected_app_reflex.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +module Admin + class ConnectedAppReflex < ApplicationReflex + def create + enterprise = Enterprise.find(element.dataset.enterprise_id) + authorize! :admin, enterprise + ConnectedApp.create!(enterprise_id: enterprise.id) + end + end +end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 91ffce0db3..7ca2b5cfd3 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -1,11 +1,17 @@ -%div +%div{ data: {reflex: {root: ".connected-app__head, .connected-app__connection"}} } .connected-app__head %div %h3= t ".title" %p= t ".tagline" %div - %button - = t ".action" + - if @enterprise.connected_apps.empty? + %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: @enterprise.id} } + = t ".action" + .connected-app__connection + - if @enterprise.connected_apps.present? + .connected-app__note + = t ".note" + %hr .connected-app__description = t ".description_html" diff --git a/app/webpacker/css/admin/connected_apps.scss b/app/webpacker/css/admin/connected_apps.scss index 25be555a64..205c6c0d6c 100644 --- a/app/webpacker/css/admin/connected_apps.scss +++ b/app/webpacker/css/admin/connected_apps.scss @@ -13,3 +13,13 @@ margin-bottom: 1em; } } + +.connected-app__note { + background-color: #f8f9fa; + border: none; + border-left: 4px solid #008397; + border-radius: 4px; + box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.05), 0px 2px 2px rgba(0, 0, 0, 0.07); + margin: 2em 0; + padding: 0.5em 1em; +} diff --git a/config/locales/en.yml b/config/locales/en.yml index aea6a6f337..8cf2d41487 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1284,6 +1284,9 @@ en: title: "Discover Regenerative" tagline: "Allow website to publish your enterprise information." action: "Share data" + note: | + In order for this enterprise to be published, you need to include + regenerative details and accept the Terms and Conditions. description_html: |

Discover Regenerative makes it easier for buyers to discover diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index a8a2e32e80..b9e0f2cb9c 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -28,12 +28,15 @@ describe "Connected Apps", feature: :connected_apps do expect(page).to have_content "CONNECTED APPS" end - it "is visible" do + it "can be enabled" do visit edit_admin_enterprise_path(enterprise) scroll_to :bottom click_link "Connected apps" expect(page).to have_content "Discover Regenerative" - expect(page).to have_button "Share data" + + click_button "Share data" + expect(page).to_not have_button "Share data" + expect(page).to have_content "include regenerative details" end end From 12e5a0d1e1d606ee185644745a126afd0b38ffe0 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 14 Dec 2023 12:21:11 +1100 Subject: [PATCH 021/219] Query webhook to connect app --- app/jobs/connect_app_job.rb | 15 ++++++ app/jobs/webhook_delivery_job.rb | 2 + app/reflexes/admin/connected_app_reflex.rb | 3 +- .../stores_connection_data_on_the_app.yml | 54 +++++++++++++++++++ spec/jobs/connect_app_job_spec.rb | 19 +++++++ 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 app/jobs/connect_app_job.rb create mode 100644 spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml create mode 100644 spec/jobs/connect_app_job_spec.rb diff --git a/app/jobs/connect_app_job.rb b/app/jobs/connect_app_job.rb new file mode 100644 index 0000000000..f439f3b46e --- /dev/null +++ b/app/jobs/connect_app_job.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class ConnectAppJob < ApplicationJob + def perform(app, token) + url = "https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise" + event = "connect-app" + payload = { + enterprise_id: app.enterprise_id, + access_token: token, + } + + response = WebhookDeliveryJob.perform_now(url, event, payload) + app.update!(data: JSON.parse(response)) + end +end diff --git a/app/jobs/webhook_delivery_job.rb b/app/jobs/webhook_delivery_job.rb index 6de75361dd..1196e6a1d6 100644 --- a/app/jobs/webhook_delivery_job.rb +++ b/app/jobs/webhook_delivery_job.rb @@ -46,5 +46,7 @@ class WebhookDeliveryJob < ApplicationJob # Raise a failed request error and let job runner handle retrying. # In theory, only 5xx errors should be retried, but who knows. raise FailedWebhookRequestError, response.status.to_s unless response.success? + + response.body end end diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb index eb4c9abe5e..9f125f18eb 100644 --- a/app/reflexes/admin/connected_app_reflex.rb +++ b/app/reflexes/admin/connected_app_reflex.rb @@ -5,7 +5,8 @@ module Admin def create enterprise = Enterprise.find(element.dataset.enterprise_id) authorize! :admin, enterprise - ConnectedApp.create!(enterprise_id: enterprise.id) + app = ConnectedApp.create!(enterprise_id: enterprise.id) + ConnectAppJob.perform_later(app, current_user.spree_api_key) end end end diff --git a/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml b/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml new file mode 100644 index 0000000000..044cb90175 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml @@ -0,0 +1,54 @@ +--- +http_interactions: +- request: + method: post + uri: https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise + body: + encoding: UTF-8 + string: '{"id":"6efbbeea-4078-4bb5-88b1-c8dbf599c520","at":"2023-12-14 12:13:39 + +1100","event":"connect-app","data":{"enterprise_id":23,"access_token":"b5fa8c7fa1dd5331a2111fcc907040d842c5eb928c512e43"}}' + headers: + User-Agent: + - openfoodnetwork_webhook/1.0 + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 14 Dec 2023 01:13:41 GMT + Content-Type: + - text/html; charset=utf-8 + Content-Length: + - '35' + Connection: + - keep-alive + Etag: + - W/"23-GW39X6dSljjgz4GPY7ICa+eNupE" + Vary: + - Accept-Encoding + Strict-Transport-Security: + - max-age=63072000 + X-Xss-Protection: + - 1; mode=block + X-Download-Options: + - noopen + X-Content-Type-Options: + - nosniff + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - same-origin + body: + encoding: UTF-8 + string: '{"link":"https://example.net/edit"}' + recorded_at: Thu, 14 Dec 2023 01:13:40 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/jobs/connect_app_job_spec.rb b/spec/jobs/connect_app_job_spec.rb new file mode 100644 index 0000000000..9433c0d71c --- /dev/null +++ b/spec/jobs/connect_app_job_spec.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe ConnectAppJob, type: :job, vcr: true do + subject { ConnectAppJob.new(app, token) } + + let(:app) { ConnectedApp.create!(enterprise: ) } + let(:enterprise) { create(:enterprise) } + let(:token) { enterprise.owner.spree_api_key } + + before { enterprise.owner.generate_api_key } + + it "stores connection data on the app" do + subject.perform_now + + expect(app.data).to eq({ "link" => "https://example.net/edit" }) + end +end From e1730f25d6eb3da15a37327be097d957bb3c4d05 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 14 Dec 2023 12:57:28 +1100 Subject: [PATCH 022/219] Show app connection state and update link --- .../form/_connected_apps.html.haml | 12 ++++- app/webpacker/css/admin/connected_apps.scss | 12 +++++ config/locales/en.yml | 2 + .../Connected_Apps/can_be_enabled.yml | 54 +++++++++++++++++++ .../admin/enterprises/connected_apps_spec.rb | 7 ++- 5 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 7ca2b5cfd3..8298c1307c 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -10,7 +10,17 @@ .connected-app__connection - if @enterprise.connected_apps.present? .connected-app__note - = t ".note" + - link = @enterprise.connected_apps[0].data&.fetch("link", false) + - if link + %p= t ".note" + %div + %a{ href: link, target: "_blank", class: "button" } + = t ".link_label" + - else + %p + %i.spinner.fa.fa-spin.fa-circle-o-notch +   + = t ".saving_changes" %hr .connected-app__description diff --git a/app/webpacker/css/admin/connected_apps.scss b/app/webpacker/css/admin/connected_apps.scss index 205c6c0d6c..b487089182 100644 --- a/app/webpacker/css/admin/connected_apps.scss +++ b/app/webpacker/css/admin/connected_apps.scss @@ -15,6 +15,9 @@ } .connected-app__note { + display: flex; + justify-content: space-between; + background-color: #f8f9fa; border: none; border-left: 4px solid #008397; @@ -22,4 +25,13 @@ box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.05), 0px 2px 2px rgba(0, 0, 0, 0.07); margin: 2em 0; padding: 0.5em 1em; + + align-items: center; + gap: 1em; + * { + flex-shrink: 0; + } + p { + flex-shrink: 1; + } } diff --git a/config/locales/en.yml b/config/locales/en.yml index 8cf2d41487..b9df0ba1f9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1284,9 +1284,11 @@ en: title: "Discover Regenerative" tagline: "Allow website to publish your enterprise information." action: "Share data" + saving_changes: "Saving changes" note: | In order for this enterprise to be published, you need to include regenerative details and accept the Terms and Conditions. + link_label: "Update details" description_html: |

Discover Regenerative makes it easier for buyers to discover diff --git a/spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml b/spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml new file mode 100644 index 0000000000..b968963b7b --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml @@ -0,0 +1,54 @@ +--- +http_interactions: +- request: + method: post + uri: https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise + body: + encoding: UTF-8 + string: '{"id":"4da377c8-0c8f-4aaa-8f85-f2a218a13d6e","at":"2023-12-14 12:52:53 + +1100","event":"connect-app","data":{"enterprise_id":45,"access_token":"2c5f828a1da2f5a87798e6d3ee44daee6729b2963db6d264"}}' + headers: + User-Agent: + - openfoodnetwork_webhook/1.0 + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 14 Dec 2023 01:52:55 GMT + Content-Type: + - text/html; charset=utf-8 + Content-Length: + - '35' + Connection: + - keep-alive + Etag: + - W/"23-GW39X6dSljjgz4GPY7ICa+eNupE" + Vary: + - Accept-Encoding + Strict-Transport-Security: + - max-age=63072000 + X-Xss-Protection: + - 1; mode=block + X-Download-Options: + - noopen + X-Content-Type-Options: + - nosniff + X-Permitted-Cross-Domain-Policies: + - none + Referrer-Policy: + - same-origin + body: + encoding: UTF-8 + string: '{"link":"https://example.net/edit"}' + recorded_at: Thu, 14 Dec 2023 01:52:55 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index b9e0f2cb9c..f7b2ddb81e 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "Connected Apps", feature: :connected_apps do +describe "Connected Apps", feature: :connected_apps, vcr: true do let(:enterprise) { create(:enterprise) } before do @@ -37,6 +37,11 @@ describe "Connected Apps", feature: :connected_apps do click_button "Share data" expect(page).to_not have_button "Share data" + expect(page).to have_content "Saving changes" + + perform_enqueued_jobs(only: ConnectAppJob) + page.refresh # TODO: update via cable_ready expect(page).to have_content "include regenerative details" + expect(page).to have_link "Update details" end end From 1d7f96e965c61e5ce2a31a3f334c9792d5c244fd Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 14 Dec 2023 16:11:03 +1100 Subject: [PATCH 023/219] Broadcast connected app to all user tabs --- app/jobs/connect_app_job.rb | 17 +++++++++++++++-- app/reflexes/admin/connected_app_reflex.rb | 6 +++++- .../enterprises/form/_connected_apps.html.haml | 9 +++++---- .../admin/enterprises/connected_apps_spec.rb | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/jobs/connect_app_job.rb b/app/jobs/connect_app_job.rb index f439f3b46e..5be6b4f56a 100644 --- a/app/jobs/connect_app_job.rb +++ b/app/jobs/connect_app_job.rb @@ -1,15 +1,28 @@ # frozen_string_literal: true class ConnectAppJob < ApplicationJob - def perform(app, token) + include CableReady::Broadcaster + + def perform(app, token, channel: nil) url = "https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise" event = "connect-app" + enterprise = app.enterprise payload = { - enterprise_id: app.enterprise_id, + enterprise_id: enterprise.id, access_token: token, } response = WebhookDeliveryJob.perform_now(url, event, payload) app.update!(data: JSON.parse(response)) + + return unless channel + + selector = "#edit_enterprise_#{enterprise.id} #connected_apps_panel div" + html = ApplicationController.render( + partial: "admin/enterprises/form/connected_apps", + locals: { enterprise: }, + ) + + cable_ready[channel].morph(selector:, html:).broadcast end end diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb index 9f125f18eb..50f0df0e32 100644 --- a/app/reflexes/admin/connected_app_reflex.rb +++ b/app/reflexes/admin/connected_app_reflex.rb @@ -6,7 +6,11 @@ module Admin enterprise = Enterprise.find(element.dataset.enterprise_id) authorize! :admin, enterprise app = ConnectedApp.create!(enterprise_id: enterprise.id) - ConnectAppJob.perform_later(app, current_user.spree_api_key) + + ConnectAppJob.perform_later( + app, current_user.spree_api_key, + channel: SessionChannel.for_request(request), + ) end end end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 8298c1307c..a370b91380 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -1,16 +1,17 @@ +- enterprise ||= f.object %div{ data: {reflex: {root: ".connected-app__head, .connected-app__connection"}} } .connected-app__head %div %h3= t ".title" %p= t ".tagline" %div - - if @enterprise.connected_apps.empty? - %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: @enterprise.id} } + - if enterprise.connected_apps.empty? + %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: enterprise.id} } = t ".action" .connected-app__connection - - if @enterprise.connected_apps.present? + - if enterprise.connected_apps.present? .connected-app__note - - link = @enterprise.connected_apps[0].data&.fetch("link", false) + - link = enterprise.connected_apps[0].data&.fetch("link", false) - if link %p= t ".note" %div diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index f7b2ddb81e..b10ef466cb 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -40,7 +40,7 @@ describe "Connected Apps", feature: :connected_apps, vcr: true do expect(page).to have_content "Saving changes" perform_enqueued_jobs(only: ConnectAppJob) - page.refresh # TODO: update via cable_ready + expect(page).to_not have_content "Saving changes" expect(page).to have_content "include regenerative details" expect(page).to have_link "Update details" end From 35ca66cbb73473765b80fbda7448f14ad6d0e414 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 15 Dec 2023 12:19:22 +1100 Subject: [PATCH 024/219] Respond fast by rendering only partial --- app/jobs/connect_app_job.rb | 2 +- app/reflexes/admin/connected_app_reflex.rb | 10 ++++++++++ .../admin/enterprises/form/_connected_apps.html.haml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/jobs/connect_app_job.rb b/app/jobs/connect_app_job.rb index 5be6b4f56a..2db9826508 100644 --- a/app/jobs/connect_app_job.rb +++ b/app/jobs/connect_app_job.rb @@ -17,7 +17,7 @@ class ConnectAppJob < ApplicationJob return unless channel - selector = "#edit_enterprise_#{enterprise.id} #connected_apps_panel div" + selector = "#edit_enterprise_#{enterprise.id} #connected-app-discover-regen" html = ApplicationController.render( partial: "admin/enterprises/form/connected_apps", locals: { enterprise: }, diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb index 50f0df0e32..8bfb83d562 100644 --- a/app/reflexes/admin/connected_app_reflex.rb +++ b/app/reflexes/admin/connected_app_reflex.rb @@ -7,10 +7,20 @@ module Admin authorize! :admin, enterprise app = ConnectedApp.create!(enterprise_id: enterprise.id) + selector = "#edit_enterprise_#{enterprise.id} #connected-app-discover-regen" + html = ApplicationController.render( + partial: "admin/enterprises/form/connected_apps", + locals: { enterprise: }, + ) + + # Avoid race condition by sending before enqueuing job: + cable_ready.morph(selector:, html:).broadcast + ConnectAppJob.perform_later( app, current_user.spree_api_key, channel: SessionChannel.for_request(request), ) + morph :nothing end end end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index a370b91380..ae816b9999 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -1,5 +1,5 @@ - enterprise ||= f.object -%div{ data: {reflex: {root: ".connected-app__head, .connected-app__connection"}} } +#connected-app-discover-regen .connected-app__head %div %h3= t ".title" From f758daadc06f41d06fb38e12cc0bc4b1f9aa5d11 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 15 Dec 2023 16:21:43 +1100 Subject: [PATCH 025/219] Use common colours in old and new design --- app/webpacker/css/admin/connected_apps.scss | 6 +++--- app/webpacker/css/admin/globals/palette.scss | 1 + app/webpacker/css/admin_v3/globals/palette.scss | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/webpacker/css/admin/connected_apps.scss b/app/webpacker/css/admin/connected_apps.scss index b487089182..efcf8d16f3 100644 --- a/app/webpacker/css/admin/connected_apps.scss +++ b/app/webpacker/css/admin/connected_apps.scss @@ -18,10 +18,10 @@ display: flex; justify-content: space-between; - background-color: #f8f9fa; + background-color: $color-14; border: none; - border-left: 4px solid #008397; - border-radius: 4px; + border-left: $border-radius solid $color-3; + border-radius: $border-radius; box-shadow: 0px 1px 0px rgba(0, 0, 0, 0.05), 0px 2px 2px rgba(0, 0, 0, 0.07); margin: 2em 0; padding: 0.5em 1em; diff --git a/app/webpacker/css/admin/globals/palette.scss b/app/webpacker/css/admin/globals/palette.scss index b591605326..5a64d064f7 100644 --- a/app/webpacker/css/admin/globals/palette.scss +++ b/app/webpacker/css/admin/globals/palette.scss @@ -13,6 +13,7 @@ $color-3: $spree-blue !default; // Light Blue $color-4: #6788a2 !default; // Dark Blue $color-5: #c60f13 !default; // Red $color-6: #ff9300 !default; // Yellow +$color-14: #f8f9fa !default; // Lighter grey $dark-grey: #333; $light-grey: #ddd; diff --git a/app/webpacker/css/admin_v3/globals/palette.scss b/app/webpacker/css/admin_v3/globals/palette.scss index 59b3c88c3a..7779028ad4 100644 --- a/app/webpacker/css/admin_v3/globals/palette.scss +++ b/app/webpacker/css/admin_v3/globals/palette.scss @@ -34,3 +34,4 @@ $color-10: $orient; $color-11: $mystic; $color-12: $fair-pink; $color-13: $roof-terracotta; +$color-14: $lighter-grey; From 7f0a4613857f55c4991d91d15f9c70531e15377b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Dec 2023 09:11:11 +0000 Subject: [PATCH 026/219] Bump stripe from 10.2.0 to 10.3.0 Bumps [stripe](https://github.com/stripe/stripe-ruby) from 10.2.0 to 10.3.0. - [Release notes](https://github.com/stripe/stripe-ruby/releases) - [Changelog](https://github.com/stripe/stripe-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/stripe/stripe-ruby/compare/v10.2.0...v10.3.0) --- updated-dependencies: - dependency-name: stripe dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 42e8df0c82..f84f78ee60 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -725,7 +725,7 @@ GEM stimulus_reflex (>= 3.3.0) stringex (2.8.6) stringio (3.1.0) - stripe (10.2.0) + stripe (10.3.0) swd (1.3.0) activesupport (>= 3) attr_required (>= 0.0.5) From f8f85e7fbdc5dd3c4105bbd0a0426b6b7f1dbd14 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 5 Dec 2023 18:09:59 +0000 Subject: [PATCH 027/219] Adds I18n exception handler as test initializer As per code review, we follow this approach https://sikac.hu/missing-translations-keys-gotta-catch-em-all-3aa8d2ead8bd --- config/initializers/test.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 config/initializers/test.rb diff --git a/config/initializers/test.rb b/config/initializers/test.rb new file mode 100644 index 0000000000..af1f0f4479 --- /dev/null +++ b/config/initializers/test.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true + +I18n.exception_handler = Proc.new do |exception, *_| + raise exception.to_exception +end \ No newline at end of file From 57aa151ddd5a8f219a91024c9f4543e48dc5240b Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 14 Dec 2023 11:41:49 +0000 Subject: [PATCH 028/219] Comments out default values from superadmin fields to bring the build back to green --- app/models/content_configuration.rb | 34 ++++++++++++++++------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/app/models/content_configuration.rb b/app/models/content_configuration.rb index 9276e97a4c..bdd4b4abf1 100644 --- a/app/models/content_configuration.rb +++ b/app/models/content_configuration.rb @@ -23,25 +23,29 @@ class ContentConfiguration < Spree::Preferences::Configuration # Producer sign-up page # All the following defaults using I18n don't work. # https://github.com/openfoodfoundation/openfoodnetwork/issues/3816 - preference :producer_signup_pricing_table_html, :text, - default: I18n.t(:content_configuration_pricing_table) - preference :producer_signup_case_studies_html, :text, - default: I18n.t(:content_configuration_case_studies) - preference :producer_signup_detail_html, :text, default: I18n.t(:content_configuration_detail) + # default values for these fields are commented out below + preference :producer_signup_pricing_table_html, :text + # default: I18n.t(:content_configuration_pricing_table) + preference :producer_signup_case_studies_html, :text + # default: I18n.t(:content_configuration_case_studies) + preference :producer_signup_detail_html, :text + # default: I18n.t(:content_configuration_detail) # Hubs sign-up page - preference :hub_signup_pricing_table_html, :text, - default: I18n.t(:content_configuration_pricing_table) - preference :hub_signup_case_studies_html, :text, - default: I18n.t(:content_configuration_case_studies) - preference :hub_signup_detail_html, :text, default: I18n.t(:content_configuration_detail) + preference :hub_signup_pricing_table_html, :text + # default: I18n.t(:content_configuration_pricing_table) + preference :hub_signup_case_studies_html, :text + # default: I18n.t(:content_configuration_case_studies) + preference :hub_signup_detail_html, :text + # default: I18n.t(:content_configuration_detail) # Groups sign-up page - preference :group_signup_pricing_table_html, :text, - default: I18n.t(:content_configuration_pricing_table) - preference :group_signup_case_studies_html, :text, - default: I18n.t(:content_configuration_case_studies) - preference :group_signup_detail_html, :text, default: I18n.t(:content_configuration_detail) + preference :group_signup_pricing_table_html, :text + # default: I18n.t(:content_configuration_pricing_table) + preference :group_signup_case_studies_html, :text + # default: I18n.t(:content_configuration_case_studies) + preference :group_signup_detail_html, :text + # default: I18n.t(:content_configuration_detail) # Main URLs preference :menu_1, :boolean, default: true From 264b6e072ee09cb629615c35e930665367620cfb Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 15 Dec 2023 13:15:51 +0000 Subject: [PATCH 029/219] Adds missing translation key --- config/locales/en.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/config/locales/en.yml b/config/locales/en.yml index 9facc4a793..a7b75605fe 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -951,6 +951,7 @@ en: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name From ba7ffc25fe583bd956d6b8e2e46a4ba99d008257 Mon Sep 17 00:00:00 2001 From: Dusan Orlovic Date: Thu, 9 Nov 2023 09:37:29 +0100 Subject: [PATCH 030/219] Add data-action=tabs-and-panels --- app/views/shop/messages/_customer_required.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/shop/messages/_customer_required.html.haml b/app/views/shop/messages/_customer_required.html.haml index 8943568258..f5f9f9f5c8 100644 --- a/app/views/shop/messages/_customer_required.html.haml +++ b/app/views/shop/messages/_customer_required.html.haml @@ -8,6 +8,6 @@ %p = t('.require_login_link_html', login: ('' + t('.login') + '').html_safe) %p - = t('.require_login_2_html', contact: link_to(t('.contact'), '#contact'), enterprise: current_distributor.name) + = t('.require_login_2_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, id: "contact"), enterprise: current_distributor.name) - else - = t('.require_customer_html', contact: link_to(t('.contact'), '#contact'), enterprise: current_distributor.name) + = t('.require_customer_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, id: "contact"), enterprise: current_distributor.name) From 120e2996534dbfaeb75681cd623443c3049f51d4 Mon Sep 17 00:00:00 2001 From: Dusan Orlovic Date: Tue, 14 Nov 2023 07:40:07 +0100 Subject: [PATCH 031/219] Use activate instead of changeActivePanel/ChangeActiveTab Remove shop-tabs controllers since we can listen on `"data-action": "orderCycleSelected@window->tabs-and-panels#activateDefaultPanel"` Test for cases: * activate by clicking on tab * activateDefaultPanel on orderCycleSelected event * activateFromWindowLocationOrDefaultPanelTarget to activate tab based on achor in URL --- .../templates/partials/hub_details.html.haml | 2 +- .../partials/producer_details.html.haml | 2 +- app/helpers/shared_helper.rb | 2 +- app/views/admin/shared/_side_menu.html.haml | 4 +- .../messages/_customer_required.html.haml | 4 +- app/views/shopping_shared/_tabs.html.haml | 4 +- .../orders/form/_update_buttons.html.haml | 2 +- .../controllers/shop_tabs_controller.js | 22 -- .../controllers/tabs_and_panels_controller.js | 105 +++------ .../tabs_and_panels_controller_test.js | 213 ++++++++++-------- spec/system/admin/enterprises_spec.rb | 28 +-- 11 files changed, 170 insertions(+), 218 deletions(-) delete mode 100644 app/webpacker/controllers/shop_tabs_controller.js diff --git a/app/assets/javascripts/templates/partials/hub_details.html.haml b/app/assets/javascripts/templates/partials/hub_details.html.haml index 9ecaef9493..d9fb935f2a 100644 --- a/app/assets/javascripts/templates/partials/hub_details.html.haml +++ b/app/assets/javascripts/templates/partials/hub_details.html.haml @@ -14,7 +14,7 @@ {{'hubs_delivery' | t}} .row .columns.small-12 - %a.cta-hub{"ng-href" => "{{::enterprise.path}}#/shop", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined}}", + %a.cta-hub{"ng-href" => "{{::enterprise.path}}#/shop_panel", "ng-attr-target" => "{{ embedded_layout ? '_blank' : undefined}}", "ng-class" => "{primary: enterprise.active, secondary: !enterprise.active}", "ng-click" => "$close()", "ofn-change-hub" => "enterprise"} diff --git a/app/assets/javascripts/templates/partials/producer_details.html.haml b/app/assets/javascripts/templates/partials/producer_details.html.haml index 0e4bf23513..814e55b241 100644 --- a/app/assets/javascripts/templates/partials/producer_details.html.haml +++ b/app/assets/javascripts/templates/partials/producer_details.html.haml @@ -12,7 +12,7 @@ .row .columns.small-12 %a.cta-hub{"ng-repeat" => "hub in enterprise.hubs | filter:{id: '!'+enterprise.id} | orderBy:'-active'", - "ng-href" => "{{::hub.path}}#/shop", "ofn-empties-cart" => "hub", + "ng-href" => "{{::hub.path}}#/shop_panel", "ofn-empties-cart" => "hub", "ng-class" => "::{primary: hub.active, secondary: !hub.active}", "ng-click" => "$close()", "ofn-change-hub" => "hub"} diff --git a/app/helpers/shared_helper.rb b/app/helpers/shared_helper.rb index b1f51ab004..17bd12adbe 100644 --- a/app/helpers/shared_helper.rb +++ b/app/helpers/shared_helper.rb @@ -20,6 +20,6 @@ module SharedHelper end def current_shop_products_path - "#{main_app.enterprise_shop_path(current_distributor)}#/shop" + "#{main_app.enterprise_shop_path(current_distributor)}#/shop_panel" end end diff --git a/app/views/admin/shared/_side_menu.html.haml b/app/views/admin/shared/_side_menu.html.haml index 6240519f28..168add17ce 100644 --- a/app/views/admin/shared/_side_menu.html.haml +++ b/app/views/admin/shared/_side_menu.html.haml @@ -2,12 +2,12 @@ - if @enterprise - enterprise_side_menu_items(@enterprise).each do |item| - next if !item[:show] || (item[:name] == 'vouchers' && !feature?(:vouchers, spree_current_user, @enterprise)) - %a.menu_item{ href: item[:href] || "##{item[:name]}_panel", id: item[:name], data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, class: item[:selected] } + %a.menu_item{ href: item[:href] || "##{item[:name]}_panel", data: { action: "tabs-and-panels#activate", "tabs-and-panels-target": "tab", test: "link_for_#{item[:name]}" }, class: item[:selected] } %i{ class: item[:icon_class] } %span= t(".enterprise.#{item[:name] }") - else - enterprise_group_side_menu_items.each do |item| - %a.menu_item{ href: "##{item[:name]}_panel", class: item[:selected], id: item[:name], data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" } } + %a.menu_item{ href: "##{item[:name]}_panel", class: item[:selected], data: { action: "tabs-and-panels#activate", "tabs-and-panels-target": "tab", test: "link_for_#{item[:name]}" } } %i{ class: item[:icon_class] } %span= t(".enterprise_group.#{item[:name] }") diff --git a/app/views/shop/messages/_customer_required.html.haml b/app/views/shop/messages/_customer_required.html.haml index f5f9f9f5c8..844621ce28 100644 --- a/app/views/shop/messages/_customer_required.html.haml +++ b/app/views/shop/messages/_customer_required.html.haml @@ -8,6 +8,6 @@ %p = t('.require_login_link_html', login: ('' + t('.login') + '').html_safe) %p - = t('.require_login_2_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, id: "contact"), enterprise: current_distributor.name) + = t('.require_login_2_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#activate" }), enterprise: current_distributor.name) - else - = t('.require_customer_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, id: "contact"), enterprise: current_distributor.name) + = t('.require_customer_html', contact: link_to(t('.contact'), '#contact_panel', data: { action: "tabs-and-panels#activate" }), enterprise: current_distributor.name) diff --git a/app/views/shopping_shared/_tabs.html.haml b/app/views/shopping_shared/_tabs.html.haml index 8497416f93..b1d572f5bd 100644 --- a/app/views/shopping_shared/_tabs.html.haml +++ b/app/views/shopping_shared/_tabs.html.haml @@ -1,12 +1,12 @@ - if (@order&.distributor || current_distributor) == current_distributor - #shop-tabs{"data-controller": "tabs-and-panels shop-tabs", "data-tabs-and-panels-class-name-value": "selected"} + #shop-tabs{"data-controller": "tabs-and-panels", "data-action": "orderCycleSelected@window->tabs-and-panels#activateDefaultPanel", "data-tabs-and-panels-class-name-value": "selected"} .tab-buttons .flex.row .columns.small-12.large-8 - shop_tabs.each do |tab| .page - %a{ id: tab[:name], href: "##{tab[:name]}_panel", data: { action: "tabs-and-panels#changeActivePanel tabs-and-panels#changeActiveTab", "tabs-and-panels-target": "tab" }, class: ("selected" if tab[:default]) }=tab[:title] + %a{ href: "##{tab[:name]}_panel", data: { action: "tabs-and-panels#activate", "tabs-and-panels-target": "tab" }, class: ("selected" if tab[:default]) }=tab[:title] .columns.large-4.show-for-large-up = render partial: "shopping_shared/order_cycles" - shop_tabs.each do |tab| diff --git a/app/views/spree/orders/form/_update_buttons.html.haml b/app/views/spree/orders/form/_update_buttons.html.haml index 35b9ceaee4..50e256e540 100644 --- a/app/views/spree/orders/form/_update_buttons.html.haml +++ b/app/views/spree/orders/form/_update_buttons.html.haml @@ -6,7 +6,7 @@ = t(:order_back_to_cart) - else .columns.small-12.medium-6 - = link_to "#{main_app.enterprise_shop_path(@order.distributor)}#/shop", class: "button expand" do + = link_to "#{main_app.enterprise_shop_path(@order.distributor)}#/shop_panel", class: "button expand" do = t(:order_back_to_store) .columns.small-12.medium-6 - if @order.distributor.website.present? diff --git a/app/webpacker/controllers/shop_tabs_controller.js b/app/webpacker/controllers/shop_tabs_controller.js deleted file mode 100644 index 86001f9570..0000000000 --- a/app/webpacker/controllers/shop_tabs_controller.js +++ /dev/null @@ -1,22 +0,0 @@ -import { Controller } from "stimulus"; - -export default class extends Controller { - connect() { - window.addEventListener("orderCycleSelected", this.orderCycleSelected); - } - - disconnect() { - window.removeEventListener("orderCycleSelected", this.orderCycleSelected); - } - - orderCycleSelected = (event) => { - window.dispatchEvent( - new CustomEvent("tabs-and-panels:click", { - detail: { - tab: "shop", - panel: "shop_panel", - }, - }) - ); - }; -} diff --git a/app/webpacker/controllers/tabs_and_panels_controller.js b/app/webpacker/controllers/tabs_and_panels_controller.js index 050a4fff25..33151453e6 100644 --- a/app/webpacker/controllers/tabs_and_panels_controller.js +++ b/app/webpacker/controllers/tabs_and_panels_controller.js @@ -5,93 +5,46 @@ export default class extends Controller { static values = { className: String }; connect() { - // hide all active panel - this.panelTargets.forEach((panel) => { - panel.style.display = "none"; - }); - - // only display the default panel - this.defaultTarget.style.display = "block"; - - // Display panel specified in url anchor - const anchors = window.location.toString().split("#"); - let anchor = anchors.length > 1 ? anchors.pop() : ""; - - if (anchor != "") { - // Conveniently AngularJs rewrite "example.com#panel" to "example.com#/panel" :( - // strip the starting / if any - if (anchor[0] == "/") { - anchor = anchor.slice(1); - } - // Add _panel to the anchor to match the panel id if needed - if (!anchor.includes("_panel")) { - anchor = `${anchor}_panel`; - } - this.updateActivePanel(anchor); - - // tab - const tab_id = anchor.split("_panel").shift(); - this.updateActiveTab(tab_id); - } - - window.addEventListener("tabs-and-panels:click", (event) => { - this.simulateClick(event.detail.tab, event.detail.panel); - }); + this._activateFromWindowLocationOrDefaultPanelTarget(); window.addEventListener("popstate", (event) => { - const newPanelId = event.target.location.hash.replace("#/", ""); - const currentPanelId = this.currentActivePanel.id; - - if (newPanelId !== currentPanelId) { - const newTabId = newPanelId.split("_panel").shift(); - this.simulateClick(newTabId, newPanelId); - } + this._activateFromWindowLocationOrDefaultPanelTarget(); }); } - simulateClick(tab, panel) { - this.updateActivePanel(panel); - this.updateActiveTab(tab); - } - - changeActivePanel(event) { - this.updateActivePanel(`${event.currentTarget.id}_panel`); - } - - updateActivePanel(panel_id) { - const newActivePanel = this.panelTargets.find((panel) => panel.id == panel_id); - - if (newActivePanel === undefined) { - // No panel found - return; + _activateFromWindowLocationOrDefaultPanelTarget() { + // Conveniently AngularJs rewrite "example.com#panel" to "example.com#/panel" + const hashWithoutSlash = window.location.hash.replace("/", ""); + const tabWithSameHash = this.tabTargets.find((tab) => tab.hash == hashWithoutSlash); + if (hashWithoutSlash != "" && tabWithSameHash) { + this._activateByHash(tabWithSameHash.hash); + } else { + this._activateByHash(`#${this.defaultTarget.id}`); } - - this.currentActivePanel.style.display = "none"; - newActivePanel.style.display = "block"; } - changeActiveTab(event) { - this.currentActiveTab.classList.remove(`${this.classNameValue}`); - event.currentTarget.classList.add(`${this.classNameValue}`); + activate(event) { + this._activateByHash(event.currentTarget.hash); } - updateActiveTab(tab_id) { - const newActiveTab = this.tabTargets.find((tab) => tab.id == tab_id); - - if (newActiveTab === undefined) { - // No tab found - return; - } - - this.currentActiveTab.classList.remove(`${this.classNameValue}`); - newActiveTab.classList.add(`${this.classNameValue}`); + activateDefaultPanel() { + this._activateByHash(`#${this.defaultTarget.id}`); } - get currentActiveTab() { - return this.tabTargets.find((tab) => tab.classList.contains("selected")); - } - - get currentActivePanel() { - return this.panelTargets.find((panel) => panel.id == `${this.currentActiveTab.id}_panel`); + _activateByHash(hash) { + this.tabTargets.forEach((tab) => { + if (tab.hash == hash) { + tab.classList.add(this.classNameValue); + } else { + tab.classList.remove(this.classNameValue); + } + }); + this.panelTargets.forEach((panel) => { + if (panel.id == hash.replace("#", "")) { + panel.style.display = "block"; + } else { + panel.style.display = "none"; + } + }); } } diff --git a/spec/javascripts/stimulus/tabs_and_panels_controller_test.js b/spec/javascripts/stimulus/tabs_and_panels_controller_test.js index 523f5eb04f..c64421923d 100644 --- a/spec/javascripts/stimulus/tabs_and_panels_controller_test.js +++ b/spec/javascripts/stimulus/tabs_and_panels_controller_test.js @@ -11,122 +11,143 @@ describe('TabsAndPanelsController', () => { application.register('tabs-and-panels', tabs_and_panels_controller); }); - describe('#tabs-and-panels', () => { - const checkDefaultPanel = () => { - const peekPanel = document.getElementById('peek_panel'); - const kaPanel = document.getElementById('ka_panel'); - const booPanel = document.getElementById('boo_panel'); + beforeEach(() => { + document.body.innerHTML = ` +

+ Peek + Ka + Boo - expect(peekPanel.style.display).toBe('block'); - expect(kaPanel.style.display).toBe('none'); - expect(booPanel.style.display).toBe('none'); - } +
Peek me
+
Ka you
+
Boo three
+
` + }) - beforeEach(() => { - document.body.innerHTML = ` -
- Peek - Ka - Boo + it("#activate by clicking on tab", () => { + const peakTab = document.getElementById("peek_tab") + const kaTab = document.getElementById("ka_tab") + const booTab = document.getElementById("boo_tab") + const peakPanel = document.getElementById("peek_panel") + const kaPanel = document.getElementById("ka_panel") + const booPanel = document.getElementById("boo_panel") + expect(peakTab.classList.contains("selected")).toBe(true) + expect(kaTab.classList.contains("selected")).toBe(false) + expect(booTab.classList.contains("selected")).toBe(false) -
Peek me
-
Ka you
-
Boo three
-
`; - }); + expect(peakPanel.style.display).toBe("block") + expect(kaPanel.style.display).toBe("none") + expect(booPanel.style.display).toBe("none") - it('displays only the default panel', () => { - checkDefaultPanel() - }); + kaTab.click() - describe('when tab is clicked', () => { - let ka; + expect(peakTab.classList.contains("selected")).toBe(false) + expect(kaTab.classList.contains("selected")).toBe(true) + expect(booTab.classList.contains("selected")).toBe(false) - beforeEach(() => { - ka = document.getElementById('ka'); - }) + expect(peakPanel.style.display).toBe("none") + expect(kaPanel.style.display).toBe("block") + expect(booPanel.style.display).toBe("none") + }) - it('displays appropriate panel', () => { - const kaPanel = document.getElementById('ka_panel'); + it("#activateDefaultPanel on orderCycleSelected event", () => { + const peakTab = document.getElementById("peek_tab") + const kaTab = document.getElementById("ka_tab") + const booTab = document.getElementById("boo_tab") + const peakPanel = document.getElementById("peek_panel") + const kaPanel = document.getElementById("ka_panel") + const booPanel = document.getElementById("boo_panel") - expect(kaPanel.style.display).toBe('none'); - ka.click(); - expect(kaPanel.style.display).toBe('block'); - }); + expect(peakTab.classList.contains("selected")).toBe(true) + expect(kaTab.classList.contains("selected")).toBe(false) + expect(booTab.classList.contains("selected")).toBe(false) - it('selects the clicked tab', () => { - ka.click(); - expect(ka.classList.contains('selected')).toBe(true); - }); + expect(peakPanel.style.display).toBe("block") + expect(kaPanel.style.display).toBe("none") + expect(booPanel.style.display).toBe("none") - describe("when panel doesn't exist", () => { - beforeEach(() => { - document.body.innerHTML = ` -
- Peek - Ka - Boo + kaTab.click() + expect(peakTab.classList.contains("selected")).toBe(false) + expect(kaTab.classList.contains("selected")).toBe(true) + expect(booTab.classList.contains("selected")).toBe(false) -
Peek me
-
Boo three
-
`; - }); + expect(peakPanel.style.display).toBe("none") + expect(kaPanel.style.display).toBe("block") + expect(booPanel.style.display).toBe("none") - it('displays the current panel', () => { - const peekPanel = document.getElementById('peek_panel'); + const event = new Event("orderCycleSelected") + window.dispatchEvent(event); - ka.click(); - expect(peekPanel.style.display).toBe('block'); - }) + expect(peakTab.classList.contains("selected")).toBe(true) + expect(kaTab.classList.contains("selected")).toBe(false) + expect(booTab.classList.contains("selected")).toBe(false) + + expect(peakPanel.style.display).toBe("block") + expect(kaPanel.style.display).toBe("none") + expect(booPanel.style.display).toBe("none") + }) + + describe("when valid anchor is specified in the url", () => { + const oldWindowLocation = window.location + beforeAll(() => { + Object.defineProperty(window, "location", { + value: new URL("http://example.com/#boo_panel"), + configurable: true, }) }) + afterAll(() => { + delete window.location + window.location = oldWindowLocation + }) - describe('when anchor is specified in the url', () => { - const { location } = window; - const mockLocationToString = (panel) => { - // Mocking window.location.toString() - const url = `http://localhost:3000/admin/enterprises/great-shop/edit#/${panel}` - const mockedToString = jest.fn() - mockedToString.mockImplementation(() => (url)) + it("#activateFromWindowLocationOrDefaultPanelTarget show panel based on anchor", () => { + const peakTab = document.getElementById("peek_tab") + const kaTab = document.getElementById("ka_tab") + const booTab = document.getElementById("boo_tab") + const peakPanel = document.getElementById("peek_panel") + const kaPanel = document.getElementById("ka_panel") + const booPanel = document.getElementById("boo_panel") - delete window.location - window.location = { - toString: mockedToString - } - } + expect(peakTab.classList.contains("selected")).toBe(false) + expect(kaTab.classList.contains("selected")).toBe(false) + expect(booTab.classList.contains("selected")).toBe(true) - beforeAll(() => { - mockLocationToString('ka_panel') - }) + expect(peakPanel.style.display).toBe("none") + expect(kaPanel.style.display).toBe("none") + expect(booPanel.style.display).toBe("block") + }) + }) - afterAll(() => { - // cleaning up - window.location = location - }) - - it('displays the panel associated with the anchor', () => { - const kaPanel = document.getElementById('ka_panel'); - - expect(kaPanel.style.display).toBe('block'); - }) - - it('selects the tab entry associated with the anchor', () => { - const ka = document.getElementById('ka'); - - expect(ka.classList.contains('selected')).toBe(true); - }) - - describe("when anchor doesn't macht any panel", () => { - beforeAll(() => { - mockLocationToString('random_panel') - }) - - it('displays the default panel', () => { - checkDefaultPanel() - }) + describe("when non valid anchor is specified in the url", () => { + const oldWindowLocation = window.location + beforeAll(() => { + Object.defineProperty(window, "location", { + value: new URL("http://example.com/#non_valid_panel"), + configurable: true, }) }) - }); -}); + afterAll(() => { + delete window.location + window.location = oldWindowLocation + }) + + it("#activateFromWindowLocationOrDefaultPanelTarget show default panel", () => { + const peakTab = document.getElementById("peek_tab") + const kaTab = document.getElementById("ka_tab") + const booTab = document.getElementById("boo_tab") + const peakPanel = document.getElementById("peek_panel") + const kaPanel = document.getElementById("ka_panel") + const booPanel = document.getElementById("boo_panel") + + expect(peakTab.classList.contains("selected")).toBe(true) + expect(kaTab.classList.contains("selected")).toBe(false) + expect(booTab.classList.contains("selected")).toBe(false) + + expect(peakPanel.style.display).toBe("block") + expect(kaPanel.style.display).toBe("none") + expect(booPanel.style.display).toBe("none") + }) + }) +}) diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index 1660fc3da2..a6b4cdbb8a 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -131,25 +131,25 @@ describe ' # Unchecking hides the Properties tab uncheck 'enterprise_is_primary_producer' choose 'None' - expect(page).not_to have_selector "#enterprise_fees" - expect(page).not_to have_selector "#payment_methods" - expect(page).not_to have_selector "#shipping_methods" - expect(page).not_to have_selector "#properties" + expect(page).not_to have_selector "[data-test=link_for_enterprise_fees]" + expect(page).not_to have_selector "[data-test=link_for_payment_methods]" + expect(page).not_to have_selector "[data-test=link_for_shipping_methods]" + expect(page).not_to have_selector "[data-test=link_for_properties]" # Checking displays the Properties tab check 'enterprise_is_primary_producer' - expect(page).to have_selector "#enterprise_fees" - expect(page).not_to have_selector "#payment_methods" - expect(page).not_to have_selector "#shipping_methods" - expect(page).to have_selector "#properties" + expect(page).to have_selector "[data-test=link_for_enterprise_fees]" + expect(page).not_to have_selector "[data-test=link_for_payment_methods]" + expect(page).not_to have_selector "[data-test=link_for_shipping_methods]" + expect(page).to have_selector "[data-test=link_for_properties]" uncheck 'enterprise_is_primary_producer' choose 'Own' - expect(page).to have_selector "#enterprise_fees" - expect(page).to have_selector "#payment_methods" - expect(page).to have_selector "#shipping_methods" + expect(page).to have_selector "[data-test=link_for_enterprise_fees]" + expect(page).to have_selector "[data-test=link_for_payment_methods]" + expect(page).to have_selector "[data-test=link_for_shipping_methods]" choose 'Any' - expect(page).to have_selector "#enterprise_fees" - expect(page).to have_selector "#payment_methods" - expect(page).to have_selector "#shipping_methods" + expect(page).to have_selector "[data-test=link_for_enterprise_fees]" + expect(page).to have_selector "[data-test=link_for_payment_methods]" + expect(page).to have_selector "[data-test=link_for_shipping_methods]" page.find("#enterprise_group_ids-ts-control").set(eg1.name) page.find("#enterprise_group_ids-ts-dropdown .option.active").click From 1867d7ef8e774c13fcee963c348aca5fc1c6cc5f Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Sun, 17 Dec 2023 10:47:08 +0700 Subject: [PATCH 032/219] creat real records instead of mocking --- .../admin/reports/revenues_by_hub_spec.rb | 52 ++++++++----------- 1 file changed, 22 insertions(+), 30 deletions(-) diff --git a/spec/system/admin/reports/revenues_by_hub_spec.rb b/spec/system/admin/reports/revenues_by_hub_spec.rb index e8ffbf4137..2bad48930b 100644 --- a/spec/system/admin/reports/revenues_by_hub_spec.rb +++ b/spec/system/admin/reports/revenues_by_hub_spec.rb @@ -19,7 +19,7 @@ describe "Revenues By Hub Reports" do completed_at: 2.days.ago, order_cycle:, distributor: distributor2, - product_price: 110.0, + product_price: 110, tax_rate_amount: 0.1, included_in_price: true, tax_rate_name: "Tax 1" @@ -33,7 +33,7 @@ describe "Revenues By Hub Reports" do distributor: distributor3, product_price: 110.0, tax_rate_amount: 0.1, - included_in_price: true, + included_in_price: false, tax_rate_name: "Tax 1" ) end @@ -44,27 +44,14 @@ describe "Revenues By Hub Reports" do let(:order_cycle) { create(:simple_order_cycle) } let(:product) { create(:product, supplier:) } let(:supplier) { create(:supplier_enterprise) } + let(:voucher2) { create(:voucher_flat_rate, code: 'code', enterprise: distributor2, amount: 10) } + let(:voucher3) { create(:voucher_flat_rate, code: 'code', enterprise: distributor3, amount: 10) } before do create(:line_item_with_shipment, order:, product:) - order_with_voucher_tax_included.create_tax_charge! - order_with_voucher_tax_included.update_shipping_fees! - order_with_voucher_tax_included.update_order! - - order_with_voucher_tax_excluded.create_tax_charge! - order_with_voucher_tax_excluded.update_shipping_fees! - order_with_voucher_tax_excluded.update_order! - - allow(VoucherAdjustmentsService).to receive(:new) do |order_arg| - if order_arg.id == order.id - next double(voucher_included_tax: 0.0, voucher_excluded_tax: 0.0) - elsif order_arg.id == order_with_voucher_tax_included.id - next double(voucher_included_tax: 0.5, voucher_excluded_tax: 0.0) - elsif order_arg.id == order_with_voucher_tax_excluded.id - next double(voucher_included_tax: 0.0, voucher_excluded_tax: -0.5) - end - end + apply_voucher(order_with_voucher_tax_included, voucher2) + apply_voucher(order_with_voucher_tax_excluded, voucher3) login_as_admin visit main_app.admin_report_path(report_type: 'revenues_by_hub') @@ -130,11 +117,8 @@ describe "Revenues By Hub Reports" do "20170", "Victoria", "1", - # 160.0$ - 10.5$ - 149.5, - # 10$ tax + 0.5$ voucher_included_tax - 10.5, - # 5 line_items at 10$ each + 1 line_item at 110$ + 150.63, + 9.37, 160.0 ].compact.join(" ")) @@ -153,13 +137,21 @@ describe "Revenues By Hub Reports" do "20170", "Victoria", "1", - # 160.0$ - 9.5$ - 150.5, - # 10$ tax - 0.5$ voucher_excluded_tax - 9.5, - # 5 line_items at 10$ each + 1 line_item at 110$ - 160.0 + 160.64, + 10.36, + 171.0 ].compact.join(" ")) end end + + def apply_voucher(order, voucher) + voucher.create_adjustment(voucher.code, order) + + # Update taxes + order.create_tax_charge! + order.update_shipping_fees! + order.update_order! + + VoucherAdjustmentsService.new(order).update + end end From 317d492873a39b2329436cd4c4d0a532995967b3 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 18 Dec 2023 14:06:38 +1100 Subject: [PATCH 033/219] Test Stripe with real API --- .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 213 ----------------- .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 215 ------------------ .../captures_the_payment.yml | 215 ------------------ .../saves_the_card_locally.yml | 72 +++--- ...t_intent_state_is_not_requires_capture.yml | 86 +++---- .../_purchase/completes_the_purchase.yml | 166 +++++++------- ..._error_message_to_help_developer_debug.yml | 92 ++++---- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- ...t_intent_last_payment_error_as_message.yml | 104 ++++----- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_Diners_Club/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_Discover/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_JCB/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_Mastercard/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_UnionPay/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_Visa/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- .../from_Visa_debit_/captures_the_payment.yml | 186 +++++++-------- ...s_payment_intent_id_and_does_not_raise.yml | 92 ++++---- 52 files changed, 2850 insertions(+), 4564 deletions(-) delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/captures_the_payment.yml delete mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/captures_the_payment.yml rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml (84%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml (79%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml (81%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml (82%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml (79%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml (78%) rename spec/fixtures/vcr_cassettes/{Stripe-v10.2.0 => Stripe-v10.3.0}/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml (78%) diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/captures_the_payment.yml deleted file mode 100644 index 2d7f8363c2..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000006975&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HN2bV70M1gVOpL","request_duration_ms":593}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:48 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - 87dd26fc-c3ea-4821-8d28-7717dd8dd10d - Original-Request: - - req_HT0fDVCQVPLYvs - Request-Id: - - req_HT0fDVCQVPLYvs - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvfKuuB1fWySnDzSF1su6", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "WoxwxVPUPcg0EjXW", - "funding": "credit", - "generated_from": null, - "last4": "6975", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780048, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:48 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HT0fDVCQVPLYvs","request_duration_ms":594}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:48 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 5bdcd456-bb6f-4728-bea2-ff3a25c4f703 - Original-Request: - - req_NxcSrSSuXLMemB - Request-Id: - - req_NxcSrSSuXLMemB - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_NxcSrSSuXLMemB?t=1701780048", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:48 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/captures_the_payment.yml deleted file mode 100644 index b4d5f768a8..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000000069&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OITsgm0ufJ3r7v","request_duration_ms":436}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:45 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - e439579c-df38-48ee-9526-b449001e9561 - Original-Request: - - req_L1wxUG2ScHFHCu - Request-Id: - - req_L1wxUG2ScHFHCu - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvcKuuB1fWySnOPEXWfHM", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "qpQikrTL7IyNA2rE", - "funding": "credit", - "generated_from": null, - "last4": "0069", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780045, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:45 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_L1wxUG2ScHFHCu","request_duration_ms":492}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:45 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - ceab10c9-f8a9-4995-a600-1291c630dac4 - Original-Request: - - req_Mjo8XKi9hIX5FT - Request-Id: - - req_Mjo8XKi9hIX5FT - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_Mjo8XKi9hIX5FT?t=1701780045", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:45 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/captures_the_payment.yml deleted file mode 100644 index dab6421ab1..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/captures_the_payment.yml +++ /dev/null @@ -1,213 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000000002&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:41 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - 18e731ac-77e0-4a5f-944d-62c1356f84b2 - Original-Request: - - req_IGDhPb0FpOw9S9 - Request-Id: - - req_IGDhPb0FpOw9S9 - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvZKuuB1fWySnAxHQzHMU", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "IKC2ubfpSLuZKsVs", - "funding": "credit", - "generated_from": null, - "last4": "0002", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780041, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:41 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_IGDhPb0FpOw9S9","request_duration_ms":925}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:41 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 21912630-4227-4c88-a12d-42acd17566b6 - Original-Request: - - req_65Iap7JNbiJHKx - Request-Id: - - req_65Iap7JNbiJHKx - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_65Iap7JNbiJHKx?t=1701780041", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:41 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/captures_the_payment.yml deleted file mode 100644 index eef68f5cc7..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000000127&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_L1wxUG2ScHFHCu","request_duration_ms":492}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:46 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - bac88e08-813f-4785-8c39-2e321cb977a7 - Original-Request: - - req_hp8pnKT4QFgYut - Request-Id: - - req_hp8pnKT4QFgYut - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvdKuuB1fWySn9j52EYkX", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "eWmxEL5j3bNdPnK5", - "funding": "credit", - "generated_from": null, - "last4": "0127", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780045, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:46 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hp8pnKT4QFgYut","request_duration_ms":591}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:46 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 9363a1ff-08dd-4808-b4e3-445d633c3c44 - Original-Request: - - req_rhbueRscgytCUR - Request-Id: - - req_rhbueRscgytCUR - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_rhbueRscgytCUR?t=1701780046", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:46 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/captures_the_payment.yml deleted file mode 100644 index 0e2057aa79..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000009995&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_IGDhPb0FpOw9S9","request_duration_ms":925}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:42 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - def3dfc8-5768-411d-bbc8-7ac8888f0b0c - Original-Request: - - req_lu9IxZvD2xwcNw - Request-Id: - - req_lu9IxZvD2xwcNw - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvaKuuB1fWySnhv0gWbrz", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "O0I0muUGQBJy3p73", - "funding": "credit", - "generated_from": null, - "last4": "9995", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780042, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:42 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lu9IxZvD2xwcNw","request_duration_ms":593}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:42 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 5e12138a-7393-46e3-8fea-338cbcf20eb0 - Original-Request: - - req_isqZsa3hc8YX3z - Request-Id: - - req_isqZsa3hc8YX3z - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_isqZsa3hc8YX3z?t=1701780042", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:43 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/captures_the_payment.yml deleted file mode 100644 index 0fcc4c0974..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000009987&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lu9IxZvD2xwcNw","request_duration_ms":593}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:43 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - 042b4260-79ca-4029-9dd6-3b7288074f20 - Original-Request: - - req_5WMYfjplNUrxJ0 - Request-Id: - - req_5WMYfjplNUrxJ0 - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvbKuuB1fWySnBP8k9Z0l", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "hMDekBwrnWL1oLxe", - "funding": "credit", - "generated_from": null, - "last4": "9987", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780043, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:43 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5WMYfjplNUrxJ0","request_duration_ms":495}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:43 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 0035a247-dd1f-40b0-8956-a3b7b9dd4372 - Original-Request: - - req_jS5w3BRQKzWg2L - Request-Id: - - req_jS5w3BRQKzWg2L - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_jS5w3BRQKzWg2L?t=1701780043", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:43 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/captures_the_payment.yml deleted file mode 100644 index 57511559ec..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000000119&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hp8pnKT4QFgYut","request_duration_ms":591}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:47 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - e1853a52-775e-4507-af77-c3a2fe6544e4 - Original-Request: - - req_HN2bV70M1gVOpL - Request-Id: - - req_HN2bV70M1gVOpL - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxveKuuB1fWySn5Fe6GNFo", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "9HWWxe4EyniQy61z", - "funding": "credit", - "generated_from": null, - "last4": "0119", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780047, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:47 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HN2bV70M1gVOpL","request_duration_ms":593}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:47 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 3122df3d-e476-4d31-b08e-6ef72ee8fa16 - Original-Request: - - req_RSNQKKwBzZyBuT - Request-Id: - - req_RSNQKKwBzZyBuT - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_RSNQKKwBzZyBuT?t=1701780047", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:47 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/captures_the_payment.yml deleted file mode 100644 index 5537e39e78..0000000000 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/captures_the_payment.yml +++ /dev/null @@ -1,215 +0,0 @@ ---- -http_interactions: -- request: - method: post - uri: https://api.stripe.com/v1/payment_methods - body: - encoding: UTF-8 - string: type=card&card[number]=4000000000009979&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5WMYfjplNUrxJ0","request_duration_ms":495}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 200 - message: OK - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:44 GMT - Content-Type: - - application/json - Content-Length: - - '931' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; - default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; - img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' - Idempotency-Key: - - 5b412c9e-577a-4dfa-a839-dc186db70883 - Original-Request: - - req_OITsgm0ufJ3r7v - Request-Id: - - req_OITsgm0ufJ3r7v - Stripe-Should-Retry: - - 'false' - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: |- - { - "id": "pm_1OJxvcKuuB1fWySnWVSw2cky", - "object": "payment_method", - "billing_details": { - "address": { - "city": null, - "country": null, - "line1": null, - "line2": null, - "postal_code": null, - "state": null - }, - "email": null, - "name": null, - "phone": null - }, - "card": { - "brand": "visa", - "checks": { - "address_line1_check": null, - "address_postal_code_check": null, - "cvc_check": "unchecked" - }, - "country": "US", - "exp_month": 12, - "exp_year": 2024, - "fingerprint": "1pjhEFFOW1eCi1AB", - "funding": "credit", - "generated_from": null, - "last4": "9979", - "networks": { - "available": [ - "visa" - ], - "preferred": null - }, - "three_d_secure_usage": { - "supported": true - }, - "wallet": null - }, - "created": 1701780044, - "customer": null, - "livemode": false, - "metadata": {}, - "type": "card" - } - recorded_at: Tue, 05 Dec 2023 12:40:44 GMT -- request: - method: post - uri: https://api.stripe.com/v1/payment_intents/payment_intent.id/capture - body: - encoding: US-ASCII - string: '' - headers: - User-Agent: - - Stripe/v1 RubyBindings/10.2.0 - Authorization: - - Bearer - Content-Type: - - application/x-www-form-urlencoded - X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OITsgm0ufJ3r7v","request_duration_ms":436}}' - Stripe-Version: - - '2023-10-16' - X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' - Accept-Encoding: - - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 - Accept: - - "*/*" - response: - status: - code: 404 - message: Not Found - headers: - Server: - - nginx - Date: - - Tue, 05 Dec 2023 12:40:44 GMT - Content-Type: - - application/json - Content-Length: - - '342' - Connection: - - keep-alive - Access-Control-Allow-Credentials: - - 'true' - Access-Control-Allow-Methods: - - GET,HEAD,PUT,PATCH,POST,DELETE - Access-Control-Allow-Origin: - - "*" - Access-Control-Expose-Headers: - - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, - X-Stripe-Privileged-Session-Required - Access-Control-Max-Age: - - '300' - Cache-Control: - - no-cache, no-store - Content-Security-Policy: - - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; - block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action - 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; - style-src 'self' - Idempotency-Key: - - 99d141ef-b971-4b99-8028-7a846e0b36cb - Original-Request: - - req_gZlU7BzRaYTUm3 - Request-Id: - - req_gZlU7BzRaYTUm3 - Stripe-Version: - - '2023-10-16' - Vary: - - Origin - X-Stripe-Routing-Context-Priority-Tier: - - api-testmode - Strict-Transport-Security: - - max-age=63072000; includeSubDomains; preload - body: - encoding: UTF-8 - string: | - { - "error": { - "code": "resource_missing", - "doc_url": "https://stripe.com/docs/error-codes/resource-missing", - "message": "No such payment_intent: 'payment_intent.id'", - "param": "intent", - "request_log_url": "https://dashboard.stripe.com/test/logs/req_gZlU7BzRaYTUm3?t=1701780044", - "type": "invalid_request_error" - } - } - recorded_at: Tue, 05 Dec 2023 12:40:44 GMT -recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml similarity index 84% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml index cf47db91bd..fd36d1bbc6 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_CreditCardsController/using_VCR/_new_from_token/when_the_request_to_store_the_customer/card_with_Stripe_is_successful/saves_the_card_locally.yml @@ -8,7 +8,7 @@ http_interactions: string: card[number]=4242424242424242&card[exp_month]=9&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: @@ -16,7 +16,7 @@ http_interactions: Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' @@ -32,11 +32,11 @@ http_interactions: Server: - nginx Date: - - Sun, 03 Dec 2023 23:56:36 GMT + - Mon, 18 Dec 2023 02:58:24 GMT Content-Type: - application/json Content-Length: - - '801' + - '799' Connection: - keep-alive Access-Control-Allow-Credentials: @@ -57,11 +57,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 6fbc60ba-1a5a-4a98-8e2a-46ca51ca880b + - ebc73377-e52f-430d-9b6d-2a69f6c52c02 Original-Request: - - req_YJweaF8coHn4N5 + - req_ucjYRmi2DHi6IP Request-Id: - - req_YJweaF8coHn4N5 + - req_ucjYRmi2DHi6IP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -76,10 +76,10 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "tok_1OJPWaKuuB1fWySnYLICe68T", + "id": "tok_1OOX2CKuuB1fWySntLJBOKII", "object": "token", "card": { - "id": "card_1OJPWaKuuB1fWySnG0BPSQzC", + "id": "card_1OOX2BKuuB1fWySnBm8Bv3KM", "object": "card", "address_city": null, "address_country": null, @@ -103,32 +103,32 @@ http_interactions: "tokenization_method": null, "wallet": null }, - "client_ip": "124.170.116.197", - "created": 1701647796, + "client_ip": "115.166.46.30", + "created": 1702868304, "livemode": false, "type": "card", "used": false } - recorded_at: Sun, 03 Dec 2023 23:56:36 GMT + recorded_at: Mon, 18 Dec 2023 02:58:24 GMT - request: method: post uri: https://api.stripe.com/v1/customers body: encoding: UTF-8 - string: email=ma.rogahn%40feeney.co.uk&source=tok_1OJPWaKuuB1fWySnYLICe68T + string: email=damion.walker%40yundt.us&source=tok_1OOX2CKuuB1fWySntLJBOKII headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_YJweaF8coHn4N5","request_duration_ms":632}}' + - '{"last_request_metrics":{"request_id":"req_ucjYRmi2DHi6IP","request_duration_ms":817}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' @@ -144,7 +144,7 @@ http_interactions: Server: - nginx Date: - - Sun, 03 Dec 2023 23:56:37 GMT + - Mon, 18 Dec 2023 02:58:25 GMT Content-Type: - application/json Content-Length: @@ -169,11 +169,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - b57ba34f-6559-4559-9bb1-5d2be42a6cef + - e00078c9-ef00-4403-8f63-6687cf187a0c Original-Request: - - req_rLZMjFmxNUfXYV + - req_ZJsrJu3Ut5fd9B Request-Id: - - req_rLZMjFmxNUfXYV + - req_ZJsrJu3Ut5fd9B Stripe-Should-Retry: - 'false' Stripe-Version: @@ -188,18 +188,18 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "cus_P7eqsUYTGZ2DWM", + "id": "cus_PCwwguiYh0i21F", "object": "customer", "address": null, "balance": 0, - "created": 1701647796, + "created": 1702868304, "currency": null, - "default_source": "card_1OJPWaKuuB1fWySnG0BPSQzC", + "default_source": "card_1OOX2BKuuB1fWySnBm8Bv3KM", "delinquent": false, "description": null, "discount": null, - "email": "ma.rogahn@feeney.co.uk", - "invoice_prefix": "CD478CDB", + "email": "damion.walker@yundt.us", + "invoice_prefix": "8A8C7B1F", "invoice_settings": { "custom_fields": null, "default_payment_method": null, @@ -216,26 +216,26 @@ http_interactions: "tax_exempt": "none", "test_clock": null } - recorded_at: Sun, 03 Dec 2023 23:56:37 GMT + recorded_at: Mon, 18 Dec 2023 02:58:25 GMT - request: method: get - uri: https://api.stripe.com/v1/customers/cus_P7eqsUYTGZ2DWM/sources?limit=1&object=card + uri: https://api.stripe.com/v1/customers/cus_PCwwguiYh0i21F/sources?limit=1&object=card body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_rLZMjFmxNUfXYV","request_duration_ms":879}}' + - '{"last_request_metrics":{"request_id":"req_ZJsrJu3Ut5fd9B","request_duration_ms":1057}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' @@ -251,7 +251,7 @@ http_interactions: Server: - nginx Date: - - Sun, 03 Dec 2023 23:56:37 GMT + - Mon, 18 Dec 2023 02:58:26 GMT Content-Type: - application/json Content-Length: @@ -277,7 +277,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_csbcri928ZfdcH + - req_nG6iKvmXXwyOql Stripe-Version: - '2023-10-16' Vary: @@ -293,7 +293,7 @@ http_interactions: "object": "list", "data": [ { - "id": "card_1OJPWaKuuB1fWySnG0BPSQzC", + "id": "card_1OOX2BKuuB1fWySnBm8Bv3KM", "object": "card", "address_city": null, "address_country": null, @@ -305,7 +305,7 @@ http_interactions: "address_zip_check": null, "brand": "Visa", "country": "US", - "customer": "cus_P7eqsUYTGZ2DWM", + "customer": "cus_PCwwguiYh0i21F", "cvc_check": "pass", "dynamic_last4": null, "exp_month": 9, @@ -320,7 +320,7 @@ http_interactions: } ], "has_more": false, - "url": "/v1/customers/cus_P7eqsUYTGZ2DWM/sources" + "url": "/v1/customers/cus_PCwwguiYh0i21F/sources" } - recorded_at: Sun, 03 Dec 2023 23:56:37 GMT + recorded_at: Mon, 18 Dec 2023 02:58:26 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml similarity index 79% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml index 16106fdb85..33e0b05e9e 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_error_message/when_payment_intent_state_is_not_in_requires_capture_state/does_not_succeed_if_payment_intent_state_is_not_requires_capture.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_kEuP9BShlEJBEh","request_duration_ms":1066}}' + - '{"last_request_metrics":{"request_id":"req_ZgVk7B2DN4imGk","request_duration_ms":1023}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:41 GMT + - Mon, 18 Dec 2023 03:00:34 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 31802e28-8d9a-4a22-a684-db641e5edb91 + - 7e45002b-cb3a-4bd6-9395-b7c39fac24eb Original-Request: - - req_ycRJsY0xEobgbQ + - req_3bTAFrMkCbu1en Request-Id: - - req_ycRJsY0xEobgbQ + - req_3bTAFrMkCbu1en Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OMVpFKuuB1fWySnMHJj4rV0", + "id": "pm_1OOX4IKuuB1fWySnjmcLCxBS", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1702387001, + "created": 1702868434, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Tue, 12 Dec 2023 13:16:42 GMT + recorded_at: Mon, 18 Dec 2023 03:00:34 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=1000¤cy=aud&payment_method=pm_1OMVpFKuuB1fWySnMHJj4rV0&payment_method_types[0]=card&capture_method=manual + string: amount=1000¤cy=aud&payment_method=pm_1OOX4IKuuB1fWySnjmcLCxBS&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ycRJsY0xEobgbQ","request_duration_ms":651}}' + - '{"last_request_metrics":{"request_id":"req_3bTAFrMkCbu1en","request_duration_ms":492}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:42 GMT + - Mon, 18 Dec 2023 03:00:35 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4c2ec975-dcac-4183-94be-5cc42388abaa + - dd721235-f6e7-49cb-b4ce-77addde4424a Original-Request: - - req_7jzbnRugdmJUxG + - req_2utFdd4WhA7oOg Request-Id: - - req_7jzbnRugdmJUxG + - req_2utFdd4WhA7oOg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVpGKuuB1fWySn1V3lr4qv", + "id": "pi_3OOX4IKuuB1fWySn0Ww53KYG", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVpGKuuB1fWySn1V3lr4qv_secret_mv7HDgsiBtwrCKWIgPM81tNmQ", + "client_secret": "pi_3OOX4IKuuB1fWySn0Ww53KYG_secret_BxCWo4D8kXRk9pdas4qTmWwyK", "confirmation_method": "automatic", - "created": 1702387002, + "created": 1702868434, "currency": "aud", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVpFKuuB1fWySnMHJj4rV0", + "payment_method": "pm_1OOX4IKuuB1fWySnjmcLCxBS", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:42 GMT + recorded_at: Mon, 18 Dec 2023 03:00:35 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OMVpGKuuB1fWySn1V3lr4qv + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX4IKuuB1fWySn0Ww53KYG body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7jzbnRugdmJUxG","request_duration_ms":423}}' + - '{"last_request_metrics":{"request_id":"req_2utFdd4WhA7oOg","request_duration_ms":471}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:42 GMT + - Mon, 18 Dec 2023 03:00:35 GMT Content-Type: - application/json Content-Length: @@ -316,7 +316,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_5eOQLL9A6WDALS + - req_xrSqA3jeEyBonw Stripe-Version: - '2023-10-16' Vary: @@ -329,7 +329,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVpGKuuB1fWySn1V3lr4qv", + "id": "pi_3OOX4IKuuB1fWySn0Ww53KYG", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, @@ -343,9 +343,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVpGKuuB1fWySn1V3lr4qv_secret_mv7HDgsiBtwrCKWIgPM81tNmQ", + "client_secret": "pi_3OOX4IKuuB1fWySn0Ww53KYG_secret_BxCWo4D8kXRk9pdas4qTmWwyK", "confirmation_method": "automatic", - "created": 1702387002, + "created": 1702868434, "currency": "aud", "customer": null, "description": null, @@ -356,7 +356,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVpFKuuB1fWySnMHJj4rV0", + "payment_method": "pm_1OOX4IKuuB1fWySnjmcLCxBS", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -381,5 +381,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:42 GMT + recorded_at: Mon, 18 Dec 2023 03:00:35 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml similarity index 81% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml index 812c48c3a7..9eddc6f009 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/completes_the_purchase.yml @@ -8,18 +8,20 @@ http_interactions: string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_nWtA6PTMaXhzFy","request_duration_ms":443}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -32,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:29 GMT + - Mon, 18 Dec 2023 03:00:25 GMT Content-Type: - application/json Content-Length: @@ -57,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 0e3af981-5d45-47a8-8df4-f5a4cf65e6a2 + - 22cb1db3-9d32-4737-8e81-63c8a1f0c750 Original-Request: - - req_a3ZY1GPrHId050 + - req_x3VWW226hgSW2C Request-Id: - - req_a3ZY1GPrHId050 + - req_x3VWW226hgSW2C Stripe-Should-Retry: - 'false' Stripe-Version: @@ -76,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "id": "pm_1OOX49KuuB1fWySnDHMXXrnB", "object": "payment_method", "billing_details": { "address": { @@ -116,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1702386989, + "created": 1702868425, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Tue, 12 Dec 2023 13:16:29 GMT + recorded_at: Mon, 18 Dec 2023 03:00:25 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=1000¤cy=aud&payment_method=pm_1OMVp3KuuB1fWySnSK98tJrM&payment_method_types[0]=card&capture_method=manual + string: amount=1000¤cy=aud&payment_method=pm_1OOX49KuuB1fWySnDHMXXrnB&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_a3ZY1GPrHId050","request_duration_ms":728}}' + - '{"last_request_metrics":{"request_id":"req_x3VWW226hgSW2C","request_duration_ms":585}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -157,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:30 GMT + - Mon, 18 Dec 2023 03:00:26 GMT Content-Type: - application/json Content-Length: @@ -182,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ab30b417-ce24-41d8-bbd1-2353ea63aaa4 + - 0c6301bf-b5fa-43ea-ad0b-057884a85864 Original-Request: - - req_p7U3IYlR3bX9WW + - req_63A9kbw1WQxKR8 Request-Id: - - req_p7U3IYlR3bX9WW + - req_63A9kbw1WQxKR8 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -201,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVp4KuuB1fWySn01foecB2", + "id": "pi_3OOX4AKuuB1fWySn1xcvG0OT", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, @@ -215,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVp4KuuB1fWySn01foecB2_secret_bJt23IgqwzKzKbjrEVe5bbDw6", + "client_secret": "pi_3OOX4AKuuB1fWySn1xcvG0OT_secret_mEJaGxzZri8TqqWFHNmfKptMg", "confirmation_method": "automatic", - "created": 1702386990, + "created": 1702868426, "currency": "aud", "customer": null, "description": null, @@ -228,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "payment_method": "pm_1OOX49KuuB1fWySnDHMXXrnB", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -253,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:30 GMT + recorded_at: Mon, 18 Dec 2023 03:00:26 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OMVp4KuuB1fWySn01foecB2/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX4AKuuB1fWySn1xcvG0OT/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_p7U3IYlR3bX9WW","request_duration_ms":713}}' + - '{"last_request_metrics":{"request_id":"req_63A9kbw1WQxKR8","request_duration_ms":512}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -288,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:31 GMT + - Mon, 18 Dec 2023 03:00:27 GMT Content-Type: - application/json Content-Length: @@ -314,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 06b4730a-4174-430c-89fd-acafe2a33b23 + - 2a5bb70d-d1dd-4ef4-bcdc-0a020514330b Original-Request: - - req_U3DvUitYuieWsD + - req_Ai3qOXCcoXFWg3 Request-Id: - - req_U3DvUitYuieWsD + - req_Ai3qOXCcoXFWg3 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -333,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVp4KuuB1fWySn01foecB2", + "id": "pi_3OOX4AKuuB1fWySn1xcvG0OT", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, @@ -347,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVp4KuuB1fWySn01foecB2_secret_bJt23IgqwzKzKbjrEVe5bbDw6", + "client_secret": "pi_3OOX4AKuuB1fWySn1xcvG0OT_secret_mEJaGxzZri8TqqWFHNmfKptMg", "confirmation_method": "automatic", - "created": 1702386990, + "created": 1702868426, "currency": "aud", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OMVp4KuuB1fWySn0YT4k7zE", + "latest_charge": "ch_3OOX4AKuuB1fWySn1ivOQgYx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "payment_method": "pm_1OOX49KuuB1fWySnDHMXXrnB", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -385,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:31 GMT + recorded_at: Mon, 18 Dec 2023 03:00:27 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OMVp4KuuB1fWySn01foecB2 + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX4AKuuB1fWySn1xcvG0OT body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_U3DvUitYuieWsD","request_duration_ms":1066}}' + - '{"last_request_metrics":{"request_id":"req_Ai3qOXCcoXFWg3","request_duration_ms":1085}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -420,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:34 GMT + - Mon, 18 Dec 2023 03:00:29 GMT Content-Type: - application/json Content-Length: @@ -446,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_2hI8JKOwY7kSNH + - req_UugRdvwc3mEd4D Stripe-Version: - '2023-10-16' Vary: @@ -459,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVp4KuuB1fWySn01foecB2", + "id": "pi_3OOX4AKuuB1fWySn1xcvG0OT", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, @@ -473,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVp4KuuB1fWySn01foecB2_secret_bJt23IgqwzKzKbjrEVe5bbDw6", + "client_secret": "pi_3OOX4AKuuB1fWySn1xcvG0OT_secret_mEJaGxzZri8TqqWFHNmfKptMg", "confirmation_method": "automatic", - "created": 1702386990, + "created": 1702868426, "currency": "aud", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OMVp4KuuB1fWySn0YT4k7zE", + "latest_charge": "ch_3OOX4AKuuB1fWySn1ivOQgYx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "payment_method": "pm_1OOX49KuuB1fWySnDHMXXrnB", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -511,10 +513,10 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:34 GMT + recorded_at: Mon, 18 Dec 2023 03:00:29 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OMVp4KuuB1fWySn01foecB2/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX4AKuuB1fWySn1xcvG0OT/capture body: encoding: UTF-8 string: amount_to_capture=1000 @@ -545,11 +547,11 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:36 GMT + - Mon, 18 Dec 2023 03:00:30 GMT Content-Type: - application/json Content-Length: - - '5092' + - '5093' Connection: - close Access-Control-Allow-Credentials: @@ -571,11 +573,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - b362b837-8ebb-4369-beb4-e8a02d02c590 + - f0518227-3920-4bf6-afdd-54d79e13977e Original-Request: - - req_ZRw3vk5NZdPl51 + - req_1PPnHMWY4qjdId Request-Id: - - req_ZRw3vk5NZdPl51 + - req_1PPnHMWY4qjdId Stripe-Should-Retry: - 'false' Stripe-Version: @@ -590,7 +592,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVp4KuuB1fWySn01foecB2", + "id": "pi_3OOX4AKuuB1fWySn1xcvG0OT", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, @@ -608,7 +610,7 @@ http_interactions: "object": "list", "data": [ { - "id": "ch_3OMVp4KuuB1fWySn0YT4k7zE", + "id": "ch_3OOX4AKuuB1fWySn1ivOQgYx", "object": "charge", "amount": 1000, "amount_captured": 1000, @@ -616,7 +618,7 @@ http_interactions: "application": null, "application_fee": null, "application_fee_amount": null, - "balance_transaction": "txn_3OMVp4KuuB1fWySn0E6LUvdB", + "balance_transaction": "txn_3OOX4AKuuB1fWySn1a6YrZ9M", "billing_details": { "address": { "city": null, @@ -632,7 +634,7 @@ http_interactions: }, "calculated_statement_descriptor": "OFNOFNOFN", "captured": true, - "created": 1702386991, + "created": 1702868426, "currency": "aud", "customer": null, "description": null, @@ -652,18 +654,18 @@ http_interactions: "network_status": "approved_by_network", "reason": null, "risk_level": "normal", - "risk_score": 3, + "risk_score": 41, "seller_message": "Payment complete.", "type": "authorized" }, "paid": true, - "payment_intent": "pi_3OMVp4KuuB1fWySn01foecB2", - "payment_method": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "payment_intent": "pi_3OOX4AKuuB1fWySn1xcvG0OT", + "payment_method": "pm_1OOX49KuuB1fWySnDHMXXrnB", "payment_method_details": { "card": { "amount_authorized": 1000, "brand": "visa", - "capture_before": 1702991791, + "capture_before": 1703473226, "checks": { "address_line1_check": null, "address_postal_code_check": null, @@ -701,14 +703,14 @@ http_interactions: }, "receipt_email": null, "receipt_number": null, - "receipt_url": "https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF8xRmlxRXNLdXVCMWZXeVNuKLS64asGMgbwhD1CoTg6LBanMnQfUGRA4FPL3EBN7ZpQEoO0qNMiyQNtQRvkNHn-zA3EVQ2sn8sHhztn", + "receipt_url": "https://pay.stripe.com/receipts/payment/CAcaFwoVYWNjdF8xRmlxRXNLdXVCMWZXeVNuKM7r_qsGMgZRE4nZPJI6LBbXIxgnacig5RFixGKkTT8gaCnew-4jY4mUjyPcSUC493LQkfmQsUZr2YZe", "refunded": false, "refunds": { "object": "list", "data": [], "has_more": false, "total_count": 0, - "url": "/v1/charges/ch_3OMVp4KuuB1fWySn0YT4k7zE/refunds" + "url": "/v1/charges/ch_3OOX4AKuuB1fWySn1ivOQgYx/refunds" }, "review": null, "shipping": null, @@ -723,22 +725,22 @@ http_interactions: ], "has_more": false, "total_count": 1, - "url": "/v1/charges?payment_intent=pi_3OMVp4KuuB1fWySn01foecB2" + "url": "/v1/charges?payment_intent=pi_3OOX4AKuuB1fWySn1xcvG0OT" }, - "client_secret": "pi_3OMVp4KuuB1fWySn01foecB2_secret_bJt23IgqwzKzKbjrEVe5bbDw6", + "client_secret": "pi_3OOX4AKuuB1fWySn1xcvG0OT_secret_mEJaGxzZri8TqqWFHNmfKptMg", "confirmation_method": "automatic", - "created": 1702386990, + "created": 1702868426, "currency": "aud", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OMVp4KuuB1fWySn0YT4k7zE", + "latest_charge": "ch_3OOX4AKuuB1fWySn1ivOQgYx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVp3KuuB1fWySnSK98tJrM", + "payment_method": "pm_1OOX49KuuB1fWySnDHMXXrnB", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -763,5 +765,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:36 GMT + recorded_at: Mon, 18 Dec 2023 03:00:30 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml index b706bc215e..ac002d3f37 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Spree_Gateway_StripeSCA/_purchase/provides_an_error_message_to_help_developer_debug.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2hI8JKOwY7kSNH","request_duration_ms":434}}' + - '{"last_request_metrics":{"request_id":"req_UugRdvwc3mEd4D","request_duration_ms":391}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:36 GMT + - Mon, 18 Dec 2023 03:00:31 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4a150ad2-88fe-4533-a7bc-1fa073f32a9b + - be02cdc5-4eb6-4b23-8cd6-79dcfcc05f24 Original-Request: - - req_162AvbiORsNRF5 + - req_tXlzlTTxarAXIv Request-Id: - - req_162AvbiORsNRF5 + - req_tXlzlTTxarAXIv Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OMVpAKuuB1fWySnqhQjziYH", + "id": "pm_1OOX4EKuuB1fWySnkgkyNmok", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1702386996, + "created": 1702868430, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Tue, 12 Dec 2023 13:16:37 GMT + recorded_at: Mon, 18 Dec 2023 03:00:31 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=1000¤cy=aud&payment_method=pm_1OMVpAKuuB1fWySnqhQjziYH&payment_method_types[0]=card&capture_method=manual + string: amount=1000¤cy=aud&payment_method=pm_1OOX4EKuuB1fWySnkgkyNmok&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_162AvbiORsNRF5","request_duration_ms":639}}' + - '{"last_request_metrics":{"request_id":"req_tXlzlTTxarAXIv","request_duration_ms":499}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:37 GMT + - Mon, 18 Dec 2023 03:00:31 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 491db942-7198-4ee3-8423-a903b73b87ac + - fb34c1a9-da91-4040-8674-85f4b03ac770 Original-Request: - - req_f9tvJ0rgpXxio1 + - req_Y3uGJjmHqTvrW4 Request-Id: - - req_f9tvJ0rgpXxio1 + - req_Y3uGJjmHqTvrW4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVpBKuuB1fWySn0QfFlIV8", + "id": "pi_3OOX4FKuuB1fWySn2d7b6xUT", "object": "payment_intent", "amount": 1000, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVpBKuuB1fWySn0QfFlIV8_secret_bUDMPJVVChVdfO3y49EbdwwxL", + "client_secret": "pi_3OOX4FKuuB1fWySn2d7b6xUT_secret_h8TwT0ktY6eoczJc8CUiSwi09", "confirmation_method": "automatic", - "created": 1702386997, + "created": 1702868431, "currency": "aud", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVpAKuuB1fWySnqhQjziYH", + "payment_method": "pm_1OOX4EKuuB1fWySnkgkyNmok", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:37 GMT + recorded_at: Mon, 18 Dec 2023 03:00:31 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OMVpBKuuB1fWySn0QfFlIV8/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX4FKuuB1fWySn2d7b6xUT/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_f9tvJ0rgpXxio1","request_duration_ms":406}}' + - '{"last_request_metrics":{"request_id":"req_Y3uGJjmHqTvrW4","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Tue, 12 Dec 2023 13:16:38 GMT + - Mon, 18 Dec 2023 03:00:32 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f34fdfb3-c2c1-423f-b39f-3e4692e0ec24 + - 56093985-745c-40eb-a37d-0c276f0e475b Original-Request: - - req_kEuP9BShlEJBEh + - req_ZgVk7B2DN4imGk Request-Id: - - req_kEuP9BShlEJBEh + - req_ZgVk7B2DN4imGk Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OMVpBKuuB1fWySn0QfFlIV8", + "id": "pi_3OOX4FKuuB1fWySn2d7b6xUT", "object": "payment_intent", "amount": 1000, "amount_capturable": 1000, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OMVpBKuuB1fWySn0QfFlIV8_secret_bUDMPJVVChVdfO3y49EbdwwxL", + "client_secret": "pi_3OOX4FKuuB1fWySn2d7b6xUT_secret_h8TwT0ktY6eoczJc8CUiSwi09", "confirmation_method": "automatic", - "created": 1702386997, + "created": 1702868431, "currency": "aud", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OMVpBKuuB1fWySn01HyMd2n", + "latest_charge": "ch_3OOX4FKuuB1fWySn2v1yuDBo", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OMVpAKuuB1fWySnqhQjziYH", + "payment_method": "pm_1OOX4EKuuB1fWySnkgkyNmok", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Tue, 12 Dec 2023 13:16:38 GMT + recorded_at: Mon, 18 Dec 2023 03:00:32 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index e1cdb824ed..acebd30291 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Exceeding_velocity_limit_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000006975&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Vihel6UGT7nLhb","request_duration_ms":518}}' + - '{"last_request_metrics":{"request_id":"req_wiBXXUIBwZ6cWP","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:33 GMT + - Mon, 18 Dec 2023 03:00:23 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 3d289763-2fdb-41c5-bc6f-8d3c42206307 + - a153cfb4-2801-4af6-a9f3-dcfe34080c2a Original-Request: - - req_ZzlzNlUqSEjw0m + - req_U1rrzSGD940UsG Request-Id: - - req_ZzlzNlUqSEjw0m + - req_U1rrzSGD940UsG Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmKHKuuB1fWySngoXt39A8", + "id": "pm_1OOX47KuuB1fWySn7HWuYOZN", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973773, + "created": 1702868423, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:33 GMT + recorded_at: Mon, 18 Dec 2023 03:00:23 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmKHKuuB1fWySngoXt39A8&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX47KuuB1fWySn7HWuYOZN&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ZzlzNlUqSEjw0m","request_duration_ms":491}}' + - '{"last_request_metrics":{"request_id":"req_U1rrzSGD940UsG","request_duration_ms":497}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:33 GMT + - Mon, 18 Dec 2023 03:00:24 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 42b52906-7278-4710-9760-eb37d781a6ef + - c68599e9-9fef-471d-aac9-96cd6388df9b Original-Request: - - req_VKyyvoNL9tr3YX + - req_nWtA6PTMaXhzFy Request-Id: - - req_VKyyvoNL9tr3YX + - req_nWtA6PTMaXhzFy Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmKHKuuB1fWySn05ajIIb6", + "id": "pi_3OOX47KuuB1fWySn1O0UhKQ8", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKHKuuB1fWySn05ajIIb6_secret_EqDGo6BuJoD96VwJabcjWX5Oi", + "client_secret": "pi_3OOX47KuuB1fWySn1O0UhKQ8_secret_ttuUoTtbcDbknk8IBHk3qHEHr", "confirmation_method": "automatic", - "created": 1701973773, + "created": 1702868423, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmKHKuuB1fWySngoXt39A8", + "payment_method": "pm_1OOX47KuuB1fWySn7HWuYOZN", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:34 GMT + recorded_at: Mon, 18 Dec 2023 03:00:24 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmKHKuuB1fWySn05ajIIb6/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX47KuuB1fWySn1O0UhKQ8/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VKyyvoNL9tr3YX","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_nWtA6PTMaXhzFy","request_duration_ms":443}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:35 GMT + - Mon, 18 Dec 2023 03:00:25 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e344a637-d7d5-4970-9060-77bfc8f6ad52 + - 85757a21-49f9-4bb0-bd1e-e06f707860d6 Original-Request: - - req_IueMGbIxsCHLXq + - req_oKDEiNweS2MruV Request-Id: - - req_IueMGbIxsCHLXq + - req_oKDEiNweS2MruV Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmKHKuuB1fWySn0Zni6lIk", + "charge": "ch_3OOX47KuuB1fWySn1XlSLhy4", "code": "card_declined", "decline_code": "card_velocity_exceeded", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", "payment_intent": { - "id": "pi_3OKmKHKuuB1fWySn05ajIIb6", + "id": "pi_3OOX47KuuB1fWySn1O0UhKQ8", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKHKuuB1fWySn05ajIIb6_secret_EqDGo6BuJoD96VwJabcjWX5Oi", + "client_secret": "pi_3OOX47KuuB1fWySn1O0UhKQ8_secret_ttuUoTtbcDbknk8IBHk3qHEHr", "confirmation_method": "automatic", - "created": 1701973773, + "created": 1702868423, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmKHKuuB1fWySn0Zni6lIk", + "charge": "ch_3OOX47KuuB1fWySn1XlSLhy4", "code": "card_declined", "decline_code": "card_velocity_exceeded", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined for making repeated attempts too frequently or exceeding its amount limit.", "payment_method": { - "id": "pm_1OKmKHKuuB1fWySngoXt39A8", + "id": "pm_1OOX47KuuB1fWySn7HWuYOZN", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973773, + "created": 1702868423, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmKHKuuB1fWySn0Zni6lIk", + "latest_charge": "ch_3OOX47KuuB1fWySn1XlSLhy4", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmKHKuuB1fWySngoXt39A8", + "id": "pm_1OOX47KuuB1fWySn7HWuYOZN", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973773, + "created": 1702868423, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_IueMGbIxsCHLXq?t=1701973774", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_oKDEiNweS2MruV?t=1702868424", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:35 GMT + recorded_at: Mon, 18 Dec 2023 03:00:25 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index ba1af0f7e7..75c53218a6 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Expired_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000000069&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_rKvwlh3lQupFaR","request_duration_ms":623}}' + - '{"last_request_metrics":{"request_id":"req_z8wbzyK3qH4iVE","request_duration_ms":466}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:27 GMT + - Mon, 18 Dec 2023 03:00:17 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e087be7b-f4ba-43b4-91e0-7e44fd308081 + - fb05d9c1-3950-4ec3-8faf-6ee00024f679 Original-Request: - - req_6bwOuq8EC4FbSL + - req_UlIwmjENqKDTdg Request-Id: - - req_6bwOuq8EC4FbSL + - req_UlIwmjENqKDTdg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmKBKuuB1fWySnmFehfnKn", + "id": "pm_1OOX41KuuB1fWySnlSGmp8Sd", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973767, + "created": 1702868417, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:27 GMT + recorded_at: Mon, 18 Dec 2023 03:00:17 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmKBKuuB1fWySnmFehfnKn&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX41KuuB1fWySnlSGmp8Sd&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_6bwOuq8EC4FbSL","request_duration_ms":445}}' + - '{"last_request_metrics":{"request_id":"req_UlIwmjENqKDTdg","request_duration_ms":601}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:27 GMT + - Mon, 18 Dec 2023 03:00:17 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - cefd851c-b607-45e1-8e03-e780902a71e5 + - 841e4f60-7fc4-427f-a5cb-b6faedb24461 Original-Request: - - req_hgcZm0ulCQ6RwH + - req_rEsyQC6SKrkZS0 Request-Id: - - req_hgcZm0ulCQ6RwH + - req_rEsyQC6SKrkZS0 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmKBKuuB1fWySn0FJeKKvv", + "id": "pi_3OOX41KuuB1fWySn0SciFu8x", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKBKuuB1fWySn0FJeKKvv_secret_LmHL0WXzFWe0av2JnU04eMQlr", + "client_secret": "pi_3OOX41KuuB1fWySn0SciFu8x_secret_pNFkvknzk6vdyPr8UBUsG2vYo", "confirmation_method": "automatic", - "created": 1701973767, + "created": 1702868417, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmKBKuuB1fWySnmFehfnKn", + "payment_method": "pm_1OOX41KuuB1fWySnlSGmp8Sd", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:27 GMT + recorded_at: Mon, 18 Dec 2023 03:00:17 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmKBKuuB1fWySn0FJeKKvv/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX41KuuB1fWySn0SciFu8x/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hgcZm0ulCQ6RwH","request_duration_ms":394}}' + - '{"last_request_metrics":{"request_id":"req_rEsyQC6SKrkZS0","request_duration_ms":459}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:28 GMT + - Mon, 18 Dec 2023 03:00:18 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - eed7456a-eb6e-4145-bf56-7de107026d0e + - 3519a392-936b-44b2-9f65-01648fbbb513 Original-Request: - - req_3KLgLHTST3cbvq + - req_9yHzUAv1GXZIix Request-Id: - - req_3KLgLHTST3cbvq + - req_9yHzUAv1GXZIix Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmKBKuuB1fWySn0pIk3CUX", + "charge": "ch_3OOX41KuuB1fWySn0WyKe7Xt", "code": "expired_card", "doc_url": "https://stripe.com/docs/error-codes/expired-card", "message": "Your card has expired.", "param": "exp_month", "payment_intent": { - "id": "pi_3OKmKBKuuB1fWySn0FJeKKvv", + "id": "pi_3OOX41KuuB1fWySn0SciFu8x", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKBKuuB1fWySn0FJeKKvv_secret_LmHL0WXzFWe0av2JnU04eMQlr", + "client_secret": "pi_3OOX41KuuB1fWySn0SciFu8x_secret_pNFkvknzk6vdyPr8UBUsG2vYo", "confirmation_method": "automatic", - "created": 1701973767, + "created": 1702868417, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmKBKuuB1fWySn0pIk3CUX", + "charge": "ch_3OOX41KuuB1fWySn0WyKe7Xt", "code": "expired_card", "doc_url": "https://stripe.com/docs/error-codes/expired-card", "message": "Your card has expired.", "param": "exp_month", "payment_method": { - "id": "pm_1OKmKBKuuB1fWySnmFehfnKn", + "id": "pm_1OOX41KuuB1fWySnlSGmp8Sd", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973767, + "created": 1702868417, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmKBKuuB1fWySn0pIk3CUX", + "latest_charge": "ch_3OOX41KuuB1fWySn0WyKe7Xt", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmKBKuuB1fWySnmFehfnKn", + "id": "pm_1OOX41KuuB1fWySnlSGmp8Sd", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973767, + "created": 1702868417, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_3KLgLHTST3cbvq?t=1701973767", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_9yHzUAv1GXZIix?t=1702868418", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:28 GMT + recorded_at: Mon, 18 Dec 2023 03:00:18 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 32b21a1b5b..f408b6ad41 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Generic_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000000002&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lwQRHFtJffzrsQ","request_duration_ms":391}}' + - '{"last_request_metrics":{"request_id":"req_1GElf07flV8X6q","request_duration_ms":411}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:18 GMT + - Mon, 18 Dec 2023 03:00:08 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 669efd40-7f1b-47f6-83dd-fb79390a9d48 + - 03eb22d9-c9ce-4a3d-bd82-7a4e9d174afc Original-Request: - - req_sMaXqJaA6gftRm + - req_APfkhMuzgLJ7vj Request-Id: - - req_sMaXqJaA6gftRm + - req_APfkhMuzgLJ7vj Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmK2KuuB1fWySnMxyq4XDT", + "id": "pm_1OOX3rKuuB1fWySnaJcdFWN9", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973758, + "created": 1702868408, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:18 GMT + recorded_at: Mon, 18 Dec 2023 03:00:08 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmK2KuuB1fWySnMxyq4XDT&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3rKuuB1fWySnaJcdFWN9&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_sMaXqJaA6gftRm","request_duration_ms":486}}' + - '{"last_request_metrics":{"request_id":"req_APfkhMuzgLJ7vj","request_duration_ms":592}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:19 GMT + - Mon, 18 Dec 2023 03:00:08 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 69971d39-53eb-4925-b9ef-2e51c7b5d216 + - 0ad308c2-3bb8-4cfc-9497-cd8a90a9ce9e Original-Request: - - req_Edc2GpFOTEcEn6 + - req_RKJh9mEO4o54oU Request-Id: - - req_Edc2GpFOTEcEn6 + - req_RKJh9mEO4o54oU Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmK2KuuB1fWySn2QCPpACr", + "id": "pi_3OOX3sKuuB1fWySn0PJupXUF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK2KuuB1fWySn2QCPpACr_secret_ZdjR06SfLSttDB3Px49KgUoQT", + "client_secret": "pi_3OOX3sKuuB1fWySn0PJupXUF_secret_6Au91sxKLf1CsbyYINnYf5Aee", "confirmation_method": "automatic", - "created": 1701973758, + "created": 1702868408, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmK2KuuB1fWySnMxyq4XDT", + "payment_method": "pm_1OOX3rKuuB1fWySnaJcdFWN9", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:19 GMT + recorded_at: Mon, 18 Dec 2023 03:00:08 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmK2KuuB1fWySn2QCPpACr/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3sKuuB1fWySn0PJupXUF/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Edc2GpFOTEcEn6","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_RKJh9mEO4o54oU","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:20 GMT + - Mon, 18 Dec 2023 03:00:09 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - dff1392e-3bdb-4d11-b761-0a232142a10a + - b2fb6399-7503-4233-b5d1-a9ad36af3d89 Original-Request: - - req_ZGyvH69YvR5Hsx + - req_8En7pfSTilO3Uk Request-Id: - - req_ZGyvH69YvR5Hsx + - req_8En7pfSTilO3Uk Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmK2KuuB1fWySn21v5pxgY", + "charge": "ch_3OOX3sKuuB1fWySn0o89bznu", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3OKmK2KuuB1fWySn2QCPpACr", + "id": "pi_3OOX3sKuuB1fWySn0PJupXUF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK2KuuB1fWySn2QCPpACr_secret_ZdjR06SfLSttDB3Px49KgUoQT", + "client_secret": "pi_3OOX3sKuuB1fWySn0PJupXUF_secret_6Au91sxKLf1CsbyYINnYf5Aee", "confirmation_method": "automatic", - "created": 1701973758, + "created": 1702868408, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmK2KuuB1fWySn21v5pxgY", + "charge": "ch_3OOX3sKuuB1fWySn0o89bznu", "code": "card_declined", "decline_code": "generic_decline", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1OKmK2KuuB1fWySnMxyq4XDT", + "id": "pm_1OOX3rKuuB1fWySnaJcdFWN9", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973758, + "created": 1702868408, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmK2KuuB1fWySn21v5pxgY", + "latest_charge": "ch_3OOX3sKuuB1fWySn0o89bznu", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmK2KuuB1fWySnMxyq4XDT", + "id": "pm_1OOX3rKuuB1fWySnaJcdFWN9", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973758, + "created": 1702868408, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_ZGyvH69YvR5Hsx?t=1701973759", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_8En7pfSTilO3Uk?t=1702868408", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:20 GMT + recorded_at: Mon, 18 Dec 2023 03:00:10 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index f0b6f1e890..dfcfe53fa7 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Incorrect_CVC_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000000127&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hgcZm0ulCQ6RwH","request_duration_ms":394}}' + - '{"last_request_metrics":{"request_id":"req_rEsyQC6SKrkZS0","request_duration_ms":459}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:29 GMT + - Mon, 18 Dec 2023 03:00:19 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 01c95690-f11f-4e1a-9876-94e03264a02f + - 9715155d-e955-4708-b94d-399a8524d638 Original-Request: - - req_BAyu0Il0dJhzuJ + - req_LY1XY2P0fND5gw Request-Id: - - req_BAyu0Il0dJhzuJ + - req_LY1XY2P0fND5gw Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmKDKuuB1fWySn5FtoPPKd", + "id": "pm_1OOX43KuuB1fWySn3z63yPAc", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973769, + "created": 1702868419, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:29 GMT + recorded_at: Mon, 18 Dec 2023 03:00:19 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmKDKuuB1fWySn5FtoPPKd&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX43KuuB1fWySn3z63yPAc&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_BAyu0Il0dJhzuJ","request_duration_ms":488}}' + - '{"last_request_metrics":{"request_id":"req_LY1XY2P0fND5gw","request_duration_ms":518}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:29 GMT + - Mon, 18 Dec 2023 03:00:19 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 189c1773-31f9-470f-8359-facb2390e692 + - 5fca6597-6bbf-42da-aa61-94a4e10811e5 Original-Request: - - req_4pZQ1jZwaHgmZN + - req_Jt7rRNvLCmXMaH Request-Id: - - req_4pZQ1jZwaHgmZN + - req_Jt7rRNvLCmXMaH Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmKDKuuB1fWySn2Slcof3c", + "id": "pi_3OOX43KuuB1fWySn01M9GVVO", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKDKuuB1fWySn2Slcof3c_secret_NcYU6gN9Yxni8lyu3frZ7PdCT", + "client_secret": "pi_3OOX43KuuB1fWySn01M9GVVO_secret_9Rwm9NzIX7qcXYVAxOVT1UvFx", "confirmation_method": "automatic", - "created": 1701973769, + "created": 1702868419, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmKDKuuB1fWySn5FtoPPKd", + "payment_method": "pm_1OOX43KuuB1fWySn3z63yPAc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:29 GMT + recorded_at: Mon, 18 Dec 2023 03:00:20 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmKDKuuB1fWySn2Slcof3c/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX43KuuB1fWySn01M9GVVO/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4pZQ1jZwaHgmZN","request_duration_ms":518}}' + - '{"last_request_metrics":{"request_id":"req_Jt7rRNvLCmXMaH","request_duration_ms":512}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:30 GMT + - Mon, 18 Dec 2023 03:00:20 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 6d9cd943-5fb8-4670-9dea-49c4fa06b51d + - 87bcba46-76d6-4b49-a4c3-710f4f201885 Original-Request: - - req_difXV7OkpyOP6N + - req_pTQude62K50qfY Request-Id: - - req_difXV7OkpyOP6N + - req_pTQude62K50qfY Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmKDKuuB1fWySn2ZJrBTr1", + "charge": "ch_3OOX43KuuB1fWySn0EBtTotU", "code": "incorrect_cvc", "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", "message": "Your card's security code is incorrect.", "param": "cvc", "payment_intent": { - "id": "pi_3OKmKDKuuB1fWySn2Slcof3c", + "id": "pi_3OOX43KuuB1fWySn01M9GVVO", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKDKuuB1fWySn2Slcof3c_secret_NcYU6gN9Yxni8lyu3frZ7PdCT", + "client_secret": "pi_3OOX43KuuB1fWySn01M9GVVO_secret_9Rwm9NzIX7qcXYVAxOVT1UvFx", "confirmation_method": "automatic", - "created": 1701973769, + "created": 1702868419, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmKDKuuB1fWySn2ZJrBTr1", + "charge": "ch_3OOX43KuuB1fWySn0EBtTotU", "code": "incorrect_cvc", "doc_url": "https://stripe.com/docs/error-codes/incorrect-cvc", "message": "Your card's security code is incorrect.", "param": "cvc", "payment_method": { - "id": "pm_1OKmKDKuuB1fWySn5FtoPPKd", + "id": "pm_1OOX43KuuB1fWySn3z63yPAc", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973769, + "created": 1702868419, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmKDKuuB1fWySn2ZJrBTr1", + "latest_charge": "ch_3OOX43KuuB1fWySn0EBtTotU", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmKDKuuB1fWySn5FtoPPKd", + "id": "pm_1OOX43KuuB1fWySn3z63yPAc", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973769, + "created": 1702868419, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_difXV7OkpyOP6N?t=1701973770", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_pTQude62K50qfY?t=1702868420", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:31 GMT + recorded_at: Mon, 18 Dec 2023 03:00:21 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index fa71c7ff20..8501f88f4c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Insufficient_funds_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000009995&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Edc2GpFOTEcEn6","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_RKJh9mEO4o54oU","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:20 GMT + - Mon, 18 Dec 2023 03:00:10 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - bbe78f23-b009-4927-9653-a198ee2c41be + - d54d0a69-e856-4b0c-931f-f0ddb11eb421 Original-Request: - - req_z4kmo45ZsMvF8u + - req_6eZynelUyYPRmU Request-Id: - - req_z4kmo45ZsMvF8u + - req_6eZynelUyYPRmU Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmK4KuuB1fWySnOpCrxsDi", + "id": "pm_1OOX3uKuuB1fWySntsZL9Ixt", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973760, + "created": 1702868410, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:20 GMT + recorded_at: Mon, 18 Dec 2023 03:00:10 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmK4KuuB1fWySnOpCrxsDi&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3uKuuB1fWySntsZL9Ixt&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_z4kmo45ZsMvF8u","request_duration_ms":503}}' + - '{"last_request_metrics":{"request_id":"req_6eZynelUyYPRmU","request_duration_ms":604}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:21 GMT + - Mon, 18 Dec 2023 03:00:11 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - c588f80b-5ef6-4c84-a217-587ec4870282 + - 22f45d9a-227a-489a-947c-5f708e50e506 Original-Request: - - req_x0u3ksydIMA7dS + - req_ETvKWeM0JNvVcK Request-Id: - - req_x0u3ksydIMA7dS + - req_ETvKWeM0JNvVcK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmK5KuuB1fWySn0B2Cnu5b", + "id": "pi_3OOX3uKuuB1fWySn2STHwN7J", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK5KuuB1fWySn0B2Cnu5b_secret_7Rom2mxj0iJtfnWWk8qD5F32L", + "client_secret": "pi_3OOX3uKuuB1fWySn2STHwN7J_secret_30HEF34WwwRfE03w8cUbs3zR3", "confirmation_method": "automatic", - "created": 1701973761, + "created": 1702868410, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmK4KuuB1fWySnOpCrxsDi", + "payment_method": "pm_1OOX3uKuuB1fWySntsZL9Ixt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:21 GMT + recorded_at: Mon, 18 Dec 2023 03:00:11 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmK5KuuB1fWySn0B2Cnu5b/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3uKuuB1fWySn2STHwN7J/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_x0u3ksydIMA7dS","request_duration_ms":416}}' + - '{"last_request_metrics":{"request_id":"req_ETvKWeM0JNvVcK","request_duration_ms":508}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:22 GMT + - Mon, 18 Dec 2023 03:00:12 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 87f25cb7-1177-48c0-9b34-092d730303b2 + - eb748aac-460e-49d1-8e66-3ea7947febf7 Original-Request: - - req_E9zUkqHUpch4Qj + - req_LV3lb0zLlQJgDj Request-Id: - - req_E9zUkqHUpch4Qj + - req_LV3lb0zLlQJgDj Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmK5KuuB1fWySn00gTnjjf", + "charge": "ch_3OOX3uKuuB1fWySn2ysQGQt8", "code": "card_declined", "decline_code": "insufficient_funds", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card has insufficient funds.", "payment_intent": { - "id": "pi_3OKmK5KuuB1fWySn0B2Cnu5b", + "id": "pi_3OOX3uKuuB1fWySn2STHwN7J", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK5KuuB1fWySn0B2Cnu5b_secret_7Rom2mxj0iJtfnWWk8qD5F32L", + "client_secret": "pi_3OOX3uKuuB1fWySn2STHwN7J_secret_30HEF34WwwRfE03w8cUbs3zR3", "confirmation_method": "automatic", - "created": 1701973761, + "created": 1702868410, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmK5KuuB1fWySn00gTnjjf", + "charge": "ch_3OOX3uKuuB1fWySn2ysQGQt8", "code": "card_declined", "decline_code": "insufficient_funds", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card has insufficient funds.", "payment_method": { - "id": "pm_1OKmK4KuuB1fWySnOpCrxsDi", + "id": "pm_1OOX3uKuuB1fWySntsZL9Ixt", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973760, + "created": 1702868410, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmK5KuuB1fWySn00gTnjjf", + "latest_charge": "ch_3OOX3uKuuB1fWySn2ysQGQt8", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmK4KuuB1fWySnOpCrxsDi", + "id": "pm_1OOX3uKuuB1fWySntsZL9Ixt", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973760, + "created": 1702868410, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_E9zUkqHUpch4Qj?t=1701973761", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_LV3lb0zLlQJgDj?t=1702868411", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:22 GMT + recorded_at: Mon, 18 Dec 2023 03:00:12 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 87527e7351..1a41673d6f 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Lost_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000009987&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_x0u3ksydIMA7dS","request_duration_ms":416}}' + - '{"last_request_metrics":{"request_id":"req_ETvKWeM0JNvVcK","request_duration_ms":508}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:22 GMT + - Mon, 18 Dec 2023 03:00:12 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - a9d8d6da-619c-489a-93d3-2a04f51b0c0e + - f8d24294-aa93-4ba4-8f9a-900dc175128f Original-Request: - - req_UQHsuBraWOh7A9 + - req_oKlsa9npCxDLVq Request-Id: - - req_UQHsuBraWOh7A9 + - req_oKlsa9npCxDLVq Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmK6KuuB1fWySnHXSHAdVZ", + "id": "pm_1OOX3wKuuB1fWySnuDnxW0kw", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973762, + "created": 1702868412, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:22 GMT + recorded_at: Mon, 18 Dec 2023 03:00:13 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmK6KuuB1fWySnHXSHAdVZ&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3wKuuB1fWySnuDnxW0kw&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_UQHsuBraWOh7A9","request_duration_ms":490}}' + - '{"last_request_metrics":{"request_id":"req_oKlsa9npCxDLVq","request_duration_ms":599}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:23 GMT + - Mon, 18 Dec 2023 03:00:13 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 31528306-f1cb-429f-afb5-891bbaff61f5 + - 7c512471-3ba7-4bdc-83b8-e5eaf663fd03 Original-Request: - - req_yUdUaiTwyvQZFc + - req_4R82UX2WTXfThh Request-Id: - - req_yUdUaiTwyvQZFc + - req_4R82UX2WTXfThh Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmK7KuuB1fWySn2NsWOtN1", + "id": "pi_3OOX3xKuuB1fWySn1yeNIgdD", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK7KuuB1fWySn2NsWOtN1_secret_tJtddiPCCDox3ZwBB3uxaUgSn", + "client_secret": "pi_3OOX3xKuuB1fWySn1yeNIgdD_secret_4MlEQbM4BdGfLlg5OV4S9DJQB", "confirmation_method": "automatic", - "created": 1701973763, + "created": 1702868413, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmK6KuuB1fWySnHXSHAdVZ", + "payment_method": "pm_1OOX3wKuuB1fWySnuDnxW0kw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:23 GMT + recorded_at: Mon, 18 Dec 2023 03:00:13 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmK7KuuB1fWySn2NsWOtN1/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3xKuuB1fWySn1yeNIgdD/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_yUdUaiTwyvQZFc","request_duration_ms":517}}' + - '{"last_request_metrics":{"request_id":"req_4R82UX2WTXfThh","request_duration_ms":510}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:24 GMT + - Mon, 18 Dec 2023 03:00:14 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 77e8b899-dd18-4f5c-a3df-17c667da2f8e + - f010db28-4ffd-4b4a-ba90-4cad24cf51ca Original-Request: - - req_v0nNrdX6LTijGV + - req_shAgVFOxVTCeYX Request-Id: - - req_v0nNrdX6LTijGV + - req_shAgVFOxVTCeYX Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmK7KuuB1fWySn2JGX5kDG", + "charge": "ch_3OOX3xKuuB1fWySn1cfF21ng", "code": "card_declined", "decline_code": "lost_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3OKmK7KuuB1fWySn2NsWOtN1", + "id": "pi_3OOX3xKuuB1fWySn1yeNIgdD", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK7KuuB1fWySn2NsWOtN1_secret_tJtddiPCCDox3ZwBB3uxaUgSn", + "client_secret": "pi_3OOX3xKuuB1fWySn1yeNIgdD_secret_4MlEQbM4BdGfLlg5OV4S9DJQB", "confirmation_method": "automatic", - "created": 1701973763, + "created": 1702868413, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmK7KuuB1fWySn2JGX5kDG", + "charge": "ch_3OOX3xKuuB1fWySn1cfF21ng", "code": "card_declined", "decline_code": "lost_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1OKmK6KuuB1fWySnHXSHAdVZ", + "id": "pm_1OOX3wKuuB1fWySnuDnxW0kw", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973762, + "created": 1702868412, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmK7KuuB1fWySn2JGX5kDG", + "latest_charge": "ch_3OOX3xKuuB1fWySn1cfF21ng", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmK6KuuB1fWySnHXSHAdVZ", + "id": "pm_1OOX3wKuuB1fWySnuDnxW0kw", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973762, + "created": 1702868412, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_v0nNrdX6LTijGV?t=1701973763", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_shAgVFOxVTCeYX?t=1702868413", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:24 GMT + recorded_at: Mon, 18 Dec 2023 03:00:14 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index f26b85e204..60a0f5a970 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Processing_error_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000000119&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4pZQ1jZwaHgmZN","request_duration_ms":518}}' + - '{"last_request_metrics":{"request_id":"req_Jt7rRNvLCmXMaH","request_duration_ms":512}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:31 GMT + - Mon, 18 Dec 2023 03:00:21 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5dfda20c-4f84-4bed-beda-c886a9dc67fc + - a9f7b861-6ef7-4c7f-9fa4-b384868ea927 Original-Request: - - req_3IEMQjweLQkzxH + - req_tm0v9etXqMrHKc Request-Id: - - req_3IEMQjweLQkzxH + - req_tm0v9etXqMrHKc Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmKFKuuB1fWySnS8jCZmUu", + "id": "pm_1OOX45KuuB1fWySnlqcb6lqM", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973771, + "created": 1702868421, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:31 GMT + recorded_at: Mon, 18 Dec 2023 03:00:21 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmKFKuuB1fWySnS8jCZmUu&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX45KuuB1fWySnlqcb6lqM&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_3IEMQjweLQkzxH","request_duration_ms":492}}' + - '{"last_request_metrics":{"request_id":"req_tm0v9etXqMrHKc","request_duration_ms":498}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:32 GMT + - Mon, 18 Dec 2023 03:00:21 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 454ae177-e6cc-43e7-8497-62147f8b3f6d + - 6e2bf90c-9e09-46d9-8c88-6688ede7dad6 Original-Request: - - req_Vihel6UGT7nLhb + - req_wiBXXUIBwZ6cWP Request-Id: - - req_Vihel6UGT7nLhb + - req_wiBXXUIBwZ6cWP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmKFKuuB1fWySn0dhzlWxo", + "id": "pi_3OOX45KuuB1fWySn2in4nHXJ", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKFKuuB1fWySn0dhzlWxo_secret_YJ7r36K8NEZRb0Cxx2z87SsiR", + "client_secret": "pi_3OOX45KuuB1fWySn2in4nHXJ_secret_ndvq1MzjLvvMiLYLglpwNs16L", "confirmation_method": "automatic", - "created": 1701973771, + "created": 1702868421, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmKFKuuB1fWySnS8jCZmUu", + "payment_method": "pm_1OOX45KuuB1fWySnlqcb6lqM", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:32 GMT + recorded_at: Mon, 18 Dec 2023 03:00:22 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmKFKuuB1fWySn0dhzlWxo/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX45KuuB1fWySn2in4nHXJ/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Vihel6UGT7nLhb","request_duration_ms":518}}' + - '{"last_request_metrics":{"request_id":"req_wiBXXUIBwZ6cWP","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:33 GMT + - Mon, 18 Dec 2023 03:00:23 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - d796786e-27a8-4e96-843f-dc55252c4a0e + - 0430a725-1f0f-4a29-af94-95d9f250520a Original-Request: - - req_7ecs3axsMXPiUR + - req_xTRwJvhMbrMx5w Request-Id: - - req_7ecs3axsMXPiUR + - req_xTRwJvhMbrMx5w Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,12 +336,12 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmKFKuuB1fWySn0f07ar2K", + "charge": "ch_3OOX45KuuB1fWySn2aRUUF6o", "code": "processing_error", "doc_url": "https://stripe.com/docs/error-codes/processing-error", "message": "An error occurred while processing your card. Try again in a little bit.", "payment_intent": { - "id": "pi_3OKmKFKuuB1fWySn0dhzlWxo", + "id": "pi_3OOX45KuuB1fWySn2in4nHXJ", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -356,20 +356,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmKFKuuB1fWySn0dhzlWxo_secret_YJ7r36K8NEZRb0Cxx2z87SsiR", + "client_secret": "pi_3OOX45KuuB1fWySn2in4nHXJ_secret_ndvq1MzjLvvMiLYLglpwNs16L", "confirmation_method": "automatic", - "created": 1701973771, + "created": 1702868421, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmKFKuuB1fWySn0f07ar2K", + "charge": "ch_3OOX45KuuB1fWySn2aRUUF6o", "code": "processing_error", "doc_url": "https://stripe.com/docs/error-codes/processing-error", "message": "An error occurred while processing your card. Try again in a little bit.", "payment_method": { - "id": "pm_1OKmKFKuuB1fWySnS8jCZmUu", + "id": "pm_1OOX45KuuB1fWySnlqcb6lqM", "object": "payment_method", "billing_details": { "address": { @@ -409,7 +409,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973771, + "created": 1702868421, "customer": null, "livemode": false, "metadata": { @@ -418,7 +418,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmKFKuuB1fWySn0f07ar2K", + "latest_charge": "ch_3OOX45KuuB1fWySn2aRUUF6o", "livemode": false, "metadata": { }, @@ -450,7 +450,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmKFKuuB1fWySnS8jCZmUu", + "id": "pm_1OOX45KuuB1fWySnlqcb6lqM", "object": "payment_method", "billing_details": { "address": { @@ -490,16 +490,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973771, + "created": 1702868421, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_7ecs3axsMXPiUR?t=1701973772", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_xTRwJvhMbrMx5w?t=1702868422", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:33 GMT + recorded_at: Mon, 18 Dec 2023 03:00:23 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml similarity index 82% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml index 6c48370c20..d897f6e97c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_invalid/invalid_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Stolen_card_decline/raises_Stripe_error_with_payment_intent_last_payment_error_as_message.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000000000009979&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_yUdUaiTwyvQZFc","request_duration_ms":517}}' + - '{"last_request_metrics":{"request_id":"req_4R82UX2WTXfThh","request_duration_ms":510}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:25 GMT + - Mon, 18 Dec 2023 03:00:15 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f17959ef-8478-4ddb-b511-6ee8479eb1af + - c37687a1-ff20-4a4f-9070-22ee90d22629 Original-Request: - - req_VbwtzVggAX2IIL + - req_YtC4PaND330qEK Request-Id: - - req_VbwtzVggAX2IIL + - req_YtC4PaND330qEK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmK8KuuB1fWySnM2ZFudU0", + "id": "pm_1OOX3yKuuB1fWySnMcSOsQDh", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973764, + "created": 1702868415, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:25 GMT + recorded_at: Mon, 18 Dec 2023 03:00:15 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmK8KuuB1fWySnM2ZFudU0&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3yKuuB1fWySnMcSOsQDh&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VbwtzVggAX2IIL","request_duration_ms":506}}' + - '{"last_request_metrics":{"request_id":"req_YtC4PaND330qEK","request_duration_ms":536}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:25 GMT + - Mon, 18 Dec 2023 03:00:15 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - c9846748-c8f4-4a51-924c-8647a77b3f09 + - c24f7094-f043-48aa-b89c-2bb253bc3166 Original-Request: - - req_rKvwlh3lQupFaR + - req_z8wbzyK3qH4iVE Request-Id: - - req_rKvwlh3lQupFaR + - req_z8wbzyK3qH4iVE Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmK9KuuB1fWySn2IT1IFMD", + "id": "pi_3OOX3zKuuB1fWySn1YjRtfbS", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK9KuuB1fWySn2IT1IFMD_secret_YAkaQkFyKLWnhYvXQgBwAPo8c", + "client_secret": "pi_3OOX3zKuuB1fWySn1YjRtfbS_secret_SBzBRly94zuxLrim20hWcjp3o", "confirmation_method": "automatic", - "created": 1701973765, + "created": 1702868415, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmK8KuuB1fWySnM2ZFudU0", + "payment_method": "pm_1OOX3yKuuB1fWySnMcSOsQDh", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:25 GMT + recorded_at: Mon, 18 Dec 2023 03:00:15 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmK9KuuB1fWySn2IT1IFMD/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3zKuuB1fWySn1YjRtfbS/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_rKvwlh3lQupFaR","request_duration_ms":623}}' + - '{"last_request_metrics":{"request_id":"req_z8wbzyK3qH4iVE","request_duration_ms":466}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:26 GMT + - Mon, 18 Dec 2023 03:00:16 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 77986676-c47d-433d-92da-fa72073046e0 + - a90d225f-7992-436c-b157-df75a83b4299 Original-Request: - - req_Y2VBCuGx7MOd4n + - req_t3rcI9OTmZnh1r Request-Id: - - req_Y2VBCuGx7MOd4n + - req_t3rcI9OTmZnh1r Stripe-Should-Retry: - 'false' Stripe-Version: @@ -336,13 +336,13 @@ http_interactions: string: | { "error": { - "charge": "ch_3OKmK9KuuB1fWySn2wZAvHTY", + "charge": "ch_3OOX3zKuuB1fWySn1hQrEDkw", "code": "card_declined", "decline_code": "stolen_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_intent": { - "id": "pi_3OKmK9KuuB1fWySn2IT1IFMD", + "id": "pi_3OOX3zKuuB1fWySn1YjRtfbS", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -357,21 +357,21 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmK9KuuB1fWySn2IT1IFMD_secret_YAkaQkFyKLWnhYvXQgBwAPo8c", + "client_secret": "pi_3OOX3zKuuB1fWySn1YjRtfbS_secret_SBzBRly94zuxLrim20hWcjp3o", "confirmation_method": "automatic", - "created": 1701973765, + "created": 1702868415, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": { - "charge": "ch_3OKmK9KuuB1fWySn2wZAvHTY", + "charge": "ch_3OOX3zKuuB1fWySn1hQrEDkw", "code": "card_declined", "decline_code": "stolen_card", "doc_url": "https://stripe.com/docs/error-codes/card-declined", "message": "Your card was declined.", "payment_method": { - "id": "pm_1OKmK8KuuB1fWySnM2ZFudU0", + "id": "pm_1OOX3yKuuB1fWySnMcSOsQDh", "object": "payment_method", "billing_details": { "address": { @@ -411,7 +411,7 @@ http_interactions: }, "wallet": null }, - "created": 1701973764, + "created": 1702868415, "customer": null, "livemode": false, "metadata": { @@ -420,7 +420,7 @@ http_interactions: }, "type": "card_error" }, - "latest_charge": "ch_3OKmK9KuuB1fWySn2wZAvHTY", + "latest_charge": "ch_3OOX3zKuuB1fWySn1hQrEDkw", "livemode": false, "metadata": { }, @@ -452,7 +452,7 @@ http_interactions: "transfer_group": null }, "payment_method": { - "id": "pm_1OKmK8KuuB1fWySnM2ZFudU0", + "id": "pm_1OOX3yKuuB1fWySnMcSOsQDh", "object": "payment_method", "billing_details": { "address": { @@ -492,16 +492,16 @@ http_interactions: }, "wallet": null }, - "created": 1701973764, + "created": 1702868415, "customer": null, "livemode": false, "metadata": { }, "type": "card" }, - "request_log_url": "https://dashboard.stripe.com/test/logs/req_Y2VBCuGx7MOd4n?t=1701973765", + "request_log_url": "https://dashboard.stripe.com/test/logs/req_t3rcI9OTmZnh1r?t=1702868415", "type": "card_error" } } - recorded_at: Thu, 07 Dec 2023 18:29:26 GMT + recorded_at: Mon, 18 Dec 2023 03:00:16 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml index 04ddeb3a7a..647a8248a3 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=378282246310005&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_N5J7K8MWYGP0c2","request_duration_ms":986}}' + - '{"last_request_metrics":{"request_id":"req_8BiP0ytTw5Luf1","request_duration_ms":1178}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:18 GMT + - Mon, 18 Dec 2023 02:59:06 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 7071d7a7-7f61-4ece-9047-1d47e61d4622 + - 6969b25b-30fd-442c-838c-28066afec0e5 Original-Request: - - req_c5kBdHTS5evHVC + - req_hi9QnG1NeBVA02 Request-Id: - - req_c5kBdHTS5evHVC + - req_hi9QnG1NeBVA02 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "id": "pm_1OOX2sKuuB1fWySno8h7rLX7", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973698, + "created": 1702868346, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:18 GMT + recorded_at: Mon, 18 Dec 2023 02:59:07 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJ4KuuB1fWySnoTBZeCPl&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2sKuuB1fWySno8h7rLX7&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_c5kBdHTS5evHVC","request_duration_ms":520}}' + - '{"last_request_metrics":{"request_id":"req_hi9QnG1NeBVA02","request_duration_ms":570}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:18 GMT + - Mon, 18 Dec 2023 02:59:07 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - a15d892b-e9d1-412d-82b0-cdcf56440171 + - 3cc029b0-97f0-4b44-9e11-8363df1c1b5d Original-Request: - - req_WahZc7YT6N4h8j + - req_1tn07870IWMfoi Request-Id: - - req_WahZc7YT6N4h8j + - req_1tn07870IWMfoi Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ4KuuB1fWySn03pSVypj", + "id": "pi_3OOX2tKuuB1fWySn0ld8f6Zp", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ4KuuB1fWySn03pSVypj_secret_tYHqNzc81pH5e5ywylHSBurUo", + "client_secret": "pi_3OOX2tKuuB1fWySn0ld8f6Zp_secret_hyOlFGCbtvNnb5LhZ7sdtyCRN", "confirmation_method": "automatic", - "created": 1701973698, + "created": 1702868347, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "payment_method": "pm_1OOX2sKuuB1fWySno8h7rLX7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:19 GMT + recorded_at: Mon, 18 Dec 2023 02:59:07 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ4KuuB1fWySn03pSVypj/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2tKuuB1fWySn0ld8f6Zp/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_WahZc7YT6N4h8j","request_duration_ms":413}}' + - '{"last_request_metrics":{"request_id":"req_1tn07870IWMfoi","request_duration_ms":410}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:19 GMT + - Mon, 18 Dec 2023 02:59:08 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e7263d1d-8619-4e93-8aa7-c480a3d36cfc + - f948cf67-f245-4d68-9f4e-4a81cde8c086 Original-Request: - - req_RD89TdhsDz2Z38 + - req_u8CBBmIZPU3g2G Request-Id: - - req_RD89TdhsDz2Z38 + - req_u8CBBmIZPU3g2G Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ4KuuB1fWySn03pSVypj", + "id": "pi_3OOX2tKuuB1fWySn0ld8f6Zp", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ4KuuB1fWySn03pSVypj_secret_tYHqNzc81pH5e5ywylHSBurUo", + "client_secret": "pi_3OOX2tKuuB1fWySn0ld8f6Zp_secret_hyOlFGCbtvNnb5LhZ7sdtyCRN", "confirmation_method": "automatic", - "created": 1701973698, + "created": 1702868347, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ4KuuB1fWySn0sYgwcIE", + "latest_charge": "ch_3OOX2tKuuB1fWySn0o3R7WDL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "payment_method": "pm_1OOX2sKuuB1fWySno8h7rLX7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:19 GMT + recorded_at: Mon, 18 Dec 2023 02:59:08 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ4KuuB1fWySn03pSVypj + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2tKuuB1fWySn0ld8f6Zp body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_RD89TdhsDz2Z38","request_duration_ms":939}}' + - '{"last_request_metrics":{"request_id":"req_u8CBBmIZPU3g2G","request_duration_ms":1018}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:20 GMT + - Mon, 18 Dec 2023 02:59:08 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_GhjPXki3UyEXLI + - req_CDde5UJgUWwAV7 Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ4KuuB1fWySn03pSVypj", + "id": "pi_3OOX2tKuuB1fWySn0ld8f6Zp", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ4KuuB1fWySn03pSVypj_secret_tYHqNzc81pH5e5ywylHSBurUo", + "client_secret": "pi_3OOX2tKuuB1fWySn0ld8f6Zp_secret_hyOlFGCbtvNnb5LhZ7sdtyCRN", "confirmation_method": "automatic", - "created": 1701973698, + "created": 1702868347, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ4KuuB1fWySn0sYgwcIE", + "latest_charge": "ch_3OOX2tKuuB1fWySn0o3R7WDL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "payment_method": "pm_1OOX2sKuuB1fWySno8h7rLX7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:20 GMT + recorded_at: Mon, 18 Dec 2023 02:59:08 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ4KuuB1fWySn03pSVypj/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2tKuuB1fWySn0ld8f6Zp/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GhjPXki3UyEXLI","request_duration_ms":308}}' + - '{"last_request_metrics":{"request_id":"req_CDde5UJgUWwAV7","request_duration_ms":410}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:21 GMT + - Mon, 18 Dec 2023 02:59:09 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e35bb316-dc04-4561-88d5-a113029f35f1 + - 0e659b74-5430-4652-863f-e6febdf3c856 Original-Request: - - req_p1q3Za7UzBWztp + - req_W6PQ8WtkNUALmO Request-Id: - - req_p1q3Za7UzBWztp + - req_W6PQ8WtkNUALmO Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ4KuuB1fWySn03pSVypj", + "id": "pi_3OOX2tKuuB1fWySn0ld8f6Zp", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ4KuuB1fWySn03pSVypj_secret_tYHqNzc81pH5e5ywylHSBurUo", + "client_secret": "pi_3OOX2tKuuB1fWySn0ld8f6Zp_secret_hyOlFGCbtvNnb5LhZ7sdtyCRN", "confirmation_method": "automatic", - "created": 1701973698, + "created": 1702868347, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ4KuuB1fWySn0sYgwcIE", + "latest_charge": "ch_3OOX2tKuuB1fWySn0o3R7WDL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "payment_method": "pm_1OOX2sKuuB1fWySno8h7rLX7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:21 GMT + recorded_at: Mon, 18 Dec 2023 02:59:09 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ4KuuB1fWySn03pSVypj + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2tKuuB1fWySn0ld8f6Zp body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_p1q3Za7UzBWztp","request_duration_ms":1145}}' + - '{"last_request_metrics":{"request_id":"req_W6PQ8WtkNUALmO","request_duration_ms":1122}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:21 GMT + - Mon, 18 Dec 2023 02:59:10 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_zD6wFMnswpGKqr + - req_rjDthkvsOv7Huu Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ4KuuB1fWySn03pSVypj", + "id": "pi_3OOX2tKuuB1fWySn0ld8f6Zp", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ4KuuB1fWySn03pSVypj_secret_tYHqNzc81pH5e5ywylHSBurUo", + "client_secret": "pi_3OOX2tKuuB1fWySn0ld8f6Zp_secret_hyOlFGCbtvNnb5LhZ7sdtyCRN", "confirmation_method": "automatic", - "created": 1701973698, + "created": 1702868347, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ4KuuB1fWySn0sYgwcIE", + "latest_charge": "ch_3OOX2tKuuB1fWySn0o3R7WDL", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ4KuuB1fWySnoTBZeCPl", + "payment_method": "pm_1OOX2sKuuB1fWySno8h7rLX7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:21 GMT + recorded_at: Mon, 18 Dec 2023 02:59:10 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml index e3d8c7711c..381673a734 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_American_Express/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=378282246310005&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VcABBYmtJMMIBJ","request_duration_ms":374}}' + - '{"last_request_metrics":{"request_id":"req_OFyPXSYFIxW3RL","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:16 GMT + - Mon, 18 Dec 2023 02:59:04 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 310d39ba-b012-4a37-a159-82b916e37682 + - 5bd5dc8b-188a-45c1-88c3-b5c2bcde208c Original-Request: - - req_4UBHDMYvvr60tG + - req_bBn3HLkhPNXbDR Request-Id: - - req_4UBHDMYvvr60tG + - req_bBn3HLkhPNXbDR Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJ2KuuB1fWySnuNaARxNl", + "id": "pm_1OOX2qKuuB1fWySnmTEng8e3", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973696, + "created": 1702868344, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:16 GMT + recorded_at: Mon, 18 Dec 2023 02:59:04 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJ2KuuB1fWySnuNaARxNl&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2qKuuB1fWySnmTEng8e3&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4UBHDMYvvr60tG","request_duration_ms":443}}' + - '{"last_request_metrics":{"request_id":"req_bBn3HLkhPNXbDR","request_duration_ms":482}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:16 GMT + - Mon, 18 Dec 2023 02:59:05 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 30fe486f-00bd-4b24-b176-d989378489b7 + - 5c02d3fd-b28c-4ad4-a841-6fbf5e978db1 Original-Request: - - req_3Np64STffepu74 + - req_pHcw4VeFShDeD0 Request-Id: - - req_3Np64STffepu74 + - req_pHcw4VeFShDeD0 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ2KuuB1fWySn1OkZ0ypb", + "id": "pi_3OOX2qKuuB1fWySn2JNRe1Pr", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ2KuuB1fWySn1OkZ0ypb_secret_LJTK1RctgjxD0rCHiCXhcOd44", + "client_secret": "pi_3OOX2qKuuB1fWySn2JNRe1Pr_secret_4uBn48r1mq0uFp6stS7VB2mXl", "confirmation_method": "automatic", - "created": 1701973696, + "created": 1702868344, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ2KuuB1fWySnuNaARxNl", + "payment_method": "pm_1OOX2qKuuB1fWySnmTEng8e3", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:16 GMT + recorded_at: Mon, 18 Dec 2023 02:59:05 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ2KuuB1fWySn1OkZ0ypb/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2qKuuB1fWySn2JNRe1Pr/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_3Np64STffepu74","request_duration_ms":464}}' + - '{"last_request_metrics":{"request_id":"req_pHcw4VeFShDeD0","request_duration_ms":450}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:17 GMT + - Mon, 18 Dec 2023 02:59:06 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 46eaf312-f967-482c-bda6-d397dc6de7ed + - f0cbb7d4-cbe0-4c21-9682-c789f2a4783e Original-Request: - - req_N5J7K8MWYGP0c2 + - req_8BiP0ytTw5Luf1 Request-Id: - - req_N5J7K8MWYGP0c2 + - req_8BiP0ytTw5Luf1 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ2KuuB1fWySn1OkZ0ypb", + "id": "pi_3OOX2qKuuB1fWySn2JNRe1Pr", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ2KuuB1fWySn1OkZ0ypb_secret_LJTK1RctgjxD0rCHiCXhcOd44", + "client_secret": "pi_3OOX2qKuuB1fWySn2JNRe1Pr_secret_4uBn48r1mq0uFp6stS7VB2mXl", "confirmation_method": "automatic", - "created": 1701973696, + "created": 1702868344, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ2KuuB1fWySn13i8dx0R", + "latest_charge": "ch_3OOX2qKuuB1fWySn2MaCELrB", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ2KuuB1fWySnuNaARxNl", + "payment_method": "pm_1OOX2qKuuB1fWySnmTEng8e3", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:17 GMT + recorded_at: Mon, 18 Dec 2023 02:59:06 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml index 38615d45f9..1a0690feb6 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6555900000604105&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_0vzgdOb8ZSNFTk","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_gqxqcoX617vGaw","request_duration_ms":1022}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:50 GMT + - Mon, 18 Dec 2023 02:59:38 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9ce6468f-5125-4f1f-9803-1f2ec538923d + - ac2c5bf2-9173-4d6f-8b0d-bff597d21e72 Original-Request: - - req_ZzHa3UD37AaTbR + - req_iaw3aGyfuxWPeK Request-Id: - - req_ZzHa3UD37AaTbR + - req_iaw3aGyfuxWPeK Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "id": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973730, + "created": 1702868378, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:50 GMT + recorded_at: Mon, 18 Dec 2023 02:59:38 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJaKuuB1fWySnhW03Hqhy&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3OKuuB1fWySnJxCJgrrc&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ZzHa3UD37AaTbR","request_duration_ms":587}}' + - '{"last_request_metrics":{"request_id":"req_iaw3aGyfuxWPeK","request_duration_ms":466}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:50 GMT + - Mon, 18 Dec 2023 02:59:38 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9c6d8e6b-79d0-4c31-bcd9-52bfc0d44e2f + - d411a908-d7b9-4bd0-ac07-12e489787f1b Original-Request: - - req_OSJzdv5UC2hJJk + - req_Qacvd3iZSYIjTg Request-Id: - - req_OSJzdv5UC2hJJk + - req_Qacvd3iZSYIjTg Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJaKuuB1fWySn29wa3SrP", + "id": "pi_3OOX3OKuuB1fWySn05f1jjOF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJaKuuB1fWySn29wa3SrP_secret_qF9EUBKtTCrq7n17vfR54U0ak", + "client_secret": "pi_3OOX3OKuuB1fWySn05f1jjOF_secret_fyrwvlnybEOPVMrxYi7OU1eYD", "confirmation_method": "automatic", - "created": 1701973730, + "created": 1702868378, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "payment_method": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:50 GMT + recorded_at: Mon, 18 Dec 2023 02:59:38 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJaKuuB1fWySn29wa3SrP/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3OKuuB1fWySn05f1jjOF/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OSJzdv5UC2hJJk","request_duration_ms":513}}' + - '{"last_request_metrics":{"request_id":"req_Qacvd3iZSYIjTg","request_duration_ms":411}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:51 GMT + - Mon, 18 Dec 2023 02:59:39 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f20302e6-bbe2-4262-8f77-9e289543cbae + - 7e33fbdf-841f-42b5-9c2a-ab1a42da38f0 Original-Request: - - req_IhuAK6TK5xWyjn + - req_KoEoUzOzOxdHNp Request-Id: - - req_IhuAK6TK5xWyjn + - req_KoEoUzOzOxdHNp Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJaKuuB1fWySn29wa3SrP", + "id": "pi_3OOX3OKuuB1fWySn05f1jjOF", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJaKuuB1fWySn29wa3SrP_secret_qF9EUBKtTCrq7n17vfR54U0ak", + "client_secret": "pi_3OOX3OKuuB1fWySn05f1jjOF_secret_fyrwvlnybEOPVMrxYi7OU1eYD", "confirmation_method": "automatic", - "created": 1701973730, + "created": 1702868378, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJaKuuB1fWySn2PzhRvfD", + "latest_charge": "ch_3OOX3OKuuB1fWySn0eQB3gJb", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "payment_method": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:52 GMT + recorded_at: Mon, 18 Dec 2023 02:59:39 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJaKuuB1fWySn29wa3SrP + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3OKuuB1fWySn05f1jjOF body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_IhuAK6TK5xWyjn","request_duration_ms":1041}}' + - '{"last_request_metrics":{"request_id":"req_KoEoUzOzOxdHNp","request_duration_ms":1016}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:52 GMT + - Mon, 18 Dec 2023 02:59:40 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_If3n3em9wCyySE + - req_ZJXYsISW3Pre8L Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJaKuuB1fWySn29wa3SrP", + "id": "pi_3OOX3OKuuB1fWySn05f1jjOF", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJaKuuB1fWySn29wa3SrP_secret_qF9EUBKtTCrq7n17vfR54U0ak", + "client_secret": "pi_3OOX3OKuuB1fWySn05f1jjOF_secret_fyrwvlnybEOPVMrxYi7OU1eYD", "confirmation_method": "automatic", - "created": 1701973730, + "created": 1702868378, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJaKuuB1fWySn2PzhRvfD", + "latest_charge": "ch_3OOX3OKuuB1fWySn0eQB3gJb", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "payment_method": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:52 GMT + recorded_at: Mon, 18 Dec 2023 02:59:40 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJaKuuB1fWySn29wa3SrP/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3OKuuB1fWySn05f1jjOF/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_If3n3em9wCyySE","request_duration_ms":311}}' + - '{"last_request_metrics":{"request_id":"req_ZJXYsISW3Pre8L","request_duration_ms":408}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:53 GMT + - Mon, 18 Dec 2023 02:59:41 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 398a06b7-0575-4f95-b5d7-53204b1555b4 + - 52d17e7d-dce0-4154-b580-5b1ed5a492b7 Original-Request: - - req_AJEcdUUUFRc49d + - req_qQ2Z57FjuzMYaN Request-Id: - - req_AJEcdUUUFRc49d + - req_qQ2Z57FjuzMYaN Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJaKuuB1fWySn29wa3SrP", + "id": "pi_3OOX3OKuuB1fWySn05f1jjOF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJaKuuB1fWySn29wa3SrP_secret_qF9EUBKtTCrq7n17vfR54U0ak", + "client_secret": "pi_3OOX3OKuuB1fWySn05f1jjOF_secret_fyrwvlnybEOPVMrxYi7OU1eYD", "confirmation_method": "automatic", - "created": 1701973730, + "created": 1702868378, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJaKuuB1fWySn2PzhRvfD", + "latest_charge": "ch_3OOX3OKuuB1fWySn0eQB3gJb", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "payment_method": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:53 GMT + recorded_at: Mon, 18 Dec 2023 02:59:41 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJaKuuB1fWySn29wa3SrP + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3OKuuB1fWySn05f1jjOF body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AJEcdUUUFRc49d","request_duration_ms":1147}}' + - '{"last_request_metrics":{"request_id":"req_qQ2Z57FjuzMYaN","request_duration_ms":1020}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:53 GMT + - Mon, 18 Dec 2023 02:59:41 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_ukNukAiO0qHnGG + - req_zb0vl5m9Ua0WEi Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJaKuuB1fWySn29wa3SrP", + "id": "pi_3OOX3OKuuB1fWySn05f1jjOF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJaKuuB1fWySn29wa3SrP_secret_qF9EUBKtTCrq7n17vfR54U0ak", + "client_secret": "pi_3OOX3OKuuB1fWySn05f1jjOF_secret_fyrwvlnybEOPVMrxYi7OU1eYD", "confirmation_method": "automatic", - "created": 1701973730, + "created": 1702868378, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJaKuuB1fWySn2PzhRvfD", + "latest_charge": "ch_3OOX3OKuuB1fWySn0eQB3gJb", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJaKuuB1fWySnhW03Hqhy", + "payment_method": "pm_1OOX3OKuuB1fWySnJxCJgrrc", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:53 GMT + recorded_at: Mon, 18 Dec 2023 02:59:41 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml index 3bbb3b1803..1911c9662d 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_BCcard_and_DinaCard/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6555900000604105&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_XHDBz2Pm2pBXiS","request_duration_ms":305}}' + - '{"last_request_metrics":{"request_id":"req_eruxnP3AF7YuV5","request_duration_ms":404}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:48 GMT + - Mon, 18 Dec 2023 02:59:36 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - d3ede57f-8a06-475b-bc13-85ee855a87f8 + - c6eca76d-4ca0-494e-b416-ef6e469641bd Original-Request: - - req_zozOcIj2kshGvj + - req_TM6wPTeqEwq4Lw Request-Id: - - req_zozOcIj2kshGvj + - req_TM6wPTeqEwq4Lw Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJXKuuB1fWySnHjTFqLlS", + "id": "pm_1OOX3LKuuB1fWySnVYxeNKBw", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973727, + "created": 1702868376, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:48 GMT + recorded_at: Mon, 18 Dec 2023 02:59:36 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJXKuuB1fWySnHjTFqLlS&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3LKuuB1fWySnVYxeNKBw&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_zozOcIj2kshGvj","request_duration_ms":477}}' + - '{"last_request_metrics":{"request_id":"req_TM6wPTeqEwq4Lw","request_duration_ms":578}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:48 GMT + - Mon, 18 Dec 2023 02:59:36 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - fd833b7d-ed7c-40c9-bceb-2a03f670cf2c + - 33aca95a-0919-4a23-90fd-2078a4138711 Original-Request: - - req_ApxLdeBM8rqeAs + - req_SrGxOpI7PUk9Tr Request-Id: - - req_ApxLdeBM8rqeAs + - req_SrGxOpI7PUk9Tr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJYKuuB1fWySn1OOY0Mh6", + "id": "pi_3OOX3MKuuB1fWySn1TSQeJHF", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJYKuuB1fWySn1OOY0Mh6_secret_YEf13vOd6s7qeMmB7TyLdwW9v", + "client_secret": "pi_3OOX3MKuuB1fWySn1TSQeJHF_secret_fM5XXdzLVZX91i3JJkaHs3AjZ", "confirmation_method": "automatic", - "created": 1701973728, + "created": 1702868376, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJXKuuB1fWySnHjTFqLlS", + "payment_method": "pm_1OOX3LKuuB1fWySnVYxeNKBw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:48 GMT + recorded_at: Mon, 18 Dec 2023 02:59:36 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJYKuuB1fWySn1OOY0Mh6/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3MKuuB1fWySn1TSQeJHF/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ApxLdeBM8rqeAs","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_SrGxOpI7PUk9Tr","request_duration_ms":510}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:49 GMT + - Mon, 18 Dec 2023 02:59:37 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 839aece3-05ba-45cc-884f-cb20cdf8eb9d + - 598c6bb4-3174-41be-aff1-171194a3e9fe Original-Request: - - req_0vzgdOb8ZSNFTk + - req_gqxqcoX617vGaw Request-Id: - - req_0vzgdOb8ZSNFTk + - req_gqxqcoX617vGaw Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJYKuuB1fWySn1OOY0Mh6", + "id": "pi_3OOX3MKuuB1fWySn1TSQeJHF", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJYKuuB1fWySn1OOY0Mh6_secret_YEf13vOd6s7qeMmB7TyLdwW9v", + "client_secret": "pi_3OOX3MKuuB1fWySn1TSQeJHF_secret_fM5XXdzLVZX91i3JJkaHs3AjZ", "confirmation_method": "automatic", - "created": 1701973728, + "created": 1702868376, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJYKuuB1fWySn1aiLNqG7", + "latest_charge": "ch_3OOX3MKuuB1fWySn1u6jb87M", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJXKuuB1fWySnHjTFqLlS", + "payment_method": "pm_1OOX3LKuuB1fWySnVYxeNKBw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:49 GMT + recorded_at: Mon, 18 Dec 2023 02:59:37 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml index 887ad55f27..fe486b273c 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=3056930009020004&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HLF49wnac27NFV","request_duration_ms":976}}' + - '{"last_request_metrics":{"request_id":"req_COs8Kb8o69aZbi","request_duration_ms":1126}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:38 GMT + - Mon, 18 Dec 2023 02:59:26 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - c58a6bb6-4c43-41ff-99a6-403525e83f2f + - 4e121c10-bd66-4878-b999-75c33cbacade Original-Request: - - req_qQtW0TD2fJhOvx + - req_2NEw0A54zLWv6G Request-Id: - - req_qQtW0TD2fJhOvx + - req_2NEw0A54zLWv6G Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "id": "pm_1OOX3BKuuB1fWySneYhc1I6s", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973717, + "created": 1702868366, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:38 GMT + recorded_at: Mon, 18 Dec 2023 02:59:26 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJNKuuB1fWySnXbtfpMzQ&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3BKuuB1fWySneYhc1I6s&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qQtW0TD2fJhOvx","request_duration_ms":525}}' + - '{"last_request_metrics":{"request_id":"req_2NEw0A54zLWv6G","request_duration_ms":567}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:38 GMT + - Mon, 18 Dec 2023 02:59:26 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5e1a80fe-3312-467c-bf5c-bb65e2fd9c7c + - ec289726-3485-45dc-9ffc-06f56501ea18 Original-Request: - - req_0Qn4ExUGRwyA0L + - req_KTEO6kHaLoM4Y1 Request-Id: - - req_0Qn4ExUGRwyA0L + - req_KTEO6kHaLoM4Y1 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJOKuuB1fWySn1EG3DBrp", + "id": "pi_3OOX3CKuuB1fWySn1ieHO15S", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJOKuuB1fWySn1EG3DBrp_secret_fXwgDxjDOwTNY13tZL4zSWZp5", + "client_secret": "pi_3OOX3CKuuB1fWySn1ieHO15S_secret_h4fKBtCRuO75J6fkdJe3FWH5w", "confirmation_method": "automatic", - "created": 1701973718, + "created": 1702868366, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "payment_method": "pm_1OOX3BKuuB1fWySneYhc1I6s", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:38 GMT + recorded_at: Mon, 18 Dec 2023 02:59:26 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJOKuuB1fWySn1EG3DBrp/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3CKuuB1fWySn1ieHO15S/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_0Qn4ExUGRwyA0L","request_duration_ms":403}}' + - '{"last_request_metrics":{"request_id":"req_KTEO6kHaLoM4Y1","request_duration_ms":514}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:39 GMT + - Mon, 18 Dec 2023 02:59:27 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 7a3e02b2-afac-4cb0-9b00-adae261361b0 + - c8b37f7d-ac33-482b-adb5-b3d0b053aeab Original-Request: - - req_qxtXhvsMFrygTX + - req_ie3RqHggDsphYx Request-Id: - - req_qxtXhvsMFrygTX + - req_ie3RqHggDsphYx Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJOKuuB1fWySn1EG3DBrp", + "id": "pi_3OOX3CKuuB1fWySn1ieHO15S", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJOKuuB1fWySn1EG3DBrp_secret_fXwgDxjDOwTNY13tZL4zSWZp5", + "client_secret": "pi_3OOX3CKuuB1fWySn1ieHO15S_secret_h4fKBtCRuO75J6fkdJe3FWH5w", "confirmation_method": "automatic", - "created": 1701973718, + "created": 1702868366, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJOKuuB1fWySn1jEHvDIc", + "latest_charge": "ch_3OOX3CKuuB1fWySn1xG6pRfg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "payment_method": "pm_1OOX3BKuuB1fWySneYhc1I6s", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:39 GMT + recorded_at: Mon, 18 Dec 2023 02:59:27 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJOKuuB1fWySn1EG3DBrp + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3CKuuB1fWySn1ieHO15S body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qxtXhvsMFrygTX","request_duration_ms":950}}' + - '{"last_request_metrics":{"request_id":"req_ie3RqHggDsphYx","request_duration_ms":1016}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:39 GMT + - Mon, 18 Dec 2023 02:59:28 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_SA6YFoiIiDICDR + - req_PRdJWz0eAWKVuu Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJOKuuB1fWySn1EG3DBrp", + "id": "pi_3OOX3CKuuB1fWySn1ieHO15S", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJOKuuB1fWySn1EG3DBrp_secret_fXwgDxjDOwTNY13tZL4zSWZp5", + "client_secret": "pi_3OOX3CKuuB1fWySn1ieHO15S_secret_h4fKBtCRuO75J6fkdJe3FWH5w", "confirmation_method": "automatic", - "created": 1701973718, + "created": 1702868366, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJOKuuB1fWySn1jEHvDIc", + "latest_charge": "ch_3OOX3CKuuB1fWySn1xG6pRfg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "payment_method": "pm_1OOX3BKuuB1fWySneYhc1I6s", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:39 GMT + recorded_at: Mon, 18 Dec 2023 02:59:28 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJOKuuB1fWySn1EG3DBrp/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3CKuuB1fWySn1ieHO15S/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_SA6YFoiIiDICDR","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_PRdJWz0eAWKVuu","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:40 GMT + - Mon, 18 Dec 2023 02:59:29 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 26ce7d16-e8ac-4128-8e23-2d32443908df + - de2ee0df-3a90-499a-9eb2-bae916dae48d Original-Request: - - req_AgFvIKgfAAjEpH + - req_RdiDgYPfkncE95 Request-Id: - - req_AgFvIKgfAAjEpH + - req_RdiDgYPfkncE95 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJOKuuB1fWySn1EG3DBrp", + "id": "pi_3OOX3CKuuB1fWySn1ieHO15S", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJOKuuB1fWySn1EG3DBrp_secret_fXwgDxjDOwTNY13tZL4zSWZp5", + "client_secret": "pi_3OOX3CKuuB1fWySn1ieHO15S_secret_h4fKBtCRuO75J6fkdJe3FWH5w", "confirmation_method": "automatic", - "created": 1701973718, + "created": 1702868366, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJOKuuB1fWySn1jEHvDIc", + "latest_charge": "ch_3OOX3CKuuB1fWySn1xG6pRfg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "payment_method": "pm_1OOX3BKuuB1fWySneYhc1I6s", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:40 GMT + recorded_at: Mon, 18 Dec 2023 02:59:29 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJOKuuB1fWySn1EG3DBrp + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3CKuuB1fWySn1ieHO15S body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_AgFvIKgfAAjEpH","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_RdiDgYPfkncE95","request_duration_ms":1124}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:41 GMT + - Mon, 18 Dec 2023 02:59:29 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_araVCsbLmdiFae + - req_PYl3ZUPHFSkUWM Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJOKuuB1fWySn1EG3DBrp", + "id": "pi_3OOX3CKuuB1fWySn1ieHO15S", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJOKuuB1fWySn1EG3DBrp_secret_fXwgDxjDOwTNY13tZL4zSWZp5", + "client_secret": "pi_3OOX3CKuuB1fWySn1ieHO15S_secret_h4fKBtCRuO75J6fkdJe3FWH5w", "confirmation_method": "automatic", - "created": 1701973718, + "created": 1702868366, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJOKuuB1fWySn1jEHvDIc", + "latest_charge": "ch_3OOX3CKuuB1fWySn1xG6pRfg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJNKuuB1fWySnXbtfpMzQ", + "payment_method": "pm_1OOX3BKuuB1fWySneYhc1I6s", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:41 GMT + recorded_at: Mon, 18 Dec 2023 02:59:29 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml index d80f4f2e04..6d11cf7d22 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=3056930009020004&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_kAIe6xCppOR1Ft","request_duration_ms":310}}' + - '{"last_request_metrics":{"request_id":"req_Ln16Dp1RKG4sJN","request_duration_ms":407}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:35 GMT + - Mon, 18 Dec 2023 02:59:23 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 2854c0f6-fb88-4c90-a488-e8c12277adf7 + - 0a60ff84-fa49-4ac1-a9d2-29a658367ef4 Original-Request: - - req_6iUVpZopNxz0gC + - req_ixdjnow2YJ17z4 Request-Id: - - req_6iUVpZopNxz0gC + - req_ixdjnow2YJ17z4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJLKuuB1fWySnseeGy2RU", + "id": "pm_1OOX39KuuB1fWySnZbaeWOjv", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973715, + "created": 1702868363, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:35 GMT + recorded_at: Mon, 18 Dec 2023 02:59:23 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJLKuuB1fWySnseeGy2RU&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX39KuuB1fWySnZbaeWOjv&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_6iUVpZopNxz0gC","request_duration_ms":471}}' + - '{"last_request_metrics":{"request_id":"req_ixdjnow2YJ17z4","request_duration_ms":600}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:36 GMT + - Mon, 18 Dec 2023 02:59:24 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 0ffca74e-c66b-4225-b1db-24c0873ff0cb + - 15c60d77-726f-4cc4-a2c0-2338b86d5d2e Original-Request: - - req_GL9T6tS5KBKigv + - req_BjRlGoJ6SfOk9G Request-Id: - - req_GL9T6tS5KBKigv + - req_BjRlGoJ6SfOk9G Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJMKuuB1fWySn013jWh8S", + "id": "pi_3OOX3AKuuB1fWySn0DzX6G2g", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJMKuuB1fWySn013jWh8S_secret_mUuqAkX1KIV8PzVQKZ4xlAkBM", + "client_secret": "pi_3OOX3AKuuB1fWySn0DzX6G2g_secret_m6AviPJIXNhBs33V4Hvqu8khy", "confirmation_method": "automatic", - "created": 1701973716, + "created": 1702868364, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJLKuuB1fWySnseeGy2RU", + "payment_method": "pm_1OOX39KuuB1fWySnZbaeWOjv", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:36 GMT + recorded_at: Mon, 18 Dec 2023 02:59:24 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJMKuuB1fWySn013jWh8S/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3AKuuB1fWySn0DzX6G2g/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GL9T6tS5KBKigv","request_duration_ms":389}}' + - '{"last_request_metrics":{"request_id":"req_BjRlGoJ6SfOk9G","request_duration_ms":508}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:37 GMT + - Mon, 18 Dec 2023 02:59:25 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 55d3d5fe-5d79-45c3-902a-d4b660b7b5f0 + - e75f0d78-c380-45eb-a31d-c6f6c843ee3a Original-Request: - - req_HLF49wnac27NFV + - req_COs8Kb8o69aZbi Request-Id: - - req_HLF49wnac27NFV + - req_COs8Kb8o69aZbi Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJMKuuB1fWySn013jWh8S", + "id": "pi_3OOX3AKuuB1fWySn0DzX6G2g", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJMKuuB1fWySn013jWh8S_secret_mUuqAkX1KIV8PzVQKZ4xlAkBM", + "client_secret": "pi_3OOX3AKuuB1fWySn0DzX6G2g_secret_m6AviPJIXNhBs33V4Hvqu8khy", "confirmation_method": "automatic", - "created": 1701973716, + "created": 1702868364, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJMKuuB1fWySn0uY0EK6o", + "latest_charge": "ch_3OOX3AKuuB1fWySn0b67fKTK", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJLKuuB1fWySnseeGy2RU", + "payment_method": "pm_1OOX39KuuB1fWySnZbaeWOjv", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:37 GMT + recorded_at: Mon, 18 Dec 2023 02:59:25 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml index 506ce1f525..859e765e40 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=36227206271667&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_sWVCKRmv0UL55D","request_duration_ms":1146}}' + - '{"last_request_metrics":{"request_id":"req_qzUDKCjJfdf9me","request_duration_ms":919}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:44 GMT + - Mon, 18 Dec 2023 02:59:32 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 2cdb64fc-65cc-4611-b06e-9a0319829128 + - 84b76be8-f47a-4638-9071-93465805e802 Original-Request: - - req_2Pw3YnPZZDZIcG + - req_JLWv3lMEJxsp6F Request-Id: - - req_2Pw3YnPZZDZIcG + - req_JLWv3lMEJxsp6F Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "id": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973724, + "created": 1702868372, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:44 GMT + recorded_at: Mon, 18 Dec 2023 02:59:32 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJTKuuB1fWySnjC6ITQSC&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3HKuuB1fWySnRbzcUQSa&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2Pw3YnPZZDZIcG","request_duration_ms":495}}' + - '{"last_request_metrics":{"request_id":"req_JLWv3lMEJxsp6F","request_duration_ms":544}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:44 GMT + - Mon, 18 Dec 2023 02:59:32 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 77f353c2-6ea9-4577-91f0-0c51219cf040 + - 6d9bb72b-108a-42a6-b10b-dfed3cfa38dd Original-Request: - - req_2qGL7fLXMCNXGQ + - req_Zvj1GfdAA6XSn2 Request-Id: - - req_2qGL7fLXMCNXGQ + - req_Zvj1GfdAA6XSn2 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJUKuuB1fWySn2KjmRxDw", + "id": "pi_3OOX3IKuuB1fWySn1Yh5NSgV", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJUKuuB1fWySn2KjmRxDw_secret_OqPKsHIK7mvnVb7FRfC5Ny7XT", + "client_secret": "pi_3OOX3IKuuB1fWySn1Yh5NSgV_secret_QOusl6s6z12dawBwuODuafVsP", "confirmation_method": "automatic", - "created": 1701973724, + "created": 1702868372, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "payment_method": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:44 GMT + recorded_at: Mon, 18 Dec 2023 02:59:32 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJUKuuB1fWySn2KjmRxDw/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3IKuuB1fWySn1Yh5NSgV/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2qGL7fLXMCNXGQ","request_duration_ms":521}}' + - '{"last_request_metrics":{"request_id":"req_Zvj1GfdAA6XSn2","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:45 GMT + - Mon, 18 Dec 2023 02:59:33 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 83162567-a955-4d3a-b946-1296ece649d5 + - 77787471-b2a0-41ad-bab6-b15da5499010 Original-Request: - - req_Om2PyKu9OkV60d + - req_IbsFmz0c3GesMJ Request-Id: - - req_Om2PyKu9OkV60d + - req_IbsFmz0c3GesMJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJUKuuB1fWySn2KjmRxDw", + "id": "pi_3OOX3IKuuB1fWySn1Yh5NSgV", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJUKuuB1fWySn2KjmRxDw_secret_OqPKsHIK7mvnVb7FRfC5Ny7XT", + "client_secret": "pi_3OOX3IKuuB1fWySn1Yh5NSgV_secret_QOusl6s6z12dawBwuODuafVsP", "confirmation_method": "automatic", - "created": 1701973724, + "created": 1702868372, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJUKuuB1fWySn2KOuCSOk", + "latest_charge": "ch_3OOX3IKuuB1fWySn11v6goIs", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "payment_method": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:45 GMT + recorded_at: Mon, 18 Dec 2023 02:59:33 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJUKuuB1fWySn2KjmRxDw + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3IKuuB1fWySn1Yh5NSgV body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Om2PyKu9OkV60d","request_duration_ms":936}}' + - '{"last_request_metrics":{"request_id":"req_IbsFmz0c3GesMJ","request_duration_ms":1124}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:46 GMT + - Mon, 18 Dec 2023 02:59:34 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_KGApzYXvFQvQmB + - req_uUkfWxYqvVwn0n Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJUKuuB1fWySn2KjmRxDw", + "id": "pi_3OOX3IKuuB1fWySn1Yh5NSgV", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJUKuuB1fWySn2KjmRxDw_secret_OqPKsHIK7mvnVb7FRfC5Ny7XT", + "client_secret": "pi_3OOX3IKuuB1fWySn1Yh5NSgV_secret_QOusl6s6z12dawBwuODuafVsP", "confirmation_method": "automatic", - "created": 1701973724, + "created": 1702868372, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJUKuuB1fWySn2KOuCSOk", + "latest_charge": "ch_3OOX3IKuuB1fWySn11v6goIs", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "payment_method": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:46 GMT + recorded_at: Mon, 18 Dec 2023 02:59:34 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJUKuuB1fWySn2KjmRxDw/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3IKuuB1fWySn1Yh5NSgV/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_KGApzYXvFQvQmB","request_duration_ms":314}}' + - '{"last_request_metrics":{"request_id":"req_uUkfWxYqvVwn0n","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:47 GMT + - Mon, 18 Dec 2023 02:59:35 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8b107f0a-367c-41f8-8bd5-bba58c073c58 + - eb9eda78-e8a9-4b27-a5f8-413cbc227e32 Original-Request: - - req_ZPjBWEy3Y49c8h + - req_GXPLQ5f6Wn584j Request-Id: - - req_ZPjBWEy3Y49c8h + - req_GXPLQ5f6Wn584j Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJUKuuB1fWySn2KjmRxDw", + "id": "pi_3OOX3IKuuB1fWySn1Yh5NSgV", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJUKuuB1fWySn2KjmRxDw_secret_OqPKsHIK7mvnVb7FRfC5Ny7XT", + "client_secret": "pi_3OOX3IKuuB1fWySn1Yh5NSgV_secret_QOusl6s6z12dawBwuODuafVsP", "confirmation_method": "automatic", - "created": 1701973724, + "created": 1702868372, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJUKuuB1fWySn2KOuCSOk", + "latest_charge": "ch_3OOX3IKuuB1fWySn11v6goIs", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "payment_method": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:47 GMT + recorded_at: Mon, 18 Dec 2023 02:59:35 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJUKuuB1fWySn2KjmRxDw + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3IKuuB1fWySn1Yh5NSgV body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ZPjBWEy3Y49c8h","request_duration_ms":1148}}' + - '{"last_request_metrics":{"request_id":"req_GXPLQ5f6Wn584j","request_duration_ms":1024}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:47 GMT + - Mon, 18 Dec 2023 02:59:35 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_XHDBz2Pm2pBXiS + - req_eruxnP3AF7YuV5 Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJUKuuB1fWySn2KjmRxDw", + "id": "pi_3OOX3IKuuB1fWySn1Yh5NSgV", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJUKuuB1fWySn2KjmRxDw_secret_OqPKsHIK7mvnVb7FRfC5Ny7XT", + "client_secret": "pi_3OOX3IKuuB1fWySn1Yh5NSgV_secret_QOusl6s6z12dawBwuODuafVsP", "confirmation_method": "automatic", - "created": 1701973724, + "created": 1702868372, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJUKuuB1fWySn2KOuCSOk", + "latest_charge": "ch_3OOX3IKuuB1fWySn11v6goIs", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJTKuuB1fWySnjC6ITQSC", + "payment_method": "pm_1OOX3HKuuB1fWySnRbzcUQSa", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:47 GMT + recorded_at: Mon, 18 Dec 2023 02:59:35 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml index 0264aa435d..9927e58f8b 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Diners_Club_14-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=36227206271667&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_araVCsbLmdiFae","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_PYl3ZUPHFSkUWM","request_duration_ms":410}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:41 GMT + - Mon, 18 Dec 2023 02:59:30 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 24fc2d85-cc5c-4bda-918a-18daee9d9bc0 + - 1481113e-09dd-4d1f-9e3a-51b6389f5e54 Original-Request: - - req_wjRRAOn9PRBDEs + - req_aaQ5Chk593nqSe Request-Id: - - req_wjRRAOn9PRBDEs + - req_aaQ5Chk593nqSe Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJRKuuB1fWySnw2b0FJnx", + "id": "pm_1OOX3FKuuB1fWySnxzPHSSEg", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973721, + "created": 1702868370, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:41 GMT + recorded_at: Mon, 18 Dec 2023 02:59:30 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJRKuuB1fWySnw2b0FJnx&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3FKuuB1fWySnxzPHSSEg&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_wjRRAOn9PRBDEs","request_duration_ms":489}}' + - '{"last_request_metrics":{"request_id":"req_aaQ5Chk593nqSe","request_duration_ms":469}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:42 GMT + - Mon, 18 Dec 2023 02:59:30 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 58e3389e-1782-45e2-a2eb-21556ae31906 + - 103f6abc-4331-4176-8976-f79ab31c5f6c Original-Request: - - req_xr6sPLFJyz0UXJ + - req_ncjUHufMtyjmVl Request-Id: - - req_xr6sPLFJyz0UXJ + - req_ncjUHufMtyjmVl Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJSKuuB1fWySn1b2vDreK", + "id": "pi_3OOX3GKuuB1fWySn23FJpMcO", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJSKuuB1fWySn1b2vDreK_secret_46GGo9ECzMqniN9kW9QF5IC5i", + "client_secret": "pi_3OOX3GKuuB1fWySn23FJpMcO_secret_P6I2icPj3xSBE9qeuTQRzUwm8", "confirmation_method": "automatic", - "created": 1701973722, + "created": 1702868370, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJRKuuB1fWySnw2b0FJnx", + "payment_method": "pm_1OOX3FKuuB1fWySnxzPHSSEg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:42 GMT + recorded_at: Mon, 18 Dec 2023 02:59:30 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJSKuuB1fWySn1b2vDreK/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3GKuuB1fWySn23FJpMcO/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_xr6sPLFJyz0UXJ","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_ncjUHufMtyjmVl","request_duration_ms":416}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:43 GMT + - Mon, 18 Dec 2023 02:59:31 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ee28f2c6-1b4a-490e-bdde-ef209ae2c34b + - 9332b703-f69d-4de5-91ed-0d8f40406592 Original-Request: - - req_sWVCKRmv0UL55D + - req_qzUDKCjJfdf9me Request-Id: - - req_sWVCKRmv0UL55D + - req_qzUDKCjJfdf9me Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJSKuuB1fWySn1b2vDreK", + "id": "pi_3OOX3GKuuB1fWySn23FJpMcO", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJSKuuB1fWySn1b2vDreK_secret_46GGo9ECzMqniN9kW9QF5IC5i", + "client_secret": "pi_3OOX3GKuuB1fWySn23FJpMcO_secret_P6I2icPj3xSBE9qeuTQRzUwm8", "confirmation_method": "automatic", - "created": 1701973722, + "created": 1702868370, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJSKuuB1fWySn1gX4QHJ1", + "latest_charge": "ch_3OOX3GKuuB1fWySn2AAWknWy", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJRKuuB1fWySnw2b0FJnx", + "payment_method": "pm_1OOX3FKuuB1fWySnxzPHSSEg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:43 GMT + recorded_at: Mon, 18 Dec 2023 02:59:31 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml index d522faa696..2d9faa61cf 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6011111111111117&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_cwXS7ks1cOCbZK","request_duration_ms":962}}' + - '{"last_request_metrics":{"request_id":"req_Mi5P4b8JaVLMLw","request_duration_ms":1021}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:24 GMT + - Mon, 18 Dec 2023 02:59:13 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - d6619b76-761f-47c6-a4da-15d7591134db + - 5ce62a99-e9c1-4373-835c-193b062089b1 Original-Request: - - req_v5sM7TRJhCQruh + - req_l4BbDYIeNXbT8x Request-Id: - - req_v5sM7TRJhCQruh + - req_l4BbDYIeNXbT8x Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "id": "pm_1OOX2zKuuB1fWySnwqN1mEum", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973704, + "created": 1702868353, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:24 GMT + recorded_at: Mon, 18 Dec 2023 02:59:13 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJAKuuB1fWySnUwvZFkjA&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2zKuuB1fWySnwqN1mEum&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_v5sM7TRJhCQruh","request_duration_ms":525}}' + - '{"last_request_metrics":{"request_id":"req_l4BbDYIeNXbT8x","request_duration_ms":559}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:25 GMT + - Mon, 18 Dec 2023 02:59:13 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5a74885b-f183-4012-b577-079463f64d7b + - 51f83b5e-5dc2-4624-804c-fb1f69bb74e3 Original-Request: - - req_nE6yQaw89w2nZX + - req_vaf1lkZvhRi0qz Request-Id: - - req_nE6yQaw89w2nZX + - req_vaf1lkZvhRi0qz Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJBKuuB1fWySn0ypB5UIt", + "id": "pi_3OOX2zKuuB1fWySn1vnd55qE", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJBKuuB1fWySn0ypB5UIt_secret_a2df6qo02GJIuS0pRKAfK6TC1", + "client_secret": "pi_3OOX2zKuuB1fWySn1vnd55qE_secret_ny6gxIGEhA1qJik9l3tLNMaf2", "confirmation_method": "automatic", - "created": 1701973705, + "created": 1702868353, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "payment_method": "pm_1OOX2zKuuB1fWySnwqN1mEum", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:25 GMT + recorded_at: Mon, 18 Dec 2023 02:59:14 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJBKuuB1fWySn0ypB5UIt/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2zKuuB1fWySn1vnd55qE/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_nE6yQaw89w2nZX","request_duration_ms":422}}' + - '{"last_request_metrics":{"request_id":"req_vaf1lkZvhRi0qz","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:26 GMT + - Mon, 18 Dec 2023 02:59:15 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - b9dc5601-bbff-4b97-b203-34bc5c59330f + - 379439c5-2c2c-4ccb-88a1-834e82f50b4a Original-Request: - - req_HP61UxlDambrUJ + - req_UE5hPhsPKQAKiJ Request-Id: - - req_HP61UxlDambrUJ + - req_UE5hPhsPKQAKiJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJBKuuB1fWySn0ypB5UIt", + "id": "pi_3OOX2zKuuB1fWySn1vnd55qE", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJBKuuB1fWySn0ypB5UIt_secret_a2df6qo02GJIuS0pRKAfK6TC1", + "client_secret": "pi_3OOX2zKuuB1fWySn1vnd55qE_secret_ny6gxIGEhA1qJik9l3tLNMaf2", "confirmation_method": "automatic", - "created": 1701973705, + "created": 1702868353, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJBKuuB1fWySn05oMGh0W", + "latest_charge": "ch_3OOX2zKuuB1fWySn1XlVhPZ4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "payment_method": "pm_1OOX2zKuuB1fWySnwqN1mEum", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:26 GMT + recorded_at: Mon, 18 Dec 2023 02:59:15 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJBKuuB1fWySn0ypB5UIt + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2zKuuB1fWySn1vnd55qE body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_HP61UxlDambrUJ","request_duration_ms":1137}}' + - '{"last_request_metrics":{"request_id":"req_UE5hPhsPKQAKiJ","request_duration_ms":1026}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:26 GMT + - Mon, 18 Dec 2023 02:59:15 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_CHru0T9gMSy7A5 + - req_zpKtj4DF95Tfka Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJBKuuB1fWySn0ypB5UIt", + "id": "pi_3OOX2zKuuB1fWySn1vnd55qE", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJBKuuB1fWySn0ypB5UIt_secret_a2df6qo02GJIuS0pRKAfK6TC1", + "client_secret": "pi_3OOX2zKuuB1fWySn1vnd55qE_secret_ny6gxIGEhA1qJik9l3tLNMaf2", "confirmation_method": "automatic", - "created": 1701973705, + "created": 1702868353, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJBKuuB1fWySn05oMGh0W", + "latest_charge": "ch_3OOX2zKuuB1fWySn1XlVhPZ4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "payment_method": "pm_1OOX2zKuuB1fWySnwqN1mEum", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:26 GMT + recorded_at: Mon, 18 Dec 2023 02:59:15 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJBKuuB1fWySn0ypB5UIt/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2zKuuB1fWySn1vnd55qE/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_CHru0T9gMSy7A5","request_duration_ms":412}}' + - '{"last_request_metrics":{"request_id":"req_zpKtj4DF95Tfka","request_duration_ms":400}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:27 GMT + - Mon, 18 Dec 2023 02:59:16 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - a5b89c95-ff9d-4a44-aa6a-ae6f957b7dea + - 5a4693d9-e40a-49ea-991d-7b62a92fcdea Original-Request: - - req_I7tVElxyanm1lc + - req_avCGPttZgOXQ27 Request-Id: - - req_I7tVElxyanm1lc + - req_avCGPttZgOXQ27 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJBKuuB1fWySn0ypB5UIt", + "id": "pi_3OOX2zKuuB1fWySn1vnd55qE", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJBKuuB1fWySn0ypB5UIt_secret_a2df6qo02GJIuS0pRKAfK6TC1", + "client_secret": "pi_3OOX2zKuuB1fWySn1vnd55qE_secret_ny6gxIGEhA1qJik9l3tLNMaf2", "confirmation_method": "automatic", - "created": 1701973705, + "created": 1702868353, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJBKuuB1fWySn05oMGh0W", + "latest_charge": "ch_3OOX2zKuuB1fWySn1XlVhPZ4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "payment_method": "pm_1OOX2zKuuB1fWySnwqN1mEum", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:28 GMT + recorded_at: Mon, 18 Dec 2023 02:59:16 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJBKuuB1fWySn0ypB5UIt + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2zKuuB1fWySn1vnd55qE body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_I7tVElxyanm1lc","request_duration_ms":1148}}' + - '{"last_request_metrics":{"request_id":"req_avCGPttZgOXQ27","request_duration_ms":1022}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:28 GMT + - Mon, 18 Dec 2023 02:59:16 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_FfiMS2b6qOmEQG + - req_p4EoPfLyKDXx4V Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJBKuuB1fWySn0ypB5UIt", + "id": "pi_3OOX2zKuuB1fWySn1vnd55qE", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJBKuuB1fWySn0ypB5UIt_secret_a2df6qo02GJIuS0pRKAfK6TC1", + "client_secret": "pi_3OOX2zKuuB1fWySn1vnd55qE_secret_ny6gxIGEhA1qJik9l3tLNMaf2", "confirmation_method": "automatic", - "created": 1701973705, + "created": 1702868353, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJBKuuB1fWySn05oMGh0W", + "latest_charge": "ch_3OOX2zKuuB1fWySn1XlVhPZ4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJAKuuB1fWySnUwvZFkjA", + "payment_method": "pm_1OOX2zKuuB1fWySnwqN1mEum", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:28 GMT + recorded_at: Mon, 18 Dec 2023 02:59:16 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml index e6436a9e85..aaf9fe7242 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6011111111111117&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_zD6wFMnswpGKqr","request_duration_ms":1}}' + - '{"last_request_metrics":{"request_id":"req_rjDthkvsOv7Huu","request_duration_ms":0}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:22 GMT + - Mon, 18 Dec 2023 02:59:11 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - a371ebf5-421c-4cb0-b135-fea1b214c56c + - 124d8469-b684-4ad5-a56c-26a92a8e8471 Original-Request: - - req_97Uzu4n2hzrnex + - req_JM87fL0JSweiUf Request-Id: - - req_97Uzu4n2hzrnex + - req_JM87fL0JSweiUf Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJ8KuuB1fWySnFFZNdcg0", + "id": "pm_1OOX2wKuuB1fWySnkRrpn4Hj", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973702, + "created": 1702868351, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:22 GMT + recorded_at: Mon, 18 Dec 2023 02:59:11 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJ8KuuB1fWySnFFZNdcg0&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2wKuuB1fWySnkRrpn4Hj&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_97Uzu4n2hzrnex","request_duration_ms":668}}' + - '{"last_request_metrics":{"request_id":"req_JM87fL0JSweiUf","request_duration_ms":621}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:23 GMT + - Mon, 18 Dec 2023 02:59:11 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5e1f85f1-80ea-437b-9cbf-3de7da684ad6 + - d7bdbae5-4f95-4003-afe6-5b6951777863 Original-Request: - - req_RHMgbmehj5UxPu + - req_tXaccgQiYdqvnw Request-Id: - - req_RHMgbmehj5UxPu + - req_tXaccgQiYdqvnw Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ8KuuB1fWySn2Ui92cOG", + "id": "pi_3OOX2xKuuB1fWySn2Pjyn9B6", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ8KuuB1fWySn2Ui92cOG_secret_yXbkeTGZbIBSO2zTw0B7WwKEp", + "client_secret": "pi_3OOX2xKuuB1fWySn2Pjyn9B6_secret_8QiJc4Kq4F24OchA7BLTzR7IY", "confirmation_method": "automatic", - "created": 1701973702, + "created": 1702868351, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ8KuuB1fWySnFFZNdcg0", + "payment_method": "pm_1OOX2wKuuB1fWySnkRrpn4Hj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:23 GMT + recorded_at: Mon, 18 Dec 2023 02:59:11 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJ8KuuB1fWySn2Ui92cOG/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2xKuuB1fWySn2Pjyn9B6/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_RHMgbmehj5UxPu","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_tXaccgQiYdqvnw","request_duration_ms":611}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:24 GMT + - Mon, 18 Dec 2023 02:59:12 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - aaaa69e3-7536-4cc5-b01a-08556d88f645 + - 51434ff5-9f67-4052-b3de-0b6440682d29 Original-Request: - - req_cwXS7ks1cOCbZK + - req_Mi5P4b8JaVLMLw Request-Id: - - req_cwXS7ks1cOCbZK + - req_Mi5P4b8JaVLMLw Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJ8KuuB1fWySn2Ui92cOG", + "id": "pi_3OOX2xKuuB1fWySn2Pjyn9B6", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJ8KuuB1fWySn2Ui92cOG_secret_yXbkeTGZbIBSO2zTw0B7WwKEp", + "client_secret": "pi_3OOX2xKuuB1fWySn2Pjyn9B6_secret_8QiJc4Kq4F24OchA7BLTzR7IY", "confirmation_method": "automatic", - "created": 1701973702, + "created": 1702868351, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJ8KuuB1fWySn2Pxd5Fse", + "latest_charge": "ch_3OOX2xKuuB1fWySn2V7TPlll", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJ8KuuB1fWySnFFZNdcg0", + "payment_method": "pm_1OOX2wKuuB1fWySnkRrpn4Hj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:24 GMT + recorded_at: Mon, 18 Dec 2023 02:59:12 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml index 3d38c29ad9..d33887e154 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6011981111111113&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OD7p5YtOsxltu9","request_duration_ms":1059}}' + - '{"last_request_metrics":{"request_id":"req_AiWDMdOvttDK0w","request_duration_ms":986}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:31 GMT + - Mon, 18 Dec 2023 02:59:19 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - c1e4f271-bfb2-4296-979b-9099c49c6f46 + - 53f4381c-ea9c-4722-afda-04e07642874c Original-Request: - - req_xPbZhogaRhHYgT + - req_lzeSYOBxz7aaoQ Request-Id: - - req_xPbZhogaRhHYgT + - req_lzeSYOBxz7aaoQ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "id": "pm_1OOX35KuuB1fWySnVfvOCJgY", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973711, + "created": 1702868359, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:32 GMT + recorded_at: Mon, 18 Dec 2023 02:59:19 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJHKuuB1fWySnNvcABlrU&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX35KuuB1fWySnVfvOCJgY&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_xPbZhogaRhHYgT","request_duration_ms":564}}' + - '{"last_request_metrics":{"request_id":"req_lzeSYOBxz7aaoQ","request_duration_ms":558}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:32 GMT + - Mon, 18 Dec 2023 02:59:20 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 403e3865-38f3-487c-967e-3105b60f2524 + - d2ef6253-0809-4506-bd50-4e2c54e814fd Original-Request: - - req_ftBzg0caAM1Qqv + - req_lzGhv2LcPO8fum Request-Id: - - req_ftBzg0caAM1Qqv + - req_lzGhv2LcPO8fum Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJIKuuB1fWySn1WzSGvNe", + "id": "pi_3OOX36KuuB1fWySn220hzMmi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJIKuuB1fWySn1WzSGvNe_secret_SAlOiMxH7DdLkGXUpaDweL206", + "client_secret": "pi_3OOX36KuuB1fWySn220hzMmi_secret_Gwmt3ZZJudM3h7zJH2SLKoMr6", "confirmation_method": "automatic", - "created": 1701973712, + "created": 1702868360, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "payment_method": "pm_1OOX35KuuB1fWySnVfvOCJgY", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:32 GMT + recorded_at: Mon, 18 Dec 2023 02:59:20 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJIKuuB1fWySn1WzSGvNe/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX36KuuB1fWySn220hzMmi/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ftBzg0caAM1Qqv","request_duration_ms":517}}' + - '{"last_request_metrics":{"request_id":"req_lzGhv2LcPO8fum","request_duration_ms":519}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:33 GMT + - Mon, 18 Dec 2023 02:59:21 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - b45a3817-e11e-49af-8a6d-d5748bd0280d + - 631b791f-1d73-4bb1-bf53-0eabad9f1f1c Original-Request: - - req_SUicJu4uLdSmku + - req_7N3sRxjiTVn22t Request-Id: - - req_SUicJu4uLdSmku + - req_7N3sRxjiTVn22t Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJIKuuB1fWySn1WzSGvNe", + "id": "pi_3OOX36KuuB1fWySn220hzMmi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJIKuuB1fWySn1WzSGvNe_secret_SAlOiMxH7DdLkGXUpaDweL206", + "client_secret": "pi_3OOX36KuuB1fWySn220hzMmi_secret_Gwmt3ZZJudM3h7zJH2SLKoMr6", "confirmation_method": "automatic", - "created": 1701973712, + "created": 1702868360, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJIKuuB1fWySn1Sdmr5sg", + "latest_charge": "ch_3OOX36KuuB1fWySn2xRos0kU", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "payment_method": "pm_1OOX35KuuB1fWySnVfvOCJgY", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:33 GMT + recorded_at: Mon, 18 Dec 2023 02:59:21 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJIKuuB1fWySn1WzSGvNe + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX36KuuB1fWySn220hzMmi body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_SUicJu4uLdSmku","request_duration_ms":1044}}' + - '{"last_request_metrics":{"request_id":"req_7N3sRxjiTVn22t","request_duration_ms":1021}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:33 GMT + - Mon, 18 Dec 2023 02:59:21 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_72SFtVmqLdXwRX + - req_EFGQ9DvIbV5Gjo Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJIKuuB1fWySn1WzSGvNe", + "id": "pi_3OOX36KuuB1fWySn220hzMmi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJIKuuB1fWySn1WzSGvNe_secret_SAlOiMxH7DdLkGXUpaDweL206", + "client_secret": "pi_3OOX36KuuB1fWySn220hzMmi_secret_Gwmt3ZZJudM3h7zJH2SLKoMr6", "confirmation_method": "automatic", - "created": 1701973712, + "created": 1702868360, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJIKuuB1fWySn1Sdmr5sg", + "latest_charge": "ch_3OOX36KuuB1fWySn2xRos0kU", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "payment_method": "pm_1OOX35KuuB1fWySnVfvOCJgY", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:34 GMT + recorded_at: Mon, 18 Dec 2023 02:59:21 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJIKuuB1fWySn1WzSGvNe/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX36KuuB1fWySn220hzMmi/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_72SFtVmqLdXwRX","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_EFGQ9DvIbV5Gjo","request_duration_ms":351}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:35 GMT + - Mon, 18 Dec 2023 02:59:22 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4d4d4173-9b50-4b04-b34c-dfba44b2efcf + - 70855f61-8a69-4f03-b01f-50fd1c869624 Original-Request: - - req_RJzTPwJi8vWz1u + - req_W1GlUwJSAy7geW Request-Id: - - req_RJzTPwJi8vWz1u + - req_W1GlUwJSAy7geW Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJIKuuB1fWySn1WzSGvNe", + "id": "pi_3OOX36KuuB1fWySn220hzMmi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJIKuuB1fWySn1WzSGvNe_secret_SAlOiMxH7DdLkGXUpaDweL206", + "client_secret": "pi_3OOX36KuuB1fWySn220hzMmi_secret_Gwmt3ZZJudM3h7zJH2SLKoMr6", "confirmation_method": "automatic", - "created": 1701973712, + "created": 1702868360, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJIKuuB1fWySn1Sdmr5sg", + "latest_charge": "ch_3OOX36KuuB1fWySn2xRos0kU", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "payment_method": "pm_1OOX35KuuB1fWySnVfvOCJgY", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:35 GMT + recorded_at: Mon, 18 Dec 2023 02:59:22 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJIKuuB1fWySn1WzSGvNe + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX36KuuB1fWySn220hzMmi body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_RJzTPwJi8vWz1u","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_W1GlUwJSAy7geW","request_duration_ms":1077}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:35 GMT + - Mon, 18 Dec 2023 02:59:23 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_kAIe6xCppOR1Ft + - req_Ln16Dp1RKG4sJN Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJIKuuB1fWySn1WzSGvNe", + "id": "pi_3OOX36KuuB1fWySn220hzMmi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJIKuuB1fWySn1WzSGvNe_secret_SAlOiMxH7DdLkGXUpaDweL206", + "client_secret": "pi_3OOX36KuuB1fWySn220hzMmi_secret_Gwmt3ZZJudM3h7zJH2SLKoMr6", "confirmation_method": "automatic", - "created": 1701973712, + "created": 1702868360, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJIKuuB1fWySn1Sdmr5sg", + "latest_charge": "ch_3OOX36KuuB1fWySn2xRos0kU", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJHKuuB1fWySnNvcABlrU", + "payment_method": "pm_1OOX35KuuB1fWySnVfvOCJgY", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:35 GMT + recorded_at: Mon, 18 Dec 2023 02:59:23 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml index 08c5cbc0e4..32ca865d24 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Discover_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6011981111111113&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_FfiMS2b6qOmEQG","request_duration_ms":1}}' + - '{"last_request_metrics":{"request_id":"req_p4EoPfLyKDXx4V","request_duration_ms":0}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:29 GMT + - Mon, 18 Dec 2023 02:59:17 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 53b19a47-52d8-4f9a-ae07-3ea89e2e4cbe + - 78cd5eff-da77-4de2-85f4-61706235c174 Original-Request: - - req_99veUq6NVunpfC + - req_bTPkewzGOukYA5 Request-Id: - - req_99veUq6NVunpfC + - req_bTPkewzGOukYA5 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJFKuuB1fWySnG4RDCFdz", + "id": "pm_1OOX33KuuB1fWySnQ88qyesN", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973709, + "created": 1702868357, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:29 GMT + recorded_at: Mon, 18 Dec 2023 02:59:17 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJFKuuB1fWySnG4RDCFdz&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX33KuuB1fWySnQ88qyesN&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_99veUq6NVunpfC","request_duration_ms":648}}' + - '{"last_request_metrics":{"request_id":"req_bTPkewzGOukYA5","request_duration_ms":621}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:30 GMT + - Mon, 18 Dec 2023 02:59:18 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 87f74119-992f-40c1-bea4-4b381dd4d469 + - c723fc88-debd-4e58-b655-140aebe3ab5a Original-Request: - - req_KsLxdPCr1krVpJ + - req_ltyDGzEJaILixf Request-Id: - - req_KsLxdPCr1krVpJ + - req_ltyDGzEJaILixf Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJFKuuB1fWySn0RiXDALk", + "id": "pi_3OOX33KuuB1fWySn2jGxt4tW", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJFKuuB1fWySn0RiXDALk_secret_b6vDZ7eHAGmjUfRNW1Qb68anu", + "client_secret": "pi_3OOX33KuuB1fWySn2jGxt4tW_secret_4gLfHAHcPDWhAExnXZMDtyjw8", "confirmation_method": "automatic", - "created": 1701973709, + "created": 1702868357, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJFKuuB1fWySnG4RDCFdz", + "payment_method": "pm_1OOX33KuuB1fWySnQ88qyesN", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:30 GMT + recorded_at: Mon, 18 Dec 2023 02:59:18 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJFKuuB1fWySn0RiXDALk/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX33KuuB1fWySn2jGxt4tW/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_KsLxdPCr1krVpJ","request_duration_ms":397}}' + - '{"last_request_metrics":{"request_id":"req_ltyDGzEJaILixf","request_duration_ms":442}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:31 GMT + - Mon, 18 Dec 2023 02:59:19 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - bfd90bfa-eff1-43ef-85c1-e22a24738449 + - 28dc9fc1-b761-46a0-99f7-d1fb27977dcc Original-Request: - - req_OD7p5YtOsxltu9 + - req_AiWDMdOvttDK0w Request-Id: - - req_OD7p5YtOsxltu9 + - req_AiWDMdOvttDK0w Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJFKuuB1fWySn0RiXDALk", + "id": "pi_3OOX33KuuB1fWySn2jGxt4tW", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJFKuuB1fWySn0RiXDALk_secret_b6vDZ7eHAGmjUfRNW1Qb68anu", + "client_secret": "pi_3OOX33KuuB1fWySn2jGxt4tW_secret_4gLfHAHcPDWhAExnXZMDtyjw8", "confirmation_method": "automatic", - "created": 1701973709, + "created": 1702868357, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJFKuuB1fWySn048wVScN", + "latest_charge": "ch_3OOX33KuuB1fWySn2HPur4Xg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJFKuuB1fWySnG4RDCFdz", + "payment_method": "pm_1OOX33KuuB1fWySnQ88qyesN", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:31 GMT + recorded_at: Mon, 18 Dec 2023 02:59:19 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml index 7e9ff3ceb6..c9efd0f1a0 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=3566002020360505&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_hMOPKjlp71sTjs","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_03CYJaB3ztU3ai","request_duration_ms":988}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:56 GMT + - Mon, 18 Dec 2023 02:59:44 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8730788e-4b26-423e-9cab-c9ce8b9f6a97 + - 28afbd39-14a4-4617-9aab-012aff660486 Original-Request: - - req_7zQuJiyBZ3eveq + - req_ykckziXt009cSt Request-Id: - - req_7zQuJiyBZ3eveq + - req_ykckziXt009cSt Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "id": "pm_1OOX3UKuuB1fWySnCdgysR7w", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973736, + "created": 1702868384, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:56 GMT + recorded_at: Mon, 18 Dec 2023 02:59:44 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJgKuuB1fWySnMg6F1ldG&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3UKuuB1fWySnCdgysR7w&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7zQuJiyBZ3eveq","request_duration_ms":463}}' + - '{"last_request_metrics":{"request_id":"req_ykckziXt009cSt","request_duration_ms":499}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:56 GMT + - Mon, 18 Dec 2023 02:59:44 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - d8f465a5-7576-4124-8575-da32c102afe3 + - 4fe3d006-e52b-498b-8e22-00f0add5ca0e Original-Request: - - req_JHl5xfBvqL4suw + - req_NjVRyCCMjZnmVC Request-Id: - - req_JHl5xfBvqL4suw + - req_NjVRyCCMjZnmVC Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJgKuuB1fWySn1hN5bJvx", + "id": "pi_3OOX3UKuuB1fWySn2Dq9USsi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJgKuuB1fWySn1hN5bJvx_secret_4eQilOHsI4GRChCUc2zbW4fSn", + "client_secret": "pi_3OOX3UKuuB1fWySn2Dq9USsi_secret_MLWe6TXKVft4V9t4tk9qUrae9", "confirmation_method": "automatic", - "created": 1701973736, + "created": 1702868384, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "payment_method": "pm_1OOX3UKuuB1fWySnCdgysR7w", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:57 GMT + recorded_at: Mon, 18 Dec 2023 02:59:45 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJgKuuB1fWySn1hN5bJvx/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3UKuuB1fWySn2Dq9USsi/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_JHl5xfBvqL4suw","request_duration_ms":503}}' + - '{"last_request_metrics":{"request_id":"req_NjVRyCCMjZnmVC","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:57 GMT + - Mon, 18 Dec 2023 02:59:45 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8794cd99-e4e8-47a0-94db-bbf2f65e3678 + - aca85bc7-6ccb-4c46-9baa-fbc03095c65c Original-Request: - - req_r1VoKKjyov5lhs + - req_bhTWGvE9CaiXbB Request-Id: - - req_r1VoKKjyov5lhs + - req_bhTWGvE9CaiXbB Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJgKuuB1fWySn1hN5bJvx", + "id": "pi_3OOX3UKuuB1fWySn2Dq9USsi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJgKuuB1fWySn1hN5bJvx_secret_4eQilOHsI4GRChCUc2zbW4fSn", + "client_secret": "pi_3OOX3UKuuB1fWySn2Dq9USsi_secret_MLWe6TXKVft4V9t4tk9qUrae9", "confirmation_method": "automatic", - "created": 1701973736, + "created": 1702868384, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJgKuuB1fWySn1RBle4B4", + "latest_charge": "ch_3OOX3UKuuB1fWySn2Gf54YI0", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "payment_method": "pm_1OOX3UKuuB1fWySnCdgysR7w", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:57 GMT + recorded_at: Mon, 18 Dec 2023 02:59:46 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJgKuuB1fWySn1hN5bJvx + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3UKuuB1fWySn2Dq9USsi body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_r1VoKKjyov5lhs","request_duration_ms":934}}' + - '{"last_request_metrics":{"request_id":"req_bhTWGvE9CaiXbB","request_duration_ms":930}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:58 GMT + - Mon, 18 Dec 2023 02:59:46 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_2IeWJwqrMeKQdG + - req_xViX6ALjrdjdUu Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJgKuuB1fWySn1hN5bJvx", + "id": "pi_3OOX3UKuuB1fWySn2Dq9USsi", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJgKuuB1fWySn1hN5bJvx_secret_4eQilOHsI4GRChCUc2zbW4fSn", + "client_secret": "pi_3OOX3UKuuB1fWySn2Dq9USsi_secret_MLWe6TXKVft4V9t4tk9qUrae9", "confirmation_method": "automatic", - "created": 1701973736, + "created": 1702868384, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJgKuuB1fWySn1RBle4B4", + "latest_charge": "ch_3OOX3UKuuB1fWySn2Gf54YI0", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "payment_method": "pm_1OOX3UKuuB1fWySnCdgysR7w", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:58 GMT + recorded_at: Mon, 18 Dec 2023 02:59:46 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJgKuuB1fWySn1hN5bJvx/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3UKuuB1fWySn2Dq9USsi/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2IeWJwqrMeKQdG","request_duration_ms":372}}' + - '{"last_request_metrics":{"request_id":"req_xViX6ALjrdjdUu","request_duration_ms":395}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:59 GMT + - Mon, 18 Dec 2023 02:59:47 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - fbb7ff30-b683-4066-ac6a-80f328d5b750 + - 93aa4bd4-3a7e-4249-9641-13ab14e443a4 Original-Request: - - req_jqX2sB0aEcsb3O + - req_j6i5cIlePuhEhv Request-Id: - - req_jqX2sB0aEcsb3O + - req_j6i5cIlePuhEhv Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJgKuuB1fWySn1hN5bJvx", + "id": "pi_3OOX3UKuuB1fWySn2Dq9USsi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJgKuuB1fWySn1hN5bJvx_secret_4eQilOHsI4GRChCUc2zbW4fSn", + "client_secret": "pi_3OOX3UKuuB1fWySn2Dq9USsi_secret_MLWe6TXKVft4V9t4tk9qUrae9", "confirmation_method": "automatic", - "created": 1701973736, + "created": 1702868384, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJgKuuB1fWySn1RBle4B4", + "latest_charge": "ch_3OOX3UKuuB1fWySn2Gf54YI0", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "payment_method": "pm_1OOX3UKuuB1fWySnCdgysR7w", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:59 GMT + recorded_at: Mon, 18 Dec 2023 02:59:47 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJgKuuB1fWySn1hN5bJvx + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3UKuuB1fWySn2Dq9USsi body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_jqX2sB0aEcsb3O","request_duration_ms":984}}' + - '{"last_request_metrics":{"request_id":"req_j6i5cIlePuhEhv","request_duration_ms":1070}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:59 GMT + - Mon, 18 Dec 2023 02:59:47 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_2zWWDLVtynwwtV + - req_AhswC3MNekmSlW Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJgKuuB1fWySn1hN5bJvx", + "id": "pi_3OOX3UKuuB1fWySn2Dq9USsi", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJgKuuB1fWySn1hN5bJvx_secret_4eQilOHsI4GRChCUc2zbW4fSn", + "client_secret": "pi_3OOX3UKuuB1fWySn2Dq9USsi_secret_MLWe6TXKVft4V9t4tk9qUrae9", "confirmation_method": "automatic", - "created": 1701973736, + "created": 1702868384, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJgKuuB1fWySn1RBle4B4", + "latest_charge": "ch_3OOX3UKuuB1fWySn2Gf54YI0", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJgKuuB1fWySnMg6F1ldG", + "payment_method": "pm_1OOX3UKuuB1fWySnCdgysR7w", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:59 GMT + recorded_at: Mon, 18 Dec 2023 02:59:47 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml index c99c4bf27d..9fb1f76ffb 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_JCB/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=3566002020360505&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ukNukAiO0qHnGG","request_duration_ms":309}}' + - '{"last_request_metrics":{"request_id":"req_zb0vl5m9Ua0WEi","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:54 GMT + - Mon, 18 Dec 2023 02:59:42 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4434218d-894b-4ceb-83ec-1a436234d21e + - 41a3f1a6-27ec-4fa2-a339-cb2037cf8326 Original-Request: - - req_x27ah5cOfF5XOj + - req_uskAiQ8Do9rgJu Request-Id: - - req_x27ah5cOfF5XOj + - req_uskAiQ8Do9rgJu Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJdKuuB1fWySnDEmBLugA", + "id": "pm_1OOX3RKuuB1fWySnpKLflowt", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973734, + "created": 1702868382, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:54 GMT + recorded_at: Mon, 18 Dec 2023 02:59:42 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJdKuuB1fWySnDEmBLugA&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3RKuuB1fWySnpKLflowt&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_x27ah5cOfF5XOj","request_duration_ms":456}}' + - '{"last_request_metrics":{"request_id":"req_uskAiQ8Do9rgJu","request_duration_ms":599}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:54 GMT + - Mon, 18 Dec 2023 02:59:42 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e198db92-c4f7-4fe4-bc7d-2a0e61370482 + - 1a220e76-dfe1-4749-8a48-b05b5c2c8211 Original-Request: - - req_ADwQLlNqyCR9ys + - req_lGABfr58ITkytZ Request-Id: - - req_ADwQLlNqyCR9ys + - req_lGABfr58ITkytZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJeKuuB1fWySn2nRwXoJV", + "id": "pi_3OOX3SKuuB1fWySn20azDkQQ", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJeKuuB1fWySn2nRwXoJV_secret_tE37RJuy5ngyLc3YOTc1RMhfS", + "client_secret": "pi_3OOX3SKuuB1fWySn20azDkQQ_secret_1Hf4aoIqaGfJ2Bq4blSEbEZI1", "confirmation_method": "automatic", - "created": 1701973734, + "created": 1702868382, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJdKuuB1fWySnDEmBLugA", + "payment_method": "pm_1OOX3RKuuB1fWySnpKLflowt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:54 GMT + recorded_at: Mon, 18 Dec 2023 02:59:42 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJeKuuB1fWySn2nRwXoJV/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3SKuuB1fWySn20azDkQQ/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ADwQLlNqyCR9ys","request_duration_ms":445}}' + - '{"last_request_metrics":{"request_id":"req_lGABfr58ITkytZ","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:55 GMT + - Mon, 18 Dec 2023 02:59:43 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - bdc948ad-3e07-4df6-9dc7-1201ca5cd09a + - a2ed85a1-88e5-4c9b-b04d-6081eff88097 Original-Request: - - req_hMOPKjlp71sTjs + - req_03CYJaB3ztU3ai Request-Id: - - req_hMOPKjlp71sTjs + - req_03CYJaB3ztU3ai Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJeKuuB1fWySn2nRwXoJV", + "id": "pi_3OOX3SKuuB1fWySn20azDkQQ", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJeKuuB1fWySn2nRwXoJV_secret_tE37RJuy5ngyLc3YOTc1RMhfS", + "client_secret": "pi_3OOX3SKuuB1fWySn20azDkQQ_secret_1Hf4aoIqaGfJ2Bq4blSEbEZI1", "confirmation_method": "automatic", - "created": 1701973734, + "created": 1702868382, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJeKuuB1fWySn2InZNFQJ", + "latest_charge": "ch_3OOX3SKuuB1fWySn2bq4wlbp", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJdKuuB1fWySnDEmBLugA", + "payment_method": "pm_1OOX3RKuuB1fWySnpKLflowt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:55 GMT + recorded_at: Mon, 18 Dec 2023 02:59:43 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml index 6b6c76e02b..67b2f6d8ef 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5555555555554444&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_uPRVtOIHi2zuO8","request_duration_ms":1040}}' + - '{"last_request_metrics":{"request_id":"req_ergT6fcBal90Qf","request_duration_ms":1021}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:54 GMT + - Mon, 18 Dec 2023 02:58:41 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - c96cf75b-456b-4fe1-abf4-18d8e9837f13 + - 2c5fe965-7452-48e1-8dd5-7aafdd78c2cf Original-Request: - - req_dJiODVHcxLR7LS + - req_N3TJd7OlL3LXLj Request-Id: - - req_dJiODVHcxLR7LS + - req_N3TJd7OlL3LXLj Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "id": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973674, + "created": 1702868321, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:54 GMT + recorded_at: Mon, 18 Dec 2023 02:58:42 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIgKuuB1fWySnd62AD0JC&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2TKuuB1fWySnp2kbnRP8&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_dJiODVHcxLR7LS","request_duration_ms":469}}' + - '{"last_request_metrics":{"request_id":"req_N3TJd7OlL3LXLj","request_duration_ms":569}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:54 GMT + - Mon, 18 Dec 2023 02:58:42 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 0de19016-4a88-448e-9db7-387289642c9c + - 2bc006fe-a47e-43d7-890e-aa6cb88ef9aa Original-Request: - - req_XTIZC3wHhM1qG8 + - req_GMZCj3SEPsp53p Request-Id: - - req_XTIZC3wHhM1qG8 + - req_GMZCj3SEPsp53p Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIgKuuB1fWySn02oibhj5", + "id": "pi_3OOX2UKuuB1fWySn1qCNSeLu", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIgKuuB1fWySn02oibhj5_secret_ELBl5jNfvcCjG0DEnnenFXP7Z", + "client_secret": "pi_3OOX2UKuuB1fWySn1qCNSeLu_secret_cAFu1mjuf8Q684xSZjEgE1UVT", "confirmation_method": "automatic", - "created": 1701973674, + "created": 1702868322, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "payment_method": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:54 GMT + recorded_at: Mon, 18 Dec 2023 02:58:42 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIgKuuB1fWySn02oibhj5/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2UKuuB1fWySn1qCNSeLu/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_XTIZC3wHhM1qG8","request_duration_ms":522}}' + - '{"last_request_metrics":{"request_id":"req_GMZCj3SEPsp53p","request_duration_ms":507}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:55 GMT + - Mon, 18 Dec 2023 02:58:43 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 6ce076bc-39ee-4812-90bd-9864dd583f3c + - f710bc31-0f8e-45e9-ad5e-ef8917960db9 Original-Request: - - req_4SgPGK4QXkjxuJ + - req_k2QBTMughc8ECR Request-Id: - - req_4SgPGK4QXkjxuJ + - req_k2QBTMughc8ECR Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIgKuuB1fWySn02oibhj5", + "id": "pi_3OOX2UKuuB1fWySn1qCNSeLu", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIgKuuB1fWySn02oibhj5_secret_ELBl5jNfvcCjG0DEnnenFXP7Z", + "client_secret": "pi_3OOX2UKuuB1fWySn1qCNSeLu_secret_cAFu1mjuf8Q684xSZjEgE1UVT", "confirmation_method": "automatic", - "created": 1701973674, + "created": 1702868322, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIgKuuB1fWySn0xOQy6Gd", + "latest_charge": "ch_3OOX2UKuuB1fWySn1Mqk9vfq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "payment_method": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:55 GMT + recorded_at: Mon, 18 Dec 2023 02:58:43 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIgKuuB1fWySn02oibhj5 + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2UKuuB1fWySn1qCNSeLu body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4SgPGK4QXkjxuJ","request_duration_ms":1039}}' + - '{"last_request_metrics":{"request_id":"req_k2QBTMughc8ECR","request_duration_ms":1024}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:56 GMT + - Mon, 18 Dec 2023 02:58:43 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_eJC1Ny3GGWNKZX + - req_DAqUGnWcOUHWZV Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIgKuuB1fWySn02oibhj5", + "id": "pi_3OOX2UKuuB1fWySn1qCNSeLu", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIgKuuB1fWySn02oibhj5_secret_ELBl5jNfvcCjG0DEnnenFXP7Z", + "client_secret": "pi_3OOX2UKuuB1fWySn1qCNSeLu_secret_cAFu1mjuf8Q684xSZjEgE1UVT", "confirmation_method": "automatic", - "created": 1701973674, + "created": 1702868322, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIgKuuB1fWySn0xOQy6Gd", + "latest_charge": "ch_3OOX2UKuuB1fWySn1Mqk9vfq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "payment_method": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:56 GMT + recorded_at: Mon, 18 Dec 2023 02:58:43 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIgKuuB1fWySn02oibhj5/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2UKuuB1fWySn1qCNSeLu/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_eJC1Ny3GGWNKZX","request_duration_ms":310}}' + - '{"last_request_metrics":{"request_id":"req_DAqUGnWcOUHWZV","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:57 GMT + - Mon, 18 Dec 2023 02:58:44 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 13df3a83-9752-43da-b0f2-df38766dc260 + - '09ba7764-0bf3-4215-9fb5-154db38890c6' Original-Request: - - req_4YHZQnxgml6iaR + - req_NxbGlKfwjR56jm Request-Id: - - req_4YHZQnxgml6iaR + - req_NxbGlKfwjR56jm Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIgKuuB1fWySn02oibhj5", + "id": "pi_3OOX2UKuuB1fWySn1qCNSeLu", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIgKuuB1fWySn02oibhj5_secret_ELBl5jNfvcCjG0DEnnenFXP7Z", + "client_secret": "pi_3OOX2UKuuB1fWySn1qCNSeLu_secret_cAFu1mjuf8Q684xSZjEgE1UVT", "confirmation_method": "automatic", - "created": 1701973674, + "created": 1702868322, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIgKuuB1fWySn0xOQy6Gd", + "latest_charge": "ch_3OOX2UKuuB1fWySn1Mqk9vfq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "payment_method": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:57 GMT + recorded_at: Mon, 18 Dec 2023 02:58:45 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIgKuuB1fWySn02oibhj5 + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2UKuuB1fWySn1qCNSeLu body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4YHZQnxgml6iaR","request_duration_ms":1041}}' + - '{"last_request_metrics":{"request_id":"req_NxbGlKfwjR56jm","request_duration_ms":1125}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:57 GMT + - Mon, 18 Dec 2023 02:58:45 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_UQHwQy1Tsl0t2p + - req_drb4Fp68hTt0gn Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIgKuuB1fWySn02oibhj5", + "id": "pi_3OOX2UKuuB1fWySn1qCNSeLu", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIgKuuB1fWySn02oibhj5_secret_ELBl5jNfvcCjG0DEnnenFXP7Z", + "client_secret": "pi_3OOX2UKuuB1fWySn1qCNSeLu_secret_cAFu1mjuf8Q684xSZjEgE1UVT", "confirmation_method": "automatic", - "created": 1701973674, + "created": 1702868322, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIgKuuB1fWySn0xOQy6Gd", + "latest_charge": "ch_3OOX2UKuuB1fWySn1Mqk9vfq", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIgKuuB1fWySnd62AD0JC", + "payment_method": "pm_1OOX2TKuuB1fWySnp2kbnRP8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:57 GMT + recorded_at: Mon, 18 Dec 2023 02:58:45 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml index cc76df4344..70d3cda9b3 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5555555555554444&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_FXU6PzCIqo9KuH","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_fq0KpnR0RlgizG","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:51 GMT + - Mon, 18 Dec 2023 02:58:39 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 7682ac56-a5b5-478b-a769-3abfc9e509ec + - d74d70d4-3368-4a17-8ae0-3e516b54130c Original-Request: - - req_Q9lKDvArMuMIU5 + - req_erKYj1eUnS3wQd Request-Id: - - req_Q9lKDvArMuMIU5 + - req_erKYj1eUnS3wQd Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIdKuuB1fWySnIwF7GFFP", + "id": "pm_1OOX2RKuuB1fWySnTkbLUxsP", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973671, + "created": 1702868319, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:52 GMT + recorded_at: Mon, 18 Dec 2023 02:58:39 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIdKuuB1fWySnIwF7GFFP&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2RKuuB1fWySnTkbLUxsP&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Q9lKDvArMuMIU5","request_duration_ms":486}}' + - '{"last_request_metrics":{"request_id":"req_erKYj1eUnS3wQd","request_duration_ms":499}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:52 GMT + - Mon, 18 Dec 2023 02:58:40 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - af6918b9-44a1-4c31-b624-fcc1211bcea8 + - e392e21a-5f4f-4dad-b7b0-3861b8fa2951 Original-Request: - - req_1h7VZKYshruVqS + - req_CMybAOb7Uc51HA Request-Id: - - req_1h7VZKYshruVqS + - req_CMybAOb7Uc51HA Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIeKuuB1fWySn1llmIojq", + "id": "pi_3OOX2RKuuB1fWySn18e5Y82d", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIeKuuB1fWySn1llmIojq_secret_ifZCFIk0mmQjTEVZ6RhcedNOE", + "client_secret": "pi_3OOX2RKuuB1fWySn18e5Y82d_secret_9uZbT7j0j8EpUDpf4TeO8ruH0", "confirmation_method": "automatic", - "created": 1701973672, + "created": 1702868319, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIdKuuB1fWySnIwF7GFFP", + "payment_method": "pm_1OOX2RKuuB1fWySnTkbLUxsP", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:52 GMT + recorded_at: Mon, 18 Dec 2023 02:58:40 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIeKuuB1fWySn1llmIojq/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2RKuuB1fWySn18e5Y82d/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_1h7VZKYshruVqS","request_duration_ms":517}}' + - '{"last_request_metrics":{"request_id":"req_CMybAOb7Uc51HA","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:53 GMT + - Mon, 18 Dec 2023 02:58:41 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 52ca5fba-97e4-4b71-8b31-16e10e4a9993 + - 1cf8c3b1-bc2c-4635-ae82-773b79552af7 Original-Request: - - req_uPRVtOIHi2zuO8 + - req_ergT6fcBal90Qf Request-Id: - - req_uPRVtOIHi2zuO8 + - req_ergT6fcBal90Qf Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIeKuuB1fWySn1llmIojq", + "id": "pi_3OOX2RKuuB1fWySn18e5Y82d", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIeKuuB1fWySn1llmIojq_secret_ifZCFIk0mmQjTEVZ6RhcedNOE", + "client_secret": "pi_3OOX2RKuuB1fWySn18e5Y82d_secret_9uZbT7j0j8EpUDpf4TeO8ruH0", "confirmation_method": "automatic", - "created": 1701973672, + "created": 1702868319, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIeKuuB1fWySn15SM7XBE", + "latest_charge": "ch_3OOX2RKuuB1fWySn1HVd67a4", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIdKuuB1fWySnIwF7GFFP", + "payment_method": "pm_1OOX2RKuuB1fWySnTkbLUxsP", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:53 GMT + recorded_at: Mon, 18 Dec 2023 02:58:41 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml index b1ab24ab81..25e274230f 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=2223003122003222&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_F7VSqCBneYfU5B","request_duration_ms":1041}}' + - '{"last_request_metrics":{"request_id":"req_JaDGTy20BdHvIP","request_duration_ms":997}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:00 GMT + - Mon, 18 Dec 2023 02:58:48 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9197bb19-29ed-4a9d-b7e3-5f451a7526e3 + - 34a41651-76cc-4f6f-9b2a-6047d9fa255b Original-Request: - - req_nu2jnAULYdmG6O + - req_OzWvgyxTnDdXP3 Request-Id: - - req_nu2jnAULYdmG6O + - req_OzWvgyxTnDdXP3 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "id": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973680, + "created": 1702868327, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:00 GMT + recorded_at: Mon, 18 Dec 2023 02:58:48 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmImKuuB1fWySnxKAdC4WL&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2ZKuuB1fWySnobr6Gbrt&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_nu2jnAULYdmG6O","request_duration_ms":425}}' + - '{"last_request_metrics":{"request_id":"req_OzWvgyxTnDdXP3","request_duration_ms":486}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:00 GMT + - Mon, 18 Dec 2023 02:58:48 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9f714f47-8e46-49f7-82d0-b7c03f027bb5 + - 03245c0c-1f56-4672-a4df-f6f06ff4b7d7 Original-Request: - - req_VdvUqSd2Z6okDc + - req_Fl691MrGp5l2MO Request-Id: - - req_VdvUqSd2Z6okDc + - req_Fl691MrGp5l2MO Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmImKuuB1fWySn1LTriLK8", + "id": "pi_3OOX2aKuuB1fWySn24dLU4BL", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmImKuuB1fWySn1LTriLK8_secret_s4RGQJMJAadQ4fEKgnK9tEoyW", + "client_secret": "pi_3OOX2aKuuB1fWySn24dLU4BL_secret_93zXsfFGxABcOdG6jpKWJSd1b", "confirmation_method": "automatic", - "created": 1701973680, + "created": 1702868328, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "payment_method": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:00 GMT + recorded_at: Mon, 18 Dec 2023 02:58:48 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmImKuuB1fWySn1LTriLK8/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2aKuuB1fWySn24dLU4BL/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VdvUqSd2Z6okDc","request_duration_ms":519}}' + - '{"last_request_metrics":{"request_id":"req_Fl691MrGp5l2MO","request_duration_ms":436}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:01 GMT + - Mon, 18 Dec 2023 02:58:49 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8cec83a0-0be6-41de-8ad3-ad01e0768012 + - e6397444-1009-4335-88ef-313f7f03e077 Original-Request: - - req_f9uErR1hweOWED + - req_LcnURfJeCyxjJs Request-Id: - - req_f9uErR1hweOWED + - req_LcnURfJeCyxjJs Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmImKuuB1fWySn1LTriLK8", + "id": "pi_3OOX2aKuuB1fWySn24dLU4BL", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmImKuuB1fWySn1LTriLK8_secret_s4RGQJMJAadQ4fEKgnK9tEoyW", + "client_secret": "pi_3OOX2aKuuB1fWySn24dLU4BL_secret_93zXsfFGxABcOdG6jpKWJSd1b", "confirmation_method": "automatic", - "created": 1701973680, + "created": 1702868328, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmImKuuB1fWySn1kgM1mMz", + "latest_charge": "ch_3OOX2aKuuB1fWySn2JqJirS8", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "payment_method": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:01 GMT + recorded_at: Mon, 18 Dec 2023 02:58:49 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmImKuuB1fWySn1LTriLK8 + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2aKuuB1fWySn24dLU4BL body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_f9uErR1hweOWED","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_LcnURfJeCyxjJs","request_duration_ms":1094}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:02 GMT + - Mon, 18 Dec 2023 02:58:49 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_6wh5h5L8j3Vxjc + - req_mROAddEvjw4VPo Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmImKuuB1fWySn1LTriLK8", + "id": "pi_3OOX2aKuuB1fWySn24dLU4BL", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmImKuuB1fWySn1LTriLK8_secret_s4RGQJMJAadQ4fEKgnK9tEoyW", + "client_secret": "pi_3OOX2aKuuB1fWySn24dLU4BL_secret_93zXsfFGxABcOdG6jpKWJSd1b", "confirmation_method": "automatic", - "created": 1701973680, + "created": 1702868328, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmImKuuB1fWySn1kgM1mMz", + "latest_charge": "ch_3OOX2aKuuB1fWySn2JqJirS8", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "payment_method": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:02 GMT + recorded_at: Mon, 18 Dec 2023 02:58:50 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmImKuuB1fWySn1LTriLK8/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2aKuuB1fWySn24dLU4BL/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_6wh5h5L8j3Vxjc","request_duration_ms":311}}' + - '{"last_request_metrics":{"request_id":"req_mROAddEvjw4VPo","request_duration_ms":407}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:03 GMT + - Mon, 18 Dec 2023 02:58:51 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4471c90e-5502-4cea-a251-ccb657c59cdb + - 8d5b1aa1-ff5c-4ae7-b190-dbee2b845dfd Original-Request: - - req_zetd02Y9jHt1pC + - req_BgvOKfHKZ7j7Br Request-Id: - - req_zetd02Y9jHt1pC + - req_BgvOKfHKZ7j7Br Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmImKuuB1fWySn1LTriLK8", + "id": "pi_3OOX2aKuuB1fWySn24dLU4BL", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmImKuuB1fWySn1LTriLK8_secret_s4RGQJMJAadQ4fEKgnK9tEoyW", + "client_secret": "pi_3OOX2aKuuB1fWySn24dLU4BL_secret_93zXsfFGxABcOdG6jpKWJSd1b", "confirmation_method": "automatic", - "created": 1701973680, + "created": 1702868328, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmImKuuB1fWySn1kgM1mMz", + "latest_charge": "ch_3OOX2aKuuB1fWySn2JqJirS8", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "payment_method": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:03 GMT + recorded_at: Mon, 18 Dec 2023 02:58:51 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmImKuuB1fWySn1LTriLK8 + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2aKuuB1fWySn24dLU4BL body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_zetd02Y9jHt1pC","request_duration_ms":1043}}' + - '{"last_request_metrics":{"request_id":"req_BgvOKfHKZ7j7Br","request_duration_ms":965}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:03 GMT + - Mon, 18 Dec 2023 02:58:51 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_EezFkYo3riUHVz + - req_lIYNmg5yexRUWZ Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmImKuuB1fWySn1LTriLK8", + "id": "pi_3OOX2aKuuB1fWySn24dLU4BL", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmImKuuB1fWySn1LTriLK8_secret_s4RGQJMJAadQ4fEKgnK9tEoyW", + "client_secret": "pi_3OOX2aKuuB1fWySn24dLU4BL_secret_93zXsfFGxABcOdG6jpKWJSd1b", "confirmation_method": "automatic", - "created": 1701973680, + "created": 1702868328, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmImKuuB1fWySn1kgM1mMz", + "latest_charge": "ch_3OOX2aKuuB1fWySn2JqJirS8", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmImKuuB1fWySnxKAdC4WL", + "payment_method": "pm_1OOX2ZKuuB1fWySnobr6Gbrt", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:03 GMT + recorded_at: Mon, 18 Dec 2023 02:58:51 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml index 13cb24bc9f..dcd2474877 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_2-series_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=2223003122003222&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_UQHwQy1Tsl0t2p","request_duration_ms":310}}' + - '{"last_request_metrics":{"request_id":"req_drb4Fp68hTt0gn","request_duration_ms":406}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:58 GMT + - Mon, 18 Dec 2023 02:58:45 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 789db994-f7fd-4925-be69-ad65dc6ddf3c + - c51a0edc-bf21-4f80-9f0f-52e9be036572 Original-Request: - - req_dUBpW2g51vudVU + - req_WjeYwxzPcNdvuP Request-Id: - - req_dUBpW2g51vudVU + - req_WjeYwxzPcNdvuP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIjKuuB1fWySnnbp7pO7A", + "id": "pm_1OOX2XKuuB1fWySny5DVMAZJ", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973677, + "created": 1702868325, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:58 GMT + recorded_at: Mon, 18 Dec 2023 02:58:46 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIjKuuB1fWySnnbp7pO7A&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2XKuuB1fWySny5DVMAZJ&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_dUBpW2g51vudVU","request_duration_ms":461}}' + - '{"last_request_metrics":{"request_id":"req_WjeYwxzPcNdvuP","request_duration_ms":498}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:58 GMT + - Mon, 18 Dec 2023 02:58:46 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8a03ba1a-5bac-41ce-b325-c7975835ca86 + - 264e0c6e-88b1-4845-b494-3539cefb622a Original-Request: - - req_ZnPhHuMcP0wh94 + - req_VMQByjOCGLZd8T Request-Id: - - req_ZnPhHuMcP0wh94 + - req_VMQByjOCGLZd8T Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIkKuuB1fWySn1AzylDm3", + "id": "pi_3OOX2YKuuB1fWySn2BmK5bdq", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIkKuuB1fWySn1AzylDm3_secret_5h8NXiKfSWRsYgrJcE3IjifwL", + "client_secret": "pi_3OOX2YKuuB1fWySn2BmK5bdq_secret_dDbWzdOJVLTATFlkxXWP6j841", "confirmation_method": "automatic", - "created": 1701973678, + "created": 1702868326, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIjKuuB1fWySnnbp7pO7A", + "payment_method": "pm_1OOX2XKuuB1fWySny5DVMAZJ", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:58 GMT + recorded_at: Mon, 18 Dec 2023 02:58:46 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIkKuuB1fWySn1AzylDm3/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2YKuuB1fWySn2BmK5bdq/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ZnPhHuMcP0wh94","request_duration_ms":441}}' + - '{"last_request_metrics":{"request_id":"req_VMQByjOCGLZd8T","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:59 GMT + - Mon, 18 Dec 2023 02:58:47 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5c2113cd-8e3e-4d35-965c-b6ed7563fbc2 + - 0f42e592-48e5-4d83-a025-e90067084242 Original-Request: - - req_F7VSqCBneYfU5B + - req_JaDGTy20BdHvIP Request-Id: - - req_F7VSqCBneYfU5B + - req_JaDGTy20BdHvIP Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIkKuuB1fWySn1AzylDm3", + "id": "pi_3OOX2YKuuB1fWySn2BmK5bdq", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIkKuuB1fWySn1AzylDm3_secret_5h8NXiKfSWRsYgrJcE3IjifwL", + "client_secret": "pi_3OOX2YKuuB1fWySn2BmK5bdq_secret_dDbWzdOJVLTATFlkxXWP6j841", "confirmation_method": "automatic", - "created": 1701973678, + "created": 1702868326, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIkKuuB1fWySn1PoBIzEE", + "latest_charge": "ch_3OOX2YKuuB1fWySn2sOpSTAF", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIjKuuB1fWySnnbp7pO7A", + "payment_method": "pm_1OOX2XKuuB1fWySny5DVMAZJ", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:59 GMT + recorded_at: Mon, 18 Dec 2023 02:58:47 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml index 45890a9942..667e93abde 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5200828282828210&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_pv9EbZnxMsFgzm","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_SVxIKNNZ1wai8q","request_duration_ms":1024}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:06 GMT + - Mon, 18 Dec 2023 02:58:54 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - fc9991ef-ec68-4fb8-a774-3b6ca894ddfe + - 2c3cf61b-76e8-433b-923d-c1b4d3d8c90b Original-Request: - - req_8kQQV4Out5BRgJ + - req_u6a8VMhEAxB3C1 Request-Id: - - req_8kQQV4Out5BRgJ + - req_u6a8VMhEAxB3C1 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "id": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973686, + "created": 1702868334, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:06 GMT + recorded_at: Mon, 18 Dec 2023 02:58:54 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIsKuuB1fWySnQYn3mdG8&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2fKuuB1fWySnvFdhJRxq&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8kQQV4Out5BRgJ","request_duration_ms":483}}' + - '{"last_request_metrics":{"request_id":"req_u6a8VMhEAxB3C1","request_duration_ms":543}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:06 GMT + - Mon, 18 Dec 2023 02:58:54 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ebd4c796-bba8-4d9e-8450-ea1108ee963f + - 3556f439-be6b-48ef-90ef-c940ae9ce01c Original-Request: - - req_I0Y4p5Yop0JXnQ + - req_hRKrPiT3eYh2DT Request-Id: - - req_I0Y4p5Yop0JXnQ + - req_hRKrPiT3eYh2DT Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIsKuuB1fWySn1Zejl8py", + "id": "pi_3OOX2gKuuB1fWySn1vjdVNiH", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIsKuuB1fWySn1Zejl8py_secret_QMh652tJTsFVs30kvwRdWSymQ", + "client_secret": "pi_3OOX2gKuuB1fWySn1vjdVNiH_secret_BxuJxnpShI1GKQTz8yF5e6ktI", "confirmation_method": "automatic", - "created": 1701973686, + "created": 1702868334, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "payment_method": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:06 GMT + recorded_at: Mon, 18 Dec 2023 02:58:54 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIsKuuB1fWySn1Zejl8py/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2gKuuB1fWySn1vjdVNiH/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_I0Y4p5Yop0JXnQ","request_duration_ms":559}}' + - '{"last_request_metrics":{"request_id":"req_hRKrPiT3eYh2DT","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:07 GMT + - Mon, 18 Dec 2023 02:58:55 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8349ce39-1ea4-4a2c-a168-341bbdd4e363 + - 5bf52bc9-7be4-4520-b14a-b914a65d2237 Original-Request: - - req_tLPNBXi8aPXaPS + - req_cHiCnobrJxFE0S Request-Id: - - req_tLPNBXi8aPXaPS + - req_cHiCnobrJxFE0S Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIsKuuB1fWySn1Zejl8py", + "id": "pi_3OOX2gKuuB1fWySn1vjdVNiH", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIsKuuB1fWySn1Zejl8py_secret_QMh652tJTsFVs30kvwRdWSymQ", + "client_secret": "pi_3OOX2gKuuB1fWySn1vjdVNiH_secret_BxuJxnpShI1GKQTz8yF5e6ktI", "confirmation_method": "automatic", - "created": 1701973686, + "created": 1702868334, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIsKuuB1fWySn1I0ym7Er", + "latest_charge": "ch_3OOX2gKuuB1fWySn1CuSzuSx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "payment_method": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:07 GMT + recorded_at: Mon, 18 Dec 2023 02:58:55 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIsKuuB1fWySn1Zejl8py + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2gKuuB1fWySn1vjdVNiH body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tLPNBXi8aPXaPS","request_duration_ms":981}}' + - '{"last_request_metrics":{"request_id":"req_cHiCnobrJxFE0S","request_duration_ms":1022}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:08 GMT + - Mon, 18 Dec 2023 02:58:56 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_iVlBwR59Eul6bT + - req_pMQi882TpukXin Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIsKuuB1fWySn1Zejl8py", + "id": "pi_3OOX2gKuuB1fWySn1vjdVNiH", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIsKuuB1fWySn1Zejl8py_secret_QMh652tJTsFVs30kvwRdWSymQ", + "client_secret": "pi_3OOX2gKuuB1fWySn1vjdVNiH_secret_BxuJxnpShI1GKQTz8yF5e6ktI", "confirmation_method": "automatic", - "created": 1701973686, + "created": 1702868334, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIsKuuB1fWySn1I0ym7Er", + "latest_charge": "ch_3OOX2gKuuB1fWySn1CuSzuSx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "payment_method": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:08 GMT + recorded_at: Mon, 18 Dec 2023 02:58:56 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIsKuuB1fWySn1Zejl8py/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2gKuuB1fWySn1vjdVNiH/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_iVlBwR59Eul6bT","request_duration_ms":368}}' + - '{"last_request_metrics":{"request_id":"req_pMQi882TpukXin","request_duration_ms":632}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:09 GMT + - Mon, 18 Dec 2023 02:58:57 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 58e8cb97-41a8-4586-a99a-9200697b45af + - b2057d1c-2bce-48e5-a710-713bc54c008a Original-Request: - - req_VDUnMr3N7Xjk9K + - req_MYvDJJd3oikDRd Request-Id: - - req_VDUnMr3N7Xjk9K + - req_MYvDJJd3oikDRd Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIsKuuB1fWySn1Zejl8py", + "id": "pi_3OOX2gKuuB1fWySn1vjdVNiH", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIsKuuB1fWySn1Zejl8py_secret_QMh652tJTsFVs30kvwRdWSymQ", + "client_secret": "pi_3OOX2gKuuB1fWySn1vjdVNiH_secret_BxuJxnpShI1GKQTz8yF5e6ktI", "confirmation_method": "automatic", - "created": 1701973686, + "created": 1702868334, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIsKuuB1fWySn1I0ym7Er", + "latest_charge": "ch_3OOX2gKuuB1fWySn1CuSzuSx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "payment_method": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:09 GMT + recorded_at: Mon, 18 Dec 2023 02:58:57 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIsKuuB1fWySn1Zejl8py + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2gKuuB1fWySn1vjdVNiH body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_VDUnMr3N7Xjk9K","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_MYvDJJd3oikDRd","request_duration_ms":1020}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:09 GMT + - Mon, 18 Dec 2023 02:58:57 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_vlDPSBm9PDsWK8 + - req_r9NZ5dN3R8Sj1T Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIsKuuB1fWySn1Zejl8py", + "id": "pi_3OOX2gKuuB1fWySn1vjdVNiH", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIsKuuB1fWySn1Zejl8py_secret_QMh652tJTsFVs30kvwRdWSymQ", + "client_secret": "pi_3OOX2gKuuB1fWySn1vjdVNiH_secret_BxuJxnpShI1GKQTz8yF5e6ktI", "confirmation_method": "automatic", - "created": 1701973686, + "created": 1702868334, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIsKuuB1fWySn1I0ym7Er", + "latest_charge": "ch_3OOX2gKuuB1fWySn1CuSzuSx", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIsKuuB1fWySnQYn3mdG8", + "payment_method": "pm_1OOX2fKuuB1fWySnvFdhJRxq", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:09 GMT + recorded_at: Mon, 18 Dec 2023 02:58:57 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml index 206daee23c..2cfd68a47e 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5200828282828210&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_EezFkYo3riUHVz","request_duration_ms":308}}' + - '{"last_request_metrics":{"request_id":"req_lIYNmg5yexRUWZ","request_duration_ms":360}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:04 GMT + - Mon, 18 Dec 2023 02:58:51 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - e35d6813-4c0d-47ec-9127-8416138dc4a7 + - 4767c56f-5363-48ce-8c00-0d63fedcb187 Original-Request: - - req_y3a3Pcyvtn8vuD + - req_kbwN4Qx0kE3vjZ Request-Id: - - req_y3a3Pcyvtn8vuD + - req_kbwN4Qx0kE3vjZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIpKuuB1fWySn6cx0Am9m", + "id": "pm_1OOX2dKuuB1fWySny6KP5jK7", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973683, + "created": 1702868331, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:04 GMT + recorded_at: Mon, 18 Dec 2023 02:58:51 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIpKuuB1fWySn6cx0Am9m&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2dKuuB1fWySny6KP5jK7&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_y3a3Pcyvtn8vuD","request_duration_ms":504}}' + - '{"last_request_metrics":{"request_id":"req_kbwN4Qx0kE3vjZ","request_duration_ms":498}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:04 GMT + - Mon, 18 Dec 2023 02:58:52 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - de47b700-9f30-40af-9be7-d7c24aa24f0e + - 0e1f31ac-aa1a-43b6-9299-fc9a8b01200c Original-Request: - - req_7Fniw2dNAHd3H9 + - req_4ZyZ4Yh49iZgti Request-Id: - - req_7Fniw2dNAHd3H9 + - req_4ZyZ4Yh49iZgti Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIqKuuB1fWySn2vthMsB7", + "id": "pi_3OOX2eKuuB1fWySn2PXUKrPC", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIqKuuB1fWySn2vthMsB7_secret_dHK5fiNBgRbHQffEPjyvyYi5l", + "client_secret": "pi_3OOX2eKuuB1fWySn2PXUKrPC_secret_EncD55gvZ6OscgpeGYvt5vHWQ", "confirmation_method": "automatic", - "created": 1701973684, + "created": 1702868332, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIpKuuB1fWySn6cx0Am9m", + "payment_method": "pm_1OOX2dKuuB1fWySny6KP5jK7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:04 GMT + recorded_at: Mon, 18 Dec 2023 02:58:52 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIqKuuB1fWySn2vthMsB7/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2eKuuB1fWySn2PXUKrPC/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7Fniw2dNAHd3H9","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_4ZyZ4Yh49iZgti","request_duration_ms":610}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:05 GMT + - Mon, 18 Dec 2023 02:58:53 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - bf5d2426-414b-4740-8f2d-3aa32215fbcb + - b50eaaf5-6384-4c51-9a2a-2cf9536483ad Original-Request: - - req_pv9EbZnxMsFgzm + - req_SVxIKNNZ1wai8q Request-Id: - - req_pv9EbZnxMsFgzm + - req_SVxIKNNZ1wai8q Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIqKuuB1fWySn2vthMsB7", + "id": "pi_3OOX2eKuuB1fWySn2PXUKrPC", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIqKuuB1fWySn2vthMsB7_secret_dHK5fiNBgRbHQffEPjyvyYi5l", + "client_secret": "pi_3OOX2eKuuB1fWySn2PXUKrPC_secret_EncD55gvZ6OscgpeGYvt5vHWQ", "confirmation_method": "automatic", - "created": 1701973684, + "created": 1702868332, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIqKuuB1fWySn2uEnh8k6", + "latest_charge": "ch_3OOX2eKuuB1fWySn2altuylj", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIpKuuB1fWySn6cx0Am9m", + "payment_method": "pm_1OOX2dKuuB1fWySny6KP5jK7", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:05 GMT + recorded_at: Mon, 18 Dec 2023 02:58:53 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml index 9872a4f244..2fb0749c5f 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5105105105105100&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_sbshHeH2Wx1hhY","request_duration_ms":1044}}' + - '{"last_request_metrics":{"request_id":"req_Uc2Oi4k1gRVI0w","request_duration_ms":961}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:12 GMT + - Mon, 18 Dec 2023 02:59:00 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 6ae66da0-9454-44f3-ba32-579a52eb8b2d + - 7e86c4b7-58db-488b-b81c-539820b690fe Original-Request: - - req_QfPWmmaq0rnaq5 + - req_ZEVVl3BSSlNA03 Request-Id: - - req_QfPWmmaq0rnaq5 + - req_ZEVVl3BSSlNA03 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIyKuuB1fWySnGB0ona01", + "id": "pm_1OOX2mKuuB1fWySngWMagkGj", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973692, + "created": 1702868340, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:12 GMT + recorded_at: Mon, 18 Dec 2023 02:59:00 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIyKuuB1fWySnGB0ona01&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2mKuuB1fWySngWMagkGj&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_QfPWmmaq0rnaq5","request_duration_ms":513}}' + - '{"last_request_metrics":{"request_id":"req_ZEVVl3BSSlNA03","request_duration_ms":551}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:13 GMT + - Mon, 18 Dec 2023 02:59:00 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f4e928f0-e26f-496d-a7da-72c429d897f7 + - 101064b9-2fbe-4fde-923f-bbd7ce85e172 Original-Request: - - req_EbND97S8DIzdL9 + - req_aPwjsCp2y0bXss Request-Id: - - req_EbND97S8DIzdL9 + - req_aPwjsCp2y0bXss Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIyKuuB1fWySn0yOdtoHC", + "id": "pi_3OOX2mKuuB1fWySn0gIMMfbs", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIyKuuB1fWySn0yOdtoHC_secret_9gXE8oUI6j5zoyQT4rO2S2C3F", + "client_secret": "pi_3OOX2mKuuB1fWySn0gIMMfbs_secret_Mf26EMIy37nKHSVJmOD9ewJiq", "confirmation_method": "automatic", - "created": 1701973692, + "created": 1702868340, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIyKuuB1fWySnGB0ona01", + "payment_method": "pm_1OOX2mKuuB1fWySngWMagkGj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:13 GMT + recorded_at: Mon, 18 Dec 2023 02:59:01 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIyKuuB1fWySn0yOdtoHC/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2mKuuB1fWySn0gIMMfbs/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_EbND97S8DIzdL9","request_duration_ms":413}}' + - '{"last_request_metrics":{"request_id":"req_aPwjsCp2y0bXss","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:13 GMT + - Mon, 18 Dec 2023 02:59:02 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 7beb2a85-5b9f-4c6e-9ee3-6e7a491bb023 + - 0d15788d-20d3-4df9-8b04-b1a07feec9c9 Original-Request: - - req_IzKaoYfXth1H4M + - req_8nf52llh5BXYtY Request-Id: - - req_IzKaoYfXth1H4M + - req_8nf52llh5BXYtY Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIyKuuB1fWySn0yOdtoHC", + "id": "pi_3OOX2mKuuB1fWySn0gIMMfbs", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIyKuuB1fWySn0yOdtoHC_secret_9gXE8oUI6j5zoyQT4rO2S2C3F", + "client_secret": "pi_3OOX2mKuuB1fWySn0gIMMfbs_secret_Mf26EMIy37nKHSVJmOD9ewJiq", "confirmation_method": "automatic", - "created": 1701973692, + "created": 1702868340, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIyKuuB1fWySn0jGYYkXj", + "latest_charge": "ch_3OOX2mKuuB1fWySn0bPfKDlV", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIyKuuB1fWySnGB0ona01", + "payment_method": "pm_1OOX2mKuuB1fWySngWMagkGj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:14 GMT + recorded_at: Mon, 18 Dec 2023 02:59:02 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIyKuuB1fWySn0yOdtoHC + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2mKuuB1fWySn0gIMMfbs body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_IzKaoYfXth1H4M","request_duration_ms":957}}' + - '{"last_request_metrics":{"request_id":"req_8nf52llh5BXYtY","request_duration_ms":1123}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:14 GMT + - Mon, 18 Dec 2023 02:59:02 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_sWvk1p7Da4gC8Y + - req_L2nUohTwBbbCcE Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIyKuuB1fWySn0yOdtoHC", + "id": "pi_3OOX2mKuuB1fWySn0gIMMfbs", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIyKuuB1fWySn0yOdtoHC_secret_9gXE8oUI6j5zoyQT4rO2S2C3F", + "client_secret": "pi_3OOX2mKuuB1fWySn0gIMMfbs_secret_Mf26EMIy37nKHSVJmOD9ewJiq", "confirmation_method": "automatic", - "created": 1701973692, + "created": 1702868340, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIyKuuB1fWySn0jGYYkXj", + "latest_charge": "ch_3OOX2mKuuB1fWySn0bPfKDlV", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIyKuuB1fWySnGB0ona01", + "payment_method": "pm_1OOX2mKuuB1fWySngWMagkGj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:14 GMT + recorded_at: Mon, 18 Dec 2023 02:59:02 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIyKuuB1fWySn0yOdtoHC/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2mKuuB1fWySn0gIMMfbs/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_sWvk1p7Da4gC8Y","request_duration_ms":396}}' + - '{"last_request_metrics":{"request_id":"req_L2nUohTwBbbCcE","request_duration_ms":405}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:15 GMT + - Mon, 18 Dec 2023 02:59:03 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 7758efa5-c4e9-465b-ac51-b49b0328fafd + - 3e44f50f-c7df-45f2-8d75-fde762fbff6b Original-Request: - - req_GRV9KFA5y1J97p + - req_KTlwJDsxNGOG4c Request-Id: - - req_GRV9KFA5y1J97p + - req_KTlwJDsxNGOG4c Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIyKuuB1fWySn0yOdtoHC", + "id": "pi_3OOX2mKuuB1fWySn0gIMMfbs", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIyKuuB1fWySn0yOdtoHC_secret_9gXE8oUI6j5zoyQT4rO2S2C3F", + "client_secret": "pi_3OOX2mKuuB1fWySn0gIMMfbs_secret_Mf26EMIy37nKHSVJmOD9ewJiq", "confirmation_method": "automatic", - "created": 1701973692, + "created": 1702868340, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIyKuuB1fWySn0jGYYkXj", + "latest_charge": "ch_3OOX2mKuuB1fWySn0bPfKDlV", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIyKuuB1fWySnGB0ona01", + "payment_method": "pm_1OOX2mKuuB1fWySngWMagkGj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:15 GMT + recorded_at: Mon, 18 Dec 2023 02:59:03 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIyKuuB1fWySn0yOdtoHC + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2mKuuB1fWySn0gIMMfbs body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GRV9KFA5y1J97p","request_duration_ms":1081}}' + - '{"last_request_metrics":{"request_id":"req_KTlwJDsxNGOG4c","request_duration_ms":1127}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:15 GMT + - Mon, 18 Dec 2023 02:59:04 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_VcABBYmtJMMIBJ + - req_OFyPXSYFIxW3RL Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIyKuuB1fWySn0yOdtoHC", + "id": "pi_3OOX2mKuuB1fWySn0gIMMfbs", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIyKuuB1fWySn0yOdtoHC_secret_9gXE8oUI6j5zoyQT4rO2S2C3F", + "client_secret": "pi_3OOX2mKuuB1fWySn0gIMMfbs_secret_Mf26EMIy37nKHSVJmOD9ewJiq", "confirmation_method": "automatic", - "created": 1701973692, + "created": 1702868340, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIyKuuB1fWySn0jGYYkXj", + "latest_charge": "ch_3OOX2mKuuB1fWySn0bPfKDlV", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIyKuuB1fWySnGB0ona01", + "payment_method": "pm_1OOX2mKuuB1fWySngWMagkGj", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:15 GMT + recorded_at: Mon, 18 Dec 2023 02:59:04 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml index bded947c8d..2d92c15308 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Mastercard_prepaid_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=5105105105105100&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vlDPSBm9PDsWK8","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_r9NZ5dN3R8Sj1T","request_duration_ms":421}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:10 GMT + - Mon, 18 Dec 2023 02:58:58 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5031d76e-ac8c-4175-82cd-9160a7ccf8fd + - e63b66f3-250f-476e-832b-5fe0c0e58846 Original-Request: - - req_GCk6Tnq2Bn7hi2 + - req_C5BixkbevuyEtF Request-Id: - - req_GCk6Tnq2Bn7hi2 + - req_C5BixkbevuyEtF Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIvKuuB1fWySn0UotxQcB", + "id": "pm_1OOX2kKuuB1fWySnfID3ZfKg", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973690, + "created": 1702868338, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:28:10 GMT + recorded_at: Mon, 18 Dec 2023 02:58:58 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIvKuuB1fWySn0UotxQcB&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2kKuuB1fWySnfID3ZfKg&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_GCk6Tnq2Bn7hi2","request_duration_ms":479}}' + - '{"last_request_metrics":{"request_id":"req_C5BixkbevuyEtF","request_duration_ms":466}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:10 GMT + - Mon, 18 Dec 2023 02:58:58 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 47c43465-e411-4d4e-8375-74ebe18ea787 + - 4d9ee7ee-efca-40dc-926b-03be599f86ff Original-Request: - - req_aFDLK2uYAlMUV2 + - req_NSGakuKYRsrNwp Request-Id: - - req_aFDLK2uYAlMUV2 + - req_NSGakuKYRsrNwp Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIwKuuB1fWySn29MNd4b5", + "id": "pi_3OOX2kKuuB1fWySn2Sp7YcUk", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIwKuuB1fWySn29MNd4b5_secret_n6qH5rZatMf6DZZJpIPdMfE4x", + "client_secret": "pi_3OOX2kKuuB1fWySn2Sp7YcUk_secret_13NS16QYPprzqfL6GjrprJa4K", "confirmation_method": "automatic", - "created": 1701973690, + "created": 1702868338, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIvKuuB1fWySn0UotxQcB", + "payment_method": "pm_1OOX2kKuuB1fWySnfID3ZfKg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:10 GMT + recorded_at: Mon, 18 Dec 2023 02:58:58 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIwKuuB1fWySn29MNd4b5/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2kKuuB1fWySn2Sp7YcUk/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_aFDLK2uYAlMUV2","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_NSGakuKYRsrNwp","request_duration_ms":467}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:28:11 GMT + - Mon, 18 Dec 2023 02:58:59 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f7fdedd2-0d99-4fb8-835b-a795a820222d + - 033b6d21-973d-4088-8c13-fd14af7cb77b Original-Request: - - req_sbshHeH2Wx1hhY + - req_Uc2Oi4k1gRVI0w Request-Id: - - req_sbshHeH2Wx1hhY + - req_Uc2Oi4k1gRVI0w Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIwKuuB1fWySn29MNd4b5", + "id": "pi_3OOX2kKuuB1fWySn2Sp7YcUk", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIwKuuB1fWySn29MNd4b5_secret_n6qH5rZatMf6DZZJpIPdMfE4x", + "client_secret": "pi_3OOX2kKuuB1fWySn2Sp7YcUk_secret_13NS16QYPprzqfL6GjrprJa4K", "confirmation_method": "automatic", - "created": 1701973690, + "created": 1702868338, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIwKuuB1fWySn2NSqxtHh", + "latest_charge": "ch_3OOX2kKuuB1fWySn2e5Xy1Si", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIvKuuB1fWySn0UotxQcB", + "payment_method": "pm_1OOX2kKuuB1fWySnfID3ZfKg", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:28:11 GMT + recorded_at: Mon, 18 Dec 2023 02:58:59 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml index 43c40cd01a..9152e4336a 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6200000000000005&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_5lq9PtnUoXyLPw","request_duration_ms":938}}' + - '{"last_request_metrics":{"request_id":"req_3xE1TbJjg6BLz5","request_duration_ms":1124}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:02 GMT + - Mon, 18 Dec 2023 02:59:50 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 18cc6ca7-63f8-498d-888b-7107bea75cc2 + - 2d6c766e-b9de-4b13-8642-1ea0253f7639 Original-Request: - - req_9w6m8nEmuujHke + - req_46KdeJpb1fdlpq Request-Id: - - req_9w6m8nEmuujHke + - req_46KdeJpb1fdlpq Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "id": "pm_1OOX3aKuuB1fWySnyCivBQE8", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973742, + "created": 1702868390, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:02 GMT + recorded_at: Mon, 18 Dec 2023 02:59:50 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJmKuuB1fWySnN7mltuaD&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3aKuuB1fWySnyCivBQE8&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_9w6m8nEmuujHke","request_duration_ms":528}}' + - '{"last_request_metrics":{"request_id":"req_46KdeJpb1fdlpq","request_duration_ms":561}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:03 GMT + - Mon, 18 Dec 2023 02:59:51 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 8aca522d-a7dd-47c8-970b-c1d5a47ab272 + - 6ea7ff7b-39cb-44af-8621-e198d1547467 Original-Request: - - req_b62qgE3SlQ8SQn + - req_t9d0g5dMlLgRgf Request-Id: - - req_b62qgE3SlQ8SQn + - req_t9d0g5dMlLgRgf Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJmKuuB1fWySn2HsW0MtO", + "id": "pi_3OOX3aKuuB1fWySn0Yfz0XGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJmKuuB1fWySn2HsW0MtO_secret_7fUJpPC0UeclH2DFfJpPtTNS7", + "client_secret": "pi_3OOX3aKuuB1fWySn0Yfz0XGM_secret_NIOzBOSmZHor6Uq0aXBIRhp0n", "confirmation_method": "automatic", - "created": 1701973742, + "created": 1702868390, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "payment_method": "pm_1OOX3aKuuB1fWySnyCivBQE8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:03 GMT + recorded_at: Mon, 18 Dec 2023 02:59:51 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJmKuuB1fWySn2HsW0MtO/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3aKuuB1fWySn0Yfz0XGM/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_b62qgE3SlQ8SQn","request_duration_ms":421}}' + - '{"last_request_metrics":{"request_id":"req_t9d0g5dMlLgRgf","request_duration_ms":461}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:04 GMT + - Mon, 18 Dec 2023 02:59:52 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4d51916a-ea76-4680-9fbc-b4b4688ff1cc + - 65f48b36-827c-4636-972a-f4de3a002add Original-Request: - - req_r6qKm2z3Lu9AIr + - req_D1Mn7gqrJXB3tx Request-Id: - - req_r6qKm2z3Lu9AIr + - req_D1Mn7gqrJXB3tx Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJmKuuB1fWySn2HsW0MtO", + "id": "pi_3OOX3aKuuB1fWySn0Yfz0XGM", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJmKuuB1fWySn2HsW0MtO_secret_7fUJpPC0UeclH2DFfJpPtTNS7", + "client_secret": "pi_3OOX3aKuuB1fWySn0Yfz0XGM_secret_NIOzBOSmZHor6Uq0aXBIRhp0n", "confirmation_method": "automatic", - "created": 1701973742, + "created": 1702868390, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJmKuuB1fWySn2cIAOvf6", + "latest_charge": "ch_3OOX3aKuuB1fWySn0Krgc33N", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "payment_method": "pm_1OOX3aKuuB1fWySnyCivBQE8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:04 GMT + recorded_at: Mon, 18 Dec 2023 02:59:52 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJmKuuB1fWySn2HsW0MtO + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3aKuuB1fWySn0Yfz0XGM body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_r6qKm2z3Lu9AIr","request_duration_ms":996}}' + - '{"last_request_metrics":{"request_id":"req_D1Mn7gqrJXB3tx","request_duration_ms":1069}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:04 GMT + - Mon, 18 Dec 2023 02:59:52 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_S8T06ajpohMUDd + - req_afU1wY3SmzrHh4 Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJmKuuB1fWySn2HsW0MtO", + "id": "pi_3OOX3aKuuB1fWySn0Yfz0XGM", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJmKuuB1fWySn2HsW0MtO_secret_7fUJpPC0UeclH2DFfJpPtTNS7", + "client_secret": "pi_3OOX3aKuuB1fWySn0Yfz0XGM_secret_NIOzBOSmZHor6Uq0aXBIRhp0n", "confirmation_method": "automatic", - "created": 1701973742, + "created": 1702868390, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJmKuuB1fWySn2cIAOvf6", + "latest_charge": "ch_3OOX3aKuuB1fWySn0Krgc33N", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "payment_method": "pm_1OOX3aKuuB1fWySnyCivBQE8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:04 GMT + recorded_at: Mon, 18 Dec 2023 02:59:52 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJmKuuB1fWySn2HsW0MtO/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3aKuuB1fWySn0Yfz0XGM/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_S8T06ajpohMUDd","request_duration_ms":365}}' + - '{"last_request_metrics":{"request_id":"req_afU1wY3SmzrHh4","request_duration_ms":408}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:05 GMT + - Mon, 18 Dec 2023 02:59:53 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 3caf59d2-706a-4937-a2a1-61adbf853571 + - 752bbd9c-1601-4d91-a4b6-d148ac2419da Original-Request: - - req_yvOzPRO1kGzC6e + - req_kUZCqXYJYYrvT0 Request-Id: - - req_yvOzPRO1kGzC6e + - req_kUZCqXYJYYrvT0 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJmKuuB1fWySn2HsW0MtO", + "id": "pi_3OOX3aKuuB1fWySn0Yfz0XGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJmKuuB1fWySn2HsW0MtO_secret_7fUJpPC0UeclH2DFfJpPtTNS7", + "client_secret": "pi_3OOX3aKuuB1fWySn0Yfz0XGM_secret_NIOzBOSmZHor6Uq0aXBIRhp0n", "confirmation_method": "automatic", - "created": 1701973742, + "created": 1702868390, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJmKuuB1fWySn2cIAOvf6", + "latest_charge": "ch_3OOX3aKuuB1fWySn0Krgc33N", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "payment_method": "pm_1OOX3aKuuB1fWySnyCivBQE8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:05 GMT + recorded_at: Mon, 18 Dec 2023 02:59:53 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJmKuuB1fWySn2HsW0MtO + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3aKuuB1fWySn0Yfz0XGM body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_yvOzPRO1kGzC6e","request_duration_ms":1136}}' + - '{"last_request_metrics":{"request_id":"req_kUZCqXYJYYrvT0","request_duration_ms":1122}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:05 GMT + - Mon, 18 Dec 2023 02:59:54 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_lOUNaGa92cjisG + - req_7qXj00O3fpGbiL Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJmKuuB1fWySn2HsW0MtO", + "id": "pi_3OOX3aKuuB1fWySn0Yfz0XGM", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJmKuuB1fWySn2HsW0MtO_secret_7fUJpPC0UeclH2DFfJpPtTNS7", + "client_secret": "pi_3OOX3aKuuB1fWySn0Yfz0XGM_secret_NIOzBOSmZHor6Uq0aXBIRhp0n", "confirmation_method": "automatic", - "created": 1701973742, + "created": 1702868390, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJmKuuB1fWySn2cIAOvf6", + "latest_charge": "ch_3OOX3aKuuB1fWySn0Krgc33N", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJmKuuB1fWySnN7mltuaD", + "payment_method": "pm_1OOX3aKuuB1fWySnyCivBQE8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:05 GMT + recorded_at: Mon, 18 Dec 2023 02:59:54 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml index e875d1dae8..a0f3ec5264 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6200000000000005&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2zWWDLVtynwwtV","request_duration_ms":339}}' + - '{"last_request_metrics":{"request_id":"req_AhswC3MNekmSlW","request_duration_ms":359}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:00 GMT + - Mon, 18 Dec 2023 02:59:48 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - bac6aaeb-2657-41e6-95ee-c4846914e9e2 + - 3317db4e-3ad3-4ec4-8954-80e5111bfef4 Original-Request: - - req_4DDLPka7PRm8qx + - req_b9WkuUwAwRzkCJ Request-Id: - - req_4DDLPka7PRm8qx + - req_b9WkuUwAwRzkCJ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJjKuuB1fWySnxBlBVCMq", + "id": "pm_1OOX3YKuuB1fWySnuZ50WRsG", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973740, + "created": 1702868388, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:00 GMT + recorded_at: Mon, 18 Dec 2023 02:59:48 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJjKuuB1fWySnxBlBVCMq&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3YKuuB1fWySnuZ50WRsG&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_4DDLPka7PRm8qx","request_duration_ms":563}}' + - '{"last_request_metrics":{"request_id":"req_b9WkuUwAwRzkCJ","request_duration_ms":474}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:00 GMT + - Mon, 18 Dec 2023 02:59:48 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 98bc2cb0-1203-425f-8039-2bd74d06afa7 + - '08c2600c-364f-4224-9174-a790a832fcda' Original-Request: - - req_EF7Zjsls89gtcc + - req_EJSfT1CJxY6RMM Request-Id: - - req_EF7Zjsls89gtcc + - req_EJSfT1CJxY6RMM Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJkKuuB1fWySn2h9yC6OE", + "id": "pi_3OOX3YKuuB1fWySn0TvOoaHZ", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJkKuuB1fWySn2h9yC6OE_secret_Syqi7Yi3sKrYcJgRe9OZ3M03W", + "client_secret": "pi_3OOX3YKuuB1fWySn0TvOoaHZ_secret_IIRCHocvQ7nK7zy9vdXfCZl5D", "confirmation_method": "automatic", - "created": 1701973740, + "created": 1702868388, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJjKuuB1fWySnxBlBVCMq", + "payment_method": "pm_1OOX3YKuuB1fWySnuZ50WRsG", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:00 GMT + recorded_at: Mon, 18 Dec 2023 02:59:48 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJkKuuB1fWySn2h9yC6OE/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3YKuuB1fWySn0TvOoaHZ/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_EF7Zjsls89gtcc","request_duration_ms":517}}' + - '{"last_request_metrics":{"request_id":"req_EJSfT1CJxY6RMM","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:01 GMT + - Mon, 18 Dec 2023 02:59:49 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 1ff2a6fa-0cca-43f8-b3aa-cfa596dc4421 + - 7678b347-ac9f-4245-aeb0-2535540c6a91 Original-Request: - - req_5lq9PtnUoXyLPw + - req_3xE1TbJjg6BLz5 Request-Id: - - req_5lq9PtnUoXyLPw + - req_3xE1TbJjg6BLz5 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJkKuuB1fWySn2h9yC6OE", + "id": "pi_3OOX3YKuuB1fWySn0TvOoaHZ", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJkKuuB1fWySn2h9yC6OE_secret_Syqi7Yi3sKrYcJgRe9OZ3M03W", + "client_secret": "pi_3OOX3YKuuB1fWySn0TvOoaHZ_secret_IIRCHocvQ7nK7zy9vdXfCZl5D", "confirmation_method": "automatic", - "created": 1701973740, + "created": 1702868388, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJkKuuB1fWySn2QGrHjbh", + "latest_charge": "ch_3OOX3YKuuB1fWySn0y6CjNKA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJjKuuB1fWySnxBlBVCMq", + "payment_method": "pm_1OOX3YKuuB1fWySnuZ50WRsG", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:01 GMT + recorded_at: Mon, 18 Dec 2023 02:59:50 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml index fb76b5dac6..240f45e541 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6205500000000000004&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lQjksKV4vhBtU4","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_qHhCWReXcHBwBA","request_duration_ms":1105}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:15 GMT + - Mon, 18 Dec 2023 03:00:03 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ef7931d8-e41c-4dd2-af6c-1030dbf44020 + - 65d84937-8f4e-4c6a-a698-ca02d1b8a3d0 Original-Request: - - req_kB3exiGMrNfKRN + - req_btlG6kLfo4fKJl Request-Id: - - req_kB3exiGMrNfKRN + - req_btlG6kLfo4fKJl Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "id": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973754, + "created": 1702868403, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:15 GMT + recorded_at: Mon, 18 Dec 2023 03:00:03 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJyKuuB1fWySnsszSwBHm&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3nKuuB1fWySnMGJtCkOs&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_kB3exiGMrNfKRN","request_duration_ms":465}}' + - '{"last_request_metrics":{"request_id":"req_btlG6kLfo4fKJl","request_duration_ms":586}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:15 GMT + - Mon, 18 Dec 2023 03:00:04 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - d2494f57-927d-4656-8285-54c92d4ff191 + - a9d65a49-3578-4c0f-b1c8-5c6af538ca0e Original-Request: - - req_2wLEahPhrobjsU + - req_T2fxYbK8EWghQr Request-Id: - - req_2wLEahPhrobjsU + - req_T2fxYbK8EWghQr Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJzKuuB1fWySn2gQ39AGY", + "id": "pi_3OOX3oKuuB1fWySn1fJat4dx", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJzKuuB1fWySn2gQ39AGY_secret_Q00xY5CYKf5fBj3D1SmvKCdgl", + "client_secret": "pi_3OOX3oKuuB1fWySn1fJat4dx_secret_AoL5BoBr8nUzztIwzlIQiv62n", "confirmation_method": "automatic", - "created": 1701973755, + "created": 1702868404, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "payment_method": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:15 GMT + recorded_at: Mon, 18 Dec 2023 03:00:04 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJzKuuB1fWySn2gQ39AGY/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3oKuuB1fWySn1fJat4dx/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2wLEahPhrobjsU","request_duration_ms":413}}' + - '{"last_request_metrics":{"request_id":"req_T2fxYbK8EWghQr","request_duration_ms":508}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:16 GMT + - Mon, 18 Dec 2023 03:00:05 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9cdacd12-84e6-41ed-b5d5-c1b891d84ef8 + - 19dfd6b7-cede-4016-93a6-4ce0f1db577f Original-Request: - - req_ffWeJ30HZbPRpG + - req_iQY1qy49nFPLu8 Request-Id: - - req_ffWeJ30HZbPRpG + - req_iQY1qy49nFPLu8 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJzKuuB1fWySn2gQ39AGY", + "id": "pi_3OOX3oKuuB1fWySn1fJat4dx", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJzKuuB1fWySn2gQ39AGY_secret_Q00xY5CYKf5fBj3D1SmvKCdgl", + "client_secret": "pi_3OOX3oKuuB1fWySn1fJat4dx_secret_AoL5BoBr8nUzztIwzlIQiv62n", "confirmation_method": "automatic", - "created": 1701973755, + "created": 1702868404, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJzKuuB1fWySn2nafqEAt", + "latest_charge": "ch_3OOX3oKuuB1fWySn1ZgNvsrH", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "payment_method": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:16 GMT + recorded_at: Mon, 18 Dec 2023 03:00:05 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJzKuuB1fWySn2gQ39AGY + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3oKuuB1fWySn1fJat4dx body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_ffWeJ30HZbPRpG","request_duration_ms":892}}' + - '{"last_request_metrics":{"request_id":"req_iQY1qy49nFPLu8","request_duration_ms":1225}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:16 GMT + - Mon, 18 Dec 2023 03:00:05 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_210ENud0ju1HKE + - req_6QDMoTh8G7osyy Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJzKuuB1fWySn2gQ39AGY", + "id": "pi_3OOX3oKuuB1fWySn1fJat4dx", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJzKuuB1fWySn2gQ39AGY_secret_Q00xY5CYKf5fBj3D1SmvKCdgl", + "client_secret": "pi_3OOX3oKuuB1fWySn1fJat4dx_secret_AoL5BoBr8nUzztIwzlIQiv62n", "confirmation_method": "automatic", - "created": 1701973755, + "created": 1702868404, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJzKuuB1fWySn2nafqEAt", + "latest_charge": "ch_3OOX3oKuuB1fWySn1ZgNvsrH", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "payment_method": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:16 GMT + recorded_at: Mon, 18 Dec 2023 03:00:06 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJzKuuB1fWySn2gQ39AGY/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3oKuuB1fWySn1fJat4dx/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_210ENud0ju1HKE","request_duration_ms":355}}' + - '{"last_request_metrics":{"request_id":"req_6QDMoTh8G7osyy","request_duration_ms":409}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:17 GMT + - Mon, 18 Dec 2023 03:00:07 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 81e57b07-3eff-41b9-937b-762c86827533 + - 03d89aec-8d18-4f62-87af-f1f8cf32010c Original-Request: - - req_TMQCuVeVHwVw5S + - req_DWyGJnG0RoMqsu Request-Id: - - req_TMQCuVeVHwVw5S + - req_DWyGJnG0RoMqsu Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJzKuuB1fWySn2gQ39AGY", + "id": "pi_3OOX3oKuuB1fWySn1fJat4dx", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJzKuuB1fWySn2gQ39AGY_secret_Q00xY5CYKf5fBj3D1SmvKCdgl", + "client_secret": "pi_3OOX3oKuuB1fWySn1fJat4dx_secret_AoL5BoBr8nUzztIwzlIQiv62n", "confirmation_method": "automatic", - "created": 1701973755, + "created": 1702868404, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJzKuuB1fWySn2nafqEAt", + "latest_charge": "ch_3OOX3oKuuB1fWySn1ZgNvsrH", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "payment_method": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:17 GMT + recorded_at: Mon, 18 Dec 2023 03:00:07 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJzKuuB1fWySn2gQ39AGY + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3oKuuB1fWySn1fJat4dx body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_TMQCuVeVHwVw5S","request_duration_ms":1067}}' + - '{"last_request_metrics":{"request_id":"req_DWyGJnG0RoMqsu","request_duration_ms":1226}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:18 GMT + - Mon, 18 Dec 2023 03:00:07 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_lwQRHFtJffzrsQ + - req_1GElf07flV8X6q Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJzKuuB1fWySn2gQ39AGY", + "id": "pi_3OOX3oKuuB1fWySn1fJat4dx", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJzKuuB1fWySn2gQ39AGY_secret_Q00xY5CYKf5fBj3D1SmvKCdgl", + "client_secret": "pi_3OOX3oKuuB1fWySn1fJat4dx_secret_AoL5BoBr8nUzztIwzlIQiv62n", "confirmation_method": "automatic", - "created": 1701973755, + "created": 1702868404, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJzKuuB1fWySn2nafqEAt", + "latest_charge": "ch_3OOX3oKuuB1fWySn1ZgNvsrH", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJyKuuB1fWySnsszSwBHm", + "payment_method": "pm_1OOX3nKuuB1fWySnMGJtCkOs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:18 GMT + recorded_at: Mon, 18 Dec 2023 03:00:07 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml index bb48ac25be..e4b7853c31 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_19-digit_card_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6205500000000000004&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_gsnpT3uI9HJnag","request_duration_ms":414}}' + - '{"last_request_metrics":{"request_id":"req_u17vHMRm9sO07F","request_duration_ms":409}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:12 GMT + - Mon, 18 Dec 2023 03:00:01 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ea279aa4-cd8c-4214-b3c4-ecf799a66bfc + - 5c59e7a8-4001-4b66-a57b-21a27606c81c Original-Request: - - req_2633uyioYxWtWv + - req_24JEEooE7NG7Vc Request-Id: - - req_2633uyioYxWtWv + - req_24JEEooE7NG7Vc Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJwKuuB1fWySn6W4AhRay", + "id": "pm_1OOX3lKuuB1fWySnnEq4JD25", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973752, + "created": 1702868401, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:12 GMT + recorded_at: Mon, 18 Dec 2023 03:00:01 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJwKuuB1fWySn6W4AhRay&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3lKuuB1fWySnnEq4JD25&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2633uyioYxWtWv","request_duration_ms":483}}' + - '{"last_request_metrics":{"request_id":"req_24JEEooE7NG7Vc","request_duration_ms":578}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:13 GMT + - Mon, 18 Dec 2023 03:00:01 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4251c5ab-4b5f-4df3-bba7-3fd54a8007da + - f8bbd36b-e59e-4632-b6a7-62323ffeba6c Original-Request: - - req_N0yYfytPMk5TYB + - req_WgvOGzsNpeBN4d Request-Id: - - req_N0yYfytPMk5TYB + - req_WgvOGzsNpeBN4d Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJwKuuB1fWySn0aDOQPhL", + "id": "pi_3OOX3lKuuB1fWySn2GlicCKc", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJwKuuB1fWySn0aDOQPhL_secret_ueesaBqql28emDHjN57Pq591r", + "client_secret": "pi_3OOX3lKuuB1fWySn2GlicCKc_secret_ahNDXCdT3Yvl21U46pU5JLrgz", "confirmation_method": "automatic", - "created": 1701973752, + "created": 1702868401, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJwKuuB1fWySn6W4AhRay", + "payment_method": "pm_1OOX3lKuuB1fWySnnEq4JD25", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:13 GMT + recorded_at: Mon, 18 Dec 2023 03:00:02 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJwKuuB1fWySn0aDOQPhL/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3lKuuB1fWySn2GlicCKc/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_N0yYfytPMk5TYB","request_duration_ms":416}}' + - '{"last_request_metrics":{"request_id":"req_WgvOGzsNpeBN4d","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:14 GMT + - Mon, 18 Dec 2023 03:00:03 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5c4ab8a3-426a-4a16-86f9-9169dbe9a925 + - 1aefb719-0a3d-432d-9735-6b707d971862 Original-Request: - - req_lQjksKV4vhBtU4 + - req_qHhCWReXcHBwBA Request-Id: - - req_lQjksKV4vhBtU4 + - req_qHhCWReXcHBwBA Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJwKuuB1fWySn0aDOQPhL", + "id": "pi_3OOX3lKuuB1fWySn2GlicCKc", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJwKuuB1fWySn0aDOQPhL_secret_ueesaBqql28emDHjN57Pq591r", + "client_secret": "pi_3OOX3lKuuB1fWySn2GlicCKc_secret_ahNDXCdT3Yvl21U46pU5JLrgz", "confirmation_method": "automatic", - "created": 1701973752, + "created": 1702868401, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJwKuuB1fWySn04LooZve", + "latest_charge": "ch_3OOX3lKuuB1fWySn2zRgz6L2", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJwKuuB1fWySn6W4AhRay", + "payment_method": "pm_1OOX3lKuuB1fWySnnEq4JD25", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:14 GMT + recorded_at: Mon, 18 Dec 2023 03:00:03 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml index be5d81ffc7..6a6ae6c8a4 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6200000000000047&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8R3lB6qiHjlhw8","request_duration_ms":905}}' + - '{"last_request_metrics":{"request_id":"req_g1u4WZ6PQa5wTh","request_duration_ms":1400}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:08 GMT + - Mon, 18 Dec 2023 02:59:57 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - af609236-ecd4-4708-9d74-e392332591a7 + - 77c2cec4-8f3e-48b8-b467-0a83e6c7b535 Original-Request: - - req_Bb8iiEvxuCp321 + - req_kS65uN6dKMGeY4 Request-Id: - - req_Bb8iiEvxuCp321 + - req_kS65uN6dKMGeY4 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "id": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973748, + "created": 1702868397, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:08 GMT + recorded_at: Mon, 18 Dec 2023 02:59:57 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJsKuuB1fWySnF6m4mPIa&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3gKuuB1fWySnxxyZEYm8&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Bb8iiEvxuCp321","request_duration_ms":505}}' + - '{"last_request_metrics":{"request_id":"req_kS65uN6dKMGeY4","request_duration_ms":493}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:09 GMT + - Mon, 18 Dec 2023 02:59:57 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4612da6a-e5a7-4b37-bcae-30195ee7aa97 + - 25efd1e4-3a70-4c2f-8a0c-8795db464f07 Original-Request: - - req_7aD2toa9tm3M6C + - req_O31oAc9uDLL48O Request-Id: - - req_7aD2toa9tm3M6C + - req_O31oAc9uDLL48O Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJsKuuB1fWySn2qrtgznf", + "id": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJsKuuB1fWySn2qrtgznf_secret_LOFTbILNdq7jqafunk22yYlGQ", + "client_secret": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0_secret_zuu3ZgDzqFGRnFvqczV4u62dh", "confirmation_method": "automatic", - "created": 1701973748, + "created": 1702868397, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "payment_method": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:09 GMT + recorded_at: Mon, 18 Dec 2023 02:59:57 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJsKuuB1fWySn2qrtgznf/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3hKuuB1fWySn0Ejb5qQ0/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_7aD2toa9tm3M6C","request_duration_ms":506}}' + - '{"last_request_metrics":{"request_id":"req_O31oAc9uDLL48O","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:10 GMT + - Mon, 18 Dec 2023 02:59:58 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - f871e694-c54b-4d8d-a5ed-e4cf9b4a07ac + - 629d7c84-311b-47e0-9ed6-3505cfc0515a Original-Request: - - req_Ko8s2PiXaYXFt1 + - req_q7phszHY42lkVL Request-Id: - - req_Ko8s2PiXaYXFt1 + - req_q7phszHY42lkVL Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJsKuuB1fWySn2qrtgznf", + "id": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJsKuuB1fWySn2qrtgznf_secret_LOFTbILNdq7jqafunk22yYlGQ", + "client_secret": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0_secret_zuu3ZgDzqFGRnFvqczV4u62dh", "confirmation_method": "automatic", - "created": 1701973748, + "created": 1702868397, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJsKuuB1fWySn2AJh6MmX", + "latest_charge": "ch_3OOX3hKuuB1fWySn02deb98C", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "payment_method": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:10 GMT + recorded_at: Mon, 18 Dec 2023 02:59:58 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJsKuuB1fWySn2qrtgznf + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3hKuuB1fWySn0Ejb5qQ0 body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Ko8s2PiXaYXFt1","request_duration_ms":1041}}' + - '{"last_request_metrics":{"request_id":"req_q7phszHY42lkVL","request_duration_ms":1202}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:10 GMT + - Mon, 18 Dec 2023 02:59:59 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_nx6xEGQOrtG347 + - req_SLex9eG5bQ8p2y Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJsKuuB1fWySn2qrtgznf", + "id": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJsKuuB1fWySn2qrtgznf_secret_LOFTbILNdq7jqafunk22yYlGQ", + "client_secret": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0_secret_zuu3ZgDzqFGRnFvqczV4u62dh", "confirmation_method": "automatic", - "created": 1701973748, + "created": 1702868397, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJsKuuB1fWySn2AJh6MmX", + "latest_charge": "ch_3OOX3hKuuB1fWySn02deb98C", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "payment_method": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:10 GMT + recorded_at: Mon, 18 Dec 2023 02:59:59 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJsKuuB1fWySn2qrtgznf/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3hKuuB1fWySn0Ejb5qQ0/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_nx6xEGQOrtG347","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_SLex9eG5bQ8p2y","request_duration_ms":431}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:11 GMT + - Mon, 18 Dec 2023 03:00:00 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 3ab0ca60-1076-411e-93de-a97522e87a7e + - c6900caa-68d0-4bf6-829c-07352a51f093 Original-Request: - - req_bRBTv3MOFQVLB0 + - req_Z1KyosCxrqNWY8 Request-Id: - - req_bRBTv3MOFQVLB0 + - req_Z1KyosCxrqNWY8 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJsKuuB1fWySn2qrtgznf", + "id": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJsKuuB1fWySn2qrtgznf_secret_LOFTbILNdq7jqafunk22yYlGQ", + "client_secret": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0_secret_zuu3ZgDzqFGRnFvqczV4u62dh", "confirmation_method": "automatic", - "created": 1701973748, + "created": 1702868397, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJsKuuB1fWySn2AJh6MmX", + "latest_charge": "ch_3OOX3hKuuB1fWySn02deb98C", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "payment_method": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:11 GMT + recorded_at: Mon, 18 Dec 2023 03:00:00 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJsKuuB1fWySn2qrtgznf + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3hKuuB1fWySn0Ejb5qQ0 body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_bRBTv3MOFQVLB0","request_duration_ms":1145}}' + - '{"last_request_metrics":{"request_id":"req_Z1KyosCxrqNWY8","request_duration_ms":1123}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:12 GMT + - Mon, 18 Dec 2023 03:00:00 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_gsnpT3uI9HJnag + - req_u17vHMRm9sO07F Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJsKuuB1fWySn2qrtgznf", + "id": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJsKuuB1fWySn2qrtgznf_secret_LOFTbILNdq7jqafunk22yYlGQ", + "client_secret": "pi_3OOX3hKuuB1fWySn0Ejb5qQ0_secret_zuu3ZgDzqFGRnFvqczV4u62dh", "confirmation_method": "automatic", - "created": 1701973748, + "created": 1702868397, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJsKuuB1fWySn2AJh6MmX", + "latest_charge": "ch_3OOX3hKuuB1fWySn02deb98C", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJsKuuB1fWySnF6m4mPIa", + "payment_method": "pm_1OOX3gKuuB1fWySnxxyZEYm8", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:12 GMT + recorded_at: Mon, 18 Dec 2023 03:00:00 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml index c4ae25a10e..d8e52adb14 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_UnionPay_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=6200000000000047&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_lOUNaGa92cjisG","request_duration_ms":342}}' + - '{"last_request_metrics":{"request_id":"req_7qXj00O3fpGbiL","request_duration_ms":324}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:06 GMT + - Mon, 18 Dec 2023 02:59:54 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - efcb895b-741d-4e3f-bd98-f25ad19b5309 + - 1cd8d001-7ed9-4a93-b20b-02b7dd43454e Original-Request: - - req_OmK9wFqqgFxG9F + - req_2uKTANmQniEyyt Request-Id: - - req_OmK9wFqqgFxG9F + - req_2uKTANmQniEyyt Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmJqKuuB1fWySnfDJGXdZY", + "id": "pm_1OOX3eKuuB1fWySn1VeSWUFw", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973746, + "created": 1702868394, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:29:06 GMT + recorded_at: Mon, 18 Dec 2023 02:59:54 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmJqKuuB1fWySnfDJGXdZY&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX3eKuuB1fWySn1VeSWUFw&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OmK9wFqqgFxG9F","request_duration_ms":550}}' + - '{"last_request_metrics":{"request_id":"req_2uKTANmQniEyyt","request_duration_ms":582}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:06 GMT + - Mon, 18 Dec 2023 02:59:55 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 88107fb1-d7bc-4cdf-baea-a483d8cdd986 + - 00ea0a54-7cfb-49d8-b58e-133d6438dab9 Original-Request: - - req_OjI9DT54CQ2LTY + - req_2Ys86Y5XrBKW4k Request-Id: - - req_OjI9DT54CQ2LTY + - req_2Ys86Y5XrBKW4k Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJqKuuB1fWySn0zkK76Dl", + "id": "pi_3OOX3eKuuB1fWySn28WmpZeK", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJqKuuB1fWySn0zkK76Dl_secret_T1rB6QH7AL2uYmMAChPBR1niS", + "client_secret": "pi_3OOX3eKuuB1fWySn28WmpZeK_secret_PzYzVryU9cvv98o9wtQ31wRsB", "confirmation_method": "automatic", - "created": 1701973746, + "created": 1702868394, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJqKuuB1fWySnfDJGXdZY", + "payment_method": "pm_1OOX3eKuuB1fWySn1VeSWUFw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:06 GMT + recorded_at: Mon, 18 Dec 2023 02:59:55 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmJqKuuB1fWySn0zkK76Dl/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX3eKuuB1fWySn28WmpZeK/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_OjI9DT54CQ2LTY","request_duration_ms":415}}' + - '{"last_request_metrics":{"request_id":"req_2Ys86Y5XrBKW4k","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:29:07 GMT + - Mon, 18 Dec 2023 02:59:56 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - cc2aafbe-d164-4a18-8294-7de07054b57b + - c75373f8-61fe-41ee-b049-9bb79e7edc9f Original-Request: - - req_8R3lB6qiHjlhw8 + - req_g1u4WZ6PQa5wTh Request-Id: - - req_8R3lB6qiHjlhw8 + - req_g1u4WZ6PQa5wTh Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmJqKuuB1fWySn0zkK76Dl", + "id": "pi_3OOX3eKuuB1fWySn28WmpZeK", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmJqKuuB1fWySn0zkK76Dl_secret_T1rB6QH7AL2uYmMAChPBR1niS", + "client_secret": "pi_3OOX3eKuuB1fWySn28WmpZeK_secret_PzYzVryU9cvv98o9wtQ31wRsB", "confirmation_method": "automatic", - "created": 1701973746, + "created": 1702868394, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmJqKuuB1fWySn01avgprT", + "latest_charge": "ch_3OOX3eKuuB1fWySn2Cm0HXd8", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmJqKuuB1fWySnfDJGXdZY", + "payment_method": "pm_1OOX3eKuuB1fWySn1VeSWUFw", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:29:07 GMT + recorded_at: Mon, 18 Dec 2023 02:59:56 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml index a5326969d6..da96b76113 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_enswLIMTlh0aCt","request_duration_ms":1069}}' + - '{"last_request_metrics":{"request_id":"req_aAmHVTfMuIzVQZ","request_duration_ms":1001}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:42 GMT + - Mon, 18 Dec 2023 02:58:29 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 9d43a161-6299-4da7-98aa-18d831ea2681 + - 04a0852f-dfe9-4ded-84f8-2affb939e053 Original-Request: - - req_Ga3NHcu4BZ7VOk + - req_oAPG5cvPvPZLMZ Request-Id: - - req_Ga3NHcu4BZ7VOk + - req_oAPG5cvPvPZLMZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmITKuuB1fWySnBq8miNhk", + "id": "pm_1OOX2HKuuB1fWySn0NQyuawC", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973661, + "created": 1702868309, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:42 GMT + recorded_at: Mon, 18 Dec 2023 02:58:29 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmITKuuB1fWySnBq8miNhk&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2HKuuB1fWySn0NQyuawC&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Ga3NHcu4BZ7VOk","request_duration_ms":521}}' + - '{"last_request_metrics":{"request_id":"req_oAPG5cvPvPZLMZ","request_duration_ms":467}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:42 GMT + - Mon, 18 Dec 2023 02:58:29 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 880e4c6a-2dfe-4448-b709-582318cd081f + - 5275a045-58c6-44ec-b0e9-714739584cce Original-Request: - - req_QLb7OXWWroegdg + - req_Fgy0EhCdUplGFi Request-Id: - - req_QLb7OXWWroegdg + - req_Fgy0EhCdUplGFi Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIUKuuB1fWySn2C4XK4hL", + "id": "pi_3OOX2HKuuB1fWySn12Uzs85O", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIUKuuB1fWySn2C4XK4hL_secret_7TU1TAiZ7iMBvrBf8RDayNtHA", + "client_secret": "pi_3OOX2HKuuB1fWySn12Uzs85O_secret_T5zE4G1yqqbRHHsL4JXbInu5p", "confirmation_method": "automatic", - "created": 1701973662, + "created": 1702868309, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmITKuuB1fWySnBq8miNhk", + "payment_method": "pm_1OOX2HKuuB1fWySn0NQyuawC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:42 GMT + recorded_at: Mon, 18 Dec 2023 02:58:30 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIUKuuB1fWySn2C4XK4hL/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2HKuuB1fWySn12Uzs85O/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_QLb7OXWWroegdg","request_duration_ms":515}}' + - '{"last_request_metrics":{"request_id":"req_Fgy0EhCdUplGFi","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:43 GMT + - Mon, 18 Dec 2023 02:58:30 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 2cd73e07-f7fc-4fae-a151-5d5c539a4d1d + - ce54efc7-a982-4ff7-bb4c-17a735876098 Original-Request: - - req_qtWc0PNOPhuHyF + - req_f9twhs2GzOwZ4r Request-Id: - - req_qtWc0PNOPhuHyF + - req_f9twhs2GzOwZ4r Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIUKuuB1fWySn2C4XK4hL", + "id": "pi_3OOX2HKuuB1fWySn12Uzs85O", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIUKuuB1fWySn2C4XK4hL_secret_7TU1TAiZ7iMBvrBf8RDayNtHA", + "client_secret": "pi_3OOX2HKuuB1fWySn12Uzs85O_secret_T5zE4G1yqqbRHHsL4JXbInu5p", "confirmation_method": "automatic", - "created": 1701973662, + "created": 1702868309, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIUKuuB1fWySn2MPDWqBe", + "latest_charge": "ch_3OOX2HKuuB1fWySn1QAtc5dg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmITKuuB1fWySnBq8miNhk", + "payment_method": "pm_1OOX2HKuuB1fWySn0NQyuawC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:43 GMT + recorded_at: Mon, 18 Dec 2023 02:58:31 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIUKuuB1fWySn2C4XK4hL + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2HKuuB1fWySn12Uzs85O body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_qtWc0PNOPhuHyF","request_duration_ms":970}}' + - '{"last_request_metrics":{"request_id":"req_f9twhs2GzOwZ4r","request_duration_ms":1021}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:43 GMT + - Mon, 18 Dec 2023 02:58:31 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_IPBtFfpxb0oJWE + - req_YsOG90uCImh9Bh Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIUKuuB1fWySn2C4XK4hL", + "id": "pi_3OOX2HKuuB1fWySn12Uzs85O", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIUKuuB1fWySn2C4XK4hL_secret_7TU1TAiZ7iMBvrBf8RDayNtHA", + "client_secret": "pi_3OOX2HKuuB1fWySn12Uzs85O_secret_T5zE4G1yqqbRHHsL4JXbInu5p", "confirmation_method": "automatic", - "created": 1701973662, + "created": 1702868309, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIUKuuB1fWySn2MPDWqBe", + "latest_charge": "ch_3OOX2HKuuB1fWySn1QAtc5dg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmITKuuB1fWySnBq8miNhk", + "payment_method": "pm_1OOX2HKuuB1fWySn0NQyuawC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:44 GMT + recorded_at: Mon, 18 Dec 2023 02:58:31 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIUKuuB1fWySn2C4XK4hL/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2HKuuB1fWySn12Uzs85O/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_IPBtFfpxb0oJWE","request_duration_ms":384}}' + - '{"last_request_metrics":{"request_id":"req_YsOG90uCImh9Bh","request_duration_ms":407}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:45 GMT + - Mon, 18 Dec 2023 02:58:32 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 65ecb0bb-0c21-4831-b017-881bc6191cc1 + - ed15438e-2526-4007-b940-ed23f327bcb6 Original-Request: - - req_MS7l6xNI5lRN1u + - req_ei0xVwsSIbeMSs Request-Id: - - req_MS7l6xNI5lRN1u + - req_ei0xVwsSIbeMSs Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIUKuuB1fWySn2C4XK4hL", + "id": "pi_3OOX2HKuuB1fWySn12Uzs85O", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIUKuuB1fWySn2C4XK4hL_secret_7TU1TAiZ7iMBvrBf8RDayNtHA", + "client_secret": "pi_3OOX2HKuuB1fWySn12Uzs85O_secret_T5zE4G1yqqbRHHsL4JXbInu5p", "confirmation_method": "automatic", - "created": 1701973662, + "created": 1702868309, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIUKuuB1fWySn2MPDWqBe", + "latest_charge": "ch_3OOX2HKuuB1fWySn1QAtc5dg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmITKuuB1fWySnBq8miNhk", + "payment_method": "pm_1OOX2HKuuB1fWySn0NQyuawC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:45 GMT + recorded_at: Mon, 18 Dec 2023 02:58:32 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIUKuuB1fWySn2C4XK4hL + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2HKuuB1fWySn12Uzs85O body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_MS7l6xNI5lRN1u","request_duration_ms":1145}}' + - '{"last_request_metrics":{"request_id":"req_ei0xVwsSIbeMSs","request_duration_ms":1022}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:45 GMT + - Mon, 18 Dec 2023 02:58:32 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_w7b6fE6CLKLyH9 + - req_qppuoRHS175i7R Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIUKuuB1fWySn2C4XK4hL", + "id": "pi_3OOX2HKuuB1fWySn12Uzs85O", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIUKuuB1fWySn2C4XK4hL_secret_7TU1TAiZ7iMBvrBf8RDayNtHA", + "client_secret": "pi_3OOX2HKuuB1fWySn12Uzs85O_secret_T5zE4G1yqqbRHHsL4JXbInu5p", "confirmation_method": "automatic", - "created": 1701973662, + "created": 1702868309, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIUKuuB1fWySn2MPDWqBe", + "latest_charge": "ch_3OOX2HKuuB1fWySn1QAtc5dg", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmITKuuB1fWySnBq8miNhk", + "payment_method": "pm_1OOX2HKuuB1fWySn0NQyuawC", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:45 GMT + recorded_at: Mon, 18 Dec 2023 02:58:32 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml similarity index 79% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml index 40ce204d07..b9907428dd 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa/returns_payment_intent_id_and_does_not_raise.yml @@ -8,18 +8,20 @@ http_interactions: string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_nG6iKvmXXwyOql","request_duration_ms":371}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -32,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:38 GMT + - Mon, 18 Dec 2023 02:58:26 GMT Content-Type: - application/json Content-Length: @@ -57,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 5b81b402-2172-42b6-80eb-cca4f70ab902 + - 8a595f9a-55aa-4f8f-a6e1-733e21096b86 Original-Request: - - req_N8rdxB4z4fy4DI + - req_NJwExGqeNLK5lM Request-Id: - - req_N8rdxB4z4fy4DI + - req_NJwExGqeNLK5lM Stripe-Should-Retry: - 'false' Stripe-Version: @@ -76,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIQKuuB1fWySnJfXdue8w", + "id": "pm_1OOX2EKuuB1fWySnzyxggjMs", "object": "payment_method", "billing_details": { "address": { @@ -116,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973658, + "created": 1702868306, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:39 GMT + recorded_at: Mon, 18 Dec 2023 02:58:26 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIQKuuB1fWySnJfXdue8w&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2EKuuB1fWySnzyxggjMs&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_N8rdxB4z4fy4DI","request_duration_ms":767}}' + - '{"last_request_metrics":{"request_id":"req_NJwExGqeNLK5lM","request_duration_ms":739}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -157,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:39 GMT + - Mon, 18 Dec 2023 02:58:27 GMT Content-Type: - application/json Content-Length: @@ -182,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - a255a1b0-a315-4d46-96d1-00c36543227e + - bd45e110-194d-4b0d-876b-fcf82feb84b1 Original-Request: - - req_tYVVDWRnXGPrtx + - req_7rMNpr6JJPMni3 Request-Id: - - req_tYVVDWRnXGPrtx + - req_7rMNpr6JJPMni3 Stripe-Should-Retry: - 'false' Stripe-Version: @@ -201,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIRKuuB1fWySn2lCHwcUL", + "id": "pi_3OOX2FKuuB1fWySn18w4TQe1", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -215,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIRKuuB1fWySn2lCHwcUL_secret_UxoKiRX2gOkVBFZ0oeN73xgbT", + "client_secret": "pi_3OOX2FKuuB1fWySn18w4TQe1_secret_l8c2qLIeGindFVHnmnMcnkdBd", "confirmation_method": "automatic", - "created": 1701973659, + "created": 1702868307, "currency": "eur", "customer": null, "description": null, @@ -228,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIQKuuB1fWySnJfXdue8w", + "payment_method": "pm_1OOX2EKuuB1fWySnzyxggjMs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -253,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:39 GMT + recorded_at: Mon, 18 Dec 2023 02:58:27 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIRKuuB1fWySn2lCHwcUL/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2FKuuB1fWySn18w4TQe1/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_tYVVDWRnXGPrtx","request_duration_ms":592}}' + - '{"last_request_metrics":{"request_id":"req_7rMNpr6JJPMni3","request_duration_ms":540}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -288,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:40 GMT + - Mon, 18 Dec 2023 02:58:28 GMT Content-Type: - application/json Content-Length: @@ -314,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 4f1a4fe9-6340-4db1-91a9-811e21b1e4f7 + - 2f13af0b-ca20-4625-a41c-579ebec9bb4f Original-Request: - - req_enswLIMTlh0aCt + - req_aAmHVTfMuIzVQZ Request-Id: - - req_enswLIMTlh0aCt + - req_aAmHVTfMuIzVQZ Stripe-Should-Retry: - 'false' Stripe-Version: @@ -333,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIRKuuB1fWySn2lCHwcUL", + "id": "pi_3OOX2FKuuB1fWySn18w4TQe1", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -347,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIRKuuB1fWySn2lCHwcUL_secret_UxoKiRX2gOkVBFZ0oeN73xgbT", + "client_secret": "pi_3OOX2FKuuB1fWySn18w4TQe1_secret_l8c2qLIeGindFVHnmnMcnkdBd", "confirmation_method": "automatic", - "created": 1701973659, + "created": 1702868307, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIRKuuB1fWySn2jy2mLYl", + "latest_charge": "ch_3OOX2FKuuB1fWySn1uq4Nn8C", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIQKuuB1fWySnJfXdue8w", + "payment_method": "pm_1OOX2EKuuB1fWySnzyxggjMs", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -385,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:40 GMT + recorded_at: Mon, 18 Dec 2023 02:58:28 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml index 79263c8d91..701d8f31e4 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/captures_the_payment.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000056655665556&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_2rJ0zQi7xzSH0t","request_duration_ms":978}}' + - '{"last_request_metrics":{"request_id":"req_0PwuRPJ1hBSmuj","request_duration_ms":898}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:48 GMT + - Mon, 18 Dec 2023 02:58:35 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - '028fcb41-35f9-4f4a-8e3e-9abec95814f4' + - bbf47520-03d4-4bcb-a854-19be8723a244 Original-Request: - - req_8Dj0If0QPJnD9u + - req_zKMLU8p0oI9Koh Request-Id: - - req_8Dj0If0QPJnD9u + - req_zKMLU8p0oI9Koh Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "id": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973668, + "created": 1702868315, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:48 GMT + recorded_at: Mon, 18 Dec 2023 02:58:35 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIZKuuB1fWySn2FkaKy2x&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2NKuuB1fWySnYrjbB0Y0&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8Dj0If0QPJnD9u","request_duration_ms":482}}' + - '{"last_request_metrics":{"request_id":"req_zKMLU8p0oI9Koh","request_duration_ms":570}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:48 GMT + - Mon, 18 Dec 2023 02:58:35 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 23c3b381-74ee-4820-91d9-01fb26b6b350 + - 94376b73-0ebc-405a-aa67-91365bc76243 Original-Request: - - req_vBxKa23Ed17aMa + - req_cMa5j3EzTbBFBv Request-Id: - - req_vBxKa23Ed17aMa + - req_cMa5j3EzTbBFBv Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIaKuuB1fWySn2OwGeqDU", + "id": "pi_3OOX2NKuuB1fWySn00EU3eXm", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIaKuuB1fWySn2OwGeqDU_secret_1wqJ6qaf3PXPBvIr4sdOGK34r", + "client_secret": "pi_3OOX2NKuuB1fWySn00EU3eXm_secret_M0lsKEmAL0QssR1OWLzOs6dTa", "confirmation_method": "automatic", - "created": 1701973668, + "created": 1702868315, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "payment_method": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:48 GMT + recorded_at: Mon, 18 Dec 2023 02:58:36 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIaKuuB1fWySn2OwGeqDU/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2NKuuB1fWySn00EU3eXm/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_vBxKa23Ed17aMa","request_duration_ms":413}}' + - '{"last_request_metrics":{"request_id":"req_cMa5j3EzTbBFBv","request_duration_ms":510}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:49 GMT + - Mon, 18 Dec 2023 02:58:37 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ff20f124-9b74-4032-9a4e-4002883b4fea + - 7312b186-46db-4bda-a6bf-8a09f212652a Original-Request: - - req_8HBeT5VXCwPUbL + - req_pYI9OGGoxbkgQU Request-Id: - - req_8HBeT5VXCwPUbL + - req_pYI9OGGoxbkgQU Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIaKuuB1fWySn2OwGeqDU", + "id": "pi_3OOX2NKuuB1fWySn00EU3eXm", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIaKuuB1fWySn2OwGeqDU_secret_1wqJ6qaf3PXPBvIr4sdOGK34r", + "client_secret": "pi_3OOX2NKuuB1fWySn00EU3eXm_secret_M0lsKEmAL0QssR1OWLzOs6dTa", "confirmation_method": "automatic", - "created": 1701973668, + "created": 1702868315, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIaKuuB1fWySn2uvs73RK", + "latest_charge": "ch_3OOX2NKuuB1fWySn0MBPyhbA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "payment_method": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,29 +387,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:49 GMT + recorded_at: Mon, 18 Dec 2023 02:58:37 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIaKuuB1fWySn2OwGeqDU + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2NKuuB1fWySn00EU3eXm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_8HBeT5VXCwPUbL","request_duration_ms":1043}}' + - '{"last_request_metrics":{"request_id":"req_pYI9OGGoxbkgQU","request_duration_ms":1327}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -422,7 +422,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:50 GMT + - Mon, 18 Dec 2023 02:58:37 GMT Content-Type: - application/json Content-Length: @@ -448,7 +448,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_dDQwl4mTBvuQOj + - req_5gwckLJuawiruP Stripe-Version: - '2023-10-16' Vary: @@ -461,7 +461,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIaKuuB1fWySn2OwGeqDU", + "id": "pi_3OOX2NKuuB1fWySn00EU3eXm", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -475,20 +475,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIaKuuB1fWySn2OwGeqDU_secret_1wqJ6qaf3PXPBvIr4sdOGK34r", + "client_secret": "pi_3OOX2NKuuB1fWySn00EU3eXm_secret_M0lsKEmAL0QssR1OWLzOs6dTa", "confirmation_method": "automatic", - "created": 1701973668, + "created": 1702868315, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIaKuuB1fWySn2uvs73RK", + "latest_charge": "ch_3OOX2NKuuB1fWySn0MBPyhbA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "payment_method": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -513,29 +513,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:50 GMT + recorded_at: Mon, 18 Dec 2023 02:58:37 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIaKuuB1fWySn2OwGeqDU/capture + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2NKuuB1fWySn00EU3eXm/capture body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_dDQwl4mTBvuQOj","request_duration_ms":309}}' + - '{"last_request_metrics":{"request_id":"req_5gwckLJuawiruP","request_duration_ms":332}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -548,7 +548,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:51 GMT + - Mon, 18 Dec 2023 02:58:38 GMT Content-Type: - application/json Content-Length: @@ -574,11 +574,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - ef059d26-6988-4e51-ae33-3d6df6a632e3 + - 3400354c-41b2-46c2-9b06-212985c345d6 Original-Request: - - req_Q917n8EnKb3inl + - req_KIcq3vUGGdv87R Request-Id: - - req_Q917n8EnKb3inl + - req_KIcq3vUGGdv87R Stripe-Should-Retry: - 'false' Stripe-Version: @@ -593,7 +593,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIaKuuB1fWySn2OwGeqDU", + "id": "pi_3OOX2NKuuB1fWySn00EU3eXm", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -607,20 +607,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIaKuuB1fWySn2OwGeqDU_secret_1wqJ6qaf3PXPBvIr4sdOGK34r", + "client_secret": "pi_3OOX2NKuuB1fWySn00EU3eXm_secret_M0lsKEmAL0QssR1OWLzOs6dTa", "confirmation_method": "automatic", - "created": 1701973668, + "created": 1702868315, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIaKuuB1fWySn2uvs73RK", + "latest_charge": "ch_3OOX2NKuuB1fWySn0MBPyhbA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "payment_method": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -645,29 +645,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:51 GMT + recorded_at: Mon, 18 Dec 2023 02:58:38 GMT - request: method: get - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIaKuuB1fWySn2OwGeqDU + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2NKuuB1fWySn00EU3eXm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_Q917n8EnKb3inl","request_duration_ms":1042}}' + - '{"last_request_metrics":{"request_id":"req_KIcq3vUGGdv87R","request_duration_ms":1099}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -680,7 +680,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:51 GMT + - Mon, 18 Dec 2023 02:58:39 GMT Content-Type: - application/json Content-Length: @@ -706,7 +706,7 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Request-Id: - - req_FXU6PzCIqo9KuH + - req_fq0KpnR0RlgizG Stripe-Version: - '2023-10-16' Vary: @@ -719,7 +719,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIaKuuB1fWySn2OwGeqDU", + "id": "pi_3OOX2NKuuB1fWySn00EU3eXm", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -733,20 +733,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIaKuuB1fWySn2OwGeqDU_secret_1wqJ6qaf3PXPBvIr4sdOGK34r", + "client_secret": "pi_3OOX2NKuuB1fWySn00EU3eXm_secret_M0lsKEmAL0QssR1OWLzOs6dTa", "confirmation_method": "automatic", - "created": 1701973668, + "created": 1702868315, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIaKuuB1fWySn2uvs73RK", + "latest_charge": "ch_3OOX2NKuuB1fWySn0MBPyhbA", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIZKuuB1fWySn2FkaKy2x", + "payment_method": "pm_1OOX2NKuuB1fWySnYrjbB0Y0", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -771,5 +771,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:51 GMT + recorded_at: Mon, 18 Dec 2023 02:58:39 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml similarity index 78% rename from spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml rename to spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml index 5c1d0215cc..2b68ff6079 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.2.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/Stripe_PaymentIntentValidator/_call/when_payment_intent_is_valid/valid_non-3D_credit_cards_are_correctly_handled/behaves_like_payments_intents/from_Visa_debit_/returns_payment_intent_id_and_does_not_raise.yml @@ -8,20 +8,20 @@ http_interactions: string: type=card&card[number]=4000056655665556&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_w7b6fE6CLKLyH9","request_duration_ms":308}}' + - '{"last_request_metrics":{"request_id":"req_qppuoRHS175i7R","request_duration_ms":408}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -34,7 +34,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:45 GMT + - Mon, 18 Dec 2023 02:58:33 GMT Content-Type: - application/json Content-Length: @@ -59,11 +59,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - '08b17a38-58a0-4c8c-8d27-6673c985eae7' + - c753686c-64e7-4dae-8d67-a6fd87fd95eb Original-Request: - - req_P7VKooRBDzx7gb + - req_xuu6JRp2kxe5fR Request-Id: - - req_P7VKooRBDzx7gb + - req_xuu6JRp2kxe5fR Stripe-Should-Retry: - 'false' Stripe-Version: @@ -78,7 +78,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pm_1OKmIXKuuB1fWySnRID1abtb", + "id": "pm_1OOX2LKuuB1fWySn8ereOue6", "object": "payment_method", "billing_details": { "address": { @@ -118,35 +118,35 @@ http_interactions: }, "wallet": null }, - "created": 1701973665, + "created": 1702868313, "customer": null, "livemode": false, "metadata": {}, "type": "card" } - recorded_at: Thu, 07 Dec 2023 18:27:46 GMT + recorded_at: Mon, 18 Dec 2023 02:58:33 GMT - request: method: post uri: https://api.stripe.com/v1/payment_intents body: encoding: UTF-8 - string: amount=100¤cy=eur&payment_method=pm_1OKmIXKuuB1fWySnRID1abtb&payment_method_types[0]=card&capture_method=manual + string: amount=100¤cy=eur&payment_method=pm_1OOX2LKuuB1fWySn8ereOue6&payment_method_types[0]=card&capture_method=manual headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_P7VKooRBDzx7gb","request_duration_ms":457}}' + - '{"last_request_metrics":{"request_id":"req_xuu6JRp2kxe5fR","request_duration_ms":498}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -159,7 +159,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:46 GMT + - Mon, 18 Dec 2023 02:58:33 GMT Content-Type: - application/json Content-Length: @@ -184,11 +184,11 @@ http_interactions: default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - cf6adf2c-ebcf-4e50-8e8a-688e7b70b248 + - 829da6cd-4c5f-4772-ad0b-ec0688d29d4e Original-Request: - - req_dbwuxob9vy2arJ + - req_r5rU9La7ppa54X Request-Id: - - req_dbwuxob9vy2arJ + - req_r5rU9La7ppa54X Stripe-Should-Retry: - 'false' Stripe-Version: @@ -203,7 +203,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIYKuuB1fWySn2npQ8Z6G", + "id": "pi_3OOX2LKuuB1fWySn0Mdu7ZY6", "object": "payment_intent", "amount": 100, "amount_capturable": 0, @@ -217,9 +217,9 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIYKuuB1fWySn2npQ8Z6G_secret_4XLGnnKQz3ybCyip7ZOts38zM", + "client_secret": "pi_3OOX2LKuuB1fWySn0Mdu7ZY6_secret_I5ri1iNJsxFKIopS22o80Vh2e", "confirmation_method": "automatic", - "created": 1701973666, + "created": 1702868313, "currency": "eur", "customer": null, "description": null, @@ -230,7 +230,7 @@ http_interactions: "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIXKuuB1fWySnRID1abtb", + "payment_method": "pm_1OOX2LKuuB1fWySn8ereOue6", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -255,29 +255,29 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:46 GMT + recorded_at: Mon, 18 Dec 2023 02:58:33 GMT - request: method: post - uri: https://api.stripe.com/v1/payment_intents/pi_3OKmIYKuuB1fWySn2npQ8Z6G/confirm + uri: https://api.stripe.com/v1/payment_intents/pi_3OOX2LKuuB1fWySn0Mdu7ZY6/confirm body: encoding: US-ASCII string: '' headers: User-Agent: - - Stripe/v1 RubyBindings/10.2.0 + - Stripe/v1 RubyBindings/10.3.0 Authorization: - Bearer Content-Type: - application/x-www-form-urlencoded X-Stripe-Client-Telemetry: - - '{"last_request_metrics":{"request_id":"req_dbwuxob9vy2arJ","request_duration_ms":381}}' + - '{"last_request_metrics":{"request_id":"req_r5rU9La7ppa54X","request_duration_ms":509}}' Stripe-Version: - '2023-10-16' X-Stripe-Client-User-Agent: - - '{"bindings_version":"10.2.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux - version 6.2.0-37-generic (buildd@bos03-amd64-055) (x86_64-linux-gnu-gcc-11 - (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) - #38~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 2 18:01:13 UTC 2","hostname":"ff-LAT"}' + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.1.0-13-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14) + 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #1 SMP PREEMPT_DYNAMIC Debian + 6.1.55-1 (2023-09-29)","hostname":"blackbox"}' Accept-Encoding: - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 Accept: @@ -290,7 +290,7 @@ http_interactions: Server: - nginx Date: - - Thu, 07 Dec 2023 18:27:47 GMT + - Mon, 18 Dec 2023 02:58:34 GMT Content-Type: - application/json Content-Length: @@ -316,11 +316,11 @@ http_interactions: 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' Idempotency-Key: - - 055ca44f-80a5-41b8-ad3a-97ae87e0c8e9 + - b0d523c4-04a5-4415-ad97-1baa7aff6d8f Original-Request: - - req_2rJ0zQi7xzSH0t + - req_0PwuRPJ1hBSmuj Request-Id: - - req_2rJ0zQi7xzSH0t + - req_0PwuRPJ1hBSmuj Stripe-Should-Retry: - 'false' Stripe-Version: @@ -335,7 +335,7 @@ http_interactions: encoding: UTF-8 string: |- { - "id": "pi_3OKmIYKuuB1fWySn2npQ8Z6G", + "id": "pi_3OOX2LKuuB1fWySn0Mdu7ZY6", "object": "payment_intent", "amount": 100, "amount_capturable": 100, @@ -349,20 +349,20 @@ http_interactions: "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", - "client_secret": "pi_3OKmIYKuuB1fWySn2npQ8Z6G_secret_4XLGnnKQz3ybCyip7ZOts38zM", + "client_secret": "pi_3OOX2LKuuB1fWySn0Mdu7ZY6_secret_I5ri1iNJsxFKIopS22o80Vh2e", "confirmation_method": "automatic", - "created": 1701973666, + "created": 1702868313, "currency": "eur", "customer": null, "description": null, "invoice": null, "last_payment_error": null, - "latest_charge": "ch_3OKmIYKuuB1fWySn2qAakUqm", + "latest_charge": "ch_3OOX2LKuuB1fWySn0gKr6AgZ", "livemode": false, "metadata": {}, "next_action": null, "on_behalf_of": null, - "payment_method": "pm_1OKmIXKuuB1fWySnRID1abtb", + "payment_method": "pm_1OOX2LKuuB1fWySn8ereOue6", "payment_method_configuration_details": null, "payment_method_options": { "card": { @@ -387,5 +387,5 @@ http_interactions: "transfer_data": null, "transfer_group": null } - recorded_at: Thu, 07 Dec 2023 18:27:47 GMT + recorded_at: Mon, 18 Dec 2023 02:58:34 GMT recorded_with: VCR 6.2.0 From 4a32df7ef593ae995628817e5660347eefbae359 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 15:23:34 +1100 Subject: [PATCH 034/219] Remove seemingly useless method Left over from Spree, it looks like a weird way to cast somehing to a string --- app/helpers/spree/admin/navigation_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/spree/admin/navigation_helper.rb b/app/helpers/spree/admin/navigation_helper.rb index dcdf00a2e7..d39ac5b3cc 100644 --- a/app/helpers/spree/admin/navigation_helper.rb +++ b/app/helpers/spree/admin/navigation_helper.rb @@ -133,7 +133,7 @@ module Spree if html_options[:icon] html_options[:class] += " #{html_options[:icon]}" end - link_to(text_for_button_link(text, html_options), url, html_options) + link_to(text, url, html_options) end end From 84a8c6b31a6007c39640d0eac33e0fb008706798 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 15:27:56 +1100 Subject: [PATCH 035/219] Remove `raw` from email template --- .../producer_mailer/order_cycle_report.html.haml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/producer_mailer/order_cycle_report.html.haml b/app/views/producer_mailer/order_cycle_report.html.haml index e24d37fc1a..68a199c85c 100644 --- a/app/views/producer_mailer/order_cycle_report.html.haml +++ b/app/views/producer_mailer/order_cycle_report.html.haml @@ -40,9 +40,9 @@ #{line_items.first.variant.sku} - if @distributors_pickup_times.many? %td - #{raw(line_items.first.product.supplier.name)} + #{line_items.first.product.supplier.name} %td - #{raw(product_and_full_name)} + #{product_and_full_name} %td.text-right #{line_items.sum(&:quantity)} %td.text-right @@ -88,15 +88,15 @@ #{line_item[:sku]} - if @distributors_pickup_times.many? %td - #{raw(line_item[:supplier_name])} + #{(line_item[:supplier_name]} %td - #{raw(line_item[:product_and_full_name])} + #{line_item[:product_and_full_name]} %td.text-right #{line_item[:quantity]} %td - #{raw(line_item[:first_name])} + #{line_item[:first_name]} %td - #{raw(line_item[:last_name])} + #{line_item[:last_name]} %p = t :producer_mail_text_after %p From 031cc45992002bfd8de1098b1b38a918342312fb Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 15:39:08 +1100 Subject: [PATCH 036/219] Sanitize home_page_alert_html It still allows some specific tag so we can have link and some formatting. --- app/views/shared/_page_alert.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/shared/_page_alert.html.haml b/app/views/shared/_page_alert.html.haml index d57ef18d99..2a97684da4 100644 --- a/app/views/shared/_page_alert.html.haml +++ b/app/views/shared/_page_alert.html.haml @@ -1,6 +1,6 @@ - if ContentConfig.home_page_alert_html.present? .alert-cta - %h6= raw ContentConfig.home_page_alert_html + %h6= sanitize(@comment.body, tags: %w(strong em a i span), attributes: %w(href target)) - else = render "shared/register_call" From 28f3161bf88c4a7f8531a7d90b1d27ccac6f272d Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 15:54:22 +1100 Subject: [PATCH 037/219] Removing `raw` from invoice template --- .../spree/admin/orders/_invoice/_line_item_name.html.haml | 6 +++--- app/views/spree/admin/orders/_invoice_table.html.haml | 4 ++-- app/views/spree/admin/orders/_invoice_table2.html.haml | 4 ++-- app/views/spree/admin/orders/_invoice_table4.html.haml | 4 ++-- app/views/spree/order_mailer/_order_summary.html.haml | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/views/spree/admin/orders/_invoice/_line_item_name.html.haml b/app/views/spree/admin/orders/_invoice/_line_item_name.html.haml index 015f48a54d..37dc28e3a1 100644 --- a/app/views/spree/admin/orders/_invoice/_line_item_name.html.haml +++ b/app/views/spree/admin/orders/_invoice/_line_item_name.html.haml @@ -1,6 +1,6 @@ %h5.inline-header - = "#{raw(line_item.variant.product.name)}" + = line_item.variant.product.name - unless line_item.variant.product.name.include? line_item.name_to_display - %span= "- #{raw(line_item.name_to_display)}" + %span= "- #{line_item.name_to_display}" - if line_item.unit_price_price_and_unit - = raw("(#{line_item.unit_price_price_and_unit})") \ No newline at end of file + = raw("(#{line_item.unit_price_price_and_unit})") diff --git a/app/views/spree/admin/orders/_invoice_table.html.haml b/app/views/spree/admin/orders/_invoice_table.html.haml index 7ed12adca1..04ac30e81a 100644 --- a/app/views/spree/admin/orders/_invoice_table.html.haml +++ b/app/views/spree/admin/orders/_invoice_table.html.haml @@ -16,7 +16,7 @@ = render 'spree/shared/line_item_name', line_item: item %br %small - %em= raw(item.variant.product.supplier.name) + %em= item.variant.product.supplier.name %td{:align => "right"} = item.quantity %td{:align => "right"} @@ -28,7 +28,7 @@ - taxable = adjustment.adjustable_type == "Spree::Shipment" ? adjustment.adjustable : adjustment %tr %td - %strong= "#{raw(adjustment.label)}" + %strong= adjustment.label %td{:align => "right"} 1 %td{:align => "right"} diff --git a/app/views/spree/admin/orders/_invoice_table2.html.haml b/app/views/spree/admin/orders/_invoice_table2.html.haml index ff24582867..789737bdad 100644 --- a/app/views/spree/admin/orders/_invoice_table2.html.haml +++ b/app/views/spree/admin/orders/_invoice_table2.html.haml @@ -19,7 +19,7 @@ = render 'spree/shared/line_item_name', line_item: item %br %small - %em= raw(item.variant.product.supplier.name) + %em= item.variant.product.supplier.name %td{:align => "right"} = item.quantity %td{:align => "right"} @@ -33,7 +33,7 @@ - checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment| %tr %td - %strong= "#{raw(adjustment.label)}" + %strong= adjustment.label %td{:align => "right"} %td{:align => "right"} %td{:align => "right"} diff --git a/app/views/spree/admin/orders/_invoice_table4.html.haml b/app/views/spree/admin/orders/_invoice_table4.html.haml index 82a7c57d28..a19f7aa20c 100644 --- a/app/views/spree/admin/orders/_invoice_table4.html.haml +++ b/app/views/spree/admin/orders/_invoice_table4.html.haml @@ -22,7 +22,7 @@ = render 'spree/admin/orders/_invoice/line_item_name', line_item: item %br %small - %em= raw(item.variant.product.supplier.name) + %em= item.variant.product.supplier.name %td{:align => "right"} = item.quantity %td{:align => "right"} @@ -51,7 +51,7 @@ - @order.checkout_adjustments(exclude: [:line_item, :shipment]).reverse_each do |adjustment| %tr %td - %strong= "#{raw(adjustment.label)}" + %strong= adjustment.label %td{:align => "right"} %td{:align => "right"} %td{:align => "right"} diff --git a/app/views/spree/order_mailer/_order_summary.html.haml b/app/views/spree/order_mailer/_order_summary.html.haml index af0ba5433a..55e0e67cc3 100644 --- a/app/views/spree/order_mailer/_order_summary.html.haml +++ b/app/views/spree/order_mailer/_order_summary.html.haml @@ -20,7 +20,7 @@ = render 'spree/shared/line_item_name', line_item: item %br %small - %em= raw(item.variant.product.supplier.name) + %em= item.variant.product.supplier.name %td - if item.variant.sku.blank? \- @@ -43,7 +43,7 @@ - checkout_adjustments_for(@order, exclude: [:line_item]).reverse_each do |adjustment| %tr %td{align: "right", colspan: "3"} - = "#{raw(adjustment.label)}:" + = "#{adjustment.label}:" %td{align: "right"} = adjustment.display_amount %tr From 085629fae136be77b189a1c32953e54e1e27b248 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 15:59:02 +1100 Subject: [PATCH 038/219] Remove `raw` --- app/views/spree/shared/_line_item_name.html.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/spree/shared/_line_item_name.html.haml b/app/views/spree/shared/_line_item_name.html.haml index 12a32772a4..8b1e75de55 100644 --- a/app/views/spree/shared/_line_item_name.html.haml +++ b/app/views/spree/shared/_line_item_name.html.haml @@ -1,6 +1,6 @@ %h5.inline-header - = "#{raw(line_item.product.name)}" + = "#{line_item.product.name}" - unless line_item.product.name.include? line_item.name_to_display - %span= "- #{raw(line_item.name_to_display)}" + %span= "- #{line_item.name_to_display}" - if line_item.options_text - = "(#{raw(line_item.options_text)})" + = "(#{line_item.options_text})" From eb4115ceed1c83fc3d440dc38b122e66a53ec058 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 20 Nov 2023 11:13:40 +1100 Subject: [PATCH 039/219] Per review, use existing TrixScrubber to sanitize content --- app/views/shared/_page_alert.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/shared/_page_alert.html.haml b/app/views/shared/_page_alert.html.haml index 2a97684da4..b13a0710fa 100644 --- a/app/views/shared/_page_alert.html.haml +++ b/app/views/shared/_page_alert.html.haml @@ -1,6 +1,6 @@ - if ContentConfig.home_page_alert_html.present? .alert-cta - %h6= sanitize(@comment.body, tags: %w(strong em a i span), attributes: %w(href target)) + %h6= sanitize(ContentConfig.home_page_alert_html, scrubber: TrixScrubber.new) - else = render "shared/register_call" From 502df3d78f67c25286344f4ba81519491b7c3907 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 20 Nov 2023 11:40:35 +1100 Subject: [PATCH 040/219] Remove a bunch of non needed string interpolation --- .../order_cycle_report.html.haml | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/app/views/producer_mailer/order_cycle_report.html.haml b/app/views/producer_mailer/order_cycle_report.html.haml index 68a199c85c..c44742a4b1 100644 --- a/app/views/producer_mailer/order_cycle_report.html.haml +++ b/app/views/producer_mailer/order_cycle_report.html.haml @@ -37,20 +37,20 @@ - @grouped_line_items.each_pair do |product_and_full_name, line_items| %tr %td - #{line_items.first.variant.sku} + = line_items.first.variant.sku - if @distributors_pickup_times.many? %td - #{line_items.first.product.supplier.name} + = line_items.first.product.supplier.name %td - #{product_and_full_name} + = product_and_full_name %td.text-right - #{line_items.sum(&:quantity)} + = line_items.sum(&:quantity) %td.text-right - #{line_items.first.single_money} + = line_items.first.single_money %td.text-right - #{Spree::Money.new(line_items.sum(&:total), currency: line_items.first.currency) } + = Spree::Money.new(line_items.sum(&:total), currency: line_items.first.currency) %td.tax.text-right - #{Spree::Money.new(line_items.sum(&:included_tax), currency: line_items.first.currency) } + = Spree::Money.new(line_items.sum(&:included_tax), currency: line_items.first.currency) %tr.total-row %td - if @distributors_pickup_times.many? @@ -59,9 +59,9 @@ %td %td %td.text-right - #{@total} + = @total %td.text-right - #{@tax_total} + = @tax_total - if @customer_line_items %p = t :producer_mail_order_customer_text @@ -85,33 +85,34 @@ - @customer_line_items.each do |line_item| %tr %td - #{line_item[:sku]} + = line_item[:sku] - if @distributors_pickup_times.many? %td - #{(line_item[:supplier_name]} + = line_item[:supplier_name] %td - #{line_item[:product_and_full_name]} + = line_item[:product_and_full_name] %td.text-right - #{line_item[:quantity]} + = line_item[:quantity] %td - #{line_item[:first_name]} + = line_item[:first_name] %td - #{line_item[:last_name]} + = line_item[:last_name] %p = t :producer_mail_text_after %p - #{t(:producer_mail_signoff)}, + = t(:producer_mail_signoff) + , %em %p - #{@coordinator.name} + = @coordinator.name %p %br - #{@coordinator.address.address1} + = @coordinator.address.address1 %br - #{@coordinator.address.city} + = @coordinator.address.city %br - #{@coordinator.address.zipcode} + = @coordinator.address.zipcode %p - #{@coordinator.phone} + = @coordinator.phone %p - #{@coordinator.contact.email} + = @coordinator.contact.email From 4551a9b689253e1cec0f84d74eb39ba034f48509 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:18:45 +0000 Subject: [PATCH 041/219] Bump rubocop-rails from 2.22.2 to 2.23.0 Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.22.2 to 2.23.0. - [Release notes](https://github.com/rubocop/rubocop-rails/releases) - [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.22.2...v2.23.0) --- updated-dependencies: - dependency-name: rubocop-rails dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f84f78ee60..b81cd18c39 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -467,7 +467,7 @@ GEM paper_trail (12.3.0) activerecord (>= 5.2) request_store (~> 1.1) - parallel (1.23.0) + parallel (1.24.0) paranoia (2.6.3) activerecord (>= 5.1, < 7.2) parser (3.2.2.4) @@ -647,7 +647,7 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.30.0) parser (>= 3.2.1.0) - rubocop-rails (2.22.2) + rubocop-rails (2.23.0) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) From 248b9fb18602d109fcac68fede907a30ba127533 Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Mon, 18 Dec 2023 19:25:46 +0700 Subject: [PATCH 042/219] update order state --- .../admin/reports/revenues_by_hub_spec.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/spec/system/admin/reports/revenues_by_hub_spec.rb b/spec/system/admin/reports/revenues_by_hub_spec.rb index 2bad48930b..8d950901cb 100644 --- a/spec/system/admin/reports/revenues_by_hub_spec.rb +++ b/spec/system/admin/reports/revenues_by_hub_spec.rb @@ -82,7 +82,8 @@ describe "Revenues By Hub Reports" do ].join(" ")) lines = page.all('table.report__table tbody tr').map(&:text) - expect(lines[0]).to have_content([ + first_line = lines.detect { |line| line.include?('Hub 1') } + expect(first_line).to have_content([ "Hub 1", order.distributor.id, "none", @@ -102,7 +103,8 @@ describe "Revenues By Hub Reports" do order.total ].compact.join(" ")) - expect(lines[1]).to have_content([ + second_line = lines.detect { |line| line.include?('Hub 2') } + expect(second_line).to have_content([ "Hub 2", order_with_voucher_tax_included.distributor.id, "none", @@ -117,12 +119,13 @@ describe "Revenues By Hub Reports" do "20170", "Victoria", "1", - 150.63, + 140.63, 9.37, - 160.0 + 150.0 ].compact.join(" ")) - expect(lines[2]).to have_content([ + third_line = lines.detect { |line| line.include?('Hub 3') } + expect(third_line).to have_content([ "Hub 3", order_with_voucher_tax_excluded.distributor.id, "none", @@ -137,9 +140,9 @@ describe "Revenues By Hub Reports" do "20170", "Victoria", "1", - 160.64, + 150.64, 10.36, - 171.0 + 161.0 ].compact.join(" ")) end end @@ -153,5 +156,7 @@ describe "Revenues By Hub Reports" do order.update_order! VoucherAdjustmentsService.new(order).update + + order.update_totals_and_states end end From 632291e8c74031553adcb61c9af97928427bd789 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:07:11 +0000 Subject: [PATCH 043/219] Bump combine_pdf from 1.0.24 to 1.0.25 Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.24 to 1.0.25. - [Release notes](https://github.com/boazsegev/combine_pdf/releases) - [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md) - [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.24...v1.0.25) --- updated-dependencies: - dependency-name: combine_pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f84f78ee60..bae0aaf2b2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -216,7 +216,7 @@ GEM coffee-script-source execjs coffee-script-source (1.12.2) - combine_pdf (1.0.24) + combine_pdf (1.0.25) matrix ruby-rc4 (>= 0.1.5) concurrent-ruby (1.2.2) From cdceefb6fbd089945b03291a0a66bb7b166bf2a5 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 19 Dec 2023 16:41:58 +0000 Subject: [PATCH 044/219] Moves test.rb I18n exception hanlder into base_spec_helper --- config/initializers/test.rb | 5 ----- spec/base_spec_helper.rb | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 config/initializers/test.rb diff --git a/config/initializers/test.rb b/config/initializers/test.rb deleted file mode 100644 index af1f0f4479..0000000000 --- a/config/initializers/test.rb +++ /dev/null @@ -1,5 +0,0 @@ -# frozen_string_literal: true - -I18n.exception_handler = Proc.new do |exception, *_| - raise exception.to_exception -end \ No newline at end of file diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 49c2631095..4368c65a43 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -205,6 +205,11 @@ RSpec.configure do |config| # You can use `rspec -n` to run only failed specs. config.example_status_persistence_file_path = "tmp/rspec-status.txt" + # raise I18n exception handler + I18n.exception_handler = proc do |exception, *_| + raise exception.to_exception + end + # Helpers config.include FactoryBot::Syntax::Methods config.include JsonSpec::Helpers From 89ef62d3418db1296249034d2a68da074c7c278c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Dec 2023 13:57:06 +1100 Subject: [PATCH 045/219] Update Rubocop config todo [skip ci] --- .rubocop_todo.yml | 61 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index a5c489dc1b..bd2b7c9b67 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,6 +1,6 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 1400 --no-auto-gen-timestamp` -# using RuboCop version 1.57.2. +# using RuboCop version 1.59.0. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new @@ -116,13 +116,28 @@ Lint/RedundantSafeNavigation: Exclude: - 'app/models/spree/payment.rb' +# Offense count: 1 +Lint/SelfAssignment: + Exclude: + - 'app/models/spree/order/checkout.rb' + +# Offense count: 9 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: EnforcedStyle. +# SupportedStyles: strict, consistent +Lint/SymbolConversion: + Exclude: + - 'app/models/spree/preferences/preferable_class_methods.rb' + - 'app/services/sets/product_set.rb' + - 'lib/spree/core/environment_extension.rb' + # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Lint/UselessMethodDefinition: Exclude: - 'app/models/spree/gateway.rb' -# Offense count: 27 +# Offense count: 26 # Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max. Metrics/AbcSize: Exclude: @@ -520,7 +535,7 @@ Rails/NegateInclude: - 'lib/spree/localized_number.rb' - 'spec/support/matchers/table_matchers.rb' -# Offense count: 31 +# Offense count: 32 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/Pluck: Exclude: @@ -539,6 +554,7 @@ Rails/Pluck: - 'spec/lib/reports/lettuce_share_report_spec.rb' - 'spec/lib/reports/users_and_enterprises_report_spec.rb' - 'spec/serializers/api/admin/for_order_cycle/supplied_product_serializer_spec.rb' + - 'spec/support/api_helper.rb' # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). @@ -606,13 +622,12 @@ Rails/ResponseParsedBody: - 'spec/controllers/spree/credit_cards_controller_spec.rb' - 'spec/controllers/user_registrations_controller_spec.rb' -# Offense count: 3 +# Offense count: 2 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RootPathnameMethods: Exclude: - 'spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb' - 'spec/models/terms_of_service_file_spec.rb' - - 'spec/system/admin/configuration/terms_of_service_files_spec.rb' # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). @@ -827,6 +842,22 @@ Style/HashConversion: - 'spec/controllers/admin/inventory_items_controller_spec.rb' - 'spec/controllers/admin/variant_overrides_controller_spec.rb' +# Offense count: 13 +# This cop supports unsafe autocorrection (--autocorrect-all). +# Configuration parameters: AllowedReceivers. +# AllowedReceivers: Thread.current +Style/HashEachMethods: + Exclude: + - 'app/controllers/admin/enterprises_controller.rb' + - 'app/controllers/spree/admin/shipping_methods_controller.rb' + - 'app/forms/enterprise_fees_bulk_update.rb' + - 'app/models/product_import/entry_processor.rb' + - 'app/models/spree/preferences/configuration.rb' + - 'app/services/sets/model_set.rb' + - 'lib/reporting/reports/sales_tax/sales_tax_totals_by_producer.rb' + - 'spec/models/product_importer_spec.rb' + - 'spec/support/cancan_helper.rb' + # Offense count: 1 # Configuration parameters: MinBranchesCount. Style/HashLikeCase: @@ -923,6 +954,26 @@ Style/RedundantInterpolation: - 'lib/tasks/karma.rake' - 'spec/base_spec_helper.rb' +# Offense count: 2 +# This cop supports safe autocorrection (--autocorrect). +Style/RedundantLineContinuation: + Exclude: + - 'app/helpers/shop_helper.rb' + - 'spec/system/admin/configuration/content_spec.rb' + +# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +Style/RedundantParentheses: + Exclude: + - 'app/models/spree/app_configuration.rb' + +# Offense count: 1 +# This cop supports safe autocorrection (--autocorrect). +# Configuration parameters: AllowMultipleReturnValues. +Style/RedundantReturn: + Exclude: + - 'app/models/spree/product.rb' + # Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. From fcb540a89fc1b956e01e6eecada6c7ff2a83a6cc Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 18 Dec 2023 15:51:50 +1100 Subject: [PATCH 046/219] Improve readability by limiting text width --- app/webpacker/css/admin/connected_apps.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/webpacker/css/admin/connected_apps.scss b/app/webpacker/css/admin/connected_apps.scss index efcf8d16f3..c2cb2c9421 100644 --- a/app/webpacker/css/admin/connected_apps.scss +++ b/app/webpacker/css/admin/connected_apps.scss @@ -1,3 +1,7 @@ +#connected_apps_panel { + max-width: 615px; +} + .connected-app__head { display: flex; justify-content: space-between; From efee68007ded50e279e854aa8c7b02cc25813909 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 18 Dec 2023 16:02:11 +1100 Subject: [PATCH 047/219] Adjust header colour in new layout --- app/webpacker/css/admin_v3/globals/variables.scss | 2 +- app/webpacker/css/admin_v3/shared/layout.scss | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/webpacker/css/admin_v3/globals/variables.scss b/app/webpacker/css/admin_v3/globals/variables.scss index e41f2a9597..2a6dd0c35f 100644 --- a/app/webpacker/css/admin_v3/globals/variables.scss +++ b/app/webpacker/css/admin_v3/globals/variables.scss @@ -12,7 +12,7 @@ $base-font-family: "Open Sans", "Helvetica Neue", "Helvetica", Helvetica, Arial, // Body base colors $color-body-bg: $white !default; $color-body-text: $near-black !default; -$color-headers: $dark-blue !default; +$color-headers: $near-black !default; $color-link: $teal !default; $color-link-hover: $orient !default; $color-link-active: $dark-blue !default; diff --git a/app/webpacker/css/admin_v3/shared/layout.scss b/app/webpacker/css/admin_v3/shared/layout.scss index addd363521..794e51f907 100644 --- a/app/webpacker/css/admin_v3/shared/layout.scss +++ b/app/webpacker/css/admin_v3/shared/layout.scss @@ -11,10 +11,6 @@ padding: 15px 0; margin-top: 25px; - h1 { - color: $near-black; - } - .ofn-drop-down { border: 0; background-color: $spree-blue; From b33910d5b4791d1f4ceb99977f7a4e019fa8131c Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Dec 2023 14:45:08 +1100 Subject: [PATCH 048/219] Disconnect Connected App as enterprise user The app has to provide a webhook URL to be notified when the app is disconnected. Once we have better token management, we would have a unique token per app and could revoke it. But for now it's just a request to disconnect the app. --- app/reflexes/admin/connected_app_reflex.rb | 41 +++++++++++++++---- .../form/_connected_apps.html.haml | 6 ++- config/locales/en.yml | 3 +- ...ed.yml => can_be_enabled_and_disabled.yml} | 0 .../admin/enterprises/connected_apps_spec.rb | 8 +++- 5 files changed, 48 insertions(+), 10 deletions(-) rename spec/fixtures/vcr_cassettes/Connected_Apps/{can_be_enabled.yml => can_be_enabled_and_disabled.yml} (100%) diff --git a/app/reflexes/admin/connected_app_reflex.rb b/app/reflexes/admin/connected_app_reflex.rb index 8bfb83d562..ecfb974d96 100644 --- a/app/reflexes/admin/connected_app_reflex.rb +++ b/app/reflexes/admin/connected_app_reflex.rb @@ -3,10 +3,43 @@ module Admin class ConnectedAppReflex < ApplicationReflex def create - enterprise = Enterprise.find(element.dataset.enterprise_id) authorize! :admin, enterprise + app = ConnectedApp.create!(enterprise_id: enterprise.id) + # Avoid race condition by sending before enqueuing job: + broadcast_partial + + ConnectAppJob.perform_later( + app, current_user.spree_api_key, + channel: SessionChannel.for_request(request), + ) + morph :nothing + end + + def destroy + authorize! :admin, enterprise + + app = enterprise.connected_apps.first + app.destroy + + broadcast_partial + + WebhookDeliveryJob.perform_later( + app.data["destroy"], + "disconnect-app", + nil + ) + morph :nothing + end + + private + + def enterprise + @enterprise ||= Enterprise.find(element.dataset.enterprise_id) + end + + def broadcast_partial selector = "#edit_enterprise_#{enterprise.id} #connected-app-discover-regen" html = ApplicationController.render( partial: "admin/enterprises/form/connected_apps", @@ -15,12 +48,6 @@ module Admin # Avoid race condition by sending before enqueuing job: cable_ready.morph(selector:, html:).broadcast - - ConnectAppJob.perform_later( - app, current_user.spree_api_key, - channel: SessionChannel.for_request(request), - ) - morph :nothing end end end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index ae816b9999..9559d72bd9 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -7,7 +7,11 @@ %div - if enterprise.connected_apps.empty? %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: enterprise.id} } - = t ".action" + = t ".enable" + - else + %button{ data: {reflex: "click->Admin::ConnectedApp#destroy", enterprise_id: enterprise.id} } + = t ".disable" + .connected-app__connection - if enterprise.connected_apps.present? .connected-app__note diff --git a/config/locales/en.yml b/config/locales/en.yml index b9df0ba1f9..3adaab685c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1283,7 +1283,8 @@ en: legend: "Connected apps" title: "Discover Regenerative" tagline: "Allow website to publish your enterprise information." - action: "Share data" + enable: "Share data" + disable: "Disconnect" saving_changes: "Saving changes" note: | In order for this enterprise to be published, you need to include diff --git a/spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml b/spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled_and_disabled.yml similarity index 100% rename from spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled.yml rename to spec/fixtures/vcr_cassettes/Connected_Apps/can_be_enabled_and_disabled.yml diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index b10ef466cb..1885d2959b 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -28,7 +28,7 @@ describe "Connected Apps", feature: :connected_apps, vcr: true do expect(page).to have_content "CONNECTED APPS" end - it "can be enabled" do + it "can be enabled and disabled" do visit edit_admin_enterprise_path(enterprise) scroll_to :bottom @@ -43,5 +43,11 @@ describe "Connected Apps", feature: :connected_apps, vcr: true do expect(page).to_not have_content "Saving changes" expect(page).to have_content "include regenerative details" expect(page).to have_link "Update details" + + click_button "Disconnect" + expect(page).to have_button "Share data" + expect(page).to_not have_button "Disconnect" + expect(page).to_not have_content "include regenerative details" + expect(page).to_not have_link "Update details" end end From 67ffb5526e0a10c25f1a262d277250517688570f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Dec 2023 15:09:35 +1100 Subject: [PATCH 049/219] Display loading status in action button --- app/models/connected_app.rb | 3 +++ .../form/_connected_apps.html.haml | 23 +++++++++---------- config/locales/en.yml | 2 +- .../admin/enterprises/connected_apps_spec.rb | 4 ++-- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/models/connected_app.rb b/app/models/connected_app.rb index 0553bbffa2..3edc7c4147 100644 --- a/app/models/connected_app.rb +++ b/app/models/connected_app.rb @@ -5,4 +5,7 @@ # Here we store keys and links to access the app. class ConnectedApp < ApplicationRecord belongs_to :enterprise + + scope :connecting, -> { where(data: nil) } + scope :ready, -> { where.not(data: nil) } end diff --git a/app/views/admin/enterprises/form/_connected_apps.html.haml b/app/views/admin/enterprises/form/_connected_apps.html.haml index 9559d72bd9..c60a7da1a1 100644 --- a/app/views/admin/enterprises/form/_connected_apps.html.haml +++ b/app/views/admin/enterprises/form/_connected_apps.html.haml @@ -8,24 +8,23 @@ - if enterprise.connected_apps.empty? %button{ data: {reflex: "click->Admin::ConnectedApp#create", enterprise_id: enterprise.id} } = t ".enable" + - elsif enterprise.connected_apps.connecting.present? + %button{ disabled: true } + %i.spinner.fa.fa-spin.fa-circle-o-notch +   + = t ".loading" - else %button{ data: {reflex: "click->Admin::ConnectedApp#destroy", enterprise_id: enterprise.id} } = t ".disable" .connected-app__connection - - if enterprise.connected_apps.present? + - if enterprise.connected_apps.ready.present? .connected-app__note - - link = enterprise.connected_apps[0].data&.fetch("link", false) - - if link - %p= t ".note" - %div - %a{ href: link, target: "_blank", class: "button" } - = t ".link_label" - - else - %p - %i.spinner.fa.fa-spin.fa-circle-o-notch -   - = t ".saving_changes" + - link = enterprise.connected_apps[0].data["link"] + %p= t ".note" + %div + %a{ href: link, target: "_blank", class: "button secondary" } + = t ".link_label" %hr .connected-app__description diff --git a/config/locales/en.yml b/config/locales/en.yml index 3adaab685c..005dc5a09d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1285,7 +1285,7 @@ en: tagline: "Allow website to publish your enterprise information." enable: "Share data" disable: "Disconnect" - saving_changes: "Saving changes" + loading: "Loading" note: | In order for this enterprise to be published, you need to include regenerative details and accept the Terms and Conditions. diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index 1885d2959b..a659a70863 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -37,10 +37,10 @@ describe "Connected Apps", feature: :connected_apps, vcr: true do click_button "Share data" expect(page).to_not have_button "Share data" - expect(page).to have_content "Saving changes" + expect(page).to have_button "Loading", disabled: true perform_enqueued_jobs(only: ConnectAppJob) - expect(page).to_not have_content "Saving changes" + expect(page).to_not have_button "Loading", disabled: true expect(page).to have_content "include regenerative details" expect(page).to have_link "Update details" From a9b206f74e1e2b56533d0006a9bdf760de002b84 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Dec 2023 15:18:02 +1100 Subject: [PATCH 050/219] Update Discover Regenerative description --- config/locales/en.yml | 26 +++++++++++-------- .../admin/enterprises/connected_apps_spec.rb | 18 ++++++------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 005dc5a09d..4a1d3d292c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1282,22 +1282,26 @@ en: connected_apps: legend: "Connected apps" title: "Discover Regenerative" - tagline: "Allow website to publish your enterprise information." - enable: "Share data" - disable: "Disconnect" + tagline: "Allow Discover Regenerative to publish your enterprise information." + enable: "Allow data sharing" + disable: "Stop sharing" loading: "Loading" note: | - In order for this enterprise to be published, you need to include - regenerative details and accept the Terms and Conditions. - link_label: "Update details" + Your Open Food Network account is connected to Discover Regenerative. + Add or update information on your Discover Regenerative listing here. + link_label: "Manage listing" description_html: |

- Discover Regenerative makes it easier for buyers to discover - regenerative produce for their procurement, showcase producers that - are using regenerative farming practices, support connection - between buyers and producers within a trusted network. + Eligible producers can showcase their regenerative credentials, + farming practices and more through a profile listing. + Simplifying how buyers can find regenerative produce and connect + with producers of interest. +

+

+ Learn more about Discover Regenerative +

-

Visit website

actions: edit_profile: Settings properties: Properties diff --git a/spec/system/admin/enterprises/connected_apps_spec.rb b/spec/system/admin/enterprises/connected_apps_spec.rb index a659a70863..2b61f6466f 100644 --- a/spec/system/admin/enterprises/connected_apps_spec.rb +++ b/spec/system/admin/enterprises/connected_apps_spec.rb @@ -35,19 +35,19 @@ describe "Connected Apps", feature: :connected_apps, vcr: true do click_link "Connected apps" expect(page).to have_content "Discover Regenerative" - click_button "Share data" - expect(page).to_not have_button "Share data" + click_button "Allow data sharing" + expect(page).to_not have_button "Allow data sharing" expect(page).to have_button "Loading", disabled: true perform_enqueued_jobs(only: ConnectAppJob) expect(page).to_not have_button "Loading", disabled: true - expect(page).to have_content "include regenerative details" - expect(page).to have_link "Update details" + expect(page).to have_content "account is connected" + expect(page).to have_link "Manage listing" - click_button "Disconnect" - expect(page).to have_button "Share data" - expect(page).to_not have_button "Disconnect" - expect(page).to_not have_content "include regenerative details" - expect(page).to_not have_link "Update details" + click_button "Stop sharing" + expect(page).to have_button "Allow data sharing" + expect(page).to_not have_button "Stop sharing" + expect(page).to_not have_content "account is connected" + expect(page).to_not have_link "Manage listing" end end From eb03235295e5c65c83dadaed217a0a033fa325f7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 20 Dec 2023 16:43:29 +1100 Subject: [PATCH 051/219] Use full product and variant name on DFC API --- .../dfc_provider/app/services/supplied_product_builder.rb | 2 +- .../dfc_provider/spec/services/enterprise_builder_spec.rb | 2 +- .../spec/services/supplied_product_builder_spec.rb | 2 +- swagger/dfc.yaml | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/engines/dfc_provider/app/services/supplied_product_builder.rb b/engines/dfc_provider/app/services/supplied_product_builder.rb index 23be177ee1..2d776eafdb 100644 --- a/engines/dfc_provider/app/services/supplied_product_builder.rb +++ b/engines/dfc_provider/app/services/supplied_product_builder.rb @@ -9,7 +9,7 @@ class SuppliedProductBuilder < DfcBuilder DfcProvider::SuppliedProduct.new( id, - name: variant.name_to_display, + name: variant.product_and_full_name, description: variant.description, productType: product_type, quantity: QuantitativeValueBuilder.quantity(variant), diff --git a/engines/dfc_provider/spec/services/enterprise_builder_spec.rb b/engines/dfc_provider/spec/services/enterprise_builder_spec.rb index c1d4bf94a8..8e24ed4fd1 100644 --- a/engines/dfc_provider/spec/services/enterprise_builder_spec.rb +++ b/engines/dfc_provider/spec/services/enterprise_builder_spec.rb @@ -41,7 +41,7 @@ describe EnterpriseBuilder do expect(variant).to be_persisted expect(result.suppliedProducts.count).to eq 1 - expect(result.suppliedProducts[0].name).to eq "Apple" + expect(result.suppliedProducts[0].name).to eq "Apple - 1g" end it "assigns an address" do diff --git a/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb b/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb index 464cc73036..51563b23e7 100644 --- a/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb +++ b/engines/dfc_provider/spec/services/supplied_product_builder_spec.rb @@ -38,7 +38,7 @@ describe SuppliedProductBuilder do variant.display_name = "Granny Smith" product = builder.supplied_product(variant) - expect(product.name).to eq "Granny Smith" + expect(product.name).to eq "Apple - Granny Smith" end it "assigns a product type" do diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index 5ef9c9e319..e128c4d92e 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -108,7 +108,7 @@ paths: dfc-b:offeredThrough: http://test.host/api/dfc/enterprises/10000/offers/10001 - "@id": http://test.host/api/dfc/enterprises/10000/supplied_products/10001 "@type": dfc-b:SuppliedProduct - dfc-b:name: Apple + dfc-b:name: Apple - 1g dfc-b:description: Red dfc-b:hasType: dfc-pt:non-local-vegetable dfc-b:hasQuantity: @@ -339,7 +339,7 @@ paths: dfc-b:hasCountry: Australia - "@id": http://test.host/api/dfc/enterprises/10000/supplied_products/10001 "@type": dfc-b:SuppliedProduct - dfc-b:name: Apple + dfc-b:name: Apple - 1g dfc-b:description: Round dfc-b:hasType: dfc-pt:non-local-vegetable dfc-b:hasQuantity: @@ -444,7 +444,7 @@ paths: "@context": https://www.datafoodconsortium.org "@id": http://test.host/api/dfc/enterprises/10000/supplied_products/10001 "@type": dfc-b:SuppliedProduct - dfc-b:name: Apple + dfc-b:name: Apple - 6g dfc-b:description: A delicious heritage apple dfc-b:hasType: dfc-pt:non-local-vegetable dfc-b:hasQuantity: @@ -508,7 +508,7 @@ paths: "@context": https://www.datafoodconsortium.org "@id": http://test.host/api/dfc/enterprises/10000/supplied_products/10001 "@type": dfc-b:SuppliedProduct - dfc-b:name: Pesto + dfc-b:name: Pesto - 1g dfc-b:description: Basil Pesto dfc-b:hasType: dfc-pt:non-local-vegetable dfc-b:hasQuantity: From 39de2f704f5bd99f4a01f3fc39527a624d4cb93b Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 28 Nov 2023 15:20:44 +0500 Subject: [PATCH 052/219] #11068, add delete dropdown option # Conflicts: # app/views/admin/products_v3/components/_product_actions.html.haml --- app/controllers/spree/admin/products_controller.rb | 2 ++ .../products_v3/components/_product_actions.html.haml | 9 +++++++++ config/locales/en.yml | 1 + 3 files changed, 12 insertions(+) create mode 100644 app/views/admin/products_v3/components/_product_actions.html.haml diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb index e153faff38..588b3bb186 100644 --- a/app/controllers/spree/admin/products_controller.rb +++ b/app/controllers/spree/admin/products_controller.rb @@ -88,6 +88,8 @@ module Spree redirect_to spree.admin_products_url end + def destroy; end + def group_buy_options @url_filters = ::ProductFilters.new.extract(request.query_parameters) end diff --git a/app/views/admin/products_v3/components/_product_actions.html.haml b/app/views/admin/products_v3/components/_product_actions.html.haml new file mode 100644 index 0000000000..ae114e2b66 --- /dev/null +++ b/app/views/admin/products_v3/components/_product_actions.html.haml @@ -0,0 +1,9 @@ +.vertical-ellipsis-menu{ "data-controller": "vertical-ellipsis-menu" } + %i.fa.fa-ellipsis-v{ "data-action": "click->vertical-ellipsis-menu#toggle" } + .vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu-target": "content" } + - if defined?(variant) + = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant), class: "vertical-ellipsis-menu-content-item" + - else + = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" + = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" + = link_to t('admin.products_page.actions.delete'), admin_product_path(product), method: :delete, class: "vertical-ellipsis-menu-content-item" diff --git a/config/locales/en.yml b/config/locales/en.yml index b9df0ba1f9..4120e755bc 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -580,6 +580,7 @@ en: actions: edit: Edit clone: Clone + delete: Delete adjustments: skipped_changing_canceled_order: "You can't change a cancelled order." # Common properties / models From 0ff1067bc676b9eea2f054463c8091b5dec654d9 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 00:48:49 +0500 Subject: [PATCH 053/219] #11068, add delete option for product variant --- app/controllers/spree/admin/variants_controller.rb | 2 +- .../admin/products_v3/components/_product_actions.html.haml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/controllers/spree/admin/variants_controller.rb b/app/controllers/spree/admin/variants_controller.rb index 47505f7b1d..b481566d29 100644 --- a/app/controllers/spree/admin/variants_controller.rb +++ b/app/controllers/spree/admin/variants_controller.rb @@ -67,7 +67,7 @@ module Spree @variant = Spree::Variant.find(params[:id]) flash[:success] = delete_variant - redirect_to spree.admin_product_variants_url(params[:product_id], @url_filters) + redirect_to spree.admin_products_url end protected diff --git a/app/views/admin/products_v3/components/_product_actions.html.haml b/app/views/admin/products_v3/components/_product_actions.html.haml index ae114e2b66..c905d0d911 100644 --- a/app/views/admin/products_v3/components/_product_actions.html.haml +++ b/app/views/admin/products_v3/components/_product_actions.html.haml @@ -3,6 +3,8 @@ .vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu-target": "content" } - if defined?(variant) = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant), class: "vertical-ellipsis-menu-content-item" + - if product.variants.size > 1 + = link_to t('admin.products_page.actions.delete'), admin_product_variant_path(product, variant), method: :delete, class: "vertical-ellipsis-menu-content-item" - else = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" From 5d490ded1581f1bb687fd1067eb7e61b7db92902 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 15:00:48 +0500 Subject: [PATCH 054/219] #11068, update ConfirmModalComponent to take more options --- app/components/confirm_modal_component.rb | 16 ++++++++++++++-- .../confirm_modal_component.html.haml | 4 ++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index ccd0c67797..39ed7f90e0 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -1,14 +1,26 @@ # frozen_string_literal: true class ConfirmModalComponent < ModalComponent - def initialize(id:, confirm_actions: nil, reflex: nil, controller: nil, message: nil, - confirm_reflexes: nil) + def initialize( + id:, + reflex: nil, + controller: nil, + message: nil, + confirm_actions: nil, + confirm_reflexes: nil, + confirm_button_color: :primary, + confirm_button_text: I18n.t('js.admin.modals.confirm'), + cancel_button_text: I18n.t('js.admin.modals.cancel') + ) super(id:, close_button: true) @confirm_actions = confirm_actions @reflex = reflex @confirm_reflexes = confirm_reflexes @controller = controller @message = message + @confirm_button_color = confirm_button_color + @confirm_button_text = confirm_button_text + @cancel_button_text = cancel_button_text end private diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 1b3e1ff217..5049e9e52c 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -6,5 +6,5 @@ = render @message if @message .modal-actions - %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: t('js.admin.modals.cancel'), "data-action": "click->modal#close" } - %input{ class: "button icon-plus primary", type: 'button', value: t('js.admin.modals.confirm'), "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } + %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } + %input{ class: "button icon-plus #{@confirm_button_color}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } From 4f764786195c5658b4536684ea649c167b582342 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 16:10:05 +0500 Subject: [PATCH 055/219] #11068, add delete modals --- .../components/_product_actions.html.haml | 16 ++++++++++++++-- app/views/admin/products_v3/index.html.haml | 16 ++++++++++++++++ config/locales/en.yml | 8 ++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/views/admin/products_v3/components/_product_actions.html.haml b/app/views/admin/products_v3/components/_product_actions.html.haml index c905d0d911..12bd9bfc24 100644 --- a/app/views/admin/products_v3/components/_product_actions.html.haml +++ b/app/views/admin/products_v3/components/_product_actions.html.haml @@ -4,8 +4,20 @@ - if defined?(variant) = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant), class: "vertical-ellipsis-menu-content-item" - if product.variants.size > 1 - = link_to t('admin.products_page.actions.delete'), admin_product_variant_path(product, variant), method: :delete, class: "vertical-ellipsis-menu-content-item" + %span{ + "data-controller": "modal-link", + "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_variant", + "class": "vertical-ellipsis-menu-content-item" + } + = t('admin.products_page.actions.delete') - else = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" - = link_to t('admin.products_page.actions.delete'), admin_product_path(product), method: :delete, class: "vertical-ellipsis-menu-content-item" + %span{ + "data-controller": "modal-link", + "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_product", + "class": "vertical-ellipsis-menu-content-item" + } + = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 82a4e5f38e..094cdd6d96 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -17,3 +17,19 @@ .spinner = t('.loading') #products-content + +- delete_product_modal = ConfirmModalComponent.new(id: "delete_product", + confirm_button_text: t('.delete_product_modal.confirmation_text'), + cancel_button_text: t('.delete_product_modal.cancellation_text'), + confirm_button_color: :red) += render delete_product_modal do + .margin-bottom-30 + = t('.delete_product_modal.prompt_html') + +- delete_variant_modal = ConfirmModalComponent.new(id: "delete_variant", + confirm_button_text: t('.delete_variant_modal.confirmation_text'), + cancel_button_text: t('.delete_variant_modal.cancellation_text'), + confirm_button_color: :red) += render delete_variant_modal do + .margin-bottom-30 + = t('.delete_variant_modal.prompt_html') diff --git a/config/locales/en.yml b/config/locales/en.yml index 4120e755bc..22df1141a1 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -816,6 +816,14 @@ en: header: title: Bulk Edit Products loading: Loading your products + delete_product_modal: + prompt_html: "

Delete product


This will permanently remove it from your list." + confirmation_text: "Delete product" + cancellation_text: "Keep product" + delete_variant_modal: + prompt_html: "

Delete variant


This will permanently remove it from your list." + confirmation_text: "Delete variant" + cancellation_text: "Keep variant" sort: pagination: total_html: "%{total} products found for your search criteria. Showing %{from} to %{to}." From bf0943e6559f0b20c839db51fc0912fbb5ab2f82 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 19:33:13 +0500 Subject: [PATCH 056/219] #11068, add ProductDeleter --- app/services/product_deleter.rb | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 app/services/product_deleter.rb diff --git a/app/services/product_deleter.rb b/app/services/product_deleter.rb new file mode 100644 index 0000000000..c78743afdf --- /dev/null +++ b/app/services/product_deleter.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +# This soft deletes the product +class ProductDeleter + def self.delete(product) + product.destroy + end +end From 2f0965aa6201149569311d45f175971ba1c87069 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 19:38:43 +0500 Subject: [PATCH 057/219] #11068, add product_actions_controller --- app/views/admin/products_v3/index.html.haml | 5 ++++- app/webpacker/controllers/product_actions_controller.js | 9 +++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 app/webpacker/controllers/product_actions_controller.js diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 094cdd6d96..4e36663acf 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -21,7 +21,10 @@ - delete_product_modal = ConfirmModalComponent.new(id: "delete_product", confirm_button_text: t('.delete_product_modal.confirmation_text'), cancel_button_text: t('.delete_product_modal.cancellation_text'), - confirm_button_color: :red) + confirm_button_color: :red, + controller: "product-actions", + confirm_actions: "click->product-actions#delete", + confirm_reflexes: nil) = render delete_product_modal do .margin-bottom-30 = t('.delete_product_modal.prompt_html') diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js new file mode 100644 index 0000000000..2d2523e629 --- /dev/null +++ b/app/webpacker/controllers/product_actions_controller.js @@ -0,0 +1,9 @@ +import ApplicationController from "./application_controller"; + +export default class extends ApplicationController { + static values = {currentId: Number, currentVariantId: Number}; + + delete() { + + } +} From d7f2cbf8820730c18d0fe1d3953ba42ef38a54a2 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 25 Nov 2023 19:44:33 +0500 Subject: [PATCH 058/219] 11068, revert controller changes --- app/controllers/spree/admin/products_controller.rb | 2 -- app/controllers/spree/admin/variants_controller.rb | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/controllers/spree/admin/products_controller.rb b/app/controllers/spree/admin/products_controller.rb index 588b3bb186..e153faff38 100644 --- a/app/controllers/spree/admin/products_controller.rb +++ b/app/controllers/spree/admin/products_controller.rb @@ -88,8 +88,6 @@ module Spree redirect_to spree.admin_products_url end - def destroy; end - def group_buy_options @url_filters = ::ProductFilters.new.extract(request.query_parameters) end diff --git a/app/controllers/spree/admin/variants_controller.rb b/app/controllers/spree/admin/variants_controller.rb index b481566d29..47505f7b1d 100644 --- a/app/controllers/spree/admin/variants_controller.rb +++ b/app/controllers/spree/admin/variants_controller.rb @@ -67,7 +67,7 @@ module Spree @variant = Spree::Variant.find(params[:id]) flash[:success] = delete_variant - redirect_to spree.admin_products_url + redirect_to spree.admin_product_variants_url(params[:product_id], @url_filters) end protected From d1224ea0228e2a52a94a1e9914e607f649c95aa0 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 28 Nov 2023 15:55:30 +0500 Subject: [PATCH 059/219] #11068, resolve conflicts --- .../vertical_ellipsis_menu/component.scss | 3 ++- app/views/admin/products_v3/_table.html.haml | 8 +++++++ .../components/_product_actions.html.haml | 23 ------------------- 3 files changed, 10 insertions(+), 24 deletions(-) delete mode 100644 app/views/admin/products_v3/components/_product_actions.html.haml diff --git a/app/components/vertical_ellipsis_menu/component.scss b/app/components/vertical_ellipsis_menu/component.scss index 03b5cb39d8..7730b384ce 100644 --- a/app/components/vertical_ellipsis_menu/component.scss +++ b/app/components/vertical_ellipsis_menu/component.scss @@ -30,7 +30,8 @@ display: block; } - & > a { + & > a, + p { display: block; padding: 5px 10px; cursor: pointer; diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 0462529857..40938e3ac4 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,6 +70,10 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) + %p{"data-controller": "modal-link", "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_product", "class": "delete" + } + = t('admin.products_page.actions.delete') - product.variants.each_with_index do |variant, variant_index| = form.fields_for("products][#{product_index}][variants_attributes][", variant, variant_index:) do |variant_form| @@ -108,3 +112,7 @@ %td.align-right = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) + %p{"data-controller": "modal-link", "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_variant", "class": "delete" + } + = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/components/_product_actions.html.haml b/app/views/admin/products_v3/components/_product_actions.html.haml deleted file mode 100644 index 12bd9bfc24..0000000000 --- a/app/views/admin/products_v3/components/_product_actions.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -.vertical-ellipsis-menu{ "data-controller": "vertical-ellipsis-menu" } - %i.fa.fa-ellipsis-v{ "data-action": "click->vertical-ellipsis-menu#toggle" } - .vertical-ellipsis-menu-content{ "data-vertical-ellipsis-menu-target": "content" } - - if defined?(variant) - = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant), class: "vertical-ellipsis-menu-content-item" - - if product.variants.size > 1 - %span{ - "data-controller": "modal-link", - "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_variant", - "class": "vertical-ellipsis-menu-content-item" - } - = t('admin.products_page.actions.delete') - - else - = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" - = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product), class: "vertical-ellipsis-menu-content-item" - %span{ - "data-controller": "modal-link", - "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_product", - "class": "vertical-ellipsis-menu-content-item" - } - = t('admin.products_page.actions.delete') From 0efd78b979b06575d3b3111b0a0f07e805f3dab3 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 3 Dec 2023 23:01:56 +0500 Subject: [PATCH 060/219] #11068: update confirm_modal_component to accept controller values --- app/components/confirm_modal_component.rb | 18 +++++++++++++++++- .../confirm_modal_component.html.haml | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 39ed7f90e0..32cdebe5ba 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class ConfirmModalComponent < ModalComponent + # @param controller_data_values [Array(Hash)] format: {: value1, : value2} def initialize( id:, reflex: nil, @@ -10,7 +11,8 @@ class ConfirmModalComponent < ModalComponent confirm_reflexes: nil, confirm_button_color: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), - cancel_button_text: I18n.t('js.admin.modals.cancel') + cancel_button_text: I18n.t('js.admin.modals.cancel'), + controller_data_values: {} ) super(id:, close_button: true) @confirm_actions = confirm_actions @@ -21,6 +23,7 @@ class ConfirmModalComponent < ModalComponent @confirm_button_color = confirm_button_color @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text + @controller_data_values = transform_values_for_controller(controller_data_values) end private @@ -28,4 +31,17 @@ class ConfirmModalComponent < ModalComponent def close_button_class "secondary" end + + def modal_attrs + @modal_attrs ||= { + id: @id, + "data-controller": "modal #{@controller}", + "data-action": "keyup@document->modal#closeIfEscapeKey", + "data-#{@controller}-reflex-value": @reflex + }.merge(@controller_data_values) + end + + def transform_values_for_controller(values) + values.transform_keys { |value_name| "data-#{@controller}-#{value_name}-value" } + end end diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 5049e9e52c..3ab7e1b281 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -1,4 +1,4 @@ -%div{ id: @id, "data-controller": "modal #{@controller}", "data-action": "keyup@document->modal#closeIfEscapeKey", "data-#{@controller}-reflex-value": @reflex } +%div{ **modal_attrs } .reveal-modal-bg.fade{ "data-modal-target": "background", "data-action": "click->modal#close" } .reveal-modal.fade.tiny.help-modal{ "data-modal-target": "modal" } = content From c202324cb0fb17712a3c1a4836fbc233a3f36a57 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 3 Dec 2023 23:04:34 +0500 Subject: [PATCH 061/219] #11068: add product_v3 delete_modals partial --- .../admin/products_v3/_delete_modals.html.haml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 app/views/admin/products_v3/_delete_modals.html.haml diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml new file mode 100644 index 0000000000..5053dee80e --- /dev/null +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -0,0 +1,14 @@ +- object_ids.each do |object_id| + - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", + confirm_button_text: t(".delete_#{object_type}_modal.confirmation_text"), + cancel_button_text: t(".delete_#{object_type}_modal.cancellation_text"), + confirm_button_color: :red, + controller: "product-actions", + confirm_actions: "click->product-actions#delete#{object_type.titleize}", + confirm_reflexes: nil, + controller_data_values: {"current-id": object_id}, + ) + = render delete_modal do + .margin-bottom-30 + = t(".delete_#{object_type}_modal.prompt_html") + .margin-bottom-30 From 5d90993f2146013f147e164ff69edd049da04c20 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 3 Dec 2023 23:07:53 +0500 Subject: [PATCH 062/219] 11068, apply delete_modals partial --- app/reflexes/products_reflex.rb | 25 +++++++++++++++++++++ app/views/admin/products_v3/index.html.haml | 21 ++--------------- config/locales/en.yml | 1 + 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 4154a7b61f..fb25c955de 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -77,6 +77,9 @@ class ProductsReflex < ApplicationReflex category_options: categories, category_id: @category_id }) ).broadcast + render_product_delete_modals + render_variant_delete_modals + cable_ready.replace_state( url: current_url, ).broadcast_later @@ -84,6 +87,28 @@ class ProductsReflex < ApplicationReflex morph :nothing end + def render_product_delete_modals + product_ids = @products.pluck(:id) + cable_ready.replace( + selector: "#products-delete-action-modals", + html: render( + partial: "admin/products_v3/delete_modals", + locals: { object_ids: product_ids, object_type: 'product' } + ) + ).broadcast + end + + def render_variant_delete_modals + variant_ids = @products.joins(:variants).pluck('spree_variants.id') + cable_ready.replace( + selector: "#variant-delete-action-modals", + html: render( + partial: "admin/products_v3/delete_modals", + locals: { object_ids: variant_ids, object_type: 'variant' } + ) + ).broadcast + end + def render_products_form_with_flash locals = { products: @products } locals[:error_counts] = @error_counts if @error_counts.present? diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 4e36663acf..2031eadf41 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -17,22 +17,5 @@ .spinner = t('.loading') #products-content - -- delete_product_modal = ConfirmModalComponent.new(id: "delete_product", - confirm_button_text: t('.delete_product_modal.confirmation_text'), - cancel_button_text: t('.delete_product_modal.cancellation_text'), - confirm_button_color: :red, - controller: "product-actions", - confirm_actions: "click->product-actions#delete", - confirm_reflexes: nil) -= render delete_product_modal do - .margin-bottom-30 - = t('.delete_product_modal.prompt_html') - -- delete_variant_modal = ConfirmModalComponent.new(id: "delete_variant", - confirm_button_text: t('.delete_variant_modal.confirmation_text'), - cancel_button_text: t('.delete_variant_modal.cancellation_text'), - confirm_button_color: :red) -= render delete_variant_modal do - .margin-bottom-30 - = t('.delete_variant_modal.prompt_html') + #products-delete-action-modals + #variant-delete-action-modals diff --git a/config/locales/en.yml b/config/locales/en.yml index 22df1141a1..d6ffd0c001 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -816,6 +816,7 @@ en: header: title: Bulk Edit Products loading: Loading your products + delete_modals: delete_product_modal: prompt_html: "

Delete product


This will permanently remove it from your list." confirmation_text: "Delete product" From eca83eeec3c7b93e7aacab4c1725809d19138316 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 3 Dec 2023 23:08:48 +0500 Subject: [PATCH 063/219] #11068, update delete links for uniq modal ids --- app/views/admin/products_v3/_table.html.haml | 13 ++++++------- .../controllers/product_actions_controller.js | 8 ++++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 40938e3ac4..5066b023d2 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,9 +70,8 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) - %p{"data-controller": "modal-link", "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_product", "class": "delete" - } + %p{ "data-controller": "modal-link", "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_product_#{product.id}", "class": "delete" } = t('admin.products_page.actions.delete') - product.variants.each_with_index do |variant, variant_index| @@ -112,7 +111,7 @@ %td.align-right = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) - %p{"data-controller": "modal-link", "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_variant", "class": "delete" - } - = t('admin.products_page.actions.delete') + - if product.variants.size > 1 + %p{ "data-controller": "modal-link", "data-action": "click->modal-link#open", + "data-modal-link-target-value": "delete_variant_#{variant.id}", "class": "delete" } + = t('admin.products_page.actions.delete') diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js index 2d2523e629..0d60b6ba15 100644 --- a/app/webpacker/controllers/product_actions_controller.js +++ b/app/webpacker/controllers/product_actions_controller.js @@ -1,9 +1,13 @@ import ApplicationController from "./application_controller"; export default class extends ApplicationController { - static values = {currentId: Number, currentVariantId: Number}; + static values = {currentId: Number}; - delete() { + deleteProduct() { + debugger + } + deleteVariant(){ + debugger } } From 05e7674805f5eb0c2f354e8b5590c2c7d1086e76 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 13 Dec 2023 03:51:23 +0500 Subject: [PATCH 064/219] #11068: add delete variant and product reflexes --- app/reflexes/products_reflex.rb | 18 ++++++++++++++++++ app/services/product_deleter.rb | 6 ++++-- .../products_v3/_delete_modals.html.haml | 4 ++-- .../controllers/products_controller.js | 19 ++++++++++++++++++- 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index fb25c955de..8a6c3a8127 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -46,6 +46,24 @@ class ProductsReflex < ApplicationReflex render_products_form_with_flash end + def delete_product(product_id) + if ProductDeleter.delete(product_id) + puts "Deleted Successfully" + else + puts "Failure" + end + fetch_and_render_products + end + + def delete_variant(variant_id) + if VariantDeleter.new.delete(variant_id) + puts "Deleted Successfully" + else + puts "Failure" + end + fetch_and_render_products + end + private def init_filters_params diff --git a/app/services/product_deleter.rb b/app/services/product_deleter.rb index c78743afdf..5c6ce96fb8 100644 --- a/app/services/product_deleter.rb +++ b/app/services/product_deleter.rb @@ -2,7 +2,9 @@ # This soft deletes the product class ProductDeleter - def self.delete(product) - product.destroy + # @param id [int] ID of the product to be deleted + def self.delete(id) + product = Spree::Product.find_by(id:) + product&.destroy end end diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index 5053dee80e..5a8e9bd69c 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -3,9 +3,9 @@ confirm_button_text: t(".delete_#{object_type}_modal.confirmation_text"), cancel_button_text: t(".delete_#{object_type}_modal.cancellation_text"), confirm_button_color: :red, - controller: "product-actions", - confirm_actions: "click->product-actions#delete#{object_type.titleize}", confirm_reflexes: nil, + controller: "products", + confirm_actions: "click->products#delete#{object_type.titleize}", controller_data_values: {"current-id": object_id}, ) = render delete_modal do diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index c8a1dc6963..27ef661923 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -2,6 +2,7 @@ import ApplicationController from "./application_controller"; export default class extends ApplicationController { static targets = ["loading"]; + static values = {currentId: Number}; connect() { super.connect(); @@ -9,6 +10,15 @@ export default class extends ApplicationController { this.stimulate("Products#fetch"); } + deleteProduct() { + window.dispatchEvent(new Event('modal:close')); + this.stimulate('Products#delete_product', this.currentIdValue) + } + + deleteVariant() { + this.stimulate('Products#delete_variant', this.currentIdValue) + } + beforeReflex() { this.showLoading(); this.scrollToElement(); @@ -35,8 +45,15 @@ export default class extends ApplicationController { }; getLoadingController = () => { + let loadingSpinner = null; + try { + loadingSpinner = this.loadingTarget; // throws missing loading target error + } catch (error) { + loadingSpinner = document.getElementById('loading-spinner'); + } + return (this.loadingController ||= this.application.getControllerForElementAndIdentifier( - this.loadingTarget, + loadingSpinner, "loading" )); }; From d8eace8dff631f2fc4bcb470d7001dbd3b9e98ab Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 13 Dec 2023 03:52:45 +0500 Subject: [PATCH 065/219] #11068: remove product_actions_controller.js --- .../controllers/product_actions_controller.js | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 app/webpacker/controllers/product_actions_controller.js diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js deleted file mode 100644 index 0d60b6ba15..0000000000 --- a/app/webpacker/controllers/product_actions_controller.js +++ /dev/null @@ -1,13 +0,0 @@ -import ApplicationController from "./application_controller"; - -export default class extends ApplicationController { - static values = {currentId: Number}; - - deleteProduct() { - debugger - } - - deleteVariant(){ - debugger - } -} From a71bb217890cffa2d313bebf4940e172ef907d97 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 14 Dec 2023 00:32:40 +0500 Subject: [PATCH 066/219] 11068: update confirm_button_color to confirm_button_class --- app/components/confirm_modal_component.rb | 4 ++-- .../confirm_modal_component/confirm_modal_component.html.haml | 2 +- app/views/admin/products_v3/_delete_modals.html.haml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 32cdebe5ba..2aafd0bb37 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -9,7 +9,7 @@ class ConfirmModalComponent < ModalComponent message: nil, confirm_actions: nil, confirm_reflexes: nil, - confirm_button_color: :primary, + confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), controller_data_values: {} @@ -20,7 +20,7 @@ class ConfirmModalComponent < ModalComponent @confirm_reflexes = confirm_reflexes @controller = controller @message = message - @confirm_button_color = confirm_button_color + @confirm_button_class = confirm_button_class @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text @controller_data_values = transform_values_for_controller(controller_data_values) diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 3ab7e1b281..7d7b5cd77a 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -7,4 +7,4 @@ .modal-actions %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } - %input{ class: "button icon-plus #{@confirm_button_color}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } + %input{ class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index 5a8e9bd69c..d2091f792b 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -2,8 +2,8 @@ - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", confirm_button_text: t(".delete_#{object_type}_modal.confirmation_text"), cancel_button_text: t(".delete_#{object_type}_modal.cancellation_text"), - confirm_button_color: :red, confirm_reflexes: nil, + confirm_button_class: :red, controller: "products", confirm_actions: "click->products#delete#{object_type.titleize}", controller_data_values: {"current-id": object_id}, From 26d102f66b9e95d6eb9db4e4ea665323b7143966 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 14 Dec 2023 01:20:33 +0500 Subject: [PATCH 067/219] 11068: update product/varaint delete actions --- app/reflexes/products_reflex.rb | 26 ++++++++++++++++--- app/services/product_deleter.rb | 10 ------- .../controllers/products_controller.js | 1 + 3 files changed, 23 insertions(+), 14 deletions(-) delete mode 100644 app/services/product_deleter.rb diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 8a6c3a8127..ab15b122b8 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -46,21 +46,31 @@ class ProductsReflex < ApplicationReflex render_products_form_with_flash end - def delete_product(product_id) - if ProductDeleter.delete(product_id) + def delete_product(id) + authorize! :delete, Spree::Product + product = product_finder(id).find_product + authorize! :delete, product + + if product.destroy puts "Deleted Successfully" else puts "Failure" end + fetch_and_render_products end - def delete_variant(variant_id) - if VariantDeleter.new.delete(variant_id) + def delete_variant(id) + authorize! :delete, Spree::Variant + variant = variant_scope.find(id) + authorize! :delete, variant + + if VariantDeleter.new.delete(variant) puts "Deleted Successfully" else puts "Failure" end + fetch_and_render_products end @@ -238,4 +248,12 @@ class ProductsReflex < ApplicationReflex params.permit(products: ::PermittedAttributes::Product.attributes) .to_h.with_indifferent_access end + + def product_finder(id) + ProductScopeQuery.new(current_user, {id:}) + end + + def variant_scope + Spree::Variant.active + end end diff --git a/app/services/product_deleter.rb b/app/services/product_deleter.rb deleted file mode 100644 index 5c6ce96fb8..0000000000 --- a/app/services/product_deleter.rb +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -# This soft deletes the product -class ProductDeleter - # @param id [int] ID of the product to be deleted - def self.delete(id) - product = Spree::Product.find_by(id:) - product&.destroy - end -end diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index 27ef661923..e9ba45e46a 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -16,6 +16,7 @@ export default class extends ApplicationController { } deleteVariant() { + window.dispatchEvent(new Event('modal:close')); this.stimulate('Products#delete_variant', this.currentIdValue) } From a321a962a512efec889b47d741489292939e3d1d Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 14 Dec 2023 01:45:39 +0500 Subject: [PATCH 068/219] 11068: separate prompt_html into individual translation --- app/views/admin/products_v3/_delete_modals.html.haml | 11 +++++++---- config/locales/en.yml | 6 ++++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index d2091f792b..815913925a 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -1,7 +1,8 @@ +- base_translation_key = ".delete_#{object_type}_modal" - object_ids.each do |object_id| - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", - confirm_button_text: t(".delete_#{object_type}_modal.confirmation_text"), - cancel_button_text: t(".delete_#{object_type}_modal.cancellation_text"), + confirm_button_text: t("#{base_translation_key}.confirmation_text"), + cancel_button_text: t("#{base_translation_key}.cancellation_text"), confirm_reflexes: nil, confirm_button_class: :red, controller: "products", @@ -9,6 +10,8 @@ controller_data_values: {"current-id": object_id}, ) = render delete_modal do - .margin-bottom-30 - = t(".delete_#{object_type}_modal.prompt_html") + %h2.margin-bottom-20{style:'color: black'} + = t("#{base_translation_key}.heading") + %p + = t("#{base_translation_key}.prompt") .margin-bottom-30 diff --git a/config/locales/en.yml b/config/locales/en.yml index d6ffd0c001..4f2801982c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -818,11 +818,13 @@ en: loading: Loading your products delete_modals: delete_product_modal: - prompt_html: "

Delete product


This will permanently remove it from your list." + heading: "Delete product" + prompt: "This will permanently remove it from your list." confirmation_text: "Delete product" cancellation_text: "Keep product" delete_variant_modal: - prompt_html: "

Delete variant


This will permanently remove it from your list." + heading: "Delete variant" + prompt: "This will permanently remove it from your list." confirmation_text: "Delete variant" cancellation_text: "Keep variant" sort: From 1936adc82fe84d77bda349fdde3e8fde23d73178 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 14 Dec 2023 01:56:30 +0500 Subject: [PATCH 069/219] 11068: fix lint issues --- app/components/confirm_modal_component.rb | 7 ++++--- app/reflexes/products_reflex.rb | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 2aafd0bb37..e519a6c227 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -1,7 +1,8 @@ # frozen_string_literal: true class ConfirmModalComponent < ModalComponent - # @param controller_data_values [Array(Hash)] format: {: value1, : value2} + # @param controller_data_values [Array(Hash)] + # format: {: value1, : value2} def initialize( id:, reflex: nil, @@ -35,8 +36,8 @@ class ConfirmModalComponent < ModalComponent def modal_attrs @modal_attrs ||= { id: @id, - "data-controller": "modal #{@controller}", - "data-action": "keyup@document->modal#closeIfEscapeKey", + 'data-controller': "modal #{@controller}", + 'data-action': "keyup@document->modal#closeIfEscapeKey", "data-#{@controller}-reflex-value": @reflex }.merge(@controller_data_values) end diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index ab15b122b8..9768a43ef9 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -250,7 +250,7 @@ class ProductsReflex < ApplicationReflex end def product_finder(id) - ProductScopeQuery.new(current_user, {id:}) + ProductScopeQuery.new(current_user, { id: }) end def variant_scope From 9cf51f3453178e5346e3efce4d3685aed716583b Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 15 Dec 2023 02:43:39 +0500 Subject: [PATCH 070/219] 11068: add success and failure messages --- app/reflexes/products_reflex.rb | 25 ++++++++++--------- .../admin/products_v3/_content.html.haml | 1 + config/locales/en.yml | 6 +++++ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 9768a43ef9..876a1cf1d1 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -6,20 +6,20 @@ class ProductsReflex < ApplicationReflex before_reflex :init_filters_params, :init_pagination_params def fetch - fetch_and_render_products + fetch_and_render_products_with_flash end def change_per_page @per_page = element.value.to_i @page = 1 - fetch_and_render_products + fetch_and_render_products_with_flash end def filter @page = 1 - fetch_and_render_products + fetch_and_render_products_with_flash end def clear_search @@ -28,7 +28,7 @@ class ProductsReflex < ApplicationReflex @category_id = nil @page = 1 - fetch_and_render_products + fetch_and_render_products_with_flash end def bulk_update @@ -52,12 +52,12 @@ class ProductsReflex < ApplicationReflex authorize! :delete, product if product.destroy - puts "Deleted Successfully" + flash[:success] = I18n.t('admin.products_v3.delete_product.success') else - puts "Failure" + flash[:error] = I18n.t('admin.products_v3.delete_product.error') end - fetch_and_render_products + fetch_and_render_products_with_flash end def delete_variant(id) @@ -66,12 +66,12 @@ class ProductsReflex < ApplicationReflex authorize! :delete, variant if VariantDeleter.new.delete(variant) - puts "Deleted Successfully" + flash[:success] = I18n.t('admin.products_v3.delete_variant.success') else - puts "Failure" + flash[:error] = I18n.t('admin.products_v3.delete_variant.error') end - fetch_and_render_products + fetch_and_render_products_with_flash end private @@ -91,7 +91,7 @@ class ProductsReflex < ApplicationReflex @per_page = element.dataset.perpage || params[:_per_page] || 15 end - def fetch_and_render_products + def fetch_and_render_products_with_flash fetch_products render_products end @@ -102,7 +102,8 @@ class ProductsReflex < ApplicationReflex html: render(partial: "admin/products_v3/content", locals: { products: @products, pagy: @pagy, search_term: @search_term, producer_options: producers, producer_id: @producer_id, - category_options: categories, category_id: @category_id }) + category_options: categories, category_id: @category_id, + flashes: flash }) ).broadcast render_product_delete_modals diff --git a/app/views/admin/products_v3/_content.html.haml b/app/views/admin/products_v3/_content.html.haml index 0cda71ff9a..b805747b71 100644 --- a/app/views/admin/products_v3/_content.html.haml +++ b/app/views/admin/products_v3/_content.html.haml @@ -1,6 +1,7 @@ #products-content .container .sixteen.columns + = render partial: 'admin/shared/flashes', locals: { flashes: } if defined? flashes = render partial: 'filters', locals: { search_term: search_term, producer_id: producer_id, producer_options: producer_options, diff --git a/config/locales/en.yml b/config/locales/en.yml index 4f2801982c..d5fde0c609 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -865,6 +865,12 @@ en: reset: Discard changes bulk_update: success: Changes saved + delete_product: + success: Successfully deleted the product + error: Unable to delete the product + delete_variant: + success: Successfully deleted the variant + error: Unable to delete the variant product_import: title: Product Import file_not_found: File not found or could not be opened From f44476b9afb9638268670694f9a0e1549214db70 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 16 Dec 2023 21:06:38 +0500 Subject: [PATCH 071/219] 11068: code refactoring - Make use of reflexes when deleting the product and variant - Add reflex dataset param to confirm_modal_component --- app/components/confirm_modal_component.rb | 24 +++++++++-------- .../confirm_modal_component.html.haml | 4 +-- app/reflexes/products_reflex.rb | 12 ++++++--- .../products_v3/_delete_modals.html.haml | 6 ++--- app/views/admin/products_v3/index.html.haml | 2 +- .../controllers/products_controller.js | 27 +++++-------------- 6 files changed, 34 insertions(+), 41 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index e519a6c227..be1653cc6f 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -13,7 +13,7 @@ class ConfirmModalComponent < ModalComponent confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), - controller_data_values: {} + confirm_reflex_data: {} ) super(id:, close_button: true) @confirm_actions = confirm_actions @@ -24,7 +24,7 @@ class ConfirmModalComponent < ModalComponent @confirm_button_class = confirm_button_class @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text - @controller_data_values = transform_values_for_controller(controller_data_values) + @confirm_reflex_data = transform_values_for_dataset(confirm_reflex_data) end private @@ -33,16 +33,18 @@ class ConfirmModalComponent < ModalComponent "secondary" end - def modal_attrs - @modal_attrs ||= { - id: @id, - 'data-controller': "modal #{@controller}", - 'data-action': "keyup@document->modal#closeIfEscapeKey", - "data-#{@controller}-reflex-value": @reflex - }.merge(@controller_data_values) + def confirm_button_attrs + @confirm_button_attrs ||= { + class: "button icon-plus #{@confirm_button_class}", + type: 'button', + value: @confirm_button_text, + 'data-action': @confirm_actions, + 'data-reflex': @confirm_reflexes, + id: 'confirmModalButton' + }.merge(@confirm_reflex_data) end - def transform_values_for_controller(values) - values.transform_keys { |value_name| "data-#{@controller}-#{value_name}-value" } + def transform_values_for_dataset(values) + values.transform_keys { |value_name| "data-#{value_name}" } end end diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 7d7b5cd77a..6174da3174 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -1,4 +1,4 @@ -%div{ **modal_attrs } +%div{ id: @id, "data-controller": "modal #{@controller}", "data-action": "keyup@document->modal#closeIfEscapeKey", "data-#{@controller}-reflex-value": @reflex } .reveal-modal-bg.fade{ "data-modal-target": "background", "data-action": "click->modal#close" } .reveal-modal.fade.tiny.help-modal{ "data-modal-target": "modal" } = content @@ -7,4 +7,4 @@ .modal-actions %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } - %input{ class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } + %input{ **confirm_button_attrs } diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 876a1cf1d1..095aa5ba88 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -46,7 +46,8 @@ class ProductsReflex < ApplicationReflex render_products_form_with_flash end - def delete_product(id) + def delete_product + id = current_id_from_element(element) authorize! :delete, Spree::Product product = product_finder(id).find_product authorize! :delete, product @@ -60,7 +61,8 @@ class ProductsReflex < ApplicationReflex fetch_and_render_products_with_flash end - def delete_variant(id) + def delete_variant + id = current_id_from_element(element) authorize! :delete, Spree::Variant variant = variant_scope.find(id) authorize! :delete, variant @@ -119,7 +121,7 @@ class ProductsReflex < ApplicationReflex def render_product_delete_modals product_ids = @products.pluck(:id) cable_ready.replace( - selector: "#products-delete-action-modals", + selector: "#product-delete-action-modals", html: render( partial: "admin/products_v3/delete_modals", locals: { object_ids: product_ids, object_type: 'product' } @@ -257,4 +259,8 @@ class ProductsReflex < ApplicationReflex def variant_scope Spree::Variant.active end + + def current_id_from_element(element) + element.dataset.current_id + end end diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index 815913925a..ff4c89e3f1 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -3,11 +3,9 @@ - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", confirm_button_text: t("#{base_translation_key}.confirmation_text"), cancel_button_text: t("#{base_translation_key}.cancellation_text"), - confirm_reflexes: nil, + confirm_reflexes: "click->products#delete_#{object_type}", confirm_button_class: :red, - controller: "products", - confirm_actions: "click->products#delete#{object_type.titleize}", - controller_data_values: {"current-id": object_id}, + confirm_reflex_data: {"current-id": object_id}, ) = render delete_modal do %h2.margin-bottom-20{style:'color: black'} diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 2031eadf41..98a2eb6e1a 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -17,5 +17,5 @@ .spinner = t('.loading') #products-content - #products-delete-action-modals + #product-delete-action-modals #variant-delete-action-modals diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index e9ba45e46a..d4ba466373 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -2,7 +2,7 @@ import ApplicationController from "./application_controller"; export default class extends ApplicationController { static targets = ["loading"]; - static values = {currentId: Number}; + static values = { currentId: Number }; connect() { super.connect(); @@ -10,17 +10,11 @@ export default class extends ApplicationController { this.stimulate("Products#fetch"); } - deleteProduct() { - window.dispatchEvent(new Event('modal:close')); - this.stimulate('Products#delete_product', this.currentIdValue) - } - - deleteVariant() { - window.dispatchEvent(new Event('modal:close')); - this.stimulate('Products#delete_variant', this.currentIdValue) - } - - beforeReflex() { + beforeReflex(element) { + // To prevent the double click on the confirm modal's confirmation button + if (element.id === "confirmModalButton") { + window.dispatchEvent(new Event("modal:close")); + } this.showLoading(); this.scrollToElement(); } @@ -46,15 +40,8 @@ export default class extends ApplicationController { }; getLoadingController = () => { - let loadingSpinner = null; - try { - loadingSpinner = this.loadingTarget; // throws missing loading target error - } catch (error) { - loadingSpinner = document.getElementById('loading-spinner'); - } - return (this.loadingController ||= this.application.getControllerForElementAndIdentifier( - loadingSpinner, + this.loadingTarget, "loading" )); }; From 9c321ef9c806d1aadbe69f97ce8ccf055fa29a3d Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 16 Dec 2023 21:24:48 +0500 Subject: [PATCH 072/219] 11068: update comment message --- app/components/confirm_modal_component.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index be1653cc6f..b71b2634e3 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class ConfirmModalComponent < ModalComponent - # @param controller_data_values [Array(Hash)] + # @param confirm_reflex_data [Array(Hash)] # format: {: value1, : value2} def initialize( id:, From d767529e117a4865ae903533f47113cccb582ec4 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 16 Dec 2023 21:57:48 +0500 Subject: [PATCH 073/219] 11068: add divs to contain modals --- .../products_v3/_delete_modals.html.haml | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index ff4c89e3f1..07938e5cde 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -1,15 +1,17 @@ -- base_translation_key = ".delete_#{object_type}_modal" -- object_ids.each do |object_id| - - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", - confirm_button_text: t("#{base_translation_key}.confirmation_text"), - cancel_button_text: t("#{base_translation_key}.cancellation_text"), - confirm_reflexes: "click->products#delete_#{object_type}", - confirm_button_class: :red, - confirm_reflex_data: {"current-id": object_id}, - ) - = render delete_modal do - %h2.margin-bottom-20{style:'color: black'} - = t("#{base_translation_key}.heading") - %p - = t("#{base_translation_key}.prompt") - .margin-bottom-30 +-# object_type can be 'variant' or 'product' +%div{ id: "#{object_type}-delete-action-modals" } + - base_translation_key = ".delete_#{object_type}_modal" + - object_ids.each do |object_id| + - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", + confirm_button_text: t("#{base_translation_key}.confirmation_text"), + cancel_button_text: t("#{base_translation_key}.cancellation_text"), + confirm_reflexes: "click->products#delete_#{object_type}", + confirm_button_class: :red, + confirm_reflex_data: {"current-id": object_id}, + ) + = render delete_modal do + %h2.margin-bottom-20{style:'color: black'} + = t("#{base_translation_key}.heading") + %p + = t("#{base_translation_key}.prompt") + .margin-bottom-30 From 78f5a8ad30366fc292f8eb52145208a6a62c01b7 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Mon, 18 Dec 2023 01:12:10 +0500 Subject: [PATCH 074/219] 11068: add specs - For system's product delete action --- .../system/admin/products_v3/products_spec.rb | 173 ++++++++++++++++++ 1 file changed, 173 insertions(+) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index c34e40b934..87e8a7bee8 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -410,6 +410,179 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 end end + describe "Deleting Feature" do + let!(:product_a) { create(:simple_product, name: "Apples", sku: "APL-00") } + let(:delete_option_selector) { "p[data-controller='modal-link'].delete" } + let(:product_selector) { row_containing_name("Apples") } + let(:variant_selector) { row_containing_name("Medium box") } + let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } + + before do + visit admin_products_url + end + + describe "Actions columns (delete)" do + it "shows an actions menu with a delete link when clicking on icon for product. " \ + "doesn't show delete link for the single variant" do + within product_selector do + page.find(".vertical-ellipsis-menu").click + expect(page).to have_css(delete_option_selector) + end + page.find("div#content").click # to close the vertical actions menu + + # to select the default variant + within default_variant_selector do + page.find(".vertical-ellipsis-menu").click + expect(page).to_not have_css(delete_option_selector) + end + end + + it "shows an actions menu with a delete link when clicking on icon for variant" \ + "if have multiple" do + create(:variant, + product: product_a, + display_name: "Medium box", + sku: "APL-01", + price: 5.25) + + # to select the default variant + within default_variant_selector do + page.find(".vertical-ellipsis-menu").click + expect(page).to have_css(delete_option_selector) + end + page.find("div#content").click # to close the vertical actions menu + + within variant_selector do + page.find(".vertical-ellipsis-menu").click + expect(page).to have_css(delete_option_selector) + end + end + end + + describe "Delete Action" do + let!(:variant_a1) { + create(:variant, + product: product_a, + display_name: "Medium box", + sku: "APL-01", + price: 5.25) + } + let(:modal_selector) { "div[data-modal-target=modal]" } + let(:dismiss_button_selector) { "button[data-action='click->flash#close']" } + + context "when 'keep product/variant' is selected" do + it 'should not delete the product/variant' do + # Keep Product + within product_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + keep_button_selector = "input[type=button][value='Keep product']" + within modal_selector do + page.find(keep_button_selector).click + end + + expect(page).to_not have_selector(modal_selector) + expect(page).to have_selector(product_selector) + + # Keep Variant + within variant_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + keep_button_selector = "input[type=button][value='Keep variant']" + within modal_selector do + page.find(keep_button_selector).click + end + + expect(page).to_not have_selector(modal_selector) + expect(page).to have_selector(variant_selector) + end + end + + context "when 'delete product/variant' is selected" do + let(:success_flash_message_selector) { "div.flash.success" } + let(:error_flash_message_selector) { "div.flash.error" } + it 'should successfully delete the product/variant' do + # Delete Variant + within variant_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + + delete_button_selector = "input[type=button][value='Delete variant']" + within modal_selector do + page.find(delete_button_selector).click + end + + expect(page).to_not have_selector(modal_selector) + sleep(0.5) # delay for loading spinner to complete + expect(page).to_not have_selector(variant_selector) + within success_flash_message_selector do + expect(page).to have_content("Successfully deleted the variant") + page.find(dismiss_button_selector).click + end + + # Delete product + within product_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + delete_button_selector = "input[type=button][value='Delete product']" + within modal_selector do + page.find(delete_button_selector).click + end + expect(page).to_not have_selector(modal_selector) + sleep(0.5) # delay for loading spinner to complete + expect(page).to_not have_selector(product_selector) + within success_flash_message_selector do + expect(page).to have_content("Successfully deleted the product") + end + end + + it 'should be failed to delete the product/variant' do + allow_any_instance_of(Spree::Product).to receive(:destroy).and_return(false) + allow_any_instance_of(Spree::Variant).to receive(:destroy).and_return(false) + + # Delete Variant + within variant_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + + delete_button_selector = "input[type=button][value='Delete variant']" + within modal_selector do + page.find(delete_button_selector).click + end + + expect(page).to_not have_selector(modal_selector) + sleep(0.5) # delay for loading spinner to complete + expect(page).to have_selector(variant_selector) + within error_flash_message_selector do + expect(page).to have_content("Unable to delete the variant") + page.find(dismiss_button_selector).click + end + + # Delete product + within product_selector do + page.find(".vertical-ellipsis-menu").click + page.find(delete_option_selector).click + end + delete_button_selector = "input[type=button][value='Delete product']" + within modal_selector do + page.find(delete_button_selector).click + end + expect(page).to_not have_selector(modal_selector) + sleep(0.5) # delay for loading spinner to complete + expect(page).to have_selector(product_selector) + within error_flash_message_selector do + expect(page).to have_content("Unable to delete the product") + end + end + end + end + end + def create_products(amount) amount.times do |i| create(:simple_product, name: "product #{i}") From 0290697fb7cf40c13aad4920b66de775175a8459 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 20 Dec 2023 01:11:37 +0500 Subject: [PATCH 075/219] 11068: add specs - For delete_product - For delete_variant --- spec/reflexes/products_reflex_spec.rb | 74 +++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/spec/reflexes/products_reflex_spec.rb b/spec/reflexes/products_reflex_spec.rb index a79b32b326..fa87b367e4 100644 --- a/spec/reflexes/products_reflex_spec.rb +++ b/spec/reflexes/products_reflex_spec.rb @@ -160,6 +160,80 @@ describe ProductsReflex, type: :reflex, feature: :admin_style_v3 do end end end + + describe '#delete_product' do + let(:product) { create(:simple_product) } + let(:action_name) { :delete_product } + + subject { build_reflex(method_name: action_name, **context) } + + before { subject.element.dataset.current_id = product.id } + + context 'given that the current user is admin' do + let(:current_user) { create(:admin_user) } + + it 'should successfully delete the product' do + subject.run(action_name) + product.reload + expect(product.deleted_at).not_to be_nil + expect(flash[:success]).to eq('Successfully deleted the product') + end + + it 'should be failed to delete the product' do + # mock db query failure + allow_any_instance_of(Spree::Product).to receive(:destroy).and_return(false) + subject.run(action_name) + product.reload + expect(product.deleted_at).to be_nil + expect(flash[:error]).to eq('Unable to delete the product') + end + end + + context 'given that the current user is not admin' do + let(:current_user) { create(:user) } + + it 'should raise the access denied exception' do + expect { subject.run(action_name) }.to raise_exception(CanCan::AccessDenied) + end + end + end + + describe '#delete_variant' do + let(:variant) { create(:variant) } + let(:action_name) { :delete_variant } + + subject { build_reflex(method_name: action_name, **context) } + + before { subject.element.dataset.current_id = variant.id } + + context 'given that the current user is admin' do + let(:current_user) { create(:admin_user) } + + it 'should successfully delete the variant' do + subject.run(action_name) + variant.reload + expect(variant.deleted_at).not_to be_nil + expect(flash[:success]).to eq('Successfully deleted the variant') + end + + it 'should be failed to delete the product' do + # mock db query failure + allow_any_instance_of(Spree::Variant).to receive(:destroy).and_return(false) + subject.run(action_name) + variant.reload + expect(variant.deleted_at).to be_nil + expect(flash[:error]).to eq('Unable to delete the variant') + end + end + + context 'given that the current user is not admin' do + let(:current_user) { create(:user) } + + it 'should raise the access denied exception' do + expect { subject.run(action_name) }.to raise_exception(CanCan::AccessDenied) + end + end + end end # Build and run a reflex using the context From 8891091ebb88aa2bcef6bf16acfcd0dc18c72a37 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Wed, 20 Dec 2023 11:09:47 +0000 Subject: [PATCH 076/219] Uncomments preferences Moves I18n exception handler within base spec helper --- app/models/content_configuration.rb | 36 ++++++++++++++--------------- spec/base_spec_helper.rb | 10 ++++---- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/app/models/content_configuration.rb b/app/models/content_configuration.rb index bdd4b4abf1..8e031dcb57 100644 --- a/app/models/content_configuration.rb +++ b/app/models/content_configuration.rb @@ -24,28 +24,28 @@ class ContentConfiguration < Spree::Preferences::Configuration # All the following defaults using I18n don't work. # https://github.com/openfoodfoundation/openfoodnetwork/issues/3816 # default values for these fields are commented out below - preference :producer_signup_pricing_table_html, :text - # default: I18n.t(:content_configuration_pricing_table) - preference :producer_signup_case_studies_html, :text - # default: I18n.t(:content_configuration_case_studies) - preference :producer_signup_detail_html, :text - # default: I18n.t(:content_configuration_detail) + preference :producer_signup_pricing_table_html, :text, + default: I18n.t(:content_configuration_pricing_table) + preference :producer_signup_case_studies_html, :text, + default: I18n.t(:content_configuration_case_studies) + preference :producer_signup_detail_html, :text, + default: I18n.t(:content_configuration_detail) # Hubs sign-up page - preference :hub_signup_pricing_table_html, :text - # default: I18n.t(:content_configuration_pricing_table) - preference :hub_signup_case_studies_html, :text - # default: I18n.t(:content_configuration_case_studies) - preference :hub_signup_detail_html, :text - # default: I18n.t(:content_configuration_detail) + preference :hub_signup_pricing_table_html, :text, + default: I18n.t(:content_configuration_pricing_table) + preference :hub_signup_case_studies_html, :text, + default: I18n.t(:content_configuration_case_studies) + preference :hub_signup_detail_html, :text, + default: I18n.t(:content_configuration_detail) # Groups sign-up page - preference :group_signup_pricing_table_html, :text - # default: I18n.t(:content_configuration_pricing_table) - preference :group_signup_case_studies_html, :text - # default: I18n.t(:content_configuration_case_studies) - preference :group_signup_detail_html, :text - # default: I18n.t(:content_configuration_detail) + preference :group_signup_pricing_table_html, :text, + default: I18n.t(:content_configuration_pricing_table) + preference :group_signup_case_studies_html, :text, + default: I18n.t(:content_configuration_case_studies) + preference :group_signup_detail_html, :text, + default: I18n.t(:content_configuration_detail) # Main URLs preference :menu_1, :boolean, default: true diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 4368c65a43..2d1eeed0da 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -50,6 +50,11 @@ end FactoryBot.use_parent_strategy = false FactoryBot::SyntaxRunner.include FileHelper +# raise I18n exception handler +I18n.exception_handler = proc do |exception, *_| + raise exception.to_exception +end + RSpec.configure do |config| # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{Rails.root.join('spec/fixtures')}" @@ -205,11 +210,6 @@ RSpec.configure do |config| # You can use `rspec -n` to run only failed specs. config.example_status_persistence_file_path = "tmp/rspec-status.txt" - # raise I18n exception handler - I18n.exception_handler = proc do |exception, *_| - raise exception.to_exception - end - # Helpers config.include FactoryBot::Syntax::Methods config.include JsonSpec::Helpers From 2585820bbb977d10c0ca84238280462ddca9f980 Mon Sep 17 00:00:00 2001 From: Dusan Orlovic Date: Wed, 20 Dec 2023 12:55:22 +0100 Subject: [PATCH 077/219] Add Punjabi and Malayalam language for India instance #11855 --- config/locales/ml.yml | 3298 +++++++++++++++++++++++++++++++++++++++++ config/locales/pa.yml | 1126 ++++++++++++++ 2 files changed, 4424 insertions(+) create mode 100644 config/locales/ml.yml create mode 100644 config/locales/pa.yml diff --git a/config/locales/ml.yml b/config/locales/ml.yml new file mode 100644 index 0000000000..84660dcb32 --- /dev/null +++ b/config/locales/ml.yml @@ -0,0 +1,3298 @@ +ml: + language_name: "മലയാളം" + time: + formats: + long: "%B %d , %Y %-l:%M %p" + activerecord: + models: + spree/product: ഉൽപ്പന്നം + spree/shipping_method: ഷിപ്പിംഗ് രീതി + attributes: + spree/order/ship_address: + address1: "ഷിപ്പിംഗ് വിലാസം (തെരുവ് + വീട് നമ്പർ)" + address2: "ഷിപ്പിംഗ് വിലാസം വരി 2" + city: "ഷിപ്പിംഗ് വിലാസം നഗരം" + country: "ഷിപ്പിംഗ് വിലാസം രാജ്യം" + phone: "ഫോൺ നമ്പർ" + firstname: "ഒന്നാം പേര് " + lastname: "പേരിന്റെ അവസാന ഭാഗം" + zipcode: "ഷിപ്പിംഗ് വിലാസത്തിന്റെ പിൻകോഡ്" + spree/order/bill_address: + address1: "ബില്ലിംഗ് വിലാസം (തെരുവ് + വീട്ടു നമ്പർ)" + zipcode: "ബില്ലിംഗ് വിലാസത്തിലെ പിൻകോഡ്" + city: "ബില്ലിംഗ് വിലാസത്തിലെ നഗരം" + country: "ബില്ലിംഗ് വിലാസത്തിലെ രാജ്യം" + firstname: "ബില്ലിംഗ് വിലാസത്തിലെ ഒന്നാം പേര്" + lastname: "ബില്ലിംഗ് വിലാസത്തിലെ അവസാന നാമം" + phone: ഉപഭോക്തൃ ഫോൺ + spree/user: + password: "പാസ്സ്‌വേർഡ്" + password_confirmation: "പാസ്സ്‌വേർഡ് സ്ഥിരീകരണം" + reset_password_token: പാസ്സ്‌വേർഡ് ടോക്കൺ റീസെറ്റ് ചെയ്യുക + enterprise_fee: + fee_type: ഫീസ് തരം + spree/order: + payment_state: പേയ്മെന്റ് സംസ്ഥാനം + shipment_state: ഷിപ്പിംഗ് സംസ്ഥാനം + completed_at: പൂർത്തിയാക്കിയത് + number: നമ്പർ + state: സംസ്ഥാനം + email: ഉപഭോക്താവിന്റെ ഇ-മെയിൽ + spree/payment: + amount: തുക + state: സംസ്ഥാനം + source: ഉറവിടം + spree/product: + name: "ഉത്പന്നത്തിന്റെ പേര്" + price: "വില" + primary_taxon: "ഉൽപ്പന്ന വിഭാഗം" + supplier: "വിതരണക്കാരൻ" + shipping_category_id: "ഷിപ്പിംഗ് വിഭാഗം" + variant_unit: "വേരിയന്റ് യൂണിറ്റ്" + variant_unit_name: "വേരിയന്റ് യൂണിറ്റിന്റെ പേര്" + unit_value: "യൂണിറ്റ് മൂല്യം" + spree/credit_card: + base: "ക്രെഡിറ്റ് കാർഡ്" + number: "നമ്പർ" + month: "മാസം" + verification_value: "സ്ഥിരീകരണ മൂല്യം" + year: "വർഷം" + order_cycle: + orders_close_at: അവസാന തീയതി + variant_override: + count_on_hand: "കയ്യിൽ" + spree/payment_method/calculator: + preferred_flat_percent: "കാൽക്കുലേറ്റർ ഫ്ലാറ്റ് ശതമാനം:" + preferred_amount: "കാൽക്കുലേറ്റർ തുക:" + preferred_first_item: "കാൽക്കുലേറ്റർ ആദ്യ ഇനം:" + preferred_additional_item: "കാൽക്കുലേറ്റർ അധിക ഇനത്തിന്റെ വില:" + preferred_max_items: "കാൽക്കുലേറ്റർ പരമാവധി ഇനങ്ങൾ:" + preferred_minimal_amount: "കാൽക്കുലേറ്റർ ഏറ്റവും കുറഞ്ഞ തുക:" + preferred_normal_amount: "കാൽക്കുലേറ്റർ സാധാരണ തുക:" + preferred_discount_amount: "കാൽക്കുലേറ്റർ കിഴിവ് തുക:" + preferred_unit_from_list: "പട്ടികയിൽ നിന്നുള്ള കാൽക്കുലേറ്റർ യൂണിറ്റ്:" + preferred_per_unit: "ഓരോ യൂണിറ്റിനും ഉള്ള കാൽക്കുലേറ്റർ:" + enterprise: + white_label_logo_link: "കടയുടെ മുൻവശത്ത് ഉപയോഗിക്കുന്ന ലോഗോയ്ക്കുള്ള ലിങ്ക്" + errors: + models: + enterprise_fee: + inherit_tax_requires_per_item_calculator: "നികുതി വിഭാഗം അവകാശമായി ലഭിക്കുന്നതിന് ഓരോ ഇനത്തിനും കാൽക്കുലേറ്റർ ആവശ്യമാണ്." + spree/user: + attributes: + email: + taken: "ഈ ഈമെയിലുമായി ബന്ധപ്പെടുത്തിയ ഒരു അക്കൗണ്ട് ഇതിനകം ഉണ്ട്. ദയവായി ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ നിങ്ങളുടെ പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുക." + reset_password_token: + invalid: അസാധുവാണ് + spree/order: + no_card: വില ഈടാക്കാൻ അംഗീകൃത ക്രെഡിറ്റ് കാർഡുകളൊന്നും ലഭ്യമല്ല + spree/credit_card: + attributes: + base: + card_expired: "കാലാവധി കഴിഞ്ഞു" + order_cycle: + attributes: + orders_close_at: + after_orders_open_at: തുറന്ന തീയതിക്ക് ശേഷമായിരിക്കണം + variant_override: + count_on_hand: + using_producer_stock_settings_but_count_on_hand_set: "പ്രൊഡ്യൂസർ സ്റ്റോക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുന്നതിനാൽ ശൂന്യമായിരിക്കണം" + on_demand_but_count_on_hand_set: "ആവശ്യകത കൂടിയിരുന്നാൽ ശൂന്യമായിരിക്കണം" + limited_stock_but_no_count_on_hand: "സ്റ്റോക്ക് പരിമിതമായതിനാൽ വ്യക്തമാക്കണം" + messages: + confirmation: "%{attribute} എന്നതുമായി പൊരുത്തപ്പെടുന്നില്ല" + blank: "ശൂന്യമായിരിക്കാൻ കഴിയില്ല" + too_short: "വളരെ ചെറുതാണ് (കുറഞ്ഞത് %{count} അക്ഷരങ്ങൾ ഉണ്ടാകണം)" + errors: + messages: + content_type_invalid: "ഒരു അസാധുവായ ഉള്ളടക്കം ഉണ്ട്" + file_size_out_of_range: "%{file_size} വലുപ്പം ആവശ്യമായ ശ്രേണിയ്‌ക്കിടയിലല്ല" + limit_out_of_range: "ആകെ എണ്ണം പരിധിക്ക് പുറത്താണ്" + image_metadata_missing: "ചിത്രം സാധുതയുള്ളതല്ല" + dimension_min_inclusion: "%{width} x %{height} പിക്സലിനു തുല്യമോ വലുതോ ആയിരിക്കണം." + dimension_max_inclusion: "%{width} x %{height} പിക്സലിനു തുല്യമോ കുറവോ ആയിരിക്കണം." + dimension_width_inclusion: "%{min} പിക്സലിനും %{max} പിക്സലിനും ഇടയിൽ വീതി ഉൾപ്പെടുത്തിയിട്ടില്ല." + dimension_height_inclusion: "%{min} പിക്സലിനും %{max} പിക്സലിനും ഇടയിൽ ഉയരം ഉൾപ്പെടുത്തിയിട്ടില്ല." + dimension_width_greater_than_or_equal_to: "വീതി %{length} പിക്സലിനു തുല്യമോ വലുതോ ആയിരിക്കണം." + dimension_height_greater_than_or_equal_to: "ഉയരം %{length} പിക്സലിനു തുല്യമോ വലുതോ ആയിരിക്കണം." + dimension_width_less_than_or_equal_to: "വീതി %{length} പിക്സലിനു തുല്യമോ കുറവോ ആയിരിക്കണം." + dimension_height_less_than_or_equal_to: "ഉയരം %{length} പിക്സലിനു തുല്യമോ കുറവോ ആയിരിക്കണം." + dimension_width_equal_to: "വീതി %{length} പിക്സലിന് തുല്യമായിരിക്കണം." + dimension_height_equal_to: "ഉയരം %{length} പിക്സലിന് തുല്യമായിരിക്കണം." + aspect_ratio_not_square: "ഒരു ചതുര ചിത്രം ആയിരിക്കണം" + aspect_ratio_not_portrait: "ഒരു ഛായാചിത്രം ആയിരിക്കണം" + aspect_ratio_not_landscape: "ഒരു ഭൂപ്രകൃതി ചിത്രമായിരിക്കണം" + aspect_ratio_is_not: "%{aspect_ratio} എന്ന വീക്ഷണാനുപാതം ഉണ്ടായിരിക്കണം" + aspect_ratio_unknown: "വീക്ഷണാനുപാതം അജ്ഞാതമാണ് " + image_not_processable: "ചിത്രം സാധുതയുള്ളതല്ല" + not_found: + title: "നിങ്ങൾ തിരയുന്ന പേജ് നിലവിലില്ല (404)" + message_html: "ദയവായി വീണ്ടും ശ്രമിക്കുക

ഇതൊരു താൽക്കാലിക പ്രശ്നമായിരിക്കാം. മുൻപുണ്ടായിരുന്ന സ്‌ക്രീനിലേക്ക് മടങ്ങാൻ ബാക്ക് ബട്ടൺ ക്ലിക്ക് ചെയ്യുക അല്ലെങ്കിൽ ഹോം പേജ് ലേക്ക് തിരികെ പോയി വീണ്ടും ശ്രമിക്കുക.

പിന്തുണയ്ക്കായി ബന്ധപ്പെടുക

പ്രശ്‌നം നിലനിൽക്കുന്നുണ്ടെങ്കിലോ അത്യാവശ്യമോ ആണെങ്കിൽ, അതിനെക്കുറിച്ച് ഞങ്ങളോട് പറയുക. ആഗോള ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ലോക്കൽ പേജിൽ നിന്ന് ഞങ്ങളുടെ ബന്ധപ്പെടുന്നതിനുള്ള വിശദാംശങ്ങൾ കണ്ടെത്തുക.

നഷ്‌ടമായ പേജ് എന്തിനെക്കുറിച്ചാണെന്ന് നിങ്ങൾക്ക് കഴിയുന്നത്ര വിശദാംശങ്ങൾ നൽകാൻ കഴിയുമെങ്കിൽ അത് ശരിക്കും ഞങ്ങളെ സഹായിക്കും.

" + internal_server_error: + title: "ക്ഷമിക്കണം, എന്തോ തകരാറ് സംഭവിച്ചു (500)" + message_html: "ദയവായി വീണ്ടും ശ്രമിക്കുക

ഇതൊരു താൽക്കാലിക പ്രശ്നമായിരിക്കാം. മുൻപുണ്ടായിരുന്ന സ്‌ക്രീനിലേക്ക് മടങ്ങാൻ ബാക്ക് ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക അല്ലെങ്കിൽ ഹോം പേജ് ലേക്ക് തിരികെ പോയി വീണ്ടും ശ്രമിക്കുക.

ഞങ്ങൾ പ്രശ്നം പരിഹരിച്ചുകൊണ്ടിരിക്കുകയാണ്

നിങ്ങൾ ഈ പ്രശ്നം മുമ്പ് കണ്ടിട്ടുണ്ടെങ്കിൽ, ഞങ്ങൾ മിക്കവാറും ഇതിനെക്കുറിച്ച് ഇതിനകം തന്നെ അറിയുകയും ഒരു പരിഹാരത്തിനായി പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുകയും ആകാം. വരുന്ന എല്ലാ പിശകുകളും ഞങ്ങൾ രേഖപ്പെടുത്തുന്നുണ്ട്.

പിന്തുണയ്ക്കായി ബന്ധപ്പെടുക

പ്രശ്‌നം നിലനിൽക്കുന്നുണ്ടെങ്കിലോ അത്യാവശ്യമോ ആണെങ്കിൽ, അതിനെക്കുറിച്ച് ഞങ്ങളോട് പറയുക. ആഗോള ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ലോക്കൽ പേജിൽ നിന്ന് ഞങ്ങളെ ബന്ധപ്പെടുന്നതിനുള്ള വിശദാംശങ്ങൾ കണ്ടെത്തുക.

ഈ തകരാറ് സംഭവിച്ചപ്പോൾ നിങ്ങൾ എന്തുചെയ്യുകയായിരുന്നു എന്നതിനെക്കുറിച്ച് നിങ്ങൾക്ക് കഴിയുന്നത്ര വിശദാംശങ്ങൾ നൽകാൻ കഴിയുമെങ്കിൽ അത് ഞങ്ങളെ സഹായിക്കും.

" + unprocessable_entity: + title: "നിങ്ങൾ ആഗ്രഹിച്ച മാറ്റം നിരസിക്കപ്പെട്ടു (422)" + message_html: "

നിങ്ങൾ ആഗ്രഹിച്ച മാറ്റം നിരസിക്കപ്പെട്ടു. നിങ്ങൾക്ക് അനുമതി ഇല്ലാത്ത എന്തെങ്കിലും മാറ്റാൻ നിങ്ങൾ ശ്രമിച്ചിരിക്കാം.

ഹോം പേജിലേക്ക് തിരിച്ചുപോകുക

" + stimulus_reflex_error: "ക്ഷമിക്കണം, എന്തോ കുഴപ്പം സംഭവിച്ചു.\n\n ഇതൊരു താൽക്കാലിക പ്രശ്നമായിരിക്കാം, അതിനാൽ ദയവായി വീണ്ടും ശ്രമിക്കുക അല്ലെങ്കിൽ പേജ് റീലോഡ് ചെയ്യുക.\n ഞങ്ങൾ എല്ലാ പ്രശ്നങ്ങളും രേഖപ്പെടുത്തുന്നുണ്ട്, ചിലപ്പോൾ ഒരു പരിഹാരത്തിനായി പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുകയും ആകാം\n പ്രശ്നം നിലനിൽക്കുന്നുവെങ്കിലോ അല്ലെങ്കിൽ ആത്യാവശ്യമോ ആണെങ്കിൽ, ദയവായി ഞങ്ങളുമായി ബന്ധപ്പെടുക. " + stripe: + error_code: + incorrect_number: "കാർഡ് നമ്പർ തെറ്റാണ്." + invalid_number: "കാർഡ് നമ്പർ ഒരു സാധുവായ ക്രെഡിറ്റ് കാർഡ് നമ്പറല്ല." + invalid_expiry_month: "കാർഡിന്റെ കാലഹരണ മാസം അസാധുവാണ്." + invalid_expiry_year: "കാർഡിന്റെ കാലഹരണ വർഷം അസാധുവാണ്." + invalid_cvc: "കാർഡിന്റെ സുരക്ഷാ കോഡ് അസാധുവാണ്." + expired_card: "കാർഡ് കാലഹരണപ്പെട്ടു." + incorrect_cvc: "കാർഡിന്റെ സുരക്ഷാ കോഡ് തെറ്റാണ്." + incorrect_zip: "കാർഡിന്റെ സിപ് കോഡ് നിർണ്ണയം പരാജയപ്പെട്ടു." + card_declined: "കാർഡ് നിരസിക്കപ്പെട്ടു." + missing: "നിരക്ക് ഈടാക്കാൻ കഴിയുന്ന ഒരു കാർഡുംഉപഭോക്താവിന് ഇല്ല." + processing_error: "കാർഡ് പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഒരു തകരാറ് സംഭവിച്ചു." + rate_limit: "അഭ്യർത്ഥനകൾ എപിഐ-യിൽ വളരെ വേഗത്തിൽ വന്നതിനാൽ ഒരു തകരാറ് സംഭവിച്ചു. നിങ്ങൾ സ്ഥിരമായി ഈ തകരാറ് നേരിടുകയാണെങ്കിൽ ഞങ്ങളെ അറിയിക്കുക." + authentication_required: "ഈ ഇടപാടിന്റെ ആധികാരികത ഉറപ്പിക്കേണ്ടത് ആവശ്യമായതിനാൽ കാർഡ് നിരസിച്ചു." + approve_with_id: "പേയ്‌മെന്റ് അംഗീകരിക്കാനാവില്ല." + call_issuer: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + card_not_supported: "കാർഡ് ഇത്തരത്തിലുള്ള വാങ്ങലുകൾ പിന്തുണയ്ക്കുന്നില്ല." + card_velocity_exceeded: "ഉപഭോക്താവിന്റെ കാർഡിൽ ലഭ്യമായ ബാലൻസ് അല്ലെങ്കിൽ ക്രെഡിറ്റ് പരിധി കവിഞ്ഞു." + currency_not_supported: "കാർഡ് നിർദ്ദിഷ്ട കറൻസിയെ പിന്തുണയ്ക്കുന്നില്ല." + do_not_honor: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + do_not_try_again: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + duplicate_transaction: "സമാനമായ തുകയും ക്രെഡിറ്റ് കാർഡ് വിവരങ്ങളും ഉള്ള ഒരു ഇടപാട് ഈയിടെ സമർപ്പിച്ചു." + fraudulent: "രേഖകൾ തട്ടിപ്പാണെന്ന് സംശയിക്കുന്നതിനാൽ പേയ്‌മെന്റ് നിരസിക്കപ്പെട്ടു." + generic_decline: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + incorrect_pin: "നൽകിയ പിൻ തെറ്റാണ്. ഒരു കാർഡ് റീഡർ ഉപയോഗിച്ച് നടത്തുന്ന ഇടപാടുകൾക്ക് മാത്രമേ ഈ നിരസിക്കൽ കോഡ് ബാധകമാകൂ." + insufficient_funds: "വാങ്ങൽ പൂർത്തിയാക്കാൻ കാർഡിൽ മതിയായ ഫണ്ടില്ല." + invalid_account: "കാർഡ് അല്ലെങ്കിൽ കാർഡ് ബന്ധിപ്പിച്ചിട്ടുള്ള അക്കൗണ്ട് അസാധുവാണ്." + invalid_amount: "പേയ്മെന്റ് തുക അസാധുവാണ്, അല്ലെങ്കിൽ അനുവദനീയമായ തുകയേക്കാൾ കൂടുതലാണ്." + invalid_pin: "നൽകിയ പിൻ തെറ്റാണ്. ഒരു കാർഡ് റീഡർ ഉപയോഗിച്ച് നടത്തുന്ന ഇടപാടുകൾക്ക് മാത്രമേ ഈ നിരസിക്കൽ കോഡ് ബാധകമാകൂ." + issuer_not_available: "കാർഡ് ഇഷ്യൂവറെ ബന്ധപ്പെടാൻ കഴിയാത്തതിനാൽ ഇടപാടിന് അംഗീകാരം നൽകാനായില്ല." + lost_card: "കാർഡ് നഷ്ടപ്പെട്ടതായി റിപ്പോർട്ട് ചെയ്തതിനാൽ ഇടപാട് നിരസിക്കപ്പെട്ടു." + merchant_blacklist: "രേഖകൾ ഉപയോക്താവിന്റെ ബ്ലോക്ക് ലിസ്റ്റിലെ മൂല്യവുമായി പൊരുത്തപ്പെടുന്നതിനാൽ പേയ്‌മെന്റ് നിരസിക്കപ്പെട്ടു." + new_account_information_available: "കാർഡ് അല്ലെങ്കിൽ കാർഡ് ബന്ധിപ്പിച്ചിട്ടുള്ള അക്കൗണ്ട് അസാധുവാണ്." + no_action_taken: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + not_permitted: "പേയ്മെന്റ് അനുവദനീയമല്ല." + offline_pin_required: "ഒരു പിൻ ആവശ്യമുള്ളതിനാൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + online_or_offline_pin_required: "ഒരു പിൻ ആവശ്യമുള്ളതിനാൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + pickup_card: "ഈ പേയ്‌മെന്റ് നടത്താൻ കാർഡ് ഉപയോഗിക്കാൻ കഴിയില്ല (ഇത് നഷ്‌ടപ്പെട്ടതായോ മോഷ്‌ടിക്കപ്പെട്ടതായോ റിപ്പോർട്ടുചെയ്യപ്പെട്ടിരിക്കാൻ സാധ്യതയുണ്ട്)." + pin_try_exceeded: "അനുവദനീയമായ പിൻ രേഖപ്പെടുത്തലുകളുടെ എണ്ണം കവിഞ്ഞു." + reenter_transaction: "അജ്ഞാതമായ കാരണത്താൽ ഇഷ്യൂവറിന് ഇടപാട് പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല." + restricted_card: "ഈ ഇടപാട് നടത്താൻ കാർഡ് ഉപയോഗിക്കാൻ കഴിയില്ല (ഇത് നഷ്‌ടപ്പെട്ടതായോ മോഷ്‌ടിക്കപ്പെട്ടതായോ റിപ്പോർട്ടുചെയ്യപ്പെട്ടിരിക്കാൻ സാധ്യതയുണ്ട്)." + revocation_of_all_authorizations: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + revocation_of_authorization: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + security_violation: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + service_not_allowed: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + stolen_card: "കാർഡ് മോഷ്ടിക്കപ്പെട്ടതായി റിപ്പോർട്ട് ചെയ്തിട്ടുള്ളതിനാൽ ഇടപാട് നിരസിക്കപ്പെട്ടു." + stop_payment_order: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + testmode_decline: "ഒരു സ്ട്രൈപ്പ് ടെസ്റ്റ് കാർഡ് നമ്പർ ഉപയോഗിച്ചു." + transaction_not_allowed: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + try_again_later: "അജ്ഞാതമായ കാരണത്താൽ കാർഡ് നിരസിക്കപ്പെട്ടു." + withdrawal_count_limit_exceeded: "ഉപഭോക്താവിന്റെ കാർഡിൽ ലഭ്യമായ ബാലൻസ് അല്ലെങ്കിൽ ക്രെഡിറ്റ് പരിധി കവിഞ്ഞു." + activemodel: + errors: + messages: + inclusion: "പട്ടികയിൽ ഉൾപ്പെടുത്തിയിട്ടില്ല" + models: + order_management/subscriptions/validator: + attributes: + subscription_line_items: + at_least_one_product: "^ദയവായി ഒരു ഉൽപ്പന്നമെങ്കിലും ചേർക്കുക" + not_available: "തിരഞ്ഞെടുത്ത ഷെഡ്യൂളിൽ നിന്ന് %{name} ലഭ്യമല്ല" + ends_at: + after_begins_at: "ആരംഭിക്കുന്നതിന് ശേഷം ആയിരിക്കണം" + customer: + does_not_belong_to_shop: "%{shop} -ൽ ഉൾപ്പെടുന്നില്ല" + schedule: + not_coordinated_by_shop: "%{shop} ഏകോപിപ്പിച്ചിട്ടില്ല" + payment_method: + not_available_to_shop: "%{shop} -ന് ലഭ്യമല്ല" + invalid_type: "ക്യാഷ് അല്ലെങ്കിൽ സ്ട്രൈപ്പ് രീതി ആയിരിക്കണം" + charges_not_allowed: "^ക്രെഡിറ്റ് കാർഡ് നിരക്കുകൾക്ക് ഈ ഉപഭോക്താവ് അനുമതി നൽകിയിട്ടില്ല." + no_default_card: "^ഈ ഉപഭോക്താവിന് ഡിഫോൽറ്റ് കാർഡ് ലഭ്യമല്ല" + shipping_method: + not_available_to_shop: "%{shop} -ന് ലഭ്യമല്ല" + card_details: "കാർഡ് വിശദാംശങ്ങൾ" + card_type: "കാർഡ് തരം" + cardholder_name: "കാർഡ് ഉടമയുടെ പേര്" + community_forum_url: "കമ്മ്യൂണിറ്റി ഫോറം യുആർഎൽ" + customer_instructions: "ഉപഭോക്തൃ നിർദ്ദേശങ്ങൾ" + additional_information: "അധിക വിവരം" + devise: + passwords: + spree_user: + cannot_be_blank: "ഉപയോക്തൃ പാസ്‌വേഡ് നൽകാതിരിക്കാൻ കഴിയില്ല. ദയവായി ഒരു പാസ്‌വേഡ് നൽകുക." + confirmations: + send_instructions: "കുറച്ച് മിനിറ്റിനുള്ളിൽ നിങ്ങളുടെ അക്കൗണ്ട് എങ്ങനെ സ്ഥിരീകരിക്കാം എന്നതിനെക്കുറിച്ചുള്ള നിർദ്ദേശങ്ങളടങ്ങിയ ഒരു ഇമെയിൽ നിങ്ങൾക്ക് ലഭിക്കും." + failed_to_send: "നിങ്ങളുടെ സ്ഥിരീകരണ ഇമെയിൽ അയയ്‌ക്കുമ്പോൾ ഒരു തകരാറ് സംഭവിച്ചു." + resend_confirmation_email: "സ്ഥിരീകരണ ഇമെയിൽ വീണ്ടും അയയ്ക്കുക." + confirmed: "നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിച്ചതിന് നന്ദി! നിങ്ങൾക്ക് ഇപ്പോൾ ലോഗിൻ ചെയ്യാം." + not_confirmed: "നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കാൻ കഴിഞ്ഞില്ല. ഒരുപക്ഷേ നിങ്ങൾ ഇതിനകം ഈ ഘട്ടം പൂർത്തിയാക്കിയിട്ടുണ്ടോ?" + user_confirmations: + spree_user: + send_instructions: "കുറച്ച് മിനിറ്റിനുള്ളിൽ നിങ്ങളുടെ അക്കൗണ്ട് എങ്ങനെ സ്ഥിരീകരിക്കാം എന്നതിനെക്കുറിച്ചുള്ള നിർദ്ദേശങ്ങളടങ്ങിയ ഒരു ഇമെയിൽ നിങ്ങൾക്ക് ലഭിക്കും." + confirmation_sent: "ഇമെയിൽ സ്ഥിരീകരണം അയച്ചു" + confirmation_not_sent: "സ്ഥിരീകരണ ഇമെയിൽ അയയ്ക്കുന്നതിൽ തകരാറ്" + user_registrations: + spree_user: + signed_up_but_unconfirmed: "സ്ഥിരീകരണ ലിങ്കുള്ള ഒരു സന്ദേശം നിങ്ങളുടെ ഇമെയിൽ വിലാസത്തിലേക്ക് അയച്ചു. നിങ്ങളുടെ അക്കൗണ്ട് സജീവമാക്കാൻ ലിങ്ക് തുറക്കുക." + unknown_error: "നിങ്ങളുടെ അക്കൗണ്ട് സൃഷ്ടിക്കുമ്പോൾ എന്തോ തകരാറ് സംഭവിച്ചു. നിങ്ങളുടെ ഇമെയിൽ വിലാസം പരിശോധിച്ച് വീണ്ടും ശ്രമിക്കുക." + failure: + disabled: "നിങ്ങളുടെ അക്കൗണ്ട് പ്രവർത്തനരഹിതമാക്കി. ഈ പ്രശ്നം പരിഹരിക്കാൻ അഡ്മിനിസ്ട്രേറ്ററെ ബന്ധപ്പെടുക." + invalid: | + അസാധുവായ ഇമെയിൽ അല്ലെങ്കിൽ പാസ്സ്‌വേർഡ്. + നിങ്ങൾ കഴിഞ്ഞ തവണ ഗസ്റ്റ് മോഡിൽ ആയിരുന്നോ? ഒരുപക്ഷേ നിങ്ങൾ ഒരു അക്കൗണ്ട് സൃഷ്‌ടിക്കുകയോ പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുകയോ ചെയ്യേണ്ടതുണ്ട്. + unconfirmed: "തുടരുന്നതിന് മുമ്പ് നിങ്ങളുടെ അക്കൗണ്ട് സ്ഥിരീകരിക്കേണ്ടതുണ്ട്." + already_registered: "ഈ ഇമെയിൽ വിലാസം ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്. തുടരാൻ ലോഗിൻ ചെയ്യുക അല്ലെങ്കിൽ തിരികെ പോയി മറ്റൊരു ഇമെയിൽ വിലാസം ഉപയോഗിക്കുക." + success: + logged_in_succesfully: "വിജയകരമായി ലോഗിൻ ചെയ്തു" + sessions: + signed_out: "വിജയകരമായി സൈൻ ഔട്ട് ചെയ്‌തു." + already_signed_out: "വിജയകരമായി സൈൻ ഔട്ട് ചെയ്‌തു." + user_passwords: + spree_user: + updated_not_active: "നിങ്ങളുടെ പാസ്‌വേഡ് പുനഃസജ്ജീകരിച്ചു, എന്നാൽ നിങ്ങളുടെ ഇമെയിൽ ഇതുവരെ സ്ഥിരീകരിച്ചിട്ടില്ല." + updated: "നിങ്ങളുടെ പാസ്സ്‌വേർഡ് വിജയകരമായി മാറ്റി. നിങ്ങൾ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്‌തു." + send_instructions: "കുറച്ച് മിനിറ്റിനുള്ളിൽ നിങ്ങളുടെ അക്കൗണ്ട് എങ്ങനെ സ്ഥിരീകരിക്കാം എന്നതിനെക്കുറിച്ചുള്ള നിർദ്ദേശങ്ങളടങ്ങിയ ഒരു ഇമെയിൽ നിങ്ങൾക്ക് ലഭിക്കും." + oidc: + failure: "%{error}: മൂലം സൈൻ ഇൻ ചെയ്യാൻ കഴിഞ്ഞില്ല " + home_page_alert_html: "ഹോം പേജ് അലേർട്ട് എച്ടിഎംഎൽ" + hub_signup_case_studies_html: "ഹബ് സൈൻഅപ്പ് കേസ് പഠനങ്ങൾ എച്ടിഎംഎൽ" + hub_signup_detail_html: "ഹബ് സൈൻഅപ്പ് വിശദാംശങ്ങൾ എച്ടിഎംഎൽ" + hub_signup_pricing_table_html: "ഹബ് സൈൻഅപ്പ് വില പട്ടിക എച്ടിഎംഎൽ" + group_signup_case_studies_html: "ഗ്രൂപ്പ് സൈൻഅപ്പ് കേസ് പഠനങ്ങൾ എച്ടിഎംഎൽ" + group_signup_detail_html: "ഗ്രൂപ്പ് സൈൻ അപ്പ് വിശദാംശങ്ങൾ എച്ടിഎംഎൽ" + group_signup_pricing_table_html: "ഗ്രൂപ്പ് സൈൻഅപ്പ് വില പട്ടിക എച്ടിഎംഎൽ" + item_description: "ഇനത്തെ കുറിച്ചുള്ള വിശദീകരണം" + menu_1_icon_name: "മെനു 1 ഐക്കൺ പേര്" + menu_2_icon_name: "മെനു 2 ഐക്കൺ പേര്" + menu_3_icon_name: "മെനു 3 ഐക്കൺ പേര്" + menu_4_icon_name: "മെനു 4 ഐക്കൺ പേര്" + menu_5_icon_name: "മെനു 5 ഐക്കൺ പേര്" + menu_6_icon_name: "മെനു 6 ഐക്കൺ പേര്" + menu_7_icon_name: "മെനു 7 ഐക്കൺ പേര്" + models: + order_cycle: + cloned_order_cycle_name: "%{order_cycle} -ന്റെ പകർപ്പ്" + tax_rate: + included_in_price: "വിലയിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്" + open_street_map_enabled: "റോഡ് മാപ് പ്രവർത്തനക്ഷമമാക്കുക" + open_street_map_default_latitude: "റോഡ് മാപ് സ്ഥിര അക്ഷാംശം തുറക്കുക" + open_street_map_default_longitude: "റോഡ് മാപ് സ്ഥിര രേഖാംശം തുറക്കുക" + open_street_map_provider_name: "റോഡ് മാപ് ദാതാവിന്റെ പേര് തുറക്കുക" + open_street_map_provider_options: "റോഡ് മാപ് പ്രൊവൈഡർ ഓപ്ഷനുകൾ തുറക്കുക" + producer_signup_case_studies_html: "പ്രൊഡ്യൂസർ സൈൻഅപ്പ് കേസ് സ്റ്റഡീസ് എച്ടിഎംഎൽ" + producer_signup_detail_html: "പ്രൊഡ്യൂസർ സൈൻഅപ്പ് വിശദാംശങ്ങൾ എച്ടിഎംഎൽ" + producer_signup_pricing_table_html: "പ്രൊഡ്യൂസർ സൈൻഅപ്പ് പ്രൈസിംഗ് ടേബിൾ എച്ടിഎംഎൽ" + producers_social: "നിർമാതാക്കളുടെ സാമൂഹ്യം" + resume_order: "ഓർഡർ പുനരാരംഭിക്കുക" + sku: "എസ്കെയു" + subtotal: "ആകെത്തുക" + tax_rate: "നികുതി നിരക്ക്" + validators: + date_time_string_validator: + not_string_error: "ഒരു ശൃംഖല ആയിരിക്കണം" + invalid_format_error: "സാധുതയുള്ളതായിരിക്കണം" + integer_array_validator: + not_array_error: "ക്രമീകരിച്ചത് ആയിരിക്കണം" + invalid_element_error: "സാധുവായ പൂർണ്ണസംഖ്യകൾ മാത്രം അടങ്ങിയിരിക്കണം" + report_job: + report_failed: | + ഈ റിപ്പോർട്ട് പരാജയപ്പെട്ടു. ഇത് പ്രോസസ്സ് ചെയ്യാൻ സാധിക്കാത്തവിധം വലുതായിരിക്കാം. + ഞങ്ങൾ അത് പരിശോധിക്കും എന്നാൽ പ്രശ്നം നിലനിൽക്കുകയാണെങ്കിൽ ദയവായി ഞങ്ങളെ അറിയിക്കുക. + enterprise_mailer: + confirmation_instructions: + subject: "%{enterprise} -ന് വേണ്ടി ഇമെയിൽ വിലാസം ദയവായി സ്ഥിരീകരിക്കുക" + welcome: + subject: "%{enterprise} ഇപ്പോൾ %{sitename} -ലാണ്" + email_welcome: "സ്വാഗതം" + email_registered: "ഇപ്പോൾ ഇതിന്റെ ഭാഗമാണ്" + email_userguide_html: "നിങ്ങളുടെ പ്രൊഡ്യൂസർ അല്ലെങ്കിൽ ഹബ് സജ്ജീകരിക്കുന്നതിനുള്ള വിശദമായ ഉപയോക്തൃ ഗൈഡ് ഇവിടെയുണ്ട്: %{link}" + userguide: "ഫുഡ് നെറ്റ്‌വർക്ക് ഉപയോക്തൃ ഗൈഡ് തുറക്കുക" + email_admin_html: "%{link} -ലേക്ക് ലോഗിൻ ചെയ്തോ അല്ലെങ്കിൽ ഹോംപേജിന്റെ മുകളിൽ വലതുവശത്തുള്ള കോഗിൽ ക്ലിക്കുചെയ്‌ത് അഡ്മിനിസ്ട്രേഷൻ തിരഞ്ഞെടുത്തോ നിങ്ങൾക്ക് നിങ്ങളുടെ അക്കൗണ്ട് നിയന്ത്രിക്കാനാകും." + admin_panel: "അഡ്മിൻ പാനൽ" + email_community_html: "ഒരു ഫുഡ് എന്റർപ്രൈസ് നേരിടുന്ന വെല്ലുവിളികളും ഓഎഫ്എൻ സോഫ്‌റ്റ്‌വെയറുമായി ബന്ധപ്പെട്ട കമ്മ്യൂണിറ്റി ചർച്ചകൾക്കുമായി ഞങ്ങൾക്ക് ഒരു ഓൺലൈൻ ഫോറവും ഉണ്ട്. അതിൽ ചേരാൻ നിങ്ങളെ ക്ഷണിക്കുന്നു. ഞങ്ങൾ നിരന്തരം വളർന്നുകൊണ്ടിരിക്കുന്നു, ഈ ഫോറത്തിലെ നിങ്ങളുടെ നിർദ്ദേശങ്ങൾ അടുത്ത സംഭവങ്ങൾ രൂപപ്പെടുത്തും. %{link}" + join_community: "കമ്മ്യൂണിറ്റിയിൽ ചേരുക" + invite_manager: + subject: "%{enterprise} നിങ്ങളെ മാനേജരാകാൻ ക്ഷണിച്ചു" + producer_mailer: + order_cycle: + subject: "%{producer}-നുള്ള ഓർഡർ സൈക്കിൾ റിപ്പോർട്ട് " + provider_settings: "ദാതാവിന്റെ ക്രമീകരണങ്ങൾ" + report_mailer: + report_ready: + subject: "റിപ്പോർട്ട് തയ്യാറാണ്" + heading: "റിപ്പോർട്ട് ഡൗൺലോഡ് ചെയ്യാൻ തയ്യാറാണ്" + intro: | + ചുവടെയുള്ള ലിങ്ക് ഒരാഴ്ചയ്ക്ക് ശേഷം കാലഹരണപ്പെടും. + link_label: "%{name}" + shipment_mailer: + shipped_email: + dear_customer: "പ്രിയ ഉപഭോക്താവേ," + instructions: "നിങ്ങളുടെ ഓർഡർ അയച്ചുകഴിഞ്ഞു" + shipment_summary: "ഷിപ്പിംഗ് സംഗ്രഹം" + subject: "ഷിപ്പ്മെന്റ് അറിയിപ്പ്" + thanks: "നിങ്ങളുടെ ഇടപാടിന് നന്ദി." + track_information: "ട്രാക്കിംഗ് വിവരങ്ങൾ: %{tracking}" + track_link: "ട്രാക്കിംഗ് ലിങ്ക്: %{url}" + subscription_mailer: + placement_summary_email: + subject: അടുത്തിടെ നൽകിയ സബ്‌സ്‌ക്രിപ്‌ഷൻ ഓർഡറുകളുടെ ഒരു സംഗ്രഹം + greeting: "ഹലോ %{name} ," + intro: "%{shop} -ൽ നിന്ന് ഇപ്പോൾ നൽകിയിട്ടുള്ള സബ്‌സ്‌ക്രിപ്‌ഷൻ ഓർഡറുകളുടെ ഒരു സംഗ്രഹം ചുവടെയുണ്ട്." + confirmation_summary_email: + subject: അടുത്തിടെ സ്ഥിരീകരിച്ച സബ്സ്ക്രിപ്ഷൻ ഓർഡറുകളുടെ ഒരു സംഗ്രഹം + greeting: "ഹലോ %{name} ," + intro: "%{shop} -ൽ നിന്ന് ഇപ്പോൾ അന്തിമമാക്കിയ സബ്‌സ്‌ക്രിപ്‌ഷൻ ഓർഡറുകളുടെ ഒരു സംഗ്രഹം ചുവടെയുണ്ട്." + summary_overview: + total: സ്വയമേവയുള്ള പ്രോസസ്സിംഗിനായി ആകെ %{count} സബ്‌സ്‌ക്രിപ്‌ഷനുകൾ അടയാളപ്പെടുത്തി. + success_zero: ഇവയിൽ ഒന്നും വിജയകരമായി പ്രോസസ്സ് ചെയ്തിട്ടില്ല. + success_some: ഇതിൽ, %{count} വിജയകരമായി പ്രോസസ്സ് ചെയ്തു. + success_all: എല്ലാം വിജയകരമായി പ്രോസസ്സ് ചെയ്തു. + issues: നേരിട്ട പ്രശ്നങ്ങളുടെ വിശദാംശങ്ങൾ ചുവടെ നൽകിയിരിക്കുന്നു. + summary_detail: + no_message_provided: തകരാറ് സന്ദേശം നൽകിയിട്ടില്ല + changes: + title: മതിയായ സ്റ്റോക്കില്ല (%{count} ഓർഡറുകൾ) + explainer: ഈ ഓർഡറുകൾ പ്രോസസ്സ് ചെയ്തുവെങ്കിലും ആവശ്യപ്പെട്ട ചില ഇനങ്ങൾക്ക് മതിയായ സ്റ്റോക്ക് ഇല്ല + empty: + title: സ്റ്റോക്കില്ല (%{count} ഓർഡറുകൾ) + explainer: ആവശ്യപ്പെട്ട ഇനങ്ങൾക്കൊന്നും സ്റ്റോക്ക് ലഭ്യമല്ലാത്തതിനാൽ ഈ ഓർഡറുകൾ പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല + complete: + title: ഇതിനകം പ്രോസസ്സ് ചെയ്തു (%{count} ഓർഡറുകൾ) + explainer: ഈ ഓർഡറുകൾ ഇതിനകം പൂർത്തിയായതായി അടയാളപ്പെടുത്തി, അതിനാൽ അവ വിട്ടുകളഞ്ഞു + processing: + title: തകരാറ് നേരിട്ടു (%{count} ഓർഡറുകൾ) + explainer: ഒരു തകരാറ് കാരണം ഈ ഓർഡറുകളുടെ സ്വയമേവയുള്ള പ്രോസസ്സിംഗ് പരാജയപ്പെട്ടു. സാധ്യമായ ഇടങ്ങളിൽ തകരാറ് പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്. + failed_payment: + title: പണം കൊടുക്കൽ പരാജയപ്പെട്ടു (%{count} ഓർഡറുകൾ) + explainer: ഒരു തകരാറ് കാരണം ഈ ഓർഡറുകൾക്കുള്ള ഓട്ടോമാറ്റിക് പേയ്മെന്റ് പ്രോസസ്സിംഗ് പരാജയപ്പെട്ടു. സാധ്യമായ ഇടങ്ങളിൽ തകരാറ് പട്ടികപ്പെടുത്തിയിട്ടുണ്ട്. + other: + title: മറ്റ് പരാജയം (%{count} ഓർഡറുകൾ) + explainer: അജ്ഞാതമായ ഒരു കാരണത്താൽ ഈ ഓർഡറുകളുടെ ഓട്ടോമാറ്റിക് പ്രോസസ്സിംഗ് പരാജയപ്പെട്ടു. ഇത് ഇത് സംഭവിക്കാൻ പാടില്ലാത്തതാണ്, നിങ്ങൾ ഇത് കാണുകയാണെങ്കിൽ ദയവായി ഞങ്ങളുമായി ബന്ധപ്പെടുക. + home: "ഒഎഫ്എൻ" + title: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക്" + welcome_to: "-ലേക്ക് സ്വാഗതം" + site_meta_description: "ഞങ്ങൾ അടിത്തറയിൽ നിന്ന് ആരംഭിക്കുന്നു. തങ്ങളുടെ കഥകൾ അഭിമാനത്തോടെയും സത്യസന്ധമായും പറയാൻ തയ്യാറായ കർഷകരോടൊപ്പം. ന്യായമായും സത്യസന്ധമായും ഉൽപ്പന്നങ്ങളുമായി ആളുകളെ ബന്ധിപ്പിക്കാൻ തയ്യറാകുന്ന വിതരണക്കാരോടൊപ്പം. മികച്ച പ്രതിവാര ഷോപ്പിംഗ് തീരുമാനങ്ങൾ എടുക്കാൻ കഴിയുമെന്ന് വിശ്വസിക്കുന്ന ഉപഭോക്താക്കൾക്കൊപ്പം..." + search_by_name: പേരോ നഗരമോ ഉപയോഗിച്ച് തിരയുക... + producers_join: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ചേരാൻ ഓസ്‌ട്രേലിയൻ കർഷകരെ ഇപ്പോൾ സ്വാഗതം ചെയ്യുന്നു. + charges_sales_tax: ജി എസ് ടി ഈടാക്കുന്നുണ്ടോ? + business_address: "വ്യാപാര മേൽവിലാസം" + print_invoice: "ഇൻവോയ്സ് പ്രിന്റ് ചെയ്യുക" + print_ticket: "ടിക്കറ്റ് പ്രിന്റ് ചെയ്യുക" + select_ticket_printer: "ടിക്കറ്റുകൾക്കായി പ്രിന്റർ തിരഞ്ഞെടുക്കുക" + send_invoice: "ഇൻവോയ്സ് അയയ്ക്കുക" + resend_confirmation: "സ്ഥിരീകരണം വീണ്ടും അയയ്ക്കുക" + view_order: "ഓർഡർ കാണുക" + edit_order: "ഓർഡർ എഡിറ്റ് ചെയ്യുക" + ship_order: "ഓർഡർ അയക്കുക" + cancel_order: "ഓർഡർ റദ്ദാക്കുക" + confirm_send_invoice: "ഈ ഓർഡറിന്റെ ഇൻവോയ്സ് ഉപഭോക്താവിന് അയയ്ക്കും. നിങ്ങൾക്ക് തുടരണമെന്നുള്ളത് തീർച്ചയാണോ?" + confirm_resend_order_confirmation: "ഓർഡർ സ്ഥിരീകരണ ഇമെയിൽ വീണ്ടും അയയ്‌ക്കണമെന്നത് തീർച്ചയാണോ?" + must_have_valid_business_number: "ഇൻവോയ്‌സുകൾ അയയ്‌ക്കുന്നതിന് മുമ്പ് %{enterprise_name} -ന് സാധുവായ ഒരു എബിഎൻ ഉണ്ടായിരിക്കണം." + invoice: "ഇൻവോയ്സ്" + invoices: "ഇൻവോയ്സുകൾ" + file: "ഫയൽ" + active: "സജീവം" + download: "ഡൗൺലോഡ്" + cancelled: "റദ്ദാക്കി" + more: "കൂടുതൽ" + say_no: "ഇല്ല" + say_yes: "അതെ" + ongoing: നടന്നുകൊണ്ടിരിക്കുന്നു + bill_address: ബില്ലിംഗ് വിലാസം + ship_address: ഷിപ്പിംഗ് വിലാസം + sort_order_cycles_on_shopfront_by: "ഓർഡർ സൈക്കിളുകൾ ഷോപ്പ്ഫ്രണ്ട് പ്രകാരം തിരഞ്ഞെടുക്കുക" + required_fields: ആവശ്യമുള്ള ഫീൽഡുകൾ ഒരു നക്ഷത്രചിഹ്നം ഉപയോഗിച്ച് സൂചിപ്പിച്ചിരിക്കുന്നു + select_continue: തിരഞ്ഞെടുത്ത് തുടരുക + remove: നീക്കം ചെയ്യുക + collapse_all: എല്ലാം സങ്കോചിപ്പിക്കുക + expand_all: എല്ലാം വികസിപ്പിക്കുക + loading: ലോഡിംഗ്... + show_more: കൂടുതൽ കാണിക്കുക + show_all: എല്ലാം കാണിക്കൂ + show_all_with_more: "എല്ലാം കാണിക്കുക (%{num} കൂടുതൽ)" + cancel: റദ്ദാക്കുക + edit: എഡിറ്റ് ചെയ്യുക + clone: ക്ലോൺ + distributors: വിതരണക്കാർ + distribution: വിതരണം + order_cycles: ഓർഡർ സൈക്കിളുകൾ + bulk_order_management: ബൾക്ക് ഓർഡർ മാനേജ്മെന്റ് + enterprises: എൻറ്റർപ്രൈസിസ് + enterprise_groups: ഗ്രൂപ്പുകൾ + reports: റിപ്പോർട്ടുകൾ + listing_reports: ലിസ്റ്റിംഗ് റിപ്പോർട്ടുകൾ + variant_overrides: ചരക്കുപട്ടിക + import: ഇറക്കുമതി ചെയ്യുക + spree_products: സ്പ്രി ഉൽപ്പന്നങ്ങൾ + all: എല്ലാം + current: നിലവിലുള്ളത് + available: ലഭ്യമാണ് + dashboard: ഡാഷ്ബോർഡ് + undefined: നിർവചിക്കാത്തത് + unused: ഉപയോഗിക്കാത്തത് + admin_and_handling: അഡ്മിൻ & കൈകാര്യംചെയ്യൽ + profile: പ്രൊഫൈൽ + supplier_only: വിതരണക്കാരൻ മാത്രം + has_shopfront: ഷോപ്പ്ഫ്രണ്ട് ഉണ്ട് + weight: ഭാരം + volume: വ്യാപ്തം + items: ഇനങ്ങൾ + summary: സംഗ്രഹം + detailed: വിശദമായത് + updated: അപ്ഡേറ്റ് ചെയ്തു + 'yes': "അതെ" + 'no': "ഇല്ല" + y: 'വൈ' + n: 'എൻ' + powered_by: പ്രായോജകർ + blocked_cookies_alert: "ഈ ഷോപ്പ്ഫ്രണ്ട് ഉപയോഗിക്കുന്നതിന് ആവശ്യമായ കുക്കീസ് നിങ്ങളുടെ ബ്രൗസർ ബ്ലോക്ക് ചെയ്യുന്നുണ്ടാകാം. കുക്കീസ് അനുവദിക്കുന്നതിനും പേജ് റീലോഡ് ചെയ്യുന്നതിനും താഴെ ക്ലിക്ക് ചെയ്യുക." + allow_cookies: "കുക്കീസ് അനുവദിക്കുക" + none: ഒന്നുമില്ല + notes: കുറിപ്പുകൾ + error: തകരാറ് + voucher: വൗച്ചർ + processing_payment: "പേയ്‌മെന്റ് പ്രോസസ്സ് ചെയ്യുന്നു..." + no_pending_payments: "തീർപ്പാക്കാത്ത പേയ്‌മെന്റുകളൊന്നുമില്ല" + invalid_payment_state: "അസാധുവായ പേയ്‌മെന്റ് അവസ്ഥ: %{state}" + filter_results: ഫിൽട്ടർ ഫലങ്ങൾ + clear_filters: ഫിൽട്ടറുകൾ മായ്ക്കുക + quantity: അളവ് + pick_up: പിക്ക്അപ്പ് + ok: ശരി + copy: പകർത്തുക + change_my_password: "എന്റെ പാസ്‌വേഡ് മാറ്റുക" + update_password: "പാസ്‌വേഡ് അപ്‌ഡേറ്റ് ചെയ്യുക" + password_confirmation: പാസ്‌വേഡ് സ്ഥിരീകരണം + reset_password_token: പാസ്സ്‌വേർഡ് ടോക്കൺ റീസെറ്റ് ചെയ്യുക + expired: കാലഹരണപ്പെട്ടു, പുതിയൊരെണ്ണം അഭ്യർത്ഥിക്കുക + back_to_payments_list: "പേയ്‌മെന്റ് ലിസ്റ്റിലേക്ക് മടങ്ങുക" + maestro_or_solo_cards: "മാസ്ട്രോ/സോളോ കാർഡുകൾ" + backordered: "ബാക്ക്ഓർഡേർഡ്‌" + on_hand: "കയ്യിൽ" + on hand: "കയ്യിൽ" + ship: "അയക്കൽ" + shipping_category: "അയക്കൽ വിഭാഗം" + height: "ഉയരം" + width: "വീതി" + depth: "ആഴം" + payment_could_not_process: "പേയ്മെന്റ് പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല" + payment_could_not_complete: "പേയ്‌മെന്റ് പൂർത്തിയാക്കാനായില്ല" + actions: + create_and_add_another: "ഉണ്ടാക്കുക, മറ്റൊന്ന് ചേർക്കുക" + create: "ഉണ്ടാക്കുക" + cancel: "റദ്ദാക്കുക" + resume: "പുനരാരംഭിക്കുക" + save: "സേവ് ചെയ്യുക" + edit: "എഡിറ്റ് ചെയ്യുക" + update: "അപ്ഡേറ്റ് ചെയ്യുക" + delete: "ഡിലീറ്റ് ചെയ്യുക" + add: "ചേർക്കുക" + cut: "കട്ട് " + paste: "പേസ്റ്റ്" + destroy: "നശിപ്പിക്കുക" + rename: "പേരുമാറ്റുക" + admin: + products_page: + title: ഉൽപ്പന്നങ്ങൾ + filters: + categories: + title: വിഭാഗങ്ങൾ + selected_categories: "%{count} വിഭാഗങ്ങൾ തിരഞ്ഞെടുത്തു" + producers: + title: പ്രൊഡ്യൂസേഴ്‌സ് + selected_producers: "%{count} പ്രൊഡ്യൂസേഴ്‌സിനെ തിരഞ്ഞെടുത്തു" + per_page: "ഓരോ പേജിലും %{count} ഇനങ്ങൾ" + colums: നിരകൾ + columns: + name: പേര് + unit: യൂണിറ്റ് + price: വില + producer: പ്രൊഡ്യൂസർ + category: വിഭാഗം + sku: എസ്.കെ.യു + on_hand: "കയ്യിൽ" + on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" + tax_category: "നികുതി വിഭാഗം" + inherits_properties: "അനന്തരാവകാശമായി ലഭിച്ച സ്വത്തുക്കൾ?" + import_date: "ഇറക്കുമതി തീയതി" + actions: പ്രവർത്തനങ്ങൾ + columns_selector: + unit: യൂണിറ്റ് + price: വില + producer: പ്രൊഡ്യൂസർ + category: വിഭാഗം + sku: എസ്.കെ.യു + on_hand: "കയ്യിൽ" + on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" + tax_category: "നികുതി വിഭാഗം" + inherits_properties: "അനന്തരാവകാശമായി ലഭിച്ച സ്വത്തുക്കൾ?" + import_date: "ഇറക്കുമതി തീയതി" + actions: + edit: എഡിറ്റ് ചെയ്യുക + clone: ക്ലോൺ + adjustments: + skipped_changing_canceled_order: "നിങ്ങൾക്ക് റദ്ദാക്കിയ ഓർഡർ മാറ്റാൻ കഴിയില്ല." + begins_at: ആരംഭിക്കുന്നത് + begins_on: -ൽ ആരംഭിക്കുന്നു + bill_address: "ബിൽ വിലാസം" + ship_address: "അയക്കേണ്ട വിലാസം" + customer: ഉപഭോക്താവ് + date: തീയതി + email: ഇമെയിൽ + ends_at: അവസാനിക്കുന്നത് + ends_on: -ൽ അവസാനിക്കുന്നു + name: പേര് + first_name: പേരിന്റെ ആദ്യഭാഗം + last_name: പേരിന്റെ അവസാന ഭാഗം + on_hand: കയ്യിൽ + on_demand: ആവശ്യപ്പെടുന്നതനുസരിച്ച് + on_demand?: ആവശ്യപ്പെടുന്നതനുസരിച്ച്? + order_cycle: ഓർഡർ സൈക്കിൾ + payment: പേയ്മെന്റ് + payment_method: പണമടയ്ക്കൽ രീതി + phone: ഫോൺ + price: വില + producer: പ്രൊഡ്യൂസർ + image: ചിത്രം + product: ഉൽപ്പന്നം + quantity: അളവ് + schedule: പട്ടിക + shipping: ഷിപ്പിംഗ് + shipping_method: ഷിപ്പിംഗ് രീതി + shop: ഷോപ്പ് + sku: എസ്.കെ.യു + status_state: സംസ്ഥാനം + tags: ടാഗുകൾ + variant: വേരിയന്റ് + weight: ഭാരം + volume: വ്യാപ്തം + items: ഇനങ്ങൾ + select_all: എല്ലാം തിരഞ്ഞെടുക്കുക + quick_search: ദ്രുത തിരയൽ + clear_all: എല്ലാം മായ്ക്കുക + start_date: "ആരംഭിക്കുന്ന തീയതി" + end_date: "അവസാനിക്കുന്ന തീയതി" + unsaved_changes: "ചില മാറ്റങ്ങൾ നിങ്ങൾ സേവ് ചെയ്തിട്ടില്ല" + form_invalid: "ഫോമിൽ നഷ്‌ടമായതോ അസാധുവായതോ ആയ ഫീൽഡുകൾ ഉണ്ട്" + clear_filters: ഫിൽട്ടറുകൾ മായ്ക്കുക + clear: ക്ലിയർ + save: സേവ് ചെയ്യുക + cancel: റദ്ദാക്കുക + back: തിരികെ + show_more: കൂടുതൽ കാണിക്കുക + show_n_more: '%{num} കൂടുതൽ കാണിക്കുക' + choose: "തിരഞ്ഞെടുക്കുക..." + please_select: ദയവായി തിരഞ്ഞെടുക്കുക... + column_save_as_default: സ്ഥിരസ്ഥിതിയായി സംരക്ഷിക്കുക + columns: നിരകൾ + actions: പ്രവർത്തനങ്ങൾ + viewing: "കാണുന്നത്: %{current_view_name}" + description: വിവരണം + whats_this: എന്താണിത്? + tag_has_rules: "ഈ ടാഗിനായി നിലവിലുള്ള നിയമങ്ങൾ: %{num}" + has_one_rule: "ഒരു നിയമമുണ്ട്" + has_n_rules: "%{num} നിയമങ്ങളുണ്ട്" + unsaved_confirm_leave: "ഈ പേജിൽ സേവ് ചെയ്യാത്ത മാറ്റങ്ങളുണ്ട്. സേവ് ചെയ്യാതെ തുടരണോ?" + available_units: "ലഭ്യമായ യൂണിറ്റുകൾ" + shopfront_settings: + embedded_shopfront_settings: "ഉൾച്ചേർത്ത ഷോപ്പ്ഫ്രണ്ട് ക്രമീകരണങ്ങൾ" + enable_embedded_shopfronts: "എംബഡഡ് ഷോപ്പ്ഫ്രണ്ടുകൾ പ്രവർത്തനക്ഷമമാക്കുക" + embedded_shopfronts_whitelist: "ബാഹ്യ ഡൊമെയ്‌നുകളുടെ വൈറ്റ്‌ലിസ്റ്റ്" + terms_of_service_files: + create: + select_file: "ദയവായി ആദ്യം ഒരു ഫയൽ തിരഞ്ഞെടുക്കുക." + show: + title: "സേവന നിബന്ധന ഫയലുകൾ" + no_files: "സേവന നിബന്ധനകളൊന്നും ഇതുവരെ അപ്‌ലോഡ് ചെയ്തിട്ടില്ല." + current_terms_html: "നിലവിലെ %{tos_link} കാണുക. അപ്‌ലോഡ് സമയം: %{datetime}." + terms_of_service: "സേവന നിബന്ധനകൾ" + delete: "ഫയൽ ഡിലീറ്റ് ചെയ്യുക" + confirm_delete: "നിലവിലെ സേവന നിബന്ധനകളുടെ ഫയൽ ഡിലീറ്റ് ചെയ്യണമെന്ന് തീർച്ചയാണോ?" + attachment: "അറ്റാച്ച്മെന്റ്" + create_terms_of_service: "സേവന നിബന്ധനകളുടെ ഫയൽ സൃഷ്ടിക്കുക" + number_localization: + number_localization_settings: "നമ്പർ ലോകലൈസേഷൻ ക്രമീകരണങ്ങൾ" + enable_localized_number: "അന്തർദേശീയ ആയിരം/ദശാംശം സെപ്പറേറ്റർ ലോജിക് ഉപയോഗിക്കുക" + invoice_settings: + edit: + title: "ഇൻവോയ്സ് ക്രമീകരണങ്ങൾ" + enable_invoices?: "ഇൻവോയ്‌സുകൾ പ്രവർത്തനക്ഷമമാക്കണോ?" + invoice_style2?: "ഓരോ ഇനത്തിനുമുള്ള നികുതി നിരക്ക് വിവരവും, ഒരു നിരക്കിന് മൊത്തം നികുതി വിശദാംശങ്ങളും ഉൾപ്പെടുന്ന ഇതര ഇൻവോയ്സ് മോഡൽ ഉപയോഗിക്കുക (നികുതി ഒഴികെയുള്ള വിലകൾ പ്രദർശിപ്പിക്കുന്ന രാജ്യങ്ങൾക്ക് ഇതുവരെ അനുയോജ്യമല്ല)" + enterprise_number_required_on_invoices?: "ഇൻവോയ്സ് സൃഷ്ടിക്കാൻ ഒരു എബിഎൻ ആവശ്യമുണ്ടോ?" + stripe_connect_settings: + edit: + title: "സ്ട്രൈപ്പ് കണക്ട്" + settings: "ക്രമീകരണങ്ങൾ" + stripe_connect_enabled: സ്ട്രൈപ്പ് കണക്ട് ഉപയോഗിച്ച് പേയ്‌മെന്റുകൾ സ്വീകരിക്കാൻ ഷോപ്പുകളെ പ്രാപ്‌തമാക്കണോ? + no_api_key_msg: ഈ എന്റർപ്രൈസസിന് സ്ട്രൈപ്പ് അക്കൗണ്ട് നിലവിലില്ല. + configuration_explanation_html: സ്ട്രൈപ്പ് കണക്റ്റ് ഇന്റഗ്രേഷൻ കോൺഫിഗർ ചെയ്യുന്നതിനുള്ള വിശദമായ നിർദ്ദേശങ്ങൾക്ക്, ദയവായി ഈ ഗൈഡ് പരിശോധിക്കുക. + status: പദവി + ok: ശരി + instance_secret_key: അടിയന്തര രഹസ്യ കീ + account_id: അക്കൗണ്ട് ഐഡി + business_name: ബിസിനസ്സ് പേര് + charges_enabled: കൂലി നിരക്കുകൾ പ്രവർത്തനക്ഷമമാക്കി + charges_enabled_warning: "മുന്നറിയിപ്പ്: നിങ്ങളുടെ അക്കൗണ്ടിന് കൂലി നിരക്കുകൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല" + auth_fail_error: നിങ്ങൾ നൽകിയ എപിഐ കീ അസാധുവാണ് + empty_api_key_error_html: സ്ട്രൈപ്പ് എപിഐ കീ നൽകിയിട്ടില്ല. നിങ്ങളുടെ എപിഐ കീ സജ്ജമാക്കാൻ, ഈ നിർദ്ദേശങ്ങൾ പാലിക്കുക + matomo_settings: + edit: + title: "മറ്റോമോ സെറ്റിങ്‌സ്" + matomo_url: "മറ്റോമോ യുആർഎൽ" + matomo_site_id: "മറ്റോമോ സൈറ്റ് ഐഡി" + matomo_tag_manager_url: "മറ്റോമോ ടാഗ് മാനേജർ യുആർഎൽ" + info_html: "മറ്റോമോ ഒരു വെബ്, മൊബൈൽ അനലിറ്റിക്സ് ആപ്ലിക്കേഷനാണ്. നിങ്ങൾക്ക് ഒന്നുകിൽ മറ്റോമോ ഓൺ-പ്രിമൈസസ് ഹോസ്റ്റ് ചെയ്യാം അല്ലെങ്കിൽ ക്ലൗഡ്-ഹോസ്‌റ്റഡ് സേവനം ഉപയോഗിക്കാം. കൂടുതൽ വിവരങ്ങൾക്ക് matomo.org കാണുക." + config_instructions_html: "ഇവിടെ നിങ്ങൾക്ക് ഓഎഫ്എൻ മറ്റോമോ സംയോജനം ക്രമീകരിക്കാം. താഴെയുള്ള മറ്റോമോ യുആർഎൽ, ഉപയോക്തൃ ട്രാക്കിംഗ് വിവരങ്ങൾ അയയ്‌ക്കുന്ന മറ്റോമോ ഇൻസ്റ്റൻസിലേക്ക് നയിക്കുന്നു; ഇത് ശൂന്യമായി വിടുകയാണെങ്കിൽ, മറ്റോമോ ഉപയോക്തൃ ട്രാക്കിംഗ് പ്രവർത്തനരഹിതമാകും. സൈറ്റ് ഐഡി ഫീൽഡ് നിർബന്ധമല്ല, എന്നാൽ നിങ്ങൾ ഒരു മറ്റോമോ ഇൻസ്റ്റൻസിൽ ഒന്നിലധികം വെബ്‌സൈറ്റുകൾ ട്രാക്കുചെയ്യുകയാണെങ്കിൽ അത് ഉപയോഗപ്രദമാണ്; ഇത് മറ്റോമോ ഇൻസ്റ്റൻസ് കൺസോളിൽ കാണാം." + config_instructions_tag_manager_html: "മറ്റോമോ ടാഗ് മാനേജർ യുആർഎൽ സജ്ജീകരിക്കുന്നത് മറ്റോമോ ടാഗ് മാനേജർ സംവിധാനം പ്രവർത്തനക്ഷമമാക്കുന്നു. അനലിറ്റിക്സ് ഇവന്റുകൾ സജ്ജീകരിക്കാൻ ഈ ഉപകരണം നിങ്ങളെ അനുവദിക്കുന്നു. മറ്റോമോ ടാഗ് മാനേജർ യുആർഎൽ, മറ്റോമോ ടാഗ് മാനേജറിന്റെ ഇൻസ്റ്റാൾ കോഡ് വിഭാഗത്തിൽ നിന്ന് പകർത്തിയതാണ്. ഈ ഓപ്‌ഷനുകൾ യുആർഎൽ മാറ്റുമെന്നതിനാൽ നിങ്ങൾ ശരിയായ കണ്ടെയ്‌നറും എൻവയോണ്മെന്റും തിരഞ്ഞെടുത്തുവെന്ന് ഉറപ്പാക്കുക." + customers: + index: + new_customer: "പുതിയ ഉപഭോക്താവ്" + code: കോഡ് + duplicate_code: "ഈ കോഡ് ഇതിനകം ഉപയോഗിച്ചു." + bill_address: "ബില്ലിംഗ് വിലാസം" + ship_address: "ഷിപ്പിംഗ് വിലാസം" + balance: "മിച്ചം" + update_address_success: "വിലാസം വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു." + update_address_error: "ക്ഷമിക്കണം! ദയവായി ആവശ്യമായ എല്ലാ ഫീൽഡുകളിലും വിവരങ്ങൾ ചേർക്കുക!" + edit_bill_address: "ബില്ലിംഗ് വിലാസം തിരുത്തുക" + edit_ship_address: "ഷിപ്പിംഗ് വിലാസം തിരുത്തുക" + required_fileds: "ആവശ്യമുള്ള ഫീൽഡുകൾ ഒരു നക്ഷത്രചിഹ്നം ഉപയോഗിച്ച് സൂചിപ്പിച്ചിരിക്കുന്നു" + select_country: "രാജ്യം തിരഞ്ഞെടുക്കുക" + select_state: "സംസ്ഥാനം തിരഞ്ഞെടുക്കുക" + edit: "എഡിറ്റ് ചെയ്യുക" + update_address: "വിലാസം അപ്ഡേറ്റ് ചെയ്യുക" + confirm_delete: "ഡിലീറ്റ് ചെയ്യണമെന്ന് ഉറപ്പാണോ?" + search_by_email: "ഇമെയിൽ/കോഡ് വഴി തിരയുക..." + guest_label: "ഗസ്റ്റ് ചെക്ക്ഔട്ട്" + credit_owed: "കടപ്പെട്ടിരിക്കുന്നു" + balance_due: "മിച്ച കടം" + destroy: + has_associated_subscriptions: "ഡിലീറ്റ് പരാജയപ്പെട്ടു: ഈ ഉപഭോക്താവിന് സജീവമായ സബ്‌സ്‌ക്രിപ്‌ഷനുകളുണ്ട്. ആദ്യം അവ റദ്ദാക്കുക." + contents: + edit: + title: ഉള്ളടക്കം + header: തലക്കെട്ട് + home_page: ഹോം പേജ് + producer_signup_page: പ്രൊഡ്യൂസർ സൈൻഅപ്പ് പേജ് + hub_signup_page: ഹബ് സൈൻഅപ്പ് പേജ് + group_signup_page: ഗ്രൂപ്പ് സൈൻഅപ്പ് പേജ് + main_links: പ്രധാന മെനു ലിങ്കുകൾ + footer_and_external_links: അടിക്കുറിപ്പും ബാഹ്യ ലിങ്കുകളും + your_content: നിങ്ങളുടെ ഉള്ളടക്കം + user_guide: ഉപയോക്തൃ ഗൈഡ് + map: മാപ്പ് + enterprise_fees: + index: + title: "എന്റർപ്രൈസ് ഫീസ്" + enterprise: "എന്റർപ്രൈസ്" + fee_type: "ഫീസ് തരം" + name: "പേര്" + tax_category: "നികുതി വിഭാഗം" + calculator: "കാൽക്കുലേറ്റർ" + calculator_values: "കാൽക്കുലേറ്റർ മൂല്യങ്ങൾ" + search: "തിരയുക" + name_placeholder: "ഉദാ: പാക്കിംഗ് ഫീസ്" + enterprise_groups: + index: + new_button: പുതിയ എന്റർപ്രൈസ് ഗ്രൂപ്പ് + form_primary_details: + primary_details: "പ്രാഥമിക വിവരങ്ങൾ" + form_users: + users: "ഉപയോക്താക്കൾ" + form_about: + about: "കുറിച്ച്" + form_images: + images: "ചിത്രങ്ങൾ" + form_address: + contact: "ബന്ധപ്പെടുക" + form_web: + web: "വെബ് ഉറവിടങ്ങൾ" + enterprise_roles: + form: + manages: നിർവ്വഹണം + enterprise_role: + manages: നിർവ്വഹണം + products: + unit_name_placeholder: 'ഉദാ: കുലകൾ' + index: + unit: യൂണിറ്റ് + display_as: പ്രദർശന മാർഗ്ഗം + category: വിഭാഗം + tax_category: നികുതി വിഭാഗം + inherits_properties?: സ്വത്തുക്കൾ അവകാശമാക്കുന്നുണ്ടോ? + av_on: "Av. ഓൺ" + import_date: ഇറക്കുമതി ചെയ്തത് + upload_an_image: ഒരു ചിത്രം അപ്‌ലോഡ് ചെയ്യുക + seo: + product_search_keywords: "ഉൽപ്പന്നം തിരയുന്നതിനുള്ള കീവേഡുകൾ" + product_search_tip: "കടകളിൽ നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ തിരയാൻ സഹായിക്കുന്നതിന് വാക്കുകൾ ടൈപ്പ് ചെയ്യുക. ഓരോ കീവേർഡിനും ഇടയിൽ ശൂന്യസ്ഥലം നൽകണം." + seo_tip: "വെബിൽ നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ തിരയാൻ സഹായിക്കുന്നതിന് വാക്കുകൾ ടൈപ്പ് ചെയ്യുക. ഓരോ കീവേർഡിനും ഇടയിൽ ശൂന്യസ്ഥലം നൽകണം." + search: "തിരയുക" + properties: + property_name: "പ്രോപർറ്റിയുടെ പേര്" + inherited_property: "പാരമ്പര്യ സ്വത്ത്" + variants: + infinity: "അനന്തത" + to_order_tip: "ഓർഡർ ചെയ്യാൻ തയ്യാറാക്കിയ ഇനങ്ങൾക്ക് സെറ്റ് സ്റ്റോക്ക് ലെവൽ ഇല്ല, ഉദാഹരണത്തിന്, ഓർഡർ അനുസരിച്ച് തയ്യാറാക്കുന്ന ബ്രഡ് പാക്കറ്റുകൾ." + back_to_products_list: "ഉൽപ്പന്നങ്ങളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" + editing_product: "ഉൽപ്പന്നം തിരുത്തുന്നു" + tabs: + product_details: "ഉൽപ്പന്നത്തിന്റെ വിവരം" + group_buy_options: "ഗ്രൂപ്പ് വാങ്ങൽ ഓപ്ഷനുകൾ" + images: "ചിത്രങ്ങൾ" + variants: "വകഭേദങ്ങൾ" + product_properties: "ഉൽപ്പന്ന സവിശേഷതകൾ" + products_v3: + index: + header: + title: ഉൽപ്പന്നങ്ങൾ മൊത്തമായി തിരുത്തുക + loading: നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ലോഡ് ചെയ്യുന്നു + sort: + pagination: + total_html: "നിങ്ങളുടെ തിരയൽ മാനദണ്ഡങ്ങൾക്കനുസരിച്ച് %{total} ഉൽപ്പന്നങ്ങൾ കണ്ടെത്തി. %{from} മുതൽ %{to} വരെ കാണിക്കുന്നു." + per_page: + show: കാണിക്കുക + per_page: "ഓരോ പേജിലും %{num}" + clear_search: തിരയൽ മായ്‌ക്കുക + filters: + search_products: ഉൽപ്പന്നങ്ങൾക്കായി തിരയുക + all_producers: എല്ലാ പ്രൊഡ്യൂസേഴ്‌സും + all_categories: എല്ലാ വിഭാഗങ്ങളും + producers: + label: പ്രൊഡ്യൂസഴ്സ് + categories: + label: വിഭാഗങ്ങൾ + search: തിരയുക + no_products: + no_products_found: ഉൽപ്പന്നങ്ങളൊന്നും കണ്ടെത്തിയില്ല + import_products: ഒന്നിലധികം ഉൽപ്പന്നങ്ങൾ ഇറക്കുമതി ചെയ്യുക + no_products_found_for_search: നിങ്ങളുടെ തിരയൽ മാനദണ്ഡങ്ങൾക്കനുസരിച്ച് ഉൽപ്പന്നങ്ങളൊന്നും കണ്ടെത്തിയില്ല + table: + changed_summary: + one: "%{count} ഉൽപ്പന്നം പരിഷ്‌ക്കരിച്ചു." + other: "%{count} ഉൽപ്പന്നങ്ങൾ പരിഷ്‌ക്കരിച്ചു." + error_summary: + saved: + one: "%{count} ഉൽപ്പന്നം ശരിയായി സേവ് ചെയ്തു, പക്ഷേ" + other: "%{count} ഉൽപ്പന്നങ്ങൾ ശരിയായി സേവ് ചെയ്തു, പക്ഷേ" + invalid: + one: "%{count} ഉൽപ്പന്നം സംരക്ഷിക്കാൻ കഴിഞ്ഞില്ല. പിശകുകൾ അവലോകനം ചെയ്‌ത് വീണ്ടും ശ്രമിക്കുക." + other: "%{count} ഉൽപ്പന്നങ്ങൾ സേവ് ചെയ്യാൻ കഴിഞ്ഞില്ല. തകരാറുകൾ അവലോകനം ചെയ്‌ത് വീണ്ടും ശ്രമിക്കുക." + save: മാറ്റങ്ങൾ സേവ് ചെയ്യുക + reset: മാറ്റങ്ങൾ ഉപേക്ഷിക്കുക + product_import: + title: ഉൽപ്പന്ന ഇറക്കുമതി + file_not_found: ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല + no_data: സ്‌പ്രെഡ്‌ഷീറ്റിൽ ഡാറ്റയൊന്നും കണ്ടെത്തിയില്ല + confirm_reset: "ഇതിനായുള്ള എല്ലാ ഉൽപ്പന്നങ്ങളുടെയും സ്റ്റോക്ക് ലെവൽ പൂജ്യമായി സജ്ജമാക്കും\n അപ്‌ലോഡ് ചെയ്ത ഫയലിൽ ഇല്ലാത്ത എന്റർപ്രൈസ്" + model: + no_file: "തകരാറ്: ഒരു ഫയലും അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല" + could_not_process: "ഫയൽ പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല: അസാധുവായ ഫയൽ തരം" + incorrect_value: തെറ്റായ മൂല്യം + conditional_blank: യൂണിറ്റ്_ടൈപ്പ് ശൂന്യമായിരിക്കാൻ കഴിയില്ല + no_product: ഡാറ്റാബേസിലെ ഏതെങ്കിലും ഉൽപ്പന്നങ്ങളുമായി പൊരുത്തപ്പെടുന്നില്ല + not_found: ഡാറ്റാബേസിൽ കണ്ടെത്തിയില്ല + category_not_found: അനുവദനീയമായ വിഭാഗങ്ങളുമായി പൊരുത്തപ്പെടുന്നില്ല. ഉൽപ്പന്ന ഇറക്കുമതി പേജിൽ നിന്ന് തിരഞ്ഞെടുക്കാനുള്ള ശരിയായ വിഭാഗങ്ങൾ കാണുക, അല്ലെങ്കിൽ അക്ഷരത്തെറ്റ് ഇല്ലെന്ന് ഉറപ്പുവരുത്തുക. + not_updatable: ഉൽപ്പന്ന ഇറക്കുമതി വഴി നിലവിലുള്ള ഉൽപ്പന്നങ്ങളിൽ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല + values_must_be_same: ഒരേ പേരിലുള്ള ഉൽപ്പന്നങ്ങൾക്ക് സമാനമായിരിക്കണം + blank: ശൂന്യമായിരിക്കാൻ കഴിയില്ല + products_no_permission: ഈ എന്റർപ്രൈസസിനായി ഉൽപ്പന്നങ്ങൾ നിയന്ത്രിക്കാൻ നിങ്ങൾക്ക് അനുമതിയില്ല + inventory_no_permission: ഈ പ്രൊഡ്യൂസറിനായി ചരക്കുപട്ടിക സൃഷ്ടിക്കാൻ നിങ്ങൾക്ക് അനുമതിയില്ല + none_saved: ഉൽപ്പന്നങ്ങളൊന്നും വിജയകരമായി സേവ് ചെയ്തില്ല + line_number: "ലൈൻ %{number} :" + encoding_error: "നിങ്ങളുടെ സോഴ്സ് ഫയലിന്റെ ഭാഷാ ക്രമീകരണം പരിശോധിച്ച് അത് യുടിഎഫ്-8 എൻകോഡിംഗിൽ സേവ് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക" + unexpected_error: "ഫയൽ തുറക്കുന്ന സമയം ഉൽപ്പന്ന ഇറക്കുമതിയിൽ ഒരു അപ്രതീക്ഷിത തകരാറ് നേരിട്ടു: %{error_message}" + malformed_csv: "ഉൽപ്പന്ന ഇറക്കുമതി നടക്കുമ്പോൾ തെറ്റായ സി.എസ്.വി അഭിമുഖീകരിച്ചു: %{error_message}" + index: + notice: "ശ്രദ്ധിക്കുക" + beta_notice: "ഈ ഫീച്ചർ ഇപ്പോഴും ബീറ്റയിലാണ്: ഇത് ഉപയോഗിക്കുമ്പോൾ നിങ്ങൾക്ക് ചില തകരാറുകൾ അനുഭവപ്പെട്ടേക്കാം. പിന്തുണയ്ക്കുവേണ്ടി ബന്ധപ്പെടാൻ മടിക്കേണ്ട." + select_file: അപ്‌ലോഡ് ചെയ്യാൻ ഒരു സ്‌പ്രെഡ്‌ഷീറ്റ് തിരഞ്ഞെടുക്കുക + spreadsheet: സ്പ്രെഡ്ഷീറ്റ് + choose_import_type: ഇറക്കുമതി തരം തിരഞ്ഞെടുക്കുക + import_into: ഇറക്കുമതി തരം + product_list: ഉൽപ്പന്ന ലിസ്റ്റ് + inventories: ചരക്കുകൾ + import: ഇറക്കുമതി ചെയ്യുക + upload: അപ്‌ലോഡ് ചെയ്യുക + csv_templates: സി.എസ്.വി ടെംപ്ലേറ്റുകൾ + product_list_template: ഉൽപ്പന്ന ലിസ്റ്റ് ടെംപ്ലേറ്റ് ഡൗൺലോഡ് ചെയ്യുക + inventory_template: ചരക്കുപട്ടിക ടെംപ്ലേറ്റ് ഡൗൺലോഡ് ചെയ്യുക + category_values: ലഭ്യമായ വിഭാഗ മൂല്യങ്ങൾ + product_categories: ഉൽപ്പന്ന വിഭാഗങ്ങൾ + tax_categories: നികുതി വിഭാഗങ്ങൾ + shipping_categories: ഷിപ്പിംഗ് വിഭാഗങ്ങൾ + import: + review: അവലോകനം + import: ഇറക്കുമതി ചെയ്യുക + save: രക്ഷിക്കും + results: ഫലങ്ങൾ + save_imported: ഇറക്കുമതി ചെയ്ത ഉൽപ്പന്നങ്ങൾ സംരക്ഷിക്കുക + no_valid_entries: സാധുവായ രേഖപ്പെടുത്തലുകളൊന്നും കണ്ടെത്തിയില്ല + none_to_save: സേവ് ചെയ്യാൻ കഴിയുന്ന രേഖപ്പെടുത്തലുകളൊന്നുമില്ല + some_invalid_entries: ഇറക്കുമതി ചെയ്ത ഫയലിൽ അസാധുവായ രേഖപ്പെടുത്തലുകൾ അടങ്ങിയിരിക്കുന്നു + fix_before_import: ഈ തകരാറുകൾ പരിഹരിച്ച് ഫയൽ വീണ്ടും ഇറക്കുമതി ചെയ്യാൻ ശ്രമിക്കുക + save_valid?: സാധുവായ രേഖപ്പെടുത്തലുകൾ ഇപ്പോൾ സേവ് ചെയ്യുകയും മറ്റുള്ളവ ഉപേക്ഷിക്കുകയും ചെയ്യണോ? + no_errors: തകരാറുകളൊന്നും കണ്ടെത്തിയില്ല! + save_all_imported?: ഇറക്കുമതി ചെയ്ത എല്ലാ ഉൽപ്പന്നങ്ങളും സേവ് ചെയ്യണോ? + options_and_defaults: ഇമ്പോർട്ട് ഓപ്‌ഷനുകളും ഡിഫോൾട്ടുകളും + no_permission: ഈ എന്റർപ്രൈസ് മാനേജ് ചെയ്യാൻ നിങ്ങൾക്ക് അനുമതിയില്ല + not_found: എന്റർപ്രൈസ് ഡാറ്റാബേസിൽ കണ്ടെത്താൻ കഴിഞ്ഞില്ല + no_name: പേരില്ല + blank_enterprise: ചില ഉൽപ്പന്നങ്ങൾക്ക് ഒരു എന്റർപ്രൈസ് വ്യതിരിക്തത ഇല്ല + reset_absent?: ഇല്ലാത്ത ഉൽപ്പന്നങ്ങൾ പുനഃസജ്ജമാക്കുക + reset_absent_tip: ഫയലിൽ ഇല്ലാത്ത എല്ലാ ഉൽപ്പന്നങ്ങൾക്കും സ്റ്റോക്ക് പൂജ്യമായി സജ്ജമാക്കുക + overwrite_all: എല്ലാം തിരുത്തിയെഴുതുക + overwrite_empty: ശൂന്യമാണെങ്കിൽ തിരുത്തിയെഴുതുക + default_stock: സ്റ്റോക്ക് ലെവൽ സജ്ജമാക്കുക + default_tax_cat: നികുതി വിഭാഗം സജ്ജമാക്കുക + default_shipping_cat: ഷിപ്പിംഗ് വിഭാഗം സജ്ജമാക്കുക + default_available_date: ലഭ്യമായ തീയതി സജ്ജമാക്കുക + validation_overview: ഇറക്കുമതി നിർണ്ണയ അവലോകനം + entries_found: ഇറക്കുമതി ചെയ്ത ഫയലിൽ രേഖപ്പെടുത്തലുകൾ കണ്ടെത്തി + entries_with_errors: ഇനങ്ങളിൽ തകരാറുകൾ ഉണ്ട് അതിനാൽ ഇറക്കുമതി ചെയ്യില്ല + products_to_create: ഉൽപ്പന്നങ്ങൾ സൃഷ്ടിക്കും + products_to_update: ഉൽപ്പന്നങ്ങൾ അപ്ഡേറ്റ് ചെയ്യും + inventory_to_create: ചരക്കുപ്പട്ടിക ഇനങ്ങൾ സൃഷ്ടിക്കും + inventory_to_update: ചരക്കുപ്പട്ടിക ഇനങ്ങൾ അപ്ഡേറ്റ് ചെയ്യും + products_to_reset: നിലവിലുള്ള ഉൽപ്പന്നങ്ങളുടെ സ്റ്റോക്ക് പൂജ്യത്തിലേക്ക് പുനഃസജ്ജമാക്കും + inventory_to_reset: നിലവിലുള്ള ചരക്കുപ്പട്ടിക ഇനങ്ങളുടെ സ്റ്റോക്ക് പൂജ്യത്തിലേക്ക് പുനഃസജ്ജമാക്കും + line: രേഖ + item_line: ഇനം രേഖ + import_review: + not_updatable_tip: "നിലവിലുള്ള ഉൽപ്പന്നങ്ങൾക്കായി ബൾക്ക് ഇമ്പോർട്ട് വഴി ഇനിപ്പറയുന്ന ഫീൽഡുകൾ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയില്ല:" + fields_ignored: ഇറക്കുമതി ചെയ്ത ഉൽപ്പന്നങ്ങൾ സേവ് ചെയ്യപ്പെടുമ്പോൾ ഈ ഫീൽഡുകൾ അവഗണിക്കപ്പെടും. + entries_table: + not_updatable: നിലവിലുള്ള ഉൽപ്പന്നങ്ങളുടെ ബൾക്ക് ഇറക്കുമതി വഴി ഈ ഫീൽഡ് അപ്‌ഡേറ്റ് ചെയ്യാനാകില്ല + save_results: + final_results: അന്തിമ ഫലങ്ങൾ ഇറക്കുമതി ചെയ്യുക + products_created: ഉൽപ്പന്നങ്ങൾ സൃഷ്ടിച്ചു + products_updated: ഉൽപ്പന്നങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു + inventory_created: ചരക്കുപ്പട്ടിക ഇനങ്ങൾ സൃഷ്ടിച്ചു + inventory_updated: ചരക്കുപ്പട്ടിക ഇനങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു + products_reset: ഉൽപ്പന്നങ്ങളുടെ സ്റ്റോക്ക് ലെവൽ പൂജ്യത്തിലേക്ക് റീസെറ്റ് ചെയ്തു + inventory_reset: ചരക്കുപ്പട്ടിക ഇനങ്ങളുടെ സ്റ്റോക്ക് ലെവൽ പൂജ്യത്തിലേക്ക് റീസെറ്റ് ചെയ്തു + all_saved: "എല്ലാ ഇനങ്ങളും വിജയകരമായി സേവ് ചെയ്തു" + some_saved: "ഇനങ്ങൾ വിജയകരമായി സേവ് ചെയ്തു" + save_errors: തകരാറുകൾ സേവ് ചെയ്യുക + import_again: മറ്റൊരു ഫയൽ അപ്‌ലോഡ് ചെയ്യുക + view_products: ഉൽപ്പന്നങ്ങളുടെ പേജിലേക്ക് പോകുക + view_inventory: ചരക്കുപ്പട്ടിക പേജിലേക്ക് പോകുക + product_headings: + producer: പ്രൊഡ്യൂസർ + sku: എസ്.കെ.യു + name: പേര് + display_name: പ്രദർശന നാമം + category: വിഭാഗം + description: വിവരണം + units: യൂണിറ്റുകൾ + unit_type: യൂണിറ്റ് തരം + variant_unit_name: വേരിയന്റ് യൂണിറ്റിന്റെ പേര് + price: വില + on_hand: കയ്യിൽ + on_demand: ആവശ്യപ്പെടുന്നതനുസരിച്ച് + shipping_category: ഷിപ്പിംഗ് വിഭാഗം + tax_category: നികുതി വിഭാഗം + variant_overrides: + loading_flash: + loading_inventory: ചരക്കുപ്പട്ടിക ലോഡുചെയ്യുന്നു + index: + title: ഇൻവെന്ററി + description: നിങ്ങളുടെ സംരംഭങ്ങൾക്കായുള്ള ചരക്കുപ്പട്ടികകൾ നിയന്ത്രിക്കാൻ ഈ പേജ് ഉപയോഗിക്കുക. ഇവിടെ സജ്ജീകരിച്ചിരിക്കുന്ന ഉൽപ്പന്ന വിശദാംശങ്ങൾ 'ഉൽപ്പന്നങ്ങൾ' പേജിൽ സജ്ജീകരിച്ചിരിക്കുന്നവയെ അസാധുവാക്കും + enable_reset?: സ്റ്റോക്ക് റീസെറ്റ് പ്രവർത്തനക്ഷമമാക്കണോ? + default_stock: "സ്ഥിരസ്ഥിതി സ്റ്റോക്ക്" + inherit?: അനന്തരാവകാശമോ? + add: ചേർക്കുക + hide: മറയ്ക്കുക + import_date: ഇറക്കുമതി ചെയ്തത് + select_a_shop: ഒരു ഷോപ്പ് തിരഞ്ഞെടുക്കുക + review_now: ഇപ്പോൾ അവലോകനം ചെയ്യുക + new_products_alert_message: നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് ചേർക്കാൻ %{new_product_count} പുതിയ ഉൽപ്പന്നങ്ങൾ ലഭ്യമാണ്. + currently_empty: നിങ്ങളുടെ ചരക്കുപ്പട്ടിക നിലവിൽ ശൂന്യമാണ് + no_matching_products: നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിൽ പൊരുത്തപ്പെടുന്ന ഉൽപ്പന്നങ്ങളൊന്നും കണ്ടെത്തിയില്ല + no_hidden_products: ഈ ചരക്കുപ്പട്ടികയിൽ നിന്ന് ഉൽപ്പന്നങ്ങളൊന്നും മറച്ചിട്ടില്ല + no_matching_hidden_products: നിങ്ങളുടെ തിരയൽ മാനദണ്ഡങ്ങളുമായി പൊരുത്തപ്പെടുന്ന മറച്ചുവച്ചിരിക്കുന്ന ഉൽപ്പന്നങ്ങളൊന്നുമില്ല + no_new_products: ഈ ചരക്കുപ്പട്ടികയിലേക്ക് ചേർക്കാൻ പുതിയ ഉൽപ്പന്നങ്ങളൊന്നും ലഭ്യമല്ല + no_matching_new_products: നിങ്ങളുടെ തിരയൽ മാനദണ്ഡങ്ങളുമായി പൊരുത്തപ്പെടുന്ന പുതിയ ഉൽപ്പന്നങ്ങളൊന്നുമില്ല + inventory_powertip: ഇത് നിങ്ങളുടെ ഉൽപ്പന്നങ്ങളുടെ ചരക്കുപ്പട്ടികയാണ്. നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് ഉൽപ്പന്നങ്ങൾ ചേർക്കുന്നതിന്, ഡ്രോപ്പ്ഡൗണിൽ നിന്ന് 'പുതിയ ഉൽപ്പന്നങ്ങൾ' തിരഞ്ഞെടുക്കുക. + hidden_powertip: ഈ ഉൽപ്പന്നങ്ങൾ നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിൽ നിന്ന് മറച്ചിരിക്കുന്നു, നിങ്ങളുടെ ഷോപ്പിലേക്ക് ചേർക്കാൻ ലഭ്യമല്ല. നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് ഒരു ഉൽപ്പന്നം ചേർക്കാൻ 'ചേർക്കുക' ക്ലിക്ക് ചെയ്യാം. + new_powertip: ഈ ഉൽപ്പന്നങ്ങൾ നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് ചേർക്കാൻ ലഭ്യമാണ്. നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് ഒരു ഉൽപ്പന്നം ചേർക്കുന്നതിന് 'ചേർക്കുക' അല്ലെങ്കിൽ കാഴ്ചയിൽ നിന്ന് മറയ്ക്കാൻ 'മറയ്ക്കുക' ക്ലിക്കുചെയ്യുക. നിങ്ങൾക്ക് പിന്നീട് ഇത് മാറ്റാൻ സാധിക്കും! + controls: + back_to_my_inventory: എന്റെ ചരക്കുപ്പട്ടികയിലേക്ക് മടങ്ങുക + orders: + edit: + order_sure_want_to: ഈ ഓർഡർ %{event} ചെയ്യണമെന്ന് തീർച്ചയാണോ? + voucher_tax_included_in_price: "%{label} (വൗച്ചറിൽ നികുതി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്)" + invoice_email_sent: 'ഇൻവോയ്സ് ഇമെയിൽ അയച്ചു' + order_email_resent: 'ഓർഡർ ഇമെയിൽ വീണ്ടും അയച്ചു' + bulk_management: + tip: "ഒന്നിലധികം ഓർഡറുകളിലുടനീളം ഉൽപ്പന്നത്തിന്റെ അളവ് മാറ്റാൻ ഈ പേജ് ഉപയോഗിക്കുക. ആവശ്യമെങ്കിൽ, ഓർഡറുകളിൽ നിന്ന് ഉൽപ്പന്നങ്ങൾ പൂർണ്ണമായും നീക്കം ചെയ്യാം." + shared: "പങ്കിട്ട വിഭവം?" + order_no: "ഓർഡർ നമ്പർ." + order_date: "പൂർത്തിയാക്കിയത്" + max: "പരമാവധി" + product_unit: "ഉൽപ്പന്നം: യൂണിറ്റ്" + weight_volume: "ഭാരം/വ്യാപ്തം (ഗ്രാം)" + ask: "ചോദിക്കണോ?" + page_title: "ബൾക്ക് ഓർഡർ മാനേജ്മെന്റ്" + actions_delete: "തിരഞ്ഞെടുത്തത് ഡിലീറ്റ് ചെയ്യുക" + loading: "ഓർഡറുകൾ ലോഡുചെയ്യുന്നു" + no_results: "ഓർഡറുകളൊന്നും കണ്ടെത്തിയില്ല." + group_buy_unit_size: "ഗ്രൂപ്പ് വാങ്ങൽ - യൂണിറ്റ് വലുപ്പം" + total_qtt_ordered: "ഓർഡർ ചെയ്ത ആകെ അളവ്" + max_qtt_ordered: "ഓർഡർ ചെയ്ത പരമാവധി അളവ് " + current_fulfilled_units: "നിലവിലുള്ള പൂർത്തിയാക്കപ്പെട്ട യൂണിറ്റുകൾ" + max_fulfilled_units: "പരമാവധി പൂർത്തിയാക്കപ്പെട്ട യൂണിറ്റുകൾ" + order_error: "നിങ്ങൾക്ക് ഓർഡറുകൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നതിന് മുമ്പ് ചില തകരാറുകൾ പരിഹരിക്കേണ്ടതുണ്ട്.\n ചുവന്ന ബോർഡറുകളുള്ള എല്ലാ ഫീൽഡുകളിലും തകരാറുകൾ ഉണ്ട്." + variants_without_unit_value: "മുന്നറിയിപ്പ്: ചില വകഭേദങ്ങൾക്ക് യൂണിറ്റ് മൂല്യമില്ല" + all: "എല്ലാം" + select_variant: "ഒരു വകഭേദം തിരഞ്ഞെടുക്കുക" + note: + note_label: "കുറിപ്പ്:" + no_note_present: "കുറിപ്പൊന്നും നൽകിയിട്ടില്ല." + enterprise: + select_outgoing_oc_products_from: ഇതിൽ നിന്ന് പുറത്തേക്കുപോകുന്ന ഒസി ഉൽപ്പന്നങ്ങൾ തിരഞ്ഞെടുക്കുക + enterprises: + index: + title: എന്റർപ്രൈസസ് + new_enterprise: പുതിയ എന്റർപ്രൈസ് + producer?: "പ്രൊഡ്യൂസർ?" + package: പാക്കേജ് + status: പദവി + manage: കൈകാര്യം ചെയ്യുക + form: + about_us: + legend: "കുറിച്ച്" + desc_short: ഹൃസ്വ വിവരണം + desc_short_placeholder: ഒന്നോ രണ്ടോ വാക്യങ്ങളിൽ നിങ്ങളുടെ സംരംഭത്തെക്കുറിച്ച് ഞങ്ങളോട് പറയുക + desc_long: ഞങ്ങളേക്കുറിച്ച് + desc_long_placeholder: നിങ്ങളെക്കുറിച്ച് ഉപഭോക്താക്കളോട് പറയുക. ഈ വിവരം നിങ്ങളുടെ പൊതു പ്രൊഫൈലിൽ ദൃശ്യമാകും. + address: + legend: "വിലാസം" + business_details: + legend: "ബിസിനസ്സ് വിശദാംശങ്ങൾ" + upload: 'അപ്‌ലോഡ് ചെയ്യുക ' + abn: എബിഎൻ + abn_placeholder: ഉദാ. 99 123 456 789 + acn: എ.സി.എൻ + acn_placeholder: ഉദാ. 123 456 789 + display_invoice_logo: ഇൻവോയ്സുകളിൽ ലോഗോ പ്രദർശിപ്പിക്കുക + invoice_text: ഇൻവോയ്‌സുകളുടെ അവസാനം ഇഷ്‌ടാനുസൃതമാക്കിയ വാചകം ചേർക്കുക + terms_and_conditions: "ഉപാധികളും നിബന്ധനകളും" + remove_terms_and_conditions: "ഫയൽ നീക്കം ചെയ്യുക" + uploaded_on: "അപ്‌ലോഡ് ചെയ്തത്" + reset_form: "ഫോം പുനഃസജ്ജമാക്കുക" + business_address_legend: "വ്യാപാര മേൽവിലാസം" + invoice_item_sorting_legend: "ഇൻവോയ്സ് ഇനം തരം തിരിക്കുന്നു" + sort_items_by_supplier?: വിതരണക്കാർ പ്രകാരം ഇനങ്ങൾ തരം തിരിക്കണോ? + sort_items_by_supplier_tip: "പ്രവർത്തനക്ഷമമാക്കുമ്പോൾ, വിതരണക്കാരുടെ പേര് അനുസരിച്ച് ഇനങ്ങൾ തരം തിരിക്കും." + enabled: പ്രവർത്തനക്ഷമമാക്കുക + disabled: പ്രവർത്തനരഹിതമാക്കുക + business_address: + company_legal_name: കമ്പനിയുടെ നിയമപരമായ പേര് + company_placeholder: ഉദാഹരണം Inc. + address1: നിയമപരമായ വിലാസം + address1_placeholder: 123 ഹൈ സ്ട്രീറ്റ്. + address2: വിലാസം (തുടർച്ച) + legal_phone_number: നിയമപരമായ ഫോൺ നമ്പർ + phone_placeholder: "98 123 4565" + select_country: "രാജ്യം തിരഞ്ഞെടുക്കുക" + select_state: "സംസ്ഥാനം തിരഞ്ഞെടുക്കുക" + contact: + legend: "ബന്ധപ്പെടുക" + name: പേര് + name_placeholder: ഉദാ. ഗുസ്താവ് പ്ലം + email_address: പൊതു ഇമെയിൽ വിലാസം + email_address_placeholder: ഉദാ. enquiries@fresh-food.com + email_address_tip: "ഈ ഇമെയിൽ വിലാസം നിങ്ങളുടെ പൊതു പ്രൊഫൈലിൽ പ്രദർശിപ്പിക്കും" + phone: ഫോൺ + phone_placeholder: ഉദാ. 98 7654 3210 + whatsapp_phone: വാട്ട്സ്ആപ്പ് ഫോൺ നമ്പർ + whatsapp_phone_placeholder: ഉദാ. +61 4 9876 5432 + whatsapp_phone_tip: "വാട്ട്‌സ്ആപ്പ് ലിങ്കായി തുറക്കുന്നതിന്, ഈ നമ്പർ നിങ്ങളുടെ പൊതു പ്രൊഫൈലിൽ പ്രദർശിപ്പിക്കും." + website: വെബ്സൈറ്റ് + website_placeholder: ഉദാ. www.truffles.com + enterprise_fees: + legend: "എന്റർപ്രൈസ് ഫീസ്" + name: പേര് + fee_type: ഫീസ് തരം + manage_fees: എന്റർപ്രൈസ് ഫീസ് കൈകാര്യം ചെയ്യുക + no_fees_yet: നിങ്ങൾക്ക് ഇതുവരെ എന്റർപ്രൈസ് ഫീസുകളൊന്നുമില്ല. + create_button: ഇപ്പോൾത്തന്നെ ഒന്ന് ഉണ്ടാക്കുക + enterprise_permissions: + legend: "എന്റർപ്രൈസ് അനുമതികൾ" + enterprise_relationships: എന്റർപ്രൈസ് ബന്ധങ്ങൾ + images: + legend: "ചിത്രങ്ങൾ" + logo: ലോഗോ + promo_image_placeholder: '"ഞങ്ങളെക്കുറിച്ച്" എന്നതിൽ ഈ ചിത്രം പ്രദർശിപ്പിച്ചിരിക്കുന്നു' + promo_image_note1: 'ദയവായി ശ്രദ്ധിക്കുക:' + promo_image_note2: ഇവിടെ അപ്‌ലോഡ് ചെയ്യുന്ന ഏത് പ്രൊമോ ചിത്രത്തിന്റെയും വലിപ്പം 1200 x 260 ആക്കി മാറ്റും. + promo_image_note3: ഒരു എന്റർപ്രൈസിന്റെ പ്രൊഫൈൽ പേജിന്റെയും പോപ്പ്-അപ്പുകളുടെയും മുകളിൽ പ്രൊമോ ചിത്രം പ്രദർശിപ്പിക്കും. + remove_logo: "ചിത്രം നീക്കം ചെയ്യുക" + remove_promo_image: "ചിത്രം നീക്കം ചെയ്യുക" + inventory_settings: + legend: "ചരക്കുപ്പട്ടിക ക്രമീകരണങ്ങൾ" + text1: സ്റ്റോക്ക് ലെവലുകളും വിലകളും കൈകാര്യം ചെയ്യാൻ നിങ്ങൾക്ക് ഇത് തിരഞ്ഞെടുക്കാം - + inventory: ചരക്കുപ്പട്ടിക + text2: > + നിങ്ങൾ ഇൻവെന്ററി ടൂൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, നിങ്ങളുടെ വിതരണക്കാർ ചേർത്ത + പുതിയ ഉൽപ്പന്നങ്ങൾ സ്റ്റോക്ക് ചെയ്യുന്നതിന് മുമ്പ് നിങ്ങളുടെ ചരക്കുപ്പട്ടികയിലേക്ക് + ചേർക്കേണ്ടതുണ്ടോ എന്ന് നിങ്ങൾക്ക് തീരുമാനിക്കാം. നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ + നിയന്ത്രിക്കാൻ നിങ്ങളുടെ ചരക്കുപ്പട്ടിക ഉപയോഗിക്കുന്നില്ലെങ്കിൽ, ചുവടെയുള്ള + 'ശുപാർശ ചെയ്‌തത്' എന്ന ഓപ്ഷൻ നിങ്ങൾ തിരഞ്ഞെടുക്കണം: + preferred_product_selection_from_inventory_only_yes: പുതിയ ഉൽപ്പന്നങ്ങൾ എന്റെ ഷോപ്പ് ഫ്രണ്ടിൽ ഇടാം (ശുപാർശ ചെയ്‌തത്) + preferred_product_selection_from_inventory_only_no: പുതിയ ഉൽപ്പന്നങ്ങൾ എന്റെ ഷോപ്പ് ഫ്രണ്ടിൽ ഇടുന്നതിന് മുമ്പ് എന്റെ ചരക്കുപ്പട്ടികയിലേക്ക് ചേർക്കണം + payment_methods: + legend: "പേയ്മെന്റ് രീതികൾ" + name: പേര് + applies: ബാധകമാണോ? + manage: പേയ്‌മെന്റ് രീതികൾ കൈകാര്യം ചെയ്യുക + no_method_yet: നിങ്ങൾക്ക് ഇതുവരെ പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല. + create_button: പുതിയ പേയ്‌മെന്റ് രീതി ഉണ്ടാക്കുക + create_one_button: ഇപ്പോൾത്തന്നെ ഒന്ന് ഉണ്ടാക്കുക + primary_details: + legend: "പ്രാഥമിക വിശദാംശങ്ങൾ" + name: പേര് + name_placeholder: ഉദാ. പ്രൊഫസർ പ്ലമ്മിന്റെ ബയോഡൈനാമിക് ട്രഫിൾസ് + groups: ഗ്രൂപ്പുകൾ + groups_tip: നിങ്ങൾ അംഗമായ ഏതെങ്കിലും ഗ്രൂപ്പുകളോ പ്രദേശങ്ങളോ തിരഞ്ഞെടുക്കുക. ഇത് നിങ്ങളുടെ എന്റർപ്രൈസ് കണ്ടെത്താൻ ഉപഭോക്താക്കളെ സഹായിക്കും. + groups_placeholder: ലഭ്യമായ ഗ്രൂപ്പുകൾ തിരയാൻ ടൈപ്പ് ചെയ്യാൻ തുടങ്ങൂ... + primary_producer: പ്രാഥമിക പ്രൊഡ്യൂസർ? + primary_producer_tip: നിങ്ങൾ ആഹാരത്തിന്റെ പ്രാഥമിക പ്രൊഡ്യൂസർ ആണെങ്കിൽ 'പ്രൊഡ്യൂസർ' തിരഞ്ഞെടുക്കുക. + producer: പ്രൊഡ്യൂസർ + any: ഏതെങ്കിലും + none: ഒന്നുമില്ല + own: സ്വന്തം + sells: വിൽക്കുന്നു + sells_tip: "ഒന്നുമില്ല - എന്റർപ്രൈസ് ഉപഭോക്താക്കൾക്ക് നേരിട്ട് വിൽക്കില്ല.
സ്വന്തം - എന്റർപ്രൈസ് ഉപഭോക്താക്കൾക്ക് സ്വന്തം ഉൽപ്പന്നങ്ങൾ വിൽക്കുന്നു.
ഏതെങ്കിലും - എന്റർപ്രൈസസിന് സ്വന്തം അല്ലെങ്കിൽ മറ്റ് സംരംഭങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ വിൽക്കാൻ കഴിയും.
" + visible_in_search: തിരയലിൽ ദൃശ്യമാണോ? + visible_in_search_tip: "കടകൾ ഇങ്ങനെ ആയിരിക്കും
1. പൊതുവായി ദൃശ്യമായത്, ഒഎഫ്എൻ മാപ്പിലും ലിസ്റ്റിംഗുകളിലും ദൃശ്യമാകുന്നു.
2. മാപ്പുകളിലും ലിസ്റ്റിംഗുകളിലും മറച്ചിരിക്കുന്നു, എന്നാൽ മറ്റ് ഷോപ്പുകൾ പരാമർശിക്കുകയും അവരുടെ പ്രൊഫൈലിൽ ലിങ്ക് ചെയ്യുകയും ചെയ്യുന്നു.
3. പൂർണ്ണമായും മറച്ചിരിക്കുന്നു." + visible: പൊതു + not_visible: മറച്ചിരിക്കുന്നു + hidden: എല്ലാ റഫറൻസുകളും മറയ്ക്കുക + properties: + legend: "പ്രോപ്പർട്ടികൾ" + permalink: + permalink: പെർമലിങ്ക് (സ്‌പെയ്‌സുകളില്ല) + permalink_tip: "നിങ്ങളുടെ ഷോപ്പിലേക്ക് യുആർഎൽ സൃഷ്‌ടിക്കാൻ ഈ പെർമലിങ്ക് ഉപയോഗിക്കുന്നു: %{link} your-shop-name/shop" + link_to_front: ഷോപ്പ് ഫ്രണ്ടിലേക്കുള്ള ലിങ്ക് + link_to_front_tip: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ നിങ്ങളുടെ ഷോപ്പ് ഫ്രണ്ടിലേക്കുള്ള നേരിട്ടുള്ള ലിങ്ക്. + ofn_uid: ഒഎഫ്എൻ യുഐഡി + ofn_uid_tip: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ എന്റർപ്രൈസ് തിരിച്ചറിയാൻ ഉപയോഗിക്കുന്ന തനത് ഐഡി. + shipping_methods: + legend: "ഷിപ്പിംഗ് രീതികൾ" + name: "പേര്" + applies: "സജീവമാണോ?" + manage: "ഷിപ്പിംഗ് രീതികൾ നിയന്ത്രിക്കുക" + create_button: "പുതിയ ഷിപ്പിംഗ് രീതി ഉണ്ടാക്കുക" + create_one_button: "ഇപ്പോൾത്തന്നെ ഒന്ന് ഉണ്ടാക്കുക" + no_method_yet: "നിങ്ങൾക്ക് ഇതുവരെ ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല." + shop_preferences: + legend: "ഷോപ്പ് മുൻഗണനകൾ" + shopfront_requires_login: "എല്ലാവർക്കും കാണാവുന്ന ഷോപ്പ്ഫ്രണ്ട്?" + shopfront_requires_login_tip: "ഷോപ്പ്ഫ്രണ്ട് കാണാൻ ഉപഭോക്താക്കൾ ലോഗിൻ ചെയ്യണമോ അതോ എല്ലാവർക്കും ദൃശ്യമാക്കണോ എന്ന് തിരഞ്ഞെടുക്കുക." + shopfront_requires_login_false: "പൊതു" + shopfront_requires_login_true: "രജിസ്റ്റർ ചെയ്ത ഉപഭോക്താക്കൾക്ക് മാത്രം ദൃശ്യമാണ്" + recommend_require_login: "ഓർഡറുകൾ മാറ്റാൻ കഴിയുമ്പോൾ ലോഗിൻ ചെയ്യാൻ ഉപയോക്താക്കളോട് ആവശ്യപ്പെടാൻ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു." + allow_guest_orders: "ഗസ്റ്റ് ഓർഡറുകൾ" + allow_guest_orders_tip: "ഗസ്റ്റ് ആയി ചെക്ക്ഔട്ട് അനുവദിക്കുക അല്ലെങ്കിൽ ഉപയോക്താവിനോട് രജിസ്റ്റർ ചെയ്യാൻ ആവശ്യപ്പെടുക." + allow_guest_orders_false: "ഓർഡർ ചെയ്യാൻ ലോഗിൻ ചെയ്യേണ്ടതുണ്ട്" + allow_guest_orders_true: "ഗസ്റ്റ് ചെക്ക്ഔട്ട് അനുവദിക്കുക" + allow_order_changes: "ഓർഡറുകൾ മാറ്റുക" + allow_order_changes_tip: "ഓർഡർ സൈക്കിൾ തുറന്നിരിക്കുന്നിടത്തോളം കാലം അവരുടെ ഓർഡർ മാറ്റാൻ ഉപഭോക്താക്കളെ അനുവദിക്കുക." + allow_order_changes_false: "നൽകിയ ഓർഡറുകൾ മാറ്റാനോ റദ്ദാക്കാനോ കഴിയില്ല" + allow_order_changes_true: "ഓർഡർ സൈക്കിൾ തുറന്നിരിക്കുന്ന സമയത്ത് ഉപഭോക്താക്കൾക്ക് ഓർഡറുകൾ മാറ്റാനും റദ്ദാക്കാനും കഴിയും" + enable_subscriptions: "സബ്സ്ക്രിപ്ഷനുകൾ" + enable_subscriptions_tip: "സബ്‌സ്‌ക്രിപ്‌ഷൻ പ്രവർത്തനം പ്രവർത്തനക്ഷമമാക്കണോ?" + enable_subscriptions_false: "പ്രവർത്തനരഹിതമാക്കി" + enable_subscriptions_true: "പ്രവർത്തനക്ഷമമാക്കി" + customer_names_in_reports: "റിപ്പോർട്ടുകളിലെ ഉപഭോക്തൃ പേരുകൾ" + customer_names_tip: "റിപ്പോർട്ടുകളിൽ നിങ്ങളുടെ ഉപഭോക്താക്കളുടെ പേരുകൾ കാണാൻ നിങ്ങളുടെ വിതരണക്കാരെ പ്രാപ്തമാക്കുക" + customer_names_false: "പ്രവർത്തനരഹിതമാക്കി" + customer_names_true: "പ്രവർത്തനക്ഷമമാക്കി" + shopfront_message: "ഷോപ്പ്ഫ്രണ്ട് സന്ദേശം" + shopfront_message_placeholder: > + ഉപഭോക്താക്കളെ സ്വാഗതം ചെയ്യുന്നതിനും നിങ്ങളുമായി എങ്ങനെ ഷോപ്പിംഗ് നടത്താമെന്ന് + വിശദീകരിക്കുന്നതിനുമുള്ള ഒരു ഓപ്‌ഷണൽ സന്ദേശം. ഇവിടെ മൂലവാക്യം നൽകിയാൽ, + ഉപഭോക്താക്കൾ ആദ്യം നിങ്ങളുടെ ഷോപ്പ് ഫ്രണ്ടിൽ എത്തുമ്പോൾ അത് ഹോം ടാബിൽ + പ്രദർശിപ്പിക്കും. + shopfront_message_link_tooltip: "ലിങ്ക് ചേർക്കുക / എഡിറ്റ് ചെയ്യുക" + shopfront_message_link_prompt: "ചേർക്കുന്നതിന് ദയവായി ഒരു യുആർഎൽ നൽകുക" + shopfront_closed_message: "ഷോപ്പ്ഫ്രണ്ട് അടച്ച സന്ദേശം" + shopfront_closed_message_placeholder: > + നിങ്ങളുടെ ഷോപ്പ് എന്തിനാണ് അടച്ചിരിക്കുന്നത് എന്നതിനെക്കുറിച്ചും/അല്ലെങ്കിൽ + ഉപഭോക്താക്കൾക്ക് അത് വീണ്ടും എന്ന് തുറക്കുമെന്ന് പ്രതീക്ഷിക്കാമെന്നതിനെക്കുറിച്ചും + കൂടുതൽ വിശദീകരണം നൽകുന്ന ഒരു സന്ദേശം. നിങ്ങൾക്ക് സജീവമായ ഓർഡർ സൈക്കിളുകൾ + ഇല്ലാത്തപ്പോൾ (അതായത്, ഷോപ്പ് അടച്ചിരിക്കുന്നു) മാത്രമേ ഇത് നിങ്ങളുടെ + ഷോപ്പിൽ പ്രദർശിപ്പിക്കുകയുള്ളൂ. + shopfront_category_ordering: "ഷോപ്പ്ഫ്രണ്ട് വിഭാഗം ഓർഡറിംഗ്" + shopfront_category_ordering_note: "(മുകളിൽ നിന്ന് താഴേക്ക്)" + open_date: "തുറക്കുന്ന തീയതി" + close_date: "അവസാന തീയതി" + display_ordering_in_shopfront: "ഷോപ്പ്ഫ്രണ്ടിൽ ഓർഡർ ചെയ്യൽ പ്രദർശിപ്പിക്കുക:" + shopfront_sort_by_category: "വിഭാഗം പ്രകാരം" + shopfront_sort_by_producer: "പ്രൊഡ്യൂസർ വഴി" + shopfront_sort_by_category_placeholder: "വിഭാഗം" + shopfront_sort_by_producer_placeholder: "നിർമ്മാതാവ്" + display_remaining_stock: "സ്റ്റോക്ക് കുറവാണെങ്കിൽ ബാക്കിയുള്ള സ്റ്റോക്ക് ഷോപ്പ്ഫ്രണ്ടിൽ പ്രദർശിപ്പിക്കുക" + display_remaining_stock_tip: "മൂന്നോ അതിലധികമോ ഇനങ്ങൾ മാത്രം ശേഷിക്കുമ്പോൾ ഉപഭോക്താക്കളെ അറിയിക്കുക." + enabled: "പ്രവർത്തനക്ഷമമാക്കി" + disabled: "പ്രവർത്തനരഹിതമാക്കി" + social: + legend: "സാമൂഹികം" + twitter_placeholder: "ഉദാ. @the_prof" + instagram_placeholder: "ഉദാ. the_prof" + facebook_placeholder: "ഉദാ. www.facebook.com/PageNameHere" + linkedin_placeholder: "ഉദാ. www.linkedin.com/in/YourNameHere" + stripe_connect: + connect_with_stripe: "സ്ട്രൈപ്പുമായി ബന്ധിപ്പിക്കുക" + stripe_connect_intro: "ക്രെഡിറ്റ് കാർഡ് ഉപയോഗിച്ച് പേയ്‌മെന്റുകൾ സ്വീകരിക്കുന്നതിന്, നിങ്ങളുടെ സ്ട്രൈപ്പ് അക്കൗണ്ട് ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് കണക്‌റ്റ് ചെയ്യേണ്ടതുണ്ട്. ആരംഭിക്കുന്നതിന് വലതുവശത്തുള്ള ബട്ടൺ ഉപയോഗിക്കുക." + stripe_account_connected: "സ്ട്രൈപ്പ് അക്കൗണ്ട് കണക്‌റ്റ് ചെയ്‌തു." + disconnect: "അക്കൗണ്ട് വിച്ഛേദിക്കുക" + confirm_modal: + title: സ്ട്രൈപ്പുമായി ബന്ധിപ്പിക്കുക + part1: ഉപഭോക്താക്കളിൽ നിന്ന് ക്രെഡിറ്റ് കാർഡ് പേയ്‌മെന്റുകൾ സ്വീകരിക്കാൻ ഒഎഫ്എൻ-ലെ ഷോപ്പുകളെ അനുവദിക്കുന്ന ഒരു പേയ്‌മെന്റ് പ്രോസസ്സിംഗ് സേവനമാണ് സ്ട്രൈപ്പ്. + part2: ഈ ഫീച്ചർ ഉപയോഗിക്കുന്നതിന്, നിങ്ങളുടെ സ്ട്രൈപ്പ് അക്കൗണ്ട് ഒഎഫ്എൻ-ലേക്ക് കണക്‌റ്റ് ചെയ്യണം. ചുവടെയുള്ള 'ഞാൻ അംഗീകരിക്കുന്നു' എന്ന ബട്ടൺ ക്ലിക്ക് ചെയ്യുന്നത് നിങ്ങൾക്ക് നിലവിലുള്ള ഒരു സ്ട്രൈപ്പ് അക്കൗണ്ട് കണക്റ്റുചെയ്യാൻ കഴിയുന്ന സ്ട്രൈപ്പ് വെബ്‌സൈറ്റിലേക്ക് റീഡയറക്‌ട് ചെയ്യും, അതല്ലെങ്കിൽ നിങ്ങൾക്ക് അക്കൗണ്ട് ഇല്ലെങ്കിൽ പുതിയൊരെണ്ണം ഉണ്ടാക്കാനും കഴിയും. + part3: ഇത് നിങ്ങളുടെ പേരിൽ ഉപഭോക്താക്കളിൽ നിന്ന് ക്രെഡിറ്റ് കാർഡ് പേയ്‌മെന്റുകൾ സ്വീകരിക്കാൻ ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിനെ അനുവദിക്കും. നിങ്ങളുടെ സ്വന്തം സ്ട്രൈപ്പ് അക്കൗണ്ട് പരിപാലിക്കേണ്ടതും സ്ട്രൈപ്പ് ചാർജുകൾ അടയ്ക്കേണ്ടതും ഏതെങ്കിലും ചാർജ്ബാക്കുകളും ഉപഭോക്തൃ സേവനവും നിങ്ങൾ തന്നെ കൈകാര്യം ചെയ്യേണ്ടതാണെന്ന കാര്യം ശ്രദ്ധിക്കുക. + i_agree: ഞാൻ അംഗീകരിക്കുന്നു + cancel: റദ്ദാക്കുക + tag_rules: + legend: "ടാഗ് നിയമങ്ങൾ" + default_rules: + by_default: സ്ഥിരസ്ഥിതിയായി + no_rules_yet: സ്ഥിരസ്ഥിതി നിയമങ്ങളൊന്നും ഇതുവരെ ബാധകമല്ല + add_new_button: '+ ഒരു പുതിയ സ്ഥിരസ്ഥിതി നിയമം ചേർക്കുക' + no_tags_yet: ഈ എന്റർപ്രൈസസിന് ഇതുവരെ ടാഗുകളൊന്നും ബാധകമല്ല + no_rules_yet: ഈ ടാഗിന് ഇതുവരെ നിയമങ്ങളൊന്നും ബാധകമല്ല + for_customers_tagged: 'ടാഗ് ചെയ്ത ഉപഭോക്താക്കൾക്കായി:' + add_new_rule: '+ ഒരു പുതിയ നിയമം ചേർക്കുക' + add_new_tag: '+ ഒരു പുതിയ ടാഗ് ചേർക്കുക' + users: + legend: "ഉപയോക്താക്കൾ" + email_confirmation_notice_html: "ഇമെയിൽ സ്ഥിരീകരണം തീർച്ചപ്പെടുത്തിയിട്ടില്ല. ഞങ്ങൾ ഒരു സ്ഥിരീകരണ ഇമെയിൽ %{email} ലേക്ക് അയച്ചു." + resend: വീണ്ടും അയയ്ക്കുക + owner: 'ഉടമ' + contact: "ബന്ധപ്പെടുക" + contact_tip: "ഓർഡറുകൾക്കും അറിയിപ്പുകൾക്കുമായി എന്റർപ്രൈസ് ഇമെയിലുകൾ സ്വീകരിക്കുന്ന മാനേജർ. സ്ഥിരീകരിച്ച ഇമെയിൽ വിലാസം ഉണ്ടായിരിക്കണം." + owner_tip: ഈ എന്റർപ്രൈസസിന്റെ ഉത്തരവാദിത്തമുള്ള പ്രാഥമിക ഉപയോക്താവ്. + notifications: അറിയിപ്പുകൾ + notifications_tip: ഓർഡറുകൾ സംബന്ധിച്ച അറിയിപ്പുകൾ ഈ ഇമെയിൽ വിലാസത്തിലേക്ക് അയയ്‌ക്കും. + notifications_placeholder: ഉദാ. gustav@truffles.com + notifications_note: 'ശ്രദ്ധിക്കുക: ഉപയോഗിക്കുന്നതിന് മുമ്പ് ഒരു പുതിയ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതുണ്ട്' + managers: മാനേജർമാർ + managers_tip: ഈ എന്റർപ്രൈസ് മാനേജ് ചെയ്യാൻ അനുമതിയുള്ള മറ്റ് ഉപയോക്താക്കൾ. + invite_manager: "മാനേജരെ ക്ഷണിക്കുക" + invite_manager_tip: "രജിസ്റ്റർ ചെയ്യാത്ത ഒരു ഉപയോക്താവിനെ സൈൻ അപ്പ് ചെയ്യാനും ഈ എന്റർപ്രൈസിന്റെ മാനേജരാകാനും ക്ഷണിക്കുക." + add_unregistered_user: "രജിസ്റ്റർ ചെയ്യാത്ത ഒരു ഉപയോക്താവിനെ ചേർക്കുക" + email_confirmed: "ഇമെയിൽ സ്ഥിരീകരിച്ചു" + email_not_confirmed: "ഇമെയിൽ സ്ഥിരീകരിച്ചിട്ടില്ല" + vouchers: + legend: വൗച്ചറുകൾ + voucher_code: വൗച്ചർ കോഡ് + rate: നിരക്ക് + label: ലേബൽ + purpose: ഉദ്ദേശം + expiry: കാലാവധിയാകൽ + use_limit: ഉപയോഗിക്കുക/പരിമിതപ്പെടുത്തുക + customers: ഉപഭോക്താവ് + net_value: മൊത്തം തുക + active: സജീവമാണോ? + add_new: പുതിയത് ചേർക്കുക + no_voucher_yet: ഇതുവരെ വൗച്ചറുകളൊന്നുമില്ല + white_label: + legend: "വൈറ്റ് ലേബൽ" + hide_ofn_navigation: "ഒഎഫ്എൻ നാവിഗേഷൻ മറയ്ക്കുക" + upload_logo: "ഷോപ്പ്ഫ്രണ്ടിൽ ലോഗോ ഉപയോഗിക്കുന്നു" + remove_logo: "ലോഗോ നീക്കം ചെയ്യുക" + remove_logo_confirm: "ഈ ലോഗോ നീക്കം ചെയ്യണമെന്ന് തീർച്ചയാണോ?" + remove_logo_success: "ലോഗോ നീക്കം ചെയ്തു" + white_label_logo_link_label: "കടയുടെ മുൻവശത്ത് ഉപയോഗിക്കുന്ന ലോഗോയ്ക്കുള്ള ലിങ്ക്" + hide_groups_tab: "ഷോപ്പ്ഫ്രണ്ടിൽ ഗ്രൂപ്പുകളുടെ ടാബ് മറയ്ക്കുക" + create_custom_tab: "ഷോപ്പ്ഫ്രണ്ടിൽ ഇഷ്‌ടാനുസൃത ടാബ് സൃഷ്‌ടിക്കുക" + custom_tab_title: "ഇഷ്‌ടാനുസൃത ടാബിനുള്ള ശീർഷകം" + custom_tab_content: "ഇഷ്‌ടാനുസൃത ടാബിനുള്ള ഉള്ളടക്കം" + actions: + edit_profile: ക്രമീകരണങ്ങൾ + properties: പ്രോപ്പർട്ടികൾ + payment_methods: പേയ്മെന്റ് രീതികൾ + payment_methods_tip: ഈ എന്റർപ്രൈസസിന് പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല + shipping_methods: ഷിപ്പിംഗ് രീതികൾ + shipping_methods_tip: ഈ സംരംഭത്തിന് ഷിപ്പിംഗ് രീതികളുണ്ട് + enterprise_fees: എന്റർപ്രൈസ് ഫീസ് + enterprise_fees_tip: ഈ എന്റർപ്രൈസസിന് ഫീസില്ല + admin_index: + name: പേര് + role: പങ്ക് + sells: വിൽക്കുന്നു + visible: ദൃശ്യമാണോ? + owner: ഉടമ + producer: നിർമ്മാതാവ് + change_type_form: + producer_profile: പ്രൊഡ്യൂസർ പ്രൊഫൈൽ + connect_ofn: ഒഎഫ്എൻ വഴി ബന്ധിപ്പിക്കുക + always_free: എപ്പോഴും സൗജന്യം + producer_description_text: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ചേർക്കുക, നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ അവരുടെ സ്റ്റോറുകളിൽ സ്റ്റോക്ക് ചെയ്യാൻ ഹബ്ബുകളെ അനുവദിക്കുന്നു. + producer_shop: പ്രൊഡ്യൂസർ ഷോപ്പ് + sell_your_produce: നിങ്ങളുടെ സ്വന്തം ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + producer_shop_description_text: നിങ്ങളുടെ സ്വന്തം ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഷോപ്പ്ഫ്രണ്ട് വഴി നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ഉപഭോക്താക്കൾക്ക് നേരിട്ട് വിൽക്കുക. + producer_shop_description_text2: ഒരു പ്രൊഡ്യൂസർ ഷോപ്പ് നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾക്ക് മാത്രമുള്ളതാണ്, സൈറ്റിന് പുറത്ത് ഉൽപ്പാദിപ്പിച്ച ഉൽപ്പന്നങ്ങൾ വിൽക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, 'പ്രൊഡ്യൂസർ ഹബ്' തിരഞ്ഞെടുക്കുക. + producer_hub: പ്രൊഡ്യൂസർ ഹബ് + producer_hub_text: തന്നിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഉള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + producer_hub_description_text: നിങ്ങളുടെ പ്രാദേശിക ഭക്ഷണ സമ്പ്രദായത്തിന്റെ നട്ടെല്ലാണ് നിങ്ങളുടെ എൻറ്റർപ്രൈസ്. ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ ഷോപ്പ്ഫ്രണ്ട് വഴി നിങ്ങൾക്ക് നിങ്ങളുടെ സ്വന്തം ഉൽപ്പന്നങ്ങളും മറ്റ് സംരംഭങ്ങളിൽ നിന്ന് സമാഹരിച്ച ഉൽപ്പന്നങ്ങളും വിൽക്കാൻ കഴിയും. + profile: പ്രൊഫൈൽ മാത്രം + get_listing: ഒരു ലിസ്റ്റിംഗ് നേടുക + profile_description_text: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ആളുകൾക്ക് നിങ്ങളെ കണ്ടെത്താനും ബന്ധപ്പെടാനും കഴിയും. നിങ്ങളുടെ എന്റർപ്രൈസ് മാപ്പിൽ ദൃശ്യമാകും, കൂടാതെ ലിസ്റ്റിംഗുകളിൽ തിരയാനും കഴിയും. + hub_shop: ഹബ് ഷോപ്പ് + hub_shop_text: മറ്റുള്ളവരിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + hub_shop_description_text: നിങ്ങളുടെ പ്രാദേശിക ഭക്ഷണ സമ്പ്രദായത്തിന്റെ നട്ടെല്ലാണ് നിങ്ങളുടെ എൻറ്റർപ്രൈസ്. നിങ്ങൾക്ക് മറ്റ് സംരംഭങ്ങളിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ സമാഹരിക്കുകയും ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ നിങ്ങളുടെ ഷോപ്പ് വഴി വിൽക്കുകയും ചെയ്യാം. + choose_option: മുകളിലുള്ള ഓപ്ഷനുകളിലൊന്ന് ദയവായി തിരഞ്ഞെടുക്കുക. + change_now: ഇപ്പോൾ മാറ്റുക + enterprise_user_index: + loading_enterprises: എന്റർപ്രൈസുകൾ ലോഡ് ചെയ്യുന്നു + no_enterprises_found: എൻറ്റർപ്രൈസുകളൊന്നും കണ്ടെത്തിയില്ല. + search_placeholder: പേര് പ്രകാരം തിരയുക + manage: കൈകാര്യം ചെയ്യുക + manage_link: ക്രമീകരണങ്ങൾ + producer?: "പ്രൊഡ്യൂസർ?" + package: "പാക്കേജ്" + status: "പദവി" + new_form: + owner: ഉടമ + owner_tip: ഈ എന്റർപ്രൈസസിന്റെ ഉത്തരവാദിത്തമുള്ള പ്രാഥമിക ഉപയോക്താവ്. + i_am_producer: ഞാൻ ഒരു പ്രൊഡ്യൂസർ ആണ് + contact_name: ബന്ധപ്പെടാനുള്ള പേര് + edit: + editing: 'ക്രമീകരണങ്ങൾ:' + back_link: എന്റർപ്രൈസസ് ലിസ്റ്റിലേക്ക് മടങ്ങുക + new: + title: പുതിയ എന്റർപ്രൈസ് + back_link: എന്റർപ്രൈസസ് ലിസ്റ്റിലേക്ക് മടങ്ങുക + welcome: + welcome_title: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് സ്വാഗതം! + welcome_text: നിങ്ങൾ വിജയകരമായി സൃഷ്ടിച്ചു + next_step: അടുത്ത പടി + choose_starting_point: 'നിങ്ങളുടെ പാക്കേജ് തിരഞ്ഞെടുക്കുക:' + profile: 'പ്രൊഫൈൽ' + producer_profile: 'പ്രൊഡ്യൂസർ പ്രൊഫൈൽ' + invite_manager: + user_already_exists: "ഉപയോക്താവ് ഇതിനകം നിലവിലുണ്ട്" + error: "എന്തോ തകരാറ് സംഭവിച്ചു" + order_cycles: + loading_flash: + loading_order_cycles: ഓർഡർ സൈക്കിളുകൾ ലോഡുചെയ്യുന്നു + loading: ലോഡുചെയ്യുന്നു... + new: + create: "സൃഷ്ടിക്കാൻ" + cancel: "റദ്ദാക്കുക" + back_to_list: "പട്ടികയിലേക്ക് മടങ്ങുക" + create: + success: 'നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ ഉണ്ടാക്കി.' + update: + success: 'നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ അപ്ഡേറ്റ് ചെയ്തു.' + clone: + success: "നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ %{name} ക്ലോൺ ചെയ്തു." + notify_producers: + success: 'പ്രൊഡ്യൂസേഴ്സിന് അയയ്‌ക്കേണ്ട ഇമെയിലുകൾ അയയ്‌ക്കുന്നതിനായി ക്യൂവിലാണ്.' + edit: + save: "സേവ് ചെയ്യുക" + save_and_next: "സേവ് ചെയ്ത് അടുത്തതിലേക്ക് പോകുക" + next: "അടുത്തത്" + cancel: "റദ്ദാക്കുക" + back_to_list: "പട്ടികയിലേക്ക് മടങ്ങുക" + save_and_back_to_list: "സേവ് ചെയ്ത് ലിസ്റ്റിലേക്ക് മടങ്ങുക" + choose_products_from: "ഇതിൽ നിന്ന് ഉൽപ്പന്നങ്ങൾ തിരഞ്ഞെടുക്കുക:" + re_notify_producers: പ്രൊഡ്യൂസേഴ്സിനെ വീണ്ടും അറിയിക്കുക + notify_producers_tip: ഇത് ഓരോ പ്രൊഡ്യൂസേഴ്സിനും അവരുടെ ഓർഡറുകളുടെ ലിസ്റ്റുമായി ഒരു ഇമെയിൽ അയയ്ക്കും. + incoming: + incoming: "ഇൻകമിംഗ്" + supplier: "വിതരണക്കാരൻ" + products: "ഉൽപ്പന്നങ്ങൾ" + receival_details: "സ്വീകരിക്കൽ വിശദാംശങ്ങൾ" + fees: "ഫീസ്" + save: "സേവ് ചെയ്യുക" + save_and_next: "സേവ് ചെയ്ത് അടുത്തതിലേക്ക് പോകുക" + next: "അടുത്തത്" + cancel: "റദ്ദാക്കുക" + back_to_list: "പട്ടികയിലേക്ക് മടങ്ങുക" + outgoing: + outgoing: "ഔട്ട്ഗോയിംഗ്" + distributor: "വിതരണക്കാരൻ" + products: "ഉൽപ്പന്നങ്ങൾ" + tags: "ടാഗുകൾ" + delivery_details: "ഡെലിവറി വിശദാംശങ്ങൾ" + fees: "ഫീസ്" + next: "അടുത്തത്" + previous: "മുന്നിലത്തേത്" + save: "സേവ് ചെയ്യുക" + save_and_next: "സേവ് ചെയ്ത് അടുത്തതിലേക്ക് പോകുക" + cancel: "റദ്ദാക്കുക" + back_to_list: "പട്ടികയിലേക്ക് മടങ്ങുക" + checkout_options: + back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + cancel: "റദ്ദാക്കുക" + checkout_options: "ചെക്ക്ഔട്ട് ഓപ്ഷനുകൾ" + distributor: "വിതരണക്കാരൻ" + no_payment_methods: ഈ ഓർഡർ സൈക്കിളിലെ ഓരോ വിതരണക്കാരനും കുറഞ്ഞത് ഒരു പേയ്‌മെന്റ് രീതി ആവശ്യമാണ്. + no_shipping_methods: ഈ ഓർഡർ സൈക്കിളിലെ ഓരോ വിതരണക്കാരനും കുറഞ്ഞത് ഒരു ഷിപ്പിംഗ് രീതി ആവശ്യമാണ്. + payment_methods: "പേയ്മെന്റ് രീതികൾ" + save: "സേവ് ചെയ്യുക" + save_and_back_to_list: "സേവ് ചെയ്ത് ലിസ്റ്റിലേക്ക് മടങ്ങുക" + select_all: "എല്ലാം തിരഞ്ഞെടുക്കുക" + shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + wizard_progress: + edit: "1. പൊതുവായ ക്രമീകരണങ്ങൾ" + incoming: "2. ഇൻകമിംഗ് ഉൽപ്പന്നങ്ങൾ" + outgoing: "3. ഔട്ട്ഗോയിംഗ് ഉൽപ്പന്നങ്ങൾ" + checkout_options: "4. ചെക്ക്ഔട്ട് ഓപ്ഷനുകൾ" + exchange_form: + pickup_time_tip: ഈ ഒസിയിൽ നിന്നുള്ള ഓർഡറുകൾ ഉപഭോക്താവിന് തയ്യാറാകുമ്പോൾ + pickup_instructions_placeholder: "പിക്കപ്പ് നിർദ്ദേശങ്ങൾ" + pickup_instructions_tip: ഒരു ഓർഡർ പൂർത്തിയാക്കിയ ശേഷം ഉപഭോക്താക്കൾക്ക് ഈ നിർദ്ദേശങ്ങൾ കാണിക്കും + pickup_time_placeholder: "തയ്യാറാണോ (അതായത്. തീയതി / സമയം)" + receival_instructions_placeholder: "സ്വീകരിക്കൽ നിർദ്ദേശങ്ങൾ" + add_fee: 'ഫീസ് ചേർക്കുക' + remove: 'നീക്കം ചെയ്യുക' + selected: 'തിരഞ്ഞെടുത്തു' + add_exchange_form: + add_supplier: 'വിതരണക്കാരനെ ചേർക്കുക' + add_distributor: 'വിതരണക്കാരനെ ചേർക്കുക' + advanced_settings: + automatic_notifications: യാന്ത്രിക അറിയിപ്പുകൾ + automatic_notifications_tip: ഓർഡർ സൈക്കിളുകൾ അവസാനിക്കുമ്പോൾ ഇമെയിലുകൾ വഴി പ്രൊഡ്യൂസേഴ്സിനെ അവരുടെ ഓർഡറുകൾ സ്വയമേവ അറിയിക്കുക + title: വിപുലമായ ക്രമീകരണങ്ങൾ + choose_product_tip: നിങ്ങൾക്ക് ഇൻകമിംഗ്, ഔട്ട്‌ഗോയിംഗ് ഉൽപ്പന്നങ്ങൾ %{inventory} ന്റെ ചരക്കുപ്പട്ടികയിലേക്ക് മാത്രം പരിമിതപ്പെടുത്താം. + preferred_product_selection_from_coordinator_inventory_only_here: കോർഡിനേറ്ററുടെ ചരക്കുപ്പട്ടിക മാത്രം + preferred_product_selection_from_coordinator_inventory_only_all: ലഭ്യമായ എല്ലാ ഉൽപ്പന്നങ്ങളും + save_reload: പേജ് സേവ് ചെയ്ത് വീണ്ടും ലോഡുചെയ്യുക + order_cycle_top_buttons: + advanced_settings: "വിപുലമായ ക്രമീകരണങ്ങൾ" + coordinator_fees: + add: കോർഡിനേറ്റർ ഫീസ് ചേർക്കുക + filters: + search_by_order_cycle_name: "ഓർഡർ സൈക്കിൾ പേര് പ്രകാരം തിരയുക..." + involving: "ഉൾപ്പെടുന്നു" + any_enterprise: "ഏതെങ്കിലും എന്റർപ്രൈസ്" + any_schedule: "ഏതെങ്കിലും ഷെഡ്യൂൾ" + form: + general_settings: "പൊതുവായ ക്രമീകരണങ്ങൾ" + incoming: ഇൻകമിംഗ് + supplier: വിതരണക്കാരൻ + products: ഉൽപ്പന്നങ്ങൾ + receival_details: സ്വീകരിക്കൽ വിശദാംശങ്ങൾ + fees: ഫീസ് + outgoing: ഔട്ട്ഗോയിംഗ് + distributor: വിതരണക്കാരൻ + tags: ടാഗുകൾ + add_a_tag: ഒരു ടാഗ് ചേർക്കുക + delivery_details: പിക്കപ്പ് / ഡെലിവറി വിശദാംശങ്ങൾ + index: + schedule: ഷെഡ്യൂൾ + schedules: ഷെഡ്യൂളുകൾ + new_schedule: പുതിയ ഷെഡ്യൂൾ + new_schedule_tooltip: ഒരു സബ്‌സ്‌ക്രിപ്‌ഷൻ ഓർഡർ നൽകുന്ന ആവൃത്തി + name_and_timing_form: + name: പേര് + orders_open: ഓർഡറുകൾ തുറക്കുന്നത് + coordinator: കോർഡിനേറ്റർ + orders_close: ഓർഡറുകൾ അവസാനിക്കുന്നത് + row: + suppliers: വിതരണക്കാർ + distributors: വിതരണക്കാർ + variants: വകഭേദങ്ങൾ + simple_form: + ready_for: തയ്യാറാണ് + ready_for_placeholder: തീയതി / സമയം + customer_instructions: ഉപഭോക്തൃ നിർദ്ദേശങ്ങൾ + customer_instructions_placeholder: പിക്ക്-അപ്പ് അല്ലെങ്കിൽ ഡെലിവറി കുറിപ്പുകൾ + products: ഉൽപ്പന്നങ്ങൾ + fees: ഫീസ് + tags: ടാഗുകൾ + destroy_errors: + orders_present: ആ ഓർഡർ സൈക്കിൾ ഒരു ഉപഭോക്താവ് തിരഞ്ഞെടുത്തതിനാൽ അത് ഇല്ലാതാക്കാൻ കഴിയില്ല. ഉപഭോക്താക്കൾ ഇത് ആക്‌സസ് ചെയ്യുന്നതിൽ നിന്ന് തടയാൻ, അത് ക്ലോസ് ചെയ്യുക. + schedule_present: ആ ഓർഡർ സൈക്കിൾ ഒരു ഷെഡ്യൂളുമായി ലിങ്ക് ചെയ്‌തിരിക്കുന്നതിനാൽ അത് ഇല്ലാതാക്കാൻ കഴിയില്ല. ആദ്യം ഷെഡ്യൂൾ അൺലിങ്ക് ചെയ്യുക അല്ലെങ്കിൽ ഇല്ലാതാക്കുക. + bulk_update: + no_data: ഹോ, എന്തോ തകരാറ് സംഭവിച്ചു. ഓർഡർ സൈക്കിൾ ഡാറ്റയൊന്നും കണ്ടെത്തിയില്ല. + date_warning: + msg: ഈ ഓർഡർ സൈക്കിൾ %{n} ഓപ്പൺ സബ്‌സ്‌ക്രിപ്‌ഷൻ ഓർഡറുകളിലേക്ക് ലിങ്ക് ചെയ്‌തിരിക്കുന്നു. ഇപ്പോൾ ഈ തീയതി മാറ്റുന്നത് ഇതിനകം നൽകിയിട്ടുള്ള ഒരു ഓർഡറിനെയും ബാധിക്കില്ല, എന്നാൽ സാധ്യമെങ്കിൽ അത് ഒഴിവാക്കേണ്ടതാണ്. നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ? + cancel: റദ്ദാക്കുക + proceed: തുടരുക + status: + undated: തീയതിയില്ലാത്ത + upcoming: വരാനിരിക്കുന്ന + open: തുറക്കുക + closed: അടച്ചു + producer_properties: + index: + title: പ്രൊഡ്യൂസർ പ്രോപ്പർട്ടികൾ + proxy_orders: + cancel: + could_not_cancel_the_order: ഓർഡർ റദ്ദാക്കാൻ കഴിഞ്ഞില്ല + resume: + could_not_resume_the_order: ഓർഡർ പുനരാരംഭിക്കാനായില്ല + select2: + minimal_search_length: ദയവായി %{count} അല്ലെങ്കിൽ കൂടുതൽ പ്രതീകങ്ങൾ നൽകുക + searching: തിരയുന്നു... + no_matches: പൊരുത്തങ്ങളൊന്നും കണ്ടെത്തിയില്ല + shared: + user_guide_link: + user_guide: ഉപയോക്തൃ ഗൈഡ് + enterprises_hubs_tabs: + has_no_payment_methods: "%{enterprise} -ന് പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല" + has_no_shipping_methods: "%{enterprise} -ന് ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല" + has_no_enterprise_fees: "%{enterprise} -ന് എന്റർപ്രൈസ് ഫീസ് ഇല്ല" + side_menu: + enterprise: + primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" + address: "വിലാസം" + contact: "ബന്ധപ്പെടുക" + social: "സാമൂഹികം" + about: "കുറിച്ച്" + business_details: "ബിസിനസ്സ് വിശദാംശങ്ങൾ" + images: "ചിത്രങ്ങൾ" + properties: "പ്രോപ്പർട്ടികൾ" + shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + payment_methods: "പേയ്മെന്റ് രീതികൾ" + enterprise_fees: "എന്റർപ്രൈസ് ഫീസ്" + enterprise_permissions: "എന്റർപ്രൈസ് അനുമതികൾ" + inventory_settings: "ചരക്കുപ്പട്ടിക ക്രമീകരണങ്ങൾ" + tag_rules: "നിയമങ്ങൾ കൂട്ടിയോജിപ്പിക്കുക" + shop_preferences: "ഷോപ്പ് മുൻഗണനകൾ" + users: "ഉപയോക്താക്കൾ" + vouchers: വൗച്ചറുകൾ + white_label: "വൈറ്റ് ലേബൽ" + enterprise_group: + primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" + users: "ഉപയോക്താക്കൾ" + about: "കുറിച്ച്" + images: "ചിത്രങ്ങൾ" + contact: "ബന്ധപ്പെടുക" + web: "വെബ് ഉറവിടങ്ങൾ" + enterprise_issues: + create_new: പുതിയത് ഉണ്ടാക്കുക + resend_email: ഇമെയിൽ വീണ്ടും അയക്കുക + has_no_payment_methods: "%{enterprise} -ന് നിലവിൽ പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല" + has_no_shipping_methods: "%{enterprise} -ന് നിലവിൽ ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല" + email_confirmation: "ഇമെയിൽ സ്ഥിരീകരണം നടന്നിട്ടില്ല. ഞങ്ങൾ ഒരു സ്ഥിരീകരണ ഇമെയിൽ %{email} -ലേക്ക് അയച്ചു." + not_visible: "%{enterprise} ദൃശ്യമല്ല, അതിനാൽ മാപ്പിലോ തിരയലുകളിലോ കണ്ടെത്താൻ കഴിയില്ല" + reports: + deprecated: "ഈ റിപ്പോർട്ട് നിരാകരിച്ചതാണ്, ഭാവിയിലെ റിലീസിൽ ഇത് നീക്കം ചെയ്യപ്പെടും." + hidden: മറച്ചിരിക്കുന്നു + unitsize: യൂണിറ്റ് സൈസ് + total: ആകെ + total_items: ആകെ ഇനങ്ങൾ + total_by_customer: കസ്റ്റമർ മുഖേന ആകെ + total_by_supplier: വിതരണക്കാരൻ മുഖേന ആകെ + supplier_totals: ഓർഡർ സൈക്കിൾ സപ്ലയർ ആകെ + percentage: "%{value} %" + supplier_totals_by_distributor: വിതരണക്കാരൻ മുഖേന ഓർഡർ സൈക്കിൾ സപ്ലയർ ആകെ + totals_by_supplier: സപ്ലയർ മുഖേന ഓർഡർ സൈക്കിൾ ഡിസ്ട്രിബ്യൂട്ടർ ആകെ + customer_totals: ഓർഡർ സൈക്കിൾ ഉപഭോക്താക്കൾ ആകെ + all_products: എല്ലാ ഉൽപ്പന്നങ്ങളും + inventory: ചരക്കുപട്ടിക (കൈയിൽ) + lettuce_share: ലെറ്റൂസ് ഷെയർ + payment_methods: പേയ്‌മെന്റ് രീതികളുടെ റിപ്പോർട്ട് + delivery: ഡെലിവറി റിപ്പോർട്ട് + sales_tax_totals_by_producer: പ്രൊഡ്യൂസർ മുഖേനയുള്ള വിൽപ്പന നികുതിയുടെ ആകെത്തുക + sales_tax_totals_by_order: ഓർഡർ പ്രകാരമുള്ള വിൽപ്പന നികുതിയുടെ ആകെത്തുക + tax_types: നികുതി തരങ്ങൾ + tax_rates: നികുതി നിരക്കുകൾ + pack_by_customer: ഉപഭോക്താവിനാൽ പായ്ക്ക് ചെയ്യുക + pack_by_supplier: വിതരണക്കാരൻ വഴി പായ്ക്ക് ചെയ്യുക + pack_by_product: ഉൽപ്പന്നം അനുസരിച്ച് പായ്ക്ക് ചെയ്യുക + download: + button: "റിപ്പോർട്ട് ഡൗൺലോഡ് ചെയ്യുക" + show: + report_taking_longer: > + ക്ഷമിക്കണം, ഈ റിപ്പോർട്ട് പ്രോസസ്സ് ചെയ്യാൻ വളരെയധികം സമയമെടുത്തു. അതിൽ + ധാരാളം ഡാറ്റ അടങ്ങിയിരിക്കാം അല്ലെങ്കിൽ ഞങ്ങൾ മറ്റ് റിപ്പോർട്ടുകളിൽ തിരക്കിലാണ്. + നിങ്ങൾക്ക് പിന്നീട് വീണ്ടും ശ്രമിക്കാവുന്നതാണ്. + report_taking_longer_html: > + ഈ റിപ്പോർട്ട് പ്രോസസ്സ് ചെയ്യാൻ കൂടുതൽ സമയമെടുക്കുന്നു. അതിൽ ധാരാളം ഡാറ്റ + അടങ്ങിയിരിക്കാം അല്ലെങ്കിൽ ഞങ്ങൾ മറ്റ് റിപ്പോർട്ടുകളിൽ തിരക്കിലാണ്. അത് + പൂർത്തിയായിക്കഴിഞ്ഞാൽ, ഞങ്ങൾ നിങ്ങളെ ഇമെയിൽ വഴി അറിയിക്കും. + report_link_label: റിപ്പോർട്ട് ഡൗൺലോഡ് ചെയ്യുക (ലഭ്യമാകുമ്പോൾ) + revenues_by_hub: + name: ഹബ് വഴിയുള്ള വരുമാനം + description: ഹബ് വഴിയുള്ള വരുമാനം + orders_and_distributors: + name: ഓർഡറുകളും വിതരണക്കാരും + description: വിതരണക്കാരുടെ വിശദാംശങ്ങളുള്ള ഓർഡറുകൾ + bulk_coop: + name: ബൾക്ക് കോ-ഓപ്പ് + description: ബൾക്ക് സഹകരണ ഓർഡറുകൾക്കായുള്ള റിപ്പോർട്ടുകൾ + payments: + name: പേയ്മെന്റ് റിപ്പോർട്ടുകൾ + description: പേയ്‌മെന്റുകൾക്കുള്ള റിപ്പോർട്ടുകൾ + orders_and_fulfillment: + name: ഓർഡറുകളും പൂർത്തീകരണ റിപ്പോർട്ടുകളും + customers: + name: ഉപഭോക്താക്കൾ + products_and_inventory: + name: ഉൽപ്പന്നങ്ങളും ചരക്കുപട്ടികയും + users_and_enterprises: + name: ഉപയോക്താക്കളും സംരംഭങ്ങളും + description: എന്റർപ്രൈസ് ഉടമസ്ഥതയും നിലയും + order_cycle_management: + name: ഓർഡർ സൈക്കിൾ മാനേജ്മെന്റ് + sales_tax: + name: വില്പന നികുതി + xero_invoices: + name: സീറോ ഇൻവോയ്‌സുകൾ + description: സീറോയിലേക്ക് ഇറക്കുമതി ചെയ്യുന്നതിനുള്ള ഇൻവോയ്‌സുകൾ + enterprise_fee_summary: + name: "എന്റർപ്രൈസ് ഫീസ് സംഗ്രഹം" + description: "എന്റർപ്രൈസ് ഫീസ് ശേഖരിച്ചതിന്റെ സംഗ്രഹം" + enterprise_fees_with_tax_report_by_order: "ഓർഡർ പ്രകാരം നികുതി റിപ്പോർട്ടോടുകൂടിയ എന്റർപ്രൈസ് ഫീസ്" + enterprise_fees_with_tax_report_by_producer: "പ്രൊഡ്യൂസർ പ്രകാരം നികുതി റിപ്പോർട്ടോടുകൂടിയ എന്റർപ്രൈസ് ഫീസ്" + errors: + no_report_type: "ഒരു റിപ്പോർട്ട് തരം വ്യക്തമാക്കുക" + report_not_found: "റിപ്പോർട്ട് കണ്ടെത്തിയില്ല" + missing_ransack_params: "അഭ്യർത്ഥനയിൽ റാൻസാക് സെർച്ച് പാരാമുകൾ നൽകുക" + hidden_field: "<മറച്ചിരിക്കുന്നു>" + summary_row: + total: "ആകെ" + table: + select_and_search: "നിങ്ങളുടെ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ ഫിൽട്ടറുകൾ തിരഞ്ഞെടുത്ത് %{option} ക്ലിക്ക് ചെയ്യുക." + headings: + hub: "ഹബ്" + customer_code: "കോഡ്" + first_name: "പേരിന്റെ ആദ്യഭാഗം" + last_name: "പേരിന്റെ അവസാന ഭാഗം" + supplier: "വിതരണക്കാരൻ" + product: "ഉൽപ്പന്നം" + variant: "വേരിയന്റ്" + quantity: "അളവ്" + is_temperature_controlled: "ടെമ്പ് കൺട്രോൾഡ്?" + temp_controlled: "ടെമ്പ് കൺട്രോൾഡ്?" + price: "വില" + rendering_options: + generate_report: "റിപ്പോർട്ട് സൃഷ്ടിക്കുക" + on_screen: "സ്‌ക്രീനിൽ" + spreadsheet: "സ്‌പ്രെഡ്‌ഷീറ്റ് (എക്‌സൽ, ഓപ്പൺ ഓഫീസ്..)" + display: പ്രദർശിപ്പിക്കുക + summary_row: സംഗ്രഹ വരി + header_row: തലക്കെട്ട് വരി + raw_data: അസംസ്കൃത ഡാറ്റ + formatted_data: ഫോർമാറ്റ് ചെയ്ത ഡാറ്റ + packing: + name: "പാക്കിംഗ് റിപ്പോർട്ടുകൾ" + oidc_settings: + index: + title: "ഓഐഡിസി ക്രമീകരണങ്ങൾ" + connect: "നിങ്ങളുടെ അക്കൗണ്ട് ബന്ധിപ്പിക്കുക" + already_connected: "നിങ്ങളുടെ അക്കൗണ്ട് ഇതിനകം തന്നെ ഈ ഡിഎഫ്സി അംഗീകാര അക്കൗണ്ടുമായി ലിങ്ക് ചെയ്തിട്ടുണ്ട്:" + les_communs_link: "ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി സെർവർ" + link_your_account: "ആദ്യം ഡിഎഫ്സി (ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി കണക്ട്) ഉപയോഗിക്കുന്ന അംഗീകൃത ദാതാവുമായി നിങ്ങളുടെ അക്കൗണ്ട് ലിങ്ക് ചെയ്യേണ്ടത് ആവശ്യമാണ്." + link_account_button: "നിങ്ങളുടെ ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി കണക്ട് അക്കൗണ്ട് ലിങ്ക് ചെയ്യുക" + view_account: "നിങ്ങളുടെ അക്കൗണ്ട് കാണുന്നതിന്, നോക്കുക:" + subscriptions: + index: + title: "സബ്സ്ക്രിപ്ഷനുകൾ" + new: "പുതിയ സബ്സ്ക്രിപ്ഷൻ" + issue: "ഇഷ്യൂ" + new: + title: "പുതിയ സബ്സ്ക്രിപ്ഷൻ" + edit: + title: "സബ്സ്ക്രിപ്ഷൻ എഡിറ്റ് ചെയ്യുക" + table: + edit_subscription: സബ്സ്ക്രിപ്ഷൻ എഡിറ്റ് ചെയ്യുക + pause_subscription: സബ്‌സ്‌ക്രിപ്‌ഷൻ താൽക്കാലികമായി നിർത്തുക + unpause_subscription: സബ്സ്ക്രിപ്ഷൻ ഇടവേള അവസാനിപ്പിക്കുക + cancel_subscription: സബ്‌സ്‌ക്രിപ്‌ഷൻ റദ്ദാക്കുക + filters: + query_placeholder: "ഇമെയിൽ പ്രകാരം തിരയുക..." + setup_explanation: + title: "സബ്സ്ക്രിപ്ഷനുകൾ" + just_a_few_more_steps: 'ആരംഭിക്കുന്നതിന് മുമ്പ് കുറച്ച് ഘട്ടങ്ങൾ കൂടി:' + enable_subscriptions: "നിങ്ങളുടെ ഷോപ്പുകളിലൊന്നിലെങ്കിലും സബ്‌സ്‌ക്രിപ്‌ഷനുകൾ പ്രവർത്തനക്ഷമമാക്കുക" + enable_subscriptions_step_1_html: 1. %{enterprises_link} പേജിലേക്ക് പോയി നിങ്ങളുടെ ഷോപ്പ് കണ്ടെത്തി "മാനേജ് ചെയ്യുക" ക്ലിക്ക് ചെയ്യുക + enable_subscriptions_step_2: 2. "ഷോപ്പ് മുൻഗണനകൾ" എന്നതിന് കീഴിൽ, സബ്സ്ക്രിപ്ഷൻ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുക + set_up_shipping_and_payment_methods_html: '%{shipping_link} , %{payment_link} രീതികൾ സജ്ജീകരിക്കുക' + set_up_shipping_and_payment_methods_note_html: സബ്സ്ക്രിപ്ഷനുകൾക്കൊപ്പം ക്യാഷ്, സ്ട്രൈപ്പ് പേയ്‌മെന്റ് രീതികൾ മാത്രമേ ചെയ്യാവൂ
എന്നത് ശ്രദ്ധിക്കുക + ensure_at_least_one_customer_html: കുറഞ്ഞത് ഒരു %{customer_link} നിലവിലുണ്ടെന്ന് ഉറപ്പാക്കുക + create_at_least_one_schedule: കുറഞ്ഞത് ഒരു ഷെഡ്യൂളെങ്കിലും സൃഷ്ടിക്കുക + create_at_least_one_schedule_step_1_html: 1. %{order_cycles_link} പേജിലേക്ക് പോകുക + create_at_least_one_schedule_step_2: 2. നിങ്ങൾ ഇതിനകം അങ്ങനെ ചെയ്തിട്ടില്ലെങ്കിൽ ഒരു ഓർഡർ സൈക്കിൾ സൃഷ്ടിക്കുക + create_at_least_one_schedule_step_3: 3. '+ പുതിയ ഷെഡ്യൂൾ' ക്ലിക്ക് ചെയ്ത് ഫോം പൂരിപ്പിക്കുക + once_you_are_done_you_can_html: നിങ്ങൾ ചെയ്തുകഴിഞ്ഞാൽ, നിങ്ങൾക്ക് %{reload_this_page_link} കഴിയും + reload_this_page: ഈ പേജ് വീണ്ടും ലോഡുചെയ്യുക + form: + create: "സബ്സ്ക്രിപ്ഷൻ സൃഷ്ടിക്കുക" + steps: + details: 1. അടിസ്ഥാന വിവരങ്ങൾ + address: 2. വിലാസം + products: 3. ഉൽപ്പന്നങ്ങൾ ചേർക്കുക + review: 4. അവലോകനം & സേവ് ചെയ്യുക + subscription_line_items: + this_is_an_estimate: | + പ്രദർശിപ്പിച്ച വിലകൾ ഒരു എസ്റ്റിമേറ്റ് മാത്രമാണ്, സബ്‌സ്‌ക്രിപ്‌ഷൻ മാറുന്ന സമയത്ത് വില കണക്കാക്കുന്നു. + നിങ്ങൾ വിലകളോ ഫീസോ മാറ്റുകയാണെങ്കിൽ, ഓർഡറുകൾ അപ്‌ഡേറ്റ് ചെയ്യപ്പെടും, എന്നാൽ സബ്‌സ്‌ക്രിപ്‌ഷൻ പഴയ മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കും. + not_in_open_and_upcoming_order_cycles_warning: "ഈ ഉൽപ്പന്നത്തിന് ഓപ്പൺ അല്ലെങ്കിൽ വരാനിരിക്കുന്ന ഓർഡർ സൈക്കിളുകളൊന്നുമില്ല." + autocomplete: + name_or_sku: "പേര് അല്ലെങ്കിൽ എസ്കെയു " + quantity: "അളവ്" + add: "ചേർക്കുക" + details: + details: വിശദാംശങ്ങൾ + invalid_error: ക്ഷമിക്കണം! ദയവായി ആവശ്യമായ എല്ലാ ഫീൽഡുകളിലും വിവരങ്ങൾ ചേർക്കുക! + allowed_payment_method_types_tip: ഇപ്പോൾ പണവും സ്ട്രൈപ്പും പേയ്‌മെന്റ് രീതികൾ മാത്രമേ ഉപയോഗിക്കാവൂ + credit_card: ക്രെഡിറ്റ് കാർഡ് + charges_not_allowed: ഈ ഉപഭോക്താവിന് ചാർജുകൾ അനുവദനീയമല്ല + no_default_card: ചാർജ് ചെയ്യാൻ ഉപഭോക്താവിന് കാർഡുകളൊന്നും ലഭ്യമല്ല + card_ok: ചാർജ് ചെയ്യാൻ ഉപഭോക്താവിന് ഒരു കാർഡ് ലഭ്യമാണ് + begins_at_placeholder: "ഒരു തീയതി തിരഞ്ഞെടുക്കുക" + ends_at_placeholder: "ഓപ്ഷണൽ" + loading_flash: + loading: സബ്‌സ്‌ക്രിപ്‌ഷനുകൾ ലോഡുചെയ്യുന്നു + review: + details: വിശദാംശങ്ങൾ + address: വിലാസം + products: ഉൽപ്പന്നങ്ങൾ + no_open_or_upcoming_order_cycle: "വരാനിരിക്കുന്ന ഓർഡർ സൈക്കിൾ ഇല്ല" + products_panel: + save: "സേവ്" + saving: "സേവ് ചെയ്യുന്നു" + saved: "സേവ് ചെയ്തു" + product_already_in_order: ഈ ഉൽപ്പന്നം ഇതിനകം ഓർഡറിൽ ചേർത്തിട്ടുണ്ട്. അളവ് നേരിട്ട് എഡിറ്റ് ചെയ്യുക. + stock: + insufficient_stock: "ആവശ്യത്തിന് സ്റ്റോക്ക് ലഭ്യമല്ല" + out_of_stock: "സ്റ്റോക്കില്ല" + orders: + number: നമ്പർ + confirm_edit: ഈ ഓർഡർ എഡിറ്റ് ചെയ്യണമെന്ന് തീർച്ചയാണോ? അങ്ങനെ ചെയ്യുന്നത് ഭാവിയിൽ സബ്‌സ്‌ക്രിപ്‌ഷനിലേക്കുള്ള മാറ്റങ്ങൾ സ്വയമേവ സമന്വയിപ്പിക്കുന്നത് കൂടുതൽ ബുദ്ധിമുട്ടാക്കിയേക്കാം. + confirm_cancel_msg: "ഈ സബ്‌സ്‌ക്രിപ്‌ഷൻ റദ്ദാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പഴയപടിയാക്കാനാകില്ല." + cancel_failure_msg: "ക്ഷമിക്കണം, റദ്ദാക്കൽ പരാജയപ്പെട്ടു!" + confirm_pause_msg: "ഈ സബ്‌സ്‌ക്രിപ്‌ഷൻ താൽക്കാലികമായി നിർത്തണമെന്ന് തീർച്ചയാണോ?" + pause_failure_msg: "ക്ഷമിക്കണം, താൽക്കാലികമായി നിർത്തുന്നത് പരാജയപ്പെട്ടു!" + confirm_unpause_msg: "ഈ സബ്‌സ്‌ക്രിപ്‌ഷന്റെ ഷെഡ്യൂളിൽ നിങ്ങൾക്ക് ഒരു ഓപ്പൺ ഓർഡർ സൈക്കിൾ ഉണ്ടെങ്കിൽ, ഈ ഉപഭോക്താവിനായി ഒരു ഓർഡർ സൃഷ്‌ടിക്കും. ഈ സബ്‌സ്‌ക്രിപ്‌ഷൻ ഇടവേള അവസാനിപ്പിക്കണമെന്നത് തീർച്ചയാണോ?" + unpause_failure_msg: "ക്ഷമിക്കണം, ഇടവേള അവസാനിപ്പിക്കുന്നത് പരാജയപ്പെട്ടു!" + confirm_cancel_open_orders_msg: "ഈ സബ്‌സ്‌ക്രിപ്‌ഷന്റെ ചില ഓർഡറുകൾ നിലവിൽ ഉണ്ട്. ഓർഡർ നൽകുമെന്ന് ഉപഭോക്താവിനെ ഇതിനകം അറിയിച്ചിട്ടുണ്ട്. ഈ ഓർഡർ(കൾ) റദ്ദാക്കണോ അതോ സൂക്ഷിക്കണോ?" + resume_canceled_orders_msg: "ഈ സബ്‌സ്‌ക്രിപ്‌ഷനുള്ള ചില ഓർഡറുകൾ ഇപ്പോൾ പുനരാരംഭിക്കാനാകും. ഓർഡറുകൾ എന്ന ഡ്രോപ്പ്ഡൗണിൽ നിന്ന് നിങ്ങൾക്ക് അവ പുനരാരംഭിക്കാം." + yes_cancel_them: അവ റദ്ദാക്കുക + no_keep_them: അവ സൂക്ഷിക്കുക + yes_i_am_sure: അതെ, എനിക്ക് ഉറപ്പാണ് + number: "നമ്പർ" + order_update_issues_msg: ചില ഓർഡറുകൾ സ്വയമേവ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല, അവ കരകൃതമായി എഡിറ്റ് ചെയ്‌തതുകൊണ്ടാകാം. ചുവടെ ലിസ്‌റ്റ് ചെയ്‌തിരിക്കുന്ന പ്രശ്‌നങ്ങൾ അവലോകനം ചെയ്‌ത് ആവശ്യമെങ്കിൽ വ്യക്തിഗത ഓർഡറുകളിൽ എന്തെങ്കിലും ക്രമീകരണങ്ങൾ വരുത്തുക. + no_results: + no_subscriptions: ഇതുവരെ സബ്‌സ്‌ക്രിപ്‌ഷനുകളൊന്നുമില്ല... + why_dont_you_add_one: എന്തുകൊണ്ടാണ് നിങ്ങൾ ഒരെണ്ണം ചേർക്കാത്തത്? :) + no_matching_subscriptions: പൊരുത്തപ്പെടുന്ന സബ്‌സ്‌ക്രിപ്‌ഷനുകളൊന്നും കണ്ടെത്തിയില്ല + schedules: + destroy: + associated_subscriptions_error: അനുബന്ധ സബ്‌സ്‌ക്രിപ്‌ഷനുകൾ ഉള്ളതിനാൽ ഈ ഷെഡ്യൂൾ ഇല്ലാതാക്കാൻ കഴിയില്ല + vouchers: + new: + legend: പുതിയ വൗച്ചർ + back: തിരികെ + save: സേവ് + voucher_code: വൗച്ചർ കോഡ് + voucher_amount: തുക + voucher_type: വൗച്ചർ തരം + flat_rate: ഫ്ലാറ്റ് + percentage_rate: ശതമാനം (%) + controllers: + enterprises: + stripe_connect_cancelled: "സ്ട്രൈപ്പിലേക്കുള്ള കണക്ഷൻ റദ്ദാക്കി" + stripe_connect_success: "സ്ട്രൈപ്പ് അക്കൗണ്ട് കണക്റ്റ് ചെയ്തു" + stripe_connect_fail: ക്ഷമിക്കണം, നിങ്ങളുടെ സ്ട്രൈപ്പ് അക്കൗണ്ടിന്റെ കണക്ഷൻ പരാജയപ്പെട്ടു + stripe_connect_settings: + resource: സ്ട്രൈപ്പ് കണക്റ്റ് കോൺഫിഗറേഷൻ + resend_confirmation_emails_feedback: + one: "ഒരു ഓർഡറിനായി സ്ഥിരീകരണ ഇമെയിൽ അയച്ചു." + other: "%{count}ഓർഡറുകൾക്ക് സ്ഥിരീകരണ ഇമെയിലുകൾ അയച്ചിട്ടുണ്ട്." + send_invoice_feedback: + one: "ഒരു ഓർഡറിനായി ഇൻവോയ്സ് ഇമെയിൽ അയച്ചു." + other: "%{count} ഓർഡറുകൾക്ക് ഇൻവോയ്സ് ഇമെയിലുകൾ അയച്ചിട്ടുണ്ട്." + api: + unknown_error: "എന്തോ തകരാറ് സംഭവിച്ചു. ഞങ്ങളുടെ ടീമിനെ അറിയിച്ചിട്ടുണ്ട്." + invalid_api_key: "അസാധുവായ എപിഐ കീ (%{key}) വ്യക്തമായിട്ടുണ്ട്." + unauthorized: "ആ പ്രവർത്തനം നടത്താൻ നിങ്ങൾക്ക് അധികാരമില്ല." + unpermitted_parameters: "ഈ അഭ്യർത്ഥനയിൽ പാരാമീറ്ററുകൾ അനുവദനീയമല്ല: %{params}" + missing_parameter: "ആവശ്യമായ പാരാമീറ്റർ കാണുന്നില്ല അല്ലെങ്കിൽ ശൂന്യമാണ്: %{param}" + invalid_resource: "അസാധുവായ റീസോർസ്. തകരാറുകൾ പരിഹരിച്ച് വീണ്ടും ശ്രമിക്കുക." + resource_not_found: "നിങ്ങൾ തിരയുന്ന റീസോർസ് കണ്ടെത്താനായില്ല." + enterprise_logo: + destroy_attachment_does_not_exist: "ലോഗോ നിലവിലില്ല" + enterprise_promo_image: + destroy_attachment_does_not_exist: "പ്രമോ ചിത്രം നിലവിലില്ല" + enterprise_terms_and_conditions: + destroy_attachment_does_not_exist: "നിബന്ധനകളും വ്യവസ്ഥകളും ഫയൽ നിലവിലില്ല" + orders: + failed_to_update: "ഓർഡർ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" + query_param: + error: + title: അസാധുവായ അന്വേഷണ പാരാമീറ്റർ + extra_fields: "പിന്തുണയ്ക്കാത്ത ഫീൽഡുകൾ: %{fields}" + checkout: + failed: "ചെക്ക്ഔട്ട് പരാജയപ്പെട്ടു. ദയവായി ഞങ്ങളെ അറിയിക്കുക, അതുവഴി ഞങ്ങൾക്ക് നിങ്ങളുടെ ഓർഡർ പ്രോസസ്സ് ചെയ്യാൻ കഴിയും." + payment_cancelled_due_to_stock: "പേയ്‌മെന്റ് റദ്ദാക്കി: സ്റ്റോക്ക് പ്രശ്‌നങ്ങൾ കാരണം ചെക്ക്ഔട്ട് പൂർത്തിയാക്കാനായില്ല." + order_not_loaded: "ചെക്ക്ഔട്ട് പ്രോസസ്സിംഗിനായി സാധുതയുള്ള ഒരു ഓർഡർ കണ്ടെത്തിയില്ല" + your_details_without_number: നിങ്ങളുടെ വിശദാംശങ്ങൾ + payment_method_without_number: പണമടയ്ക്കൽ രീതി + order_summary_without_number: ഓർഡർ സംഗ്രഹം + already_ordered: + cart: "കാർട്ട്" + message_html: "ഈ ഓർഡർ സൈക്കിളിനായി നിങ്ങൾക്ക് ഇതിനകം ഒരു ഓർഡർ ഉണ്ട്. നിങ്ങൾ മുമ്പ് ഓർഡർ ചെയ്ത ഇനങ്ങൾ കാണാൻ %{cart} പരിശോധിക്കുക. ഓർഡർ സൈക്കിൾ തുറന്നിരിക്കുന്നിടത്തോളം നിങ്ങൾക്ക് ഇനങ്ങൾ റദ്ദാക്കാനും കഴിയും." + step1: + contact_information: + title: ബന്ധപ്പെടാനുള്ള വിവരങ്ങൾ + email: + label: ഇമെയിൽ + phone: + label: ഫോൺ നമ്പർ + billing_address: + title: ബില്ലിംഗ് വിലാസം + first_name: + label: പേരിന്റെ ആദ്യഭാഗം + last_name: + label: പേരിന്റെ അവസാന ഭാഗം + address: + address1: + label: വിലാസം (തെരുവ് + വീടിന്റെ നമ്പർ) + address2: + label: അധിക വിലാസ വിവരം (ഓപ്ഷണൽ) + city: + label: നഗരം + state_id: + label: സംസ്ഥാനം + zipcode: + label: പിൻ കോഡ് + country_id: + label: രാജ്യം + shipping_info: + title: ഷിപ്പിംഗ് വിവരം + submit: അടുത്തത് - പേയ്മെന്റ് രീതി + cancel: എഡിറ്റ് ബാസ്കറ്റിലേക്ക് മടങ്ങുക + step2: + payment_method: + title: പണമടയ്ക്കൽ രീതി + form: + card_number: + label: കാർഡ് നമ്പർ + placeholder: 'ഉദാ: 4242 4242 4242 4242' + card_verification_value: + label: സി.വി.സി + card_month: + label: മാസം + card_year: + label: വർഷം + stripe: + use_saved_card: സേവ് ചെയ്ത കാർഡ് ഉപയോഗിക്കുക + use_new_card: നിങ്ങളുടെ കാർഡ് ഐഡന്റിഫയറുകൾ നൽകുക + save_card: ഭാവിയിലെ ഉപയോഗത്തിനായി കാർഡ് സേവ് ചെയ്യുക + create_new_card: അല്ലെങ്കിൽ പുതിയ കാർഡ് വിശദാംശങ്ങൾ ചുവടെ നൽകുക + explaination: അന്തിമ ചെലവുകൾ ഉൾപ്പെടുന്ന അടുത്ത ഘട്ടത്തിൽ നിങ്ങൾക്ക് ഓർഡർ അവലോകനം ചെയ്യാനും സ്ഥിരീകരിക്കാനും കഴിയും. + submit: അടുത്തത് - ഓർഡർ സംഗ്രഹം + cancel: നിങ്ങളുടെ വിശദാംശങ്ങളിലേക്ക് മടങ്ങുക + voucher: + voucher: "%{voucher_amount} വൗച്ചർ" + apply_voucher: വൗച്ചർ പ്രയോഗിക്കുക + apply: പ്രയോഗിക്കുക + placeholder: വൗച്ചർ കോഡ് നൽകുക + remove_code: കോഡ് നീക്കം ചെയ്യുക + confirm_delete: വൗച്ചർ നീക്കം ചെയ്യണമെന്ന് തീർച്ചയാണോ? + warning_forfeit_remaining_amount: "ശ്രദ്ധിക്കുക: നിങ്ങളുടെ ഓർഡറിന്റെ ആകെ തുക നിങ്ങളുടെ വൗച്ചറിനേക്കാൾ കുറവാണെങ്കിൽ, നിങ്ങൾക്ക് ശേഷിക്കുന്ന മൂല്യം ചെലവഴിക്കാൻ കഴിഞ്ഞേക്കില്ല." + step3: + delivery_details: + title: ഡെലിവറി വിശദാംശങ്ങൾ + edit: എഡിറ്റ് ചെയ്യുക + address: ഡെലിവറി വിലാസം + instructions: നിർദ്ദേശങ്ങൾ + payment_method: + title: പണമടയ്ക്കൽ രീതി + edit: എഡിറ്റ് ചെയ്യുക + instructions: നിർദ്ദേശങ്ങൾ + order: + title: ഓർഡർ വിശദാംശങ്ങൾ + edit: എഡിറ്റ് ചെയ്യുക + terms_and_conditions: + message_html: "ഞാൻ വിൽപ്പനക്കാരന്റെ %{terms_and_conditions_link} അംഗീകരിക്കുന്നു." + link_text: "ഉപാധികളും നിബന്ധനകളും" + platform_terms_of_service: + message_html: "ഞാൻ പ്ലാറ്റ്‌ഫോം %{tos_link} അംഗീകരിക്കുന്നു." + all_terms_and_conditions: + message_html: "വിൽപ്പനക്കാരന്റെ %{terms_and_conditions_link} , പ്ലാറ്റ്‌ഫോം %{tos_link} എന്നിവ ഞാൻ അംഗീകരിക്കുന്നു." + terms_and_conditions: "ഉപാധികളും നിബന്ധനകളും" + submit: ഓർഡർ പൂർത്തിയാക്കുക + cancel: പേയ്‌മെന്റ് രീതിയിലേക്ക് മടങ്ങുക + errors: + saving_failed: "സേവ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു, ഹൈലൈറ്റ് ചെയ്ത ഫീൽഡുകൾ അപ്ഡേറ്റ് ചെയ്യുക." + terms_not_accepted: ദയവായി നിബന്ധനകളും വ്യവസ്ഥകളും അംഗീകരിക്കുക + required: ഫീൽഡ് ശൂന്യമാക്കാൻ കഴിയില്ല + invalid_number: "ദയവായി സാധുതയുള്ള ഒരു ഫോൺ നമ്പർ നൽകുക" + invalid_email: "സാധുതയുള്ള ഒരു ഇമെയിൽ വിലാസം നൽകുക" + select_a_shipping_method: ഒരു ഷിപ്പിംഗ് രീതി തിരഞ്ഞെടുക്കുക + select_a_payment_method: ഒരു പേയ്‌മെന്റ് രീതി തിരഞ്ഞെടുക്കുക + no_shipping_methods_available: ഷിപ്പിംഗ് ഓപ്ഷനുകൾ ഇല്ലാത്തതിനാൽ ചെക്ക്ഔട്ട് സാധ്യമല്ല. കട ഉടമയുമായി ബന്ധപ്പെടുക. + voucher_not_found: കണ്ടെത്തിയില്ല + add_voucher_error: വൗച്ചർ ചേർക്കുമ്പോൾ ഒരു തകരാറ് ഉണ്ടായി + shops: + hubs: + show_closed_shops: "അടച്ച കടകൾ കാണിക്കുക" + hide_closed_shops: "അടഞ്ഞുകിടക്കുന്ന കടകൾ മറയ്ക്കുക" + show_on_map: "മാപ്പിൽ എല്ലാം കാണിക്കുക" + shared: + mailers: + powered_by: + open_food_network: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക്" + powered_html: "താങ്കൾക്ക് ഷോപ്പിംഗ് അനുഭവം നൽകുന്നത് %{open_food_network} ആണ്." + menu: + cart: + cart: "കാർട്ട്" + cart_sidebar: + checkout: "ചെക്ക് ഔട്ട്" + edit_cart: "കാർട്ട് എഡിറ്റ് ചെയ്യുക" + items_in_cart_singular: "നിങ്ങളുടെ കാർട്ടിലെ %{num} ഇനം" + items_in_cart_plural: "നിങ്ങളുടെ കാർട്ടിലെ %{num} ഇനങ്ങൾ" + close: "അടയ്ക്കുക" + cart_empty: "നിങ്ങളുടെ കാർട്ട് ശൂന്യമാണ്" + take_me_shopping: "എന്നെ ഷോപ്പിംഗിന് കൊണ്ടുപോകൂ!" + signed_in: + profile: "പ്രൊഫൈൽ" + mobile_menu: + cart: "കാർട്ട്" + register_call: + selling_on_ofn: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ കയറാൻ താൽപ്പര്യമുണ്ടോ?" + register: "ഇവിടെ രജിസ്റ്റർ ചെയ്യുക" + footer: + footer_secure: "സുരക്ഷിതവും വിശ്വസ്തവും." + footer_secure_text: "നിങ്ങളുടെ ഷോപ്പിംഗ്, പേയ്‌മെന്റ് വിവരങ്ങൾ സ്വകാര്യമായി സൂക്ഷിക്കാൻ ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് എല്ലായിടത്തും എസ്.എസ്.എൽ എൻക്രിപ്ഷൻ (2048 ബിറ്റ് ആർ.എസ്.എ) ഉപയോഗിക്കുന്നു. ഞങ്ങളുടെ സെർവറുകൾ നിങ്ങളുടെ ക്രെഡിറ്റ് കാർഡ് വിശദാംശങ്ങൾ ശേഖരിക്കുന്നില്ല, പേയ്‌മെന്റുകൾ പ്രോസസ്സ് ചെയ്യുന്നത് പിസിഐ-കംപ്ലയിന്റ് സേവനങ്ങളാണ്." + footer_contact_headline: "ബന്ധം പുലർത്തുക" + footer_contact_email: "ഞങ്ങൾക്ക് ഇമെയിൽ ചെയ്യുക" + footer_nav_headline: "നാവിഗേറ്റ് ചെയ്യുക" + footer_join_headline: "ഞങ്ങൾക്കൊപ്പം ചേരുക" + footer_join_body: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ഒരു ലിസ്‌റ്റിംഗ്, ഷോപ്പ് അല്ലെങ്കിൽ ഗ്രൂപ്പ് ഡയറക്‌ടറി സൃഷ്‌ടിക്കുക." + footer_join_cta: "എന്നോട് കൂടുതൽ പറയൂ!" + footer_legal_call: "വായിക്കുക" + footer_legal_visit: "ഞങ്ങളെ ഇതിൽ കണ്ടെത്തൂ" + footer_legal_text_html: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഒരു സ്വതന്ത്ര ഓപ്പൺ സോഴ്‌സ് സോഫ്റ്റ്‌വെയർ പ്ലാറ്റ്‌ഫോമാണ്. ഞങ്ങളുടെ ഉള്ളടക്കം %{content_license} ഉപയോഗിച്ചും ഞങ്ങളുടെ കോഡ് %{code_license} ഉപയോഗിച്ചും ലൈസൻസുള്ളതാണ്." + footer_data_text_with_privacy_policy_html: "നിങ്ങളുടെ ഡാറ്റ ഞങ്ങൾ നന്നായി പരിപാലിക്കുന്നു. ഞങ്ങളുടെ %{privacy_policy} , %{cookies_policy} എന്നിവ കാണുക" + footer_data_text_without_privacy_policy_html: "നിങ്ങളുടെ ഡാറ്റ ഞങ്ങൾ നന്നായി പരിപാലിക്കുന്നു. ഞങ്ങളുടെ %{cookies_policy} കാണുക" + footer_data_privacy_policy: "സ്വകാര്യതാ നയം" + footer_data_cookies_policy: "കുക്കീസ് നയം" + shop: + messages: + customer_required: + login: "ലോഗിൻ" + contact: "ബന്ധപ്പെടുക" + require_customer_login: "അംഗീകൃത ഉപഭോക്താക്കൾക്ക് മാത്രമേ ഈ ഷോപ്പിൽ പ്രവേശിക്കാൻ കഴിയൂ." + require_login_link_html: "നിങ്ങൾ ഇതിനകം അംഗീകൃത ഉപഭോക്താവാണെങ്കിൽ, തുടരാൻ %{login} ചെയ്യുക." + require_login_2_html: "ഇവിടെ ഷോപ്പിംഗ് തുടങ്ങണോ? ദയവായി, ചേരുന്നതിനെക്കുറിച്ച് %{contact} %{enterprise} -ൽ ചോദിക്കുക." + require_customer_html: "നിങ്ങൾക്ക് ഇവിടെ ഷോപ്പിംഗ് ആരംഭിക്കാൻ താൽപ്പര്യമുണ്ടെങ്കിൽ, ദയവായി ചേരുന്നതിനെക്കുറിച്ച് %{contact}%{enterprise} -ൽ ചോദിക്കുക." + select_oc: + select_oc_html: "ഏതൊക്കെ ഉൽപ്പന്നങ്ങൾ ലഭ്യമാണെന്ന് കാണുന്നതിന്, നിങ്ങളുടെ ഓർഡർ എപ്പോൾ വേണമെന്ന് തിരഞ്ഞെടുക്കുക." + products: + summary: + bulk: "ബൾക്ക്" + card_could_not_be_updated: കാർഡ് അപ്ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല + card_could_not_be_saved: കാർഡ് സേവ് ചെയ്യാൻ കഴിഞ്ഞില്ല + spree_gateway_error_flash_for_checkout: "നിങ്ങളുടെ പേയ്‌മെന്റ് വിവരങ്ങളിൽ ഒരു പ്രശ്‌നമുണ്ടായി: %{error}" + invoice_billing_address: "ബില്ലിംഗ് വിലാസം:" + invoice_column_tax: "ജി.എസ്.ടി" + invoice_column_price: "വില" + invoice_column_item: "ഇനം" + invoice_column_qty: "അളവ്" + invoice_column_weight_volume: "ഭാരം / വ്യാപ്തം" + invoice_column_unit_price_with_taxes: "യൂണിറ്റ് വില (നികുതി ഉൾപ്പെടെ)" + invoice_column_unit_price_without_taxes: "യൂണിറ്റ് വില (നികുതി ഒഴികെ)" + invoice_column_price_with_taxes: "മൊത്തം വില (നികുതി ഉൾപ്പെടെ)" + invoice_column_price_without_taxes: "മൊത്തം വില (നികുതി ഒഴികെ)" + invoice_column_price_per_unit_without_taxes: "ഓരോ യൂണിറ്റിനും വില (നികുതി ഒഴികെ)" + invoice_column_tax_rate: "നികുതി നിരക്ക്" + invoice_tax_total: "ജി.എസ്.ടി ആകെ:" + tax_invoice: "നികുതി ഇൻവോയ്സ്" + tax_total: "മൊത്തം നികുതി (%{rate}):" + invoice_shipping_category_delivery: "ഡെലിവറി" + invoice_shipping_category_pickup: "പിക്ക്അപ്പ്" + total_excl_tax: "ആകെ (നികുതി ഒഴികെ):" + total_incl_tax: "ആകെ (നികുതി ഉൾപ്പെടെ):" + total_all_tax: "മൊത്തം നികുതി:" + abn: "എബിഎൻ:" + acn: "എസിഎൻ:" + invoice_issued_on: "ഇൻവോയ്സ് ഇഷ്യൂ ചെയ്തത്:" + order_number: "ഓർഡർ നമ്പർ:" + date_of_transaction: "ഇടപാട് തീയതി:" + menu_1_title: "കടകൾ" + menu_1_url: "/കടകൾ" + menu_2_title: "മാപ്പ്" + menu_2_url: "/മാപ്പ്" + menu_3_title: "പ്രൊഡ്യൂസഴ്സ്" + menu_3_url: "/പ്രൊഡ്യൂസഴ്സ്" + menu_4_title: "ഗ്രൂപ്പുകൾ" + menu_4_url: "/ഗ്രൂപ്പുകൾ" + menu_5_title: "കുറിച്ച്" + menu_5_url: "https://about.openfoodnetwork.org.au/" + menu_6_title: "ബന്ധിപ്പിക്കുക" + menu_6_url: "https://openfoodnetwork.org/au/connect/" + menu_7_title: "പഠിക്കുക" + logo: "ലോഗോ (640x130)" + logo_mobile: "മൊബൈൽ ലോഗോ (75x26)" + logo_mobile_svg: "മൊബൈൽ ലോഗോ (എസ് വി ജി)" + home_hero: "ഹീറോ ചിത്രം" + home_show_stats: "സ്ഥിതിവിവരക്കണക്കുകൾ കാണിക്കുക" + footer_logo: "ലോഗോ (220x76)" + footer_facebook_url: "ഫേസ്ബുക് യുആർഎൽ" + footer_twitter_url: "ട്വിറ്റർ യുആർഎൽ" + footer_instagram_url: "ഇൻസ്റ്റാഗ്രാം യുആർഎൽ" + footer_linkedin_url: "ലിങ്ക്ഡ്ഇൻ യുആർഎൽ" + footer_googleplus_url: "ഗൂഗിൾ പ്ലസ് യുആർഎൽ" + footer_pinterest_url: "പിന്റെരെസ്റ് യുആർഎൽ" + footer_email: "ഇമെയിൽ" + footer_links_md: "ലിങ്കുകൾ" + footer_about_url: "കുറിച്ച് യുആർഎൽ" + user_guide_link: "ഉപയോക്തൃ ഗൈഡ് ലിങ്ക്" + name: പേര് + first_name: പേരിന്റെ ആദ്യഭാഗം + last_name: പേരിന്റെ അവസാന ഭാഗം + email: ഇമെയിൽ + phone: ഫോൺ + next: അടുത്തത് + address: വിലാസം + address_placeholder: ഉദാ. 123 ഹൈ സ്ട്രീറ്റ് + address2: വിലാസം (തുടർച്ച) + city: നഗരം + city_placeholder: ഉദാ. നോർത്ത്കോട്ടെ + latitude: അക്ഷാംശം + latitude_placeholder: ഉദാ. -37.4713077 + latitude_longitude_tip: മാപ്പിൽ നിങ്ങളുടെ എന്റർപ്രൈസ് പ്രദർശിപ്പിക്കുന്നതിന് അക്ഷാംശവും രേഖാംശവും ആവശ്യമാണ്. + longitude: രേഖാംശം + longitude_placeholder: ഉദാ. 144.7851531 + use_geocoder: വിലാസത്തിൽ നിന്ന് സ്വയമേവ അക്ഷാംശവും രേഖാംശവും കണക്കാക്കണോ? + state: സംസ്ഥാനം + postcode: പിൻ കോഡ് + postcode_placeholder: ഉദാ. 3070 + suburb: നഗരപ്രാന്തം + country: രാജ്യം + unauthorized: അനധികൃതം + terms_of_service: "സേവന നിബന്ധനകൾ" + on_demand: ആവശ്യപ്പെടുന്നതനുസരിച്ച് + not_allowed: അനുവദനീയമല്ല + no_shipping: ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല + no_payment: പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല + no_shipping_or_payment: ഷിപ്പിംഗ് അല്ലെങ്കിൽ പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല + unconfirmed: സ്ഥിരീകരിച്ചിട്ടില്ല + days: ദിവസങ്ങൾ + authorization_failure: "പ്രവേശനാനുമതി പരാജയപ്പെട്ടു" + description: "വിവരണം" + label_shop: "കട" + label_shops: "കടകൾ" + label_map: "മാപ്പ്" + label_producer: "പ്രൊഡ്യൂസർ" + label_producers: "പ്രൊഡ്യൂസേഴ്‌സ്" + label_groups: "ഗ്രൂപ്പുകൾ" + label_about: "കുറിച്ച്" + label_blog: "ബ്ലോഗ്" + label_support: "പിന്തുണ" + label_shopping: "ഷോപ്പിംഗ്" + label_login: "ലോഗിൻ" + label_logout: "ലോഗൗട്ട്" + label_signup: "സൈൻ അപ്പ് ചെയ്യുക" + label_administration: "ഭരണകൂടം" + label_admin: "അഡ്മിൻ" + label_account: "അക്കൗണ്ട്" + label_more: "കൂടുതൽ കാണിക്കുക" + label_less: "കുറച്ചുമാത്രം കാണിക്കുക" + label_notices: "അറിയിപ്പുകൾ" + cart_items: "ഇനങ്ങൾ" + cart_headline: "നിങ്ങളുടെ ഷോപ്പിംഗ് കാർട്ട്" + total: "ആകെ" + cart_updating: "കാർട്ട് അപ്ഡേറ്റ് ചെയ്യുന്നു..." + cart_empty: "കാർട്ട് ശൂന്യം" + cart_edit: "നിങ്ങളുടെ കാർട്ട് എഡിറ്റ് ചെയ്യുക" + item: "ഇനം" + qty: "അളവ്" + card_number: കാർഡ് നമ്പർ + card_securitycode: "സുരക്ഷാ കോഡ്" + card_expiry_date: കാലഹരണപ്പെടുന്ന തീയതി + card_masked_digit: "എക്സ്" + card_expiry_abbreviation: "Exp" + new_credit_card: "പുതിയ ക്രെഡിറ്റ് കാർഡ്" + my_credit_cards: എന്റെ ക്രെഡിറ്റ് കാർഡുകൾ + add_new_credit_card: പുതിയ ക്രെഡിറ്റ് കാർഡ് ചേർക്കുക + saved_cards: സേവ് ചെയ്യപ്പെട്ട കാർഡുകൾ + add_a_card: ഒരു കാർഡ് ചേർക്കുക + add_card: കാർഡ് ചേർക്കുക + you_have_no_saved_cards: നിങ്ങൾ ഇതുവരെ കാർഡുകളൊന്നും സേവ് ചെയ്തിട്ടില്ല + saving_credit_card: ക്രെഡിറ്റ് കാർഡ് സേവ് ചെയ്യുന്നു... + card_has_been_removed: "നിങ്ങളുടെ കാർഡ് നീക്കം ചെയ്‌തു (നമ്പർ: %{number})" + card_could_not_be_removed: ക്ഷമിക്കണം, കാർഡ് നീക്കം ചെയ്യാൻ കഴിഞ്ഞില്ല + invalid_credit_card: "അസാധുവായ ക്രെഡിറ്റ് കാർഡ്" + legal: + cookies_policy: + header: "ഞങ്ങൾ എങ്ങനെ കുക്കികൾ ഉപയോഗിക്കുന്നു" + desc_part_1: "നിങ്ങൾ ചില വെബ്‌സൈറ്റുകൾ സന്ദർശിക്കുമ്പോൾ നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ സംഭരിക്കുന്ന വളരെ ചെറിയ ടെക്‌സ്‌റ്റ് ഫയലുകളാണ് കുക്കികൾ." + desc_part_2: "ഓ.എഫ്.എൻ -ൽ ഞങ്ങൾ നിങ്ങളുടെ സ്വകാര്യതയെ പൂർണ്ണമായും മാനിക്കുന്നു. ഓൺലൈനായി ആഹാരം വിൽക്കുന്നതിനോ വാങ്ങുന്നതിനോ ഉള്ള സേവനം നിങ്ങൾക്ക് എത്തിക്കുന്നതിന് ആവശ്യമായ കുക്കികൾ മാത്രമാണ് ഞങ്ങൾ ഉപയോഗിക്കുന്നത്. നിങ്ങളുടെ ഡാറ്റ ഒന്നും തന്നെ ഞങ്ങൾ വിൽക്കില്ല. ആവാസവ്യവസ്ഥയ്ക്ക് ഉപയോഗപ്രദമായ (ഹ്രസ്വ ആഹാര സംവിധാനങ്ങൾക്കുള്ള ലോജിസ്റ്റിക് സേവനങ്ങൾ പോലെ) പുതിയ സഹകരണ സേവനങ്ങൾ നിർമ്മിക്കുന്നതിന് നിങ്ങളുടെ ഡാറ്റയിൽ ചിലത് പങ്കിടാൻ ഭാവിയിൽ ഞങ്ങൾ നിങ്ങളോട് നിർദ്ദേശിച്ചേക്കാം, എന്നാൽ ഞങ്ങൾ ഇതുവരെ അത്രത്തോളം എത്തിയിട്ടില്ല, നിങ്ങളുടെ മുൻ‌കൂർ അനുമതി ഇല്ലാതെ ഞങ്ങൾ അത് ചെയ്യില്ല :-)" + desc_part_3: "നിങ്ങൾ സേവനത്തിലേക്ക് 'ലോഗിൻ' ചെയ്‌താൽ നിങ്ങൾ ആരാണെന്ന് ഓർമ്മിക്കുന്നതിനോ അല്ലെങ്കിൽ നിങ്ങൾ ലോഗിൻ ചെയ്‌തിട്ടില്ലെങ്കിൽപ്പോലും നിങ്ങളുടെ കാർട്ടിൽ ഇട്ടിരിക്കുന്ന ഇനങ്ങൾ ഓർമ്മിക്കുന്നതിനോ ഞങ്ങൾ പ്രധാനമായും കുക്കികൾ ഉപയോഗിക്കുന്നു. നിങ്ങൾ വെബ്‌സൈറ്റിൽ ക്ലിക്ക് ചെയ്യാതെ നാവിഗേറ്റ് ചെയ്യുന്നത് തുടരുകയാണെങ്കിൽ \"കുക്കികൾ സ്വീകരിക്കുക\" വെബ്‌സൈറ്റിന്റെ പ്രവർത്തനത്തിന് അത്യന്താപേക്ഷിതമായ കുക്കികൾ സംഭരിക്കുന്നതിന് നിങ്ങൾ ഞങ്ങൾക്ക് സമ്മതം നൽകുന്നുവെന്ന് ഞങ്ങൾ അനുമാനിക്കുന്നു. ഞങ്ങൾ ഉപയോഗിക്കുന്ന കുക്കികളുടെ ലിസ്റ്റ് ഇതാ!" + essential_cookies: "അവശ്യ കുക്കികൾ" + essential_cookies_desc: "ഞങ്ങളുടെ വെബ്‌സൈറ്റിന്റെ പ്രവർത്തനത്തിന് ഇനിപ്പറയുന്ന കുക്കികൾ കർശനമായി ആവശ്യമാണ്." + essential_cookies_note: "മിക്ക കുക്കികളിലും ഒരു വിശിഷ്ടമായ ഐഡന്റിഫയർ മാത്രമേ അടങ്ങിയിട്ടുള്ളൂ, എന്നാൽ മറ്റ് ഡാറ്റയില്ല, അതിനാൽ നിങ്ങളുടെ ഇമെയിൽ വിലാസവും പാസ്‌വേഡും ഒരിക്കലും അവയിൽ ഉണ്ടാകില്ല, അതൊരിക്കലും വെളിപ്പെടുകയും ഇല്ല." + cookie_domain: "സജ്ജീകരിച്ചത്:" + cookie_session_desc: "പേജ് സന്ദർശനങ്ങൾക്കിടയിൽ ഉപയോക്താക്കളെ ഓർമ്മിക്കാൻ വെബ്‌സൈറ്റിനെ അനുവദിക്കാൻ ഉപയോഗിക്കുന്നു, ഉദാഹരണത്തിന്, നിങ്ങളുടെ കാർട്ടിലെ ഇനങ്ങൾ ഓർമ്മിക്കുന്നത്." + cookie_consent_desc: "കുക്കികൾ സംഭരിക്കുന്നതിനുള്ള ഉപയോക്തൃ സമ്മതത്തിന്റെ സ്ഥിതി നിലനിർത്താൻ ഉപയോഗിക്കുന്നു" + cookie_remember_me_desc: "ഉപയോക്താവ് അയാളെ ഓർത്തിരിക്കാൻ വെബ്‌സൈറ്റിനോട് അഭ്യർത്ഥിച്ചിട്ടുണ്ടെങ്കിൽ ഉപയോഗിക്കുന്നു. 12 ദിവസത്തിന് ശേഷം ഈ കുക്കി സ്വയമേവ ഇല്ലാതാക്കപ്പെടും. ഒരു ഉപയോക്താവെന്ന നിലയിൽ ആ കുക്കി ഇല്ലാതാക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾ ലോഗ്ഔട്ട് ചെയ്താൽ മാത്രം മതി. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ആ കുക്കി ഇൻസ്റ്റാൾ ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നില്ലെങ്കിൽ, ലോഗിൻ ചെയ്യുമ്പോൾ \"എന്നെ ഓർമ്മിക്കുക\" ചെക്ക്ബോക്സിൽ ക്ലിക്ക് ചെയ്യരുത്." + cookie_openstreemap_desc: "ഞങ്ങളുടെ സൗഹൃദ ഓപ്പൺ സോഴ്‌സ് മാപ്പിംഗ് ദാതാവ് (ഓപ്പൺ സ്ട്രീറ്റ്മാപ്പ്) അവരുടെ സേവനങ്ങളുടെ ദുരുപയോഗം തടയുന്നതിന്, ഒരു നിശ്ചിത കാലയളവിൽ വളരെയധികം അഭ്യർത്ഥനകൾ സ്വീകരിക്കുന്നില്ലെന്ന് ഉറപ്പാക്കാൻ ഉപയോഗിക്കുന്നു." + cookie_stripe_desc: "തട്ടിപ്പ് കണ്ടെത്തുന്നതിനായി ഞങ്ങളുടെ പേയ്‌മെന്റ് പ്രോസസ്സർ സ്ട്രൈപ്പ് ശേഖരിച്ച ഡാറ്റ https://stripe.com/cookies-policy/legal. എല്ലാ ഷോപ്പുകളും സ്ട്രൈപ്പ് ഒരു പേയ്‌മെന്റ് രീതിയായി ഉപയോഗിക്കുന്നില്ല, എന്നാൽ ഇത് എല്ലാ പേജുകളിലും പ്രയോഗിക്കുന്നത് വഞ്ചന തടയുന്നതിനുള്ള ഒരു നല്ല സമ്പ്രദായമാണ്. സാധാരണയായി ഞങ്ങളുടെ പേജുകളിൽ ഏതൊക്കെ അവരുടെ എപിഐ-യുമായി ഇടപഴകുന്നു എന്നതിന്റെ ഒരു ചിത്രം സ്ട്രൈപ്പ് നിർമ്മിക്കുകയും തുടർന്ന് അസാധാരണമായ എന്തെങ്കിലും ഉണ്ടെങ്കിൽ ഫ്ലാഗ് ചെയ്യുകയും ചെയ്യും. അതിനാൽ സ്ട്രൈപ്പ് കുക്കി സജ്ജീകരിക്കുന്നത് ഒരു ഉപയോക്താവിന് ഒരു പേയ്‌മെന്റ് രീതി നൽകുന്നതിനേക്കാൾ വിശാലമായ സേവനമാണ്. ഇത് നീക്കം ചെയ്യുന്നത് സേവനത്തിന്റെ സുരക്ഷയെ തന്നെ ബാധിക്കും. https://stripe.com/privacy എന്നതിൽ നിങ്ങൾക്ക് സ്ട്രൈപ്പിനെക്കുറിച്ച് കൂടുതലറിയാനും അതിന്റെ സ്വകാര്യതാ നയം വായിക്കാനും കഴിയും." + statistics_cookies: "സ്ഥിതിവിവരക്കണക്ക് കുക്കികൾ" + statistics_cookies_desc: "ഇനിപ്പറയുന്നവ കർശനമായി ആവശ്യമില്ല, എന്നാൽ ഉപയോക്തൃ പെരുമാറ്റം വിശകലനം ചെയ്യുന്നതിനും നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിക്കുന്നതോ ഉപയോഗിക്കാത്തതോ ആയ ഫീച്ചറുകൾ തിരിച്ചറിയുന്നതിനും ഉപയോക്തൃ അനുഭവ പ്രശ്‌നങ്ങൾ മനസ്സിലാക്കുന്നതിനും ഞങ്ങളെ അനുവദിച്ചുകൊണ്ട് മികച്ച ഉപയോക്തൃ അനുഭവം നിങ്ങൾക്ക് നൽകാൻ സഹായിക്കുന്നു." + statistics_cookies_matomo_desc_html: "പ്ലാറ്റ്‌ഫോം ഉപയോഗ ഡാറ്റ ശേഖരിക്കുന്നതിനും വിശകലനം ചെയ്യുന്നതിനും, ജിഡിപിആർ അനുസരിച്ചുള്ളതും നിങ്ങളുടെ സ്വകാര്യത പരിരക്ഷിക്കുന്നതുമായ ഒരു ഓപ്പൺ സോഴ്‌സ് അനലിറ്റിക്‌സ് ഉപകരണമായ മറ്റോമോ(എക്സ് പിവിക്) ഞങ്ങൾ ഉപയോഗിക്കുന്നു." + statistics_cookies_matomo_optout: "നിങ്ങൾക്ക് മറ്റോമോ അനലിറ്റിക്‌സ് ഒഴിവാക്കണോ? ഞങ്ങൾ വ്യക്തിഗത വിവരങ്ങളൊന്നും ശേഖരിക്കുന്നില്ല, ഞങ്ങളുടെ സേവനം മെച്ചപ്പെടുത്താൻ മറ്റോമോ ഞങ്ങളെ സഹായിക്കുന്നു, എന്നാൽ നിങ്ങളുടെ ഇഷ്ടം ഞങ്ങൾ മാനിക്കുന്നു :-)" + cookie_matomo_basics_desc: "സ്ഥിതിവിവരക്കണക്കുകൾ ശേഖരിക്കാൻ മറ്റോമോ ഫസ്റ്റ് പാർട്ടി കുക്കികൾ." + cookie_matomo_heatmap_desc: "മറ്റോമോ ഹീറ്റ്മാപ് & സെഷൻ റെക്കോർഡിങ് കുക്കി." + cookie_matomo_ignore_desc: "ട്രാക്ക് ചെയ്യപ്പെടുന്നതിൽ നിന്ന് ഉപയോക്താവിനെ ഒഴിവാക്കാൻ ഉപയോഗിക്കുന്ന കുക്കി." + disabling_cookies_header: "കുക്കികൾ പ്രവർത്തനരഹിതമാക്കുന്നതിനുള്ള മുന്നറിയിപ്പ്" + disabling_cookies_desc: "ഒരു ഉപയോക്താവെന്ന നിലയിൽ, നിങ്ങളുടെ ബ്രൗസറിന്റെ ക്രമീകരണ നിയന്ത്രണത്തിലൂടെ നിങ്ങൾക്ക് ആവശ്യമുള്ളപ്പോഴെല്ലാം ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിന്റെയോ മറ്റേതെങ്കിലും വെബ്‌സൈറ്റ് കുക്കികളോ അനുവദിക്കാനോ തടയാനോ ഇല്ലാതാക്കാനോ കഴിയും. ഓരോ ബ്രൗസറിനും ഓരോ ഓപ്പറേറ്റീവ് ഉണ്ട്. ലിങ്കുകൾ ഇതാ:" + disabling_cookies_firefox_link: "https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences" + disabling_cookies_chrome_link: "https://support.google.com/chrome/answer/95647" + disabling_cookies_ie_link: "https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies" + disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/en-ww/cookies/" + disabling_cookies_note: "എന്നാൽ ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഉപയോഗിക്കുന്ന അവശ്യ കുക്കികൾ നിങ്ങൾ ഇല്ലാതാക്കുകയോ പരിഷ്‌ക്കരിക്കുകയോ ചെയ്‌താൽ, വെബ്‌സൈറ്റ് പ്രവർത്തിക്കില്ല എന്ന് അറിഞ്ഞിരിക്കുക, ഉദാഹരണത്തിന് ചെക്ക്ഔട്ട് ചെയ്യാനോ നിങ്ങളുടെ കാർട്ടിലേക്ക് ഒന്നും ചേർക്കാനോ നിങ്ങൾക്ക് കഴിയില്ല." + cookies_banner: + cookies_usage: "നിങ്ങളുടെ നാവിഗേഷൻ സുഗമവും സുരക്ഷിതവുമാക്കുന്നതിനും, ഞങ്ങൾ ഓഫർ ചെയ്യുന്ന ഫീച്ചറുകൾ മെച്ചപ്പെടുത്തുന്നതിന് നിങ്ങൾ അത് എങ്ങനെ ഉപയോഗിക്കുന്നുവെന്ന് മനസ്സിലാക്കുന്നതിനും ഈ സൈറ്റ് കുക്കികൾ ഉപയോഗിക്കുന്നു." + cookies_definition: "നിങ്ങൾ ചില വെബ്‌സൈറ്റുകൾ സന്ദർശിക്കുമ്പോൾ നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ സംഭരിക്കുന്ന വളരെ ചെറിയ ടെക്‌സ്‌റ്റ് ഫയലുകളാണ് കുക്കികൾ." + cookies_desc: "ഓൺലൈനായി ആഹാരസാധനങ്ങൾ വിൽക്കുന്നതിനോ വാങ്ങുന്നതിനോ ഉള്ള സേവനം നിങ്ങൾക്ക് എത്തിക്കുന്നതിന് ആവശ്യമായ കുക്കികൾ മാത്രമാണ് ഞങ്ങൾ ഉപയോഗിക്കുന്നത്. നിങ്ങളുടെ ഡാറ്റ ഒന്നുംതന്നെ ഞങ്ങൾ വിൽക്കില്ല. നിങ്ങൾ സേവനത്തിലേക്ക് 'ലോഗിൻ' ചെയ്‌താൽ നിങ്ങൾ ആരാണെന്ന് ഓർമ്മിക്കുന്നതിനോ അല്ലെങ്കിൽ നിങ്ങൾ ലോഗിൻ ചെയ്‌തിട്ടില്ലെങ്കിൽപ്പോലും നിങ്ങളുടെ കാർട്ടിൽ ഇട്ടിരിക്കുന്ന ഇനങ്ങൾ ഓർമ്മിക്കുന്നതിനോ ഞങ്ങൾ പ്രധാനമായും കുക്കികൾ ഉപയോഗിക്കുന്നു. നിങ്ങൾ വെബ്‌സൈറ്റിൽ \"കുക്കികൾ സ്വീകരിക്കുക\" എന്ന ടാബ് ക്ലിക്ക് ചെയ്യാതെ നാവിഗേറ്റ് ചെയ്യുന്നത് തുടരുകയാണെങ്കിൽ വെബ്‌സൈറ്റിന്റെ പ്രവർത്തനത്തിന് അത്യന്താപേക്ഷിതമായ കുക്കികൾ സംഭരിക്കുന്നതിന് നിങ്ങൾ ഞങ്ങൾക്ക് സമ്മതം നൽകുന്നുവെന്ന് ഞങ്ങൾ അനുമാനിക്കുന്നു." + cookies_policy_link_desc: "നിങ്ങൾക്ക് കൂടുതലറിയണമെങ്കിൽ, പരിശോധിക്കുക" + cookies_policy_link: "കുക്കീസ് നയം" + cookies_accept_button: "കുക്കികൾ സ്വീകരിക്കുക" + home_shop: ഇപ്പോൾ ഷോപ്പുചെയ്യുക + brandstory_headline: "ആഹാരസാധനങ്ങൾ, ഉൾപ്പെടുത്താത്തത്." + brandstory_intro: "ചിലപ്പോൾ സിസ്റ്റം ശരിയാക്കാനുള്ള ഏറ്റവും നല്ല മാർഗം പുതിയൊരെണ്ണം ആരംഭിക്കുക എന്നതാണ്..." + brandstory_part1: "ഞങ്ങൾ അടിത്തറയിൽ നിന്ന് ആരംഭിക്കുന്നു. തങ്ങളുടെ കഥകൾ അഭിമാനത്തോടെയും സത്യസന്ധമായും പറയാൻ തയ്യാറായ കർഷകരോടൊപ്പം. ന്യായമായും സത്യസന്ധമായും ഉൽപ്പന്നങ്ങളുമായി ആളുകളെ ബന്ധിപ്പിക്കാൻ തയ്യറാകുന്ന വിതരണക്കാരോടൊപ്പം. മികച്ച പ്രതിവാര ഷോപ്പിംഗ് തീരുമാനങ്ങൾക്ക് ലോകത്തെ മാറ്റാൻ കഴിയുമെന്ന് വിശ്വസിക്കുന്ന ഉപഭോക്താക്കൾക്കൊപ്പം." + brandstory_part2: "അപ്പോൾ അത് യാഥാർത്ഥ്യമാക്കാൻ നമുക്ക് ഒരു വഴി ആവശ്യമാണ്. ആഹാരസാധനങ്ങൾ കൃഷി ചെയ്യുകയും വിൽക്കുകയും വാങ്ങുകയും ചെയ്യുന്ന എല്ലാവരെയും ശാക്തീകരിക്കുന്നതിനുള്ള ഒരു മാർഗം. എല്ലാ കഥകളും പറയാനും എല്ലാ ലോജിസ്റ്റിക്‌സും കൈകാര്യം ചെയ്യാനുമുള്ള ഒരു മാർഗം. ഇടപാട് എല്ലാ ദിവസവും പരിവർത്തനത്തിലേക്ക് മാറ്റാനുള്ള ഒരു മാർഗം." + brandstory_part3: "അതിനാൽ ഞങ്ങൾ കളത്തെ സമനിലയിലാക്കുന്ന ഒരു ഓൺലൈൻ മാർക്കറ്റ് പ്ലേസ് നിർമ്മിക്കുന്നു. ഇത് സുതാര്യമാണ്, അതിനാൽ ഇത് യഥാർത്ഥ ബന്ധങ്ങൾ സൃഷ്ടിക്കുന്നു. ഇത് ഓപ്പൺ സോഴ്‌സ് ആയതിനാൽ ഇത് എല്ലാവരുടെയും ഉടമസ്ഥതയിലാണ്. ഇത് പ്രദേശങ്ങളിലേക്കും രാജ്യങ്ങളിലേക്കും വ്യാപിക്കുന്നു, അതിനാൽ ആളുകൾ ലോകമെമ്പാടുമുള്ള പതിപ്പുകൾ ആരംഭിക്കുന്നു." + brandstory_part4: "ഇത് എല്ലായിടത്തും പ്രവർത്തിക്കുന്നു. ഇത് എല്ലാം മാറ്റുന്നു." + brandstory_part5_strong: "ഞങ്ങൾ അതിനെ ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് എന്ന് വിളിക്കുന്നു." + brandstory_part6: "നമുക്കെല്ലാവർക്കും ആഹാരസാധനങ്ങൾ ഇഷ്ടമാണ്. ഇനി നമുക്ക് നമ്മുടെ ആഹാര സമ്പ്രദായവും ഇഷ്ടപ്പെടാം." + system_headline: "ഷോപ്പിംഗ് - ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നത് ഇതാ." + system_step1: "1. തിരയുക" + system_step1_text: "സീസണൽ പ്രാദേശിക ആഹാരത്തിനായി ഞങ്ങളുടെ വൈവിധ്യമാർന്ന സ്വതന്ത്ര ഷോപ്പുകൾ തിരയുക. അയൽപക്കവും ആഹാര വിഭാഗവും അനുസരിച്ച് തിരയുകയോ, അല്ലെങ്കിൽ നിങ്ങൾ ഡെലിവറി / പിക്കപ്പ് തിരഞ്ഞെടുക്കുകയോ ചെയ്യുക." + system_step2: "2. ഷോപ്പ്" + system_step2_text: "വൈവിധ്യമാർന്ന പ്രൊഡ്യൂസേഴ്സിൽ നിന്നും, ഹബുകളിൽ നിന്നും താങ്ങാനാവുന്ന പ്രാദേശിക ആഹാരം ഉപയോഗിച്ച് നിങ്ങളുടെ ഇടപാടുകൾ രൂപാന്തരപ്പെടുത്തുക. നിങ്ങളുടെ ആഹാരത്തിന് പിന്നിലെ കഥകളും അത് ഉണ്ടാക്കുന്ന ആളുകളെയും അറിയുക!" + system_step3: "3. പിക്ക്-അപ്പ് / ഡെലിവറി" + system_step3_text: "നിങ്ങളുടെ ഡെലിവറിക്കായി കാത്തിരിക്കുക, അല്ലെങ്കിൽ നിങ്ങളുടെ ആഹാരവുമായി കൂടുതൽ വ്യക്തിഗത ബന്ധത്തിനായി നിങ്ങളുടെ പ്രൊഡ്യൂസർ അല്ലെങ്കിൽ ഹബ് സന്ദർശിക്കുക. പ്രകൃതി ഉദ്ദേശിച്ചതുപോലെ വൈവിധ്യമാർന്ന ഫുഡ് ഷോപ്പിംഗ്." + cta_headline: "ലോകത്തെ മികച്ച സ്ഥലമാക്കി മാറ്റുന്ന ഷോപ്പിംഗ്." + cta_label: "ഞാൻ തയാറാണ്" + stats_headline: "ഞങ്ങൾ ഒരു പുതിയ ആഹാര സമ്പ്രദായം സൃഷ്ടിക്കുകയാണ്." + stats_producers: "ഭക്ഷ്യ ഉത്പാദകർ" + stats_shops: "ഫുഡ് ഷോപ്പുകൾ" + stats_shoppers: "ആഹാര ഉപഭോക്താക്കൾ" + stats_orders: "ആഹാര ഓർഡറുകൾ" + checkout_title: ചെക്ക് ഔട്ട് + checkout_now: ഇപ്പോൾ ചെക്ക്ഔട്ട് ചെയ്യുക + checkout_order_ready: ഓർഡർ തയ്യാറാണ് + checkout_hide: മറയ്ക്കുക + checkout_expand: വികസിപ്പിക്കുക + checkout_headline: "ശരി, ചെക്ക്ഔട്ടിന് തയ്യാറാണോ?" + checkout_as_guest: "അതിഥിയായി ചെക്ക്ഔട്ട് ചെയ്യുക" + checkout_details: "നിങ്ങളുടെ വിശദാംശങ്ങൾ" + checkout_billing: "ബിൽ വിവരങ്ങൾ" + checkout_default_bill_address: "സ്ഥിരസ്ഥിതി ബില്ലിംഗ് വിലാസമായി സേവ് ചെയ്യുക" + checkout_shipping: ഷിപ്പിംഗ് വിവരം + checkout_default_ship_address: "സ്ഥിരസ്ഥിതി ഷിപ്പിംഗ് വിലാസമായി സേവ് ചെയ്യുക" + checkout_method_free: സൗജന്യം + checkout_address_same: ഷിപ്പിംഗ് വിലാസവും ബില്ലിംഗ് വിലാസവും ഒന്നുതന്നെയാണോ? + checkout_ready_for: "തയ്യാറാണ്:" + checkout_instructions: "എന്തെങ്കിലും അഭിപ്രായങ്ങളോ പ്രത്യേക നിർദ്ദേശങ്ങളോ ഉണ്ടോ?" + checkout_payment: പേയ്മെന്റ് + checkout_send: ഇപ്പോൾ ഓർഡർ ചെയ്യുക + checkout_your_order: നിങ്ങളുടെ ഓർഡർ + checkout_cart_total: കാർട്ട് മൊത്തം + checkout_shipping_price: ഷിപ്പിംഗ് + checkout_total_price: ആകെ + checkout_back_to_cart: "കാർട്ടിലേക്ക് മടങ്ങുക" + cost_currency: "ചെലവ് കറൻസി" + order_paid: പണം നൽകി + order_not_paid: പണം നൽകിയിട്ടില്ല + order_total: ആകെ ഓർഡർ + order_payment: "ഇതുവഴി പണമടയ്ക്കുന്നു:" + no_payment_required: "പണം നൽകേണ്ടതില്ല" + order_billing_address: ബില്ലിംഗ് വിലാസം + order_delivery_on: ഡെലിവറി തീയതി + order_delivery_address: ഡെലിവറി വിലാസം + order_delivery_time: ഡെലിവറി സമയം + order_special_instructions: "നിങ്ങളുടെ കുറിപ്പുകൾ:" + order_pickup_time: ശേഖരണത്തിന് തയ്യാറാണ് + order_pickup_instructions: ശേഖരണ നിർദ്ദേശങ്ങൾ + order_produce: ഉൽപ്പന്നം + order_amount_paid: അടച്ച തുക + order_total_price: ആകെ + order_balance_due: മിച്ച കടം + order_includes_tax: (നികുതി ഉൾപ്പെടുന്നു) + order_payment_paypal_successful: പേയ്യ്പാൽ വഴിയുള്ള നിങ്ങളുടെ പേയ്‌മെന്റ് വിജയകരമായി പ്രോസസ്സ് ചെയ്തു. + order_hub_info: ഹബ് വിവരം + order_back_to_store: സ്റ്റോറിലേക്ക് മടങ്ങുക + order_back_to_cart: കാർട്ടിലേക്ക് മടങ്ങുക + order_back_to_website: വെബ്‌സൈറ്റിലേക്ക് മടങ്ങുക + checkout_details_title: ചെക്ക്ഔട്ട് വിശദാംശങ്ങൾ + checkout_payment_title: ചെക്ക്ഔട്ട് പേയ്മെന്റ് + checkout_summary_title: ചെക്ക്ഔട്ട് സംഗ്രഹം + bom_tip: "ഒന്നിലധികം ഓർഡറുകളിലുടനീളം ഉൽപ്പന്നത്തിന്റെ അളവ് മാറ്റാൻ ഈ പേജ് ഉപയോഗിക്കുക. ആവശ്യമെങ്കിൽ, ഓർഡറുകളിൽ നിന്ന് ഉൽപ്പന്നങ്ങൾ പൂർണ്ണമായും നീക്കം ചെയ്യാം." + unsaved_changes_warning: "സേവ് ചെയ്യാത്ത മാറ്റങ്ങൾ നിലവിലുണ്ട്, നിങ്ങൾ തുടരുകയാണെങ്കിൽ അത് നഷ്‌ടമാകും." + unsaved_changes_error: "ചുവന്ന ബോർഡറുകളുള്ള ഫീൽഡുകളിൽ തെറ്റുകൾ ഉണ്ട്." + products: "ഉൽപ്പന്നങ്ങൾ" + products_in: "%{oc} -ൽ" + products_at: "%{distributor} -ൽ" + products_elsewhere: "ഉൽപ്പന്നങ്ങൾ മറ്റൊരിടത്ത് കണ്ടെത്തി" + email_confirmed: "നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിച്ചതിന് നന്ദി." + email_confirmation_activate_account: "നിങ്ങളുടെ പുതിയ അക്കൗണ്ട് സജീവമാക്കുന്നതിന് മുമ്പ്, ഞങ്ങൾക്ക് നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതുണ്ട്." + email_confirmation_greeting: "ഹായ്, %{contact}!" + email_confirmation_profile_created: "%{name} -ന് വേണ്ടിയുള്ള ഒരു പ്രൊഫൈൽ വിജയകരമായി സൃഷ്ടിച്ചു! നിങ്ങളുടെ പ്രൊഫൈൽ സജീവമാക്കുന്നതിന് ഞങ്ങൾക്ക് ഈ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതുണ്ട്." + email_confirmation_click_link: "നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിക്കുന്നതിനും നിങ്ങളുടെ പ്രൊഫൈൽ സജ്ജീകരിക്കുന്നത് തുടരുന്നതിനും ചുവടെയുള്ള ലിങ്കിൽ ക്ലിക്കുചെയ്യുക." + email_confirmation_link_label: "ഈ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുക »" + email_confirmation_help_html: "നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിച്ച ശേഷം ഈ എന്റർപ്രൈസസിനായി നിങ്ങളുടെ അഡ്മിനിസ്ട്രേഷൻ അക്കൗണ്ട് ആക്സസ് ചെയ്യാൻ കഴിയും. %{sitename}-ന്റെ സവിശേഷതകളെ കുറിച്ച് കൂടുതൽ അറിയുന്നതിനും നിങ്ങളുടെ പ്രൊഫൈലോ ഓൺലൈൻ സ്റ്റോറോ ഉപയോഗിച്ച് തുടങ്ങുന്നതിനും %{link} കാണുക." + email_confirmation_notice_unexpected: "നിങ്ങൾ %{sitename} എന്നതിൽ സൈൻ അപ്പ് ചെയ്‌തതിനാലോ അല്ലെങ്കിൽ നിങ്ങൾക്ക് അറിയാവുന്ന ആരെങ്കിലും സൈൻ അപ്പ് ചെയ്യാൻ ക്ഷണിച്ചതിനാലോ നിങ്ങൾക്ക് ഈ സന്ദേശം ലഭിച്ചു. എന്തുകൊണ്ടാണ് നിങ്ങൾക്ക് ഈ ഇമെയിൽ ലഭിക്കുന്നതെന്ന് മനസ്സിലാകുന്നില്ലെങ്കിൽ, ദയവായി %{contact} ലേക്ക് എഴുതുക." + email_social: "ഞങ്ങളുമായി ബന്ധപ്പെടുക:" + email_contact: "ഞങ്ങൾക്ക് ഇമെയിൽ ചെയ്യുക:" + email_signoff: "ആശംസകൾ," + email_signature: "%{sitename} ടീം" + email_confirm_customer_greeting: "ഹായ് %{name} ," + email_confirm_customer_intro_html: "%{distributor} -ഇവിടെ ഷോപ്പിംഗ് നടത്തിയതിന് നന്ദി!" + email_confirm_customer_number_html: "# %{number} ഓർഡർ സ്ഥിരീകരണം" + email_confirm_customer_details_html: "%{distributor} -ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ വിശദാംശങ്ങൾ ഇതാ:" + email_confirm_customer_signoff: "വിശ്വസ്തതയോടെ," + email_confirm_shop_greeting: "ഹായ് %{name} ," + email_confirm_shop_order_html: "നന്നായി ചെയ്തു! %{distributor} നിങ്ങൾക്ക് ഒരു പുതിയ ഓർഡർ ഉണ്ട്!" + email_confirm_shop_number_html: "# %{number} ഓർഡർ സ്ഥിരീകരണം " + email_order_summary_item: "ഇനം" + email_order_summary_quantity: "അളവ്" + email_order_summary_sku: "എസ്.കെ.യു" + email_order_summary_price: "വില" + email_order_summary_subtotal: "അകെ തുക:" + email_order_summary_total: "ആകെ:" + email_order_summary_includes_tax: "(നികുതി ഉൾപ്പെടുന്നു):" + email_payment_paid: പണം നൽകി + email_payment_not_paid: പണം നൽകിയിട്ടില്ല + email_payment_description: ചെക്ക്ഔട്ടിലെ പേയ്മെന്റ് വിവരണം + email_payment_summary: പേയ്മെന്റ് സംഗ്രഹം + email_payment_method: "ഇതുവഴി പണമടയ്ക്കുന്നു:" + email_so_placement_intro_html: "നിങ്ങൾക്ക് %{distributor} -ന്റെ അടുത്തുനിന്ന് ഒരു പുതിയ ഓർഡർ ഉണ്ട്" + email_so_placement_details_html: "%{distributor} '-ന്റെ അടുത്തുനിന്നുള്ള നിങ്ങളുടെ ഓർഡറിന്റെ വിശദാംശങ്ങൾ ഇതാ:" + email_so_placement_changes: "നിർഭാഗ്യവശാൽ, നിങ്ങൾ അഭ്യർത്ഥിച്ച എല്ലാ ഉൽപ്പന്നങ്ങളും ലഭ്യമല്ല. നിങ്ങൾ അഭ്യർത്ഥിച്ച യഥാർത്ഥ അളവുകൾ ചുവടെ ക്രോസ്-ഔട്ട് ആയി കാണപ്പെടുന്നു." + email_so_payment_success_intro_html: "%{distributor} -ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡറിനായി ഒരു ഓട്ടോമാറ്റിക് പേയ്‌മെന്റ് പ്രോസസ്സ് ചെയ്തു." + email_so_placement_explainer_html: "ഈ ഓർഡർ നിങ്ങൾക്കായി സ്വയമേവ സൃഷ്ടിച്ചതാണ്." + email_so_edit_true_html: "നിങ്ങൾക്ക് %{orders_close_at} -ൽ ഓർഡറുകൾ സ്വീകരിക്കുന്നത് അവസാനിക്കുന്നത് വരെ മാറ്റങ്ങൾ വരുത്താം." + email_so_edit_false_html: "നിങ്ങൾക്ക് എപ്പോൾ വേണമെങ്കിലും ഈ ഓർഡറിന്റെ വിശദാംശങ്ങൾ കാണാൻ കഴിയും." + email_so_contact_distributor_html: "നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് %{email} വഴി %{distributor} -നെ ബന്ധപ്പെടാം." + email_so_contact_distributor_to_change_order_html: "ഈ ഓർഡർ നിങ്ങൾക്കായി സ്വയമേവ സൃഷ്ടിച്ചതാണ്. ഓർഡറുകൾ സ്വീകരിക്കുന്നത് അവസാനിക്കുന്ന %{orders_close_at} തീയതി വരെ%{email} ഉപയോഗിച്ചുകൊണ്ട് %{distributor} -നെ ബന്ധപ്പെട്ടുകൊണ്ട് നിങ്ങൾക്ക് ഓർഡറിൽ മാറ്റങ്ങൾ വരുത്താം." + email_so_confirmation_intro_html: "%{distributor} -ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ ഇപ്പോൾ സ്ഥിരീകരിച്ചു" + email_so_confirmation_explainer_html: "ഈ ഓർഡർ നിങ്ങൾക്കായി സ്വയമേവ ഉണ്ടാക്കിയതാണ്, അത് ഇപ്പോൾ അന്തിമമായിക്കഴിഞ്ഞു." + email_so_confirmation_details_html: "%{distributor} ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡറിനെ കുറിച്ച് നിങ്ങൾ അറിയേണ്ടതെല്ലാം ഇതാ:" + email_so_empty_intro_html: "ഞങ്ങൾ %{distributor} -ൽ നിന്ന് ഒരു പുതിയ ഓർഡർ നൽകാൻ ശ്രമിച്ചു, പക്ഷേ ചില തകരാറുകൾ ഉണ്ടായിരുന്നു..." + email_so_empty_explainer_html: "നിർഭാഗ്യവശാൽ, നിങ്ങൾ ഓർഡർ ചെയ്ത ഉൽപ്പന്നങ്ങളൊന്നും ലഭ്യമല്ല, അതിനാൽ ഓർഡർ നൽകിയിട്ടില്ല. നിങ്ങൾ അഭ്യർത്ഥിച്ച യഥാർത്ഥ അളവുകൾ ചുവടെ ക്രോസ്-ഔട്ട് ആയി കാണപ്പെടുന്നു." + email_so_empty_details_html: "%{distributor} -ൽ നിന്ന് സ്ഥാപിക്കാനാകാതെപോയ ഓർഡറിന്റെ വിശദാംശങ്ങൾ ഇതാ:" + email_so_failed_payment_intro_html: "ഞങ്ങൾ ഒരു പേയ്‌മെന്റ് പ്രോസസ്സ് ചെയ്യാൻ ശ്രമിച്ചു, പക്ഷേ ചില തകരാറുകൾ ഉണ്ടായിരുന്നു..." + email_so_failed_payment_explainer_html: "നിങ്ങളുടെ ക്രെഡിറ്റ് കാർഡിലെ ഒരു പ്രശ്നം കാരണം %{distributor} -ൽ നിന്നുള്ള നിങ്ങളുടെ സബ്‌സ്‌ക്രിപ്‌ഷന്റെ പേയ്‌മെന്റ് പരാജയപ്പെട്ടു. ഈ പരാജയപ്പെട്ട പേയ്‌മെന്റിനെക്കുറിച്ച് %{distributor} -നെ അറിയിച്ചു." + email_so_failed_payment_details_html: "പേയ്‌മെന്റ് ഗേറ്റ്‌വേ നൽകിയ പരാജയത്തിന്റെ വിശദാംശങ്ങൾ ഇതാ:" + email_shipping_delivery_details: ഡെലിവറി വിശദാംശങ്ങൾ + email_shipping_delivery_time: "ഡെലിവറി:" + email_shipping_delivery_address: "ഡെലിവറി വിലാസം:" + email_shipping_collection_details: ശേഖരണ വിശദാംശങ്ങൾ + email_shipping_collection_time: "ശേഖരണത്തിന് തയ്യാറാണ്:" + email_shipping_collection_instructions: "ശേഖരണ നിർദ്ദേശങ്ങൾ:" + email_special_instructions: "നിങ്ങളുടെ കുറിപ്പുകൾ:" + email_signup_greeting: ഹലോ! + email_signup_welcome: "%{sitename} -ലേക്ക് സ്വാഗതം!" + email_signup_confirmed_email: "നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിച്ചതിന് നന്ദി." + email_signup_shop_html: "നിങ്ങൾക്ക് ഇപ്പോൾ %{link} -ൽ ലോഗിൻ ചെയ്യാം." + email_signup_text: "നെറ്റ്‌വർക്കിൽ ചേർന്നതിന് നന്ദി. നിങ്ങളൊരു ഉപഭോക്താവാണെങ്കിൽ, അതിശയകരമായ നിരവധി കർഷകരെയും അതിശയകരമായ ഫുഡ് ഹബ്ബുകളും രുചികരമായ ആഹാരത്തെയും പരിചയപ്പെടുത്താൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു! നിങ്ങളൊരു പ്രൊഡ്യൂസറോ ഭക്ഷ്യ സംരംഭകനോ ആണെങ്കിൽ, നിങ്ങളെ നെറ്റ്‌വർക്കിന്റെ ഭാഗമാക്കുന്നതിൽ ഞങ്ങൾക്ക് സന്തോഷമുണ്ട്." + email_signup_help_html: "നിങ്ങളുടെ എല്ലാ ചോദ്യങ്ങളും ഫീഡ്‌ബാക്കും ഞങ്ങൾ സ്വാഗതം ചെയ്യുന്നു; നിങ്ങൾക്ക് സൈറ്റിലെ ഫീഡ്‌ബാക്ക് അയയ്‌ക്കുക ബട്ടൺ ഉപയോഗിക്കാം അല്ലെങ്കിൽ %{email} എന്ന വിലാസത്തിൽ ഞങ്ങൾക്ക് ഇമെയിൽ ചെയ്യാം" + invite_email: + greeting: "ഹലോ!" + invited_to_manage: "%{instance} ൽ %{enterprise} മാനേജ് ചെയ്യാൻ നിങ്ങളെ ക്ഷണിച്ചിരിക്കുന്നു." + confirm_your_email: "സ്ഥിരീകരണ ലിങ്കുള്ള ഒരു ഇമെയിൽ നിങ്ങൾക്ക് ലഭിച്ചിരിക്കണം അല്ലെങ്കിൽ ഉടൻ ലഭിക്കും. നിങ്ങളുടെ ഇമെയിൽ സ്ഥിരീകരിക്കുന്നത് വരെ നിങ്ങൾക്ക് %{enterprise} -ന്റെ പ്രൊഫൈൽ ആക്‌സസ് ചെയ്യാൻ കഴിയില്ല." + set_a_password: "എന്റർപ്രൈസ് നിയന്ത്രിക്കാൻ കഴിയുന്നതിന് മുമ്പ് ഒരു പാസ്‌വേഡ് സജ്ജീകരിക്കാൻ നിങ്ങളോട് ആവശ്യപ്പെടും." + mistakenly_sent: "എന്തുകൊണ്ടാണ് നിങ്ങൾക്ക് ഈ ഇമെയിൽ ലഭിച്ചതെന്ന് ഉറപ്പില്ലേ? കൂടുതൽ വിവരങ്ങൾക്ക് ദയവായി %{owner_email} എന്ന വിലാസത്തിൽ ബന്ധപ്പെടുക." + producer_mail_greeting: "പ്രിയ" + producer_mail_text_before: "ഓർഡർ സൈക്കിളിനെക്കുറിച്ചുള്ള ഒരു അപ്‌ഡേറ്റ് ചുവടെ കണ്ടെത്തുക:" + producer_mail_order_text: "നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾക്കായുള്ള ഓർഡറുകളുടെ ഒരു സംഗ്രഹം ഇതാ:" + producer_mail_delivery_instructions: "സ്റ്റോക്ക് പിക്കപ്പ്/ഡെലിവറി നിർദ്ദേശങ്ങൾ:" + producer_mail_signoff: "നന്ദിയും ആശംസകളും" + producer_mail_order_customer_text: "ഉപഭോക്താക്കൾ കൂട്ടമായി ഉണ്ടാക്കിയ ഓർഡറുകളുടെ ഒരു സംഗ്രഹം ഇതാ" + shopping_oc_closed: ഓർഡറുകൾ സ്വീകരിക്കുന്നില്ല + shopping_oc_closed_description: "അടുത്ത ഓർഡർ സ്വീകരിക്കുന്നത് വരെ കാത്തിരിക്കുക (അല്ലെങ്കിൽ വൈകിയ ഓർഡറുകൾ സ്വീകരിക്കാൻ കഴിയുമോ എന്നറിയാൻ ഞങ്ങളെ നേരിട്ട് ബന്ധപ്പെടുക)" + shopping_oc_last_closed: "അവസാന ഓർഡർ സൈക്കിൾ %{distance_of_time} മുമ്പ് അവസാനിച്ചു" + shopping_oc_next_open: "അടുത്ത ഓർഡർ സൈക്കിൾ %{distance_of_time} -ൽ ആരംഭിക്കും" + shopping_oc_select: "തിരഞ്ഞെടുക്കുക..." + shopping_tabs_home: "ഹോം" + shopping_tabs_shop: "കട" + shopping_tabs_about: "കുറിച്ച്" + shopping_tabs_producers: "പ്രൊഡ്യൂസേഴ്‌സ്" + shopping_tabs_contact: "ബന്ധപ്പെടുക" + shopping_tabs_groups: "ഗ്രൂപ്പുകൾ" + shopping_contact_address: "വിലാസം" + shopping_contact_web: "ബന്ധപ്പെടുക" + shopping_contact_social: "ഫോളോ ചെയ്യുക" + shopping_groups_part_of: "ഭാഗമാണ്:" + shopping_producers_of_hub: "%{hub} -ന്റെ പ്രൊഡ്യൂസേഴ്‌സ്:" + enterprises_next_closing: "അടുത്ത ഓർഡർ ക്ലോസിംഗ്" + enterprises_currently_open: "ഓർഡറുകൾ നിലവിൽ സ്വീകരിക്കുന്നു" + enterprises_ready_for: "തയ്യാറാണ്" + enterprises_choose: "നിങ്ങളുടെ ഓർഡർ എപ്പോൾ വേണമെന്ന് തിരഞ്ഞെടുക്കുക:" + maps_open: "തുറന്നിരിക്കുന്നു" + maps_closed: "അടച്ചു" + map_title: "മാപ്പ്" + hubs_buy: "ഇതിനായി ഷോപ്പുചെയ്യുക:" + hubs_shopping_here: "ഇവിടെ ഷോപ്പിംഗ് ചെയ്യുക" + hubs_orders_closed: "ഓർഡറുകൾ അടച്ചു" + hubs_profile_only: "പ്രൊഫൈൽ മാത്രം" + hubs_delivery_options: "ഡെലിവറി ഓപ്ഷനുകൾ" + hubs_pickup: "പിക്ക്അപ്പ്" + hubs_delivery: "ഡെലിവറി" + hubs_producers: "ഞങ്ങളുടെ പ്രൊഡ്യൂസേഴ്‌സ്" + hubs_filter_by: "ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക" + hubs_filter_type: "ഇനം" + hubs_filter_delivery: "ഡെലിവറി" + hubs_filter_property: "സാധനം" + hubs_matches: "ഇതാണോ നിങ്ങൾ അർത്ഥമാക്കുന്നത്?" + hubs_intro: നിങ്ങളുടെ പ്രാദേശിക പ്രദേശത്ത് ഷോപ്പുചെയ്യുക + hubs_distance: ഏറ്റവും അടുത്തത് + hubs_distance_filter: "%{location} -ന്റെ സമീപമുള്ള ഷോപ്പുകൾ എന്നെ കാണിക്കൂ" + shop_changeable_orders_alert_html: + one: %{shop}/%{order} -ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ അവലോകനത്തിനായി ലഭ്യമാണ്. നിങ്ങൾക്ക് %{oc_close} വരെ അതിൽ മാറ്റങ്ങൾ വരുത്താം. + few: നിങ്ങൾക്ക് %{shop} - -ൽ നിന്നുള്ള %{count} ഓർഡറുകൾ നിലവിൽ അവലോകനത്തിനായി ലഭ്യമാണ്. നിങ്ങൾക്ക് %{oc_close} വരെ അതിൽ മാറ്റങ്ങൾ വരുത്താം. + many: നിങ്ങൾക്ക് %{shop} -ൽ നിന്നുള്ള %{count}ഓർഡറുകൾ നിലവിൽ അവലോകനത്തിനായി ലഭ്യമാണ്. നിങ്ങൾക്ക് %{oc_close} വരെ അതിൽ മാറ്റങ്ങൾ വരുത്താം. + other: നിങ്ങൾക്ക് %{shop} -ൽ നിന്നുള്ള %{count} ഓർഡറുകൾ നിലവിൽ അവലോകനത്തിനായി ലഭ്യമാണ്. നിങ്ങൾക്ക് %{oc_close} വരെ അതിൽ മാറ്റങ്ങൾ വരുത്താം. + orders_changeable_orders_alert_html: ഈ ഓർഡർ സ്ഥിരീകരിച്ചു, എന്നാൽ നിങ്ങൾക്ക് %{oc_close} വരെ അതിൽ മാറ്റങ്ങൾ വരുത്താം. + products_clear: ക്ലിയർ + products_showing: "കാണിക്കുന്നു:" + products_results_for: "ഇതിനായുള്ള ഫലങ്ങൾ" + products_or: "അഥവാ" + products_and: "ഒപ്പം" + products_filters_in: "ഇൻ" + products_with: കൂടെ + products_search: "തിരയുക..." + products_filter_by: "ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക" + products_filter_selected: "തിരഞ്ഞെടുത്തു" + products_filter_heading: "ഫിൽട്ടറുകൾ" + products_filter_clear: "ക്ലിയർ" + products_filter_done: "ചെയ്തു" + products_loading: "ഉൽപ്പന്നങ്ങൾ ലോഡുചെയ്യുന്നു..." + products_updating_cart: "കാർട്ട് അപ്ഡേറ്റ് ചെയ്യുന്നു..." + products_cart_empty: "കാർട്ട് ശൂന്യം" + products_edit_cart: "നിങ്ങളുടെ കാർട്ട് എഡിറ്റ് ചെയ്യുക" + products_from: നിന്ന് + products_change: "സേവ് ചെയ്യാൻ മാറ്റങ്ങളൊന്നുമില്ല." + products_update_error: "ഇനിപ്പറയുന്ന തകരാറ്(കൾ) മൂലം സേവ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു:" + products_update_error_msg: "സേവ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു." + products_update_error_data: "അസാധുവായ ഡാറ്റ മൂലം സേവ് ചെയ്യുന്നത് പരാജയപ്പെട്ടു:" + products_changes_saved: "മാറ്റങ്ങൾ സേവ് ചെയ്തു." + products_no_results_html: "ക്ഷമിക്കണം, %{query} എന്നതിന് ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല" + products_clear_search: "തിരയൽ മായ്‌ക്കുക" + search_no_results_html: "ക്ഷമിക്കണം, %{query} ന് ഫലങ്ങളൊന്നും കണ്ടെത്തിയില്ല. മറ്റൊരു തിരയൽ പരീക്ഷിക്കണോ?" + components_profiles_popover: "പ്രൊഫൈലുകൾക്ക് ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ഷോപ്പ് ഫ്രണ്ട് ഇല്ല, എന്നാൽ മറ്റെവിടെയെങ്കിലും സ്വന്തം അല്ലെങ്കിൽ ഓൺലൈൻ ഷോപ്പ് ഉണ്ടായിരിക്കാം" + components_profiles_show: "പ്രൊഫൈലുകൾ കാണിക്കുക" + components_filters_nofilters: "ഫിൽട്ടറുകൾ ഇല്ല" + components_filters_clearfilters: "എല്ലാ ഫിൽട്ടറുകളും മായ്‌ക്കുക" + groups_title: ഗ്രൂപ്പുകൾ + groups_headline: ഗ്രൂപ്പുകൾ / പ്രദേശങ്ങൾ + groups_text: "ഓരോ പ്രൊഡ്യൂസറും അതുല്യരാണ്. ഓരോ ബിസിനസ്സും വ്യത്യസ്തമായ എന്തെങ്കിലും വാഗ്ദാനം ചെയ്യുന്നു. ലൊക്കേഷൻ, കർഷക വിപണി അല്ലെങ്കിൽ തത്ത്വചിന്ത എന്നിങ്ങനെ പൊതുവായ എന്തെങ്കിലും പങ്കിടുന്ന പ്രൊഡ്യൂസേഴ്‌സ്, ഹബുകൾ, വിതരണക്കാർ എന്നിവരുടെ കൂട്ടായ്മകളാണ് ഞങ്ങളുടെ ഗ്രൂപ്പുകൾ. ഇത് നിങ്ങളുടെ ഷോപ്പിംഗ് അനുഭവം എളുപ്പമാക്കുന്നു. അതിനാൽ നിങ്ങൾക്കായി പ്രത്യേകം തയ്യാറാക്കിയ ഞങ്ങളുടെ ഗ്രൂപ്പുകൾ പരിശോധിക്കുക." + groups_search: "പേര് അല്ലെങ്കിൽ കീവേഡ് തിരയുക" + groups_no_groups: "ഗ്രൂപ്പുകളൊന്നും കണ്ടെത്തിയില്ല" + groups_about: "ഞങ്ങളേക്കുറിച്ച്" + groups_producers: "ഞങ്ങളുടെ പ്രൊഡ്യൂസേഴ്‌സ്" + groups_hubs: "ഞങ്ങളുടെ ഹബ്ബുകൾ" + groups_contact_web: ബന്ധപ്പെടുക + groups_contact_social: പിന്തുടരുക + groups_contact_address: വിലാസം + groups_contact_email: ഞങ്ങൾക്ക് ഇമെയിൽ ചെയ്യുക + groups_contact_website: ഞങ്ങളുടെ വെബ്സൈറ്റ് സന്ദർശിക്കുക + groups_contact_facebook: ഞങ്ങളെ ഫേസ്ബുക്കിൽ ഫോളോ ചെയ്യുക + groups_signup_title: ഒരു ഗ്രൂപ്പായി സൈൻ അപ്പ് ചെയ്യുക + groups_signup_headline: ഗ്രൂപ്പുകൾ സൈൻ അപ്പ് + groups_signup_intro: "സഹകരണ വിപണനത്തിനുള്ള ഒരു അത്ഭുതകരമായ പ്ലാറ്റ്‌ഫോമാണ് ഞങ്ങൾ, നിങ്ങളുടെ അംഗങ്ങൾക്കും ഓഹരി ഉടമകൾക്കും പുതിയ വിപണികളിലെത്താനുള്ള എളുപ്പവഴി. ഞങ്ങൾ ലാഭരഹിതവും താങ്ങാനാവുന്നതും ലളിതവുമാണ്." + groups_signup_email: ഞങ്ങൾക്ക് ഇമെയിൽ ചെയ്യുക + groups_signup_motivation1: ഞങ്ങൾ ഭക്ഷ്യ സമ്പ്രദായങ്ങളെ ന്യായമായി പരിവർത്തനം ചെയ്യുന്നു. + groups_signup_motivation2: അതാണ് ഞങ്ങളുടെ പ്രചോദനം.. ഞങ്ങൾ ഓപ്പൺ സോഴ്‌സ് കോഡ് അടിസ്ഥാനമാക്കി പ്രവർത്തിക്കുന്ന, ലാഭേച്ഛയില്ലാത്ത ഒരു ആഗോള സംസ്ഥാപനം ആണ്. ഞങ്ങൾ ന്യായമായി പ്രവർത്തിക്കുന്നു. നിങ്ങൾക്ക് എല്ലായ്പ്പോഴും ഞങ്ങളെ വിശ്വസിക്കാം. + groups_signup_motivation3: നിങ്ങൾക്ക് വലിയ ആശയങ്ങളുണ്ടെന്ന് ഞങ്ങൾക്കറിയാം, സഹായിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. ഞങ്ങളുടെ അറിവും നെറ്റ്‌വർക്കുകളും ഉറവിടങ്ങളും ഞങ്ങൾ പങ്കിടും. ഒറ്റപ്പെടൽ ഒരു മാറ്റവും സൃഷ്ടിക്കില്ലെന്ന് ഞങ്ങൾക്കറിയാം, അതിനാൽ ഞങ്ങൾ നിങ്ങളുടെ പങ്കാളികളാകും. + groups_signup_motivation4: നിങ്ങൾ എവിടെയായിരുന്നാലും ഞങ്ങൾ നിങ്ങളെ കണ്ടുമുട്ടും. + groups_signup_motivation5: നിങ്ങൾ ഫുഡ് ഹബ്ബുകൾ, പ്രൊഡ്യൂസേഴ്‌സ്, അല്ലെങ്കിൽ വിതരണക്കാർ, ഒരു വ്യവസായ സ്ഥാപനം അല്ലെങ്കിൽ ഒരു പ്രാദേശിക ഗവൺമെന്റ് എന്നിവയുടെ ഒരു സഖ്യം ആയിരിക്കാം. + groups_signup_motivation6: നിങ്ങളുടെ പ്രാദേശിക ആഹാര പ്രസ്ഥാനത്തിൽ നിങ്ങളുടെ പങ്ക് എന്തായാലും, സഹായിക്കാൻ ഞങ്ങൾ തയ്യാറാണ്. എന്നിരുന്നാലും, നിങ്ങളുടെ ലോകത്തിന്റെ ഭാഗത്ത് ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് എങ്ങനെയിരിക്കും അല്ലെങ്കിൽ എന്താണ് ചെയ്യുന്നതെന്നറിഞ്ഞ് നിങ്ങൾ ആശ്ചര്യപ്പെടും, നമുക്ക് സംസാരിച്ചാലോ. + groups_signup_motivation7: ഞങ്ങൾ ആഹാര ചലനങ്ങളെ കൂടുതൽ യുക്തിസഹമാക്കുന്നു. + groups_signup_motivation8: നിങ്ങളുടെ നെറ്റ്‌വർക്കുകൾ സജീവമാക്കുകയും പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യേണ്ടതുണ്ട്, സംഭാഷണത്തിനും പ്രവർത്തനത്തിനുമുള്ള ഒരു പ്ലാറ്റ്ഫോം ഞങ്ങൾ വാഗ്ദാനം ചെയ്യുന്നു. നിങ്ങൾക്ക് യഥാർത്ഥ ഇടപെടൽ ആവശ്യമാണ്. എല്ലാ ഉപയോക്താക്കളിലേക്കും എല്ലാ പങ്കാളികളിലേക്കും എല്ലാ മേഖലകളിലേക്കും എത്തിച്ചേരാൻ ഞങ്ങൾ സഹായിക്കും. + groups_signup_motivation9: നിങ്ങൾക്ക് റിസോഴ്‌സിംഗ് ആവശ്യമാണ്. ഞങ്ങളുടെ എല്ലാ അനുഭവങ്ങളും ഞങ്ങൾ പങ്കുവയ്ക്കും. നിങ്ങളുടെ സഹകരണം വേണം. സമചിന്താഗതിക്കാരുടെ ഒരു ആഗോള ശൃംഖലയിലേക്ക് നിങ്ങളെ ഞങ്ങൾ ബന്ധിപ്പിക്കുന്നതാണ് നല്ലത്. + groups_signup_pricing: ഗ്രൂപ്പ് അക്കൗണ്ട് + groups_signup_studies: കേസ് പഠനങ്ങൾ + groups_signup_contact: ചർച്ചയ്ക്ക് തയ്യാറാണോ? + groups_signup_contact_text: "ഓഎഫ്എൻ-ന് നിങ്ങൾക്കായി എന്തുചെയ്യാനാകുമെന്ന് കണ്ടെത്താൻ ബന്ധപ്പെടുക:" + groups_signup_detail: "വിശദാംശം ഇതാ." + login_invalid: "അസാധുവായ ഇമെയിൽ അല്ലെങ്കിൽ പാസ്സ്‌വേർഡ്" + producers_about: ഞങ്ങളേക്കുറിച്ച് + producers_buy: ഇത് വാങ്ങുക + producers_contact: ബന്ധപ്പെടുക + producers_contact_phone: വിളിക്കുക + producers_contact_social: ഫോളോ ചെയ്യുക + producers_buy_at_html: "%{enterprise} -ൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ ഇവിടെ വാങ്ങുക:" + producers_filter: ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക + producers_filter_type: ഇനം + producers_filter_property: സാധനം + producers_title: പ്രൊഡ്യൂസേഴ്‌സ് + producers_headline: പ്രാദേശിക പ്രൊഡ്യൂസേഴ്‌സിനെ കണ്ടെത്തുക + producers_signup_title: ഒരു പ്രൊഡ്യൂസറായി സൈൻ അപ്പ് ചെയ്യുക + producers_signup_headline: ഭക്ഷ്യ ഉൽപാദകർ, ശാക്തീകരിക്കപ്പെട്ടു. + producers_signup_motivation: നിങ്ങളുടെ ആഹാരം വിൽക്കുകയും, വൈവിധ്യമാർന്ന പുതിയ വിപണികളിലേക്ക് നിങ്ങളുടെ കഥകൾ പറയുകയും ചെയ്യുക. ഓരോ ചെലവുകളിലും സമയവും പണവും ലാഭിക്കുക. അപകടസാധ്യതയില്ലാതെ ഞങ്ങൾ നവീകരണത്തെ പിന്തുണയ്ക്കുന്നു. ഞങ്ങൾ ഈ കളിക്കളത്തെ സമനിലയിലാക്കി. + producers_signup_send: ഇപ്പോൾ ചേരുക + producers_signup_enterprise: എന്റർപ്രൈസ് അക്കൗണ്ടുകൾ + producers_signup_studies: ഞങ്ങളുടെ പ്രൊഡ്യൂസേഴ്‌സിൽ നിന്നുള്ള കഥകൾ. + producers_signup_cta_headline: ഇപ്പോൾ ചേരുക! + producers_signup_cta_action: ഇപ്പോൾ ചേരുക + producers_signup_detail: വിശദാംശം ഇതാ. + producer: പ്രൊഡ്യൂസർ + products_item: ഇനം + products_description: വിവരണം + products_variant: വേരിയന്റ് + products_quantity: അളവ് + products_available: ലഭ്യമാണോ? + products_producer: "പ്രൊഡ്യൂസർ" + products_price: "വില" + name_or_sku: "പേര് അല്ലെങ്കിൽ എസ്കെയു " + register_title: രജിസ്റ്റർ ചെയ്യുക + sell_title: "രജിസ്റ്റർ ചെയ്യുക" + sell_headline: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് നേടൂ!" + sell_motivation: "നിങ്ങളുടെ മനോഹരമായ ആഹാരസാധനം പ്രദർശിപ്പിക്കുക." + sell_producers: "പ്രൊഡ്യൂസേഴ്‌സ്" + sell_hubs: "ഹബ്ബുകൾ" + sell_groups: "ഗ്രൂപ്പുകൾ" + sell_producers_detail: "മിനിറ്റുകൾക്കുള്ളിൽ ഓഎഫ്എൻ-ൽ നിങ്ങളുടെ ബിസിനസ്സിനായി ഒരു പ്രൊഫൈൽ സജ്ജീകരിക്കുക. ഏത് സമയത്തും നിങ്ങൾക്ക് നിങ്ങളുടെ പ്രൊഫൈൽ ഒരു ഓൺലൈൻ സ്റ്റോറിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യാനും നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ നേരിട്ട് ഉപഭോക്താക്കൾക്ക് വിൽക്കാനും കഴിയും." + sell_hubs_detail: "ഓഎഫ്എൻ-ൽ നിങ്ങളുടെ ഫുഡ് എന്റർപ്രൈസസിനോ ഓർഗനൈസേഷനോ വേണ്ടി ഒരു പ്രൊഫൈൽ സജ്ജീകരിക്കുക. ഏത് സമയത്തും നിങ്ങൾക്ക് നിങ്ങളുടെ പ്രൊഫൈൽ ഒരു മൾട്ടി പ്രൊഡ്യൂസർ ഷോപ്പിലേക്ക് അപ്‌ഗ്രേഡ് ചെയ്യാം." + sell_groups_detail: "നിങ്ങളുടെ പ്രദേശത്തിനോ നിങ്ങളുടെ സ്ഥാപനത്തിനോ വേണ്ടി എന്റർപ്രൈസസിന്റെ (നിർമ്മാതാക്കളും മറ്റ് ഭക്ഷ്യ സംരംഭങ്ങളും) ഒരു പ്രത്യേക ഡയറക്ടറി സജ്ജീകരിക്കുക." + sell_user_guide: "ഞങ്ങളുടെ ഉപയോക്തൃ ഗൈഡിൽ കൂടുതൽ കണ്ടെത്തുക." + sell_listing_price: "ഓഎഫ്എൻ-ൽ ലിസ്റ്റിംഗ് സൗജന്യമാണ്. ഓഎഫ്എൻ-ൽ ഒരു ഷോപ്പ് തുറക്കുന്നതും പ്രവർത്തിപ്പിക്കുന്നതും പ്രതിമാസ വിൽപ്പനയുടെ $500 വരെ സൗജന്യമാണ്. നിങ്ങൾ കൂടുതൽ വിൽക്കുകയാണെങ്കിൽ, വിൽപ്പനയുടെ 1% മുതൽ 3% വരെ നിങ്ങളുടെ കമ്മ്യൂണിറ്റി വരിസംഖ്യ തിരഞ്ഞെടുക്കാം. വിലനിർണ്ണയത്തെക്കുറിച്ചുള്ള കൂടുതൽ വിശദാംശങ്ങൾക്ക് മുകളിലെ മെനുവിലെ വിവര ലിങ്ക് വഴി സോഫ്‌റ്റ്‌വെയർ പ്ലാറ്റ്‌ഫോം വിഭാഗം സന്ദർശിക്കുക." + sell_embed: "നിങ്ങളുടെ സ്വന്തം ഇഷ്‌ടാനുസൃതമാക്കിയ വെബ്‌സൈറ്റിൽ ഞങ്ങൾക്ക് ഒരു ഓഎഫ്എൻ ഷോപ്പ് ഉൾപ്പെടുത്താം അല്ലെങ്കിൽ നിങ്ങളുടെ പ്രദേശത്തിനായി ഒരു ഇഷ്‌ടാനുസൃത പ്രാദേശിക ഫുഡ് നെറ്റ്‌വർക്ക് വെബ്‌സൈറ്റ് നിർമ്മിക്കാനും കഴിയും." + sell_ask_services: "ഓഎഫ്എൻ സേവനങ്ങളെക്കുറിച്ച് ഞങ്ങളോട് ചോദിക്കുക." + shops_title: കടകൾ + shops_headline: ഷോപ്പിംഗ്, രൂപാന്തരപ്പെട്ടു. + shops_text: ആഹാരം ഒരു കാലചക്രത്തിൽ വളരുന്നു, കർഷകർ കാലചക്രങ്ങളിൽ വിളവെടുക്കുന്നു, നമ്മൾ കാലചക്രങ്ങളിൽ ആഹാരം ഓർഡർ ചെയ്യുന്നു. ഒരു ഓർഡർ സൈക്കിൾ അടച്ചതായി നിങ്ങൾ കണ്ടെത്തുകയാണെങ്കിൽ, പിന്നീട് വീണ്ടും പരിശോധിക്കുക. + shops_signup_title: ഒരു ഹബ്ബായി സൈൻ അപ്പ് ചെയ്യുക + shops_signup_headline: ഭക്ഷണ കേന്ദ്രങ്ങൾ, പരിധിയില്ലാത്തത്. + shops_signup_motivation: നിങ്ങളുടെ മാതൃക എന്തായാലും ഞങ്ങൾ നിങ്ങളെ പിന്തുണയ്ക്കുന്നു. നിങ്ങൾ മാറിയാലും ഞങ്ങൾ നിങ്ങളോടൊപ്പമുണ്ട്. ഞങ്ങൾ ലാഭേച്ഛയില്ലാത്തവരും സ്വതന്ത്രരും ഓപ്പൺ സോഴ്‌സ് ചെയ്യുന്നവരുമാണ്. നിങ്ങൾ സ്വപ്നം കണ്ട സോഫ്റ്റ്‌വെയർ പങ്കാളികൾ ഞങ്ങളാണ്. + shops_signup_action: ഇപ്പോൾ ചേരുക + shops_signup_pricing: എന്റർപ്രൈസ് അക്കൗണ്ടുകൾ + shops_signup_stories: ഞങ്ങളുടെ ഹബ്ബുകളിൽ നിന്നുള്ള കഥകൾ. + shops_signup_help: സഹായിക്കാൻ ഞങ്ങൾ തയ്യാറാണ്. + shops_signup_help_text: നിങ്ങൾക്ക് ഒരു മികച്ച പ്രതിഫലം ആവശ്യമാണ്. നിങ്ങൾക്ക് പുതിയ ഉപഭോക്താക്കളേയും ലോജിസ്റ്റിക്സ് പങ്കാളികളെയും ആവശ്യമുണ്ട്. മൊത്തവ്യാപാരം, ചില്ലറ വിൽപ്പന, ആഹാരം എന്നിവയിലുടനീളം നിങ്ങളുടെ കഥ പറയേണ്ടതുണ്ട്. + shops_signup_detail: വിശദാംശം ഇതാ. + orders: "ഓർഡറുകൾ" + orders_fees: "ഫീസ്..." + orders_edit_title: "ഷോപ്പിംഗ് കാർട്ട്" + orders_edit_headline: "നിങ്ങളുടെ ഷോപ്പിംഗ് കാർട്ട്" + orders_edit_time: "ഓർഡർ തയ്യാറാണ്" + orders_edit_continue: "ഷോപ്പിംഗ് തുടരുക" + orders_edit_checkout: "ചെക്ക് ഔട്ട്" + orders_form_empty_cart: "കാർട്ട് ശൂന്യമാണ്" + orders_form_update_cart: "അപ്ഡേറ്റ് ചെയ്യുക" + orders_form_subtotal: "പ്രൊഡ്യൂസ് ആകെ" + orders_form_total: "ആകെ" + orders_oc_expired_headline: "ഈ ഓർഡർ സൈക്കിളിനുള്ള ഓർഡറുകൾ അവസാനിച്ചു" + orders_oc_expired_text: "ക്ഷമിക്കണം, ഈ ഓർഡർ സൈക്കിളിനുള്ള ഓർഡറുകൾ %{time} മുമ്പ് അടച്ചു! വൈകിയുള്ള ഓർഡറുകൾ സ്വീകരിക്കാനാകുമോ എന്നറിയാൻ നിങ്ങളുടെ ഹബ്ബുമായി നേരിട്ട് ബന്ധപ്പെടുക." + orders_oc_expired_text_others_html: "ക്ഷമിക്കണം, ഈ ഓർഡർ സൈക്കിളിനുള്ള ഓർഡറുകൾ %{time} മുമ്പ് അടച്ചു! വൈകിയുള്ള ഓർഡറുകൾ %{link} സ്വീകരിക്കാൻ കഴിയുമോ എന്നറിയാൻ നിങ്ങളുടെ ഹബ്ബുമായി നേരിട്ട് ബന്ധപ്പെടുക." + orders_oc_expired_text_link: "അല്ലെങ്കിൽ ഈ ഹബ്ബിൽ ലഭ്യമായ മറ്റ് ഓർഡർ സൈക്കിളുകൾ കാണുക" + orders_oc_expired_email: "ഇമെയിൽ:" + orders_oc_expired_phone: "ഫോൺ:" + orders_show_title: "ഓർഡർ സ്ഥിരീകരണം" + orders_show_time: "ഓർഡർ തയ്യാറാകുന്ന സമയം" + orders_show_order_number: "ഓർഡർ # %{number}" + orders_show_cancelled: "റദ്ദാക്കി" + orders_show_confirmed: "സ്ഥിരീകരിച്ചു" + orders_your_order_has_been_cancelled: "നിങ്ങളുടെ ഓർഡർ റദ്ദാക്കി" + orders_could_not_cancel: "ക്ഷമിക്കണം, ഓർഡർ റദ്ദാക്കാൻ കഴിഞ്ഞില്ല" + orders_cannot_remove_the_final_item: "ഒരു ഓർഡറിൽ നിന്ന് അന്തിമ ഇനം നീക്കംചെയ്യാൻ കഴിയില്ല, പകരം ഓർഡർ റദ്ദാക്കുക." + orders_bought_items_notice: + one: "ഈ ഓർഡർ സൈക്കിളിനായി ഒരു അധിക ഇനം ഇതിനകം സ്ഥിരീകരിച്ചു" + few: "ഈ ഓർഡർ സൈക്കിളിനായി ഇതിനകം %{count} അധിക ഇനങ്ങൾ സ്ഥിരീകരിച്ചു." + many: "ഈ ഓർഡർ സൈക്കിളിനായി ഇതിനകം %{count} അധിക ഇനങ്ങൾ സ്ഥിരീകരിച്ചു." + other: "ഈ ഓർഡർ സൈക്കിളിനായി ഇതിനകം %{count} അധിക ഇനങ്ങൾ സ്ഥിരീകരിച്ചു." + orders_bought_edit_button: "സ്ഥിരീകരിച്ച ഇനങ്ങൾ എഡിറ്റ് ചെയ്യുക" + orders_bought_already_confirmed: "* ഇതിനകം സ്ഥിരീകരിച്ചു" + orders_confirm_cancel: "ഈ ഓർഡർ റദ്ദാക്കണമെന്ന് തീർച്ചയാണോ?" + order_processed_successfully: "നിങ്ങളുടെ ഓർഡർ വിജയകരമായി പ്രോസസ്സ് ചെയ്തു" + products_cart_distributor_choice: "നിങ്ങളുടെ ഓർഡറിന്റെ വിതരണക്കാരൻ:" + products_cart_distributor_change: "നിങ്ങളുടെ കാർട്ടിൽ ഈ ഉൽപ്പന്നം ചേർക്കുകയാണെങ്കിൽ, ഈ ഓർഡറിനായുള്ള നിങ്ങളുടെ വിതരണക്കാരനെ %{name} എന്നതിലേക്ക് മാറ്റും." + products_cart_distributor_is: "ഈ ഓർഡറിന്റെ നിങ്ങളുടെ വിതരണക്കാരൻ %{name} ആണ് ." + products_distributor_error: "മറ്റൊരു വിതരണക്കാരനുമായി ഷോപ്പിംഗ് നടത്തുന്നതിന് മുമ്പ് ദയവായി %{link} -ൽ ഓർഡർ പൂർത്തിയാക്കുക." + products_oc: "നിങ്ങളുടെ ഓർഡറിനായി ഓർഡർ സൈക്കിൾ:" + products_oc_change: "നിങ്ങളുടെ കാർട്ടിൽ ഈ ഉൽപ്പന്നം ചേർക്കുകയാണെങ്കിൽ, ഈ ഓർഡറിനായുള്ള നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ %{name} ആയി മാറും." + products_oc_is: "ഈ ഓർഡറിനായുള്ള നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ %{name} ആണ്." + products_oc_error: "മറ്റൊരു ഓർഡർ സൈക്കിളിൽ ഷോപ്പിംഗ് ചെയ്യുന്നതിന് മുമ്പ് ദയവായി %{link} ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ പൂർത്തിയാക്കുക." + products_oc_current: "നിങ്ങളുടെ നിലവിലെ ഓർഡർ സൈക്കിൾ" + products_max_quantity: പരമാവധി അളവ് + products_distributor: വിതരണക്കാരൻ + products_distributor_info: നിങ്ങളുടെ ഓർഡറിനായി ഒരു വിതരണക്കാരനെ തിരഞ്ഞെടുക്കുമ്പോൾ, അവരുടെ വിലാസവും പിക്കപ്പ് സമയവും ഇവിടെ പ്രദർശിപ്പിക്കും. + password: പാസ്സ്‌വേർഡ് + remember_me: എന്നെ ഓർമ്മിക്കുക + are_you_sure: "നിങ്ങൾക്ക് ഉറപ്പാണോ?" + orders_open: "ഓർഡറുകൾ തുറന്നിരിക്കുന്നു" + closing: "അടയ്ക്കുന്നു" + going_back_to_home_page: "നിങ്ങളെ ഹോം പേജിലേക്ക് തിരികെ കൊണ്ടുപോകുന്നു" + creating: ഉണ്ടാക്കുന്നു + updating: അപ്ഡേറ്റ് ചെയ്യുന്നു + failed_to_create_enterprise: "നിങ്ങളുടെ എന്റർപ്രൈസ് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു." + failed_to_create_enterprise_unknown: "നിങ്ങളുടെ എന്റർപ്രൈസ് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു.\n എല്ലാ ഫീൽഡുകളും പൂർണ്ണമായും പൂരിപ്പിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക." + failed_to_update_enterprise_unknown: "നിങ്ങളുടെ എന്റർപ്രൈസ് അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു.\n എല്ലാ ഫീൽഡുകളും പൂർണ്ണമായും പൂരിപ്പിച്ചിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക." + enterprise_confirm_delete_message: " ഈ എന്റർപ്രൈസ് നൽകുന്ന %{product} ഇത് ഇല്ലാതാക്കും. നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" + order_not_saved_yet: "നിങ്ങളുടെ ഓർഡർ ഇതുവരെ സേവ് ചെയ്തിട്ടില്ല. പൂർത്തിയാക്കാൻ ഞങ്ങൾക്ക് കുറച്ച് നിമിഷങ്ങൾ തരൂ!" + filter_by: "ഇതനുസരിച്ച് ഫിൽട്ടർ ചെയ്യുക" + hide_filters: "ഫിൽട്ടറുകൾ മറയ്ക്കുക" + one_filter_applied: "1 ഫിൽട്ടർ പ്രയോഗിച്ചു" + x_filters_applied: "ഫിൽട്ടറുകൾ പ്രയോഗിച്ചു" + submitting_order: "നിങ്ങളുടെ ഓർഡർ സമർപ്പിക്കുന്നു: ദയവായി കാത്തിരിക്കുക" + confirm_hub_change: "നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് നിങ്ങൾ തിരഞ്ഞെടുത്ത ഹബ് മാറ്റുകയും നിങ്ങളുടെ ഷോപ്പിംഗ് കാർട്ടിലെ എല്ലാ ഇനങ്ങളും നീക്കം ചെയ്യുകയും ചെയ്യും." + confirm_oc_change: "നിങ്ങൾക്ക് ഉറപ്പാണോ? ഇത് നിങ്ങൾ തിരഞ്ഞെടുത്ത ഓർഡർ സൈക്കിളിനെ മാറ്റുകയും നിങ്ങളുടെ ഷോപ്പിംഗ് കാർട്ടിലെ എല്ലാ ഇനങ്ങളും നീക്കം ചെയ്യുകയും ചെയ്യും." + location_placeholder: "ഒരു ലൊക്കേഷനിൽ ടൈപ്പ് ചെയ്യുക..." + error_required: "ശൂന്യമായിരിക്കാൻ കഴിയില്ല" + error_number: "നമ്പർ ആയിരിക്കണം" + error_email: "ഇമെയിൽ വിലാസം ആയിരിക്കണം" + error_not_found_in_database: "%{name} ഡാറ്റാബേസിൽ കണ്ടെത്തിയില്ല" + error_not_primary_producer: "ഒരു പ്രൊഡ്യൂസർ എന്ന നിലയിൽ %{name} പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ല" + error_no_permission_for_enterprise: "\"%{name}\" ഈ എന്റർപ്രൈസിനായുള്ള ഉൽപ്പന്നങ്ങൾ നിയന്ത്രിക്കാൻ നിങ്ങൾക്ക് അനുമതിയില്ല" + item_handling_fees: "ഇനം കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഫീസ് (ഇനത്തിന്റെ ആകെത്തുകയിൽ ഉൾപ്പെടുന്നു)" + january: "ജനുവരി" + february: "ഫെബ്രുവരി" + march: "മാർച്ച്" + april: "ഏപ്രിൽ" + may: "മെയ്" + june: "ജൂൺ" + july: "ജൂലൈ" + august: "ഓഗസ്റ്റ്" + september: "സെപ്റ്റംബർ" + october: "ഒക്ടോബർ" + november: "നവംബർ" + december: "ഡിസംബർ" + email_not_found: "ഇമെയിൽ വിലാസം കണ്ടെത്തിയില്ല" + email_unconfirmed: "നിങ്ങളുടെ പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കേണ്ടതുണ്ട്." + email_required: "നിങ്ങൾ ഒരു ഇമെയിൽ വിലാസം നൽകണം" + logging_in: "ഒരു നിമിഷം കാത്തിരിക്കൂ, നിങ്ങൾ ലോഗിൻ ചെയ്യുന്നു" + signup_email: "നിങ്ങളുടെ ഇമെയിൽ" + choose_password: "ഒരു പാസ്‌വേഡ് തിരഞ്ഞെടുക്കുക" + confirm_password: "പാസ്‌വേഡ് സ്ഥിരീകരിക്കുക" + action_signup: "ഇപ്പോൾ സൈൻ അപ്പ് ചെയ്യുക" + forgot_password: "പാസ്‌വേഡ് മറന്നോ?" + password_reset_sent: "നിങ്ങളുടെ പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങളടങ്ങിയ ഒരു ഇമെയിൽ അയച്ചു!" + reset_password: "പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുക" + update_and_recalculate_fees: "അപ്ഡേറ്റ് ചെയ്യുകയും ഫീസ് വീണ്ടും കണക്കാക്കുകയും ചെയ്യുക" + registration: + steps: + introduction: + registration_greeting: "ഹേയ്!" + registration_intro: "നിങ്ങളുടെ പ്രൊഡ്യൂസർ അല്ലെങ്കിൽ ഹബ്ബിനായി നിങ്ങൾക്ക് ഇപ്പോൾ ഒരു പ്രൊഫൈൽ സൃഷ്ടിക്കാൻ കഴിയും" + registration_checklist: "എനിക്ക് എന്താണ് വേണ്ടത്?" + registration_time: "5-10 മിനിറ്റുകൾ" + registration_enterprise_address: "എന്റർപ്രൈസ് വിലാസം" + registration_contact_details: "പ്രാഥമിക കോൺടാക്റ്റ് വിശദാംശങ്ങൾ" + registration_logo: "നിങ്ങളുടെ ലോഗോ ചിത്രം" + registration_promo_image: "നിങ്ങളുടെ പ്രൊഫൈലിനായി ലാൻഡ്‌സ്‌കേപ്പ് ചിത്രം" + registration_about_us: "'ഞങ്ങളെക്കുറിച്ച്' വാചകം" + registration_outcome_headline: "എന്താണ് എനിക്ക് കിട്ടുക?" + registration_outcome1_html: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ നിങ്ങളെ കണ്ടെത്താനും ബന്ധപ്പെടാനും നിങ്ങളുടെ പ്രൊഫൈൽ ആളുകളെ സഹായിക്കുന്നു." + registration_outcome2: "നിങ്ങളുടെ സാമൂഹികവും ഓൺലൈൻ സാന്നിധ്യവുമായുള്ള കണക്ഷനുകൾ വർദ്ധിപ്പിക്കാൻ സഹായിക്കുന്നതിന് നിങ്ങളുടെ എന്റർപ്രൈസസിന്റെ കഥ പറയാൻ ഈ ഇടം ഉപയോഗിക്കുക." + registration_outcome3: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ വ്യാപാരം നടത്തുന്നതിനോ അല്ലെങ്കിൽ ഒരു ഓൺലൈൻ സ്റ്റോർ തുറക്കുന്നതിനോ ഉള്ള ആദ്യപടി കൂടിയാണിത്." + registration_action: "നമുക്ക് തുടങ്ങാം!" + details: + title: "വിശദാംശങ്ങൾ" + headline: "നമുക്ക് തുടങ്ങാം" + enterprise: "ആദ്യം ഞങ്ങൾക്ക് നിങ്ങളുടെ എന്റർപ്രൈസിനെക്കുറിച്ച് കുറച്ച് അറിയേണ്ടതുണ്ട്:" + producer: "ആദ്യം ഞങ്ങൾ നിങ്ങളുടെ ഫാമിനെക്കുറിച്ച് കുറച്ച് അറിയേണ്ടതുണ്ട്:" + enterprise_name_field: "എന്റർപ്രൈസ് പേര്:" + producer_name_field: "ഫാമിന്റെ പേര്:" + producer_name_field_placeholder: "ഉദാ: ചാർലിയുടെ ആകർഷണീയമായ ഫാം" + producer_name_field_error: "നിങ്ങളുടെ എന്റർപ്രൈസസിനായി ഒരു നല്ല പേര് തിരഞ്ഞെടുക്കുക" + address1_field: "അഡ്രസ് ലൈൻ 1:" + address1_field_placeholder: "ഉദാ 123 ക്രാൻബെറി ഡ്രൈവ്" + address1_field_error: "ദയവായി ഒരു വിലാസം നൽകുക" + address2_field: "അഡ്രസ് ലൈൻ 2:" + suburb_field: "നഗരപ്രാന്തം:" + suburb_field_placeholder: "ഉദാ നോർത്ത്കോട്ടെ" + suburb_field_error: "ദയവായി ഒരു പ്രാന്തപ്രദേശം നൽകുക" + postcode_field: "പിൻ കോഡ്:" + postcode_field_placeholder: "ഉദാ 3070" + postcode_field_error: "പിൻ കോഡ് ആവശ്യമാണ്" + state_field: "സംസ്ഥാനം:" + state_field_error: "സംസ്ഥാനം ആവശ്യമാണ്" + country_field: "രാജ്യം:" + country_field_error: "ദയവായി ഒരു രാജ്യം തിരഞ്ഞെടുക്കുക" + map_location: "മാപ്പ് ലൊക്കേഷൻ" + locate_address: "മാപ്പിൽ വിലാസം കണ്ടെത്തുക" + drag_pin: "കൃത്യമല്ലെങ്കിൽ പിൻ ശരിയായ സ്ഥലത്തേക്ക് വലിച്ചിടുക." + confirm_address: "മാപ്പിൽ എന്റർപ്രൈസിന്റെ സൂചിപ്പിച്ച സ്ഥാനം ശരിയാണെന്ന് ഞാൻ സ്ഥിരീകരിക്കുന്നു." + drag_map_marker: "ഗ്രാമീണ മേഖലകളിൽ പ്രവർത്തിക്കുന്ന നിരവധി പ്രൊഡ്യൂസേഴ്‌സ് കാരണം, ഭൂപടങ്ങളുടെ കൃത്യത എപ്പോഴും മെച്ചപ്പെടുത്തുന്നു. മുകളിലെ മാപ്പുമായി ഇടപഴകുന്നതിലൂടെ, പിൻ അമർത്തിപ്പിടിക്കുന്നതിന് ക്ലിക്ക് ചെയ്യുകയോ ടാപ്പുചെയ്യുകയോ ചെയ്‌ത്, നിങ്ങളുടെ അറിവിന്റെ അടിസ്ഥാനത്തിൽ കൂടുതൽ കൃത്യമായ ലൊക്കേഷനിലേക്ക് വലിച്ചിടുന്നതിലൂടെ, നിങ്ങൾ എവിടെയാണെന്ന് നന്നായി മനസ്സിലാക്കാൻ ഞങ്ങളെ സഹായിക്കുക." + contact: + title: "ബന്ധപ്പെടുക" + who_is_managing_enterprise: "%{enterprise} ആരാണ് കൈകാര്യം ചെയ്യുന്നത്?" + contact_field: "പ്രാഥമിക കോൺടാക്റ്റ്" + contact_field_placeholder: "ബന്ധപ്പെടാനുള്ള പേര്" + contact_field_required: "നിങ്ങൾ ഒരു പ്രാഥമിക കോൺടാക്റ്റ് നൽകേണ്ടതുണ്ട്." + phone_field: "ഫോൺ നമ്പർ" + whatsapp_phone_field: "വാട്ട്സ്ആപ്പ് ഫോൺ നമ്പർ" + whatsapp_phone_tooltip: "വാട്ട്‌സ്ആപ്പ് ലിങ്കായി തുറക്കുന്നതിന്, ഈ നമ്പർ നിങ്ങളുടെ പൊതു പ്രൊഫൈലിൽ പ്രദർശിപ്പിക്കും." + phone_field_placeholder: "ഉദാ. (03) 1234 5678" + whatsapp_phone_field_placeholder: "ഉദാ. +61 4 1234 5678" + type: + title: "ഇനം" + headline: "%{enterprise} ചേർക്കുന്നതിനുള്ള അവസാന ഘട്ടം !" + question: "നിങ്ങൾ ഒരു പ്രൊഡ്യൂസർ ആണോ?" + yes_producer: "അതെ, ഞാൻ ഒരു പ്രൊഡ്യൂസർ ആണ്" + no_producer: "അല്ല, ഞാൻ ഒരു പ്രൊഡ്യൂസർ അല്ല" + producer_field_error: "ഒന്ന് തിരഞ്ഞെടുക്കുക. നിങ്ങൾ പ്രൊഡ്യൂസർ ആണോ?" + yes_producer_help: "പ്രൊഡ്യൂസേഴ്‌സ് കഴിക്കാനും/അല്ലെങ്കിൽ കുടിക്കാനും സ്വാദിഷ്ടമായ കാര്യങ്ങൾ ഉണ്ടാക്കുന്നു. നിങ്ങൾ അത് കൃഷി ചെയ്താലും, വളർത്തിയാലും, പാകം ചെയ്താലും, ചുട്ടാലും, പുളിപ്പിച്ചാലും അല്ലെങ്കിൽ വാർത്തെടുത്താലും നിങ്ങൾ ഒരു പ്രൊഡ്യൂസർ ആണ് ." + no_producer_help: "നിങ്ങൾ ഒരു പ്രൊഡ്യൂസർ അല്ലെങ്കിൽ , നിങ്ങൾ ആഹാരം വിൽക്കുകയും വിതരണം ചെയ്യുകയും ചെയ്യുന്ന ഒരാളായിരിക്കാം. നിങ്ങൾ ഒരു ഹബ്, കൂപ്പ്, വാങ്ങൽ ഗ്രൂപ്പ്, ചില്ലറ വ്യാപാരി, മൊത്തവ്യാപാരി അല്ലെങ്കിൽ മറ്റെന്തെങ്കിലും ആയിരിക്കാം." + create_profile: "പ്രൊഫൈൽ സൃഷ്ടിക്കുക" + about: + title: "കുറിച്ച്" + headline: "കൊള്ളാം!" + message: "ഇനി നമുക്ക് അതിനെ കുറിച്ചുള്ള വിശദാംശങ്ങൾ നോക്കാം" + success: "വിജയം! ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് %{enterprise} ചേർത്തു" + registration_exit_message: "ഏത് ഘട്ടത്തിലും നിങ്ങൾ ഈ വിസാർഡിൽ നിന്ന് പുറത്തുകടക്കുകയാണെങ്കിൽ, അഡ്മിൻ ഇന്റർഫേസിലേക്ക് പോയി നിങ്ങളുടെ പ്രൊഫൈൽ സൃഷ്ടിക്കുന്നത് തുടരാം." + enterprise_description: "ഹൃസ്വ വിവരണം" + enterprise_description_placeholder: "നിങ്ങളുടെ എന്റർപ്രൈസ് വിവരിക്കുന്ന ഒരു ചെറിയ വാചകം" + enterprise_long_desc: "നീണ്ട വിവരണം" + enterprise_long_desc_placeholder: "നിങ്ങളുടെ എന്റർപ്രൈസസിന്റെ കഥ പറയാനുള്ള നിങ്ങളുടെ അവസരമാണിത് - നിങ്ങളെ വ്യത്യസ്തനും അതിശയകരവുമാക്കുന്നത് എന്താണ്? നിങ്ങളുടെ വിവരണം 600 അക്ഷരങ്ങളിൽ താഴെയോ 150 വാക്കുകളിലോ നിലനിർത്താൻ ഞങ്ങൾ നിർദ്ദേശിക്കുന്നു." + enterprise_long_desc_length: "%{num} പ്രതീകങ്ങൾ / 600 വരെ ശുപാർശ ചെയ്യുന്നു" + enterprise_abn: "എബിഎൻ" + enterprise_abn_placeholder: "ഉദാ. 99 123 456 789" + enterprise_acn: "എ.സി.എൻ" + enterprise_acn_placeholder: "ഉദാ. 123 456 789" + enterprise_tax_required: "നിങ്ങൾ ഒരെണ്ണം തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്." + images: + title: "ചിത്രങ്ങൾ" + headline: "നന്ദി!" + description: "ചില മനോഹരമായ ചിത്രങ്ങൾ അപ്‌ലോഡ് ചെയ്യാം, അങ്ങനെ നിങ്ങളുടെ പ്രൊഫൈൽ മികച്ചതായി കാണപ്പെടും! :)" + uploading: "അപ്‌ലോഡ് ചെയ്യുന്നു..." + continue: "തുടരുക" + back: "തിരികെ" + logo: + select_logo: "ഘട്ടം 1. ലോഗോ ഇമേജ് തിരഞ്ഞെടുക്കുക" + logo_tip: "നുറുങ്ങ്: ചതുര ചിത്രങ്ങൾ മികച്ച രീതിയിൽ പ്രവർത്തിക്കും, കുറഞ്ഞത് 300×300px" + logo_label: "ഒരു ലോഗോ ചിത്രം തിരഞ്ഞെടുക്കുക" + logo_drag: "നിങ്ങളുടെ ലോഗോ ഇവിടെ വലിച്ചിടുക" + review_logo: "ഘട്ടം 2. നിങ്ങളുടെ ലോഗോ അവലോകനം ചെയ്യുക" + review_logo_tip: "നുറുങ്ങ്: മികച്ച ഫലങ്ങൾക്കായി, നിങ്ങളുടെ ലോഗോ ലഭ്യമായ സ്ഥലത്ത് നിറഞ്ഞിരിക്കണം" + logo_placeholder: "ഒരിക്കൽ അപ്‌ലോഡ് ചെയ്‌താൽ അവലോകനത്തിനായി നിങ്ങളുടെ ലോഗോ ഇവിടെ ദൃശ്യമാകും" + promo: + select_promo_image: "ഘട്ടം 3. പ്രമോ ചിത്രം തിരഞ്ഞെടുക്കുക" + promo_image_tip: "നുറുങ്ങ്: ഒരു ബാനറായി കാണിച്ചിരിക്കുന്നു, ശുപാർശ ചെയ്യുന്ന വലുപ്പം 1200×260px ആണ്" + promo_image_label: "ഒരു പ്രമോ ചിത്രം തിരഞ്ഞെടുക്കുക" + promo_image_drag: "നിങ്ങളുടെ പ്രമോ ഇവിടെ വലിച്ചിടുക" + review_promo_image: "ഘട്ടം 4. നിങ്ങളുടെ പ്രൊമോ ബാനർ അവലോകനം ചെയ്യുക" + review_promo_image_tip: "നുറുങ്ങ്: മികച്ച ഫലങ്ങൾക്കായി, നിങ്ങളുടെ പ്രൊമോ ഇമേജ് ലഭ്യമായ സ്ഥലത്ത് നിറഞ്ഞിരിക്കണം" + promo_image_placeholder: "ഒരിക്കൽ അപ്‌ലോഡ് ചെയ്‌താൽ അവലോകനത്തിനായി നിങ്ങളുടെ ലോഗോ ഇവിടെ ദൃശ്യമാകും" + social: + title: "സാമൂഹികം" + enterprise_final_step: "അവസാന ഘട്ടം!" + enterprise_social_text: "ആളുകൾക്ക് എങ്ങനെ %{enterprise} ഓൺലൈനിൽ കണ്ടെത്താനാകും?" + website: "വെബ്സൈറ്റ്" + website_placeholder: "ഉദാ. openfoodnetwork.org.au" + facebook: "ഫേസ്ബുക്ക്" + facebook_placeholder: "ഉദാ. www.facebook.com/PageNameHere" + linkedin: "ലിങ്ക്ഡ്ഇൻ" + linkedin_placeholder: "ഉദാ. www.linkedin.com/YourNameHere" + twitter: "ട്വിറ്റർ" + twitter_placeholder: "ഉദാ. @twitter_handle" + instagram: "ഇൻസ്റ്റാഗ്രാം" + instagram_placeholder: "ഉദാ. @instagram_handle" + limit_reached: + headline: "അയ്യോ!" + message: "നിങ്ങളുടെ അനുവദനീയമായ പരിധി എത്തി!" + text: "നിങ്ങൾക്ക് സ്വന്തമാക്കാൻ അനുവാദമുള്ള എന്റർപ്രൈസസിന്റെ പരിധിയിൽ നിങ്ങൾ എത്തിയിരിക്കുന്നു" + action: "ഹോംപേജിലേക്ക് മടങ്ങുക" + finished: + headline: "പൂർത്തിയായി!" + thanks: "%{enterprise} ന്റെ വിശദാംശങ്ങൾ പൂരിപ്പിച്ചതിന് നന്ദി." + login: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് ലോഗിൻ ചെയ്‌ത് അഡ്മിനിലേക്ക് പോയി ഏത് ഘട്ടത്തിലും നിങ്ങളുടെ എന്റർപ്രൈസ് മാറ്റാനോ അപ്‌ഡേറ്റ് ചെയ്യാനോ കഴിയും." + action: "എന്റർപ്രൈസ് ഡാഷ്‌ബോർഡിലേക്ക് പോകുക" + back: "തിരികെ" + continue: "തുടരുക" + action_or: "അഥവാ" + enterprise_limit: എന്റർപ്രൈസ് പരിധി + shipping_method_destroy_error: "%{number} എന്ന ഓർഡറിൽ പരാമർശിച്ചിരിക്കുന്നതിനാൽ ആ ഷിപ്പിംഗ് രീതി ഇല്ലാതാക്കാൻ കഴിയില്ല." + fees: "ഫീസ്" + fee_name: "ഫീസ് പേര്" + fee_owner: "ഫീസ് ഉടമ" + item_cost: "ഇനത്തിന്റെ വില" + bulk: "ബൾക്ക്" + shop_variant_quantity_min: "കുറഞ്ഞത്" + shop_variant_quantity_max: "പരമാവധി" + contact: "ബന്ധപ്പെടുക" + follow: "ഫോളോ ചെയ്യുക" + shop_for_products_html: "%{enterprise}-ൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ ഇവിടെ വാങ്ങുക:" + change_shop: "ഷോപ്പ് ഇതിലേക്ക് മാറ്റുക:" + shop_at: "ഇപ്പോൾ ഇവിടെ ഷോപ്പുചെയ്യുക:" + admin_fee: "അഡ്മിൻ ഫീസ്" + sales_fee: "വിൽപ്പന ഫീസ്" + packing_fee: "പാക്കിംഗ് ഫീസ്" + transport_fee: "ട്രാൻസ്‌പോർട് ഫീസ്" + fundraising_fee: "ധനസമാഹരണ ഫീസ്" + price_graph: "വില ഗ്രാഫ്" + included_tax: "നികുതി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്" + tax: "നികുതി" + tax_amount_included: "%{amount} (ഉൾപ്പെടുന്നു)" + remove_tax: "നികുതി നീക്കം ചെയ്യുക" + balance: "മിച്ചം" + transaction: "ഇടപാട്" + transaction_date: "തീയതി" + payment_state: "പേയ്മെന്റ് നില" + shipping_state: "ഷിപ്പിംഗ് നില" + value: "മൂല്യം" + balance_due: "ബാക്കി" + credit: "ക്രെഡിറ്റ്" + Paid: "പണം നൽകി" + Ready: "തയ്യാറാണ്" + not_visible: ദൃശ്യമല്ല + you_have_no_orders_yet: "നിങ്ങൾക്ക് ഇതുവരെ ഓർഡറുകളൊന്നുമില്ല" + show_only_complete_orders: "പൂർണ്ണമായ ഓർഡറുകൾ മാത്രം കാണിക്കുക" + successfully_created: '%{resource} വിജയകരമായി സൃഷ്‌ടിച്ചു!' + successfully_removed: '%{resource} വിജയകരമായി നീക്കം ചെയ്‌തു!' + successfully_updated: '%{resource} വിജയകരമായി അപ്‌ഡേറ്റ് ചെയ്‌തു!' + running_balance: "റണ്ണിംഗ് ബാലൻസ്" + outstanding_balance: "കുടിശ്ശിക" + admin_enterprise_relationships: "എന്റർപ്രൈസ് അനുമതികൾ" + admin_enterprise_relationships_everything: "എല്ലാം" + admin_enterprise_relationships_permits: "അനുമതികൾ" + admin_enterprise_relationships_seach_placeholder: "തിരയുക" + admin_enterprise_relationships_button_create: "സൃഷ്ടിക്കാൻ" + admin_enterprise_relationships_to: "വരെ" + admin_enterprise_groups: "എന്റർപ്രൈസ് ഗ്രൂപ്പുകൾ" + admin_enterprise_groups_name: "പേര്" + admin_enterprise_groups_owner: "ഉടമ" + admin_enterprise_groups_on_front_page: "ഒന്നാം പേജിൽ?" + admin_enterprise_groups_enterprise: "സംരംഭങ്ങൾ" + admin_enterprise_groups_data_powertip: "ഈ ഗ്രൂപ്പിന്റെ ഉത്തരവാദിത്തമുള്ള പ്രാഥമിക ഉപയോക്താവ്." + admin_enterprise_groups_data_powertip_logo: "ഇതാണ് ഗ്രൂപ്പിന്റെ ലോഗോ" + admin_enterprise_groups_data_powertip_promo_image: "ഗ്രൂപ്പ് പ്രൊഫൈലിന്റെ മുകളിൽ ഈ ചിത്രം പ്രദർശിപ്പിച്ചിരിക്കുന്നു" + admin_enterprise_groups_contact_phone_placeholder: "ഉദാ. 98 7654 3210" + admin_enterprise_groups_contact_address1_placeholder: "ഉദാ. 123 ഹൈ സ്ട്രീറ്റ്" + admin_enterprise_groups_contact_city: "നഗരപ്രാന്തം" + admin_enterprise_groups_contact_city_placeholder: "ഉദാ. നോർത്ത്കോട്ടെ" + admin_enterprise_groups_contact_zipcode: "പിൻ കോഡ്" + admin_enterprise_groups_contact_zipcode_placeholder: "ഉദാ. 3070" + admin_enterprise_groups_contact_state_id: "സംസ്ഥാനം" + admin_enterprise_groups_contact_country_id: "രാജ്യം" + admin_enterprise_groups_web_twitter: "ഉദാ. @the_prof" + admin_enterprise_groups_web_website_placeholder: "ഉദാ. www.truffles.com" + admin_order_cycles: "അഡ്മിൻ ഓർഡർ സൈക്കിളുകൾ" + open: "തുറന്നിരിക്കുന്നു" + close: "അടയ്ക്കുക" + create: "സൃഷ്ടിക്കാൻ" + search: "തിരയുക" + supplier: "വിതരണക്കാരൻ" + product_name: "ഉത്പന്നത്തിന്റെ പേര്" + product_description: "ഉൽപ്പന്ന വിവരണം" + permalink: "പെർമലിങ്ക്" + shipping_categories: "ഷിപ്പിംഗ് വിഭാഗങ്ങൾ" + units: "യൂണിറ്റ് വലിപ്പം" + coordinator: "കോർഡിനേറ്റർ" + distributor: "വിതരണക്കാരൻ" + enterprise_fees: "എന്റർപ്രൈസ് ഫീസ്" + process_my_order: "എന്റെ ഓർഡർ പ്രോസസ്സ് ചെയ്യുക" + delivery_instructions: ഡെലിവറി നിർദ്ദേശങ്ങൾ + delivery_method: വിതരണ സംവിധാനം + fee_type: "ഫീസ് തരം" + tax_category: "നികുതി വിഭാഗം" + display: "പ്രദർശിപ്പിക്കുക" + tags: "ടാഗുകൾ" + calculator: "കാൽക്കുലേറ്റർ" + calculator_values: "കാൽക്കുലേറ്റർ മൂല്യങ്ങൾ" + calculator_settings_warning: "നിങ്ങൾ കാൽക്കുലേറ്റർ തരം മാറ്റുകയാണെങ്കിൽ, കാൽക്കുലേറ്റർ ക്രമീകരണങ്ങൾ എഡിറ്റുചെയ്യുന്നതിന് മുമ്പ് നിങ്ങൾ ആദ്യം സേവ് ചെയ്യണം" + calculator_preferred_unit_error: "കിലോ അല്ലെങ്കിൽ പൗണ്ട് ആയിരിക്കണം" + calculator_preferred_value_error: "അസാധുവായ ഇൻപുട്ട്. ദയവായി നമ്പറുകൾ മാത്രം ഉപയോഗിക്കുക. ഉദാഹരണത്തിന്: 10, 5.5, -20" + flat_percent_per_item: "ശതമാനം (ഓരോ ഇനത്തിനും)" + flat_rate_per_item: "നിരക്ക് (ഓരോ ഇനത്തിനും)" + flat_rate_per_order: "നിരക്ക് (ഓരോ ഓർഡറിനും)" + flexible_rate: "ഫ്ലെക്സിബിൾ റേറ്റ്" + price_sack: "വില " + new_order_cycles: "പുതിയ ഓർഡർ സൈക്കിളുകൾ" + new_order_cycle: "പുതിയ ഓർഡർ സൈക്കിൾ" + new_order_cycle_tooltip: "ഒരു നിശ്ചിത സമയത്തേക്ക് കട തുറക്കുക" + select_a_coordinator_for_your_order_cycle: "നിങ്ങളുടെ ഓർഡർ സൈക്കിളിനായി ഒരു കോർഡിനേറ്ററെ തിരഞ്ഞെടുക്കുക" + notify_producers: 'പ്രൊഡ്യൂസേഴ്സിനെ അറിയിക്കുക' + edit_order_cycle: "ഓർഡർ സൈക്കിൾ എഡിറ്റ് ചെയ്യുക" + roles: "കർത്തവ്യങ്ങൾ" + update: "അപ്ഡേറ്റ് ചെയ്യുക" + delete: ഇല്ലാതാക്കുക + add_producer_property: "പ്രൊഡ്യൂസർ പ്രോപ്പർട്ടി ചേർക്കുക" + in_progress: "പുരോഗതിയിൽ" + started_at: "ആരംഭിച്ചത്" + queued: "ക്യൂവിൽ" + scheduled_for: "ഇതിനായി ഷെഡ്യൂൾ ചെയ്തിട്ടുണ്ട്" + customers: "ഉപഭോക്താക്കൾ" + please_select_hub: "ദയവായി ഒരു ഹബ് തിരഞ്ഞെടുക്കുക" + loading_customers: "ഉപഭോക്താക്കളെ ലോഡുചെയ്യുന്നു" + no_customers_found: "ഉപഭോക്താക്കളെ കണ്ടെത്തിയില്ല" + go: "പോകൂ" + hub: "ഹബ്" + product: "ഉൽപ്പന്നം" + price: "വില" + review: "അവലോകനം" + save_changes: "മാറ്റങ്ങൾ സേവ് ചെയ്യുക" + order_saved: "ഓർഡർ സേവ് ചെയ്തു" + no_products: ഉൽപ്പന്നങ്ങളൊന്നുമില്ല + spree_admin_overview_enterprises_header: "എന്റെ സംരംഭങ്ങൾ" + spree_admin_overview_enterprises_footer: "എന്റെ എന്റർപ്രൈസുകൾ നിയന്ത്രിക്കുക" + spree_admin_enterprises_hubs_name: "പേര്" + spree_admin_enterprises_create_new: "പുതിയത് സൃഷ്‌ടിക്കുക" + spree_admin_enterprises_shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + spree_admin_enterprises_fees: "എന്റർപ്രൈസ് ഫീസ്" + spree_admin_enterprises_none_create_a_new_enterprise: "ഒരു പുതിയ എന്റർപ്രൈസ് സൃഷ്ടിക്കുക" + spree_admin_enterprises_none_text: "നിങ്ങൾക്ക് ഇതുവരെ സംരംഭങ്ങളൊന്നുമില്ല" + spree_admin_enterprises_tabs_hubs: "ഹബ്ബുകൾ" + spree_admin_enterprises_producers_manage_products: "ഉൽപ്പന്നങ്ങൾ കൈകാര്യം ചെയ്യുക" + spree_admin_enterprises_create_new_product: "ഒരു പുതിയ ഉൽപ്പന്നം സൃഷ്‌ടിക്കുക" + spree_admin_single_enterprise_alert_mail_confirmation: "ഇതിനായുള്ള ഇമെയിൽ വിലാസം ദയവായി സ്ഥിരീകരിക്കുക" + spree_admin_single_enterprise_alert_mail_sent: "ഞങ്ങൾ ഇതിലേക്ക് ഒരു ഇമെയിൽ അയച്ചു-" + spree_admin_overview_action_required: "നടപടി ആവശ്യമാണ്" + spree_admin_overview_check_your_inbox: "കൂടുതൽ നിർദ്ദേശങ്ങൾക്കായി നിങ്ങളുടെ ഇൻബോക്സ് പരിശോധിക്കുക. നന്ദി!" + spree_admin_unit_value: യൂണിറ്റ് മൂല്യം + spree_admin_unit_description: യൂണിറ്റ് വിവരണം + spree_admin_variant_unit: വേരിയന്റ് യൂണിറ്റ് + spree_admin_variant_unit_scale: വേരിയന്റ് യൂണിറ്റ് സ്കെയിൽ + spree_admin_supplier: വിതരണക്കാരൻ + spree_admin_product_category: ഉൽപ്പന്ന വിഭാഗം + spree_admin_variant_unit_name: വേരിയന്റ് യൂണിറ്റിന്റെ പേര് + unit_name: "യൂണിറ്റിന്റെ പേര്" + change_package: "പാക്കേജ് മാറ്റുക" + spree_admin_single_enterprise_hint: "സൂചന: നിങ്ങളെ കണ്ടെത്താൻ ആളുകളെ അനുവദിക്കുന്നതിന്, ചുവടെ നിങ്ങളുടെ ദൃശ്യപരത ഓണാക്കുക" + spree_admin_eg_pickup_from_school: "ഉദാ. 'പ്രൈമറി സ്കൂളിൽ നിന്ന് പിക്കപ്പ് ചെയ്യുക'" + spree_admin_eg_collect_your_order: "ഉദാ. 'ദയവായി 123 ഇമാജിനറി സ്ട്രീറ്റ്, നോർത്ത്കോട്ട്, 3070-ൽ നിന്ന് നിങ്ങളുടെ ഓർഡർ ശേഖരിക്കുക'" + spree_classification_primary_taxon_error: "ടാക്സോൺ %{taxon} എന്നത് %{product} -ന്റെ പ്രാഥമിക ടാക്സോണാണ്, അത് ഇല്ലാതാക്കാൻ കഴിയില്ല" + spree_order_availability_error: "ഡിസ്ട്രിബ്യൂട്ടർക്കോ അല്ലെങ്കിൽ ഓർഡർ സൈക്കിളിനോ നിങ്ങളുടെ കാർട്ടിലെ ഉൽപ്പന്നങ്ങൾ വിതരണം ചെയ്യാൻ കഴിയില്ല" + spree_order_populator_error: "നിങ്ങളുടെ കാർട്ടിലെ എല്ലാ ഉൽപ്പന്നങ്ങളും വിതരണം ചെയ്യാൻ ആ വിതരണക്കാരനോ ഓർഡർ സൈക്കിളിനോ കഴിയില്ല. ദയവായി മറ്റൊന്ന് തിരഞ്ഞെടുക്കുക." + spree_order_cycle_error: "ഈ ഓർഡറിനായി ഒരു ഓർഡർ സൈക്കിൾ തിരഞ്ഞെടുക്കുക." + spree_order_populator_availability_error: "തിരഞ്ഞെടുത്ത വിതരണക്കാരിൽ നിന്നോ ഓർഡർ സൈക്കിളിൽ നിന്നോ ആ ഉൽപ്പന്നം ലഭ്യമല്ല." + spree_distributors_error: "കുറഞ്ഞത് ഒരു ഹബ്ബെങ്കിലും തിരഞ്ഞെടുക്കണം" + spree_user_enterprise_limit_error: "^ %{email} ന് കൂടുതൽ സംരംഭങ്ങൾ സ്വന്തമാക്കാൻ അനുവാദമില്ല (പരിധി %{enterprise_limit})." + spree_variant_product_error: കുറഞ്ഞത് ഒരു വേരിയന്റെങ്കിലും ഉണ്ടായിരിക്കണം + your_profil_live: "നിങ്ങളുടെ പ്രൊഫൈൽ തത്സമയം" + see: "കാണുക" + live: "തത്സമയം" + manage: "കൈകാര്യം ചെയ്യുക" + resend: "വീണ്ടും അയയ്ക്കുക" + add_and_manage_products: "ഉൽപ്പന്നങ്ങൾ ചേർക്കുക & കൈകാര്യം ചെയ്യുക" + add_and_manage_order_cycles: "ഓർഡർ സൈക്കിളുകൾ ചേർക്കുക & കൈകാര്യം ചെയ്യുക" + manage_order_cycles: "ഓർഡർ സൈക്കിളുകൾ കൈകാര്യം ചെയ്യുക" + manage_products: "ഉൽപ്പന്നങ്ങൾ കൈകാര്യം ചെയ്യുക" + edit_profile_details: "പ്രൊഫൈൽ വിശദാംശങ്ങൾ എഡിറ്റ് ചെയ്യുക" + edit_profile_details_etc: "നിങ്ങളുടെ പ്രൊഫൈൽ വിവരണം, ചിത്രങ്ങൾ മുതലായവ മാറ്റുക." + order_cycle: "ഓർഡർ സൈക്കിൾ" + enterprise_relationships: "എന്റർപ്രൈസ് അനുമതികൾ" + first_name_begins_with: "ആദ്യ നാമം ആരംഭിക്കുന്നത്" + last_name_begins_with: "അവസാന നാമം ആരംഭിക്കുന്നത്" + shipping_method: "ഷിപ്പിംഗ് രീതി" + new_order: "പുതിയ ഓർഡർ" + enterprise_tos_link: "എന്റർപ്രൈസ് സേവന നിബന്ധനകൾ ലിങ്ക്" + enterprise_tos_message: "ഞങ്ങളുടെ ലക്ഷ്യങ്ങളും മൂല്യങ്ങളും പങ്കിടുന്ന ആളുകളുമായി പ്രവർത്തിക്കാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു. അതിനാൽ, പുതിയ സംരംഭങ്ങൾ ഞങ്ങളോട് യോജിക്കാൻ ആവശ്യപ്പെടുന്നത്-" + enterprise_tos_agree: "മുകളിലുള്ള സേവന നിബന്ധനകൾ ഞാൻ അംഗീകരിക്കുന്നു" + tax_settings: "നികുതി ക്രമീകരണങ്ങൾ" + products_require_tax_category: "ഉൽപ്പന്നങ്ങൾക്ക് നികുതി വിഭാഗം ആവശ്യമാണ്" + admin_shared_address_1: "വിലാസം" + admin_shared_address_2: "വിലാസം (തുടർച്ച)" + admin_share_city: "നഗരം" + admin_share_zipcode: "പിൻ കോഡ്" + admin_share_country: "രാജ്യം" + admin_share_state: "സംസ്ഥാനം" + hub_sidebar_hubs: "ഹബ്ബുകൾ" + hub_sidebar_none_available: "ഒന്നും ലഭ്യമല്ല" + hub_sidebar_manage: "കൈകാര്യം ചെയ്യുക" + hub_sidebar_at_least: "കുറഞ്ഞത് ഒരു ഹബ്ബെങ്കിലും തിരഞ്ഞെടുക്കണം" + hub_sidebar_blue: "നീല" + hub_sidebar_red: "ചുവപ്പ്" + order_cycles_closed_for_hub: "നിങ്ങൾ തിരഞ്ഞെടുത്ത ഹബ് ഓർഡറുകൾക്കായി താൽക്കാലികമായി അടച്ചിരിക്കുന്നു. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക." + report_customers_distributor: "വിതരണക്കാരൻ" + report_customers_hub: "ഹബ്" + report_customers_supplier: "വിതരണക്കാരൻ" + report_customers_cycle: "ഓർഡർ സൈക്കിൾ" + report_customers_type: "റിപ്പോർട്ട് ഇനം" + report_customers_csv: "സി എസ് വി ഫയൽ ഡൗൺലോഡ് ചെയ്യുക" + report_customers: ഉപഭോക്താവ് + report_producers: "പ്രൊഡ്യൂസേഴ്‌സ്" + report_type: "റിപ്പോർട്ട് ഇനം" + report_hubs: "ഹബ്ബുകൾ" + report_payment: "പേയ്മെന്റ് രീതികൾ" + report_distributor: "വിതരണക്കാരൻ" + report_payment_by: 'തരം തിരിച്ചുള്ള പേയ്‌മെന്റുകൾ' + report_itemised_payment: 'ഇനം തിരിച്ചുള്ള മൊത്തം പേയ്‌മെന്റുകൾ' + report_payment_totals: 'ആകെ പേയ്മെന്റ്' + report_all: 'എല്ലാം' + report_order_cycle: "ഓർഡർ സൈക്കിൾ" + report_hide_columns: മറയ്‌ക്കാനുള്ള നിരകൾ + report_columns: നിരകൾ + report_enterprises: "സംരംഭങ്ങൾ" + report_enterprise_fee: "ഫീസ് പേരുകൾ" + report_users: "ഉപയോക്താക്കൾ" + report_tax_rates: നികുതി നിരക്കുകൾ + report_tax_types: നികുതി തരങ്ങൾ + report_filters: റിപ്പോർട്ട് ഫിൽട്ടറുകൾ + report_print: റിപ്പോർട്ട് പ്രിന്റ് ചെയ്യുക + report_render_options: റെൻഡറിംഗ് ഓപ്ഷനുകൾ + report_header_ofn_uid: ഒഎഫ്എൻ യുഐഡി + report_header_order_cycle: ഓർഡർ സൈക്കിൾ + report_header_user: ഉപയോക്താവ് + report_header_email: ഇമെയിൽ + report_header_status: പദവി + report_header_comments: അഭിപ്രായങ്ങൾ + report_header_first_name: പേരിന്റെ ആദ്യഭാഗം + report_header_last_name: പേരിന്റെ അവസാന ഭാഗം + report_header_suburb: നഗരപ്രാന്തം + report_header_phone: ഫോൺ + report_header_address: വിലാസം + report_header_billing_address: ബില്ലിംഗ് വിലാസം + report_header_relationship: ബന്ധം + report_header_hub: ഹബ് + report_header_code: കോഡ് + report_header_shipping: ഷിപ്പിംഗ് + report_header_shipping_method: ഷിപ്പിംഗ് രീതി + report_header_date: തീയതി + report_header_tags: ടാഗുകൾ + report_header_items: ഇനങ്ങൾ + report_header_tax: "നികുതി" + report_header_tax_category: "നികുതി വിഭാഗം" + report_header_enterprise: എന്റർപ്രൈസ് + report_header_enterprise_fee_name: പേര് + report_header_enterprise_fee_type: ഇനം + report_header_enterprise_fee_owner: ഉടമ + report_header_customer: ഉപഭോക്താവ് + report_header_customer_first_name: പേരിന്റെ ആദ്യഭാഗം + report_header_customer_last_name: പേരിന്റെ അവസാന ഭാഗം + report_header_product: ഉൽപ്പന്നം + report_header_product_properties: ഉൽപ്പന്ന സവിശേഷതകൾ + report_header_quantity: അളവ് + report_header_variant: വേരിയന്റ് + report_header_variant_unit: വേരിയന്റ് യൂണിറ്റ് + report_header_supplier: വിതരണക്കാരൻ + report_header_producer: നിർമ്മാതാവ് + report_header_unit: യൂണിറ്റ് + report_header_payment_method: പണമടയ്ക്കൽ രീതി + report_header_sells: വിൽക്കുന്നു + report_header_price: വില + report_header_unit_size: യൂണിറ്റ് വലിപ്പം + report_header_distributor: വിതരണക്കാരൻ + report_header_weight: ഭാരം + report_header_height: ഉയരം + report_header_width: വീതി + report_header_depth: ആഴം + report_header_amount_paid: അടച്ച തുക + report_header_payment_state: പേയ്മെന്റ് സ്റ്റേറ്റ് + report_header_sku: എസ്.കെ.യു + report_header_amount: തുക + report_header_balance: മിച്ചം + report_header_temp_controlled: ടെമ്പ് കൺട്രോൾഡ്? + report_header_is_producer: പ്രൊഡ്യൂസർ? + users: "ഉപയോക്താക്കൾ" + about: "കുറിച്ച്" + images: "ചിത്രങ്ങൾ" + primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" + social: "സാമൂഹികം" + shipping: "ഷിപ്പിംഗ്" + shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + payment_methods: "പേയ്മെന്റ് രീതികൾ" + tag_rules: "നിയമങ്ങൾ കൂട്ടിയോജിപ്പിക്കുക" + enterprise_owner_error: "^ %{email} ന് കൂടുതൽ സംരംഭങ്ങൾ സ്വന്തമാക്കാൻ അനുവാദമില്ല (പരിധി %{enterprise_limit})." + product_importer_file_error: " തകരാറ്: ഒരു ഫയലും അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല" + product_importer_spreadsheet_error: "ഫയൽ പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല: അസാധുവായ ഫയൽ തരം" + product_importer_products_save_error: ഉൽപ്പന്നങ്ങളൊന്നും വിജയകരമായി സേവ് ചെയ്തില്ല + product_import_file_not_found_notice: 'ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല' + product_import_no_data_in_spreadsheet_notice: 'സ്‌പ്രെഡ്‌ഷീറ്റിൽ ഡാറ്റയൊന്നും കണ്ടെത്തിയില്ല' + amount: "തുക" + invoice_file: "ഫയൽ" + state_names: + ready: തയ്യാറാണ് + js: + changes_saved: 'മാറ്റങ്ങൾ സേവ് ചെയ്തു.' + unsaved_changes: നിങ്ങൾക്ക് സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട് + error: പിശക് + profile: പ്രൊഫൈൽ + hub: ഹബ് + shop: കട + admin: + modals: + close: "അടയ്ക്കുക" + continue: "തുടരുക" + cancel: "റദ്ദാക്കുക" + tag_rule_help: + title: നിയമങ്ങൾ കൂട്ടിയോജിപ്പിക്കുക + panels: + save: സേവ് + saved: സേവ് ചെയ്തു + saving: സേവ് ചെയ്യുന്നു + enterprise_package: + hub_shop: ഹബ് ഷോപ്പ് + profile_only: പ്രൊഫൈൽ മാത്രം + producer_shop: പ്രൊഡ്യൂസർ ഷോപ്പ് + producer_hub: പ്രൊഡ്യൂസർ ഹബ് + get_listing: ഒരു ലിസ്റ്റിംഗ് നേടുക + always_free: എപ്പോഴും സൗജന്യം + sell_produce_others: മറ്റുള്ളവരിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + sell_own_produce: നിങ്ങളുടെ സ്വന്തം ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + sell_both: തന്നിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഉള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക + enterprise_producer: + producer: നിർമ്മാതാവ് + enterprise_status: + description: വിവരണം + orders: + order_state: + cart: "കാർട്ട്" + resend_user_email_confirmation: + resend: "വീണ്ടും അയയ്ക്കുക" + order_cycles: + schedules: + available: "ലഭ്യമാണ്" + customers: + index: + valid_email_error: "സാധുതയുള്ള ഒരു ഇമെയിൽ വിലാസം നൽകുക" + shopfront: + variant: + add_to_cart: "ചേർക്കുക" + bulk_buy_modal: + max_quantity: "പരമാവധി അളവ്" + variants: + on_demand: + 'yes': "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" + variant_overrides: + on_demand: + 'yes': "അതെ" + 'no': "ഇല്ല" + services: + save: സേവ് + order_cycles: + update_success: 'നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ അപ്ഡേറ്റ് ചെയ്തു.' + enterprises: + producer: "നിർമ്മാതാവ്" + subscriptions: + closed: അടച്ചു + registration: + welcome_to_ofn: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് സ്വാഗതം!" + order_management: + reports: + enterprise_fee_summaries: + report: + none: "ഒന്നുമില്ല" + enterprise_fee_summary: + fee_calculated_on_transfer_through_all: "എല്ലാം" + fee_placements: + supplier: "ഇൻകമിംഗ്" + distributor: "ഔട്ട്ഗോയിംഗ്" + coordinator: "കോർഡിനേറ്റർ" + formats: + csv: + header: + fee_type: "ഫീസ് തരം" + fee_name: "ഫീസ് പേര്" + customer_name: "ഉപഭോക്താവ്" + tax_category_name: "നികുതി വിഭാഗം" + html: + header: + fee_type: "ഫീസ് തരം" + fee_name: "ഫീസ് പേര്" + customer_name: "ഉപഭോക്താവ്" + tax_category_name: "നികുതി വിഭാഗം" + report: + none: "ഒന്നുമില്ല" + credit_owed: "കടപ്പെട്ടിരിക്കുന്നു" + payment: "പേയ്മെന്റ്" + payment_method: "പണമടയ്ക്കൽ രീതി" + category: "വിഭാഗം" + import_date: "ഇറക്കുമതി തീയതി" + delivery: "ഡെലിവറി" + administration: "ഭരണകൂടം" + account: "അക്കൗണ്ട്" + logout: "ലോഗൗട്ട്" + previous: "മുന്നിലത്തേത്" + spree: + all: "എല്ലാം" + card_number: "കാർഡ് നമ്പർ" + category: "വിഭാഗം" + credit: "ക്രെഡിറ്റ്" + more: "കൂടുതൽ" + no_pending_payments: "തീർപ്പാക്കാത്ത പേയ്‌മെന്റുകളൊന്നുമില്ല" + none: "ഒന്നുമില്ല" + not_found: "കണ്ടെത്തിയില്ല" + updating: "അപ്ഡേറ്റ് ചെയ്യുന്നു" + resend: "വീണ്ടും അയയ്ക്കുക" + quantity: "അളവ്" + on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" + on_hand: "കയ്യിൽ" + price: "വില" + total: "ആകെ" + edit: "എഡിറ്റ് ചെയ്യുക" + delete: "ഇല്ലാതാക്കുക" + account: "അക്കൗണ്ട്" + billing_address: "ബില്ലിംഗ് വിലാസം" + shipping_address: "ഷിപ്പിംഗ് വിലാസം" + first_name: "ഒന്നാം പേര് " + last_name: "പേരിന്റെ അവസാന ഭാഗം" + city: "നഗരം" + country: "രാജ്യം" + state: "സംസ്ഥാനം" + phone: "ഫോൺ" + update: "അപ്ഡേറ്റ് ചെയ്യുക" + continue: "തുടരുക" + credit_card: "ക്രെഡിറ്റ് കാർഡ്" + login: "ലോഗിൻ" + password: "പാസ്സ്‌വേർഡ്" + general_settings: "പൊതുവായ ക്രമീകരണങ്ങൾ" + tax_categories: "നികുതി വിഭാഗങ്ങൾ" + tax rate: "നികുതി നിരക്കുകൾ" + tax_category: "നികുതി വിഭാഗം" + tax_rates: "നികുതി നിരക്കുകൾ" + rate: "നിരക്ക്" + tax_settings: "നികുതി ക്രമീകരണങ്ങൾ" + payment_methods: "പേയ്മെന്റ് രീതികൾ" + shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + shipping_method: "ഷിപ്പിംഗ് രീതി" + payment: "പേയ്മെന്റ്" + status: "പദവി" + shipping_categories: "ഷിപ്പിംഗ് വിഭാഗങ്ങൾ" + name: "പേര്" + description: "വിവരണം" + type: "ഇനം" + calculator: "കാൽക്കുലേറ്റർ" + display: "പ്രദർശിപ്പിക്കുക" + active: "സജീവമാണ്" + nore: "കൂടുതൽ" + create: "സൃഷ്ടിക്കാൻ" + amount: "തുക" + email: ഇമെയിൽ + date: "തീയതി" + inventory: ഇൻവെന്ററി + zipcode: പിൻ കോഡ് + successfully_created: '%{resource} വിജയകരമായി സൃഷ്‌ടിച്ചു!' + successfully_updated: '%{resource} വിജയകരമായി അപ്‌ഡേറ്റ് ചെയ്‌തു!' + payment_method: "പണമടയ്ക്കൽ രീതി" + sku: "എസ്.കെ.യു" + actions: + update: "അപ്ഡേറ്റ് ചെയ്യുക" + cancel: "റദ്ദാക്കുക" + shared: + payments_list: + amount: "തുക" + payment_method: "പണമടയ്ക്കൽ രീതി" + payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" + errors: + messages: + blank: "ശൂന്യമായിരിക്കാൻ കഴിയില്ല" + admin: + subscriptions: + number: "നമ്പർ" + tab: + dashboard: "ഡാഷ്ബോർഡ്" + orders: "ഓർഡറുകൾ" + bulk_order_management: "ബൾക്ക് ഓർഡർ മാനേജ്മെന്റ്" + subscriptions: "സബ്സ്ക്രിപ്ഷനുകൾ" + products: "ഉൽപ്പന്നങ്ങൾ" + properties: "പ്രോപ്പർട്ടികൾ" + variant_overrides: "ഇൻവെന്ററി" + reports: "റിപ്പോർട്ടുകൾ" + users: "ഉപയോക്താക്കൾ" + roles: "കർത്തവ്യങ്ങൾ" + order_cycles: "ഓർഡർ സൈക്കിളുകൾ" + enterprises: "സംരംഭങ്ങൾ" + customers: "ഉപഭോക്താക്കൾ" + groups: "ഗ്രൂപ്പുകൾ" + oidc_settings: "ഓഐഡിസി ക്രമീകരണങ്ങൾ" + properties: + index: + properties: "പ്രോപ്പർട്ടികൾ" + name: "പേര്" + form: + name: "പേര്" + return_authorizations: + index: + status: "പദവി" + amount: "തുക" + continue: "തുടരുക" + new: + continue: "തുടരുക" + edit: + are_you_sure: "നിങ്ങൾക്ക് ഉറപ്പാണോ?" + form: + product: "ഉൽപ്പന്നം" + amount: "തുക" + orders: + index: + new_order: "പുതിയ ഓർഡർ" + ship: "കപ്പൽ" + edit: "എഡിറ്റ് ചെയ്യുക" + previous: "മുന്നിലത്തേത്" + next: "അടുത്തത്" + resend_confirmation: "സ്ഥിരീകരണം അയയ്ക്കുക" + sortable_header: + payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" + shipment_state: "ഷിപ്പിംഗ് സ്റ്റേറ്റ്" + completed_at: "പൂർത്തിയാക്കിയത്" + number: "നമ്പർ" + state: "സംസ്ഥാനം" + email: "ഉപഭോക്താവിന്റെ ഇ-മെയിൽ" + invoice: + tax_invoice: "നികുതി ഇൻവോയ്സ്" + code: "കോഡ്" + shipping: "ഷിപ്പിംഗ്" + payments_list: + payment_method: "പണമടയ്ക്കൽ രീതി" + amount: "തുക" + note: + note_label: "കുറിപ്പ്:" + no_note_present: "കുറിപ്പൊന്നും നൽകിയിട്ടില്ല." + form: + distribution_fields: + title: "വിതരണ" + overview: + order_cycles: + order_cycles: "ഓർഡർ സൈക്കിളുകൾ" + shipping_methods: + index: + shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + name: "പേര്" + products_distributor: "വിതരണക്കാരൻ" + calculator: "കാൽക്കുലേറ്റർ" + display: "പ്രദർശിപ്പിക്കുക" + back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + form: + categories: "വിഭാഗങ്ങൾ" + tax_category: "നികുതി വിഭാഗം" + back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + payment_methods: + index: + payment_methods: "പേയ്മെന്റ് രീതികൾ" + name: "പേര്" + products_distributor: "വിതരണക്കാരൻ" + display: "പ്രദർശിപ്പിക്കുക" + active: "സജീവമാണ്" + back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + active_yes: "അതെ" + active_no: "ഇല്ല" + stripe_connect: + enterprise_select_placeholder: തിരഞ്ഞെടുക്കുക... + account_missing_msg: ഈ എന്റർപ്രൈസസിന് സ്ട്രൈപ്പ് അക്കൗണ്ട് നിലവിലില്ല. + status: പദവി + account_id: അക്കൗണ്ട് ഐഡി + business_name: ബിസിനസ്സ് പേര് + charges_enabled: ചാർജുകൾ പ്രവർത്തനക്ഷമമാക്കി + form: + name: "പേര്" + description: "വിവരണം" + display: "പ്രദർശിപ്പിക്കുക" + active: "സജീവമാണ്" + active_yes: "അതെ" + active_no: "ഇല്ല" + back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + tags: "ടാഗുകൾ" + products: + new: + supplier: "വിതരണക്കാരൻ" + product_name: "ഉത്പന്നത്തിന്റെ പേര്" + units: "യൂണിറ്റ് വലിപ്പം" + value: "മൂല്യം" + unit_name: "യൂണിറ്റിന്റെ പേര്" + price: "വില" + on_hand: "കയ്യിൽ" + on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" + product_description: "ഉൽപ്പന്ന വിവരണം" + image: "ചിത്രം" + unit_name_placeholder: 'ഉദാ. കുലകൾ' + index: + header: + title: ഉൽപ്പന്നങ്ങൾ മൊത്തമായി തിരുത്തുക + products_head: + name: പേര് + unit: യൂണിറ്റ് + display_as: പ്രദർശന മാർഗ്ഗം + category: വിഭാഗം + tax_category: നികുതി വിഭാഗം + inherits_properties?: സ്വത്തുക്കൾ അവകാശമാക്കുന്നുണ്ടോ? + av_on: "Av. ഓൺ" + import_date: "ഇറക്കുമതി തീയതി" + product_name: ഉത്പന്നത്തിന്റെ പേര് + primary_taxon_form: + product_category: ഉൽപ്പന്ന വിഭാഗം + display_as: + display_as: പ്രദർശന മാർഗ്ഗം + reports: + table: + select_and_search: "നിങ്ങളുടെ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ ഫിൽട്ടറുകൾ തിരഞ്ഞെടുത്ത് %{option} ക്ലിക്ക് ചെയ്യുക." + users: + index: + user: "ഉപയോക്താവ്" + enterprise_limit: "എന്റർപ്രൈസ് പരിധി" + search: "തിരയുക" + email: "ഇമെയിൽ" + edit: + general_settings: "പൊതുവായ ക്രമീകരണങ്ങൾ" + form: + email: "ഇമെയിൽ" + roles: "കർത്തവ്യങ്ങൾ" + enterprise_limit: "എന്റർപ്രൈസ് പരിധി" + password: "പാസ്സ്‌വേർഡ്" + variants: + index: + sku: "എസ്.കെ.യു" + price: "വില" + and: "ഒപ്പം" + form: + sku: "എസ്.കെ.യു" + price: "വില" + display_as: "പ്രദർശന മാർഗ്ഗം" + display_name: "പ്രദർശന നാമം" + autocomplete: + out_of_stock: "സ്റ്റോക്കില്ല" + producer_name: "നിർമ്മാതാവ്" + unit: "യൂണിറ്റ്" + shared: + configuration_menu: + terms_of_service: "സേവന നിബന്ധനകൾ" + sortable_header: + name: "പേര്" + number: "നമ്പർ" + completed_at: "പൂർത്തിയാക്കിയത്" + state: "സംസ്ഥാനം" + payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" + shipment_state: "ഷിപ്പിംഗ് സ്റ്റേറ്റ്" + email: "ഇമെയിൽ" + total: "ആകെ" + billing_address_name: "പേര്" + date_picker: + close: "അടയ്ക്കുക" + orders: + line_item: + out_of_stock: "സ്റ്റോക്കില്ല" + order_mailer: + confirm_email: + subject: "ഓർഡർ സ്ഥിരീകരണം" + shipment_mailer: + shipped_email: + dear_customer: "പ്രിയ ഉപഭോക്താവേ," + shipment_summary: "ഷിപ്പിംഗ് സംഗ്രഹം" + subject: "ഷിപ്പ്മെന്റ് അറിയിപ്പ്" + thanks: "നിങ്ങളുടെ ബിസിനസ്സിന് നന്ദി." + track_information: "ട്രാക്കിംഗ് വിവരങ്ങൾ: %{tracking}" + track_link: "ട്രാക്കിംഗ് ലിങ്ക്: %{url}" + order_state: + cart: കാർട്ട് + paypal: + refund_amount: "തുക" + users: + show: + tabs: + orders: ഓർഡറുകൾ + open_orders: + shop: കട + items: ഇനങ്ങൾ + total: ആകെ + edit: എഡിറ്റ് ചെയ്യുക + cancel: റദ്ദാക്കുക + closed: അടച്ചു + past_orders: + shop: കട + completed_at: പൂർത്തിയാക്കിയത് + items: ഇനങ്ങൾ + total: ആകെ + status: പദവി + cancelled: റദ്ദാക്കി + api: + invalid_api_key: "അസാധുവായ എപിഐ കീ ( %{key} ) വ്യക്തമായിട്ടുണ്ട്." + unauthorized: "ആ പ്രവർത്തനം നടത്താൻ നിങ്ങൾക്ക് അധികാരമില്ല." + invalid_resource: "അസാധുവായ റീസോർസ്. തകരാറുകൾ പരിഹരിച്ച് വീണ്ടും ശ്രമിക്കുക." + resource_not_found: "നിങ്ങൾ തിരയുന്ന റീസോർസ് കണ്ടെത്താനായില്ല." + components: + search_input: + placeholder: തിരയുക + selector_with_filter: + search_placeholder: തിരയുക + pagination: + next: അടുത്തത് + previous: മുന്നിലത്തേത് diff --git a/config/locales/pa.yml b/config/locales/pa.yml new file mode 100644 index 0000000000..5a0ab9d7ab --- /dev/null +++ b/config/locales/pa.yml @@ -0,0 +1,1126 @@ +pa: + language_name: "ਪੰਜਬੀ" + activerecord: + models: + spree/product: ਉਤਪਾਦ + spree/shipping_method: ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ + attributes: + spree/order/ship_address: + address1: "ਸ਼ਿਪਿੰਗ ਪਤਾ (ਗਲੀ + ਘਰ ਦਾ ਨੰਬਰ)" + address2: "ਸ਼ਿਪਿੰਗ ਪਤੇ ਦੀ ਲਾਈਨ 2" + city: "ਸ਼ਿਪਿੰਗ ਪਤੇ ਦਾ ਸ਼ਹਿਰ" + country: "ਸ਼ਿਪਿੰਗ ਪਤੇ ਦਾ ਦੇਸ਼" + phone: "ਫੋਨ ਨੰਬਰ" + firstname: "ਪਹਿਲਾ ਨਾਂ" + lastname: "ਆਖਰੀ ਨਾਂ" + zipcode: "ਸ਼ਿਪਿੰਗ ਪਤੇ ਦਾ ਪਿਨਕੋਡ" + spree/order/bill_address: + address1: "ਬਿਲਿੰਗ ਪਤਾ (ਗਲੀ + ਘਰ ਦਾ ਨੰਬਰ)" + zipcode: "ਬਿਲਿੰਗ ਪਤੇ ਦਾ ਪਿਨਕੋਡ" + city: "ਬਿਲਿੰਗ ਪਤੇ ਦਾ ਸ਼ਹਿਰ" + country: "ਬਿਲਿੰਗ ਪਤੇ ਦਾ ਦੇਸ਼" + firstname: "ਬਿਲਿੰਗ ਪਤੇ ਤੇ ਪਹਿਲਾ ਨਾਂ" + lastname: "ਬਿਲਿੰਗ ਪਤੇ ਤੇ ਆਖਰੀ ਨਾਂ" + phone: ਗਾਹਕ ਫੋਨ + spree/user: + password: "ਪਾਸਵਰਡ" + password_confirmation: "ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ" + reset_password_token: ਪਾਸਵਰਡ ਟੋਕਨ ਨੂੰ ਰੀਸੈਟ ਕਰੋ + enterprise_fee: + fee_type: ਫੀਸ ਦੀ ਕਿਸਮ + spree/order: + payment_state: ਭੁਗਤਾਨ ਸਥਿਤੀ + shipment_state: ਸ਼ਿਪਮੈਂਟ ਦੀ ਸਥਿਤੀ + completed_at: ਇਸ ਸਮੇਂ ਪੂਰਾ ਹੋਇਆ + number: ਨੰਬਰ + state: ਸਥਿਤੀ + email: ਗਾਹਕ ਦਾ ਈਮੇਲ + spree/payment: + amount: ਰਕਮ + state: ਸਥਿਤੀ + source: ਸਰੋਤ + spree/product: + name: "ਉਤਪਾਦ ਦਾ ਨਾਂ" + price: "ਕੀਮਤ" + primary_taxon: "ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ" + supplier: "ਸਪਲਾਇਰ" + shipping_category_id: "ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀ" + variant_unit: "ਵੇਰੀਐਂਟ ਯੂਨਿਟ" + variant_unit_name: "ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਦਾ ਨਾਮ" + unit_value: "ਯੂਨਿਟ ਵੈਲਯੂ" + spree/credit_card: + base: "ਕਰੇਡਿਟ ਕਾਰਡ" + number: "ਨੰਬਰ" + month: "ਮਹੀਨਾ" + verification_value: "ਪੁਸ਼ਟੀਕਰਨ ਵੈਲਯੂ" + year: "ਸਾਲ" + order_cycle: + orders_close_at: ਸਮਾਪਤੀ ਮਿਤੀ + variant_override: + count_on_hand: "ਹੱਥ ਵਿਚ" + spree/payment_method/calculator: + preferred_flat_percent: "ਫਲੈਟ ਪ੍ਰਤੀਸ਼ਤ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_amount: "ਰਾਸ਼ੀ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_first_item: "ਪਹਿਲੀ ਆਈਟਮ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_additional_item: "ਵਾਧੂ ਆਈਟਮ ਦੀ ਲਾਗਤ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_max_items: "ਅਧਿਕਤਮ ਆਈਟਮਾਂ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_minimal_amount: "ਨਿਮਨਤਮ ਰਾਸ਼ੀ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_normal_amount: "ਆਮ ਰਾਸ਼ੀ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_discount_amount: "ਛੁੱਟ ਦੀ ਰਾਸ਼ੀ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_unit_from_list: "ਸੂਚੀ ਤੋਂ ਯੂਨਿਟ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + preferred_per_unit: "ਪ੍ਰਤੀ ਯੂਨਿਟ ਦਾ ਕੈਲਕੁਲੇਟਰ:" + enterprise: + white_label_logo_link: "ਸ਼ੌਪਫਰੰਟ ਵਿੱਚ ਵਰਤੇ ਗਏ ਲੋਗੋ ਦਾ ਲਿੰਕ" + errors: + models: + enterprise_fee: + inherit_tax_requires_per_item_calculator: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਪ੍ਰਤੀ-ਆਈਟਮ ਕੈਲਕੁਲੇਟਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।" + spree/user: + attributes: + email: + taken: "ਇਸ ਈਮੇਲ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਖਾਤਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਲੌਗਇਨ ਕਰੋ ਜਾਂ ਆਪਣਾ ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰੋ।" + reset_password_token: + invalid: ਅਵੈਧ ਹੈ + spree/order: + no_card: ਚਾਰਜ ਕਰਨ ਲਈ ਕੋਈ ਅਧਿਕਾਰਤ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹਨ + spree/credit_card: + attributes: + base: + card_expired: "ਮਿਆਦ ਖਤਮ ਹੋ ਗਈ ਹੈ" + order_cycle: + attributes: + orders_close_at: + after_orders_open_at: ਖੁੱਲਣ ਦੀ ਮਿਤੀ ਤੋਂ ਬਾਅਦ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ + variant_override: + count_on_hand: + using_producer_stock_settings_but_count_on_hand_set: "ਖਾਲੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਕਿਉਂਕਿ ਉਤਪਾਦਕ ਸਟਾਕ ਸੈਟਿੰਗਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ" + on_demand_but_count_on_hand_set: "ਜੇ ਡਿਮਾਂਡ ਤੇ ਹੋਵੇ ਤਾਂ ਖਾਲੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + limited_stock_but_no_count_on_hand: "ਸੀਮਤ ਸਟਾਕ ਨੂੰ ਮਜਬੂਰ ਕਰਨ ਕਰਕੇ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ" + messages: + confirmation: "%{attribute} ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ" + blank: "ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ" + too_short: "ਬਹੁਤ ਛੋਟਾ (ਨਿਊਨਤਮ %{count} ਅੱਖਰ)" + errors: + messages: + content_type_invalid: "ਅਵੈਧ ਸਮੱਗਰੀ ਦੀ ਕਿਸਮ ਸ਼ਾਮਲ ਹੈ" + file_size_out_of_range: "ਸਾਈਜ਼ %{file_size} ਲੋੜੀਂਦੀ ਸੀਮਾ ਵਿੱਚਕਾਰ ਨਹੀਂ ਹੈ" + limit_out_of_range: "ਕੁੱਲ ਗਿਣਤੀ ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੈ" + image_metadata_missing: "ਇਹ ਇੱਕ ਵੈਧ ਫੋਟੋ ਨਹੀਂ ਹੈ" + dimension_min_inclusion: "%{width} x %{height} ਪਿਕਸਲ ਤੋਂ ਵੱਧ ਜਾਂ ਬਰਾਬਰ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" + dimension_max_inclusion: "%{width} x %{height} ਪਿਕਸਲ ਤੋਂ ਘੱਟ ਜਾਂ ਬਰਾਬਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" + dimension_width_inclusion: "ਚੌੜਾਈ %{min} ਅਤੇ %{max} ਪਿਕਸਲਾਂ ਵਿੱਚਕਾਰ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।" + dimension_height_inclusion: "ਲੰਬਾਈ %{min} ਅਤੇ %{max} ਪਿਕਸਲਾਂ ਵਿੱਚਕਾਰ ਸ਼ਾਮਲ ਨਹੀਂ ਹੈ।" + dimension_width_greater_than_or_equal_to: "ਚੌੜਾਈ %{length} ਪਿਕਸਲ ਤੋਂ ਵੱਧ ਜਾਂ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + dimension_height_greater_than_or_equal_to: "ਲੰਬਾਈ %{length} ਪਿਕਸਲ ਤੋਂ ਵੱਧ ਜਾਂ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + dimension_width_less_than_or_equal_to: "ਚੌੜਾਈ %{length} ਪਿਕਸਲ ਤੋਂ ਘੱਟ ਜਾਂ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + dimension_height_less_than_or_equal_to: "ਲੰਬਾਈ %{length} ਪਿਕਸਲ ਤੋਂ ਘੱਟ ਜਾਂ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + dimension_width_equal_to: "width must be equal to %{length} pixel." + dimension_height_equal_to: "ਲੰਬਾਈ %{length} ਪਿਕਸਲ ਦੇ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।" + aspect_ratio_not_square: "ਇੱਕ ਚੌਰਸ ਫੋਟੋ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + aspect_ratio_not_portrait: "ਇੱਕ ਪੋਰਟਰੇਟ ਫੋਟੋ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + aspect_ratio_not_landscape: "ਇੱਕ ਲੈਂਡਸਕੇਪ ਫੋਟੋ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + aspect_ratio_is_not: "ਅਸਪੈਕਟ ਅਨੁਪਾਤ %{aspect ratio} ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + aspect_ratio_unknown: "ਇੱਕ ਅਗਿਆਤ ਅਸਪੈਕਟ ਅਨੁਪਾਤ ਹੈ" + image_not_processable: "ਇਹ ਇੱਕ ਵੈਧ ਫੋਟੋ ਨਹੀਂ ਹੈ" + not_found: + title: "ਜਿਹੜਾ ਪੰਨਾ ਤੁਸੀਂ ਲੱਭ ਰਹੇ ਸੀ ਉਹ ਮੌਜੂਦ ਨਹੀਂ ਹੈ (404)" + message_html: "ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ

ਇਹ ਇੱਕ ਅਸਥਾਈ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ। ਪਿਛਲੀ ਸਕ੍ਰੀਨ ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਬੈਕ ਬਟਨ ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਹੋਮ ਤੇ ਵਾਪਸ ਜਾਓ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।

ਸਹਾਇਤਾ ਨਾਲ ਸੰਪਰਕ ਕਰੋ

ਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਜਾਂ ਜ਼ਰੂਰੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਇੱਸ ਦੇ ਬਾਰੇ ਵਿੱਚ ਦੱਸੋ। ਗਲੋਬਲ ਓਪਨ ਫੂਡ ਨੈੱਟਵਰਕ ਦੇ ਲੋਕਲ ਪੰਨੇ ਤੋਂ ਸਾਡੇ ਸੰਪਰਕ ਵੇਰਵੇ ਪ੍ਰਾਪਤ ਕਰੋ

ਤੁਹਾਡਾ ਸਾਨੂੰ ਗੁੰਮ ਹੋਏ ਪੰਨੇ ਬਾਰੇ ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ ਉਨ੍ਹੇਂ ਜਿਆਦਾ ਵੇਰਵੇ ਪ੍ਰਦਾਨ ਕਰਨਾ ਅਸਲ ਵਿੱਚ ਸਾਡੀ ਵਧੇਰੀ ਮਦਦ ਕਰਦਾ ਹੈ।

" + internal_server_error: + title: "ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਕੁਝ ਗਲਤ ਹੋਇਆ ਹੈ (500)" + message_html: "ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ

ਇਹ ਇੱਕ ਅਸਥਾਈ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ। ਪਿਛਲੀ ਸਕ੍ਰੀਨ ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਬੈਕ ਬਟਨ ਤੇ ਕਲਿੱਕ ਕਰੋ ਜਾਂ ਹੋਮ ਤੇ ਵਾਪਿਸ ਜਾਓ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।

ਅਸੀਂ ਇਸ ਤੇ ਕੰਮ ਕਰ ਰਹੇ ਹਾਂ

ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਪਹਿਲਾਂ ਵੇਖਿਆ ਹੈ, ਤਾਂ ਅਸੀਂ ਸ਼ਾਇਦ ਇਸ ਬਾਰੇ ਪਹਿਲਾਂ ਹੀ ਜਾਣਦੇ ਹਾਂ ਅਤੇ ਇਸ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਕੰਮ ਕਰ ਰਹੇ ਹਾਂ। ਅਸੀਂ ਉਨ੍ਹਾਂ ਸਾਰੀਆਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਦੇ ਹਾਂ ਜੋ ਅਸੀਂ ਨੋਟਿਸ ਕਰਦੇ ਹਾਂ।

ਸਹਾਇਤਾ ਨਾਲ ਸੰਪਰਕ ਕਰੋ

ਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਜਾਂ ਜ਼ਰੂਰੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਉਸ ਬਾਰੇ ਦੱਸੋ। ਗਲੋਬਲ ਓਪਨ ਫੂਡ ਨੈੱਟਵਰਕ ਦੇ ਲੋਕਲ ਪੰਨੇ ਤੋਂ ਸਾਡੇ ਸੰਪਰਕ ਵੇਰਵੇ ਪ੍ਰਾਪਤ ਕਰੋ

< p>ਤੁਹਾਡਾ ਸਾਨੂੰ ਗੁੰਮ ਹੋਏ ਪੰਨੇ ਬਾਰੇ ਜਿੰਨਾ ਸੰਭਵ ਹੋ ਸਕੇ ਉਨ੍ਹੇਂ ਜਿਆਦਾ ਵੇਰਵੇ ਪ੍ਰਦਾਨ ਕਰਨਾ ਅਸਲ ਵਿੱਚ ਸਾਡੀ ਵਧੇਰੀ ਮਦਦ ਕਰਦਾ ਹੈ।

" + unprocessable_entity: + title: "ਜੋ ਬਦਲਾਅ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਸੀ ਉਹ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਸੀ (422)" + message_html: "

ਜੋ ਬਦਲਾਅ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਸੀ ਉਹ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਸੀ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਸੇ ਅਜਿਹੀ ਚੀਜ਼ ਨੂੰ ਬਦਲਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਹੋਵੇ ਜਿਸ ਤੱਕ ਤੁਹਾਡੀ ਪਹੁੰਚ ਨਹੀਂ ਹੈ।

ਹੋਮ ਤੇ ਵਾਪਸ ਜਾਓ

" + stimulus_reflex_error: "ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਕੁਝ ਗਲਤ ਹੋਇਆ ਹੈ।\\n\\nਇਹ ਇੱਕ ਅਸਥਾਈ ਸਮੱਸਿਆ ਹੋ ਸਕਦੀ ਹੈ, ਇਸ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜਾਂ ਪੰਨੇ ਨੂੰ ਦੋਬਾਰਾ ਲੋਡ ਕਰੋ।\\nਅਸੀਂ ਸਾਰੀਆਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਰਿਕਾਰਡ ਕਰਦੇ ਹਾਂ ਅਤੇ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਅਸੀਂ ਉਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਤੇ ਕੰਮ ਰਹੇ ਹੋਈਏ।\\nਜੇਕਰ ਸਮੱਸਿਆ ਬਣੀ ਰਹਿੰਦੀ ਹੈ ਜਾਂ ਜ਼ਰੂਰੀ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" + stripe: + error_code: + incorrect_number: "ਕਾਰਡ ਨੰਬਰ ਗਲਤ ਹੈ।" + invalid_number: "ਕਾਰਡ ਨੰਬਰ ਇੱਕ ਵੈਧ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੰਬਰ ਨਹੀਂ ਹੈ।" + invalid_expiry_month: "ਕਾਰਡ ਦੀ ਮਿਆਦ ਖ਼ਤਮ ਹੋਣ ਦਾ ਮਹੀਨਾ ਅਵੈਧ ਹੈ।" + invalid_expiry_year: "ਕਾਰਡ ਦੀ ਮਿਆਦ ਖ਼ਤਮ ਹੋਣ ਦਾ ਸਾਲ ਅਵੈਧ ਹੈ।" + invalid_cvc: "ਕਾਰਡ ਦਾ ਸੁਰੱਖਿਆ ਕੋਡ ਅਵੈਧ ਹੈ।" + expired_card: "ਕਾਰਡ ਦੀ ਮਿਆਦ ਖ਼ਤਮ ਹੋ ਗਈ ਹੈ।" + incorrect_cvc: "ਕਾਰਡ ਦਾ ਸੁਰੱਖਿਆ ਕੋਡ ਗਲਤ ਹੈ।" + incorrect_zip: "ਕਾਰਡ ਦੇ ਪਿੰਨ ਕੋਡ ਦੀ ਤਸਦੀਕ ਅਸਫਲ ਰਹੀ।" + card_declined: "ਕਾਰਡ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ।" + missing: "ਜਿਸ ਗਾਹਕ ਤੋਂ ਸ਼ੁਲਕ ਲੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ਉਸਦਾ ਕੋਈ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।" + processing_error: "ਕਾਰਡ ਦੀ ਪ੍ਰੋਸਸਸਿੰਗ ਕਰਦੇ ਸਮੇਂ ਇੱਕ ਗਲਤੀ ਹੋਈ।" + rate_limit: "API ਤੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਆਉਣ ਵਾਲੀਆਂ ਬੇਨਤੀਆਂ ਕਾਰਨ ਇੱਕ ਗਲਤੀ ਹੋਈ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਦੱਸੋ ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਸ ਗਲਤੀ ਦਾ ਸਾਹਮਣਾ ਲਗਾਤਾਰ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।" + authentication_required: "ਕਾਰਡ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਸੀ ਕਿਉਂਕਿ ਲੈਣ-ਦੇਣ ਲਈ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ ਹੈ।" + approve_with_id: "ਭੁਗਤਾਨ ਅਧਿਕਾਰਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।" + call_issuer: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + card_not_supported: "ਕਾਰਡ ਇਸ ਕਿਸਮ ਦੀ ਖਰੀਦ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ।" + card_velocity_exceeded: "ਗਾਹਕ ਨੇ ਆਪਣੇ ਕਾਰਡ ਉਤੇ ਉਪਲਬਧ ਬਕਾਇਆ ਰਾਸ਼ੀ ਜਾਂ ਕ੍ਰੈਡਿਟ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰ ਲਿਆ ਹੈ।" + currency_not_supported: "ਕਾਰਡ ਨਿਰਧਾਰਿਤ ਕਰੰਸੀ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ।" + do_not_honor: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + do_not_try_again: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + duplicate_transaction: "ਲੈਣ-ਦੇਣ ਦੀ ਉਸੇ ਰਕਮ ਅਤੇ ਉਸੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਤੇ ਹਾਲ ਹੀ ਵਿੱਚ ਜਮ੍ਹਾਂ ਕੀਤਾ ਗਿਆ ਸੀ।" + fraudulent: "ਭੁਗਤਾਨ ਅਸਵੀਕਾਰ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਸਟ੍ਰਾਈਪ ਨੂੰ ਸ਼ੱਕ ਹੈ ਕਿ ਇਹ ਧੋਖਾਧੜੀ ਹੋ ਸਕਦੀ ਹੈ।" + generic_decline: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + incorrect_pin: "ਦਰਜ ਕੀਤਾ ਪਿੰਨ ਗਲਤ ਹੈ। ਇਹ ਅਸਵੀਕਾਰ ਕੀਤਾ ਕੋਡ ਸਿਰਫ ਕਾਰਡ ਰੀਡਰ ਦੁਆਰਾ ਕੀਤੇ ਗਏ ਭੁਗਤਾਨਾਂ ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ।" + insufficient_funds: "ਖਰੀਦ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਕਾਰਡ ਉਤੇ ਲੋੜੀਂਦੇ ਫੰਡ ਨਹੀਂ ਹਨ।" + invalid_account: "ਇਹ ਕਾਰਡ, ਜਾਂ ਖਾਤਾ ਜਿਸ ਨਾਲ ਕਾਰਡ ਲਿੰਕ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਵੈਧ ਹੈ।" + invalid_amount: "ਭੁਗਤਾਨ ਦੀ ਰਕਮ ਅਵੈਧ ਹੈ, ਜਾਂ ਮਨਜ਼ੂਰ ਕੀਤੀ ਰਕਮ ਤੋਂ ਵੱਧ ਹੈ।" + invalid_pin: "ਦਰਜ ਕੀਤਾ ਪਿੰਨ ਗਲਤ ਹੈ। ਇਹ ਅਸਵੀਕਾਰ ਕੀਤਾ ਕੋਡ ਸਿਰਫ ਕਾਰਡ ਰੀਡਰ ਦੁਆਰਾ ਕੀਤੇ ਗਏ ਭੁਗਤਾਨਾਂ ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ।" + issuer_not_available: "ਕਾਰਡ ਦੇ ਜਾਰੀਕਰਤਾ ਨਾਲ ਸੰਪਰਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਇਸਲਈ ਭੁਗਤਾਨ ਅਧਿਕਾਰਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + lost_card: "ਭੁਗਤਾਨ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਕਾਰਡ ਗੁੰਮ ਹੋਣ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ ਹੈ।" + merchant_blacklist: "ਭੁਗਤਾਨ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਟ੍ਰਾਈਪ ਉਪਭੋਗਤਾ ਦੀ ਬਲਾਕ ਸੂਚੀ ਵਿੱਚ ਦਿੱਤੀ ਵੈਲਯੂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।" + new_account_information_available: "ਇਹ ਕਾਰਡ, ਜਾਂ ਖਾਤਾ ਜਿਸ ਨਾਲ ਕਾਰਡ ਲਿੰਕ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਵੈਧ ਹੈ।" + no_action_taken: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + not_permitted: "ਭੁਗਤਾਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।" + offline_pin_required: "ਕਾਰਡ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਸਨੂੰ ਇੱਕ ਪਿੰਨ ਦੀ ਲੋੜ ਹੈ।" + online_or_offline_pin_required: "ਕਾਰਡ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਇਸਨੂੰ ਇੱਕ ਪਿੰਨ ਦੀ ਲੋੜ ਹੈ।" + pickup_card: "ਇਸ ਭੁਗਤਾਨ ਲਈ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ (ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸਦੀ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ ਹੈ)।" + pin_try_exceeded: "ਪਿੰਨ ਭਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ਾਂ ਦੀ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਸੰਖਿਆ ਤੋਂ ਵਾਧੂ ਹੋ ਗਈ ਹੈ।" + reenter_transaction: "ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਜਾਰੀਕਰਤਾ ਦੁਆਰਾ ਭੁਗਤਾਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।" + restricted_card: "ਇਸ ਭੁਗਤਾਨ ਲਈ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ (ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸਦੀ ਗੁੰਮ ਜਾਂ ਚੋਰੀ ਹੋਣ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ ਹੈ)।" + revocation_of_all_authorizations: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + revocation_of_authorization: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + security_violation: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + service_not_allowed: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + stolen_card: "ਭੁਗਤਾਨ ਨੂੰ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿਉਂਕਿ ਕਾਰਡ ਚੋਰੀ ਹੋਣ ਦੀ ਰਿਪੋਰਟ ਕੀਤੀ ਗਈ ਹੈ।" + stop_payment_order: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + testmode_decline: "ਸਟ੍ਰਾਈਪ ਦੇ ਇੱਕ ਟੈਸਟ ਕਾਰਡ ਨੰਬਰ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਸੀ।" + transaction_not_allowed: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + try_again_later: "ਕਾਰਡ ਨੂੰ ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਅਸਵੀਕਾਰ ਕੀਤਾ ਗਿਆ ਹੈ।" + withdrawal_count_limit_exceeded: "ਗਾਹਕ ਨੇ ਆਪਣੇ ਕਾਰਡ ਉਤੇ ਉਪਲਬਧ ਬਕਾਇਆ ਰਾਸ਼ੀ ਜਾਂ ਕ੍ਰੈਡਿਟ ਸੀਮਾ ਨੂੰ ਪਾਰ ਕਰ ਲਿਆ ਹੈ।" + activemodel: + errors: + messages: + inclusion: "ਸੂਚੀ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ" + models: + order_management/subscriptions/validator: + attributes: + subscription_line_items: + at_least_one_product: "^ਕਿਰਪਾ ਕਰਕੇ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਉਤਪਾਦ ਜੋੜੋ" + not_available: "^%{name} ਚੁਣੀ ਗਈ ਅਨੁਸੁਚੀ ਤੋਂ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" + ends_at: + after_begins_at: "ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਬਾਅਦ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + customer: + does_not_belong_to_shop: "%{shop} ਨਾਲ ਸੰਬੰਧਿਤ ਨਹੀਂ ਹੈ" + schedule: + not_coordinated_by_shop: "%{shop} ਦੁਆਰਾ ਤਾਲਮੇਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ" + payment_method: + not_available_to_shop: "%{shop} ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" + invalid_type: "ਨਕਦੀ ਜਾਂ ਸਟ੍ਰਾਈਪ ਵਿਧੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + charges_not_allowed: "^ਇਸ ਗਾਹਕ ਦੁਆਰਾ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਤੇ ਪੈਸੇ ਕੱਟੇ ਜਾਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ" + no_default_card: "\"^ਇਸ ਗਾਹਕ ਲਈ ਕੋਈ ਡਿਫੌਲਟ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ\"" + shipping_method: + not_available_to_shop: "%{shop} ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" + card_details: "ਕਾਰਡ ਦੇ ਵੇਰਵੇ" + card_type: "ਕਾਰਡ ਦੀ ਕਿਸਮ" + cardholder_name: "ਕਾਰਡ ਧਾਰਕ ਦਾ ਨਾਮ" + community_forum_url: "ਕਮਿਊਨਿਟੀ ਫੋਰਮ URL" + customer_instructions: "ਗਾਹਕ ਨਿਰਦੇਸ਼" + additional_information: "ਵਧੀਕ ਜਾਣਕਾਰੀ" + devise: + passwords: + spree_user: + cannot_be_blank: "ਉਪਭੋਗਤਾ ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਪਾਸਵਰਡ ਦਰਜ ਕਰੋ।" + confirmations: + send_instructions: "ਕੁਝ ਮਿੰਟਾਂ ਵਿੱਚ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਨਿਰਦੇਸ਼ਾਂ ਵਾਲਾ ਇੱਕ ਈਮੇਲ ਪ੍ਰਾਪਤ ਹੋਵੇਗੀ।" + failed_to_send: "ਤੁਹਾਡੀ ਪੁਸ਼ਟੀਕਰਨ ਈਮੇਲ ਭੇਜਣ ਵੇਲੇ ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ।" + resend_confirmation_email: "ਪੁਸ਼ਟੀ ਈਮੇਲ ਮੁੜ ਤੋਂ ਭੇਜੋ" + confirmed: "ਤੁਹਾਡੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ! ਤੁਸੀਂ ਹੁਣ ਲੌਗ ਇਨ ਕਰ ਸਕਦੇ ਹੋ।" + not_confirmed: "ਤੁਹਾਡੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ। ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਇਹ ਪੜਾਅ ਪੂਰਾ ਕਰ ਲਿਆ ਹੈ?" + user_confirmations: + spree_user: + send_instructions: "ਕੁਝ ਮਿੰਟਾਂ ਵਿੱਚ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਨਿਰਦੇਸ਼ਾਂ ਵਾਲਾ ਇੱਕ ਈਮੇਲ ਪ੍ਰਾਪਤ ਹੋਵੇਗੀ।" + confirmation_sent: "ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਣ ਭੇਜਿਆ ਗਿਆ" + confirmation_not_sent: "ਪੁਸ਼ਟੀਕਰਣ ਈਮੇਲ ਭੇਜਣ ਵਿੱਚ ਗਲਤੀ" + user_registrations: + spree_user: + signed_up_but_unconfirmed: "ਤੁਹਾਡੇ ਈਮੇਲ ਪਤੇ ਉਤੇ ਪੁਸ਼ਟੀਕਰਨ ਲਿੰਕ ਵਾਲਾ ਇੱਕ ਸੁਨੇਹਾ ਭੇਜਿਆ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਖਾਤੇ ਨੂੰ ਅਕਟੀਵੇਟ ਕਰਨ ਲਈ ਇਸ ਲਿੰਕ ਨੂੰ ਖੋਲ੍ਹੋ।" + unknown_error: "ਤੁਹਾਡਾ ਖਾਤਾ ਨੂੰ ਬਣਾਉਣ ਸਮੇਂ ਕੁਝ ਗਲਤ ਹੋਇਆ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਈਮੇਲ ਪਤੇ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + failure: + disabled: "ਤੁਹਾਡਾ ਖਾਤਾ ਡਿਸੇਬਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਮੁੱਦੇ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਕਿਸੇ ਪ੍ਰਬੰਧਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" + unconfirmed: "ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ।" + already_registered: "ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨੀ ਪਵੇਗੀ।" + success: + logged_in_succesfully: "ਸਫਲਤਾਪੂਰਵਕ ਲੌਗਇਨ ਕੀਤਾ ਗਿਆ" + sessions: + signed_out: "ਸਫਲਤਾਪੂਰਵਕ ਸਾਈਨ ਆਉਟ ਕੀਤਾ ਗਿਆ।" + already_signed_out: "ਸਫਲਤਾਪੂਰਵਕ ਸਾਈਨ ਆਉਟ ਕੀਤਾ ਗਿਆ।" + user_passwords: + spree_user: + updated_not_active: "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਪਰ ਤੁਹਾਡੀ ਈਮੇਲ ਦੀ ਅਜੇ ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋਈ ਹੈ।" + updated: "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਸਫਲਤਾਪੂਰਵਕ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਹੁਣ ਸਾਈਨ ਇਨ ਹੋ।" + send_instructions: "ਕੁਝ ਮਿੰਟਾਂ ਵਿੱਚ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਨਿਰਦੇਸ਼ਾਂ ਵਾਲਾ ਇੱਕ ਈਮੇਲ ਪ੍ਰਾਪਤ ਹੋਵੇਗੀ।" + oidc: + failure: "ਸਾਈਨ ਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %{error}" + home_page_alert_html: "ਹੋਮ ਪੇਜ ਚੇਤਾਵਨੀ HTML" + hub_signup_case_studies_html: "ਹੱਬ ਸਾਈਨਅਪ ਕੇਸ ਸਟੱਡੀਜ਼ HTML" + hub_signup_detail_html: "ਹੱਬ ਸਾਈਨਅਪ ਵੇਰਵੇ HTML" + hub_signup_pricing_table_html: "ਹੱਬ ਸਾਈਨਅੱਪ ਕੀਮਤ ਨਿਰਧਾਰਨ ਸਾਰਣੀ HTML" + group_signup_case_studies_html: "ਗਰੁੱਪ ਸਾਈਨਅੱਪ ਕੇਸ ਸਟੱਡੀਜ਼ HTML" + group_signup_detail_html: "ਗਰੁੱਪ ਸਾਈਨਅਪ ਵੇਰਵੇ HTML" + group_signup_pricing_table_html: "ਗਰੁੱਪ ਸਾਈਨਅੱਪ ਕੀਮਤ ਨਿਰਧਾਰਨ ਸਾਰਣੀ HTML" + item_description: "ਆਈਟਮ ਦਾ ਵੇਰਵਾ" + menu_1_icon_name: "ਮੇਨਯੁ 1 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_2_icon_name: "ਮੇਨਯੁ 2 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_3_icon_name: "ਮੇਨਯੁ 3 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_4_icon_name: "ਮੇਨਯੁ 4 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_5_icon_name: "ਮੇਨਯੁ 5 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_6_icon_name: "ਮੇਨਯੁ 6 ਆਈਕਨ ਦਾ ਨਾਮ" + menu_7_icon_name: "ਮੇਨਯੁ 7 ਆਈਕਨ ਦਾ ਨਾਮ" + models: + order_cycle: + cloned_order_cycle_name: "%{order_cycle} ਦੀ ਕਾਪੀ" + tax_rate: + included_in_price: "ਕੀਮਤ ਵਿੱਚ ਸ਼ਾਮਲ" + open_street_map_enabled: "ਓਪਨ ਸਟ੍ਰੀਟ ਮੈਪ ਸਮਰਥਿਤ" + open_street_map_default_latitude: "ਓਪਨ ਸਟ੍ਰੀਟ ਮੈਪ ਡਿਫੌਲਟ ਲੈਟਿਟ੍ਯੂਡ" + open_street_map_default_longitude: "ਓਪਨ ਸਟ੍ਰੀਟ ਮੈਪ ਡਿਫੌਲਟ ਲੌਨਜੀਟੂਡ" + open_street_map_provider_name: "ਓਪਨ ਸਟ੍ਰੀਟ ਮੈਪ ਪ੍ਰਦਾਤਾ ਦਾ ਨਾਂ" + open_street_map_provider_options: "ਓਪਨ ਸਟ੍ਰੀਟ ਮੈਪ ਪ੍ਰਦਾਤਾ ਵਿਕਲਪ" + producer_signup_case_studies_html: "ਉਤਪਾਦਕ ਸਾਈਨਅਪ ਕੇਸ ਸਟੱਡੀਜ਼ HTML" + producer_signup_detail_html: "ਉਤਪਾਦਕ ਸਾਈਨਅੱਪ ਵੇਰਵੇ HTML" + producer_signup_pricing_table_html: "ਉਤਪਾਦਕ ਸਾਈਨਅੱਪ ਕੀਮਤ ਨਿਰਧਾਰਨ ਸਾਰਣੀ HTML" + producers_social: "ਉਤਪਾਦਕਾਂ ਦਾ ਸੋਸ਼ਲ" + resume_order: "ਆਰਡਰ ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ" + sku: "SKU" + subtotal: "ਸਬ ਟੋਟਲ" + tax_rate: "ਟੈਕਸ ਦੀ ਦਰ" + validators: + date_time_string_validator: + not_string_error: "ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" + invalid_format_error: "ਵੈਧ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + integer_array_validator: + not_array_error: "ਇੱਕ ਐਰੇ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + invalid_element_error: "ਸਿਰਫ਼ ਵੈਧ ਪੂਰਨ ਅੰਕ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ" + enterprise_mailer: + confirmation_instructions: + subject: "ਕਿਰਪਾ ਕਰਕੇ %{enterprise} ਲਈ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" + welcome: + subject: "%{enterprise} ਹੁਣ %{sitename} ਉਤੇ ਹੈ" + email_welcome: "ਜੀ ਆਇਆਂ ਨੂੰ" + email_registered: "ਹੁਣ ਇਸ ਦਾ ਹਿੱਸਾ ਹੈ" + email_userguide_html: "ਤੁਹਾਡੇ ਉਤਪਾਦਕ ਜਾਂ ਹੱਬ ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਲਈ ਵਿਸਤ੍ਰਿਤ ਸਮਰਥਨ ਨਾਲ ਇੱਕ ਯੂਜ਼ਰ ਗਾਈਡ ਇੱਥੇ ਉਪਲਬਧ ਹੈ:  %{link}" + userguide: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਯੂਜ਼ਰ ਗਾਈਡ" + email_admin_html: "ਤੁਸੀਂ %{link} ਤੇ ਲੌਗ ਇਨ ਕਰਕੇ ਜਾਂ ਹੋਮ ਪੇਜ ਦੇ ਉਪਰ ਸੱਜੇ ਕੋਗ ਤੇ ਕਲਿੱਕ ਕਰਕੇ, ਅਤੇ ਅਡਮਿਨਿਸਟ੍ਰੇਸ਼ਨ ਦੀ ਚੋਣ ਕਰਕੇ ਆਪਣੇ ਖਾਤੇ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੇ ਹੋ।" + admin_panel: "ਐਡਮਿਨ ਪੈਨਲ" + email_community_html: "ਸਾਡੇ ਕੋਲ OFN ਸੌਫਟਵੇਅਰ ਅਤੇ ਫੂਡ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਚਲਾਉਣ ਦੀਆਂ ਵਿਲੱਖਣ ਚੁਣੌਤੀਆਂ ਨਾਲ ਸਬੰਧਤ ਭਾਈਚਾਰਕ ਚਰਚਾ ਲਈ ਇੱਕ ਔਨਲਾਈਨ ਪਲੇਟਫਾਰਮ ਵੀ ਹੈ। ਤੁਹਾਨੂੰ ਇਸ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਉਤਸ਼ਾਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਅਸੀਂ ਲਗਾਤਾਰ ਵਿਕਸਿਤ ਹੋ ਰਹੇ ਹਾਂ ਅਤੇ ਇਸ ਪਲੇਟਫਾਰਮ ਤੇ ਤਿਹਾਡੇ ਦ੍ਵਾਰਾ ਦਿੱਤੇ ਸੁਝਾਅ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨਗੇ ਕਿ ਅੱਗੇ ਕੀ ਹੁੰਦਾ ਹੈ। %{link }" + join_community: "ਭਾਈਚਾਰੇ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ" + invite_manager: + subject: "%{enterprise} ਨੇ ਤੁਹਾਨੂੰ ਪ੍ਰਬੰਧਕ ਬਣਨ ਲਈ ਸੱਦਾ ਦਿੱਤਾ ਹੈ" + producer_mailer: + order_cycle: + subject: "%{producer} ਲਈ ਆਰਡਰ ਸਾਈਕਲ ਰਿਪੋਰਟ" + provider_settings: "ਪ੍ਰਦਾਤਾ ਸੈਟਿੰਗਾਂ" + report_mailer: + report_ready: + subject: "ਰਿਪੋਰਟ ਤਿਆਰ ਹੈ" + heading: "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਰਿਪੋਰਟ ਤਿਆਰ ਹੈ" + link_label: "\"%{name}\"" + shipment_mailer: + shipped_email: + dear_customer: "ਪਿਆਰੇ ਗਾਹਕ," + instructions: "ਤੁਹਾਡਾ ਆਰਡਰ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ" + shipment_summary: "ਸ਼ਿਪਮੈਂਟ ਸੰਖੇਪ" + subject: "ਸ਼ਿਪਮੈਂਟ ਬਾਰੇ ਸੂਚਨਾ" + thanks: "ਤੁਹਾਡੇ ਕਾਰੋਬਾਰ ਦੇਣ ਲਈ ਧੰਨਵਾਦ।" + track_information: "ਟਰੈਕਿੰਗ ਜਾਣਕਾਰੀ: %{tracking}" + track_link: "ਟਰੈਕਿੰਗ ਲਿੰਕ: %{url}" + subscription_mailer: + placement_summary_email: + subject: ਹਾਲ ਹੀ ਵਿੱਚ ਦਿੱਤੇ ਗਏ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰਾਂ ਦਾ ਸੰਖੇਪ + greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + intro: "ਹੇਠਾਂ ਉਹਨਾਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰਾਂ ਦਾ ਸੰਖੇਪ ਹੈ ਜੋ ਹਾਲ ਹੀ ਵਿੱਚ %{shop} ਲਈ ਦਿੱਤੇ ਗਏ ਹਨ।" + confirmation_summary_email: + subject: ਹਾਲ ਹੀ ਵਿੱਚ ਪੁਸ਼ਟੀ ਕੀਤੇ ਗਏ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰਾਂ ਦਾ ਸੰਖੇਪ + greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + intro: "ਹੇਠਾਂ ਉਹਨਾਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰਾਂ ਦਾ ਸੰਖੇਪ ਹੈ ਜਿਹਨਾਂ ਨੂੰ %{shop} ਲਈ ਹਾਲ ਹੀ ਵਿੱਚ ਅੰਤਿਮ ਰੂਪ ਦਿੱਤਾ ਗਿਆ ਹੈ।" + summary_overview: + total: ਕੁੱਲ %{count} ਸਬਸਕ੍ਰਿਪਸ਼ਨਾਂ ਨੂੰ ਸਵੈਚਾਲਿਤ ਪ੍ਰੋਸਸਸਿੰਗ ਲਈ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਗਿਆ ਸੀ। + success_zero: ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰੋਸਸ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਸੀ। + success_some: ਇਹਨਾਂ ਵਿੱਚੋਂ %{count} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਗਿਆ ਸੀ। + success_all: ਸਭ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰੋਸੱਸ ਕੀਤੀ ਗਿਆ। + issues: ਸਾਹਮਣੇ ਆਈਆਂ ਸਮੱਸਿਆਵਾਂ ਦੇ ਵੇਰਵੇ ਹੇਠਾਂ ਦਿੱਤੇ ਗਏ ਹਨ। + summary_detail: + no_message_provided: ਗਲਤੀ ਦਾ ਕੋਈ ਵੀ ਸੁਨੇਹਾ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ + changes: + title: ਨਾਕਾਫ਼ੀ ਸਟਾਕ (%{count} ਆਰਡਰ) + explainer: ਇਹਨਾਂ ਆਰਡਰਾਂ ਨੂੰ ਪ੍ਰੋਸੱਸ ਕੀਤਾ ਗਿਆ ਸੀ ਪਰ ਕੁਝ ਬੇਨਤੀ ਕੀਤੀਆਂ ਆਈਟਮਾਂ ਲਈ ਨਾਕਾਫ਼ੀ ਸਟਾਕ ਉਪਲਬਧ ਸੀ + empty: + title: ਕੋਈ ਸਟਾਕ ਨਹੀਂ (%{count} ਆਰਡਰ) + explainer: ਇਹਨਾਂ ਆਰਡਰਾਂ ਨੂੰ ਪ੍ਰੋਸੱਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਿਆ ਕਿਉਂਕਿ ਕਿਸੇ ਵੀ ਬੇਨਤੀ ਕੀਤੀ ਆਈਟਮ ਲਈ ਕੋਈ ਸਟਾਕ ਉਪਲਬਧ ਨਹੀਂ ਸੀ + complete: + title: ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੋਸੱਸ ਕੀਤਾ ਹੋਇਆ (%{count} ਆਰਡਰ) + explainer: ਇਹਨਾਂ ਆਰਡਰਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਪੂਰੇ ਹੋਏ ਵਜੋਂ ਮਾਰਕ ਕੀਤਾ ਗਿਆ ਸੀ, ਅਤੇ ਇਸਲਈ ਉਹਨਾਂ ਨੂੰ ਅਛੂਤੇ ਛੱਡ ਦਿੱਤਾ ਗਿਆ ਸੀ + processing: + title: ਗਲਤੀ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ (%{count} ਆਰਡਰ) + explainer: ਇੱਕ ਗਲਤੀ ਦੇ ਕਾਰਨ ਇਹਨਾਂ ਆਰਡਰਾਂ ਦੀ ਸਵੈਚਾਲਿਤ ਪ੍ਰੋਸੈਸਿੰਗ ਅਸਫਲ ਰਹੀ। ਜਿੱਥੇ ਸੰਭਵ ਹੈ ਉਥੇ ਗਲਤੀ ਸੂਚੀਬੱਧ ਕੀਤੀ ਗਈ। + failed_payment: + title: ਅਸਫਲ ਭੁਗਤਾਨ (%{count} ਆਰਡਰ) + explainer: ਇੱਕ ਗਲਤੀ ਦੇ ਕਾਰਨ ਇਹਨਾਂ ਆਰਡਰਾਂ ਲਈ ਭੁਗਤਾਨ ਦੀ ਸਵੈਚਲਿਤ ਪ੍ਰੋਸਸਸਿੰਗ ਅਸਫਲ ਰਹੀ। ਜਿੱਥੇ ਸੰਭਵ ਹੈ ਉਥੇ ਗਲਤੀ ਸੂਚੀਬੱਧ ਕੀਤੀ ਗਈ। + other: + title: ਹੋਰ ਅਸਫਲਤਾ (%{count} ਆਰਡਰ) + explainer: ਕਿਸੇ ਅਣਜਾਣ ਕਾਰਨ ਕਰਕੇ ਇਹਨਾਂ ਆਰਡਰਾਂ ਦੀ ਸਵੈਚਲਿਤ ਪ੍ਰੋਸਸਸਿੰਗ ਅਸਫਲ ਰਹੀ। ਅਜਿਹਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ, ਜੇਕਰ ਤੁਸੀਂ ਇਹ ਵੇਖ ਰਹੇ ਹੋ ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। + home: "OFN" + title: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ" + welcome_to: "ਤੁਹਾਡਾ ਸਵਾਗਤ ਹੈ" + site_meta_description: "ਅਸੀਂ ਹੇਠਲੇ ਪੱਧਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ। ਉਹਨਾਂ ਕਿਸਾਨਾਂ ਅਤੇ ਉਤਪਾਦਕਾਂ ਨਾਲ ਜੋ ਆਪਣੀਆਂ ਕਹਾਣੀਆਂ ਮਾਣ ਅਤੇ ਸਚਾਈ ਨਾਲ ਦੱਸਣ ਲਈ ਤਿਆਰ ਹਨ। ਉਹਨਾਂ ਵਿਤਰਕਾਂ ਦੇ ਨਾਲ ਜੋ ਲੋਕਾਂ ਨੂੰ ਨਿਰਪੱਖ ਅਤੇ ਇਮਾਨਦਾਰੀ ਨਾਲ ਉਤਪਾਦਾਂ ਨਾਲ ਜੋੜਨ ਲਈ ਤਿਆਰ ਹਨ। ਖਰੀਦਦਾਰਾਂ ਦੇ ਨਾਲ ਜੋ ਵਿਸ਼ਵਾਸ ਕਰਦੇ ਹਨ ਕਿ ਬਿਹਤਰ ਹਫਤਾਵਾਰੀ ਖਰੀਦਦਾਰੀ ਫੈਸਲੇ..." + search_by_name: ਨਾਮ ਜਾਂ ਉਪਨਗਰ ਦੁਆਰਾ ਖੋਜੋ... + producers_join: ਆਸਟ੍ਰੇਲੀਆਈ ਉਤਪਾਦਕਾਂ ਦਾ ਹੁਣ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਸਵਾਗਤ ਹੈ। + charges_sales_tax: ਜੀਐਸਟੀ ਲਾਉਂਦੇ ਹਨ? + business_address: "ਕਾਰੋਬਾਰੀ ਪਤਾ" + print_invoice: "ਇਨਵੌਇਸ ਪ੍ਰਿੰਟ" + print_ticket: "ਟਿਕਟ ਪ੍ਰਿੰਟ ਕਰੋ" + select_ticket_printer: "ਟਿਕਟਾਂ ਲਈ ਪ੍ਰਿੰਟਰ ਚੁਣੋ" + send_invoice: "ਇਨਵੌਇਸ ਭੇਜੋ" + resend_confirmation: "ਪੁਸ਼ਟੀ ਮੁੜ ਭੇਜੋ" + view_order: "ਆਰਡਰ ਵੇਖੋ" + edit_order: "ਆਰਡਰ ਸੰਪਾਦਿਤ ਕਰੋ" + ship_order: "ਆਰਡਰ ਭੇਜੋ" + cancel_order: "ਆਰਡਰ ਰੱਦ ਕਰੋ" + confirm_send_invoice: "ਇਸ ਆਰਡਰ ਲਈ ਗਾਹਕ ਨੂੰ ਇੱਕ ਇਨਵੌਇਸ ਭੇਜਿਆ ਜਾਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + confirm_resend_order_confirmation: "ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਆਰਡਰ ਦੇ ਪੁਸ਼ਟੀਕਰਨ ਈਮੇਲ ਨੂੰ ਦੁਬਾਰਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + must_have_valid_business_number: "ਇਨਵੌਇਸ ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ %{enterprise_name} ਕੋਲ ਇੱਕ ਵੈਧ ABN ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" + invoice: "ਇਨਵੌਇਸ" + invoices: "ਇਨਵੌਇਸ" + file: "ਫਾਇਲ" + active: "ਸਕ੍ਰਿਅ" + download: "ਡਾਊਨਲੋਡ" + cancelled: "ਰੱਦ ਕੀਤਾ ਗਿਆ" + more: "ਹੋਰ" + say_no: "ਨਹੀਂ" + say_yes: "ਹਾਂ" + ongoing: ਜਾਰੀ + bill_address: ਬਿਲਿੰਗ ਪਤਾ + ship_address: ਸ਼ਿਪਿੰਗ ਪਤਾ + sort_order_cycles_on_shopfront_by: "ਸ਼ਾਪਫ੍ਰੰਟ ਤੇ ਇਸਦੇ ਅਧਾਰ ਤੇ ਆਰਡਰ ਸਾਈਕਲ ਨੂੰ ਕ੍ਰਮਬੱਧ ਕਰੋ" + required_fields: ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਤਾਰੇ ਨਾਲ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਗਿਆ ਹੈ + select_continue: ਚੁਣੋ ਅਤੇ ਜਾਰੀ ਰੱਖੋ + remove: Remove + collapse_all: ਸਾਰੇ ਨੂੰ ਛੋਟਾ ਕਰੋ + expand_all: ਸਾਰੇ ਨੂੰ ਵੱਡਾ ਕਰੋ + loading: ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ... + show_more: ਹੋਰ ਵਿਖਾਓ + show_all: ਸਾਰੇ ਵਿਖਾਓ + show_all_with_more: "ਸਾਰੇ ਵਿਖਾਓ (%{num} ਹੋਰ)" + cancel: ਰੱਦ ਕਰੋ + edit: ਸੰਪਾਦਿਤ ਕਰੋ + clone: ਕਲੋਨ + distributors: ਵਿਤਰਕ + distribution: ਵਿਤਰਣ + order_cycles: ਆਰਡਰ ਸਾਈਕਲ + bulk_order_management: ਥੋਕ ਆਰਡਰ ਪ੍ਰਬੰਧਨ + enterprises: ਐਂਟਰਪ੍ਰਾਈਜ਼ + enterprise_groups: ਸਮੂਹ + reports: ਰਿਪੋਰਟਾਂ + listing_reports: ਲਿਸਟ ਕੀਤੀਆਂ ਰਿਪੋਰਟਾਂ + variant_overrides: ਇਨਵੇਂਟਰੀ + import: ਇਮਪੋਰਟ + spree_products: ਸ੍ਪ੍ਰੀ ਉਤਪਾਦ + all: ਸਾਰੇ + current: ਮੌਜੂਦਾ + available: ਉਪਲੱਬਧ + dashboard: ਡੈਸ਼ਬੋਰਡ + undefined: ਅਪਰਿਭਾਸ਼ਿਤ + unused: ਅਣਵਰਤਿਆ + admin_and_handling: ਪ੍ਰਸ਼ਾਸਨ ਅਤੇ ਸੰਚਾਲਨ + profile: ਪ੍ਰੋਫਾਈਲ + supplier_only: ਸਿਰਫ਼ ਸਪਲਾਇਰ + has_shopfront: ਸ਼ਾਪਫਰੰਟ ਹੈ + weight: ਭਾਰ + volume: ਮਾਤਰਾ + items: ਵਸਤੂਆਂ + summary: ਸੰਖੇਪ + detailed: ਵਿਸਤ੍ਰਿਤ + updated: ਅੱਪਡੇਟ ਕੀਤਾ + 'yes': "ਹਾਂ" + 'no': "ਨਹੀਂ" + y: 'ਹਾਂ' + n: 'ਨਹੀਂ' + powered_by: ਇਨਹਾਂ ਦੁਆਰਾ ਸੰਚਾਲਿਤ + blocked_cookies_alert: "ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡਾ ਬ੍ਰਾਊਜ਼ਰ ਇਸ ਸ਼ਾਪਫ੍ਰੰਟ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਕੂਕੀਜ਼ ਨੂੰ ਬਲੌਕ ਕਰ ਰਿਹਾ ਹੈ। ਕੂਕੀਜ਼ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਅਤੇ ਪੰਨੇ ਨੂੰ ਦੁਬਾਰਾ ਲੋਡ ਕਰਨ ਲਈ ਹੇਠਾਂ ਕਲਿੱਕ ਕਰੋ।" + allow_cookies: "ਕੂਕੀਜ਼ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ" + none: ਕੋਈ ਨਹੀਂ + notes: ਨੋਟ + error: ਗਲਤੀ + voucher: ਵਾਊਚਰ + processing_payment: "ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਕੀਤੀ ਜਾ ਰਿਹਾ ਹੈ..." + no_pending_payments: "ਕੋਈ ਬਕਾਇਆ ਭੁਗਤਾਨ ਨਹੀਂ ਹੈ" + invalid_payment_state: "ਅਵੈਧ ਭੁਗਤਾਨ ਸਥਿਤੀ: %{state}" + filter_results: ਨਤੀਜੇ ਫਿਲਟਰ ਕਰੋ + clear_filters: ਫਿਲਟਰ ਸਾਫ਼ ਕਰੋ + quantity: ਮਾਤਰਾ + pick_up: ਪਿਕ ਅਪ + ok: ਠੀਕ ਹੈ + copy: ਕਾਪੀ + change_my_password: "ਮੇਰਾ ਪਾਸਵਰਡ ਬਦਲੋ" + update_password: "ਪਾਸਵਰਡ ਅੱਪਡੇਟ ਕਰੋ" + password_confirmation: ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ + reset_password_token: ਪਾਸਵਰਡ ਟੋਕਨ ਨੂੰ ਰੀਸੈਟ ਕਰੋ + expired: ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ, ਕਿਰਪਾ ਕਰਕੇ ਨਵੇਂ ਲਈ ਬੇਨਤੀ ਕਰੋ + back_to_payments_list: "ਭੁਗਤਾਨ ਸੂਚੀ ਤੇ ਵਾਪਸ" + maestro_or_solo_cards: "ਮਾਏਸਟ੍ਰੋ/ਸੋਲੋ ਕਾਰਡ" + backordered: "ਬੈਕਆਰਡਰ ਕੀਤਾ ਗਿਆ" + on_hand: "ਹੱਥ ਵਿਚ" + on hand: "ਹੱਥ ਵਿਚ" + ship: "ਸ਼ਿਪ" + shipping_category: "ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀ" + height: "ਉਚਾਈ" + width: "ਚੌੜਾਈ" + depth: "ਡੂੰਘਾਈ" + payment_could_not_process: "ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਿਆ" + payment_could_not_complete: "ਭੁਗਤਾਨ ਪੂਰਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" + actions: + create_and_add_another: "ਬਣਾਓ ਅਤੇ ਦੂਜਾ ਜੋੜੋ" + create: "ਬਣਾਓ" + cancel: "ਰੱਦ ਕਰੋ" + resume: "ਮੁੜ ਤੋਂ ਸ਼ੁਰੂ ਕਰੋ" + save: "ਸੇਵ ਕਰੋ" + edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + update: "ਅੱਪਡੇਟ" + delete: "ਹਟਾਓ" + add: "ਜੋੜੋ" + cut: "ਕੱਟੋ" + paste: "ਚਿਪਕਾਓ" + destroy: "ਨਾਸ਼ ਕਰੋ" + rename: "ਨਾਮ ਬਦਲੋ" + admin: + products_page: + title: ਉਤਪਾਦ + filters: + categories: + title: ਸ਼੍ਰੇਣੀਆਂ + selected_categories: "%{count} ਸ਼੍ਰੇਣੀਆਂ ਚੁਣੀਆਂ ਗਈਆਂ" + producers: + title: ਉਤਪਾਦਕ + selected_producers: "%{count} ਉਤਪਾਦਕ ਚੁਣੇ ਗਏ" + per_page: "ਪ੍ਰਤੀ ਪੰਨਾ %{count} ਆਈਟਮਾਂ" + colums: ਕਾਲਮ + columns: + name: ਨਾਮ + unit: ਯੂਨਿਟ + price: '"ਕੀਮਤ"' + producer: ਉਤਪਾਦਕ + category: ਸ਼੍ਰੇਣੀ + sku: SKU + on_hand: "ਹੱਥ ਵਿਚ" + on_demand: "ਡਿਮਾਂਡ ਤੇ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + inherits_properties: "ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ?" + import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" + columns_selector: + unit: ਯੂਨਿਟ + price: '"ਕੀਮਤ"' + producer: ਉਤਪਾਦਕ + category: ਸ਼੍ਰੇਣੀ + sku: SKU + on_hand: "ਹੱਥ ਵਿਚ" + on_demand: "ਡਿਮਾਂਡ ਤੇ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + inherits_properties: "ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ?" + import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" + actions: + edit: ਸੰਪਾਦਿਤ ਕਰੋ + clone: ਕਲੋਨ + adjustments: + skipped_changing_canceled_order: "ਤੁਸੀਂ ਰੱਦ ਕੀਤੇ ਆਰਡਰ ਨੂੰ ਬਦਲ ਨਹੀਂ ਸਕਦੇ ਹੋ।" + begins_at: ਇਸਤੇ ਸ਼ੁਰੂ ਹੋਵੇਗਾ + begins_on: ਇਸਤੇ ਸ਼ੁਰੂ ਹੋਵੇਗਾ + bill_address: "ਬਿੱਲ ਪਤਾ" + ship_address: "ਸ਼ਿਪ ਪਤਾ" + customer: ਗਾਹਕ + date: ਮਿਤੀ + email: ਈਮੇਲ + ends_at: ਇਸਤੇ ਖਤਮ ਹੋਵੇਗਾ + ends_on: ਇਸਤੇ ਖਤਮ ਹੋਵੇਗਾ + name: ਨਾਂ + first_name: ਪਹਿਲਾ ਨਾਂ + last_name: ਆਖਰੀ ਨਾਂ + on_hand: ਹੱਥ ਵਿਚ + on_demand: ਡਿਮਾਂਡ ਤੇ + on_demand?: ਡਿਮਾਂਡ ਤੇ? + order_cycle: ਆਰਡਰ ਸਾਈਕਲ + payment: ਭੁਗਤਾਨ + payment_method: ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ + phone: ਫੋਨ + price: '"ਕੀਮਤ"' + producer: ਉਤਪਾਦਕ + image: ਤਸਵੀਰ + product: ਉਤਪਾਦ + quantity: ਮਾਤਰਾ + schedule: ਸਮਾਸੂਚੀ + shipping: ਸ਼ਿਪਿੰਗ + shipping_method: ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ + shop: ਸ਼ਾਪ + sku: SKU + status_state: ਸਥਿਤੀ + tags: ਟੈਗ + variant: ਵੇਰੀਐਂਟ + weight: ਭਾਰ + volume: ਮਾਤਰਾ + items: ਵਸਤੂਆਂ + select_all: ਸਭ ਨੂੰ ਚੁਣੋ + quick_search: ਤੇਜ਼ ਖੋਜ + clear_all: ਸਾਰੇ ਮਿਟਾਓ + start_date: "ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਮਿਤੀ" + end_date: "ਸਮਾਪਤੀ ਦੀ ਮਿਤੀ" + unsaved_changes: "ਤੁਹਾਡੇ ਕੋਲ ਸੇਵ ਨਾ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਹਨ" + form_invalid: "ਫਾਰਮ ਵਿੱਚ ਗੁੰਮ ਜਾਂ ਅਵੈਧ ਖੇਤਰ ਹਨ" + clear_filters: ਫਿਲਟਰ ਮਿਟਾਓ + clear: ਮਿਟਾਓ + save: ਸੇਵ ਕਰੋ + cancel: ਰੱਦ ਕਰੋ + back: ਵਾਪਸ + show_more: ਹੋਰ ਵਿਖਾਓ + choose: "ਚੁਣੋ..." + please_select: ਕਿਰਪਾ ਕਰਕੇ ਚੁਣੋ... + column_save_as_default: ਡਿਫੌਲਟ ਦੇ ਤੌਰ ਤੇ ਸੇਵ ਕਰੋ + columns: ਕਾਲਮ + actions: ਸੰਪਾਦਿਤ ਕਰੋ + viewing: "ਵੇਖ ਰਹੇ ਹਾਂ: %{current_view_name}" + description: ਵਰਣਨ + whats_this: ਇਹ ਕੀ ਹੈ? + tag_has_rules: "ਇਸ ਟੈਗ ਲਈ ਮੌਜੂਦਾ ਨਿਯਮ: %{num}" + has_one_rule: "ਇੱਕ ਨਿਯਮ ਹੈ" + has_n_rules: "ਇਸ ਵਿੱਚ %{num} ਨਿਯਮ ਹਨ" + unsaved_confirm_leave: "ਇਸ ਪੇਜ ਵਿੱਚ ਕੁਝ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਸੇਵ ਕੀਤੇ ਬਿਨਾਂ ਜਾਰੀ ਰੱਖੀਏ?" + available_units: "ਉਪਲੱਬਧ ਯੂਨਿਟਾਂ" + shopfront_settings: + embedded_shopfront_settings: "ਸ਼ਾਪਫਰੰਟ ਦੀਆਂ ਏਮਬੈਡ ਕੀਤੀਆਂ ਸੈਟਿੰਗਾਂ" + enable_embedded_shopfronts: "ਏਮਬੈਡਡ ਸ਼ਾਪਫਰੰਟਸ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ" + embedded_shopfronts_whitelist: "ਬਾਹਰੀ ਡੋਮੇਨ ਵਾਈਟਲਿਸਟ" + terms_of_service_files: + create: + select_file: "ਕਿਰਪਾ ਕਰਕੇ ਪਹਿਲਾਂ ਇੱਕ ਫਾਈਲ ਚੁਣੋ।" + show: + title: "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੀਆਂ ਫਾਈਲਾਂ" + no_files: "ਸੇਵਾ ਦੀਆਂ ਕੋਈ ਸ਼ਰਤਾਂ ਹਾਲੇ ਤੱਕ ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।" + current_terms_html: "ਮੌਜੂਦਾ %{tos_link} ਵੇਖੋ। ਅੱਪਲੋਡ ਸਮਾਂ: %{datetime}।" + terms_of_service: "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ" + delete: "ਫਾਇਲ ਹਟਾਓ" + confirm_delete: "ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਮੌਜੂਦਾ ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੀਆਂ ਫਾਈਲਾਂ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + attachment: "ਅਟੈਚਮੈਂਟ" + create_terms_of_service: "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੀ ਫਾਈਲ ਬਣਾਓ" + number_localization: + number_localization_settings: "ਨੰਬਰ ਸਥਾਨੀਕਰਨ ਸੈਟਿੰਗਾਂ" + enable_localized_number: "ਅੰਤਰਰਾਸ਼ਟਰੀ ਹਜ਼ਾਰ/ਦਸ਼ਮਲਵ ਵਿਭਾਜਕ ਤਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ" + customers: + index: + bill_address: "ਬਿਲਿੰਗ ਪਤਾ" + ship_address: "ਸ਼ਿਪਿੰਗ ਪਤਾ" + edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + enterprise_fees: + index: + fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + name: "ਨਾਮ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + products: + index: + unit: ਯੂਨਿਟ + category: ਸ਼੍ਰੇਣੀ + tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ + inherits_properties?: ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ? + products_v3: + filters: + producers: + label: ਉਤਪਾਦਕ + categories: + label: ਸ਼੍ਰੇਣੀਆਂ + product_import: + model: + blank: ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ + index: + import: ਇਮਪੋਰਟ + import: + import: ਇਮਪੋਰਟ + save: ਸੇਵ ਕਰੋ + product_headings: + producer: ਉਤਪਾਦਕ + sku: SKU + name: ਨਾਮ + category: ਸ਼੍ਰੇਣੀ + description: ਵਰਣਨ + variant_unit_name: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਦਾ ਨਾਮ + price: '"ਕੀਮਤ"' + on_hand: ਹੱਥ ਵਿਚ + on_demand: ਡਿਮਾਂਡ ਤੇ + shipping_category: ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀ + tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ + variant_overrides: + index: + title: ਇਨਵੇਂਟਰੀ + add: ਜੋੜੋ + orders: + bulk_management: + page_title: "ਥੋਕ ਆਰਡਰ ਪ੍ਰਬੰਧਨ" + all: "ਸਾਰੇ" + enterprises: + index: + title: ਐਂਟਰਪ੍ਰਾਈਜ਼ + form: + business_details: + business_address_legend: "ਕਾਰੋਬਾਰੀ ਪਤਾ" + contact: + name: ਨਾਮ + phone: ਫੋਨ + enterprise_fees: + name: ਨਾਮ + fee_type: ਫੀਸ ਦੀ ਕਿਸਮ + payment_methods: + name: ਨਾਮ + primary_details: + name: ਨਾਮ + groups: ਸਮੂਹ + producer: ਉਤਪਾਦਕ + none: ਕੋਈ ਨਹੀਂ + shipping_methods: + name: "ਨਾਮ" + shop_preferences: + shopfront_sort_by_category_placeholder: "ਸ਼੍ਰੇਣੀ" + shopfront_sort_by_producer_placeholder: "ਉਤਪਾਦਕ" + stripe_connect: + confirm_modal: + cancel: ਰੱਦ ਕਰੋ + vouchers: + customers: ਗਾਹਕ + white_label: + white_label_logo_link_label: "ਸ਼ੌਪਫਰੰਟ ਵਿੱਚ ਵਰਤੇ ਗਏ ਲੋਗੋ ਦਾ ਲਿੰਕ" + admin_index: + name: ਨਾਮ + producer: ਉਤਪਾਦਕ + welcome: + profile: 'ਪ੍ਰੋਫਾਈਲ' + order_cycles: + new: + create: "ਬਣਾਓ" + cancel: "ਰੱਦ ਕਰੋ" + edit: + save: "ਸੇਵ ਕਰੋ" + cancel: "ਰੱਦ ਕਰੋ" + incoming: + supplier: "ਸਪਲਾਇਰ" + products: "ਉਤਪਾਦ" + save: "ਸੇਵ ਕਰੋ" + cancel: "ਰੱਦ ਕਰੋ" + outgoing: + products: "ਉਤਪਾਦ" + tags: "ਟੈਗ" + save: "ਸੇਵ ਕਰੋ" + cancel: "ਰੱਦ ਕਰੋ" + checkout_options: + cancel: "ਰੱਦ ਕਰੋ" + save: "ਸੇਵ ਕਰੋ" + select_all: "ਸਭ ਨੂੰ ਚੁਣੋ" + exchange_form: + remove: 'Remove' + form: + supplier: ਸਪਲਾਇਰ + products: ਉਤਪਾਦ + tags: ਟੈਗ + index: + schedule: ਸਮਾਸੂਚੀ + name_and_timing_form: + name: ਨਾਮ + simple_form: + customer_instructions: ਗਾਹਕ ਨਿਰਦੇਸ਼ + products: ਉਤਪਾਦ + tags: ਟੈਗ + date_warning: + cancel: ਰੱਦ ਕਰੋ + reports: + table: + headings: + first_name: "ਪਹਿਲਾ ਨਾਂ" + last_name: "ਆਖਰੀ ਨਾਂ" + supplier: "ਸਪਲਾਇਰ" + product: "ਉਤਪਾਦ" + variant: "ਵੇਰੀਐਂਟ" + quantity: "ਮਾਤਰਾ" + price: "\"ਕੀਮਤ\"" + subscriptions: + autocomplete: + quantity: "ਮਾਤਰਾ" + add: "ਜੋੜੋ" + details: + credit_card: ਕਰੇਡਿਟ ਕਾਰਡ + review: + products: ਉਤਪਾਦ + orders: + number: ਨੰਬਰ + number: "ਨੰਬਰ" + vouchers: + new: + back: ਵਾਪਸ + save: ਸੇਵ ਕਰੋ + voucher_amount: ਰਕਮ + checkout: + step1: + contact_information: + email: + label: ਈਮੇਲ + phone: + label: ਫੋਨ ਨੰਬਰ + billing_address: + first_name: + label: ਪਹਿਲਾ ਨਾਂ + last_name: + label: ਆਖਰੀ ਨਾਂ + address: + state_id: + label: ਸਥਿਤੀ + step2: + form: + card_month: + label: ਮਹੀਨਾ + card_year: + label: ਸਾਲ + step3: + delivery_details: + edit: ਸੰਪਾਦਿਤ ਕਰੋ + payment_method: + edit: ਸੰਪਾਦਿਤ ਕਰੋ + order: + edit: ਸੰਪਾਦਿਤ ਕਰੋ + shared: + mailers: + powered_by: + open_food_network: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ" + menu: + signed_in: + profile: "ਪ੍ਰੋਫਾਈਲ" + invoice_column_price: "\"ਕੀਮਤ\"" + invoice_column_tax_rate: "ਟੈਕਸ ਦੀ ਦਰ" + menu_3_title: "ਉਤਪਾਦਕ" + menu_4_title: "ਸਮੂਹ" + footer_email: "ਈਮੇਲ" + name: ਨਾਮ + first_name: ਪਹਿਲਾ ਨਾਂ + last_name: ਆਖਰੀ ਨਾਂ + email: ਈਮੇਲ + phone: ਫੋਨ + state: ਸਥਿਤੀ + description: "ਵਰਣਨ" + label_shop: "ਸ਼ਾਪ" + label_producer: "ਉਤਪਾਦਕ" + label_producers: "ਉਤਪਾਦਕ" + label_groups: "ਸਮੂਹ" + label_more: "ਹੋਰ ਵਿਖਾਓ" + checkout_payment: ਭੁਗਤਾਨ + checkout_shipping_price: ਸ਼ਿਪਿੰਗ + products: "ਉਤਪਾਦ" + email_confirm_customer_greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + email_confirm_shop_greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + email_order_summary_sku: "SKU" + email_order_summary_price: "\"ਕੀਮਤ\"" + shopping_tabs_shop: "ਸ਼ਾਪ" + shopping_tabs_producers: "ਉਤਪਾਦਕ" + shopping_tabs_groups: "ਸਮੂਹ" + products_clear: ਮਿਟਾਓ + products_filter_clear: "ਮਿਟਾਓ" + groups_title: ਸਮੂਹ + producers_title: ਉਤਪਾਦਕ + producer: ਉਤਪਾਦਕ + products_description: ਵਰਣਨ + products_variant: ਵੇਰੀਐਂਟ + products_quantity: ਮਾਤਰਾ + products_producer: "ਉਤਪਾਦਕ" + products_price: "\"ਕੀਮਤ\"" + sell_producers: "ਉਤਪਾਦਕ" + sell_groups: "ਸਮੂਹ" + orders_form_update_cart: "ਅੱਪਡੇਟ" + orders_show_cancelled: "ਰੱਦ ਕੀਤਾ ਗਿਆ" + password: ਪਾਸਵਰਡ + error_required: "ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ" + registration: + steps: + contact: + phone_field: "ਫੋਨ ਨੰਬਰ" + images: + back: "ਵਾਪਸ" + back: "ਵਾਪਸ" + transaction_date: "ਮਿਤੀ" + admin_enterprise_relationships_button_create: "ਬਣਾਓ" + admin_enterprise_groups_name: "ਨਾਮ" + admin_enterprise_groups_enterprise: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + admin_enterprise_groups_contact_state_id: "ਸਥਿਤੀ" + create: "ਬਣਾਓ" + supplier: "ਸਪਲਾਇਰ" + product_name: "\"ਉਤਪਾਦ ਦਾ ਨਾਂ\"" + fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + tags: "ਟੈਗ" + update: "ਅੱਪਡੇਟ" + delete: ਹਟਾਓ + product: "ਉਤਪਾਦ" + price: "\"ਕੀਮਤ\"" + spree_admin_enterprises_hubs_name: "ਨਾਮ" + spree_admin_supplier: ਸਪਲਾਇਰ + spree_admin_product_category: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ + order_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + admin_share_state: "ਸਥਿਤੀ" + report_customers_supplier: "ਸਪਲਾਇਰ" + report_customers_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + report_customers: ਗਾਹਕ + report_producers: "ਉਤਪਾਦਕ" + report_order_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + report_columns: ਕਾਲਮ + report_enterprises: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + report_header_order_cycle: ਆਰਡਰ ਸਾਈਕਲ + report_header_email: ਈਮੇਲ + report_header_first_name: ਪਹਿਲਾ ਨਾਂ + report_header_last_name: ਆਖਰੀ ਨਾਂ + report_header_phone: ਫੋਨ + report_header_billing_address: ਬਿਲਿੰਗ ਪਤਾ + report_header_shipping: ਸ਼ਿਪਿੰਗ + report_header_shipping_method: ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ + report_header_date: ਮਿਤੀ + report_header_tags: ਟੈਗ + report_header_items: ਵਸਤੂਆਂ + report_header_tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + report_header_enterprise_fee_name: ਨਾਮ + report_header_customer: ਗਾਹਕ + report_header_customer_first_name: ਪਹਿਲਾ ਨਾਂ + report_header_customer_last_name: ਆਖਰੀ ਨਾਂ + report_header_product: ਉਤਪਾਦ + report_header_quantity: ਮਾਤਰਾ + report_header_variant: ਵੇਰੀਐਂਟ + report_header_variant_unit: '"ਵੇਰੀਐਂਟ ਯੂਨਿਟ"' + report_header_supplier: ਸਪਲਾਇਰ + report_header_producer: ਉਤਪਾਦਕ + report_header_unit: ਯੂਨਿਟ + report_header_payment_method: ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ + report_header_price: '"ਕੀਮਤ"' + report_header_weight: ਭਾਰ + report_header_height: ਉਚਾਈ + report_header_width: ਚੌੜਾਈ + report_header_depth: ਡੂੰਘਾਈ + report_header_payment_state: ਭੁਗਤਾਨ ਸਥਿਤੀ + report_header_sku: SKU + report_header_amount: ਰਕਮ + shipping: "ਸ਼ਿਪਿੰਗ" + amount: "ਰਕਮ" + invoice_file: "ਫਾਇਲ" + js: + unsaved_changes: ਤੁਹਾਡੇ ਕੋਲ ਸੇਵ ਨਾ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਹਨ + error: ਗਲਤੀ + profile: ਪ੍ਰੋਫਾਈਲ + shop: ਸ਼ਾਪ + admin: + modals: + cancel: "ਰੱਦ ਕਰੋ" + panels: + enterprise_producer: + producer: ਉਤਪਾਦਕ + enterprise_status: + description: ਵਰਣਨ + order_cycles: + schedules: + available: "ਉਪਲੱਬਧ" + shopfront: + variant: + add_to_cart: "ਜੋੜੋ" + variant_overrides: + on_demand: + 'yes': "ਹਾਂ" + 'no': "ਨਹੀਂ" + enterprises: + producer: "ਉਤਪਾਦਕ" + order_management: + reports: + enterprise_fee_summaries: + report: + none: "ਕੋਈ ਨਹੀਂ" + enterprise_fee_summary: + fee_calculated_on_transfer_through_all: "ਸਾਰੇ" + formats: + csv: + header: + fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + customer_name: "ਗਾਹਕ" + tax_category_name: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + html: + header: + fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + customer_name: "ਗਾਹਕ" + tax_category_name: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + report: + none: "ਕੋਈ ਨਹੀਂ" + payment: "ਭੁਗਤਾਨ" + payment_method: "ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ" + category: "ਸ਼੍ਰੇਣੀ" + import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" + spree: + all: "ਸਾਰੇ" + category: "ਸ਼੍ਰੇਣੀ" + more: "ਹੋਰ" + no_pending_payments: "ਕੋਈ ਬਕਾਇਆ ਭੁਗਤਾਨ ਨਹੀਂ ਹੈ" + none: "ਕੋਈ ਨਹੀਂ" + quantity: "ਮਾਤਰਾ" + on_demand: "ਡਿਮਾਂਡ ਤੇ" + on_hand: "ਹੱਥ ਵਿਚ" + price: "\"ਕੀਮਤ\"" + edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + delete: "ਹਟਾਓ" + billing_address: "ਬਿਲਿੰਗ ਪਤਾ" + shipping_address: "ਸ਼ਿਪਿੰਗ ਪਤਾ" + first_name: "ਪਹਿਲਾ ਨਾਂ" + last_name: "ਆਖਰੀ ਨਾਂ" + state: "ਸਥਿਤੀ" + phone: "ਫੋਨ" + update: "ਅੱਪਡੇਟ" + credit_card: "ਕਰੇਡਿਟ ਕਾਰਡ" + password: "ਪਾਸਵਰਡ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + shipping_method: "ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ" + payment: "ਭੁਗਤਾਨ" + name: "ਨਾਮ" + description: "ਵਰਣਨ" + active: "ਸਕ੍ਰਿਅ" + nore: "ਹੋਰ" + create: "ਬਣਾਓ" + amount: "ਰਕਮ" + email: ਈਮੇਲ + date: "ਮਿਤੀ" + inventory: ਇਨਵੇਂਟਰੀ + payment_method: "ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ" + sku: "SKU" + actions: + update: "ਅੱਪਡੇਟ" + cancel: "ਰੱਦ ਕਰੋ" + shared: + payments_list: + amount: "ਰਕਮ" + payment_method: "ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ" + payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" + errors: + messages: + blank: "ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ" + admin: + subscriptions: + number: "ਨੰਬਰ" + tab: + dashboard: "ਡੈਸ਼ਬੋਰਡ" + bulk_order_management: "ਥੋਕ ਆਰਡਰ ਪ੍ਰਬੰਧਨ" + products: "ਉਤਪਾਦ" + variant_overrides: "ਇਨਵੇਂਟਰੀ" + reports: "ਰਿਪੋਰਟਾਂ" + order_cycles: "ਆਰਡਰ ਸਾਈਕਲ" + enterprises: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + groups: "ਸਮੂਹ" + properties: + index: + name: "ਨਾਮ" + form: + name: "ਨਾਮ" + return_authorizations: + index: + amount: "ਰਕਮ" + form: + product: "ਉਤਪਾਦ" + amount: "ਰਕਮ" + orders: + index: + ship: "ਸ਼ਿਪ" + edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + resend_confirmation: "ਪੁਸ਼ਟੀ ਮੁੜ ਭੇਜੋ" + sortable_header: + payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" + shipment_state: "ਸ਼ਿਪਮੈਂਟ ਦੀ ਸਥਿਤੀ" + completed_at: "ਇਸ ਸਮੇਂ ਪੂਰਾ ਹੋਇਆ" + number: "ਨੰਬਰ" + state: "ਸਥਿਤੀ" + email: "ਗਾਹਕ ਦਾ ਈਮੇਲ" + invoice: + shipping: "ਸ਼ਿਪਿੰਗ" + payments_list: + amount: "ਰਕਮ" + form: + distribution_fields: + title: "ਵਿਤਰਣ" + overview: + order_cycles: + order_cycles: "ਆਰਡਰ ਸਾਈਕਲ" + shipping_methods: + index: + name: "ਨਾਮ" + form: + categories: "ਸ਼੍ਰੇਣੀਆਂ" + tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + payment_methods: + index: + name: "ਨਾਮ" + active: "ਸਕ੍ਰਿਅ" + active_yes: "ਹਾਂ" + active_no: "ਨਹੀਂ" + stripe_connect: + enterprise_select_placeholder: ਚੁਣੋ... + form: + name: "ਨਾਮ" + description: "ਵਰਣਨ" + active: "ਸਕ੍ਰਿਅ" + active_yes: "ਹਾਂ" + active_no: "ਨਹੀਂ" + tags: "ਟੈਗ" + products: + new: + supplier: "ਸਪਲਾਇਰ" + product_name: "\"ਉਤਪਾਦ ਦਾ ਨਾਂ\"" + price: "\"ਕੀਮਤ\"" + on_hand: "ਹੱਥ ਵਿਚ" + on_demand: "ਡਿਮਾਂਡ ਤੇ" + image: "ਤਸਵੀਰ" + index: + products_head: + name: ਨਾਮ + unit: ਯੂਨਿਟ + category: ਸ਼੍ਰੇਣੀ + tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ + inherits_properties?: ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ? + import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" + product_name: '"ਉਤਪਾਦ ਦਾ ਨਾਂ"' + primary_taxon_form: + product_category: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ + users: + index: + email: "ਈਮੇਲ" + form: + email: "ਈਮੇਲ" + password: "ਪਾਸਵਰਡ" + variants: + index: + sku: "SKU" + price: "\"ਕੀਮਤ\"" + form: + sku: "SKU" + price: "\"ਕੀਮਤ\"" + autocomplete: + producer_name: "ਉਤਪਾਦਕ" + unit: "ਯੂਨਿਟ" + shared: + configuration_menu: + terms_of_service: "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ" + sortable_header: + name: "ਨਾਮ" + number: "ਨੰਬਰ" + completed_at: "ਇਸ ਸਮੇਂ ਪੂਰਾ ਹੋਇਆ" + state: "ਸਥਿਤੀ" + payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" + shipment_state: "ਸ਼ਿਪਮੈਂਟ ਦੀ ਸਥਿਤੀ" + email: "ਈਮੇਲ" + billing_address_name: "ਨਾਮ" + shipment_mailer: + shipped_email: + dear_customer: "ਪਿਆਰੇ ਗਾਹਕ," + shipment_summary: "ਸ਼ਿਪਮੈਂਟ ਸੰਖੇਪ" + subject: "ਸ਼ਿਪਮੈਂਟ ਬਾਰੇ ਸੂਚਨਾ" + thanks: "ਤੁਹਾਡੇ ਕਾਰੋਬਾਰ ਦੇਣ ਲਈ ਧੰਨਵਾਦ।" + track_information: "ਟਰੈਕਿੰਗ ਜਾਣਕਾਰੀ: %{tracking}" + track_link: "ਟਰੈਕਿੰਗ ਲਿੰਕ: %{url}" + paypal: + refund_amount: "ਰਕਮ" + users: + open_orders: + shop: ਸ਼ਾਪ + items: ਵਸਤੂਆਂ + edit: ਸੰਪਾਦਿਤ ਕਰੋ + cancel: ਰੱਦ ਕਰੋ + past_orders: + shop: ਸ਼ਾਪ + completed_at: ਇਸ ਸਮੇਂ ਪੂਰਾ ਹੋਇਆ + items: ਵਸਤੂਆਂ + cancelled: ਰੱਦ ਕੀਤਾ ਗਿਆ From 1903747c0ad49567838e3fa108608dfe74041f26 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 21 Dec 2023 14:55:38 +1100 Subject: [PATCH 078/219] Send semantic id when connecting enterprise to app It allows us to list enterprises from any OFN server, not just ofn-au. The app could even accept any enterprise on any server providing its data in the DFC format. --- app/jobs/connect_app_job.rb | 2 +- .../stores_connection_data_on_the_app.yml | 16 ++++---- spec/jobs/connect_app_job_spec.rb | 38 +++++++++++++++---- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/app/jobs/connect_app_job.rb b/app/jobs/connect_app_job.rb index 2db9826508..9ecfad4cd7 100644 --- a/app/jobs/connect_app_job.rb +++ b/app/jobs/connect_app_job.rb @@ -8,7 +8,7 @@ class ConnectAppJob < ApplicationJob event = "connect-app" enterprise = app.enterprise payload = { - enterprise_id: enterprise.id, + '@id': DfcBuilder.urls.enterprise_url(enterprise.id), access_token: token, } diff --git a/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml b/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml index 044cb90175..42a832a80b 100644 --- a/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml +++ b/spec/fixtures/vcr_cassettes/ConnectAppJob/stores_connection_data_on_the_app.yml @@ -5,8 +5,8 @@ http_interactions: uri: https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise body: encoding: UTF-8 - string: '{"id":"6efbbeea-4078-4bb5-88b1-c8dbf599c520","at":"2023-12-14 12:13:39 - +1100","event":"connect-app","data":{"enterprise_id":23,"access_token":"b5fa8c7fa1dd5331a2111fcc907040d842c5eb928c512e43"}}' + string: '{"id":"27bc9d0a-d95c-4a36-9b16-01fdd8a82b51","at":"2023-12-21 14:54:28 + +1100","event":"connect-app","data":{"@id":"http://test.host/api/dfc/enterprises/3","access_token":"12345"}}' headers: User-Agent: - openfoodnetwork_webhook/1.0 @@ -24,15 +24,15 @@ http_interactions: Server: - nginx Date: - - Thu, 14 Dec 2023 01:13:41 GMT + - Thu, 21 Dec 2023 03:54:33 GMT Content-Type: - - text/html; charset=utf-8 + - application/json; charset=utf-8 Content-Length: - - '35' + - '141' Connection: - keep-alive Etag: - - W/"23-GW39X6dSljjgz4GPY7ICa+eNupE" + - W/"8d-Lz10bce6zwT2C429xIkj52OBWyk" Vary: - Accept-Encoding Strict-Transport-Security: @@ -49,6 +49,6 @@ http_interactions: - same-origin body: encoding: UTF-8 - string: '{"link":"https://example.net/edit"}' - recorded_at: Thu, 14 Dec 2023 01:13:40 GMT + string: '{"link":"https://example.net/update","destroy":"https://n8n.openfoodnetwork.org.uk/webhook/remove-enterprise?id=recjBXXXXXXXXXXXX&key=12345"}' + recorded_at: Thu, 21 Dec 2023 03:54:33 GMT recorded_with: VCR 6.2.0 diff --git a/spec/jobs/connect_app_job_spec.rb b/spec/jobs/connect_app_job_spec.rb index 9433c0d71c..8491a0004d 100644 --- a/spec/jobs/connect_app_job_spec.rb +++ b/spec/jobs/connect_app_job_spec.rb @@ -2,18 +2,40 @@ require 'spec_helper' -RSpec.describe ConnectAppJob, type: :job, vcr: true do - subject { ConnectAppJob.new(app, token) } +RSpec.describe ConnectAppJob, type: :job do + subject { ConnectAppJob.new(app, user.spree_api_key) } - let(:app) { ConnectedApp.create!(enterprise: ) } - let(:enterprise) { create(:enterprise) } - let(:token) { enterprise.owner.spree_api_key } + let(:app) { ConnectedApp.new(enterprise: ) } + let(:enterprise) { build(:enterprise, id: 3, owner: user) } + let(:user) { build(:user, spree_api_key: "12345") } + let(:url) { "https://n8n.openfoodnetwork.org.uk/webhook/regen/connect-enterprise" } - before { enterprise.owner.generate_api_key } + it "sends a semantic id and access token" do + stub_request(:post, url).to_return(body: '{}') - it "stores connection data on the app" do subject.perform_now - expect(app.data).to eq({ "link" => "https://example.net/edit" }) + request = a_request(:post, url).with( + body: hash_including( + { + data: { + '@id': "http://test.host/api/dfc/enterprises/3", + access_token: "12345", + } + } + ) + ) + expect(request).to have_been_made.once + end + + it "stores connection data on the app", vcr: true do + subject.perform_now + + expect(app.data).to eq( + { + "link" => "https://example.net/update", + "destroy" => "https://n8n.openfoodnetwork.org.uk/webhook/remove-enterprise?id=recjBXXXXXXXXXXXX&key=12345", + } + ) end end From 82d3199cf0dfebdbad824e947740bdee2d6dd498 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 21 Dec 2023 16:23:27 +1100 Subject: [PATCH 079/219] Update Swagger config to new naming Avoids deprecation warnings: ``` DEPRECATION WARNING: swagger_root= is deprecated and will be removed from rswag-api 3.0 (use openapi_root= instead) (called from block in
at config/initializers/rswag_api.rb:8) DEPRECATION WARNING: Rswag::Ui: WARNING: The method will be renamed to "openapi_endpoint" in v3.0 (called from block in
at config/initializers/rswag_ui.rb:12) DEPRECATION WARNING: Rswag::Ui: WARNING: The method will be renamed to "openapi_endpoint" in v3.0 (called from block in
at config/initializers/rswag_ui.rb:13) ``` --- config/initializers/rswag_api.rb | 2 +- config/initializers/rswag_ui.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/initializers/rswag_api.rb b/config/initializers/rswag_api.rb index 15e2107512..59911cef65 100644 --- a/config/initializers/rswag_api.rb +++ b/config/initializers/rswag_api.rb @@ -5,7 +5,7 @@ Rswag::Api.configure do |config| # This is used by the Swagger middleware to serve requests for API descriptions # NOTE: If you're using rswag-specs to generate Swagger, you'll need to ensure # that it's configured to generate files in the same folder - config.swagger_root = Rails.root.join("swagger").to_s + config.openapi_root = Rails.root.join("swagger").to_s # Inject a lamda function to alter the returned Swagger prior to serialization # The function will have access to the rack env for the current request diff --git a/config/initializers/rswag_ui.rb b/config/initializers/rswag_ui.rb index bcb7c95cbe..81ab58c1b9 100644 --- a/config/initializers/rswag_ui.rb +++ b/config/initializers/rswag_ui.rb @@ -9,8 +9,8 @@ Rswag::Ui.configure do |config| # (under swagger_root) as JSON or YAML endpoints, then the list below should # correspond to the relative paths for those endpoints. - config.swagger_endpoint 'v1.yaml', 'API V1 Docs' - config.swagger_endpoint 'dfc.yaml', 'OFN DFC API Docs' + config.openapi_endpoint 'v1.yaml', 'API V1 Docs' + config.openapi_endpoint 'dfc.yaml', 'OFN DFC API Docs' # Add Basic Auth in case your API is private # config.basic_auth_enabled = true From f977a6f8d448b14313d4715e3ed201721b09a062 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:37:20 +0000 Subject: [PATCH 080/219] Bump faraday from 2.7.12 to 2.8.1 Bumps [faraday](https://github.com/lostisland/faraday) from 2.7.12 to 2.8.1. - [Release notes](https://github.com/lostisland/faraday/releases) - [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md) - [Commits](https://github.com/lostisland/faraday/compare/v2.7.12...v2.8.1) --- updated-dependencies: - dependency-name: faraday dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5d512340e7..136245d5e5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -271,7 +271,7 @@ GEM factory_bot_rails (6.2.0) factory_bot (~> 6.2.0) railties (>= 5.0.0) - faraday (2.7.12) + faraday (2.8.1) base64 faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) From 87ba37dcfd5833da9a595478760ec5b4dd7071f9 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Mon, 18 Dec 2023 18:44:49 +0000 Subject: [PATCH 081/219] Replaces Stripe stubs with the account and customer IDs Adds STRIPE_ACCOUNT as sensitive data to VCR setup Rubocop fixes and re-recording of cassettes Adds bogus client_id to local test file - for CI to run --- .env.test | 2 + ...stroys_the_record_and_notifies_Bugsnag.yml | 125 ++++++++++++++++++ .../destroys_the_record.yml | 125 ++++++++++++++++++ spec/models/stripe_account_spec.rb | 25 ++-- spec/support/vcr_setup.rb | 1 + 5 files changed, 262 insertions(+), 16 deletions(-) create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml diff --git a/.env.test b/.env.test index e1d7d47cc2..afa4e58c1d 100644 --- a/.env.test +++ b/.env.test @@ -4,6 +4,8 @@ SECRET_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" STRIPE_SECRET_TEST_API_KEY="bogus_key" STRIPE_CUSTOMER="bogus_customer" +STRIPE_ACCOUNT="bogus_account" +STRIPE_CLIENT_ID="bogus_client_id" SITE_URL="test.host" diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml new file mode 100644 index 0000000000..4808014362 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml @@ -0,0 +1,125 @@ +--- +http_interactions: +- request: + method: post + uri: https://connect.stripe.com/oauth/deauthorize + body: + encoding: UTF-8 + string: stripe_user_id=&client_id=bogus_client_id + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 401 + message: Unauthorized + headers: + Server: + - nginx + Date: + - Tue, 19 Dec 2023 12:55:29 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '96' + Connection: + - keep-alive + Cache-Control: + - max-age=0, no-cache, no-store, must-revalidate + Content-Security-Policy: + - report-uri /csp-report?p=%2Foauth%2Fdeauthorize;block-all-mixed-content;default-src + 'none' 'report-sample';base-uri 'none';form-action 'none';style-src 'unsafe-inline';frame-ancestors + 'self';connect-src 'self';img-src 'self' https://b.stripecdn.com + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=https://q.stripe.com/coop-report + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - strict-origin-when-cross-origin + Request-Id: + - req_1v8IG0ihHAhDnR + Set-Cookie: + - __Host-session=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; + secure; SameSite=None + - __stripe_orig_props=%7B%22referrer%22%3A%22%22%2C%22landing%22%3A%22https%3A%2F%2Fconnect.stripe.com%2Foauth%2Fdeauthorize%22%7D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + HttpOnly; SameSite=Lax + - machine_identifier=nsadMhesm4x1GYVPmQcxGxkwOEHT0uGESxaoxop6tgOLhu%2BvkqpSkkKcxxRvqqlpa%2BQ%3D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + HttpOnly; SameSite=Lax + - private_machine_identifier=5MctxMzB3oEJsWQPiwovzvt6vy1pHt5g4lYzkFr0hY3jCZZPQz%2F6jU71Ye8gqtUCUkE%3D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + HttpOnly; SameSite=None + - site-auth=; domain=stripe.com; path=/; max-age=0; expires=Thu, 01 Jan 1970 + 00:00:00 GMT; secure + - stripe.csrf=ivC9DH1gR7jYwuuHUpqqkApanZ79wswQZMBVKfzfaLr1n5rf_HwKb4sv66YdBNDs03Zq1H_JeHyOjBZ1rENh4jw-AYTZVJxQjKfvlBDZNhjvEvPk5QdyiiBil-k2Op8FixB9Mw4lkg%3D%3D; + domain=stripe.com; path=/; secure; HttpOnly; SameSite=None + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + - max-age=63072000; includeSubDomains; preload + Stripe-Kill-Route: + - "[]" + Stripe-Parent-Id: + - '0000000000000000' + Stripe-Span-Id: + - 1317edffcd8f0941 + Www-Authenticate: + - Bearer realm="Stripe" + X-Apiori-Intentional-Latency: + - 0s + X-Apiori-Reqid: + - dub2DISD22ogqObCRqkyYRE + X-Apiori-Server-Duration-Ms: + - '126' + X-Apiori-Upstream-Duration: + - 126.447763ms + X-Apiori-Upstream-Name: + - manage-srv + X-Apiori-Upstream-Region: + - northwest + X-Content-Type-Options: + - nosniff + X-Envoy-Attempt-Count: + - '1' + X-Envoy-Upstream-Service-Time: + - '248' + X-Robots-Tag: + - none + X-Stripe-Bg-Intended-Route-Color: + - green + X-Stripe-C-Cost: + - '2' + X-Stripe-Client-Envoy-Start-Time-Us: + - '1702990529582694' + X-Stripe-Rpc-C-Cost-Report: + - Cg0IARIJY2VsbF8wMDA3Cg8IARILZ2xvYmFsX2NlbGw= + X-Stripe-Server-Envoy-Start-Time-Us: + - '1702990529583695' + X-Stripe-Server-Envoy-Upstream-Service-Time-Ms: + - '123' + body: + encoding: UTF-8 + string: |- + { + "error": "invalid_client", + "error_description": "No such application: 'bogus_client_id'" + } + recorded_at: Tue, 19 Dec 2023 12:55:29 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml new file mode 100644 index 0000000000..0c8489a0f3 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml @@ -0,0 +1,125 @@ +--- +http_interactions: +- request: + method: post + uri: https://connect.stripe.com/oauth/deauthorize + body: + encoding: UTF-8 + string: stripe_user_id=&client_id=ca_MzG1xs6tZFDztUlak7uFxoUM36G6307W + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 401 + message: Unauthorized + headers: + Server: + - nginx + Date: + - Tue, 19 Dec 2023 12:55:30 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '164' + Connection: + - keep-alive + Cache-Control: + - max-age=0, no-cache, no-store, must-revalidate + Content-Security-Policy: + - report-uri /csp-report?p=%2Foauth%2Fdeauthorize;block-all-mixed-content;default-src + 'none' 'report-sample';base-uri 'none';form-action 'none';style-src 'unsafe-inline';frame-ancestors + 'self';connect-src 'self';img-src 'self' https://b.stripecdn.com + Cross-Origin-Opener-Policy-Report-Only: + - same-origin; report-to=https://q.stripe.com/coop-report + Expires: + - '0' + Pragma: + - no-cache + Referrer-Policy: + - strict-origin-when-cross-origin + Request-Id: + - req_pGBBuPOXb6xMly + Set-Cookie: + - __Host-session=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; + secure; SameSite=None + - __stripe_orig_props=%7B%22referrer%22%3A%22%22%2C%22landing%22%3A%22https%3A%2F%2Fconnect.stripe.com%2Foauth%2Fdeauthorize%22%7D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + HttpOnly; SameSite=Lax + - machine_identifier=JJUOdPN1UTC9yKxG3Cief9mNanXTKM9y3VmUcEzfmFXEB%2FViV5jXpnxq0kFsEjoKyyg%3D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + HttpOnly; SameSite=Lax + - private_machine_identifier=qnLLWHsR2kIkVnuEZbUabBmPGOMmgoa%2B2t%2Bt82Sn41uVMChBI%2FF%2FmVlhmFtmb9%2Fnd70%3D; + domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + HttpOnly; SameSite=None + - site-auth=; domain=stripe.com; path=/; max-age=0; expires=Thu, 01 Jan 1970 + 00:00:00 GMT; secure + - stripe.csrf=aIL_e_YV7LaxFPnsyZHeK9DsuQ7sm4bYeawhyIBlivow1bC0KAoKCaoR0E-WklLxlvDMXwX1_tY7Aa5l_gJ-zzw-AYTZVJwtl69iWowmC5Gcjqp-_ni03g1Mcx1Hbz6xqEXSGCKfKg%3D%3D; + domain=stripe.com; path=/; secure; HttpOnly; SameSite=None + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + - max-age=63072000; includeSubDomains; preload + Stripe-Kill-Route: + - "[]" + Stripe-Parent-Id: + - '0000000000000000' + Stripe-Span-Id: + - abaf119f94aa71c4 + Www-Authenticate: + - Bearer realm="Stripe" + X-Apiori-Intentional-Latency: + - 0s + X-Apiori-Reqid: + - dub1DISD299L0WxB0Akf1uq + X-Apiori-Server-Duration-Ms: + - '138' + X-Apiori-Upstream-Duration: + - 137.918128ms + X-Apiori-Upstream-Name: + - manage-srv + X-Apiori-Upstream-Region: + - northwest + X-Content-Type-Options: + - nosniff + X-Envoy-Attempt-Count: + - '1' + X-Envoy-Upstream-Service-Time: + - '257' + X-Robots-Tag: + - none + X-Stripe-Bg-Intended-Route-Color: + - green + X-Stripe-C-Cost: + - '4' + X-Stripe-Client-Envoy-Start-Time-Us: + - '1702990530466139' + X-Stripe-Rpc-C-Cost-Report: + - Cg0IAxIJY2VsbF8wMDA3Cg8IARILZ2xvYmFsX2NlbGw= + X-Stripe-Server-Envoy-Start-Time-Us: + - '1702990530466931' + X-Stripe-Server-Envoy-Upstream-Service-Time-Ms: + - '135' + body: + encoding: UTF-8 + string: |- + { + "error": "invalid_client", + "error_description": "This application is not connected to stripe account , or that account does not exist." + } + recorded_at: Tue, 19 Dec 2023 12:55:30 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/models/stripe_account_spec.rb b/spec/models/stripe_account_spec.rb index f798cbc56a..4aae9c5a9e 100644 --- a/spec/models/stripe_account_spec.rb +++ b/spec/models/stripe_account_spec.rb @@ -4,27 +4,24 @@ require 'spec_helper' require 'stripe/oauth' describe StripeAccount do - describe "deauthorize_and_destroy" do + describe "deauthorize_and_destroy", :vcr, :stripe_version do let!(:enterprise) { create(:enterprise) } let!(:enterprise2) { create(:enterprise) } - let(:client_id) { 'ca_abc123' } - let(:stripe_user_id) { 'acct_abc123' } + let(:client_id) { ENV.fetch('STRIPE_CLIENT_ID', nil) } + let(:stripe_user_id) { ENV.fetch('STRIPE_ACCOUNT', nil) } + let!(:stripe_account) { create(:stripe_account, enterprise:, stripe_user_id:) } + let(:secret) { ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) } + before do - Stripe.api_key = "sk_test_12345" - Stripe.client_id = client_id + Stripe.api_key = secret end context "when the Stripe API disconnect fails" do - before do - stub_request(:post, "https://connect.stripe.com/oauth/deauthorize"). - with(body: { "client_id" => client_id, "stripe_user_id" => stripe_user_id }). - to_return(status: 400, body: JSON.generate(error: 'invalid_grant', - error_description: "Some Message")) - end + before { Stripe.client_id = "bogus_client_id" } it "destroys the record and notifies Bugsnag" do expect(Bugsnag).to receive(:notify) @@ -34,11 +31,7 @@ describe StripeAccount do end context "when the Stripe API disconnect succeeds" do - before do - stub_request(:post, "https://connect.stripe.com/oauth/deauthorize"). - with(body: { "client_id" => client_id, "stripe_user_id" => stripe_user_id }). - to_return(status: 200, body: JSON.generate(stripe_user_id:)) - end + before { Stripe.client_id = client_id } it "destroys the record" do stripe_account.deauthorize_and_destroy diff --git a/spec/support/vcr_setup.rb b/spec/support/vcr_setup.rb index 7cb9d1b63d..2f944fb235 100644 --- a/spec/support/vcr_setup.rb +++ b/spec/support/vcr_setup.rb @@ -9,5 +9,6 @@ VCR.configure do |config| config.configure_rspec_metadata! config.filter_sensitive_data('') { ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) } config.filter_sensitive_data('') { ENV.fetch('STRIPE_CUSTOMER', nil) } + config.filter_sensitive_data('') { ENV.fetch('STRIPE_ACCOUNT', nil) } config.ignore_hosts('localhost', '127.0.0.1', '0.0.0.0', 'api.knapsackpro.com') end From beb916d24d7a285aea147e0412d2a41d8f686676 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Tue, 19 Dec 2023 16:17:56 +0000 Subject: [PATCH 082/219] Improves assertions around disconnect-failure and -success test cases --- spec/models/stripe_account_spec.rb | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/spec/models/stripe_account_spec.rb b/spec/models/stripe_account_spec.rb index 4aae9c5a9e..374f7ee640 100644 --- a/spec/models/stripe_account_spec.rb +++ b/spec/models/stripe_account_spec.rb @@ -24,9 +24,13 @@ describe StripeAccount do before { Stripe.client_id = "bogus_client_id" } it "destroys the record and notifies Bugsnag" do + # returns status 401 expect(Bugsnag).to receive(:notify) - stripe_account.deauthorize_and_destroy - expect(StripeAccount.all).to_not include(stripe_account) + expect { + stripe_account.deauthorize_and_destroy + }.to change( + StripeAccount.where(stripe_user_id:), :count + ).from(1).to(0) end end @@ -34,8 +38,14 @@ describe StripeAccount do before { Stripe.client_id = client_id } it "destroys the record" do + # returns status 200 + expect(Bugsnag).to_not receive(:notify) stripe_account.deauthorize_and_destroy - expect(StripeAccount.all).not_to include(stripe_account) + expect { + stripe_account.deauthorize_and_destroy + }.to change( + StripeAccount.where(stripe_user_id:), :count + ).from(1).to(0) end end From d8d874f7eab5ea97a923e86b1e6cde05df070c68 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 21 Dec 2023 10:47:24 +0000 Subject: [PATCH 083/219] Creates a connected account and tests OFN code for disconnecting it Re-records cassettes Creates a bogus publishable key We need to feed some value to the ENV variables which are picked up from the local test environment, for the build to run. We could also store them all as environment secrets on our repo, but I don'r think this is necessary, as we only run recorderd API/VCR calls on our build, and never real API calls. --- .env.test | 1 + ...stroys_the_record_and_notifies_Bugsnag.yml | 36 +-- .../destroys_the_record.yml | 261 ++++++++++++++++-- spec/models/stripe_account_spec.rb | 24 +- 4 files changed, 267 insertions(+), 55 deletions(-) diff --git a/.env.test b/.env.test index afa4e58c1d..a52a6b10b4 100644 --- a/.env.test +++ b/.env.test @@ -6,6 +6,7 @@ STRIPE_SECRET_TEST_API_KEY="bogus_key" STRIPE_CUSTOMER="bogus_customer" STRIPE_ACCOUNT="bogus_account" STRIPE_CLIENT_ID="bogus_client_id" +STRIPE_PUBLIC_TEST_API_KEY="bogus_stripe_publishable_key" SITE_URL="test.host" diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml index 4808014362..49aef67136 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_fails/destroys_the_record_and_notifies_Bugsnag.yml @@ -32,7 +32,7 @@ http_interactions: Server: - nginx Date: - - Tue, 19 Dec 2023 12:55:29 GMT + - Thu, 21 Dec 2023 10:45:56 GMT Content-Type: - application/json; charset=utf-8 Content-Length: @@ -54,22 +54,22 @@ http_interactions: Referrer-Policy: - strict-origin-when-cross-origin Request-Id: - - req_1v8IG0ihHAhDnR + - req_5I7fo8ZIT4iiOD Set-Cookie: - __Host-session=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; secure; SameSite=None - __stripe_orig_props=%7B%22referrer%22%3A%22%22%2C%22landing%22%3A%22https%3A%2F%2Fconnect.stripe.com%2Foauth%2Fdeauthorize%22%7D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:56 GMT; secure; HttpOnly; SameSite=Lax - - machine_identifier=nsadMhesm4x1GYVPmQcxGxkwOEHT0uGESxaoxop6tgOLhu%2BvkqpSkkKcxxRvqqlpa%2BQ%3D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + - machine_identifier=QgNDMZHR38PElyy9q592gsCebE6wwZpG2yGY42Pr9eBKa8VgTy3D6hYV68qrQ22Ss6M%3D; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:56 GMT; secure; HttpOnly; SameSite=Lax - - private_machine_identifier=5MctxMzB3oEJsWQPiwovzvt6vy1pHt5g4lYzkFr0hY3jCZZPQz%2F6jU71Ye8gqtUCUkE%3D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:29 GMT; secure; + - private_machine_identifier=I5FD6ty3P%2Fu3NcPXx%2FQWf0rlSSmmseIhF3Jjh1k0VDaE0r9pST2zC0QF5zOrj9mL8xU%3D; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:56 GMT; secure; HttpOnly; SameSite=None - site-auth=; domain=stripe.com; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; secure - - stripe.csrf=ivC9DH1gR7jYwuuHUpqqkApanZ79wswQZMBVKfzfaLr1n5rf_HwKb4sv66YdBNDs03Zq1H_JeHyOjBZ1rENh4jw-AYTZVJxQjKfvlBDZNhjvEvPk5QdyiiBil-k2Op8FixB9Mw4lkg%3D%3D; + - stripe.csrf=3pBovX-WeRInaYekIenxBP4HZPJUKPIapUKWzkq61RZGXY_L4XNwm0d3kPOaWycuCWRVZPILZHIl0E1ajDrp9jw-AYTZVJw3W5vZuecF9T6yl15939IAMLnS4TPsJz7sL-g2uJ-hMA%3D%3D; domain=stripe.com; path=/; secure; HttpOnly; SameSite=None Strict-Transport-Security: - max-age=63072000; includeSubDomains; preload @@ -79,17 +79,17 @@ http_interactions: Stripe-Parent-Id: - '0000000000000000' Stripe-Span-Id: - - 1317edffcd8f0941 + - c9754f0ed47ef010 Www-Authenticate: - Bearer realm="Stripe" X-Apiori-Intentional-Latency: - 0s X-Apiori-Reqid: - - dub2DISD22ogqObCRqkyYRE + - dub1DIXA8nWJL2tSW8r7Vtw X-Apiori-Server-Duration-Ms: - - '126' + - '118' X-Apiori-Upstream-Duration: - - 126.447763ms + - 118.447951ms X-Apiori-Upstream-Name: - manage-srv X-Apiori-Upstream-Region: @@ -99,21 +99,21 @@ http_interactions: X-Envoy-Attempt-Count: - '1' X-Envoy-Upstream-Service-Time: - - '248' + - '235' X-Robots-Tag: - none X-Stripe-Bg-Intended-Route-Color: - - green + - blue X-Stripe-C-Cost: - '2' X-Stripe-Client-Envoy-Start-Time-Us: - - '1702990529582694' + - '1703155556322583' X-Stripe-Rpc-C-Cost-Report: - Cg0IARIJY2VsbF8wMDA3Cg8IARILZ2xvYmFsX2NlbGw= X-Stripe-Server-Envoy-Start-Time-Us: - - '1702990529583695' + - '1703155556323654' X-Stripe-Server-Envoy-Upstream-Service-Time-Ms: - - '123' + - '115' body: encoding: UTF-8 string: |- @@ -121,5 +121,5 @@ http_interactions: "error": "invalid_client", "error_description": "No such application: 'bogus_client_id'" } - recorded_at: Tue, 19 Dec 2023 12:55:29 GMT + recorded_at: Thu, 21 Dec 2023 10:45:56 GMT recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml index 0c8489a0f3..03de8ad4e2 100644 --- a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripeAccount/deauthorize_and_destroy/when_the_Stripe_API_disconnect_succeeds/destroys_the_record.yml @@ -2,10 +2,10 @@ http_interactions: - request: method: post - uri: https://connect.stripe.com/oauth/deauthorize + uri: https://api.stripe.com/v1/accounts body: encoding: UTF-8 - string: stripe_user_id=&client_id=ca_MzG1xs6tZFDztUlak7uFxoUM36G6307W + string: type=standard&country=AU&email=jumping.jack%40example.com headers: User-Agent: - Stripe/v1 RubyBindings/10.3.0 @@ -26,17 +26,219 @@ http_interactions: - "*/*" response: status: - code: 401 - message: Unauthorized + code: 200 + message: OK headers: Server: - nginx Date: - - Tue, 19 Dec 2023 12:55:30 GMT + - Thu, 21 Dec 2023 10:45:58 GMT Content-Type: - - application/json; charset=utf-8 + - application/json Content-Length: - - '164' + - '2916' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Faccounts; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 4faf7619-9abc-418c-82ab-d4c1b0b2f5ca + Original-Request: + - req_akFJPnmmxbaXxd + Request-Id: + - req_akFJPnmmxbaXxd + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "acct_1OPjlJQKtA57Vnxb", + "object": "account", + "business_profile": { + "mcc": null, + "name": null, + "product_description": null, + "support_address": null, + "support_email": null, + "support_phone": null, + "support_url": null, + "url": null + }, + "business_type": null, + "capabilities": {}, + "charges_enabled": false, + "controller": { + "is_controller": true, + "type": "application" + }, + "country": "AU", + "created": 1703155558, + "default_currency": "aud", + "details_submitted": false, + "email": "jumping.jack@example.com", + "external_accounts": { + "object": "list", + "data": [], + "has_more": false, + "total_count": 0, + "url": "/v1/accounts/acct_1OPjlJQKtA57Vnxb/external_accounts" + }, + "future_requirements": { + "alternatives": [], + "current_deadline": null, + "currently_due": [], + "disabled_reason": null, + "errors": [], + "eventually_due": [], + "past_due": [], + "pending_verification": [] + }, + "metadata": {}, + "payouts_enabled": false, + "requirements": { + "alternatives": [], + "current_deadline": null, + "currently_due": [ + "business_profile.product_description", + "business_profile.support_phone", + "business_profile.url", + "external_account", + "tos_acceptance.date", + "tos_acceptance.ip" + ], + "disabled_reason": "requirements.past_due", + "errors": [], + "eventually_due": [ + "business_profile.product_description", + "business_profile.support_phone", + "business_profile.url", + "external_account", + "tos_acceptance.date", + "tos_acceptance.ip" + ], + "past_due": [ + "external_account", + "tos_acceptance.date", + "tos_acceptance.ip" + ], + "pending_verification": [] + }, + "settings": { + "bacs_debit_payments": { + "display_name": null, + "service_user_number": null + }, + "branding": { + "icon": null, + "logo": null, + "primary_color": null, + "secondary_color": null + }, + "card_issuing": { + "tos_acceptance": { + "date": null, + "ip": null + } + }, + "card_payments": { + "decline_on": { + "avs_failure": false, + "cvc_failure": false + }, + "statement_descriptor_prefix": null, + "statement_descriptor_prefix_kana": null, + "statement_descriptor_prefix_kanji": null + }, + "dashboard": { + "display_name": null, + "timezone": "Etc/UTC" + }, + "payments": { + "statement_descriptor": null, + "statement_descriptor_kana": null, + "statement_descriptor_kanji": null + }, + "payouts": { + "debit_negative_balances": true, + "schedule": { + "delay_days": 2, + "interval": "daily" + }, + "statement_descriptor": null + }, + "sepa_debit_payments": {} + }, + "tos_acceptance": { + "date": null, + "ip": null, + "user_agent": null + }, + "type": "standard" + } + recorded_at: Thu, 21 Dec 2023 10:45:58 GMT +- request: + method: post + uri: https://connect.stripe.com/oauth/deauthorize + body: + encoding: UTF-8 + string: stripe_user_id=acct_1OPjlJQKtA57Vnxb&client_id=ca_MzG1xs6tZFDztUlak7uFxoUM36G6307W + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_akFJPnmmxbaXxd","request_duration_ms":1906}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 10:45:59 GMT + Content-Type: + - application/json + Content-Length: + - '47' Connection: - keep-alive Cache-Control: @@ -54,22 +256,22 @@ http_interactions: Referrer-Policy: - strict-origin-when-cross-origin Request-Id: - - req_pGBBuPOXb6xMly + - req_GI4KuC138PCJAi Set-Cookie: - __Host-session=; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; secure; SameSite=None - __stripe_orig_props=%7B%22referrer%22%3A%22%22%2C%22landing%22%3A%22https%3A%2F%2Fconnect.stripe.com%2Foauth%2Fdeauthorize%22%7D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:59 GMT; secure; HttpOnly; SameSite=Lax - - machine_identifier=JJUOdPN1UTC9yKxG3Cief9mNanXTKM9y3VmUcEzfmFXEB%2FViV5jXpnxq0kFsEjoKyyg%3D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + - machine_identifier=HKDeDB5hKqj4clQzAFDSsv1CYfwTn24qrrs%2BEPZII8GCVRJ%2FXlImUJxiAZyJEtIZ%2Fmw%3D; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:59 GMT; secure; HttpOnly; SameSite=Lax - - private_machine_identifier=qnLLWHsR2kIkVnuEZbUabBmPGOMmgoa%2B2t%2Bt82Sn41uVMChBI%2FF%2FmVlhmFtmb9%2Fnd70%3D; - domain=stripe.com; path=/; expires=Wed, 18 Dec 2024 12:55:30 GMT; secure; + - private_machine_identifier=MtWBDVmUQlK99LHORT57Q4I%2BFQVz1NgOm8YwuEQ1hcLBZg%2B0065RWGEpjtHqd73XO9g%3D; + domain=stripe.com; path=/; expires=Fri, 20 Dec 2024 10:45:59 GMT; secure; HttpOnly; SameSite=None - site-auth=; domain=stripe.com; path=/; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT; secure - - stripe.csrf=aIL_e_YV7LaxFPnsyZHeK9DsuQ7sm4bYeawhyIBlivow1bC0KAoKCaoR0E-WklLxlvDMXwX1_tY7Aa5l_gJ-zzw-AYTZVJwtl69iWowmC5Gcjqp-_ni03g1Mcx1Hbz6xqEXSGCKfKg%3D%3D; + - stripe.csrf=2JHhBnTu9M9rT2X5ddKYKiGrldjy1_TlDZkBH0QYBxLbuX5pF9u2LvZHkuwLr3S96XXp0ZHdgqJRzdhyPTMYmDw-AYTZVJziZaudEZeavUdznjQfqSpNTprhJdapun0wOEWmMxs7zQ%3D%3D; domain=stripe.com; path=/; secure; HttpOnly; SameSite=None Strict-Transport-Security: - max-age=63072000; includeSubDomains; preload @@ -79,17 +281,15 @@ http_interactions: Stripe-Parent-Id: - '0000000000000000' Stripe-Span-Id: - - abaf119f94aa71c4 - Www-Authenticate: - - Bearer realm="Stripe" + - 7c70338af8eb59d9 X-Apiori-Intentional-Latency: - 0s X-Apiori-Reqid: - - dub1DISD299L0WxB0Akf1uq + - dub1DIXA981iCMFaeUWou2O X-Apiori-Server-Duration-Ms: - - '138' + - '226' X-Apiori-Upstream-Duration: - - 137.918128ms + - 225.729973ms X-Apiori-Upstream-Name: - manage-srv X-Apiori-Upstream-Region: @@ -99,27 +299,28 @@ http_interactions: X-Envoy-Attempt-Count: - '1' X-Envoy-Upstream-Service-Time: - - '257' + - '347' X-Robots-Tag: - none X-Stripe-Bg-Intended-Route-Color: - - green + - blue X-Stripe-C-Cost: - - '4' + - '22' X-Stripe-Client-Envoy-Start-Time-Us: - - '1702990530466139' + - '1703155559193296' X-Stripe-Rpc-C-Cost-Report: - - Cg0IAxIJY2VsbF8wMDA3Cg8IARILZ2xvYmFsX2NlbGw= + - Cg0IFBIJY2VsbF8wMDA3Cg8IAhILZ2xvYmFsX2NlbGw= X-Stripe-Server-Envoy-Start-Time-Us: - - '1702990530466931' + - '1703155559194276' X-Stripe-Server-Envoy-Upstream-Service-Time-Ms: - - '135' + - '223' + Stripe-Action-Id: + - dub1DIXA981iCMFaeUWou2O body: encoding: UTF-8 string: |- { - "error": "invalid_client", - "error_description": "This application is not connected to stripe account , or that account does not exist." + "stripe_user_id": "acct_1OPjlJQKtA57Vnxb" } - recorded_at: Tue, 19 Dec 2023 12:55:30 GMT + recorded_at: Thu, 21 Dec 2023 10:45:59 GMT recorded_with: VCR 6.2.0 diff --git a/spec/models/stripe_account_spec.rb b/spec/models/stripe_account_spec.rb index 374f7ee640..d890152bb7 100644 --- a/spec/models/stripe_account_spec.rb +++ b/spec/models/stripe_account_spec.rb @@ -9,13 +9,13 @@ describe StripeAccount do let!(:enterprise2) { create(:enterprise) } let(:client_id) { ENV.fetch('STRIPE_CLIENT_ID', nil) } let(:stripe_user_id) { ENV.fetch('STRIPE_ACCOUNT', nil) } + let(:stripe_publishable_key) { ENV.fetch('STRIPE_PUBLIC_TEST_API_KEY', nil) } + let(:secret) { ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) } let!(:stripe_account) { create(:stripe_account, enterprise:, stripe_user_id:) } - let(:secret) { ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) } - before do Stripe.api_key = secret end @@ -25,7 +25,7 @@ describe StripeAccount do it "destroys the record and notifies Bugsnag" do # returns status 401 - expect(Bugsnag).to receive(:notify) + expect(Bugsnag).to receive(:notify) # and receives Bugsnag notification expect { stripe_account.deauthorize_and_destroy }.to change( @@ -35,16 +35,26 @@ describe StripeAccount do end context "when the Stripe API disconnect succeeds" do - before { Stripe.client_id = client_id } + let!(:connected_account) do + Stripe::Account.create({ + type: 'standard', + country: 'AU', + email: 'jumping.jack@example.com' + }) + end + + before do + Stripe.client_id = client_id + stripe_account.update!(stripe_publishable_key:, stripe_user_id: connected_account.id) + end it "destroys the record" do # returns status 200 - expect(Bugsnag).to_not receive(:notify) - stripe_account.deauthorize_and_destroy + expect(Bugsnag).to_not receive(:notify) # and does not receive Bugsnag notification expect { stripe_account.deauthorize_and_destroy }.to change( - StripeAccount.where(stripe_user_id:), :count + StripeAccount.where(stripe_user_id: connected_account.id), :count ).from(1).to(0) end end From 0517d1ce6bb753ff2afa45e170aa4a7d5152a70f Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 21 Dec 2023 18:11:55 +0000 Subject: [PATCH 084/219] Replaces receive_message_chain rspec mocks with responses from real Stripe calls --- .../returns_true.yml | 649 ++++++++++++++++++ .../returns_false.yml | 523 ++++++++++++++ .../returns_failed_response.yml | 259 +++++++ ...tus_with_Stripe_PaymentIntentValidator.yml | 385 +++++++++++ .../returns_nil.yml | 257 +++++++ spec/services/stripe_payment_status_spec.rb | 68 +- 6 files changed, 2128 insertions(+), 13 deletions(-) create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_Stripe_payment_has_been_captured/returns_true.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_false.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/and_the_last_action_on_the_Stripe_payment_failed/returns_failed_response.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/fetches_the_status_with_Stripe_PaymentIntentValidator.yml create mode 100644 spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_nil.yml diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_Stripe_payment_has_been_captured/returns_true.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_Stripe_payment_has_been_captured/returns_true.yml new file mode 100644 index 0000000000..2a19c5c68f --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_Stripe_payment_has_been_captured/returns_true.yml @@ -0,0 +1,649 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_m6XPXtW1QAa5Yh","request_duration_ms":1327}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:14 GMT + Content-Type: + - application/json + Content-Length: + - '931' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - f9466029-a812-4659-b1ff-a076ba94fa1a + Original-Request: + - req_pYD1g7HpDRQJuF + Request-Id: + - req_pYD1g7HpDRQJuF + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1OPqgIKuuB1fWySndAKIpZ7q", + "object": "payment_method", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 12, + "exp_year": 2024, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1703182154, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Thu, 21 Dec 2023 18:09:14 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=aud&payment_method=pm_1OPqgIKuuB1fWySndAKIpZ7q&payment_method_types[0]=card&capture_method=manual + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_pYD1g7HpDRQJuF","request_duration_ms":593}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:15 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 728a9c97-42ec-4625-9ada-a505b48835c9 + Original-Request: + - req_slSUDdLDemvjhs + Request-Id: + - req_slSUDdLDemvjhs + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgIKuuB1fWySn01WyCn2d", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgIKuuB1fWySn01WyCn2d_secret_bRgIV8t1BIt1MsyGP8Lasn1N6", + "confirmation_method": "automatic", + "created": 1703182154, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgIKuuB1fWySndAKIpZ7q", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:15 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgIKuuB1fWySn01WyCn2d/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_slSUDdLDemvjhs","request_duration_ms":610}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:16 GMT + Content-Type: + - application/json + Content-Length: + - '1365' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Idempotency-Key: + - c9a23874-fcf2-4ff4-af1a-d1a6c682d973 + Original-Request: + - req_xHTLX0AhmmoFPO + Request-Id: + - req_xHTLX0AhmmoFPO + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgIKuuB1fWySn01WyCn2d", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgIKuuB1fWySn01WyCn2d_secret_bRgIV8t1BIt1MsyGP8Lasn1N6", + "confirmation_method": "automatic", + "created": 1703182154, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3OPqgIKuuB1fWySn0esLhegx", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgIKuuB1fWySndAKIpZ7q", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:16 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgIKuuB1fWySn01WyCn2d/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_xHTLX0AhmmoFPO","request_duration_ms":1020}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:18 GMT + Content-Type: + - application/json + Content-Length: + - '1358' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Idempotency-Key: + - 9430b4e1-d344-488c-82d9-3727dc382558 + Original-Request: + - req_plCN54PR6WkFk8 + Request-Id: + - req_plCN54PR6WkFk8 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgIKuuB1fWySn01WyCn2d", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgIKuuB1fWySn01WyCn2d_secret_bRgIV8t1BIt1MsyGP8Lasn1N6", + "confirmation_method": "automatic", + "created": 1703182154, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3OPqgIKuuB1fWySn0esLhegx", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgIKuuB1fWySndAKIpZ7q", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:18 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgIKuuB1fWySn01WyCn2d + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_plCN54PR6WkFk8","request_duration_ms":1942}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:19 GMT + Content-Type: + - application/json + Content-Length: + - '1358' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Request-Id: + - req_Fs3jhYZdQ1nDpq + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgIKuuB1fWySn01WyCn2d", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgIKuuB1fWySn01WyCn2d_secret_bRgIV8t1BIt1MsyGP8Lasn1N6", + "confirmation_method": "automatic", + "created": 1703182154, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3OPqgIKuuB1fWySn0esLhegx", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgIKuuB1fWySndAKIpZ7q", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:19 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_false.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_false.yml new file mode 100644 index 0000000000..be0f076f28 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_captured_/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_false.yml @@ -0,0 +1,523 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_sN4U9m5oYfnHU1","request_duration_ms":544}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:10 GMT + Content-Type: + - application/json + Content-Length: + - '931' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 41f01593-3ebd-44ed-8c40-6c6a56f1c6d2 + Original-Request: + - req_s2Msq6t0FOfWbI + Request-Id: + - req_s2Msq6t0FOfWbI + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1OPqgEKuuB1fWySnYHiuaYg8", + "object": "payment_method", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 12, + "exp_year": 2024, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1703182150, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Thu, 21 Dec 2023 18:09:10 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=aud&payment_method=pm_1OPqgEKuuB1fWySnYHiuaYg8&payment_method_types[0]=card&capture_method=manual + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_s2Msq6t0FOfWbI","request_duration_ms":517}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:11 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 730c7897-b2f1-42ba-a7b1-6247b9820ea8 + Original-Request: + - req_T3Ji4wUV2Vr26d + Request-Id: + - req_T3Ji4wUV2Vr26d + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgFKuuB1fWySn2qIQmhEG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgFKuuB1fWySn2qIQmhEG_secret_I0jMdgIdTskSDjv60hENoRf8m", + "confirmation_method": "automatic", + "created": 1703182151, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgEKuuB1fWySnYHiuaYg8", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:11 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgFKuuB1fWySn2qIQmhEG/confirm + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_T3Ji4wUV2Vr26d","request_duration_ms":389}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:12 GMT + Content-Type: + - application/json + Content-Length: + - '1365' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fconfirm; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Idempotency-Key: + - 3f578b4c-7a7b-4629-9106-9ed2fcb4d7ec + Original-Request: + - req_bvKI0KR7KxcvGn + Request-Id: + - req_bvKI0KR7KxcvGn + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgFKuuB1fWySn2qIQmhEG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 100, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgFKuuB1fWySn2qIQmhEG_secret_I0jMdgIdTskSDjv60hENoRf8m", + "confirmation_method": "automatic", + "created": 1703182151, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3OPqgFKuuB1fWySn2Zsk8RfC", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgEKuuB1fWySnYHiuaYg8", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_capture", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:12 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgFKuuB1fWySn2qIQmhEG/capture + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_bvKI0KR7KxcvGn","request_duration_ms":1036}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:13 GMT + Content-Type: + - application/json + Content-Length: + - '1358' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent%2Fcapture; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Idempotency-Key: + - aed4577b-328a-4436-8b84-037304f2b203 + Original-Request: + - req_m6XPXtW1QAa5Yh + Request-Id: + - req_m6XPXtW1QAa5Yh + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgFKuuB1fWySn2qIQmhEG", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 100, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgFKuuB1fWySn2qIQmhEG_secret_I0jMdgIdTskSDjv60hENoRf8m", + "confirmation_method": "automatic", + "created": 1703182151, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": "ch_3OPqgFKuuB1fWySn2Zsk8RfC", + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgEKuuB1fWySnYHiuaYg8", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "succeeded", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:13 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/and_the_last_action_on_the_Stripe_payment_failed/returns_failed_response.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/and_the_last_action_on_the_Stripe_payment_failed/returns_failed_response.yml new file mode 100644 index 0000000000..3adb905e86 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/and_the_last_action_on_the_Stripe_payment_failed/returns_failed_response.yml @@ -0,0 +1,259 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_pytjlVHzBYwaQf","request_duration_ms":281}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:09 GMT + Content-Type: + - application/json + Content-Length: + - '931' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 1184eef1-c0fd-431e-9810-533d8c0bb689 + Original-Request: + - req_ROn0IK39apcDK4 + Request-Id: + - req_ROn0IK39apcDK4 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1OPqgDKuuB1fWySnkoAEaRoW", + "object": "payment_method", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 12, + "exp_year": 2024, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1703182149, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Thu, 21 Dec 2023 18:09:09 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=aud&payment_method=pm_1OPqgDKuuB1fWySnkoAEaRoW&payment_method_types[0]=card&capture_method=manual + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ROn0IK39apcDK4","request_duration_ms":606}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:10 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 6c1aa3d3-bab7-4886-a2e5-dd7509d1fe8f + Original-Request: + - req_sN4U9m5oYfnHU1 + Request-Id: + - req_sN4U9m5oYfnHU1 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgDKuuB1fWySn1eFVhh6N", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgDKuuB1fWySn1eFVhh6N_secret_Vr6WdCU6vvAjVjR70nO1JYPbL", + "confirmation_method": "automatic", + "created": 1703182149, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgDKuuB1fWySnkoAEaRoW", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:10 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/fetches_the_status_with_Stripe_PaymentIntentValidator.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/fetches_the_status_with_Stripe_PaymentIntentValidator.yml new file mode 100644 index 0000000000..ab6ebe80f0 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_has_a_payment_intent/fetches_the_status_with_Stripe_PaymentIntentValidator.yml @@ -0,0 +1,385 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_xUcr3kQE1fafTl","request_duration_ms":753}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:07 GMT + Content-Type: + - application/json + Content-Length: + - '931' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 87b69b45-f4ca-475e-95d0-05d085762935 + Original-Request: + - req_ShHOPcVnGwerbn + Request-Id: + - req_ShHOPcVnGwerbn + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1OPqgBKuuB1fWySnrGHvSzTN", + "object": "payment_method", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 12, + "exp_year": 2024, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1703182147, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Thu, 21 Dec 2023 18:09:07 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=aud&payment_method=pm_1OPqgBKuuB1fWySnrGHvSzTN&payment_method_types[0]=card&capture_method=manual + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_ShHOPcVnGwerbn","request_duration_ms":536}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:08 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - a081b3cc-be29-45f3-9bc3-d53a57d2286c + Original-Request: + - req_lm0vK7s3T6UU36 + Request-Id: + - req_lm0vK7s3T6UU36 + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgCKuuB1fWySn14u13eca", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgCKuuB1fWySn14u13eca_secret_su7VUuqYOXo8DzsMGMxROMqLW", + "confirmation_method": "automatic", + "created": 1703182148, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgBKuuB1fWySnrGHvSzTN", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:08 GMT +- request: + method: get + uri: https://api.stripe.com/v1/payment_intents/pi_3OPqgCKuuB1fWySn14u13eca + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_lm0vK7s3T6UU36","request_duration_ms":500}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:08 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents%2F%3Aintent; + block-all-mixed-content; default-src 'none'; base-uri 'none'; form-action + 'none'; frame-ancestors 'none'; img-src 'self'; script-src 'self' 'report-sample'; + style-src 'self' + Request-Id: + - req_pytjlVHzBYwaQf + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgCKuuB1fWySn14u13eca", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgCKuuB1fWySn14u13eca_secret_su7VUuqYOXo8DzsMGMxROMqLW", + "confirmation_method": "automatic", + "created": 1703182148, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqgBKuuB1fWySnrGHvSzTN", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:08 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_nil.yml b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_nil.yml new file mode 100644 index 0000000000..9c515069af --- /dev/null +++ b/spec/fixtures/vcr_cassettes/Stripe-v10.3.0/StripePaymentStatus/_stripe_status/when_the_payment_is_not_a_Stripe_payment_or_does_not_have_a_payment_intent/returns_nil.yml @@ -0,0 +1,257 @@ +--- +http_interactions: +- request: + method: post + uri: https://api.stripe.com/v1/payment_methods + body: + encoding: UTF-8 + string: type=card&card[number]=4242424242424242&card[exp_month]=12&card[exp_year]=2024&card[cvc]=314 + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:05 GMT + Content-Type: + - application/json + Content-Length: + - '931' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_methods; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - d106b2cc-fbc7-4add-9763-743ff30f0327 + Original-Request: + - req_pMX8N6skqtoL7p + Request-Id: + - req_pMX8N6skqtoL7p + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pm_1OPqg9KuuB1fWySn0E4Ycj1M", + "object": "payment_method", + "billing_details": { + "address": { + "city": null, + "country": null, + "line1": null, + "line2": null, + "postal_code": null, + "state": null + }, + "email": null, + "name": null, + "phone": null + }, + "card": { + "brand": "visa", + "checks": { + "address_line1_check": null, + "address_postal_code_check": null, + "cvc_check": "unchecked" + }, + "country": "US", + "exp_month": 12, + "exp_year": 2024, + "fingerprint": "6E6tgVjx6U65iHFV", + "funding": "credit", + "generated_from": null, + "last4": "4242", + "networks": { + "available": [ + "visa" + ], + "preferred": null + }, + "three_d_secure_usage": { + "supported": true + }, + "wallet": null + }, + "created": 1703182145, + "customer": null, + "livemode": false, + "metadata": {}, + "type": "card" + } + recorded_at: Thu, 21 Dec 2023 18:09:05 GMT +- request: + method: post + uri: https://api.stripe.com/v1/payment_intents + body: + encoding: UTF-8 + string: amount=100¤cy=aud&payment_method=pm_1OPqg9KuuB1fWySn0E4Ycj1M&payment_method_types[0]=card&capture_method=manual + headers: + User-Agent: + - Stripe/v1 RubyBindings/10.3.0 + Authorization: + - Bearer + Content-Type: + - application/x-www-form-urlencoded + X-Stripe-Client-Telemetry: + - '{"last_request_metrics":{"request_id":"req_pMX8N6skqtoL7p","request_duration_ms":846}}' + Stripe-Version: + - '2023-10-16' + X-Stripe-Client-User-Agent: + - '{"bindings_version":"10.3.0","lang":"ruby","lang_version":"3.1.4 p223 (2023-03-30)","platform":"x86_64-linux","engine":"ruby","publisher":"stripe","uname":"Linux + version 6.2.0-39-generic (buildd@lcy02-amd64-045) (x86_64-linux-gnu-gcc-11 + (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) + #40~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 16 10:53:04 UTC 2","hostname":"ff-LAT"}' + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - nginx + Date: + - Thu, 21 Dec 2023 18:09:06 GMT + Content-Type: + - application/json + Content-Length: + - '1343' + Connection: + - keep-alive + Access-Control-Allow-Credentials: + - 'true' + Access-Control-Allow-Methods: + - GET,HEAD,PUT,PATCH,POST,DELETE + Access-Control-Allow-Origin: + - "*" + Access-Control-Expose-Headers: + - Request-Id, Stripe-Manage-Version, Stripe-Should-Retry, X-Stripe-External-Auth-Required, + X-Stripe-Privileged-Session-Required + Access-Control-Max-Age: + - '300' + Cache-Control: + - no-cache, no-store + Content-Security-Policy: + - report-uri https://q.stripe.com/csp-report?p=v1%2Fpayment_intents; block-all-mixed-content; + default-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'; + img-src 'self'; script-src 'self' 'report-sample'; style-src 'self' + Idempotency-Key: + - 3bade1cf-ebce-47d9-9e28-e2ab9a762e40 + Original-Request: + - req_xUcr3kQE1fafTl + Request-Id: + - req_xUcr3kQE1fafTl + Stripe-Should-Retry: + - 'false' + Stripe-Version: + - '2023-10-16' + Vary: + - Origin + X-Stripe-Routing-Context-Priority-Tier: + - api-testmode + Strict-Transport-Security: + - max-age=63072000; includeSubDomains; preload + body: + encoding: UTF-8 + string: |- + { + "id": "pi_3OPqgAKuuB1fWySn1gUh1XZ2", + "object": "payment_intent", + "amount": 100, + "amount_capturable": 0, + "amount_details": { + "tip": {} + }, + "amount_received": 0, + "application": null, + "application_fee_amount": null, + "automatic_payment_methods": null, + "canceled_at": null, + "cancellation_reason": null, + "capture_method": "manual", + "client_secret": "pi_3OPqgAKuuB1fWySn1gUh1XZ2_secret_gzAFNOmpSKE5RZ4AerLaz66l4", + "confirmation_method": "automatic", + "created": 1703182146, + "currency": "aud", + "customer": null, + "description": null, + "invoice": null, + "last_payment_error": null, + "latest_charge": null, + "livemode": false, + "metadata": {}, + "next_action": null, + "on_behalf_of": null, + "payment_method": "pm_1OPqg9KuuB1fWySn0E4Ycj1M", + "payment_method_configuration_details": null, + "payment_method_options": { + "card": { + "installments": null, + "mandate_options": null, + "network": null, + "request_three_d_secure": "automatic" + } + }, + "payment_method_types": [ + "card" + ], + "processing": null, + "receipt_email": null, + "review": null, + "setup_future_usage": null, + "shipping": null, + "source": null, + "statement_descriptor": null, + "statement_descriptor_suffix": null, + "status": "requires_confirmation", + "transfer_data": null, + "transfer_group": null + } + recorded_at: Thu, 21 Dec 2023 18:09:06 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/services/stripe_payment_status_spec.rb b/spec/services/stripe_payment_status_spec.rb index 912c87e213..5405f30925 100644 --- a/spec/services/stripe_payment_status_spec.rb +++ b/spec/services/stripe_payment_status_spec.rb @@ -2,25 +2,66 @@ require 'spec_helper' -describe StripePaymentStatus do +describe StripePaymentStatus, :vcr, :stripe_version do subject { StripePaymentStatus.new(payment) } - let(:payment) { build(:payment) } + + let(:secret) { ENV.fetch('STRIPE_SECRET_TEST_API_KEY', nil) } + + let(:credit_card) { create(:credit_card, gateway_payment_profile_id: pm_card.id) } + + let(:payment_method) { + create(:stripe_sca_payment_method, distributor_ids: [create(:distributor_enterprise).id], + preferred_enterprise_id: create(:enterprise).id) + } + + before { Stripe.api_key = secret } + + let(:pm_card) do + Stripe::PaymentMethod.create({ + type: 'card', + card: { + number: '4242424242424242', + exp_month: 12, + exp_year: Time.zone.now.year.next, + cvc: '314', + }, + }) + end + let(:payment_intent) do + Stripe::PaymentIntent.create({ + amount: 100, + currency: 'aud', + payment_method: pm_card, + payment_method_types: ['card'], + capture_method: 'manual', + }) + end + + let(:payment) { + create( + :payment, + payment_method:, + source: credit_card, + response_code: payment_intent.id + ) + } + + before { + Stripe.api_key = secret + } describe '#stripe_status' do context "when the payment is not a Stripe payment or does not have a payment intent" do + before { payment.update!(response_code: nil) } + it "returns nil" do expect(subject.stripe_status).to be_nil end end context "when the payment has a payment intent" do - before { allow(payment).to receive(:response_code) { "pi_1234" } } - it "fetches the status with Stripe::PaymentIntentValidator" do - expect(Stripe::PaymentIntentValidator). - to receive_message_chain(:new, :call, :status) { true } - - subject.stripe_status + expect(subject.stripe_status).to eq "requires_confirmation" end context "and the last action on the Stripe payment failed" do @@ -35,19 +76,20 @@ describe StripePaymentStatus do end describe '#stripe_captured?' do + before do + Stripe::PaymentIntent.confirm(payment_intent.id) + Stripe::PaymentIntent.capture(payment_intent.id) + end + context "when the payment is not a Stripe payment or does not have a payment intent" do + before { payment.update!(response_code: nil) } it "returns false" do expect(subject.stripe_captured?).to eq false end end context "when the Stripe payment has been captured" do - before { allow(payment).to receive(:response_code) { "pi_1234" } } - it "returns true" do - allow(Stripe::PaymentIntentValidator). - to receive_message_chain(:new, :call, :status) { "succeeded" } - expect(subject.stripe_captured?).to eq true end end From dc9774def694da0e493402a7614b875fbcca85cb Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Thu, 21 Dec 2023 18:56:11 +0000 Subject: [PATCH 085/219] Removes forgotten comment line --- app/models/content_configuration.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/models/content_configuration.rb b/app/models/content_configuration.rb index 8e031dcb57..3ad99b5c0e 100644 --- a/app/models/content_configuration.rb +++ b/app/models/content_configuration.rb @@ -23,7 +23,6 @@ class ContentConfiguration < Spree::Preferences::Configuration # Producer sign-up page # All the following defaults using I18n don't work. # https://github.com/openfoodfoundation/openfoodnetwork/issues/3816 - # default values for these fields are commented out below preference :producer_signup_pricing_table_html, :text, default: I18n.t(:content_configuration_pricing_table) preference :producer_signup_case_studies_html, :text, From fde7c3428799a7c0a6db2aa4aeeaea26addaf796 Mon Sep 17 00:00:00 2001 From: bouaik Date: Thu, 21 Dec 2023 21:16:39 +0100 Subject: [PATCH 086/219] fix highlighting --- app/views/spree/admin/shared/_product_sub_menu.html.haml | 2 +- app/views/spree/admin/shared/_tabs.html.haml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/spree/admin/shared/_product_sub_menu.html.haml b/app/views/spree/admin/shared/_product_sub_menu.html.haml index b89b16c764..6c222d49e7 100644 --- a/app/views/spree/admin/shared/_product_sub_menu.html.haml +++ b/app/views/spree/admin/shared/_product_sub_menu.html.haml @@ -1,6 +1,6 @@ - content_for :sub_menu do %ul#sub_nav.inline-menu - = tab :products + = tab :products, :products_v3 = tab :properties = tab :variant_overrides, url: main_app.admin_inventory_path, match_path: '/inventory' = tab :import, url: main_app.admin_product_import_path, match_path: '/product_import' diff --git a/app/views/spree/admin/shared/_tabs.html.haml b/app/views/spree/admin/shared/_tabs.html.haml index ae2ad60a4d..019b45d948 100644 --- a/app/views/spree/admin/shared/_tabs.html.haml +++ b/app/views/spree/admin/shared/_tabs.html.haml @@ -1,5 +1,5 @@ = tab :overview, label: 'dashboard', url: spree.admin_dashboard_path, icon: 'icon-dashboard' -= tab :products, :properties, :inventory, :product_import, :images, :variants, :product_properties, :group_buy_options, :seo, url: admin_products_path, icon: 'icon-th-large' += tab :products, :properties, :inventory, :product_import, :images, :variants, :product_properties, :group_buy_options, :seo, :products_v3, :variant_overrides, url: admin_products_path, icon: 'icon-th-large' = tab :order_cycles, url: main_app.admin_order_cycles_path, icon: 'icon-refresh' = tab :orders, :subscriptions, :customer_details, :adjustments, :payments, :return_authorizations, url: admin_orders_path, icon: 'icon-shopping-cart' = tab :reports, url: main_app.admin_reports_path, icon: 'icon-file' @@ -8,4 +8,4 @@ = tab :customers, url: main_app.admin_customers_path = tab :enterprise_groups, url: main_app.admin_enterprise_groups_path, label: 'groups' - if can? :admin, Spree::User - = tab(:users, url: spree.admin_users_path, icon: 'icon-user') + = tab(:users, :enterprise_roles, url: spree.admin_users_path, icon: 'icon-user') From 24fd75a85dcf01996e5ec130b9c35afddb1bdacc Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 22 Dec 2023 02:21:53 +0500 Subject: [PATCH 087/219] Update app/reflexes/products_reflex.rb 11068: remove overdefensive auth check Co-authored-by: Maikel --- app/reflexes/products_reflex.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 095aa5ba88..4f273d9d01 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -48,7 +48,6 @@ class ProductsReflex < ApplicationReflex def delete_product id = current_id_from_element(element) - authorize! :delete, Spree::Product product = product_finder(id).find_product authorize! :delete, product From dc78fa843a21f0e49c2b88ba104bac2c41e7da24 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 22 Dec 2023 02:24:28 +0500 Subject: [PATCH 088/219] Update app/reflexes/products_reflex.rb 11068: remove overdefensive auth check Co-authored-by: Maikel --- app/reflexes/products_reflex.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 4f273d9d01..8d6b5ee474 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -62,7 +62,6 @@ class ProductsReflex < ApplicationReflex def delete_variant id = current_id_from_element(element) - authorize! :delete, Spree::Variant variant = variant_scope.find(id) authorize! :delete, variant From 985487c0614c09320023ac89f3561d824499d28c Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 22 Dec 2023 03:10:52 +0500 Subject: [PATCH 089/219] 11068: update confirm_modal_component - add new position alignment for the modal actions - add 'justify-space-around' and 'justify-end' as new alignment classes - use the above classes accordingly --- app/components/confirm_modal_component.rb | 5 ++++- .../confirm_modal_component.html.haml | 2 +- .../confirm_modal_component.scss | 16 +++++++++++++++- .../admin/products_v3/_delete_modals.html.haml | 5 +++-- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index b71b2634e3..5c533dce3a 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -3,6 +3,7 @@ class ConfirmModalComponent < ModalComponent # @param confirm_reflex_data [Array(Hash)] # format: {: value1, : value2} + # @param actions_alignment_class [String] possible classes: 'justify-space-around', 'justify-end' def initialize( id:, reflex: nil, @@ -13,7 +14,8 @@ class ConfirmModalComponent < ModalComponent confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), - confirm_reflex_data: {} + confirm_reflex_data: {}, + actions_alignment_class: 'justify-space-around' ) super(id:, close_button: true) @confirm_actions = confirm_actions @@ -25,6 +27,7 @@ class ConfirmModalComponent < ModalComponent @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text @confirm_reflex_data = transform_values_for_dataset(confirm_reflex_data) + @actions_alignment_class = actions_alignment_class end private diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 6174da3174..30ee073b1d 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -5,6 +5,6 @@ = render @message if @message - .modal-actions + %div{ class: "modal-actions #{@actions_alignment_class}" } %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } %input{ **confirm_button_attrs } diff --git a/app/components/confirm_modal_component/confirm_modal_component.scss b/app/components/confirm_modal_component/confirm_modal_component.scss index ccbf18169c..1a23b71e35 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.scss +++ b/app/components/confirm_modal_component/confirm_modal_component.scss @@ -1,4 +1,18 @@ .modal-actions { display: flex; - justify-content: space-around; + + &.justify-space-around { + justify-content: space-around; + } + + &.justify-end { + justify-content: flex-end; + input[type="button"] { + margin: 0 5px; + } + + @media only screen and (max-width: 1024px) { + justify-content: space-around; + } + } } diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml index 07938e5cde..6b7fb960e0 100644 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ b/app/views/admin/products_v3/_delete_modals.html.haml @@ -5,8 +5,9 @@ - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", confirm_button_text: t("#{base_translation_key}.confirmation_text"), cancel_button_text: t("#{base_translation_key}.cancellation_text"), - confirm_reflexes: "click->products#delete_#{object_type}", confirm_button_class: :red, + actions_alignment_class: 'justify-end', + confirm_reflexes: "click->products#delete_#{object_type}", confirm_reflex_data: {"current-id": object_id}, ) = render delete_modal do @@ -14,4 +15,4 @@ = t("#{base_translation_key}.heading") %p = t("#{base_translation_key}.prompt") - .margin-bottom-30 + .margin-bottom-50 From f88d4a6da18f97d4a9099723228bcb856e6ddb9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Dec 2023 09:48:10 +0000 Subject: [PATCH 090/219] Bump debug from 1.9.0 to 1.9.1 Bumps [debug](https://github.com/ruby/debug) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/ruby/debug/releases) - [Commits](https://github.com/ruby/debug/compare/v1.9.0...v1.9.1) --- updated-dependencies: - dependency-name: debug dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 136245d5e5..39f5632d18 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -238,7 +238,7 @@ GEM datafoodconsortium-connector (1.0.0.pre.alpha.9) virtual_assembly-semantizer (~> 1.0, >= 1.0.5) date (3.3.3) - debug (1.9.0) + debug (1.9.1) irb (~> 1.10) reline (>= 0.3.8) debugger-linecache (1.2.0) @@ -345,9 +345,9 @@ GEM ruby-vips (>= 2.0.17, < 3) immigrant (0.3.6) activerecord (>= 3.0) - io-console (0.6.0) + io-console (0.7.1) ipaddress (0.8.3) - irb (1.10.1) + irb (1.11.0) rdoc reline (>= 0.3.8) jmespath (1.6.2) @@ -489,7 +489,7 @@ GEM pry (0.13.1) coderay (~> 1.1) method_source (~> 1.0) - psych (5.1.1.1) + psych (5.1.2) stringio public_suffix (5.0.4) puma (6.4.0) @@ -569,7 +569,7 @@ GEM rdf (3.3.1) bcp47_spec (~> 0.2) link_header (~> 0.0, >= 0.0.8) - rdoc (6.6.1) + rdoc (6.6.2) psych (>= 4.0.0) redcarpet (3.6.0) redis (4.8.1) From 265de61e49205f3ad5454a340373937744814c43 Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 22 Dec 2023 12:09:50 +0000 Subject: [PATCH 091/219] Resets VCR/Stripe library directory, after example run, on base spec helper --- spec/base_spec_helper.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 2d1eeed0da..8f743e4a04 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -162,6 +162,9 @@ RSpec.configure do |config| vcr_config.default_cassette_options = { record: :none } if ENV["CI"] end example.run + VCR.configure do |vcr_config| + vcr_config.cassette_library_dir = "spec/fixtures/vcr_cassettes" + end end # Geocoding From 16cb72adbced2ecd8c36b188ed98eb1f84f62f99 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 3 Nov 2023 17:15:35 +1100 Subject: [PATCH 092/219] Add terms_of_service_accepted_at to spree_user It will be used to track when a user has accepted changed to ToS --- ...061213_add_terms_of_service_accepted_at_to_spree_users.rb | 5 +++++ db/schema.rb | 1 + 2 files changed, 6 insertions(+) create mode 100644 db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb diff --git a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb new file mode 100644 index 0000000000..8fee916865 --- /dev/null +++ b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb @@ -0,0 +1,5 @@ +class AddTermsOfServiceAcceptedAtToSpreeUsers < ActiveRecord::Migration[7.0] + def change + add_column :spree_users, :terms_of_service_accepted_at, :datetime + end +end diff --git a/db/schema.rb b/db/schema.rb index c73b14ac7a..91083ef7e9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -932,6 +932,7 @@ ActiveRecord::Schema[7.0].define(version: 20231003000823494) do t.boolean "show_api_key_view", default: false, null: false t.string "provider" t.string "uid" + t.datetime "terms_of_service_accepted_at" t.index ["confirmation_token"], name: "index_spree_users_on_confirmation_token", unique: true t.index ["email"], name: "email_idx_unique", unique: true t.index ["persistence_token"], name: "index_users_on_persistence_token" From a234f1ace66e0be447bd78b1fa31d6cac17e171d Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 9 Nov 2023 16:30:47 +1100 Subject: [PATCH 093/219] Add stimulus controller to handle ToS banner Plus spec --- .../terms_of_service_banner_controller.js | 16 +++++ ...terms_of_service_banner_controller_test.js | 64 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 app/webpacker/controllers/terms_of_service_banner_controller.js create mode 100644 spec/javascripts/stimulus/terms_of_service_banner_controller_test.js diff --git a/app/webpacker/controllers/terms_of_service_banner_controller.js b/app/webpacker/controllers/terms_of_service_banner_controller.js new file mode 100644 index 0000000000..aca1dd08dd --- /dev/null +++ b/app/webpacker/controllers/terms_of_service_banner_controller.js @@ -0,0 +1,16 @@ +import { Controller } from "stimulus"; + +export default class extends Controller { + static values = { url: String }; + + accept() { + const token = document.querySelector('meta[name="csrf-token"]').content; + // We don't really care if the update fails, if it fails it will result in the banner still + // being shown. + fetch(this.urlValue, { method: "post", headers: { "X-CSRF-Token": token } }); + } + + close_banner() { + this.element.remove(); + } +} diff --git a/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js b/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js new file mode 100644 index 0000000000..7ba5416063 --- /dev/null +++ b/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js @@ -0,0 +1,64 @@ +/** + * @jest-environment jsdom + */ + +import { Application } from "stimulus" +import terms_of_service_banner_controller from "../../../app/webpacker/controllers/terms_of_service_banner_controller" + +describe("TermsOfServiceBannerController", () => { + beforeAll(() => { + const application = Application.start() + application.register("terms-of-service-banner", terms_of_service_banner_controller) + }) + + beforeEach(() => { + document.body.innerHTML = ` + +
+
+ Terms of service has been updated + + +
+
+ ` + }) + + describe("#close", () => { + it("removes the banner", () => { + const closeButton = document.getElementById("test-close-banner") + closeButton.click() + + expect(document.getElementById("test-controller-div")).toBeNull() + }) + }) + + describe("#accept", () => { + it("fires a request to accept terms of service", () => { + const mockFetch = jest.fn().mockImplementation( (_url, _options) => + Promise.resolve({ + ok: true, + json: () => "", + }) + ) + window.fetch = (_url, _options) => { + return mockFetch(_url, _options) + } + + const button = document.getElementById("test-accept-banner") + + button.click() + + expect(mockFetch).toHaveBeenCalledWith( + "admin/users/10/accept_terms_of_service", + { headers: { "X-CSRF-Token": "abc123authenticitytoken" }, method: "post" } + ) + }) + }) +}) From ee79fd88d291112ee2fea6d7040d02c9ae631e7a Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 10 Nov 2023 13:05:23 +1100 Subject: [PATCH 094/219] Add /admin/users/:id/accept_terms_or_service end point Plus specs --- .../spree/admin/users_controller.rb | 8 ++++++ config/routes/spree.rb | 7 +++-- .../spree/admin/users_controller_spec.rb | 27 +++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/controllers/spree/admin/users_controller.rb b/app/controllers/spree/admin/users_controller.rb index 34714ba233..4b5f236b3d 100644 --- a/app/controllers/spree/admin/users_controller.rb +++ b/app/controllers/spree/admin/users_controller.rb @@ -57,6 +57,14 @@ module Spree end end + def accept_terms_of_services + if @user.update(terms_of_service_accepted_at: DateTime.now) + head :ok + else + head :unprocessable_entity + end + end + protected def collection diff --git a/config/routes/spree.rb b/config/routes/spree.rb index 2568731c9a..46e22d2384 100644 --- a/config/routes/spree.rb +++ b/config/routes/spree.rb @@ -48,8 +48,11 @@ Spree::Core::Engine.routes.draw do get '/search/known_users' => "search#known_users", :as => :search_known_users get '/search/customers' => 'search#customers', :as => :search_customers - resources :users - + resources :users do + member do + post :accept_terms_of_services + end + end constraints FeatureToggleConstraint.new(:admin_style_v3, negate: true) do # Show old bulk products screen diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index 96e7cc4df4..bc2d825e8b 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -38,4 +38,31 @@ describe Spree::Admin::UsersController do expect(response).to redirect_to('/unauthorized') end end + + describe "#accept_terms_of_services" do + let(:user) { create(:user) } + + before do + allow(controller).to receive_messages spree_current_user: user + user.spree_roles << Spree::Role.find_or_create_by(name: 'admin') + end + + it "updates terms_of_service_accepted_at" do + spree_post :accept_terms_of_services, id: user.id + + expect(response).to have_http_status(:ok) + end + + context "when something goes wrong" do + it "returns unprocessable entity" do + # mock update to make it fails + allow(user).to receive(:update).and_return(false) + allow(Spree::User).to receive(:find).and_return(user) + + spree_post :accept_terms_of_services, id: user.id + + expect(response).to have_http_status(:unprocessable_entity) + end + end + end end From 8e31e35d5d6f1af58b2a0e04059e319db6041bc2 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 10 Nov 2023 16:02:59 +1100 Subject: [PATCH 095/219] Add Tos banner on all admin pages Plus spec, this is tested on the dashboard page. The banner will show if the user accepted_at is before the tos file updated at time. --- .../spree/admin/base_controller.rb | 19 ++++++ .../admin/_terms_of_service_banner.html.haml | 9 +++ app/views/spree/layouts/_admin_body.html.haml | 2 + app/webpacker/css/admin/all.scss | 1 + .../css/admin/terms_of_service_banner.scss | 27 +++++++++ config/locales/en.yml | 3 + spec/requests/spree/admin/overview_spec.rb | 59 +++++++++++++++++++ 7 files changed, 120 insertions(+) create mode 100644 app/views/admin/_terms_of_service_banner.html.haml create mode 100644 app/webpacker/css/admin/terms_of_service_banner.scss create mode 100644 spec/requests/spree/admin/overview_spec.rb diff --git a/app/controllers/spree/admin/base_controller.rb b/app/controllers/spree/admin/base_controller.rb index e542b797be..4dbfccc8b4 100644 --- a/app/controllers/spree/admin/base_controller.rb +++ b/app/controllers/spree/admin/base_controller.rb @@ -19,6 +19,7 @@ module Spree before_action :authorize_admin before_action :set_locale before_action :warn_invalid_order_cycles, if: :html_request? + before_action :check_updated_tos_accepted, if: :html_request? # Warn the user when they have an active order cycle with hubs that are not ready # for checkout (ie. does not have valid shipping and payment methods). @@ -110,6 +111,24 @@ module Spree name = controller_name.classify "::Api::Admin::#{prefix}#{name}Serializer".constantize end + + def check_updated_tos_accepted + @terms_of_service_banner = false + + return unless spree_user_signed_in? + + return if accepted_tos? + + @terms_of_service_banner = true + end + + def accepted_tos? + file_uploaded_at = TermsOfServiceFile.updated_at + + current_spree_user.terms_of_service_accepted_at.present? && + current_spree_user.terms_of_service_accepted_at > file_uploaded_at && + current_spree_user.terms_of_service_accepted_at < DateTime.now + end end end end diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml new file mode 100644 index 0000000000..17b3603986 --- /dev/null +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -0,0 +1,9 @@ +.banner-container + - if @terms_of_service_banner == true + %div{ class: "terms-of-service-banner", data: { controller: "terms-of-service-banner", "terms-of-service-banner-url-value": accept_terms_of_services_admin_user_path(current_spree_user&.id) }} + .column-left + %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) + .column-right + %button{ data: { action: "click->terms-of-service-banner#accept click->terms-of-service-banner#close_banner" } } + = t("admin.accept_terms_of_service") + diff --git a/app/views/spree/layouts/_admin_body.html.haml b/app/views/spree/layouts/_admin_body.html.haml index 76f1f77e26..e730e1286b 100644 --- a/app/views/spree/layouts/_admin_body.html.haml +++ b/app/views/spree/layouts/_admin_body.html.haml @@ -59,6 +59,8 @@ %span= yield :sidebar_title = yield :sidebar + = render partial: "admin/terms_of_service_banner" + %script = raw "Spree.api_key = \"#{spree_current_user.try(:spree_api_key).to_s}\";" diff --git a/app/webpacker/css/admin/all.scss b/app/webpacker/css/admin/all.scss index 942e7422e4..56d522ae75 100644 --- a/app/webpacker/css/admin/all.scss +++ b/app/webpacker/css/admin/all.scss @@ -112,6 +112,7 @@ @import "side_menu"; @import "tables"; @import "tag_rules"; +@import "terms_of_service_banner"; @import "terms_of_service_files"; @import "validation"; @import "variant_overrides"; diff --git a/app/webpacker/css/admin/terms_of_service_banner.scss b/app/webpacker/css/admin/terms_of_service_banner.scss new file mode 100644 index 0000000000..ec46c268e0 --- /dev/null +++ b/app/webpacker/css/admin/terms_of_service_banner.scss @@ -0,0 +1,27 @@ +.banner-container { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + z-index: 1000; + + .terms-of-service-banner { + padding: 18px; + text-align: center; + font-size: 120%; + color: white; + font-weight: 600; + margin-top: 0; + background-color: rgba($color-notice, 0.8); + display: flex; + + .column-left { + width: 70%; + } + + .column-right { + width: 30%; + text-align: center; + } + } +} diff --git a/config/locales/en.yml b/config/locales/en.yml index c1505a3377..7963e7c36e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -653,6 +653,9 @@ en: available_units: "Available Units" + terms_of_service_have_been_updated_html: "Terms of Service have been updated: %{tos_link}" + terms_of_service: Terms of Service + accept_terms_of_service: Accept terms of service shopfront_settings: embedded_shopfront_settings: "Embedded Shopfront Settings" enable_embedded_shopfronts: "Enable Embedded Shopfronts" diff --git a/spec/requests/spree/admin/overview_spec.rb b/spec/requests/spree/admin/overview_spec.rb new file mode 100644 index 0000000000..b75c62539d --- /dev/null +++ b/spec/requests/spree/admin/overview_spec.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "/admin", type: :request do + let(:enterprise) { create(:supplier_enterprise, name: "Feedme") } + let(:enterprise_user) { create(:user, enterprise_limit: 1) } + + before do + enterprise_user.enterprise_roles.build(enterprise:).save + sign_in enterprise_user + end + + describe "GET /admin" do + before do + allow(TermsOfServiceFile).to receive(:updated_at).and_return(2.hours.ago) + end + + it "loads the dashboard page" do + get "/admin" + + expect(response).to render_template("spree/admin/overview/single_enterprise_dashboard") + end + + # The banner will show on all admin page, we are just testing it here + describe "terms of service updated banner" do + context "when terms of service has been updated" do + it "shows accept new ToS banner" do + enterprise_user.update(terms_of_service_accepted_at: nil) + + get "/admin" + + expect(response.body).to include("Terms of Service have been updated") + end + + context "when user has accepted new terms of service" do + it "doesn't show accept new ToS banner" do + enterprise_user.update(terms_of_service_accepted_at: 1.hour.ago) + + get "/admin" + + expect(response.body).to_not include("Terms of Service have been updated") + end + end + + # Shouldn't be possible + context "when user has accepted new terms of service in the future" do + it "shows accept new ToS banner" do + enterprise_user.update(terms_of_service_accepted_at: 1.hour.from_now) + + get "/admin" + + expect(response.body).to include("Terms of Service have been updated") + end + end + end + end + end +end From 94fb1397f0a37cc5fb5936d644783fc96b877002 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 10 Nov 2023 17:33:20 +1100 Subject: [PATCH 096/219] Set up data to hide ToS banner The banner can in some case overlap element we are trying to interact with. Add a fake ToS file and make sure user have accepted the ToS, so that the banner is not shown --- spec/factories/user_factory.rb | 1 + spec/system_helper.rb | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/spec/factories/user_factory.rb b/spec/factories/user_factory.rb index 8a5d7b4c3d..80b2ceca10 100644 --- a/spec/factories/user_factory.rb +++ b/spec/factories/user_factory.rb @@ -22,6 +22,7 @@ FactoryBot.define do confirmation_sent_at { '1970-01-01 00:00:00' } confirmed_at { '1970-01-01 00:00:01' } + terms_of_service_accepted_at { 1.hour.ago } before(:create) do |user, evaluator| if evaluator.confirmation_sent_at diff --git a/spec/system_helper.rb b/spec/system_helper.rb index 4af20f4f56..1b70ce8474 100644 --- a/spec/system_helper.rb +++ b/spec/system_helper.rb @@ -2,5 +2,12 @@ require "base_spec_helper" +RSpec.configure do |config| + # Set up a fake ToS file + config.before(:each, type: :system) do + allow(TermsOfServiceFile).to receive(:updated_at).and_return(2.hours.ago) + end +end + # system/support/ files contain system tests configurations and helpers Dir[File.join(__dir__, "system/support/**/*.rb")].sort.each { |file| require file } From 8e3e9ad18a8581b989bc12ba09692b33d55a1b2d Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 13 Nov 2023 11:00:20 +1100 Subject: [PATCH 097/219] Fix terms and condition spec Timecop intefere with the fake terms of service, so we need to manually accept the terms of service to make the banner disappear --- spec/system/admin/enterprises/terms_and_conditions_spec.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/system/admin/enterprises/terms_and_conditions_spec.rb b/spec/system/admin/enterprises/terms_and_conditions_spec.rb index 9b8eace1f2..c32495e128 100644 --- a/spec/system/admin/enterprises/terms_and_conditions_spec.rb +++ b/spec/system/admin/enterprises/terms_and_conditions_spec.rb @@ -37,6 +37,9 @@ describe "Uploading Terms and Conditions PDF" do Timecop.freeze(run_time = time) do click_button "Update" expect(distributor.reload.terms_and_conditions_blob.created_at).to eq run_time + # Timecop interfere with our fake TermsOfServiceFile (see spec/system_helper.rb), + # so we accept the terms of service so that the banner doesn't hide the update button + click_button "Accept terms of service" end expect(page). to have_content "Enterprise \"#{distributor.name}\" has been successfully updated!" From 44f22dc6346b25593f703d344a61df6d41069687 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 16 Nov 2023 11:57:33 +1100 Subject: [PATCH 098/219] Per review, check terms_of_service_accepted_at has been updated --- spec/controllers/spree/admin/users_controller_spec.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index bc2d825e8b..67d2d20461 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -48,7 +48,9 @@ describe Spree::Admin::UsersController do end it "updates terms_of_service_accepted_at" do - spree_post :accept_terms_of_services, id: user.id + expect do + spree_post :accept_terms_of_services, id: user.id + end.to change { user.reload.terms_of_service_accepted_at } expect(response).to have_http_status(:ok) end From 5c9abfefeefc315d5ed2b53f5e1219138c35de46 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 16 Nov 2023 11:59:51 +1100 Subject: [PATCH 099/219] Per review, remove useless code pass It shouldn't be possible for the update to fail, as we are not sending any parameter. Any other failure should be handled by rails already, ie missing csrf token. --- app/controllers/spree/admin/users_controller.rb | 8 +++----- .../controllers/spree/admin/users_controller_spec.rb | 12 ------------ 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/app/controllers/spree/admin/users_controller.rb b/app/controllers/spree/admin/users_controller.rb index 4b5f236b3d..6cc594cca0 100644 --- a/app/controllers/spree/admin/users_controller.rb +++ b/app/controllers/spree/admin/users_controller.rb @@ -58,11 +58,9 @@ module Spree end def accept_terms_of_services - if @user.update(terms_of_service_accepted_at: DateTime.now) - head :ok - else - head :unprocessable_entity - end + @user.update(terms_of_service_accepted_at: DateTime.now) + + head :ok end protected diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index 67d2d20461..841696a970 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -54,17 +54,5 @@ describe Spree::Admin::UsersController do expect(response).to have_http_status(:ok) end - - context "when something goes wrong" do - it "returns unprocessable entity" do - # mock update to make it fails - allow(user).to receive(:update).and_return(false) - allow(Spree::User).to receive(:find).and_return(user) - - spree_post :accept_terms_of_services, id: user.id - - expect(response).to have_http_status(:unprocessable_entity) - end - end end end From 25d1511f0bd8b75a439b20274515974db614d693 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 16 Nov 2023 14:09:26 +1100 Subject: [PATCH 100/219] Add Terms of Service banner styling for admin V3 --- app/webpacker/css/admin_v3/all.scss | 2 ++ .../css/admin_v3/terms_of_service_banner.scss | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 app/webpacker/css/admin_v3/terms_of_service_banner.scss diff --git a/app/webpacker/css/admin_v3/all.scss b/app/webpacker/css/admin_v3/all.scss index a8125ef1f5..664a4fda11 100644 --- a/app/webpacker/css/admin_v3/all.scss +++ b/app/webpacker/css/admin_v3/all.scss @@ -132,3 +132,5 @@ @import "app/components/confirm_modal_component/confirm_modal_component"; @import "app/components/vertical_ellipsis_menu/component"; // admin_v3 and only V3 @import "app/webpacker/css/admin/trix.scss"; + +@import "terms_of_service_banner"; // admin_v3 diff --git a/app/webpacker/css/admin_v3/terms_of_service_banner.scss b/app/webpacker/css/admin_v3/terms_of_service_banner.scss new file mode 100644 index 0000000000..32f3855571 --- /dev/null +++ b/app/webpacker/css/admin_v3/terms_of_service_banner.scss @@ -0,0 +1,31 @@ +.banner-container { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + z-index: 1000; + padding: 0 1.5%; + + .terms-of-service-banner { + background-color: $fair-pink; + border: none; + border-left: 4px solid $red; + border-radius: 4px; + margin: 0.5em 0; + padding: 0; + display: flex; + + .column-left { + width: 70%; + font-size: 1rem; + font-weight: bold; + padding: 0.75em 1em; + } + + .column-right { + width: 30%; + padding: 0.5em 1em; + text-align: right; + } + } +} From 62260678469977728bf22447fd831c95ef660d24 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 16 Nov 2023 14:09:51 +1100 Subject: [PATCH 101/219] Update translation to be inline with design mockup --- config/locales/en.yml | 6 +++--- spec/system/admin/enterprises/terms_and_conditions_spec.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index 7963e7c36e..ef94e36501 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -653,9 +653,9 @@ en: available_units: "Available Units" - terms_of_service_have_been_updated_html: "Terms of Service have been updated: %{tos_link}" - terms_of_service: Terms of Service - accept_terms_of_service: Accept terms of service + terms_of_service_have_been_updated_html: "Open Food Network's Terms of Service have been updated: %{tos_link}" + terms_of_service: Read Terms of Service + accept_terms_of_service: Accept Terms of Service shopfront_settings: embedded_shopfront_settings: "Embedded Shopfront Settings" enable_embedded_shopfronts: "Enable Embedded Shopfronts" diff --git a/spec/system/admin/enterprises/terms_and_conditions_spec.rb b/spec/system/admin/enterprises/terms_and_conditions_spec.rb index c32495e128..95a087ecd2 100644 --- a/spec/system/admin/enterprises/terms_and_conditions_spec.rb +++ b/spec/system/admin/enterprises/terms_and_conditions_spec.rb @@ -39,7 +39,7 @@ describe "Uploading Terms and Conditions PDF" do expect(distributor.reload.terms_and_conditions_blob.created_at).to eq run_time # Timecop interfere with our fake TermsOfServiceFile (see spec/system_helper.rb), # so we accept the terms of service so that the banner doesn't hide the update button - click_button "Accept terms of service" + click_button "Accept Terms of Service" end expect(page). to have_content "Enterprise \"#{distributor.name}\" has been successfully updated!" From 8371eada23fe10a2dc742001f88741d2b000749f Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 17 Nov 2023 13:56:32 +1100 Subject: [PATCH 102/219] Don't show the banner if enterprises are not required to accepte ToS --- app/controllers/spree/admin/base_controller.rb | 2 ++ spec/requests/spree/admin/overview_spec.rb | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/app/controllers/spree/admin/base_controller.rb b/app/controllers/spree/admin/base_controller.rb index 4dbfccc8b4..399609d40f 100644 --- a/app/controllers/spree/admin/base_controller.rb +++ b/app/controllers/spree/admin/base_controller.rb @@ -117,6 +117,8 @@ module Spree return unless spree_user_signed_in? + return if Spree::Config.enterprises_require_tos == false + return if accepted_tos? @terms_of_service_banner = true diff --git a/spec/requests/spree/admin/overview_spec.rb b/spec/requests/spree/admin/overview_spec.rb index b75c62539d..db3466371c 100644 --- a/spec/requests/spree/admin/overview_spec.rb +++ b/spec/requests/spree/admin/overview_spec.rb @@ -25,6 +25,8 @@ describe "/admin", type: :request do # The banner will show on all admin page, we are just testing it here describe "terms of service updated banner" do context "when terms of service has been updated" do + before { Spree::Config.enterprises_require_tos = true } + it "shows accept new ToS banner" do enterprise_user.update(terms_of_service_accepted_at: nil) @@ -53,6 +55,19 @@ describe "/admin", type: :request do expect(response.body).to include("Terms of Service have been updated") end end + + context "when enterprises don't need to accept ToS" do + before do + Spree::Config.enterprises_require_tos = false + enterprise_user.update(terms_of_service_accepted_at: nil) + end + + it "doesn't show accept new ToS banner" do + get "/admin" + + expect(response.body).to_not include("Terms of Service have been updated") + end + end end end end From d2b210c818942f72d11a16c8a27b498fddd3b756 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 17 Nov 2023 14:16:33 +1100 Subject: [PATCH 103/219] Update migration to set terms_of_service_accepted_at to time of deployment --- ..._add_terms_of_service_accepted_at_to_spree_users.rb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb index 8fee916865..b7b357adcd 100644 --- a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb +++ b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb @@ -1,5 +1,13 @@ class AddTermsOfServiceAcceptedAtToSpreeUsers < ActiveRecord::Migration[7.0] - def change + def up add_column :spree_users, :terms_of_service_accepted_at, :datetime + + if Spree::Config.enterprises_require_tos == true + Spree::User.update_all(terms_of_service_accepted_at: Time.zone.now) + end + end + + def down + remove_column :spree_users, :terms_of_service_accepted_at end end From 91862c126b4b8378ea8e5de30ed9348d10875c87 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 20 Nov 2023 11:00:25 +1100 Subject: [PATCH 104/219] Remove now useless fix Now that the banner isn't displayed if enterprise are not required to sign ToS, the fix is useless --- spec/system/admin/enterprises/terms_and_conditions_spec.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/system/admin/enterprises/terms_and_conditions_spec.rb b/spec/system/admin/enterprises/terms_and_conditions_spec.rb index 95a087ecd2..9b8eace1f2 100644 --- a/spec/system/admin/enterprises/terms_and_conditions_spec.rb +++ b/spec/system/admin/enterprises/terms_and_conditions_spec.rb @@ -37,9 +37,6 @@ describe "Uploading Terms and Conditions PDF" do Timecop.freeze(run_time = time) do click_button "Update" expect(distributor.reload.terms_and_conditions_blob.created_at).to eq run_time - # Timecop interfere with our fake TermsOfServiceFile (see spec/system_helper.rb), - # so we accept the terms of service so that the banner doesn't hide the update button - click_button "Accept Terms of Service" end expect(page). to have_content "Enterprise \"#{distributor.name}\" has been successfully updated!" From d0ba881aa28d35001eb109edd64889bacde00f0b Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 23 Nov 2023 14:17:04 +1100 Subject: [PATCH 105/219] Move acepting of ToS change to a reflex Spree::Admin::UserController is for super admin user only. Moving to a reflex simplifies the code by getting rid of a new route and a new stimulus controller --- .../spree/admin/users_controller.rb | 6 -- app/reflexes/enterprise/user_reflex.rb | 11 ++++ .../admin/_terms_of_service_banner.html.haml | 6 +- .../terms_of_service_banner_controller.js | 16 ----- config/routes/spree.rb | 6 +- .../spree/admin/users_controller_spec.rb | 17 ----- ...terms_of_service_banner_controller_test.js | 64 ------------------- spec/reflexes/enterprise/user_reflex_spec.rb | 27 ++++++++ 8 files changed, 42 insertions(+), 111 deletions(-) create mode 100644 app/reflexes/enterprise/user_reflex.rb delete mode 100644 app/webpacker/controllers/terms_of_service_banner_controller.js delete mode 100644 spec/javascripts/stimulus/terms_of_service_banner_controller_test.js create mode 100644 spec/reflexes/enterprise/user_reflex_spec.rb diff --git a/app/controllers/spree/admin/users_controller.rb b/app/controllers/spree/admin/users_controller.rb index 6cc594cca0..34714ba233 100644 --- a/app/controllers/spree/admin/users_controller.rb +++ b/app/controllers/spree/admin/users_controller.rb @@ -57,12 +57,6 @@ module Spree end end - def accept_terms_of_services - @user.update(terms_of_service_accepted_at: DateTime.now) - - head :ok - end - protected def collection diff --git a/app/reflexes/enterprise/user_reflex.rb b/app/reflexes/enterprise/user_reflex.rb new file mode 100644 index 0000000000..8996a2ab30 --- /dev/null +++ b/app/reflexes/enterprise/user_reflex.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Enterprise + class UserReflex < ApplicationReflex + def accept_terms_of_services + current_user.update(terms_of_service_accepted_at: DateTime.now) + + morph "#banner-container", "" + end + end +end diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index 17b3603986..03a961ebcd 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -1,9 +1,9 @@ -.banner-container +.banner-container#banner-container - if @terms_of_service_banner == true - %div{ class: "terms-of-service-banner", data: { controller: "terms-of-service-banner", "terms-of-service-banner-url-value": accept_terms_of_services_admin_user_path(current_spree_user&.id) }} + .terms-of-service-banner .column-left %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) .column-right - %button{ data: { action: "click->terms-of-service-banner#accept click->terms-of-service-banner#close_banner" } } + %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services", id: current_spree_user&.id } } = t("admin.accept_terms_of_service") diff --git a/app/webpacker/controllers/terms_of_service_banner_controller.js b/app/webpacker/controllers/terms_of_service_banner_controller.js deleted file mode 100644 index aca1dd08dd..0000000000 --- a/app/webpacker/controllers/terms_of_service_banner_controller.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Controller } from "stimulus"; - -export default class extends Controller { - static values = { url: String }; - - accept() { - const token = document.querySelector('meta[name="csrf-token"]').content; - // We don't really care if the update fails, if it fails it will result in the banner still - // being shown. - fetch(this.urlValue, { method: "post", headers: { "X-CSRF-Token": token } }); - } - - close_banner() { - this.element.remove(); - } -} diff --git a/config/routes/spree.rb b/config/routes/spree.rb index 46e22d2384..462073b486 100644 --- a/config/routes/spree.rb +++ b/config/routes/spree.rb @@ -48,11 +48,7 @@ Spree::Core::Engine.routes.draw do get '/search/known_users' => "search#known_users", :as => :search_known_users get '/search/customers' => 'search#customers', :as => :search_customers - resources :users do - member do - post :accept_terms_of_services - end - end + resources :users constraints FeatureToggleConstraint.new(:admin_style_v3, negate: true) do # Show old bulk products screen diff --git a/spec/controllers/spree/admin/users_controller_spec.rb b/spec/controllers/spree/admin/users_controller_spec.rb index 841696a970..96e7cc4df4 100644 --- a/spec/controllers/spree/admin/users_controller_spec.rb +++ b/spec/controllers/spree/admin/users_controller_spec.rb @@ -38,21 +38,4 @@ describe Spree::Admin::UsersController do expect(response).to redirect_to('/unauthorized') end end - - describe "#accept_terms_of_services" do - let(:user) { create(:user) } - - before do - allow(controller).to receive_messages spree_current_user: user - user.spree_roles << Spree::Role.find_or_create_by(name: 'admin') - end - - it "updates terms_of_service_accepted_at" do - expect do - spree_post :accept_terms_of_services, id: user.id - end.to change { user.reload.terms_of_service_accepted_at } - - expect(response).to have_http_status(:ok) - end - end end diff --git a/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js b/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js deleted file mode 100644 index 7ba5416063..0000000000 --- a/spec/javascripts/stimulus/terms_of_service_banner_controller_test.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @jest-environment jsdom - */ - -import { Application } from "stimulus" -import terms_of_service_banner_controller from "../../../app/webpacker/controllers/terms_of_service_banner_controller" - -describe("TermsOfServiceBannerController", () => { - beforeAll(() => { - const application = Application.start() - application.register("terms-of-service-banner", terms_of_service_banner_controller) - }) - - beforeEach(() => { - document.body.innerHTML = ` - -
-
- Terms of service has been updated - - -
-
- ` - }) - - describe("#close", () => { - it("removes the banner", () => { - const closeButton = document.getElementById("test-close-banner") - closeButton.click() - - expect(document.getElementById("test-controller-div")).toBeNull() - }) - }) - - describe("#accept", () => { - it("fires a request to accept terms of service", () => { - const mockFetch = jest.fn().mockImplementation( (_url, _options) => - Promise.resolve({ - ok: true, - json: () => "", - }) - ) - window.fetch = (_url, _options) => { - return mockFetch(_url, _options) - } - - const button = document.getElementById("test-accept-banner") - - button.click() - - expect(mockFetch).toHaveBeenCalledWith( - "admin/users/10/accept_terms_of_service", - { headers: { "X-CSRF-Token": "abc123authenticitytoken" }, method: "post" } - ) - }) - }) -}) diff --git a/spec/reflexes/enterprise/user_reflex_spec.rb b/spec/reflexes/enterprise/user_reflex_spec.rb new file mode 100644 index 0000000000..b70f01321d --- /dev/null +++ b/spec/reflexes/enterprise/user_reflex_spec.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +require "reflex_helper" + +describe Enterprise::UserReflex, type: :reflex do + let(:current_user) { create(:user) } + let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } + + describe "#accept_terms_of_services" do + subject(:reflex) do + build_reflex( + method_name: :accept_terms_of_services, **context, params: { id: current_user.id } + ) + end + + it "updates terms_of_service_accepted_at" do + expect{ + reflex.run(:accept_terms_of_services) + current_user.reload + }.to change{ current_user.terms_of_service_accepted_at } + end + + it "removes banner from the page" do + expect(reflex.run(:accept_terms_of_services)).to morph("#banner-container").with("") + end + end +end From aaa8f3f57226beffc7f068251a35c812ea9f51a5 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 23 Nov 2023 14:56:13 +1100 Subject: [PATCH 106/219] Per review, move logic to display ToS banner to a helper It easier to understand when we can see the logic to display the banner in the view. --- .../spree/admin/base_controller.rb | 22 +----------------- app/helpers/admin/terms_of_service_helper.rb | 23 +++++++++++++++++++ .../admin/_terms_of_service_banner.html.haml | 13 +++++------ app/views/spree/layouts/_admin_body.html.haml | 2 +- 4 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 app/helpers/admin/terms_of_service_helper.rb diff --git a/app/controllers/spree/admin/base_controller.rb b/app/controllers/spree/admin/base_controller.rb index 399609d40f..c03756814e 100644 --- a/app/controllers/spree/admin/base_controller.rb +++ b/app/controllers/spree/admin/base_controller.rb @@ -9,6 +9,7 @@ module Spree helper 'admin/injection' helper 'admin/orders' helper 'admin/enterprises' + helper 'admin/terms_of_service' helper 'enterprise_fees' helper 'angular_form' @@ -19,7 +20,6 @@ module Spree before_action :authorize_admin before_action :set_locale before_action :warn_invalid_order_cycles, if: :html_request? - before_action :check_updated_tos_accepted, if: :html_request? # Warn the user when they have an active order cycle with hubs that are not ready # for checkout (ie. does not have valid shipping and payment methods). @@ -111,26 +111,6 @@ module Spree name = controller_name.classify "::Api::Admin::#{prefix}#{name}Serializer".constantize end - - def check_updated_tos_accepted - @terms_of_service_banner = false - - return unless spree_user_signed_in? - - return if Spree::Config.enterprises_require_tos == false - - return if accepted_tos? - - @terms_of_service_banner = true - end - - def accepted_tos? - file_uploaded_at = TermsOfServiceFile.updated_at - - current_spree_user.terms_of_service_accepted_at.present? && - current_spree_user.terms_of_service_accepted_at > file_uploaded_at && - current_spree_user.terms_of_service_accepted_at < DateTime.now - end end end end diff --git a/app/helpers/admin/terms_of_service_helper.rb b/app/helpers/admin/terms_of_service_helper.rb new file mode 100644 index 0000000000..38683f1757 --- /dev/null +++ b/app/helpers/admin/terms_of_service_helper.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Admin + module TermsOfServiceHelper + def tos_need_accepting? + return false unless spree_user_signed_in? + + return false if Spree::Config.enterprises_require_tos == false + + !accepted_tos? + end + + private + + def accepted_tos? + file_uploaded_at = TermsOfServiceFile.updated_at + + current_spree_user.terms_of_service_accepted_at.present? && + current_spree_user.terms_of_service_accepted_at > file_uploaded_at && + current_spree_user.terms_of_service_accepted_at < DateTime.now + end + end +end diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index 03a961ebcd..409d1ccf7d 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -1,9 +1,8 @@ .banner-container#banner-container - - if @terms_of_service_banner == true - .terms-of-service-banner - .column-left - %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) - .column-right - %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services", id: current_spree_user&.id } } - = t("admin.accept_terms_of_service") + .terms-of-service-banner + .column-left + %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) + .column-right + %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services", id: current_spree_user&.id } } + = t("admin.accept_terms_of_service") diff --git a/app/views/spree/layouts/_admin_body.html.haml b/app/views/spree/layouts/_admin_body.html.haml index e730e1286b..63ed3a5284 100644 --- a/app/views/spree/layouts/_admin_body.html.haml +++ b/app/views/spree/layouts/_admin_body.html.haml @@ -59,7 +59,7 @@ %span= yield :sidebar_title = yield :sidebar - = render partial: "admin/terms_of_service_banner" + = render "admin/terms_of_service_banner" if tos_need_accepting? %script = raw "Spree.api_key = \"#{spree_current_user.try(:spree_api_key).to_s}\";" From 56b75ad9fb5f6848db32c183c76304836c976ffa Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 23 Nov 2023 16:24:30 +1100 Subject: [PATCH 107/219] Per review, stream line the css Reuse existing css when possible, and use variable for z-index so its easier to track usage of z-index --- app/views/admin/_terms_of_service_banner.html.haml | 4 ++-- app/webpacker/css/admin/globals/variables.scss | 4 ++++ app/webpacker/css/admin/terms_of_service_banner.scss | 4 ++-- app/webpacker/css/admin_v3/globals/variables.scss | 4 ++++ .../css/admin_v3/terms_of_service_banner.scss | 11 +++-------- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index 409d1ccf7d..30d252467c 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -1,5 +1,5 @@ -.banner-container#banner-container - .terms-of-service-banner +#banner-container + .terms-of-service-banner.form-actions .column-left %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) .column-right diff --git a/app/webpacker/css/admin/globals/variables.scss b/app/webpacker/css/admin/globals/variables.scss index 7ea08bbc7d..ef335f5492 100644 --- a/app/webpacker/css/admin/globals/variables.scss +++ b/app/webpacker/css/admin/globals/variables.scss @@ -149,3 +149,7 @@ $border-radius: 3px !default; $font-weight-bold: 600 !default; $font-weight-normal: 400 !default; + +// z-index +//-------------------------------------------------------------- +$tos-banner-z-index: 102; diff --git a/app/webpacker/css/admin/terms_of_service_banner.scss b/app/webpacker/css/admin/terms_of_service_banner.scss index ec46c268e0..5d86332018 100644 --- a/app/webpacker/css/admin/terms_of_service_banner.scss +++ b/app/webpacker/css/admin/terms_of_service_banner.scss @@ -1,9 +1,9 @@ -.banner-container { +#banner-container { position: fixed; bottom: 0; left: 0; width: 100%; - z-index: 1000; + z-index: $tos-banner-z-index; .terms-of-service-banner { padding: 18px; diff --git a/app/webpacker/css/admin_v3/globals/variables.scss b/app/webpacker/css/admin_v3/globals/variables.scss index e41f2a9597..48dc0ab62d 100644 --- a/app/webpacker/css/admin_v3/globals/variables.scss +++ b/app/webpacker/css/admin_v3/globals/variables.scss @@ -176,3 +176,7 @@ $font-weight-normal: 400 !default; $btn-relaxed-height: 40px !default; $btn-regular-height: 32px !default; $btn-condensed-height: 26px !default; + +// z-index +//-------------------------------------------------------------- +$tos-banner-z-index: 102; diff --git a/app/webpacker/css/admin_v3/terms_of_service_banner.scss b/app/webpacker/css/admin_v3/terms_of_service_banner.scss index 32f3855571..0d2b4f3f6f 100644 --- a/app/webpacker/css/admin_v3/terms_of_service_banner.scss +++ b/app/webpacker/css/admin_v3/terms_of_service_banner.scss @@ -1,18 +1,13 @@ -.banner-container { +#banner-container { position: fixed; bottom: 0; left: 0; width: 100%; - z-index: 1000; + z-index: $tos-banner-z-index; padding: 0 1.5%; + min-height: 50px; .terms-of-service-banner { - background-color: $fair-pink; - border: none; - border-left: 4px solid $red; - border-radius: 4px; - margin: 0.5em 0; - padding: 0; display: flex; .column-left { From f643ba50746c9d406de2a921eae3cd27466bbd06 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 23 Nov 2023 17:00:32 +1100 Subject: [PATCH 108/219] Update only User who are enterprise owner --- ...d_terms_of_service_accepted_at_to_spree_users.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb index b7b357adcd..ead6faa159 100644 --- a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb +++ b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb @@ -3,7 +3,18 @@ class AddTermsOfServiceAcceptedAtToSpreeUsers < ActiveRecord::Migration[7.0] add_column :spree_users, :terms_of_service_accepted_at, :datetime if Spree::Config.enterprises_require_tos == true - Spree::User.update_all(terms_of_service_accepted_at: Time.zone.now) + # Update only user who are owners of at least 1 enterprise + ActiveRecord::Base.sanitize_sql([" + UPDATE spree_users + SET terms_of_service_accepted_at = :time + WHERE spree_users.id IN( + SELECT id FROM spree_users WHERE EXISTS ( + SELECT 1 FROM enterprises WHERE spree_users.id = enterprises.owner_id + ) + )".squish, + time: Time.zone.now + ]) + ActiveRecord::Base.connection.execute(sql) end end From b3acdaf32441a940f4c36def239184c466a884f7 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 24 Nov 2023 09:41:25 +1100 Subject: [PATCH 109/219] Remove user.id parameter It's not needed, as the reflex get the curent user based on the user session --- app/views/admin/_terms_of_service_banner.html.haml | 2 +- spec/reflexes/enterprise/user_reflex_spec.rb | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index 30d252467c..f661015a45 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -3,6 +3,6 @@ .column-left %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) .column-right - %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services", id: current_spree_user&.id } } + %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services" } } = t("admin.accept_terms_of_service") diff --git a/spec/reflexes/enterprise/user_reflex_spec.rb b/spec/reflexes/enterprise/user_reflex_spec.rb index b70f01321d..67a4cbb1ab 100644 --- a/spec/reflexes/enterprise/user_reflex_spec.rb +++ b/spec/reflexes/enterprise/user_reflex_spec.rb @@ -7,14 +7,10 @@ describe Enterprise::UserReflex, type: :reflex do let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } describe "#accept_terms_of_services" do - subject(:reflex) do - build_reflex( - method_name: :accept_terms_of_services, **context, params: { id: current_user.id } - ) - end + subject(:reflex) { build_reflex(method_name: :accept_terms_of_services, **context) } it "updates terms_of_service_accepted_at" do - expect{ + expect { reflex.run(:accept_terms_of_services) current_user.reload }.to change{ current_user.terms_of_service_accepted_at } From b28f40b12507fa73256f039345a993f54497bf86 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 27 Nov 2023 11:49:40 +1100 Subject: [PATCH 110/219] Add system spec for ToS Banner --- spec/system/admin/tos_banner_spec.rb | 52 ++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 spec/system/admin/tos_banner_spec.rb diff --git a/spec/system/admin/tos_banner_spec.rb b/spec/system/admin/tos_banner_spec.rb new file mode 100644 index 0000000000..d691d4bff9 --- /dev/null +++ b/spec/system/admin/tos_banner_spec.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +require 'system_helper' + +describe 'Terms of Service banner' do + include AuthenticationHelper + + let(:admin_user) { create(:admin_user, terms_of_service_accepted_at: nil) } + + before do + Spree::Config.enterprises_require_tos = true + login_as admin_user + end + + context "when not accepted" do + it "shows banner" do + visit '/admin' + + expect(page).to have_content("Terms of Service have been updated") + + # Click on the accept button + expect do + click_button "Accept Terms of Service" + admin_user.reload + end.to change { admin_user.terms_of_service_accepted_at } + expect(page).to_not have_content("Terms of Service have been updated") + + # Check the banner doesn't show again once ToS has been accepted + page.refresh + expect(page).to_not have_content("Terms of Service have been updated") + end + end + + context "when updating Terms of Service" do + let(:test_file_path) { "public/Terms-of-service.pdf" } + + it "shows the banner" do + # ToS has been accepted + admin_user.update!(terms_of_service_accepted_at: 2.days.ago) + + # Upload new ToS + visit admin_terms_of_service_files_path + attach_file "Attachment", Rails.root.join(test_file_path) + click_button "Create Terms of service file" + + # check it has been uploaded + expect(page).to have_link "Terms of Service" + + expect(page).to have_content("Terms of Service have been updated") + end + end +end From 91e5227d803141123c3c1fbaf1b4d15ef49bae91 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 27 Nov 2023 11:54:04 +1100 Subject: [PATCH 111/219] Move to simple UserReflex --- app/reflexes/enterprise/user_reflex.rb | 11 ----------- app/reflexes/user_reflex.rb | 9 +++++++++ app/views/admin/_terms_of_service_banner.html.haml | 2 +- spec/reflexes/{enterprise => }/user_reflex_spec.rb | 2 +- 4 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 app/reflexes/enterprise/user_reflex.rb create mode 100644 app/reflexes/user_reflex.rb rename spec/reflexes/{enterprise => }/user_reflex_spec.rb (93%) diff --git a/app/reflexes/enterprise/user_reflex.rb b/app/reflexes/enterprise/user_reflex.rb deleted file mode 100644 index 8996a2ab30..0000000000 --- a/app/reflexes/enterprise/user_reflex.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -class Enterprise - class UserReflex < ApplicationReflex - def accept_terms_of_services - current_user.update(terms_of_service_accepted_at: DateTime.now) - - morph "#banner-container", "" - end - end -end diff --git a/app/reflexes/user_reflex.rb b/app/reflexes/user_reflex.rb new file mode 100644 index 0000000000..d4b5f59be5 --- /dev/null +++ b/app/reflexes/user_reflex.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class UserReflex < ApplicationReflex + def accept_terms_of_services + current_user.update(terms_of_service_accepted_at: DateTime.now) + + morph "#banner-container", "" + end +end diff --git a/app/views/admin/_terms_of_service_banner.html.haml b/app/views/admin/_terms_of_service_banner.html.haml index f661015a45..3adbba2f93 100644 --- a/app/views/admin/_terms_of_service_banner.html.haml +++ b/app/views/admin/_terms_of_service_banner.html.haml @@ -3,6 +3,6 @@ .column-left %p= t("admin.terms_of_service_have_been_updated_html", tos_link: link_to(t("admin.terms_of_service"), TermsOfServiceFile.current_url, target: "_blank")) .column-right - %button{ data: { reflex: "click->Enterprise::User#accept_terms_of_services" } } + %button{ data: { reflex: "click->user#accept_terms_of_services" } } = t("admin.accept_terms_of_service") diff --git a/spec/reflexes/enterprise/user_reflex_spec.rb b/spec/reflexes/user_reflex_spec.rb similarity index 93% rename from spec/reflexes/enterprise/user_reflex_spec.rb rename to spec/reflexes/user_reflex_spec.rb index 67a4cbb1ab..815557208f 100644 --- a/spec/reflexes/enterprise/user_reflex_spec.rb +++ b/spec/reflexes/user_reflex_spec.rb @@ -2,7 +2,7 @@ require "reflex_helper" -describe Enterprise::UserReflex, type: :reflex do +describe UserReflex, type: :reflex do let(:current_user) { create(:user) } let(:context) { { url: spree.admin_dashboard_url, connection: { current_user: } } } From 17fa6b616816c6cd4197202a757033dc12cfc1e7 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 27 Nov 2023 11:58:40 +1100 Subject: [PATCH 112/219] Per review, revert change --- ...erms_of_service_accepted_at_to_spree_users.rb | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb index ead6faa159..a65835075b 100644 --- a/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb +++ b/db/migrate/20231103061213_add_terms_of_service_accepted_at_to_spree_users.rb @@ -3,18 +3,10 @@ class AddTermsOfServiceAcceptedAtToSpreeUsers < ActiveRecord::Migration[7.0] add_column :spree_users, :terms_of_service_accepted_at, :datetime if Spree::Config.enterprises_require_tos == true - # Update only user who are owners of at least 1 enterprise - ActiveRecord::Base.sanitize_sql([" - UPDATE spree_users - SET terms_of_service_accepted_at = :time - WHERE spree_users.id IN( - SELECT id FROM spree_users WHERE EXISTS ( - SELECT 1 FROM enterprises WHERE spree_users.id = enterprises.owner_id - ) - )".squish, - time: Time.zone.now - ]) - ActiveRecord::Base.connection.execute(sql) + # There isn't really a way to know which user have access to admin pages, so we update + # everyone. It's technically wrong to say shoppers have accepted ToS, but they will be + # required to accept the terms if they sign up for an enterprise. + Spree::User.update_all(terms_of_service_accepted_at: Time.zone.now) end end From 9609ba4268aa1ca1f6338be352f41ded984d54fc Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 1 Dec 2023 13:28:15 +1100 Subject: [PATCH 113/219] Don't show the banner if no ToS file uploaded --- app/helpers/admin/terms_of_service_helper.rb | 2 ++ spec/requests/spree/admin/overview_spec.rb | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/helpers/admin/terms_of_service_helper.rb b/app/helpers/admin/terms_of_service_helper.rb index 38683f1757..87b0db25bc 100644 --- a/app/helpers/admin/terms_of_service_helper.rb +++ b/app/helpers/admin/terms_of_service_helper.rb @@ -7,6 +7,8 @@ module Admin return false if Spree::Config.enterprises_require_tos == false + return false if TermsOfServiceFile.current.nil? + !accepted_tos? end diff --git a/spec/requests/spree/admin/overview_spec.rb b/spec/requests/spree/admin/overview_spec.rb index db3466371c..14f03d6498 100644 --- a/spec/requests/spree/admin/overview_spec.rb +++ b/spec/requests/spree/admin/overview_spec.rb @@ -13,7 +13,11 @@ describe "/admin", type: :request do describe "GET /admin" do before do - allow(TermsOfServiceFile).to receive(:updated_at).and_return(2.hours.ago) + mocked_tos = double(TermsOfServiceFile, updated_at: 2.hours.ago) + allow(TermsOfServiceFile).to receive(:current).and_return(mocked_tos) + # Mock current_url so we don't have to set up a complicated TermsOfServiceFile mock + # with attachement + allow(TermsOfServiceFile).to receive(:current_url).and_return("tmp/tos.pdf") end it "loads the dashboard page" do @@ -56,6 +60,16 @@ describe "/admin", type: :request do end end + context "when no ToS has been uploaded" do + it "doesn't show accept new ToS banner" do + allow(TermsOfServiceFile).to receive(:current).and_return(nil) + + get "/admin" + + expect(response.body).to_not include("Terms of Service have been updated") + end + end + context "when enterprises don't need to accept ToS" do before do Spree::Config.enterprises_require_tos = false From a1d3b20e5bef4fbeed6373ddd0da94ac169bd1b5 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 1 Dec 2023 13:53:46 +1100 Subject: [PATCH 114/219] Remove the fact ToS file Now that we check if there is a ToS file before displaying the banner it's not needed anymore --- spec/system_helper.rb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/spec/system_helper.rb b/spec/system_helper.rb index 1b70ce8474..4af20f4f56 100644 --- a/spec/system_helper.rb +++ b/spec/system_helper.rb @@ -2,12 +2,5 @@ require "base_spec_helper" -RSpec.configure do |config| - # Set up a fake ToS file - config.before(:each, type: :system) do - allow(TermsOfServiceFile).to receive(:updated_at).and_return(2.hours.ago) - end -end - # system/support/ files contain system tests configurations and helpers Dir[File.join(__dir__, "system/support/**/*.rb")].sort.each { |file| require file } From d0edf57e74a18a50581d0d39b173b928a8e816ab Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 1 Dec 2023 13:55:21 +1100 Subject: [PATCH 115/219] Fix tos system spec Actually create a ToS file instead of using a fake one --- spec/system/admin/tos_banner_spec.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spec/system/admin/tos_banner_spec.rb b/spec/system/admin/tos_banner_spec.rb index d691d4bff9..48808896f3 100644 --- a/spec/system/admin/tos_banner_spec.rb +++ b/spec/system/admin/tos_banner_spec.rb @@ -6,9 +6,14 @@ describe 'Terms of Service banner' do include AuthenticationHelper let(:admin_user) { create(:admin_user, terms_of_service_accepted_at: nil) } + let(:test_file) { "Terms-of-service.pdf" } + let(:pdf_upload) do + Rack::Test::UploadedFile.new(Rails.public_path.join(test_file), "application/pdf") + end before do Spree::Config.enterprises_require_tos = true + TermsOfServiceFile.create!(attachment: pdf_upload) login_as admin_user end @@ -32,15 +37,13 @@ describe 'Terms of Service banner' do end context "when updating Terms of Service" do - let(:test_file_path) { "public/Terms-of-service.pdf" } - it "shows the banner" do # ToS has been accepted admin_user.update!(terms_of_service_accepted_at: 2.days.ago) # Upload new ToS visit admin_terms_of_service_files_path - attach_file "Attachment", Rails.root.join(test_file_path) + attach_file "Attachment", Rails.public_path.join(test_file) click_button "Create Terms of service file" # check it has been uploaded From 041d74b7c21dcf480cda4256903fa5a2f97e6017 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 5 Dec 2023 13:41:52 +1100 Subject: [PATCH 116/219] Fix CSS selector These styles should only apply to the form-actions in the products form. --- app/webpacker/css/admin/products_v3.scss | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index f8d9a8272f..123fa7f286 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -20,12 +20,14 @@ } // Form actions floats over other controls when active - .form-actions { - position: absolute; - top: -1em; - left: 0; - right: 0; - z-index: 1; // Ensure tom-select and .disabled-section are covered + #products-form { + .form-actions { + position: absolute; + top: -1em; + left: 0; + right: 0; + z-index: 1; // Ensure tom-select and .disabled-section are covered + } } // Hopefully these rules will be moved to component(s). From 772c641611387ae2b27b33fcb21b17373602305d Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 8 Dec 2023 13:50:24 +1100 Subject: [PATCH 117/219] Move banner up to not cover existing button --- app/webpacker/css/admin/terms_of_service_banner.scss | 2 +- app/webpacker/css/admin_v3/terms_of_service_banner.scss | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/webpacker/css/admin/terms_of_service_banner.scss b/app/webpacker/css/admin/terms_of_service_banner.scss index 5d86332018..52bed94d6e 100644 --- a/app/webpacker/css/admin/terms_of_service_banner.scss +++ b/app/webpacker/css/admin/terms_of_service_banner.scss @@ -1,6 +1,6 @@ #banner-container { position: fixed; - bottom: 0; + bottom: 50px; left: 0; width: 100%; z-index: $tos-banner-z-index; diff --git a/app/webpacker/css/admin_v3/terms_of_service_banner.scss b/app/webpacker/css/admin_v3/terms_of_service_banner.scss index 0d2b4f3f6f..da8c555498 100644 --- a/app/webpacker/css/admin_v3/terms_of_service_banner.scss +++ b/app/webpacker/css/admin_v3/terms_of_service_banner.scss @@ -1,11 +1,10 @@ #banner-container { position: fixed; - bottom: 0; + bottom: 50px; left: 0; width: 100%; z-index: $tos-banner-z-index; padding: 0 1.5%; - min-height: 50px; .terms-of-service-banner { display: flex; From 1bb4a667dad5109024b0c2124f6a50a67bef2650 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Thu, 14 Dec 2023 11:53:05 +1100 Subject: [PATCH 118/219] Move banner to orignal postion at the bottom of page --- app/webpacker/css/admin/terms_of_service_banner.scss | 2 +- app/webpacker/css/admin_v3/terms_of_service_banner.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/webpacker/css/admin/terms_of_service_banner.scss b/app/webpacker/css/admin/terms_of_service_banner.scss index 52bed94d6e..ca23f9b763 100644 --- a/app/webpacker/css/admin/terms_of_service_banner.scss +++ b/app/webpacker/css/admin/terms_of_service_banner.scss @@ -1,6 +1,6 @@ #banner-container { position: fixed; - bottom: 50px; + bottom: 0px; left: 0; width: 100%; z-index: $tos-banner-z-index; diff --git a/app/webpacker/css/admin_v3/terms_of_service_banner.scss b/app/webpacker/css/admin_v3/terms_of_service_banner.scss index da8c555498..70daaebb4d 100644 --- a/app/webpacker/css/admin_v3/terms_of_service_banner.scss +++ b/app/webpacker/css/admin_v3/terms_of_service_banner.scss @@ -1,6 +1,6 @@ #banner-container { position: fixed; - bottom: 50px; + bottom: 0px; left: 0; width: 100%; z-index: $tos-banner-z-index; From 2e301a67b077a9135d322869fbc43927ff933cde Mon Sep 17 00:00:00 2001 From: filipefurtad0 Date: Fri, 22 Dec 2023 14:24:37 +0000 Subject: [PATCH 119/219] Moves test introduced by #11799 to a section in the spec where a modal does not need acceptance Tests forward navigation --- spec/system/admin/enterprises_spec.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index a6b4cdbb8a..a70ed7084a 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -101,6 +101,7 @@ describe ' # expect(page).to have_checked_field "enterprise_enable_subscriptions_false" accept_alert do + scroll_to(:bottom) within(".side_menu") { click_link "Users" } end select2_select user.email, from: 'enterprise_owner_id' @@ -120,14 +121,6 @@ describe ' click_link "Primary Details" end - # Back navigation loads the tab content - page.execute_script('window.history.back()') - expect(page).to have_selector '#enterprise_description' - - accept_alert do - click_link "Primary Details" - end - # Unchecking hides the Properties tab uncheck 'enterprise_is_primary_producer' choose 'None' @@ -256,6 +249,14 @@ describe ' expect(page).to have_checked_field "enterprise_require_login_true" expect(page).to have_checked_field "enterprise_enable_subscriptions_true" + # Back navigation loads the tab content + page.execute_script('window.history.back()') + expect(page).to have_selector '#enterprise_description' + + # Forward navigation brings back the previous tab + page.execute_script('window.history.forward()') + expect(page).to have_content 'This is my shopfront message.' + # Test that the right input alert text is displayed accept_alert('Please enter a URL to insert') do first('.ta-text').click From 6ed447b6ac82f675f5424f45cea21b6d18cb93a8 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 23 Dec 2023 15:53:28 +0500 Subject: [PATCH 120/219] 11068: code refactor - Add single delete modal for product and variant each --- app/components/confirm_modal_component.rb | 17 ------------- .../confirm_modal_component.html.haml | 2 +- app/reflexes/products_reflex.rb | 25 ------------------- .../admin/products_v3/_delete_modal.html.haml | 15 +++++++++++ .../products_v3/_delete_modals.html.haml | 18 ------------- app/views/admin/products_v3/_table.html.haml | 8 +++--- app/views/admin/products_v3/index.html.haml | 4 +-- .../controllers/product_actions_controller.js | 18 +++++++++++++ .../controllers/products_controller.js | 2 +- config/locales/en.yml | 2 +- 10 files changed, 42 insertions(+), 69 deletions(-) create mode 100644 app/views/admin/products_v3/_delete_modal.html.haml delete mode 100644 app/views/admin/products_v3/_delete_modals.html.haml create mode 100644 app/webpacker/controllers/product_actions_controller.js diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 5c533dce3a..69e84d922a 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true class ConfirmModalComponent < ModalComponent - # @param confirm_reflex_data [Array(Hash)] - # format: {: value1, : value2} # @param actions_alignment_class [String] possible classes: 'justify-space-around', 'justify-end' def initialize( id:, @@ -26,7 +24,6 @@ class ConfirmModalComponent < ModalComponent @confirm_button_class = confirm_button_class @confirm_button_text = confirm_button_text @cancel_button_text = cancel_button_text - @confirm_reflex_data = transform_values_for_dataset(confirm_reflex_data) @actions_alignment_class = actions_alignment_class end @@ -36,18 +33,4 @@ class ConfirmModalComponent < ModalComponent "secondary" end - def confirm_button_attrs - @confirm_button_attrs ||= { - class: "button icon-plus #{@confirm_button_class}", - type: 'button', - value: @confirm_button_text, - 'data-action': @confirm_actions, - 'data-reflex': @confirm_reflexes, - id: 'confirmModalButton' - }.merge(@confirm_reflex_data) - end - - def transform_values_for_dataset(values) - values.transform_keys { |value_name| "data-#{value_name}" } - end end diff --git a/app/components/confirm_modal_component/confirm_modal_component.html.haml b/app/components/confirm_modal_component/confirm_modal_component.html.haml index 30ee073b1d..5fe1d1300b 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.html.haml +++ b/app/components/confirm_modal_component/confirm_modal_component.html.haml @@ -7,4 +7,4 @@ %div{ class: "modal-actions #{@actions_alignment_class}" } %input{ class: "button icon-plus #{close_button_class}", type: 'button', value: @cancel_button_text, "data-action": "click->modal#close" } - %input{ **confirm_button_attrs } + %input{ id: 'modal-confirm-button', class: "button icon-plus #{@confirm_button_class}", type: 'button', value: @confirm_button_text, "data-action": @confirm_actions, "data-reflex": @confirm_reflexes } diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index 8d6b5ee474..fc391fa715 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -106,9 +106,6 @@ class ProductsReflex < ApplicationReflex flashes: flash }) ).broadcast - render_product_delete_modals - render_variant_delete_modals - cable_ready.replace_state( url: current_url, ).broadcast_later @@ -116,28 +113,6 @@ class ProductsReflex < ApplicationReflex morph :nothing end - def render_product_delete_modals - product_ids = @products.pluck(:id) - cable_ready.replace( - selector: "#product-delete-action-modals", - html: render( - partial: "admin/products_v3/delete_modals", - locals: { object_ids: product_ids, object_type: 'product' } - ) - ).broadcast - end - - def render_variant_delete_modals - variant_ids = @products.joins(:variants).pluck('spree_variants.id') - cable_ready.replace( - selector: "#variant-delete-action-modals", - html: render( - partial: "admin/products_v3/delete_modals", - locals: { object_ids: variant_ids, object_type: 'variant' } - ) - ).broadcast - end - def render_products_form_with_flash locals = { products: @products } locals[:error_counts] = @error_counts if @error_counts.present? diff --git a/app/views/admin/products_v3/_delete_modal.html.haml b/app/views/admin/products_v3/_delete_modal.html.haml new file mode 100644 index 0000000000..a5f2ce01a9 --- /dev/null +++ b/app/views/admin/products_v3/_delete_modal.html.haml @@ -0,0 +1,15 @@ +-# object_type can be 'variant' or 'product' +- base_translation_key = ".delete_#{object_type}_modal" +- delete_modal = ConfirmModalComponent.new(id: "#{object_type}-delete-modal", + confirm_button_text: t("#{base_translation_key}.confirmation_text"), + cancel_button_text: t("#{base_translation_key}.cancellation_text"), + confirm_button_class: :red, + actions_alignment_class: 'justify-end', + confirm_reflexes: "click->products#delete_#{object_type}", + ) += render delete_modal do + %h2.margin-bottom-20{style:'color: black'} + = t("#{base_translation_key}.heading") + %p + = t("#{base_translation_key}.prompt") + .margin-bottom-50 diff --git a/app/views/admin/products_v3/_delete_modals.html.haml b/app/views/admin/products_v3/_delete_modals.html.haml deleted file mode 100644 index 6b7fb960e0..0000000000 --- a/app/views/admin/products_v3/_delete_modals.html.haml +++ /dev/null @@ -1,18 +0,0 @@ --# object_type can be 'variant' or 'product' -%div{ id: "#{object_type}-delete-action-modals" } - - base_translation_key = ".delete_#{object_type}_modal" - - object_ids.each do |object_id| - - delete_modal = ConfirmModalComponent.new(id: "delete_#{object_type}_#{object_id}", - confirm_button_text: t("#{base_translation_key}.confirmation_text"), - cancel_button_text: t("#{base_translation_key}.cancellation_text"), - confirm_button_class: :red, - actions_alignment_class: 'justify-end', - confirm_reflexes: "click->products#delete_#{object_type}", - confirm_reflex_data: {"current-id": object_id}, - ) - = render delete_modal do - %h2.margin-bottom-20{style:'color: black'} - = t("#{base_translation_key}.heading") - %p - = t("#{base_translation_key}.prompt") - .margin-bottom-50 diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 5066b023d2..9901a5a3d4 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,8 +70,8 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) - %p{ "data-controller": "modal-link", "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_product_#{product.id}", "class": "delete" } + %p{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", + "data-modal-link-target-value": "product-delete-modal", "class": "delete", "data-product-actions-id-value": product.id } = t('admin.products_page.actions.delete') - product.variants.each_with_index do |variant, variant_index| @@ -112,6 +112,6 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) - if product.variants.size > 1 - %p{ "data-controller": "modal-link", "data-action": "click->modal-link#open", - "data-modal-link-target-value": "delete_variant_#{variant.id}", "class": "delete" } + %p{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", + "data-modal-link-target-value": "variant-delete-modal", "class": "delete", "data-product-actions-id-value": variant.id } = t('admin.products_page.actions.delete') diff --git a/app/views/admin/products_v3/index.html.haml b/app/views/admin/products_v3/index.html.haml index 98a2eb6e1a..a7833c22df 100644 --- a/app/views/admin/products_v3/index.html.haml +++ b/app/views/admin/products_v3/index.html.haml @@ -17,5 +17,5 @@ .spinner = t('.loading') #products-content - #product-delete-action-modals - #variant-delete-action-modals + - %w[product variant].each do |object_type| + = render partial: 'delete_modal', locals: { object_type: } diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js new file mode 100644 index 0000000000..605b3f5bd8 --- /dev/null +++ b/app/webpacker/controllers/product_actions_controller.js @@ -0,0 +1,18 @@ +import ApplicationController from "./application_controller"; + +export default class extends ApplicationController { + static values = { id: Number }; + + setDeleteModalDataSet(event) { + try { + const modalId = this.element.dataset.modalLinkTargetValue; // whether variant or product delete modal + const deleteButtonQuery = `#${modalId} #modal-confirm-button`; + const deleteButton = document.querySelector(deleteButtonQuery); + deleteButton.setAttribute("data-current-id", this.idValue); + } catch (e) { + // In case of any type of error in setting the dataset value, stop the further actions i.e. opening the modal + event.stopImmediatePropagation(); + throw e; + } + } +} diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index d4ba466373..770ad16944 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -12,7 +12,7 @@ export default class extends ApplicationController { beforeReflex(element) { // To prevent the double click on the confirm modal's confirmation button - if (element.id === "confirmModalButton") { + if (element.id === "modal-confirm-button") { window.dispatchEvent(new Event("modal:close")); } this.showLoading(); diff --git a/config/locales/en.yml b/config/locales/en.yml index d5fde0c609..e57a8a45ab 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -816,7 +816,7 @@ en: header: title: Bulk Edit Products loading: Loading your products - delete_modals: + delete_modal: delete_product_modal: heading: "Delete product" prompt: "This will permanently remove it from your list." From 87d328d6d6e18d3e76eb851602841aa435a4b224 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 23 Dec 2023 16:08:26 +0500 Subject: [PATCH 121/219] 11068: fix specs --- app/components/confirm_modal_component.rb | 2 -- spec/system/admin/products_v3/products_spec.rb | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/components/confirm_modal_component.rb b/app/components/confirm_modal_component.rb index 69e84d922a..8149a729e3 100644 --- a/app/components/confirm_modal_component.rb +++ b/app/components/confirm_modal_component.rb @@ -12,7 +12,6 @@ class ConfirmModalComponent < ModalComponent confirm_button_class: :primary, confirm_button_text: I18n.t('js.admin.modals.confirm'), cancel_button_text: I18n.t('js.admin.modals.cancel'), - confirm_reflex_data: {}, actions_alignment_class: 'justify-space-around' ) super(id:, close_button: true) @@ -32,5 +31,4 @@ class ConfirmModalComponent < ModalComponent def close_button_class "secondary" end - end diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 87e8a7bee8..58b16a44ba 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -412,7 +412,7 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 describe "Deleting Feature" do let!(:product_a) { create(:simple_product, name: "Apples", sku: "APL-00") } - let(:delete_option_selector) { "p[data-controller='modal-link'].delete" } + let(:delete_option_selector) { "p[data-controller='modal-link product-actions'].delete" } let(:product_selector) { row_containing_name("Apples") } let(:variant_selector) { row_containing_name("Medium box") } let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } From e9fe66748ac8f9e9fa7fba96891de04b8e193cdd Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 14 Dec 2023 10:03:18 +1100 Subject: [PATCH 122/219] Replace 'orange' class with 'red' It was the same colour anyway --- .../admin/overview/_order_cycles.html.haml | 2 +- .../admin_v3/dashboard/dashboard_item.scss | 26 ------------------- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index 3d26daa37f..8ce3ff3d73 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -1,4 +1,4 @@ -- color_class = @order_cycle_count > 0 ? "blue" : "orange" +- color_class = @order_cycle_count > 0 ? "blue" : "red" - icon_class = @order_cycle_count > 0 ? "icon-ok-sign" : "icon-warning-sign" %div.dashboard_item.seven.columns.omega#order_cycles %div.header.sixteen.columns.alpha{class: color_class} diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index 3316704ef1..17fd5c8015 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -21,10 +21,6 @@ div.dashboard_item { &.red { background-color: $color-warning; } - - &.orange { - background-color: $color-warning; - } } div.header { @@ -48,15 +44,6 @@ div.dashboard_item { } } - &.orange { - border-color: $color-warning; - border-width: 3px; - - h3 { - color: $color-warning; - } - } - h3.alpha { height: 100%; padding: 10px 5px 0px 3%; @@ -156,18 +143,9 @@ div.dashboard_item { font-size: 30px; } - &.orange { - color: $color-warning; - border: solid $color-warning; - } - &.red { color: $color-warning; border: solid $color-warning; - } - - &.orange, - &.red { border-width: 0px 3px 0px 3px; } @@ -217,10 +195,6 @@ div.dashboard_item { font-weight: bold; text-align: center; - &.orange { - background-color: $color-warning; - } - &.blue { background-color: $spree-blue; } From 6ca98d497acb3b6e25eae582ecd55818c8c3d933 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 14 Dec 2023 10:06:19 +1100 Subject: [PATCH 123/219] Remove unnecessary 'blue' class Buttons are already blue. And we don't want the text to be blue. This resolves #11865 --- app/views/spree/admin/overview/_enterprises.html.haml | 2 +- app/views/spree/admin/overview/_enterprises_header.html.haml | 2 +- app/views/spree/admin/overview/_order_cycles.html.haml | 4 ++-- app/views/spree/admin/overview/_products.html.haml | 4 ++-- app/webpacker/css/admin_v3/dashboard/dashboard_item.scss | 4 ---- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/views/spree/admin/overview/_enterprises.html.haml b/app/views/spree/admin/overview/_enterprises.html.haml index e022623928..ed3d93e663 100644 --- a/app/views/spree/admin/overview/_enterprises.html.haml +++ b/app/views/spree/admin/overview/_enterprises.html.haml @@ -27,6 +27,6 @@ %div.sixteen.columns.alpha.list = render partial: 'enterprise_row', collection: @enterprises, as: :enterprise - %a.sixteen.columns.alpha.button.bottom.blue{ href: "#{main_app.admin_enterprises_path}" } + %a.sixteen.columns.alpha.button.bottom{ href: "#{main_app.admin_enterprises_path}" } = t "spree_admin_overview_enterprises_footer" %span.icon-arrow-right diff --git a/app/views/spree/admin/overview/_enterprises_header.html.haml b/app/views/spree/admin/overview/_enterprises_header.html.haml index a189fe40d6..26b501556f 100644 --- a/app/views/spree/admin/overview/_enterprises_header.html.haml +++ b/app/views/spree/admin/overview/_enterprises_header.html.haml @@ -3,7 +3,7 @@ = t "spree_admin_overview_enterprises_header" - if @enterprises.any? - if spree_current_user.can_own_more_enterprises? - %a.three.columns.omega.icon-plus.button.blue.white-bottom{ href: "#{main_app.new_admin_enterprise_path}" } + %a.three.columns.omega.icon-plus.button.white-bottom{ href: "#{main_app.new_admin_enterprise_path}" } = t "spree_admin_enterprises_create_new" - else %a{ "ofn-with-tip" => t('.ofn_with_tip') } diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index 8ce3ff3d73..dcf288df6e 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -1,11 +1,11 @@ -- color_class = @order_cycle_count > 0 ? "blue" : "red" +- color_class = @order_cycle_count > 0 ? "" : "red" - icon_class = @order_cycle_count > 0 ? "icon-ok-sign" : "icon-warning-sign" %div.dashboard_item.seven.columns.omega#order_cycles %div.header.sixteen.columns.alpha{class: color_class} %h3.ten.columns.alpha = t ".order_cycles" - if @order_cycle_count > 0 - %a.six.columns.omega.icon-plus.button.blue{ href: main_app.new_admin_order_cycle_path } + %a.six.columns.omega.icon-plus.button{ href: main_app.new_admin_order_cycle_path } = t "spree_admin_enterprises_create_new" - else %a{ "ofn-with-tip" => t(".order_cycles_tip") } diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index c1e3aa1d11..f797e2b2fd 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -3,7 +3,7 @@ %h3.ten.columns.alpha = t "products" - if @product_count > 0 - %a.six.columns.omega.icon-plus.button.blue{ href: "#{new_admin_product_path}" } + %a.six.columns.omega.icon-plus.button{ href: "#{new_admin_product_path}" } = t "spree_admin_enterprises_create_new" - else %a{ "ofn-with-tip" => t(".products_tip") } @@ -15,7 +15,7 @@ = t(".active_products", count: @product_count ) %span.three.columns.omega %span.icon-ok-sign - %a.sixteen.columns.alpha.button.bottom.blue{ href: "#{admin_products_path}" } + %a.sixteen.columns.alpha.button.bottom{ href: "#{admin_products_path}" } = t "spree_admin_enterprises_producers_manage_products" %span.icon-arrow-right - else diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index 17fd5c8015..f64b0a2a7b 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -195,10 +195,6 @@ div.dashboard_item { font-weight: bold; text-align: center; - &.blue { - background-color: $spree-blue; - } - &.red { background-color: $color-warning; } From e379ee761bc93f1e873d5e11a05c61edfc2ca274 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 14 Dec 2023 10:10:30 +1100 Subject: [PATCH 124/219] Refactor 'positive' and 'zero' methods are preferred in this case. --- app/views/spree/admin/overview/_order_cycles.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index dcf288df6e..e47e8332f5 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -1,4 +1,4 @@ -- color_class = @order_cycle_count > 0 ? "" : "red" +- color_class = "red" unless @order_cycle_count > 0 - icon_class = @order_cycle_count > 0 ? "icon-ok-sign" : "icon-warning-sign" %div.dashboard_item.seven.columns.omega#order_cycles %div.header.sixteen.columns.alpha{class: color_class} From 39d66c082b86ee88932e99e24f6694b148723188 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 14 Dec 2023 10:12:42 +1100 Subject: [PATCH 125/219] Remove unused green class --- .../css/admin_v3/dashboard/dashboard_item.scss | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index f64b0a2a7b..5dd144cc05 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -14,10 +14,6 @@ div.dashboard_item { padding: 0px 6px; border-radius: 10px; - &.green { - background-color: $spree-green; - } - &.red { background-color: $color-warning; } @@ -178,13 +174,6 @@ div.dashboard_item { .icon-ok-sign { color: #fff; } - - .text-icon { - &.green { - color: $spree-green; - background-color: #fff; - } - } } } } From 3319f38e6ca2acb0e81bb0ec77b8048f25464da8 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 14 Dec 2023 10:14:04 +1100 Subject: [PATCH 126/219] Rename class to signal intent Because the HTML is changed, I had to also update the old stylesheet too. --- app/views/spree/admin/overview/_enterprises.html.haml | 4 ++-- .../spree/admin/overview/_enterprises_header.html.haml | 2 +- app/views/spree/admin/overview/_order_cycles.html.haml | 6 +++--- app/views/spree/admin/overview/_products.html.haml | 6 +++--- app/webpacker/css/admin/dashboard_item.scss | 10 +++++----- .../css/admin_v3/dashboard/dashboard_item.scss | 8 ++++---- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/views/spree/admin/overview/_enterprises.html.haml b/app/views/spree/admin/overview/_enterprises.html.haml index ed3d93e663..bef20ba29c 100644 --- a/app/views/spree/admin/overview/_enterprises.html.haml +++ b/app/views/spree/admin/overview/_enterprises.html.haml @@ -2,12 +2,12 @@ = render 'enterprises_header' - if @enterprises.empty? - %div.sixteen.columns.alpha.list-item.red + %div.sixteen.columns.alpha.list-item.warning %span.text.fifteen.columns.alpha = t "spree_admin_enterprises_none_text" %span.one.columns.omega %span.icon-remove-sign - %a.sixteen.columns.alpha.button.bottom.red{ href: "#{main_app.new_admin_enterprise_path}" } + %a.sixteen.columns.alpha.button.bottom.warning{ href: "#{main_app.new_admin_enterprise_path}" } = t "spree_admin_enterprises_none_create_a_new_enterprise" %span.icon-arrow-right diff --git a/app/views/spree/admin/overview/_enterprises_header.html.haml b/app/views/spree/admin/overview/_enterprises_header.html.haml index 26b501556f..760043dcfa 100644 --- a/app/views/spree/admin/overview/_enterprises_header.html.haml +++ b/app/views/spree/admin/overview/_enterprises_header.html.haml @@ -1,4 +1,4 @@ -%div.header.sixteen.columns.alpha{ :class => "#{@enterprises.count > 0 ? "" : "red"}"} +%div.header.sixteen.columns.alpha{ :class => "#{@enterprises.count > 0 ? "" : "warning"}"} %h3.thirteen.columns.alpha = t "spree_admin_overview_enterprises_header" - if @enterprises.any? diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index e47e8332f5..f18ac33299 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -1,10 +1,10 @@ -- color_class = "red" unless @order_cycle_count > 0 -- icon_class = @order_cycle_count > 0 ? "icon-ok-sign" : "icon-warning-sign" +- color_class = "warning" unless @order_cycle_count.positive? +- icon_class = @order_cycle_count.positive? ? "icon-ok-sign" : "icon-warning-sign" %div.dashboard_item.seven.columns.omega#order_cycles %div.header.sixteen.columns.alpha{class: color_class} %h3.ten.columns.alpha = t ".order_cycles" - - if @order_cycle_count > 0 + - if @order_cycle_count.positive? %a.six.columns.omega.icon-plus.button{ href: main_app.new_admin_order_cycle_path } = t "spree_admin_enterprises_create_new" - else diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index f797e2b2fd..861f7cec2c 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -1,5 +1,5 @@ %div.dashboard_item.seven.columns.alpha#products - %div.header.sixteen.columns.alpha{ :class => "#{@product_count > 0 ? "" : "red"}"} + %div.header.sixteen.columns.alpha{ :class => "#{@product_count > 0 ? "" : "warning"}"} %h3.ten.columns.alpha = t "products" - if @product_count > 0 @@ -19,11 +19,11 @@ = t "spree_admin_enterprises_producers_manage_products" %span.icon-arrow-right - else - %div.sixteen.columns.alpha.list-item.red + %div.sixteen.columns.alpha.list-item.warning %span.thirteen.columns.alpha = t(".active_products", count: @product_count ) %span.three.columns.omega %span.icon-remove-sign - %a.sixteen.columns.alpha.button.bottom.red{ href: "#{new_admin_product_path}" } + %a.sixteen.columns.alpha.button.bottom.warning{ href: "#{new_admin_product_path}" } = t "spree_admin_enterprises_create_new_product" %span.icon-arrow-right diff --git a/app/webpacker/css/admin/dashboard_item.scss b/app/webpacker/css/admin/dashboard_item.scss index 67498fa352..567d1f63e5 100644 --- a/app/webpacker/css/admin/dashboard_item.scss +++ b/app/webpacker/css/admin/dashboard_item.scss @@ -18,7 +18,7 @@ div.dashboard_item { background-color: $spree-green; } - &.red { + &.warning { background-color: $color-warning; } @@ -39,7 +39,7 @@ div.dashboard_item { bottom: 5px; } - &.red { + &.warning { border-color: $color-warning; border-width: 3px; @@ -160,13 +160,13 @@ div.dashboard_item { border: solid $color-warning; } - &.red { + &.warning { color: $color-warning; border: solid $color-warning; } &.orange, - &.red { + &.warning { border-width: 0px 3px 0px 3px; } @@ -224,7 +224,7 @@ div.dashboard_item { background-color: $spree-blue; } - &.red { + &.warning { background-color: $color-warning; } diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index 5dd144cc05..4e7fe00024 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -14,7 +14,7 @@ div.dashboard_item { padding: 0px 6px; border-radius: 10px; - &.red { + &.warning { background-color: $color-warning; } } @@ -31,7 +31,7 @@ div.dashboard_item { bottom: 5px; } - &.red { + &.warning { border-color: $color-warning; border-width: 3px; @@ -139,7 +139,7 @@ div.dashboard_item { font-size: 30px; } - &.red { + &.warning { color: $color-warning; border: solid $color-warning; border-width: 0px 3px 0px 3px; @@ -184,7 +184,7 @@ div.dashboard_item { font-weight: bold; text-align: center; - &.red { + &.warning { background-color: $color-warning; } From c5a86341dc2f5400af806a94ff3d913f5ded39d1 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sun, 24 Dec 2023 02:00:26 +0500 Subject: [PATCH 127/219] 11068: update sleep logic in specs --- spec/system/admin/products_v3/products_spec.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 58b16a44ba..8f12b8d7c1 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -516,7 +516,8 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 end expect(page).to_not have_selector(modal_selector) - sleep(0.5) # delay for loading spinner to complete + # Make sure the products loading spinner is hidden + wait_for_class('.spinner-overlay', 'hidden') expect(page).to_not have_selector(variant_selector) within success_flash_message_selector do expect(page).to have_content("Successfully deleted the variant") @@ -533,7 +534,8 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 page.find(delete_button_selector).click end expect(page).to_not have_selector(modal_selector) - sleep(0.5) # delay for loading spinner to complete + # Make sure the products loading spinner is hidden + wait_for_class('.spinner-overlay', 'hidden') expect(page).to_not have_selector(product_selector) within success_flash_message_selector do expect(page).to have_content("Successfully deleted the product") @@ -623,4 +625,12 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 def row_containing_name(value) "tr:has(input[aria-label=Name][value='#{value}'])" end + + # Wait for an element with the given CSS selector and class to be present + def wait_for_class(selector, class_name) + max_wait_time = Capybara.default_max_wait_time + Timeout.timeout(max_wait_time) do + until page.has_css?(selector, class: class_name, visible: false); end + end + end end From dddebae56a9c2b5e88ed410408d77dc4d703d1b7 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 17:52:21 +0100 Subject: [PATCH 128/219] Unify coding style --- app/views/spree/admin/overview/_order_cycles.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index f18ac33299..90760932dd 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -13,7 +13,7 @@ %div.sixteen.columns.alpha.list %div.sixteen.columns.alpha.list-item{class: color_class} %span.thirteen.columns.alpha - = t('.you_have_active', count: @order_cycle_count) + = t(".you_have_active", count: @order_cycle_count) %span.three.columns.omega %span{class: icon_class} %a.sixteen.columns.alpha.button.bottom{ href: main_app.admin_order_cycles_path, class: color_class } From ddd455a73eedaaf1bd7c08e2e590e615c6cb8e15 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 17:58:21 +0100 Subject: [PATCH 129/219] Use methodology from order_cycles for products --- .../spree/admin/overview/_products.html.haml | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index 861f7cec2c..3edbdc4e90 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -1,29 +1,26 @@ +- color_class = "warning" unless @product_count.positive? +- icon_class = @product_count.positive? ? "icon-ok-sign" : "icon-remove-sign" %div.dashboard_item.seven.columns.alpha#products - %div.header.sixteen.columns.alpha{ :class => "#{@product_count > 0 ? "" : "warning"}"} + %div.header.sixteen.columns.alpha{class: color_class} %h3.ten.columns.alpha = t "products" - - if @product_count > 0 - %a.six.columns.omega.icon-plus.button{ href: "#{new_admin_product_path}" } + - if @product_count.positive? + %a.six.columns.omega.icon-plus.button{ href: new_admin_product_path } = t "spree_admin_enterprises_create_new" - else %a{ "ofn-with-tip" => t(".products_tip") } = t "admin.whats_this" %div.sixteen.columns.alpha.list - - if @product_count > 0 - %div.sixteen.columns.alpha.list-item - %span.thirteen.columns.alpha - = t(".active_products", count: @product_count ) - %span.three.columns.omega - %span.icon-ok-sign - %a.sixteen.columns.alpha.button.bottom{ href: "#{admin_products_path}" } + %div.sixteen.columns.alpha.list-item{class: color_class} + %span.thirteen.columns.alpha + = t(".active_products", count: @product_count) + %span.three.columns.omega + %span{class: icon_class} + - if @product_count.positive? + %a.sixteen.columns.alpha.button.bottom{ href: admin_products_path, class: color_class } = t "spree_admin_enterprises_producers_manage_products" %span.icon-arrow-right - else - %div.sixteen.columns.alpha.list-item.warning - %span.thirteen.columns.alpha - = t(".active_products", count: @product_count ) - %span.three.columns.omega - %span.icon-remove-sign - %a.sixteen.columns.alpha.button.bottom.warning{ href: "#{new_admin_product_path}" } + %a.sixteen.columns.alpha.button.bottom{ href: new_admin_product_path, class: color_class } = t "spree_admin_enterprises_create_new_product" %span.icon-arrow-right From 4e6f43afab06876fe9554ac204da55e7c895cf31 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 17:59:27 +0100 Subject: [PATCH 130/219] Add styles for hovering and warning --- app/webpacker/css/admin_v3/dashboard/dashboard_item.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index 4e7fe00024..9c475ce747 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -186,10 +186,17 @@ div.dashboard_item { &.warning { background-color: $color-warning; + border-color: $color-warning; + + &:focus { + border-color: $color-btn-hover-bg; + } + } &:hover { background-color: $color-btn-hover-bg; + border-color: $color-btn-hover-bg; } &.bottom { From 2ab3efe5de18acdab81def742c0ecd691b418c39 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 17:59:48 +0100 Subject: [PATCH 131/219] Adjust outline when focusing the overflowing enterprisie list (was red in Firefox) --- app/webpacker/css/admin/dashboard_item.scss | 4 ++++ app/webpacker/css/admin_v3/dashboard/dashboard_item.scss | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/app/webpacker/css/admin/dashboard_item.scss b/app/webpacker/css/admin/dashboard_item.scss index 567d1f63e5..14fe92a07a 100644 --- a/app/webpacker/css/admin/dashboard_item.scss +++ b/app/webpacker/css/admin/dashboard_item.scss @@ -101,6 +101,10 @@ div.dashboard_item { max-height: 250px; overflow-y: auto; overflow-x: hidden; + + &:focus { + outline: none; + } } .list-title { diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index 9c475ce747..b0bc2bc44d 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -85,6 +85,10 @@ div.dashboard_item { max-height: 250px; overflow-y: auto; overflow-x: hidden; + + &:focus { + outline: thin dotted; + } } .list-title { From ad508c36e5768fab67b31ab2dee117aa9475028c Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 18:12:31 +0100 Subject: [PATCH 132/219] Avoid overflow of enterprise list when only few enterprises present --- app/webpacker/css/admin/dashboard_item.scss | 2 +- app/webpacker/css/admin_v3/dashboard/dashboard_item.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/webpacker/css/admin/dashboard_item.scss b/app/webpacker/css/admin/dashboard_item.scss index 14fe92a07a..7522b91836 100644 --- a/app/webpacker/css/admin/dashboard_item.scss +++ b/app/webpacker/css/admin/dashboard_item.scss @@ -125,7 +125,7 @@ div.dashboard_item { .list-item { border: solid $spree-blue; border-width: 0px 1px 0px 1px; - height: 38px; + height: 41px; span.alpha { font-weight: bold; diff --git a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss index b0bc2bc44d..f52b935619 100644 --- a/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss +++ b/app/webpacker/css/admin_v3/dashboard/dashboard_item.scss @@ -109,7 +109,7 @@ div.dashboard_item { .list-item { border: solid $spree-blue; border-width: 0px 1px 0px 1px; - height: 38px; + height: 41px; span.alpha { font-weight: bold; From 120b2c363ded61686c774766748c5a56721ae1bf Mon Sep 17 00:00:00 2001 From: drummer83 Date: Sun, 24 Dec 2023 20:29:41 +0100 Subject: [PATCH 133/219] Fixing indentation error --- .../spree/admin/overview/_order_cycles.html.haml | 6 +++--- .../spree/admin/overview/_products.html.haml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/views/spree/admin/overview/_order_cycles.html.haml b/app/views/spree/admin/overview/_order_cycles.html.haml index 90760932dd..642f28ce33 100644 --- a/app/views/spree/admin/overview/_order_cycles.html.haml +++ b/app/views/spree/admin/overview/_order_cycles.html.haml @@ -16,6 +16,6 @@ = t(".you_have_active", count: @order_cycle_count) %span.three.columns.omega %span{class: icon_class} - %a.sixteen.columns.alpha.button.bottom{ href: main_app.admin_order_cycles_path, class: color_class } - = t ".manage_order_cycles" - %span.icon-arrow-right + %a.sixteen.columns.alpha.button.bottom{ href: main_app.admin_order_cycles_path, class: color_class } + = t ".manage_order_cycles" + %span.icon-arrow-right diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index 3edbdc4e90..d9d3af72d2 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -16,11 +16,11 @@ = t(".active_products", count: @product_count) %span.three.columns.omega %span{class: icon_class} - - if @product_count.positive? - %a.sixteen.columns.alpha.button.bottom{ href: admin_products_path, class: color_class } - = t "spree_admin_enterprises_producers_manage_products" - %span.icon-arrow-right - - else - %a.sixteen.columns.alpha.button.bottom{ href: new_admin_product_path, class: color_class } - = t "spree_admin_enterprises_create_new_product" - %span.icon-arrow-right + - if @product_count.positive? + %a.sixteen.columns.alpha.button.bottom{ href: admin_products_path, class: color_class } + = t "spree_admin_enterprises_producers_manage_products" + %span.icon-arrow-right + - else + %a.sixteen.columns.alpha.button.bottom{ href: new_admin_product_path, class: color_class } + = t "spree_admin_enterprises_create_new_product" + %span.icon-arrow-right \ No newline at end of file From 13e71d5b8cce1cad878719c1c4c3ea61755961c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 09:06:40 +0000 Subject: [PATCH 134/219] Bump rubocop-rails from 2.23.0 to 2.23.1 Bumps [rubocop-rails](https://github.com/rubocop/rubocop-rails) from 2.23.0 to 2.23.1. - [Release notes](https://github.com/rubocop/rubocop-rails/releases) - [Changelog](https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop-rails/compare/v2.23.0...v2.23.1) --- updated-dependencies: - dependency-name: rubocop-rails dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 136245d5e5..320d046d1a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -647,7 +647,7 @@ GEM unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.30.0) parser (>= 3.2.1.0) - rubocop-rails (2.23.0) + rubocop-rails (2.23.1) activesupport (>= 4.2.0) rack (>= 1.1) rubocop (>= 1.33.0, < 2.0) From 15e810b7f155ce89da1d7f70526158033c96aa8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 09:09:26 +0000 Subject: [PATCH 135/219] Bump combine_pdf from 1.0.25 to 1.0.26 Bumps [combine_pdf](https://github.com/boazsegev/combine_pdf) from 1.0.25 to 1.0.26. - [Release notes](https://github.com/boazsegev/combine_pdf/releases) - [Changelog](https://github.com/boazsegev/combine_pdf/blob/master/CHANGELOG.md) - [Commits](https://github.com/boazsegev/combine_pdf/compare/v1.0.25...v1.0.26) --- updated-dependencies: - dependency-name: combine_pdf dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 136245d5e5..add241bfa8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -216,7 +216,7 @@ GEM coffee-script-source execjs coffee-script-source (1.12.2) - combine_pdf (1.0.25) + combine_pdf (1.0.26) matrix ruby-rc4 (>= 0.1.5) concurrent-ruby (1.2.2) From 2e926e867cce808f03ac8b5b4d88601b48847cdd Mon Sep 17 00:00:00 2001 From: bouaik Date: Mon, 25 Dec 2023 10:19:51 +0100 Subject: [PATCH 136/219] fix flash type when updating entreprise fees --- app/controllers/admin/enterprise_fees_controller.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/enterprise_fees_controller.rb b/app/controllers/admin/enterprise_fees_controller.rb index 011795c8da..ebe62dc10b 100644 --- a/app/controllers/admin/enterprise_fees_controller.rb +++ b/app/controllers/admin/enterprise_fees_controller.rb @@ -38,7 +38,8 @@ module Admin @enterprise_fee_set = EnterpriseFeesBulkUpdate.new(params) if @enterprise_fee_set.save - redirect_to redirect_path, notice: I18n.t(:enterprise_fees_update_notice) + flash[:success] = I18n.t(:enterprise_fees_update_notice) + redirect_to redirect_path else redirect_to redirect_path, flash: { error: @enterprise_fee_set.errors.full_messages.to_sentence } From 86c2397f63879772485ef9454dc2e14b7f81f57b Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Tue, 26 Dec 2023 15:41:38 +0500 Subject: [PATCH 137/219] 11068: update modal padding --- app/components/help_modal_component/help_modal_component.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/components/help_modal_component/help_modal_component.scss b/app/components/help_modal_component/help_modal_component.scss index 48f6255a2e..d323b47992 100644 --- a/app/components/help_modal_component/help_modal_component.scss +++ b/app/components/help_modal_component/help_modal_component.scss @@ -2,6 +2,9 @@ visibility: visible; position: fixed; top: 3em; + &.in { + padding: 1.2rem; + } } /* prevent arrow on selected admin menu item appearing above modal */ From 887a6d8e7ad2d4700f8aa5bc6aef94cc6c90f873 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Tue, 26 Dec 2023 16:00:00 +0100 Subject: [PATCH 138/219] Make string translatable and adjust to 300 px --- app/views/admin/enterprises/form/_images.html.haml | 2 +- config/locales/en.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/views/admin/enterprises/form/_images.html.haml b/app/views/admin/enterprises/form/_images.html.haml index e305df260a..a5340b4a60 100644 --- a/app/views/admin/enterprises/form/_images.html.haml +++ b/app/views/admin/enterprises/form/_images.html.haml @@ -2,7 +2,7 @@ .alpha.three.columns = f.label :logo %br - 100 x 100 pixels + = t('.logo_size') .omega.eight.columns %img{ class: 'image-field-group__preview-image', ng: { src: '{{ Enterprise.logo.thumb }}', if: 'Enterprise.logo' } } %br diff --git a/config/locales/en.yml b/config/locales/en.yml index ef94e36501..61b1bfd5e9 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1102,6 +1102,7 @@ en: images: legend: "Images" logo: Logo + logo_size: "300 x 300 pixels" promo_image_placeholder: 'This image is displayed in "About Us"' promo_image_note1: 'PLEASE NOTE:' promo_image_note2: Any promo image uploaded here will be cropped to 1200 x 260. From da4dc637e4b3960591dc818c453e074f9ca63f84 Mon Sep 17 00:00:00 2001 From: drummer83 Date: Wed, 27 Dec 2023 09:33:27 +0100 Subject: [PATCH 139/219] Add empty line at end of file --- app/views/spree/admin/overview/_products.html.haml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/spree/admin/overview/_products.html.haml b/app/views/spree/admin/overview/_products.html.haml index d9d3af72d2..3f86329664 100644 --- a/app/views/spree/admin/overview/_products.html.haml +++ b/app/views/spree/admin/overview/_products.html.haml @@ -23,4 +23,4 @@ - else %a.sixteen.columns.alpha.button.bottom{ href: new_admin_product_path, class: color_class } = t "spree_admin_enterprises_create_new_product" - %span.icon-arrow-right \ No newline at end of file + %span.icon-arrow-right From 59ad2cf5ecfb5102152e57d123c239acfc4b885d Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 28 Dec 2023 17:36:32 +1100 Subject: [PATCH 140/219] Re-set vcr config after each test I couldn't find a built-in way to do it, and couldn't even directly access the vcr config outside of VCR.configure. So this is the best way I could think of. --- spec/base_spec_helper.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/spec/base_spec_helper.rb b/spec/base_spec_helper.rb index 8f743e4a04..6e36c6ed46 100644 --- a/spec/base_spec_helper.rb +++ b/spec/base_spec_helper.rb @@ -157,13 +157,20 @@ RSpec.configure do |config| # config.around(:each, :stripe_version) do |example| stripe_version = "Stripe-v#{Stripe::VERSION}" + cassette_library_dir, default_cassette_options = nil, nil + VCR.configure do |vcr_config| - vcr_config.cassette_library_dir = "spec/fixtures/vcr_cassettes/#{stripe_version}" + cassette_library_dir = vcr_config.cassette_library_dir + default_cassette_options = vcr_config.default_cassette_options + vcr_config.cassette_library_dir += "/#{stripe_version}" vcr_config.default_cassette_options = { record: :none } if ENV["CI"] end + example.run + VCR.configure do |vcr_config| - vcr_config.cassette_library_dir = "spec/fixtures/vcr_cassettes" + vcr_config.cassette_library_dir = cassette_library_dir + vcr_config.default_cassette_options = default_cassette_options end end From 74214aba7ec337645a9a523bbf71483a1aaa5aa4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:14:28 +0000 Subject: [PATCH 141/219] Bump moment from 2.29.4 to 2.30.1 Bumps [moment](https://github.com/moment/moment) from 2.29.4 to 2.30.1. - [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) - [Commits](https://github.com/moment/moment/compare/2.29.4...2.30.1) --- updated-dependencies: - dependency-name: moment dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fba50143e5..2a3c354f91 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "foundation-sites": "^5.5.3", "jquery-ui": "1.13.2", "js-big-decimal": "^2.0.4", - "moment": "^2.29.1", + "moment": "^2.30.1", "mrujs": "^1.0.0", "select2": "^4.0.13", "shortcut-buttons-flatpickr": "^0.4.0", diff --git a/yarn.lock b/yarn.lock index 01a1246c06..e20ed1f64e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6145,10 +6145,10 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@^2.29.1: - version "2.29.4" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" - integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== +moment@^2.30.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== morphdom@2.6.1, "morphdom@>=2.6.0 <3.0.0": version "2.6.1" From 0fd868b6698ee02436f54fb43e2841a81e02449d Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 17:06:21 +0500 Subject: [PATCH 142/219] 11068: update variant_scope method to inline --- app/reflexes/products_reflex.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/reflexes/products_reflex.rb b/app/reflexes/products_reflex.rb index fc391fa715..711f4a577c 100644 --- a/app/reflexes/products_reflex.rb +++ b/app/reflexes/products_reflex.rb @@ -62,7 +62,7 @@ class ProductsReflex < ApplicationReflex def delete_variant id = current_id_from_element(element) - variant = variant_scope.find(id) + variant = Spree::Variant.active.find(id) authorize! :delete, variant if VariantDeleter.new.delete(variant) @@ -229,10 +229,6 @@ class ProductsReflex < ApplicationReflex ProductScopeQuery.new(current_user, { id: }) end - def variant_scope - Spree::Variant.active - end - def current_id_from_element(element) element.dataset.current_id end From 047e63541cb9c40dd64277d51574c9becb3da163 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 17:06:56 +0500 Subject: [PATCH 143/219] 11068: add black-text css class --- app/views/admin/products_v3/_delete_modal.html.haml | 2 +- app/webpacker/css/admin_v3/shared/layout.scss | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/views/admin/products_v3/_delete_modal.html.haml b/app/views/admin/products_v3/_delete_modal.html.haml index a5f2ce01a9..446130cd95 100644 --- a/app/views/admin/products_v3/_delete_modal.html.haml +++ b/app/views/admin/products_v3/_delete_modal.html.haml @@ -8,7 +8,7 @@ confirm_reflexes: "click->products#delete_#{object_type}", ) = render delete_modal do - %h2.margin-bottom-20{style:'color: black'} + %h2.margin-bottom-20.black-text = t("#{base_translation_key}.heading") %p = t("#{base_translation_key}.prompt") diff --git a/app/webpacker/css/admin_v3/shared/layout.scss b/app/webpacker/css/admin_v3/shared/layout.scss index addd363521..e5a47dc247 100644 --- a/app/webpacker/css/admin_v3/shared/layout.scss +++ b/app/webpacker/css/admin_v3/shared/layout.scss @@ -135,3 +135,9 @@ display: none; } } + +// Text Colors +.black-text { + color: $near-black +} +//------------ From 813ebd912926fa55f0633a998dc20b714882207e Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 17:07:18 +0500 Subject: [PATCH 144/219] 11068: add confirm_actions to close the modal --- app/views/admin/products_v3/_delete_modal.html.haml | 1 + app/webpacker/controllers/products_controller.js | 6 +----- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/views/admin/products_v3/_delete_modal.html.haml b/app/views/admin/products_v3/_delete_modal.html.haml index 446130cd95..40b6fbd32d 100644 --- a/app/views/admin/products_v3/_delete_modal.html.haml +++ b/app/views/admin/products_v3/_delete_modal.html.haml @@ -6,6 +6,7 @@ confirm_button_class: :red, actions_alignment_class: 'justify-end', confirm_reflexes: "click->products#delete_#{object_type}", + confirm_actions: "click->modal#close", ) = render delete_modal do %h2.margin-bottom-20.black-text diff --git a/app/webpacker/controllers/products_controller.js b/app/webpacker/controllers/products_controller.js index 770ad16944..6fe8662f50 100644 --- a/app/webpacker/controllers/products_controller.js +++ b/app/webpacker/controllers/products_controller.js @@ -10,11 +10,7 @@ export default class extends ApplicationController { this.stimulate("Products#fetch"); } - beforeReflex(element) { - // To prevent the double click on the confirm modal's confirmation button - if (element.id === "modal-confirm-button") { - window.dispatchEvent(new Event("modal:close")); - } + beforeReflex() { this.showLoading(); this.scrollToElement(); } From 548ffc0222821860a54ea02bffa8bd421cb8f1c6 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 17:28:26 +0500 Subject: [PATCH 145/219] 11068: replace p tag with a tag --- app/components/vertical_ellipsis_menu/component.scss | 3 +-- app/views/admin/products_v3/_table.html.haml | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/app/components/vertical_ellipsis_menu/component.scss b/app/components/vertical_ellipsis_menu/component.scss index 7730b384ce..03b5cb39d8 100644 --- a/app/components/vertical_ellipsis_menu/component.scss +++ b/app/components/vertical_ellipsis_menu/component.scss @@ -30,8 +30,7 @@ display: block; } - & > a, - p { + & > a { display: block; padding: 5px 10px; cursor: pointer; diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 9901a5a3d4..5573561121 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,7 +70,7 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) - %p{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", + %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", "data-modal-link-target-value": "product-delete-modal", "class": "delete", "data-product-actions-id-value": product.id } = t('admin.products_page.actions.delete') @@ -112,6 +112,6 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) - if product.variants.size > 1 - %p{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", + %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", "data-modal-link-target-value": "variant-delete-modal", "class": "delete", "data-product-actions-id-value": variant.id } = t('admin.products_page.actions.delete') From f194b03882294a542b7b285eb4f14b6d5dfc395f Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 17:51:52 +0500 Subject: [PATCH 146/219] 11068: add sleep of 0.1s --- spec/system/admin/products_v3/products_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 8f12b8d7c1..2039ad8906 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -412,7 +412,7 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 describe "Deleting Feature" do let!(:product_a) { create(:simple_product, name: "Apples", sku: "APL-00") } - let(:delete_option_selector) { "p[data-controller='modal-link product-actions'].delete" } + let(:delete_option_selector) { "a[data-controller='modal-link product-actions'].delete" } let(:product_selector) { row_containing_name("Apples") } let(:variant_selector) { row_containing_name("Medium box") } let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } @@ -630,7 +630,7 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 def wait_for_class(selector, class_name) max_wait_time = Capybara.default_max_wait_time Timeout.timeout(max_wait_time) do - until page.has_css?(selector, class: class_name, visible: false); end + sleep(0.1) until page.has_css?(selector, class: class_name, visible: false) end end end From 17bd3bb0cc0d7201a40a4165b571837a2acd35e9 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 21:34:37 +0500 Subject: [PATCH 147/219] 11068: update setModalDataset logic to generic logic --- app/views/admin/products_v3/_table.html.haml | 10 ++++++---- .../controllers/modal_link_controller.js | 17 ++++++++++++++++- .../controllers/product_actions_controller.js | 18 ------------------ 3 files changed, 22 insertions(+), 23 deletions(-) delete mode 100644 app/webpacker/controllers/product_actions_controller.js diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 5573561121..e34c4b786d 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -70,8 +70,9 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_path(product) = link_to t('admin.products_page.actions.clone'), clone_admin_product_path(product) - %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", - "data-modal-link-target-value": "product-delete-modal", "class": "delete", "data-product-actions-id-value": product.id } + %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", + "data-modal-link-target-value": "product-delete-modal", "class": "delete", + "data-modal-link-modal-dataset-value": {'data-current-id': product.id}.to_json } = t('admin.products_page.actions.delete') - product.variants.each_with_index do |variant, variant_index| @@ -112,6 +113,7 @@ = render(VerticalEllipsisMenu::Component.new) do = link_to t('admin.products_page.actions.edit'), edit_admin_product_variant_path(product, variant) - if product.variants.size > 1 - %a{ "data-controller": "modal-link product-actions", "data-action": "click->product-actions#setDeleteModalDataSet click->modal-link#open", - "data-modal-link-target-value": "variant-delete-modal", "class": "delete", "data-product-actions-id-value": variant.id } + %a{ "data-controller": "modal-link", "data-action": "click->modal-link#setModalDataSetOnConfirm click->modal-link#open", + "data-modal-link-target-value": "variant-delete-modal", "class": "delete", + "data-modal-link-modal-dataset-value": {'data-current-id': variant.id}.to_json } = t('admin.products_page.actions.delete') diff --git a/app/webpacker/controllers/modal_link_controller.js b/app/webpacker/controllers/modal_link_controller.js index d4f58fb546..9eb765c35f 100644 --- a/app/webpacker/controllers/modal_link_controller.js +++ b/app/webpacker/controllers/modal_link_controller.js @@ -1,7 +1,7 @@ import { Controller } from "stimulus"; export default class extends Controller { - static values = { target: String }; + static values = { target: String, modalDataset: Object }; open() { let modal = document.getElementById(this.targetValue); @@ -12,6 +12,21 @@ export default class extends Controller { modalController.open(); } + setModalDataSetOnConfirm(event) { + try { + const modalId = this.targetValue; + const moodalConfirmButtonQuery = `#${modalId} #modal-confirm-button`; + const confirmButton = document.querySelector(moodalConfirmButtonQuery); + Object.keys(this.modalDatasetValue).forEach((datasetKey) => { + confirmButton.setAttribute(datasetKey, this.modalDatasetValue[datasetKey]); + }); + } catch (e) { + // In case of any type of error in setting the dataset value, stop the further actions i.e. opening the modal + event.stopImmediatePropagation(); + throw e; + } + } + getIdentifier() { return "modal"; } diff --git a/app/webpacker/controllers/product_actions_controller.js b/app/webpacker/controllers/product_actions_controller.js deleted file mode 100644 index 605b3f5bd8..0000000000 --- a/app/webpacker/controllers/product_actions_controller.js +++ /dev/null @@ -1,18 +0,0 @@ -import ApplicationController from "./application_controller"; - -export default class extends ApplicationController { - static values = { id: Number }; - - setDeleteModalDataSet(event) { - try { - const modalId = this.element.dataset.modalLinkTargetValue; // whether variant or product delete modal - const deleteButtonQuery = `#${modalId} #modal-confirm-button`; - const deleteButton = document.querySelector(deleteButtonQuery); - deleteButton.setAttribute("data-current-id", this.idValue); - } catch (e) { - // In case of any type of error in setting the dataset value, stop the further actions i.e. opening the modal - event.stopImmediatePropagation(); - throw e; - } - } -} From 1d6a089754e60d198ee6345dc5063970db3ad988 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 28 Dec 2023 22:11:52 +0500 Subject: [PATCH 148/219] 11068: fix specs --- spec/system/admin/products_v3/products_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/system/admin/products_v3/products_spec.rb b/spec/system/admin/products_v3/products_spec.rb index 2039ad8906..f62be46a48 100644 --- a/spec/system/admin/products_v3/products_spec.rb +++ b/spec/system/admin/products_v3/products_spec.rb @@ -412,7 +412,7 @@ describe 'As an admin, I can see the new product page', feature: :admin_style_v3 describe "Deleting Feature" do let!(:product_a) { create(:simple_product, name: "Apples", sku: "APL-00") } - let(:delete_option_selector) { "a[data-controller='modal-link product-actions'].delete" } + let(:delete_option_selector) { "a[data-controller='modal-link'].delete" } let(:product_selector) { row_containing_name("Apples") } let(:variant_selector) { row_containing_name("Medium box") } let(:default_variant_selector) { "tr:has(input[aria-label=Price][value='#{product_a.price}'])" } From c2693d1a3293b96cee8b4c4388156012939619ac Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 29 Dec 2023 03:02:16 +0500 Subject: [PATCH 149/219] 11068: add responsiveness to delete modal actions --- .../confirm_modal_component/confirm_modal_component.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/components/confirm_modal_component/confirm_modal_component.scss b/app/components/confirm_modal_component/confirm_modal_component.scss index 1a23b71e35..2c54031f32 100644 --- a/app/components/confirm_modal_component/confirm_modal_component.scss +++ b/app/components/confirm_modal_component/confirm_modal_component.scss @@ -12,7 +12,11 @@ } @media only screen and (max-width: 1024px) { + flex-direction: column; justify-content: space-around; + input[type="button"] { + margin: 5px 0; + } } } } From e62cd0eb894f4dcff6ca6bd76b940415fbc4545e Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 29 Dec 2023 13:58:48 +1100 Subject: [PATCH 150/219] Add reports readme [doc] It doesn't say much yet, but could be a helpful starting point. Hopefully we will add to it next time we're working on it. [skip ci] --- lib/reporting/readme.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/reporting/readme.md diff --git a/lib/reporting/readme.md b/lib/reporting/readme.md new file mode 100644 index 0000000000..c7f823b1f5 --- /dev/null +++ b/lib/reporting/readme.md @@ -0,0 +1,9 @@ +# Reports framework + +A framework that handles querying and rendering tabular data. + +TODO: add more details on how each part works. + +## Rules +Rules are used for grouping, ordering, and summary rows. Options are documented at [`Reporting::ReportTemplate#rules`]( +https://github.com/openfoodfoundation/openfoodnetwork/blob/master/lib/reporting/report_template.rb#L68-L95). From 50fb8466a9a6a6db5c8ed683ee5978a94e8c0826 Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 29 Dec 2023 14:55:00 +1100 Subject: [PATCH 151/219] [add package] hotkeys-js --- package.json | 1 + yarn.lock | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/package.json b/package.json index fba50143e5..53475bc710 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "debounced": "^0.0.5", "flatpickr": "^4.6.9", "foundation-sites": "^5.5.3", + "hotkeys-js": "^3.13.3", "jquery-ui": "1.13.2", "js-big-decimal": "^2.0.4", "moment": "^2.29.1", diff --git a/yarn.lock b/yarn.lock index 01a1246c06..ad64ef651f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4465,6 +4465,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hotkeys-js@^3.13.3: + version "3.13.3" + resolved "https://registry.yarnpkg.com/hotkeys-js/-/hotkeys-js-3.13.3.tgz#b0a9f243bb1e9cacb93d3772a9e1f6013c0698a3" + integrity sha512-IEiMBNRJZMhWyNDsvww8LYC8vZYyj2/w2GgXPg0ljq/K3SYvOJH6NRMqzF7z2Fwaq2AzKSvmvECREzFleKSeow== + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" From 78e2311f59b1ac59c8e31bb8d0f27bf4a678f79f Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 29 Dec 2023 14:56:44 +1100 Subject: [PATCH 152/219] Add keyboard shortcut to submit form in admin Unfortunately it doesn't work for Angular forms. I'm not sure if there's a way to trigger an angular submit. --- app/webpacker/js/hotkeys.js | 20 ++++++++++++++++++++ app/webpacker/packs/admin.js | 1 + 2 files changed, 21 insertions(+) create mode 100644 app/webpacker/js/hotkeys.js diff --git a/app/webpacker/js/hotkeys.js b/app/webpacker/js/hotkeys.js new file mode 100644 index 0000000000..6a2c3a7b12 --- /dev/null +++ b/app/webpacker/js/hotkeys.js @@ -0,0 +1,20 @@ +import hotkeys from "hotkeys-js"; + +// Enable hotkeys on form elements +hotkeys.filter = function (event) { + var tagName = (event.target || event.srcElement).tagName; + hotkeys.setScope(/^(INPUT|TEXTAREA|SELECT|BUTTON)$/.test(tagName) ? "input" : "other"); + return true; +}; + +// Submit form +// Although 'enter' will submit the form in many cases, it doesn't cover elements such +// as select and textarea. This shortcut is a standard used across many major websites. +hotkeys("ctrl+enter, command+enter", function (event, handler) { + const form = event.target.form; + + // If element has a non-angular form + if (form && !form.classList.contains("ng")) { + form.submit(); + } +}); diff --git a/app/webpacker/packs/admin.js b/app/webpacker/packs/admin.js index 2980fdf0de..81735d3040 100644 --- a/app/webpacker/packs/admin.js +++ b/app/webpacker/packs/admin.js @@ -1,6 +1,7 @@ import "controllers"; import "channels"; import "@hotwired/turbo"; +import "../js/hotkeys"; import "../js/mrujs"; import "../js/matomo"; import "../js/moment"; From aa3d4c3f6eefbeab7d02e526441e951c1d03b168 Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 29 Dec 2023 15:02:43 +1100 Subject: [PATCH 153/219] Add keyboard shortcut to submit forms on frontend --- app/webpacker/packs/application.js | 1 + 1 file changed, 1 insertion(+) diff --git a/app/webpacker/packs/application.js b/app/webpacker/packs/application.js index d565a6e818..5ee6a3b066 100644 --- a/app/webpacker/packs/application.js +++ b/app/webpacker/packs/application.js @@ -1,5 +1,6 @@ import "controllers"; import "@hotwired/turbo"; +import "../js/hotkeys"; import "../js/mrujs"; import "../js/matomo"; import "../js/moment"; From 862edbe55b45fdfa5c39e2b13d769d8f2e7107c6 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Sat, 30 Dec 2023 14:35:37 +0500 Subject: [PATCH 154/219] 11923: add voucher to OC customer total report --- config/locales/en.yml | 2 ++ .../order_cycle_customer_totals.rb | 23 ++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index ef94e36501..b1790bc705 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3156,6 +3156,8 @@ See the %{link} to find out more about %{sitename}'s features and to start using report_header_transaction_fee: Transaction Fee (no tax) report_header_total_untaxable_admin: Total untaxable admin adjustments (no tax) report_header_total_taxable_admin: Total taxable admin adjustments (tax inclusive) + report_header_voucher_label: Voucher Label + report_header_voucher_amount: "Voucher Amount (%{currency_symbol})" report_line_cost_of_produce: Cost of produce report_line_line_items: line items report_header_last_completed_order_date: Last completed order date diff --git a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb index caf65c8165..e1a6fbd845 100644 --- a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb +++ b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb @@ -29,6 +29,8 @@ module Reporting admin_handling_fees: proc { |_line_items| "" }, ship_price: proc { |_line_items| "" }, pay_fee_price: proc { |_line_items| "" }, + voucher_label: proc { |_line_items| "" }, + voucher_amount: proc { |_line_items| "" }, total_price: proc { |_line_items| "" }, paid: proc { |line_items| line_items.all? { |li| li.order.paid? } }, @@ -105,7 +107,7 @@ module Reporting def default_params super.merge( { - fields_to_hide: [:final_weight_volume] + fields_to_hide: %i[final_weight_volume voucher_label voucher_amount] } ) end @@ -129,6 +131,8 @@ module Reporting admin_handling_fees: order.admin_and_handling_total, ship_price: order.ship_total, pay_fee_price: order.payment_fee, + voucher_label: voucher_label(order), + voucher_amount: voucher_amount(order), total_price: order.total, paid: order.paid?, comments: order.special_instructions, @@ -163,6 +167,23 @@ module Reporting user = line_items.first.order.user user&.customer_of(distributor) end + + def voucher_label(order) + return '' unless voucher_applicable?(order) + + voucher = order.voucher_adjustments.take.originator + voucher&.code.to_s # in case if we don't get the voucher, return "" + end + + def voucher_amount(order) + return '' unless voucher_applicable?(order) + + (order.total - order.pre_discount_total).abs + end + + def voucher_applicable?(order) + order.voucher_adjustments.present? + end end end end From 81c2fdd62ac28844e1dd0a83b1e2290ee7bf6a5c Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 10:19:00 +0100 Subject: [PATCH 155/219] upgrade ransack to 4.1.0 --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 72e893263e..f2917bc613 100644 --- a/Gemfile +++ b/Gemfile @@ -17,7 +17,7 @@ gem "image_processing" gem 'activemerchant', '>= 1.78.0' gem 'angular-rails-templates', '>= 0.3.0' gem 'awesome_nested_set' -gem 'ransack', '~> 2.6.0' +gem 'ransack', '~> 4.1.0' gem 'responders' gem 'rexml' gem 'webpacker', '~> 5' diff --git a/Gemfile.lock b/Gemfile.lock index f1a2875692..ab7e709888 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -559,9 +559,9 @@ GEM zeitwerk (~> 2.5) rainbow (3.1.1) rake (13.1.0) - ransack (2.6.0) - activerecord (>= 6.0.4) - activesupport (>= 6.0.4) + ransack (4.1.1) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) i18n rb-fsevent (0.11.2) rb-inotify (0.10.1) @@ -895,7 +895,7 @@ DEPENDENCIES rails-erd rails-i18n rails_safe_tasks (~> 1.0) - ransack (~> 2.6.0) + ransack (~> 4.1.0) redcarpet redis (>= 4.0) responders From ec439b4bf75be088eb100f745936de2519d7aeda Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 10:28:17 +0100 Subject: [PATCH 156/219] update paper-trail to 15.1 --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 72e893263e..10f0da7d93 100644 --- a/Gemfile +++ b/Gemfile @@ -93,7 +93,7 @@ gem 'bootsnap', require: false gem 'geocoder' gem 'gmaps4rails' gem 'mimemagic', '> 0.3.5' -gem 'paper_trail', '~> 12.1' +gem 'paper_trail', '~> 15.1' gem 'rack-rewrite' gem 'rack-timeout' gem 'roadie-rails' diff --git a/Gemfile.lock b/Gemfile.lock index f1a2875692..fa21bd6ef3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -464,9 +464,9 @@ GEM orm_adapter (0.5.0) pagy (5.10.1) activesupport - paper_trail (12.3.0) - activerecord (>= 5.2) - request_store (~> 1.1) + paper_trail (15.1.0) + activerecord (>= 6.1) + request_store (~> 1.4) parallel (1.24.0) paranoia (2.6.3) activerecord (>= 5.1, < 7.2) @@ -878,7 +878,7 @@ DEPENDENCIES openid_connect (~> 1.3) order_management! pagy (~> 5.1) - paper_trail (~> 12.1) + paper_trail (~> 15.1) paranoia (~> 2.4) paypal-sdk-merchant (= 1.117.2) pdf-reader From 9f785cc7b95aa3f5f3ba51f5f87f98c6eb8694b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 09:37:32 +0000 Subject: [PATCH 157/219] Bump puma from 6.4.0 to 6.4.1 Bumps [puma](https://github.com/puma/puma) from 6.4.0 to 6.4.1. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v6.4.0...v6.4.1) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f1a2875692..08d77dd9a6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -430,7 +430,7 @@ GEM net-protocol newrelic_rpm (9.6.0) base64 - nio4r (2.5.9) + nio4r (2.7.0) nokogiri (1.15.5) mini_portile2 (~> 2.8.2) racc (~> 1.4) @@ -492,7 +492,7 @@ GEM psych (5.1.2) stringio public_suffix (5.0.4) - puma (6.4.0) + puma (6.4.1) nio4r (~> 2.0) query_count (1.1.1) activerecord (>= 4.2) From f2e4343fad97a0eac8e90df5251867dfb704c58f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 09:40:18 +0000 Subject: [PATCH 158/219] Bump pdf-reader from 2.11.0 to 2.12.0 Bumps [pdf-reader](https://github.com/yob/pdf-reader) from 2.11.0 to 2.12.0. - [Changelog](https://github.com/yob/pdf-reader/blob/main/CHANGELOG) - [Commits](https://github.com/yob/pdf-reader/compare/v2.11.0...v2.12.0) --- updated-dependencies: - dependency-name: pdf-reader dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index f1a2875692..34664906a3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -478,7 +478,7 @@ GEM xml-simple paypal-sdk-merchant (1.117.2) paypal-sdk-core (~> 0.3.0) - pdf-reader (2.11.0) + pdf-reader (2.12.0) Ascii85 (~> 1.0) afm (~> 0.2.1) hashery (~> 2.0) From 0a474f9288577734dbeac09edd99fbc03df2254f Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 11:12:06 +0100 Subject: [PATCH 159/219] add "ActiveSupport::TimeWithZone" to yaml_column_permitted_classes --- config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 116fb5970a..9584a34a90 100644 --- a/config/application.rb +++ b/config/application.rb @@ -227,7 +227,7 @@ module Openfoodnetwork config.action_view.form_with_generates_remote_forms = false config.active_record.cache_versioning = false config.active_record.has_many_inversing = false - config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol] + config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol, ActiveSupport::TimeWithZone] config.active_support.escape_html_entities_in_json = true From d591ce69778773c0c021897d9ed764ff969c92fb Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 11:24:50 +0100 Subject: [PATCH 160/219] add Time to yaml_column_permitted_classes --- config/application.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index 9584a34a90..478c9cfe6f 100644 --- a/config/application.rb +++ b/config/application.rb @@ -227,7 +227,7 @@ module Openfoodnetwork config.action_view.form_with_generates_remote_forms = false config.active_record.cache_versioning = false config.active_record.has_many_inversing = false - config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol, ActiveSupport::TimeWithZone] + config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol, ActiveSupport::TimeWithZone, Time] config.active_support.escape_html_entities_in_json = true From d239beb226c0a49a94632757c9fcdd97bedbb1e6 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Fri, 22 Dec 2023 11:30:28 +0100 Subject: [PATCH 161/219] remove unnecessary require instructions --- app/controllers/admin/schedules_controller.rb | 1 - app/controllers/api/v0/enterprise_attachment_controller.rb | 2 -- app/jobs/subscription_confirm_job.rb | 2 -- app/jobs/subscription_placement_job.rb | 2 -- app/models/spree/adjustment.rb | 1 - app/models/spree/gateway.rb | 2 -- app/models/spree/line_item.rb | 1 - app/models/spree/order.rb | 5 ----- app/models/spree/payment_method.rb | 2 -- app/models/spree/product.rb | 1 - app/models/spree/variant.rb | 2 -- app/services/order_cycle_clone.rb | 2 -- app/services/order_cycle_form.rb | 1 - app/services/variant_units/variant_and_line_item_naming.rb | 2 -- .../app/services/order_management/subscriptions/form.rb | 2 -- spec/lib/reports/enterprise_fee_summary/parameters_spec.rb | 2 -- spec/models/spree/variant_spec.rb | 1 - spec/services/invoice_renderer_spec.rb | 1 - spec/services/order_cycle_form_spec.rb | 1 - 19 files changed, 33 deletions(-) diff --git a/app/controllers/admin/schedules_controller.rb b/app/controllers/admin/schedules_controller.rb index 3165667312..46854d254d 100644 --- a/app/controllers/admin/schedules_controller.rb +++ b/app/controllers/admin/schedules_controller.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'open_food_network/permissions' -require 'order_management/subscriptions/proxy_order_syncer' module Admin class SchedulesController < Admin::ResourceController diff --git a/app/controllers/api/v0/enterprise_attachment_controller.rb b/app/controllers/api/v0/enterprise_attachment_controller.rb index b46f29b355..cf467aad98 100644 --- a/app/controllers/api/v0/enterprise_attachment_controller.rb +++ b/app/controllers/api/v0/enterprise_attachment_controller.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'api/admin/enterprise_serializer' - module Api module V0 class EnterpriseAttachmentController < Api::V0::BaseController diff --git a/app/jobs/subscription_confirm_job.rb b/app/jobs/subscription_confirm_job.rb index f26fbcaf61..8f67005c74 100644 --- a/app/jobs/subscription_confirm_job.rb +++ b/app/jobs/subscription_confirm_job.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'order_management/subscriptions/summarizer' - # Confirms orders of unconfirmed proxy orders in recently closed Order Cycles class SubscriptionConfirmJob < ApplicationJob def perform diff --git a/app/jobs/subscription_placement_job.rb b/app/jobs/subscription_placement_job.rb index fe15e99113..cb3609a5b2 100644 --- a/app/jobs/subscription_placement_job.rb +++ b/app/jobs/subscription_placement_job.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'order_management/subscriptions/summarizer' - class SubscriptionPlacementJob < ApplicationJob def perform proxy_orders.each do |proxy_order| diff --git a/app/models/spree/adjustment.rb b/app/models/spree/adjustment.rb index 7625b34962..90d2cca514 100644 --- a/app/models/spree/adjustment.rb +++ b/app/models/spree/adjustment.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spree/localized_number' -require 'concerns/adjustment_scopes' # Adjustments represent a change to the +item_total+ of an Order. Each adjustment # has an +amount+ that can be either positive or negative. diff --git a/app/models/spree/gateway.rb b/app/models/spree/gateway.rb index 05d3e8abaf..42fc9b6eec 100644 --- a/app/models/spree/gateway.rb +++ b/app/models/spree/gateway.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'concerns/payment_method_distributors' - module Spree class Gateway < PaymentMethod acts_as_taggable diff --git a/app/models/spree/line_item.rb b/app/models/spree/line_item.rb index 6de3fe9601..3797a777d5 100644 --- a/app/models/spree/line_item.rb +++ b/app/models/spree/line_item.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'open_food_network/scope_variant_to_hub' -require 'variant_units/variant_and_line_item_naming' module Spree class LineItem < ApplicationRecord diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index 3dced4e802..238e935e5d 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -1,10 +1,5 @@ # frozen_string_literal: true -require 'spree/order/checkout' -require 'open_food_network/enterprise_fee_calculator' -require 'open_food_network/feature_toggle' -require 'open_food_network/tag_rule_applicator' - module Spree class Order < ApplicationRecord include OrderShipment diff --git a/app/models/spree/payment_method.rb b/app/models/spree/payment_method.rb index f3011b222c..5b60aded62 100644 --- a/app/models/spree/payment_method.rb +++ b/app/models/spree/payment_method.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'concerns/payment_method_distributors' - module Spree class PaymentMethod < ApplicationRecord include CalculatedAdjustments diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index 41b8c8f610..a2f70d4f77 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'open_food_network/property_merge' -require 'concerns/product_stock' # PRODUCTS # Products represent an entity for sale in a store. diff --git a/app/models/spree/variant.rb b/app/models/spree/variant.rb index f470f4bb51..adfa2b479d 100644 --- a/app/models/spree/variant.rb +++ b/app/models/spree/variant.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true require 'open_food_network/enterprise_fee_calculator' -require 'variant_units/variant_and_line_item_naming' -require 'concerns/variant_stock' require 'spree/localized_number' module Spree diff --git a/app/services/order_cycle_clone.rb b/app/services/order_cycle_clone.rb index fffe6a1277..2d349a4f29 100644 --- a/app/services/order_cycle_clone.rb +++ b/app/services/order_cycle_clone.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'order_management/subscriptions/proxy_order_syncer' - class OrderCycleClone def initialize(order_cycle) @original_order_cycle = order_cycle diff --git a/app/services/order_cycle_form.rb b/app/services/order_cycle_form.rb index c25c589ce5..fbcfdf401d 100644 --- a/app/services/order_cycle_form.rb +++ b/app/services/order_cycle_form.rb @@ -2,7 +2,6 @@ require 'open_food_network/permissions' require 'open_food_network/order_cycle_form_applicator' -require 'order_management/subscriptions/proxy_order_syncer' class OrderCycleForm def initialize(order_cycle, order_cycle_params, user) diff --git a/app/services/variant_units/variant_and_line_item_naming.rb b/app/services/variant_units/variant_and_line_item_naming.rb index d0c72d4486..9b07413155 100644 --- a/app/services/variant_units/variant_and_line_item_naming.rb +++ b/app/services/variant_units/variant_and_line_item_naming.rb @@ -4,8 +4,6 @@ # It contains all of our logic for creating and naming option values (which are associated # with both models) and methods for printing human readable "names" for instances of these models. -require 'variant_units/option_value_namer' - module VariantUnits module VariantAndLineItemNaming def options_text diff --git a/engines/order_management/app/services/order_management/subscriptions/form.rb b/engines/order_management/app/services/order_management/subscriptions/form.rb index 8ea469d8b3..53c0e615cd 100644 --- a/engines/order_management/app/services/order_management/subscriptions/form.rb +++ b/engines/order_management/app/services/order_management/subscriptions/form.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -require 'order_management/subscriptions/proxy_order_syncer' - module OrderManagement module Subscriptions class Form diff --git a/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb b/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb index d04d140283..25b684d5a0 100644 --- a/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb +++ b/spec/lib/reports/enterprise_fee_summary/parameters_spec.rb @@ -2,8 +2,6 @@ require "spec_helper" -require "date_time_string_validator" - module Reporting module Reports module EnterpriseFeeSummary diff --git a/spec/models/spree/variant_spec.rb b/spec/models/spree/variant_spec.rb index 6897a220e0..d729f08bd5 100644 --- a/spec/models/spree/variant_spec.rb +++ b/spec/models/spree/variant_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: false require 'spec_helper' -require 'variant_units/option_value_namer' require 'spree/localized_number' describe Spree::Variant do diff --git a/spec/services/invoice_renderer_spec.rb b/spec/services/invoice_renderer_spec.rb index 2818ee8926..cbad391a0f 100644 --- a/spec/services/invoice_renderer_spec.rb +++ b/spec/services/invoice_renderer_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'spree/payment_methods_helper' describe InvoiceRenderer do include Spree::PaymentMethodsHelper diff --git a/spec/services/order_cycle_form_spec.rb b/spec/services/order_cycle_form_spec.rb index 8e3c8012fd..6e0d95ca23 100644 --- a/spec/services/order_cycle_form_spec.rb +++ b/spec/services/order_cycle_form_spec.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'spec_helper' -require 'order_management/subscriptions/proxy_order_syncer' describe OrderCycleForm do describe "save" do From ab1a0ba986137be5f0c68773ed00131e9dd41ef7 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 11:41:37 +0100 Subject: [PATCH 162/219] add ActiveSupport::TimeZone to yaml_column_permitted_classes --- config/application.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/config/application.rb b/config/application.rb index 478c9cfe6f..1146d04c77 100644 --- a/config/application.rb +++ b/config/application.rb @@ -9,8 +9,8 @@ require "rails" "action_mailer/railtie", "active_job/railtie", "action_cable/engine", - #"action_mailbox/engine", - #"action_text/engine", + # "action_mailbox/engine", + # "action_text/engine", "rails/test_unit/railtie", "sprockets/railtie" # Disable this after migrating to Webpacker ].each do |railtie| @@ -150,6 +150,7 @@ module Openfoodnetwork module ::Reporting; end Rails.application.reloader.to_prepare do next if defined?(::Reporting) && defined?(::Reporting::Errors) + loader = Zeitwerk::Loader.new loader.push_dir("#{Rails.root}/lib/reporting", namespace: ::Reporting) loader.enable_reloading @@ -227,7 +228,9 @@ module Openfoodnetwork config.action_view.form_with_generates_remote_forms = false config.active_record.cache_versioning = false config.active_record.has_many_inversing = false - config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol, ActiveSupport::TimeWithZone, Time] + config.active_record.yaml_column_permitted_classes = [BigDecimal, Symbol, Time, + ActiveSupport::TimeWithZone, + ActiveSupport::TimeZone] config.active_support.escape_html_entities_in_json = true From 3a957fb9883029a9d9ba3151759e51b0f0fe8c94 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 3 Jan 2024 15:46:16 +0500 Subject: [PATCH 163/219] 11923: add specs --- .../multiple_checked_select_component.rb | 4 +- ...ultiple_checked_select_component.html.haml | 2 +- .../reports/_rendering_options.html.haml | 2 +- ...order_cycle_customer_totals_report_spec.rb | 18 +++++++++ .../reports/orders_and_fulfillment_spec.rb | 39 +++++++++++++++++++ 5 files changed, 62 insertions(+), 3 deletions(-) diff --git a/app/components/multiple_checked_select_component.rb b/app/components/multiple_checked_select_component.rb index 2797780641..4cc95bc695 100644 --- a/app/components/multiple_checked_select_component.rb +++ b/app/components/multiple_checked_select_component.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class MultipleCheckedSelectComponent < ViewComponent::Base - def initialize(name:, options:, selected:) + # @param id [String] uniquely identifies the MultipleCheckedSelect (mcs) field. '_mcs_field' will be appended + def initialize(id:, name:, options:, selected:) + @id = "#{id}_mcs_field" @name = name @options = options.map { |option| [option[0], option[1].to_sym] } @selected = selected.nil? ? [] : selected.map(&:to_sym) diff --git a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml index 8dedce27ca..435a6b5432 100644 --- a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml +++ b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml @@ -1,4 +1,4 @@ -.ofn-drop-down.ofn-drop-down-v2{ data: { controller: "multiple-checked-select" } } +.ofn-drop-down.ofn-drop-down-v2{ id: @id, data: { controller: "multiple-checked-select" } } %div.ofn-drop-down-label{ "data-multiple-checked-select-target": "button" } %span{class: "label"}= t('admin.columns') %span{ class: "icon-caret-down", "data-multiple-checked-select-target": "caret" } diff --git a/app/views/admin/reports/_rendering_options.html.haml b/app/views/admin/reports/_rendering_options.html.haml index dc00db24d0..cf896e4b2f 100644 --- a/app/views/admin/reports/_rendering_options.html.haml +++ b/app/views/admin/reports/_rendering_options.html.haml @@ -27,5 +27,5 @@ .row .alpha.two.columns= label_tag nil, t(:report_columns) .omega.fourteen.columns - = render MultipleCheckedSelectComponent.new(name: "fields_to_show", options: @report.available_headers, selected: @rendering_options.options[:fields_to_show]) + = render MultipleCheckedSelectComponent.new(id: 'fields_to_show', name: "fields_to_show", options: @report.available_headers, selected: @rendering_options.options[:fields_to_show]) \ No newline at end of file diff --git a/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb b/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb index c19e9acbd8..c2d6eccbb3 100644 --- a/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb +++ b/spec/lib/reports/orders_and_fulfillment/order_cycle_customer_totals_report_spec.rb @@ -147,4 +147,22 @@ describe Reporting::Reports::OrdersAndFulfillment::OrderCycleCustomerTotals do expect(report.rows.first.sku).to eq overidden_sku end end + + describe '#default_params' do + it 'should return expected expected_params' do + expected_params = { + fields_to_hide: %i[ + final_weight_volume + voucher_label + voucher_amount + ], + q: { + completed_at_gt: 1.month.ago.beginning_of_day, + completed_at_lt: 1.day.from_now.beginning_of_day + } + } + + expect(report.default_params).to eq(expected_params) + end + end end diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index 23870f35fc..ea73d0943e 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -206,6 +206,32 @@ describe "Orders And Fulfillment" do expect(selected_product.text).to have_content(variant3.product.name) end end + + context "when voucher is applied to the order" do + let(:voucher) { create(:voucher_percentage_rate, enterprise: distributor) } + before do + mcs_field = page.find('#fields_to_show_mcs_field') + option_names = ['Voucher Label', 'Voucher Amount ($)'] + toggle_mcs_options(mcs_field, option_names) + end + + it 'displays the voucher label and amount values for the orders with voucher applied' do + voucher.create_adjustment(voucher.code, order1) + # mocking the total and pre_discount_total values + total_before_discount = BigDecimal(20) + total_after_discount = BigDecimal(15) + order1.update_columns(total: total_after_discount) + allow(order1).to receive(:pre_discount_total).and_return(total_before_discount) + discounted_amount = total_before_discount - total_after_discount + + run_report + + within '.report__table' do + expect(page).to have_content(voucher.code) + expect(page).to have_content(discounted_amount) + end + end + end end describe "Order Cycle Supplier" do @@ -618,4 +644,17 @@ describe "Orders And Fulfillment" do end end end + + # @param mcs_field MultipleCheckedSelect (mcs) field + # @param option_name [String] option to check or select + def toggle_mcs_options(mcs_field, option_names) + mcs_field.click # to open the mcs menu + + option_names.each do |option_name| + option = page.find(".menu .menu_items label[data-label='#{option_name}']") + option.click + end + + mcs_field.click # to close the mcs menu + end end From c06f251ff3233dbc11788fb2bf40ed573513f2c1 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 3 Jan 2024 15:54:32 +0500 Subject: [PATCH 164/219] 11923: update voucher_amount logic --- .../orders_and_fulfillment/order_cycle_customer_totals.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb index e1a6fbd845..298df7daa7 100644 --- a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb +++ b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb @@ -178,7 +178,7 @@ module Reporting def voucher_amount(order) return '' unless voucher_applicable?(order) - (order.total - order.pre_discount_total).abs + order.pre_discount_total - order.total end def voucher_applicable?(order) From 3fab2c350e4a2cd8059cef74f61842af6c3bfa45 Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Wed, 3 Jan 2024 11:59:21 +0100 Subject: [PATCH 165/219] require tag_rule_applicator on Shop::OrderCyclesList --- app/services/shop/order_cycles_list.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/shop/order_cycles_list.rb b/app/services/shop/order_cycles_list.rb index 7f3ab665a3..5b0a6930cd 100644 --- a/app/services/shop/order_cycles_list.rb +++ b/app/services/shop/order_cycles_list.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'open_food_network/tag_rule_applicator' + # Lists available order cycles for a given customer in a given distributor module Shop class OrderCyclesList From dcc962a8fddf4efb679e918df5b18e98e2a96780 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Wed, 3 Jan 2024 16:02:07 +0500 Subject: [PATCH 166/219] 11923: fix lint issues --- app/components/multiple_checked_select_component.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/components/multiple_checked_select_component.rb b/app/components/multiple_checked_select_component.rb index 4cc95bc695..ec3ce5cdde 100644 --- a/app/components/multiple_checked_select_component.rb +++ b/app/components/multiple_checked_select_component.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class MultipleCheckedSelectComponent < ViewComponent::Base - # @param id [String] uniquely identifies the MultipleCheckedSelect (mcs) field. '_mcs_field' will be appended + # @param id [String] + # Uniquely identifies the MultipleCheckedSelect (mcs) field. + # '_mcs_field' will be appended to the given ID to form the complete ID. def initialize(id:, name:, options:, selected:) @id = "#{id}_mcs_field" @name = name From 1ffdca3fc2d36211b9957e70197b99be0300bb8b Mon Sep 17 00:00:00 2001 From: Mohamed ABDELLANI Date: Tue, 26 Dec 2023 15:09:28 +0100 Subject: [PATCH 167/219] require tag_rule_applicator as it's not loaded automatically on OrderAvailableShippingMethods & OrderAvailablePaymentMethods --- app/services/order_available_payment_methods.rb | 2 ++ app/services/order_available_shipping_methods.rb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/app/services/order_available_payment_methods.rb b/app/services/order_available_payment_methods.rb index dc0784d909..84ea0f870f 100644 --- a/app/services/order_available_payment_methods.rb +++ b/app/services/order_available_payment_methods.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'open_food_network/tag_rule_applicator' + class OrderAvailablePaymentMethods attr_reader :order, :customer diff --git a/app/services/order_available_shipping_methods.rb b/app/services/order_available_shipping_methods.rb index 9b4bcf76ba..8cd30fd804 100644 --- a/app/services/order_available_shipping_methods.rb +++ b/app/services/order_available_shipping_methods.rb @@ -1,5 +1,7 @@ # frozen_string_literal: true +require 'open_food_network/tag_rule_applicator' + class OrderAvailableShippingMethods attr_reader :order, :customer From 84aada41376d24c45831ec73e29e3df232b0ba5e Mon Sep 17 00:00:00 2001 From: Rachel Arnould <6525576+RachL@users.noreply.github.com> Date: Wed, 3 Jan 2024 15:32:45 +0100 Subject: [PATCH 168/219] Update README.md Changing the year in the readme - Happy New Year! --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 41d0633c31..df29a3db1a 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ We use [KnapsackPro](https://knapsackpro.com/) for optimal parallelisation of ou ## Licence -Copyright (c) 2012 - 2022 Open Food Foundation, released under the AGPL licence. +Copyright (c) 2012 - 2024 Open Food Foundation, released under the AGPL licence. [survey]: https://docs.google.com/a/eaterprises.com.au/forms/d/1zxR5vSiU9CigJ9cEaC8-eJLgYid8CR8er7PPH9Mc-30/edit# [slack-invite]: https://join.slack.com/t/openfoodnetwork/shared_invite/zt-9sjkjdlu-r02kUMP1zbrTgUhZhYPF~A From b844b188ce5f333ea89f57162b390fd6a8b3a6ed Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Tue, 26 Dec 2023 22:55:32 +0700 Subject: [PATCH 169/219] fix enterprise roles page performance --- .../admin/enterprise_roles_controller.rb | 5 +- app/queries/admin/enterprise_roles_query.rb | 47 +++++++++++++++++++ .../admin/enterprise_roles/_data.html.haml | 7 ++- 3 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 app/queries/admin/enterprise_roles_query.rb diff --git a/app/controllers/admin/enterprise_roles_controller.rb b/app/controllers/admin/enterprise_roles_controller.rb index 79a52d8b41..4c0aeffc86 100644 --- a/app/controllers/admin/enterprise_roles_controller.rb +++ b/app/controllers/admin/enterprise_roles_controller.rb @@ -3,9 +3,8 @@ module Admin class EnterpriseRolesController < Admin::ResourceController def index - @enterprise_roles = EnterpriseRole.by_user_email - @users = Spree::User.order('spree_users.email') - @my_enterprises = @all_enterprises = Enterprise.by_name + @enterprise_roles, @users, @all_enterprises = Admin::EnterpriseRolesQuery.query + @my_enterprises = @all_enterprises end def create diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb new file mode 100644 index 0000000000..6cd1f53c2d --- /dev/null +++ b/app/queries/admin/enterprise_roles_query.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module Admin + class EnterpriseRolesQuery + EnterpriseRoleStruct = Struct.new(:id, :user_id, :enterprise_id, :user_, :enterprise_name) + UserStruct = Struct.new(:id, :email) + EnterpriseStruct = Struct.new(:id, :name) + + class << self + def query + enterprise_roles = query_enterprice_roles + users = query_users + enterprises = query_enterprises + + [enterprise_roles, users, enterprises] + end + + private + + def query_enterprice_roles + EnterpriseRole.joins(:user, :enterprise).order('spree_users.email ASC'). + pluck(:id, :user_id, :enterprise_id, 'spree_users.email', 'enterprises.name'). + map do |data| + id, user_id, enterprise_id, user_email, enterprise_name = data + + { id:, user_id:, enterprise_id:, user_email:, enterprise_name: } + end + end + + def query_users + Spree::User.order(:email).pluck(:id, :email).map do |data| + id, email = data + + { id:, email: } + end + end + + def query_enterprises + Enterprise.order(:name).pluck(:id, :name).map do |data| + id, name = data + + { id:, name: } + end + end + end + end +end diff --git a/app/views/admin/enterprise_roles/_data.html.haml b/app/views/admin/enterprise_roles/_data.html.haml index d24fb584a7..a1b6b3472e 100644 --- a/app/views/admin/enterprise_roles/_data.html.haml +++ b/app/views/admin/enterprise_roles/_data.html.haml @@ -1,4 +1,3 @@ -= admin_inject_enterprise_roles(@enterprise_roles) -= admin_inject_users(@users) -= admin_inject_enterprises(@my_enterprises, @all_enterprises) - += admin_inject_json('ofn.admin', 'enterpriseRoles', @enterprise_roles) += admin_inject_json('ofn.admin', 'users', @users) += admin_inject_json('ofn.admin', 'my_enterprises', @my_enterprises) + admin_inject_json('ofn.admin', 'all_enterprises', @all_enterprises) From f1da550912eecac3e4ccc88551132549ae55e03a Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Tue, 26 Dec 2023 23:22:53 +0700 Subject: [PATCH 170/219] remove unused structs --- app/queries/admin/enterprise_roles_query.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb index 6cd1f53c2d..6b08cb3e6c 100644 --- a/app/queries/admin/enterprise_roles_query.rb +++ b/app/queries/admin/enterprise_roles_query.rb @@ -2,10 +2,6 @@ module Admin class EnterpriseRolesQuery - EnterpriseRoleStruct = Struct.new(:id, :user_id, :enterprise_id, :user_, :enterprise_name) - UserStruct = Struct.new(:id, :email) - EnterpriseStruct = Struct.new(:id, :name) - class << self def query enterprise_roles = query_enterprice_roles From ab6a7e307bb85bc2e9adb9e716c9a5613f9db73c Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Wed, 3 Jan 2024 22:36:58 +0700 Subject: [PATCH 171/219] remove unused helpers --- app/helpers/admin/injection_helper.rb | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/app/helpers/admin/injection_helper.rb b/app/helpers/admin/injection_helper.rb index f85d9a6f54..3585fb0817 100644 --- a/app/helpers/admin/injection_helper.rb +++ b/app/helpers/admin/injection_helper.rb @@ -27,13 +27,6 @@ module Admin Api::Admin::EnterpriseRelationshipSerializer end - def admin_inject_enterprise_roles(enterprise_roles) - admin_inject_json_ams_array "ofn.admin", - "enterpriseRoles", - enterprise_roles, - Api::Admin::EnterpriseRoleSerializer - end - def admin_inject_payment_methods(payment_methods) admin_inject_json_ams_array "admin.paymentMethods", "paymentMethods", @@ -137,13 +130,6 @@ module Admin Api::Admin::TaxonSerializer end - def admin_inject_users(users) - admin_inject_json_ams_array "ofn.admin", - "users", - users, - Api::Admin::UserSerializer - end - def admin_inject_variant_overrides(variant_overrides) admin_inject_json_ams_array "admin.variantOverrides", "variantOverrides", From 14d755d7063ace37bc467c9eaff8103885e8c811 Mon Sep 17 00:00:00 2001 From: Dung Bui Date: Thu, 4 Jan 2024 07:55:00 +0700 Subject: [PATCH 172/219] fix typo --- app/queries/admin/enterprise_roles_query.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/queries/admin/enterprise_roles_query.rb b/app/queries/admin/enterprise_roles_query.rb index 6b08cb3e6c..4828bb8ec1 100644 --- a/app/queries/admin/enterprise_roles_query.rb +++ b/app/queries/admin/enterprise_roles_query.rb @@ -4,7 +4,7 @@ module Admin class EnterpriseRolesQuery class << self def query - enterprise_roles = query_enterprice_roles + enterprise_roles = query_enterprise_roles users = query_users enterprises = query_enterprises @@ -13,7 +13,7 @@ module Admin private - def query_enterprice_roles + def query_enterprise_roles EnterpriseRole.joins(:user, :enterprise).order('spree_users.email ASC'). pluck(:id, :user_id, :enterprise_id, 'spree_users.email', 'enterprises.name'). map do |data| From 9e9daa0239795883df1e4c223d29761ee93a5087 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 01:37:31 +0000 Subject: [PATCH 173/219] Bump active_storage_validations from 1.1.3 to 1.1.4 Bumps [active_storage_validations](https://github.com/igorkasyanchuk/active_storage_validations) from 1.1.3 to 1.1.4. - [Release notes](https://github.com/igorkasyanchuk/active_storage_validations/releases) - [Changelog](https://github.com/igorkasyanchuk/active_storage_validations/blob/master/CHANGES.md) - [Commits](https://github.com/igorkasyanchuk/active_storage_validations/commits) --- updated-dependencies: - dependency-name: active_storage_validations dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 743a463bdc..a4d2b1880d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -90,7 +90,7 @@ GEM rails-html-sanitizer (~> 1.1, >= 1.2.0) active_model_serializers (0.8.4) activemodel (>= 3.0) - active_storage_validations (1.1.3) + active_storage_validations (1.1.4) activejob (>= 5.2.0) activemodel (>= 5.2.0) activestorage (>= 5.2.0) @@ -431,7 +431,7 @@ GEM newrelic_rpm (9.6.0) base64 nio4r (2.7.0) - nokogiri (1.15.5) + nokogiri (1.16.0) mini_portile2 (~> 2.8.2) racc (~> 1.4) oauth2 (1.4.11) From cb3cd3e7eaa631e0bd0cc9d93417fe01e0340e0e Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 4 Jan 2024 13:45:36 +1100 Subject: [PATCH 174/219] Cache default country simply in memory This simplifies the code, avoids a method naming collision with Rails and should be faster as well. --- app/models/spree/country.rb | 6 ------ app/services/default_country.rb | 7 +++++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/models/spree/country.rb b/app/models/spree/country.rb index cc9e3dbed9..ca83337caf 100644 --- a/app/models/spree/country.rb +++ b/app/models/spree/country.rb @@ -6,12 +6,6 @@ module Spree validates :name, :iso_name, presence: true - def self.cached_find_by(attrs) - Rails.cache.fetch("countries/#{attrs.hash}", expires_in: 1.hour) do - find_by(attrs) - end - end - def <=>(other) name <=> other.name end diff --git a/app/services/default_country.rb b/app/services/default_country.rb index 609535a1fc..0e07d5c68c 100644 --- a/app/services/default_country.rb +++ b/app/services/default_country.rb @@ -10,7 +10,10 @@ class DefaultCountry end def self.country - Spree::Country.cached_find_by(iso: ENV.fetch("DEFAULT_COUNTRY_CODE", - nil)) || Spree::Country.first + # Changing ENV requires restarting the process. + iso = ENV.fetch("DEFAULT_COUNTRY_CODE", nil) + + # When ENV changes on restart, this cache will be reset as well. + @country ||= Spree::Country.find_by(iso:) || Spree::Country.first end end From 074e97c414e581b5cbc05c3a0c2148f3882e4266 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 4 Jan 2024 16:01:35 +1100 Subject: [PATCH 175/219] Remove paper_trail version restriction for Dependabot updates --- Gemfile | 2 +- Gemfile.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile b/Gemfile index 10f0da7d93..c321c79738 100644 --- a/Gemfile +++ b/Gemfile @@ -93,7 +93,7 @@ gem 'bootsnap', require: false gem 'geocoder' gem 'gmaps4rails' gem 'mimemagic', '> 0.3.5' -gem 'paper_trail', '~> 15.1' +gem 'paper_trail' gem 'rack-rewrite' gem 'rack-timeout' gem 'roadie-rails' diff --git a/Gemfile.lock b/Gemfile.lock index fa21bd6ef3..7e2a8cceab 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -878,7 +878,7 @@ DEPENDENCIES openid_connect (~> 1.3) order_management! pagy (~> 5.1) - paper_trail (~> 15.1) + paper_trail paranoia (~> 2.4) paypal-sdk-merchant (= 1.117.2) pdf-reader From 883bfcdf0d79fc6e382450cd2067a7718cf4643f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 4 Jan 2024 16:53:36 +1100 Subject: [PATCH 176/219] Simplify column toggling in report spec * This partly reverts 3a957fb9883029a9d9ba3151759e51b0f0fe8c94. --- .../multiple_checked_select_component.rb | 6 +---- ...ultiple_checked_select_component.html.haml | 2 +- .../reports/_rendering_options.html.haml | 3 +-- .../reports/orders_and_fulfillment_spec.rb | 23 ++++++++----------- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/app/components/multiple_checked_select_component.rb b/app/components/multiple_checked_select_component.rb index ec3ce5cdde..2797780641 100644 --- a/app/components/multiple_checked_select_component.rb +++ b/app/components/multiple_checked_select_component.rb @@ -1,11 +1,7 @@ # frozen_string_literal: true class MultipleCheckedSelectComponent < ViewComponent::Base - # @param id [String] - # Uniquely identifies the MultipleCheckedSelect (mcs) field. - # '_mcs_field' will be appended to the given ID to form the complete ID. - def initialize(id:, name:, options:, selected:) - @id = "#{id}_mcs_field" + def initialize(name:, options:, selected:) @name = name @options = options.map { |option| [option[0], option[1].to_sym] } @selected = selected.nil? ? [] : selected.map(&:to_sym) diff --git a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml index 435a6b5432..8dedce27ca 100644 --- a/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml +++ b/app/components/multiple_checked_select_component/multiple_checked_select_component.html.haml @@ -1,4 +1,4 @@ -.ofn-drop-down.ofn-drop-down-v2{ id: @id, data: { controller: "multiple-checked-select" } } +.ofn-drop-down.ofn-drop-down-v2{ data: { controller: "multiple-checked-select" } } %div.ofn-drop-down-label{ "data-multiple-checked-select-target": "button" } %span{class: "label"}= t('admin.columns') %span{ class: "icon-caret-down", "data-multiple-checked-select-target": "caret" } diff --git a/app/views/admin/reports/_rendering_options.html.haml b/app/views/admin/reports/_rendering_options.html.haml index cf896e4b2f..cb954eb6eb 100644 --- a/app/views/admin/reports/_rendering_options.html.haml +++ b/app/views/admin/reports/_rendering_options.html.haml @@ -27,5 +27,4 @@ .row .alpha.two.columns= label_tag nil, t(:report_columns) .omega.fourteen.columns - = render MultipleCheckedSelectComponent.new(id: 'fields_to_show', name: "fields_to_show", options: @report.available_headers, selected: @rendering_options.options[:fields_to_show]) - \ No newline at end of file + = render MultipleCheckedSelectComponent.new(name: "fields_to_show", options: @report.available_headers, selected: @rendering_options.options[:fields_to_show]) diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index ea73d0943e..2f89ddb6ac 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -209,10 +209,12 @@ describe "Orders And Fulfillment" do context "when voucher is applied to the order" do let(:voucher) { create(:voucher_percentage_rate, enterprise: distributor) } + before do - mcs_field = page.find('#fields_to_show_mcs_field') - option_names = ['Voucher Label', 'Voucher Amount ($)'] - toggle_mcs_options(mcs_field, option_names) + within_multi_select("Columns") do + check "Voucher Label" + check "Voucher Amount ($)" + end end it 'displays the voucher label and amount values for the orders with voucher applied' do @@ -645,16 +647,9 @@ describe "Orders And Fulfillment" do end end - # @param mcs_field MultipleCheckedSelect (mcs) field - # @param option_name [String] option to check or select - def toggle_mcs_options(mcs_field, option_names) - mcs_field.click # to open the mcs menu - - option_names.each do |option_name| - option = page.find(".menu .menu_items label[data-label='#{option_name}']") - option.click - end - - mcs_field.click # to close the mcs menu + def within_multi_select(text) + find(".label", text:).click # open + yield + find(".label", text:).click # close end end From 25c1f64876997747d81dd25bef55dfdce8113a44 Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Thu, 4 Jan 2024 12:53:24 +0500 Subject: [PATCH 177/219] Update lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb Co-authored-by: Gaetan Craig-Riou <40413322+rioug@users.noreply.github.com> --- .../orders_and_fulfillment/order_cycle_customer_totals.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb index 298df7daa7..8a538dfe23 100644 --- a/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb +++ b/lib/reporting/reports/orders_and_fulfillment/order_cycle_customer_totals.rb @@ -172,7 +172,7 @@ module Reporting return '' unless voucher_applicable?(order) voucher = order.voucher_adjustments.take.originator - voucher&.code.to_s # in case if we don't get the voucher, return "" + voucher.code.to_s end def voucher_amount(order) From 36c6d5fd2e34d482a37710dcc2baa7491164a7f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 09:12:23 +0000 Subject: [PATCH 178/219] Bump aws-sdk-s3 from 1.141.0 to 1.142.0 Bumps [aws-sdk-s3](https://github.com/aws/aws-sdk-ruby) from 1.141.0 to 1.142.0. - [Release notes](https://github.com/aws/aws-sdk-ruby/releases) - [Changelog](https://github.com/aws/aws-sdk-ruby/blob/version-3/gems/aws-sdk-s3/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-ruby/commits) --- updated-dependencies: - dependency-name: aws-sdk-s3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ac4ac1f30..56179b1da4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -155,16 +155,16 @@ GEM awesome_nested_set (3.6.0) activerecord (>= 4.0.0, < 7.2) aws-eventstream (1.3.0) - aws-partitions (1.860.0) - aws-sdk-core (3.189.0) + aws-partitions (1.877.0) + aws-sdk-core (3.190.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.74.0) + aws-sdk-kms (1.75.0) aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.141.0) + aws-sdk-s3 (1.142.0) aws-sdk-core (~> 3, >= 3.189.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.8) From 9a0685bec4a0b866e67b9352f5f7eb40883daca6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 09:17:21 +0000 Subject: [PATCH 179/219] Bump mime-types from 3.5.1 to 3.5.2 Bumps [mime-types](https://github.com/mime-types/ruby-mime-types) from 3.5.1 to 3.5.2. - [Changelog](https://github.com/mime-types/ruby-mime-types/blob/main/History.md) - [Commits](https://github.com/mime-types/ruby-mime-types/compare/v3.5.1...v3.5.2) --- updated-dependencies: - dependency-name: mime-types dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ac4ac1f30..eb7756d103 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -402,9 +402,9 @@ GEM marcel (1.0.2) matrix (0.4.2) method_source (1.0.0) - mime-types (3.5.1) + mime-types (3.5.2) mime-types-data (~> 3.2015) - mime-types-data (3.2023.0808) + mime-types-data (3.2023.1205) mimemagic (0.4.3) nokogiri (~> 1) rake From 0e9ef61648db1e4644e37a363ecffc3b5a14879c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 09:22:11 +0000 Subject: [PATCH 180/219] Bump shoulda-matchers from 5.3.0 to 6.0.0 Bumps [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) from 5.3.0 to 6.0.0. - [Release notes](https://github.com/thoughtbot/shoulda-matchers/releases) - [Changelog](https://github.com/thoughtbot/shoulda-matchers/blob/main/CHANGELOG.md) - [Commits](https://github.com/thoughtbot/shoulda-matchers/compare/v5.3.0...v6.0.0) --- updated-dependencies: - dependency-name: shoulda-matchers dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ac4ac1f30..e1efab8528 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -674,7 +674,7 @@ GEM tilt (>= 1.1, < 3) sd_notify (0.1.1) semantic_range (3.0.0) - shoulda-matchers (5.3.0) + shoulda-matchers (6.0.0) activesupport (>= 5.2.0) sidekiq (7.2.0) concurrent-ruby (< 2) From 056907d195054bccc6e529159a33966c1680d36a Mon Sep 17 00:00:00 2001 From: Ahmed Ejaz Date: Fri, 5 Jan 2024 00:59:42 +0500 Subject: [PATCH 181/219] 11971: update z-index for ToS --- app/webpacker/css/admin_v3/components/messages.scss | 2 +- app/webpacker/css/admin_v3/globals/variables.scss | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/webpacker/css/admin_v3/components/messages.scss b/app/webpacker/css/admin_v3/components/messages.scss index 1d574a9a07..1c07461075 100644 --- a/app/webpacker/css/admin_v3/components/messages.scss +++ b/app/webpacker/css/admin_v3/components/messages.scss @@ -30,7 +30,7 @@ left: 0; bottom: 0; width: 100%; - z-index: 1000; + z-index: $flash-message-z-index; display: flex; justify-content: center; diff --git a/app/webpacker/css/admin_v3/globals/variables.scss b/app/webpacker/css/admin_v3/globals/variables.scss index f9e487290d..2f60494f8c 100644 --- a/app/webpacker/css/admin_v3/globals/variables.scss +++ b/app/webpacker/css/admin_v3/globals/variables.scss @@ -179,4 +179,5 @@ $btn-condensed-height: 26px !default; // z-index //-------------------------------------------------------------- -$tos-banner-z-index: 102; +$tos-banner-z-index: 1001; +$flash-message-z-index: 1000; From b5c413b9e799f7a233be4d8f7dcf408da2473d14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 22:05:30 +0000 Subject: [PATCH 182/219] Bump view_component from 3.8.0 to 3.9.0 Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.8.0 to 3.9.0. - [Release notes](https://github.com/viewcomponent/view_component/releases) - [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/viewcomponent/view_component/compare/v3.8.0...v3.9.0) --- updated-dependencies: - dependency-name: view_component dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ac4ac1f30..825980da97 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -753,7 +753,7 @@ GEM validates_lengths_from_database (0.8.0) activerecord (>= 4) vcr (6.2.0) - view_component (3.8.0) + view_component (3.9.0) activesupport (>= 5.2.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) From 57a6d1ef06131e0ec7cdc8042a59660f806494a7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 5 Jan 2024 11:48:22 +1100 Subject: [PATCH 183/219] Partial spec of error message for readability This avoids Rubocop warnings. We don't need to test for the whole message. The tested part is unique already and quicker to read. --- spec/system/admin/order_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/order_spec.rb b/spec/system/admin/order_spec.rb index b9aec514c3..7722111544 100644 --- a/spec/system/admin/order_spec.rb +++ b/spec/system/admin/order_spec.rb @@ -1104,12 +1104,12 @@ describe ' # the New invoice button + the warning should be visible expect(page).to have_link "Create or Update Invoice" - expect(page).to have_content "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." + expect(page).to have_content "The order has changed since the last invoice update." click_link "Create or Update Invoice" # and disappear after clicking expect(page).to have_no_link "Create or Update Invoice" - expect(page).to_not have_content "The order has changed since the last invoice update. The invoice shown here might not be up-to-date anymore." + expect(page).to_not have_content "The order has changed since the last invoice update." # creating an invoice, displays a second row expect(page.find("table").text).to have_content(table_contents) From a1b02de11e4ec1d17273c1a8de96c947efd9c78d Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 5 Jan 2024 12:16:41 +1100 Subject: [PATCH 184/219] Update all locales with the latest Transifex translations --- config/locales/ar.yml | 5 + config/locales/ca.yml | 7 +- config/locales/cy.yml | 7 +- config/locales/de_CH.yml | 18 +- config/locales/de_DE.yml | 19 +- config/locales/el.yml | 1 + config/locales/en_AU.yml | 5 + config/locales/en_BE.yml | 5 + config/locales/en_CA.yml | 7 +- config/locales/en_DE.yml | 5 + config/locales/en_FR.yml | 17 +- config/locales/en_GB.yml | 7 +- config/locales/en_IE.yml | 8 +- config/locales/en_IN.yml | 41 +- config/locales/en_NZ.yml | 5 + config/locales/en_PH.yml | 5 + config/locales/en_US.yml | 5 + config/locales/en_ZA.yml | 5 + config/locales/es.yml | 7 +- config/locales/es_CO.yml | 5 + config/locales/es_CR.yml | 5 + config/locales/es_US.yml | 5 + config/locales/fil_PH.yml | 5 + config/locales/fr.yml | 20 +- config/locales/fr_BE.yml | 32 +- config/locales/fr_CA.yml | 7 +- config/locales/fr_CH.yml | 5 + config/locales/fr_CM.yml | 5 + config/locales/hi.yml | 38 +- config/locales/hu.yml | 5 + config/locales/it.yml | 5 + config/locales/it_CH.yml | 5 + config/locales/ko.yml | 5 + config/locales/ml.yml | 1374 ++++++++++++++++++- config/locales/mr.yml | 43 +- config/locales/nb.yml | 8 +- config/locales/nl_BE.yml | 5 + config/locales/pa.yml | 2682 ++++++++++++++++++++++++++++++++++++- config/locales/pl.yml | 1 + config/locales/pt.yml | 5 + config/locales/pt_BR.yml | 5 + config/locales/ru.yml | 5 + config/locales/sv.yml | 3 + config/locales/tr.yml | 5 + config/locales/uk.yml | 5 + 45 files changed, 4301 insertions(+), 166 deletions(-) diff --git a/config/locales/ar.yml b/config/locales/ar.yml index c00ddd3365..9f3b002f57 100644 --- a/config/locales/ar.yml +++ b/config/locales/ar.yml @@ -796,6 +796,7 @@ ar: view_products: الذهاب إلى صفحة المنتجات view_inventory: انتقل إلى صفحة المخزون product_headings: + distributor: الموزع producer: المنتج sku: SKU name: الاسم @@ -1112,6 +1113,8 @@ ar: active: نشيط؟ add_new: اضف جديد no_voucher_yet: لا قسائم حتى الآن + connected_apps: + loading: "جار التحميل" actions: edit_profile: الإعدادات properties: الخصائص @@ -1777,6 +1780,8 @@ ar: invoice_tax_total: "إجمالي ضريبة السلع والخدمات:" tax_invoice: "فاتورة ضريبية" tax_total: "إجمالي الضريبة (%{rate}):" + invoice_shipping_category_delivery: "توصيل" + invoice_shipping_category_pickup: "استلام" total_excl_tax: "المجموع (باستثناء الضرائب):" total_incl_tax: "إجمالي (بما في ذلك الضرائب):" abn: "ABN:" diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 60f3364ab1..2ae558e9b9 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -713,8 +713,6 @@ ca: table: save: Guardar canvis reset: Descartar canvis - bulk_update: - success: "Els productes s'han actualitzat amb èxit" product_import: title: Importació de productes file_not_found: No s'ha trobat el fitxer o no s'ha pogut obrir @@ -813,6 +811,7 @@ ca: view_products: Anar a la pàgina de Productes view_inventory: Anar a la pàgina d'Inventari product_headings: + distributor: Distribuïdora producer: Productora sku: Número de referència (SKU) name: Nom @@ -1125,6 +1124,8 @@ ca: remove_logo: "Eliminar el logo" remove_logo_confirm: "Esteu segur de voler eliminar el logo?" remove_logo_success: "Logo eliminat" + connected_apps: + loading: "S'està carregant" actions: edit_profile: Configuració properties: Propietats @@ -1740,6 +1741,8 @@ ca: invoice_tax_total: "Total IVA:" tax_invoice: "FACTURA D'IMPOSTOS" tax_total: "Impost total (%{rate}):" + invoice_shipping_category_delivery: "Lliurament " + invoice_shipping_category_pickup: "Recollida" total_excl_tax: "Total (impostos exclòs):" total_incl_tax: "Total (impost inclòs):" abn: "NIF:" diff --git a/config/locales/cy.yml b/config/locales/cy.yml index 5f93d4a3d7..ca4b719835 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -766,8 +766,6 @@ cy: other: "Addaswyd %{count} cynnyrch" save: Cadw’r newidiadau reset: Hepgor y newidiadau - bulk_update: - success: "Llwyddwyd i ddiweddaru’r cynnyrch" product_import: title: Mewnforio Cynnyrch file_not_found: Ni ddaethpwyd o hyd i ffeil neu ni ellid ei hagor @@ -866,6 +864,7 @@ cy: view_products: Ewch i'r Dudalen Cynhyrchion view_inventory: Ewch i Dudalen y Stocrestr product_headings: + distributor: Dosbarthwr producer: Cynhyrchydd sku: Cod y Cynnyrch name: Enw @@ -1195,6 +1194,8 @@ cy: create_custom_tab: "Creu tab pwrpasol yn ffrynt y siop" custom_tab_title: "Teitl y tab pwrpasol" custom_tab_content: "Cynnwys y tab pwrpasol" + connected_apps: + loading: "Yn llwytho" actions: edit_profile: Gosodiadau properties: Manylion @@ -1878,6 +1879,8 @@ cy: invoice_tax_total: "Cyfanswm GST:" tax_invoice: "ANFONEB TRETH" tax_total: "Cyfanswm treth (%{rate}):" + invoice_shipping_category_delivery: "Dosbarthu" + invoice_shipping_category_pickup: "Casglu" total_excl_tax: "Cyfanswm (heb dreth):" total_incl_tax: "Cyfanswm (gan gynnwys treth):" abn: "Rhif y Cwmni:" diff --git a/config/locales/de_CH.yml b/config/locales/de_CH.yml index 0aa1e4c2a7..69ce9c2f1c 100644 --- a/config/locales/de_CH.yml +++ b/config/locales/de_CH.yml @@ -6,7 +6,11 @@ de_CH: spree/shipping_method: Lieferoption attributes: spree/order/ship_address: - phone: "Telefonnummer (optional)" + address1: "Lieferadresse Straße + Hausnummer" + address2: "Lieferadresse Adresszusatz" + city: "Lieferadresse Ort" + country: "Lieferadresse Land" + phone: "Telefonnummer" firstname: "Vorname" lastname: "Nachname" spree/user: @@ -684,6 +688,8 @@ de_CH: categories: label: Lieferkategorien search: Suche + no_products: + no_products_found: Keine Produkte gefunden. product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. @@ -780,6 +786,7 @@ de_CH: view_products: Zur Produktseite view_inventory: Zur Katalogseite product_headings: + distributor: Verteilstelle producer: Produzent sku: Artikelnummer name: Name @@ -1083,6 +1090,8 @@ de_CH: rate: Steuersatz customers: Kunde active: Aktiv? + connected_apps: + loading: "Wird geladen ..." actions: edit_profile: Einstellungen properties: Eigenschaften @@ -1549,10 +1558,11 @@ de_CH: message_html: "Sie haben bereits eine Bestellung für diesen Bestellzyklus. Überprüfen Sie den %{cart}, um die Artikel zu sehen, die Sie zuvor bestellt haben. Sie können Artikel auch stornieren, solange der Bestellzyklus geöffnet ist." step1: contact_information: + title: Kontakt Information email: label: E-Mail-Adresse phone: - label: Telefonnummer (optional) + label: Telefonnummer billing_address: title: Rechnungsadresse first_name: @@ -1700,6 +1710,8 @@ de_CH: invoice_tax_total: "Umsatzsteuersumme:" tax_invoice: "RECHNUNG" tax_total: "davon Steuern (%{rate}):" + invoice_shipping_category_delivery: "Lieferung" + invoice_shipping_category_pickup: "Abholen" total_excl_tax: "Netto (zzgl. Steuern):" total_incl_tax: "GESAMT (inkl. Steuern):" abn: "USt-IdNr.:" @@ -2310,7 +2322,7 @@ de_CH: contact_field: "Hauptansprechpartner" contact_field_placeholder: "Vorname Nachname" contact_field_required: "Bitte geben Sie einen Hauptansprechpartner ein." - phone_field: "Telefonnummer (optional)" + phone_field: "Telefonnummer" phone_field_placeholder: "z. B. +49 40 123 456" type: title: "Art des Profils" diff --git a/config/locales/de_DE.yml b/config/locales/de_DE.yml index b01596f27a..1315013b5f 100644 --- a/config/locales/de_DE.yml +++ b/config/locales/de_DE.yml @@ -594,6 +594,9 @@ de_DE: has_n_rules: "hat %{num} Regeln" unsaved_confirm_leave: "Es gibt ungespeicherte Änderungen auf dieser Seite. Möchten Sie ohne Speichern fortfahren?" available_units: "Verfügbare Einheiten" + terms_of_service_have_been_updated_html: "Die Nutzungsbedingungen des Open Food Network wurden aktualisiert: %{tos_link} Bitte stimmen Sie den neuen Bedingungen zu, bevor Sie die Plattform weiter verwenden." + terms_of_service: Nutzungsbedingungen lesen + accept_terms_of_service: Nutzungsbedingungen zustimmen shopfront_settings: embedded_shopfront_settings: "Einstellungen für eingebettete Gruppen" enable_embedded_shopfronts: "Eingebettete Gruppen erlauben" @@ -781,7 +784,7 @@ de_DE: save: Änderungen speichern reset: Änderungen verwerfen bulk_update: - success: "Produkte erfolgreich aktualisiert" + success: Die Änderungen wurden gespeichert. product_import: title: Produkte importieren file_not_found: Die Datei konnte nicht gefunden oder nicht geöffnet werden. @@ -880,6 +883,7 @@ de_DE: view_products: Zur Produktseite view_inventory: Zur Katalogseite product_headings: + distributor: Verteilstelle producer: Produzent sku: Artikelnummer name: Name @@ -1212,6 +1216,9 @@ de_DE: create_custom_tab: "Benutzerdefinierten Reiter im Online-Shop hinzufügen" custom_tab_title: "Titel des Reiters" custom_tab_content: "Inhalt des Reiters" + connected_apps: + legend: "Verknüpfte Apps" + loading: "Wird geladen ..." actions: edit_profile: Einstellungen properties: Eigenschaften @@ -1461,6 +1468,7 @@ de_DE: users: "Benutzer" vouchers: Gutscheine white_label: "OFN verbergen" + connected_apps: "Verknüpfte Apps" enterprise_group: primary_details: "Unternehmen" users: "Benutzer" @@ -1835,8 +1843,8 @@ de_DE: shared: mailers: powered_by: - open_food_network: "Open Food Network" - powered_html: "Ermöglicht durch das %{open_food_network}." + open_food_network: "E-Mail" + powered_html: "Ermöglicht durch das Open Food Network. Schicken Sie uns eine %{open_food_network}." menu: cart: cart: "Warenkorb/Kasse" @@ -1903,7 +1911,8 @@ de_DE: invoice_tax_total: "Umsatzsteuersumme:" tax_invoice: "RECHNUNG" tax_total: "davon Steuern (%{rate}):" - invoice_shipping_type: "Lieferoption:" + invoice_shipping_category_delivery: "Lieferoptionen" + invoice_shipping_category_pickup: "Abholen" total_excl_tax: "Netto (zzgl. Steuern):" total_incl_tax: "GESAMT (inkl. Steuern):" total_all_tax: "Steuern gesamt:" @@ -2219,7 +2228,7 @@ de_DE: shopping_contact_address: "Adresse" shopping_contact_web: "Kontakt" shopping_contact_social: "Folgen" - shopping_groups_part_of: "Ist Mitglied der Gruppe(n):" + shopping_groups_part_of: "ist Mitglied der Gruppe(n):" shopping_producers_of_hub: "Produzenten bei %{hub}:" enterprises_next_closing: "Nächster Bestellschluss" enterprises_currently_open: "Bestellzyklus ist geöffnet" diff --git a/config/locales/el.yml b/config/locales/el.yml index c67d4ea495..7f3c4ee5ea 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -683,6 +683,7 @@ el: view_products: Μεταβείτε στη σελίδα προϊόντων view_inventory: Μετάβαση στη σελίδα αποθέματος product_headings: + distributor: Διανομέας producer: Παραγωγός sku: SKU name: Όνομα diff --git a/config/locales/en_AU.yml b/config/locales/en_AU.yml index 7ff2e2a49e..234302e1f1 100644 --- a/config/locales/en_AU.yml +++ b/config/locales/en_AU.yml @@ -645,6 +645,7 @@ en_AU: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -925,6 +926,8 @@ en_AU: rate: Rate customers: Customer active: Active? + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1485,6 +1488,8 @@ en_AU: invoice_tax_total: "GST Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "ABN:" diff --git a/config/locales/en_BE.yml b/config/locales/en_BE.yml index fb229c1a62..eec16d706c 100644 --- a/config/locales/en_BE.yml +++ b/config/locales/en_BE.yml @@ -603,6 +603,7 @@ en_BE: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -863,6 +864,8 @@ en_BE: vouchers: rate: Rate customers: Customer + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1370,6 +1373,8 @@ en_BE: invoice_tax_total: "GST Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "ABN:" diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index fe6636895b..0d16e223fb 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -770,8 +770,6 @@ en_CA: other: "%{count} products modified." save: Save changes reset: Discard changes - bulk_update: - success: "Products successfully updated" product_import: title: Product Import file_not_found: File not found or could not be opened @@ -870,6 +868,7 @@ en_CA: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -1200,6 +1199,8 @@ en_CA: create_custom_tab: "Create custom tab in shopfront" custom_tab_title: "Title for custom tab" custom_tab_content: "Content for custom tab" + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1888,6 +1889,8 @@ en_CA: invoice_tax_total: "Sales Tax:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total " abn: "Business Number:" diff --git a/config/locales/en_DE.yml b/config/locales/en_DE.yml index 993a4ec845..24b0e0fe16 100644 --- a/config/locales/en_DE.yml +++ b/config/locales/en_DE.yml @@ -610,6 +610,7 @@ en_DE: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -871,6 +872,8 @@ en_DE: vouchers: rate: Rate customers: Customer + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1380,6 +1383,8 @@ en_DE: invoice_tax_total: "GST Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "ABN:" diff --git a/config/locales/en_FR.yml b/config/locales/en_FR.yml index 1d8bf10057..6a9d2e5e63 100644 --- a/config/locales/en_FR.yml +++ b/config/locales/en_FR.yml @@ -781,7 +781,7 @@ en_FR: save: Save changes reset: Discard changes bulk_update: - success: "Products successfully updated" + success: Changes saved product_import: title: Product Import file_not_found: File not found or could not be opened @@ -880,6 +880,7 @@ en_FR: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -1210,6 +1211,8 @@ en_FR: create_custom_tab: "Create custom tab in shopfront" custom_tab_title: "Title for custom tab" custom_tab_content: "Content for custom tab" + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1439,6 +1442,8 @@ en_FR: has_no_payment_methods: "%{enterprise} has no payment methods" has_no_shipping_methods: "%{enterprise} has no shipping methods" has_no_enterprise_fees: "%{enterprise} has no enterprise fees" + flashes: + dismiss: Dismiss side_menu: enterprise: primary_details: "Primary Details" @@ -1898,9 +1903,11 @@ en_FR: invoice_column_price_per_unit_without_taxes: "Price Per unit (Excl. tax)" invoice_column_tax_rate: "Tax rate" invoice_tax_total: "GST Total:" + invoice_cancel_and_replace_invoice: "cancels and replaces invoice" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" - invoice_shipping_type: "Type:" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" total_all_tax: "Total tax:" @@ -2120,6 +2127,9 @@ en_FR: order_back_to_store: Back To Store order_back_to_cart: Back To Cart order_back_to_website: Back To Website + checkout_details_title: Checkout Details + checkout_payment_title: Checkout Payment + checkout_summary_title: Checkout Summary bom_tip: "Use this page to alter product quantities across multiple orders. Products may also be removed from orders entirely, if required." unsaved_changes_warning: "Unsaved changes exist and will be lost if you continue." unsaved_changes_error: "Fields with red borders contain errors." @@ -4010,6 +4020,7 @@ en_FR: has_no_payment_methods: "has no payment methods" has_no_shipping_methods: "has no shipping methods" products: + products_tip: "The products that you sell through CoopCircuits." active_products: zero: "You don't have any active products." one: "You have one active product" @@ -4162,6 +4173,8 @@ en_FR: bulk_unit_size: Bulk unit size display_as: display_as: Display As + clone: + success: Product cloned reports: table: select_and_search: "Select filters and click on %{option} to access your data." diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml index bdb2239f89..378d750aab 100644 --- a/config/locales/en_GB.yml +++ b/config/locales/en_GB.yml @@ -766,8 +766,6 @@ en_GB: other: "%{count}products modified." save: Save changes reset: Discard changes - bulk_update: - success: "Products successfully updated" product_import: title: Product Import file_not_found: File not found or could not be opened @@ -866,6 +864,7 @@ en_GB: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: Product Code name: Name @@ -1195,6 +1194,8 @@ en_GB: create_custom_tab: "Create custom tab in shopfront" custom_tab_title: "Title for custom tab" custom_tab_content: "Content for custom tab" + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1883,6 +1884,8 @@ en_GB: invoice_tax_total: "VAT Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "Company Number:" diff --git a/config/locales/en_IE.yml b/config/locales/en_IE.yml index c389ffc5a1..5a3ed90359 100644 --- a/config/locales/en_IE.yml +++ b/config/locales/en_IE.yml @@ -777,8 +777,6 @@ en_IE: other: "%{count} products could not be saved. Please review the errors and try again." save: Save changes reset: Discard changes - bulk_update: - success: "Products successfully updated" product_import: title: Product Import file_not_found: File not found or could not be opened @@ -877,6 +875,7 @@ en_IE: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: Product Code name: Name @@ -1207,6 +1206,8 @@ en_IE: create_custom_tab: "Create custom tab in shopfront" custom_tab_title: "Title for custom tab" custom_tab_content: "Content for custom tab" + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1897,7 +1898,8 @@ en_IE: invoice_tax_total: "VAT Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" - invoice_shipping_type: "Type:" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" total_all_tax: "Total tax:" diff --git a/config/locales/en_IN.yml b/config/locales/en_IN.yml index 02e85add1c..bc93fed94e 100644 --- a/config/locales/en_IN.yml +++ b/config/locales/en_IN.yml @@ -193,9 +193,9 @@ en_IN: title: "Open Food Network India" welcome_to: "Welcome to " site_meta_description: "The Open Food Network India software platform allows farmers to sell produce online, at a price that works for them. It has been built specifically for selling food so it can handle tricky measures or stock levels that only food has - a dozen eggs, a bunch of parsley, a whole chicken that varies in weight…" - search_by_name: Search by name, town, State or postcode... - producers_join: India producers are now welcome to join Open Food Network India. - charges_sales_tax: Charges VAT? + search_by_name: Search by name, town, state or PIN code... + producers_join: Indian producers are now welcome to join Open Food Network India. + charges_sales_tax: Charges GST? print_invoice: "Print Invoice" print_ticket: "Print Ticket" select_ticket_printer: "Select printer for tickets" @@ -629,6 +629,7 @@ en_IN: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: Product Code name: Name @@ -897,6 +898,8 @@ en_IN: rate: Rate customers: Customer active: Active? + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1437,6 +1440,8 @@ en_IN: invoice_tax_total: "VAT Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "Company Number:" @@ -1485,8 +1490,8 @@ en_IN: city: City city_placeholder: eg. Newcastle state: State - postcode: Postcode - postcode_placeholder: eg. 3070 + postcode: PIN Code + postcode_placeholder: eg. 400081 suburb: Suburb country: Country unauthorized: Unauthorized @@ -1580,14 +1585,14 @@ en_IN: cookies_policy_link: "cookies policy" cookies_accept_button: "Accept Cookies" home_shop: Shop Now - brandstory_headline: "Growing Local Food Online" - brandstory_intro: "THE online community helping you to build a successful food enterprise" + brandstory_headline: "Buy Local Food Online." + brandstory_intro: "Read about our mission" brandstory_part1: "The Open Food Network software platform allows farmers to sell produce online, at a price that works for them. It has been built specifically for selling food so it can handle tricky measures or stock levels that only food has - a dozen eggs, a bunch of parsley, a whole chicken that varies in weight…" - brandstory_part2: "Food Producers, Farmer Producer Organizations (FPO), or Farmer Producer Companies (FPC) can create an online shop, collect payments, and sell through other shops on this platform." + brandstory_part2: "Farmers, Food Producers, Farmer Markets, Farmer Producer Organizations (FPO), or Farmer Producer Companies (FPC) can create an online shop, collect payments, and sell through other shops on this platform." brandstory_part3: "Wholesalers, Farmer Producer Organizations (FPO), or Farmer Producer Companies (FPC) can integrate OFN with their existing systems and manage buying groups to supply customers with their produce through our national network of food hubs and shops." - brandstory_part4: "Farmer Producer Organizations (FPO), or Farmer Producer Companies (FPC) can bring together producers in their local area to create virtual farmers’ markets, building a resilient local food economy." + brandstory_part4: "Farmers Markets can bring together producers in their local area to create an online marketplace, building a resilient local food economy." brandstory_part5_strong: "And what’s just as important as the software itself are the values which underpin it. " - brandstory_part6: "If you sell good food - as a farmer, farmer’s market, food co-op, or food hub- then choose software that aligns with your values to build food systems for people and planet, not profit. By working collectively rather than competitively, we share the costs of developing new software, and we ensure that our project is resilient!" + brandstory_part6: "If you sell good food - as a farmer, farmers market, food co-op, or food hub- then choose software that aligns with your values to build food systems for people and planet, not profit. By working collectively rather than competitively, we share the costs of developing new software, and we ensure that our project is resilient!" system_headline: "Selling on OFN - 3 easy steps" system_step1: "1. Create new account" system_step1_text: "Set up your enterprise with a name, description, photos, contact details and social media links." @@ -1870,7 +1875,7 @@ en_IN: sell_hubs_detail: "Set up a profile for your food enterprise or organisation on the OFN. At any time you can upgrade your profile to a multi-producer shop." sell_groups_detail: "Set up a tailored directory of enterprises (producers and other food enterprises) for your region or for your organisation." sell_user_guide: "Find out more in our user guide." - sell_listing_price: "Listing a profile on OFN India is free. Plans for shops and hubs start from as little as ₹100 per month. For more detail on pricing visit https://about.openfoodindia.org/pricing/ ." + sell_listing_price: "Listing a profile on OFN India is free. Plans for shops and hubs start from as little as ₹375 per month. For more detail on pricing visit https://about.openfoodindia.org/pricing/ ." sell_embed: "We collectively budget for new feature development from the international OFN community. This way the huge cost of good software development can be shared. If you want a new feature, chances are someone in France, South Africa, Australia, India or Brazil might want it too! Use the Community Forum to suggest features you'd like to see." sell_ask_services: "Ask us about OFN services." shops_title: Shops @@ -2005,18 +2010,18 @@ en_IN: producer: "Great! First we need to know a little bit about your farm:" enterprise_name_field: "Enterprise Name:" producer_name_field: "Farm Name:" - producer_name_field_placeholder: "e.g. Charlie's Chilli Farm" + producer_name_field_placeholder: "e.g. Prashant Patil's Farm" producer_name_field_error: "Sorry, this name has already been taken. Please try another." address1_field: "Address line 1:" - address1_field_placeholder: "e.g. 123 Apple Drive" + address1_field_placeholder: "e.g. Lokmanya Tilak Road" address1_field_error: "Please enter an address" address2_field: "Address line 2:" suburb_field: "Town:" - suburb_field_placeholder: "eg. Taunton" + suburb_field_placeholder: "eg. Solapur" suburb_field_error: "Please enter a postal town" - postcode_field: "Postcode:" - postcode_field_placeholder: "eg. TA1 TAA" - postcode_field_error: "Postcode required" + postcode_field: "PIN Code:" + postcode_field_placeholder: "eg. 400081" + postcode_field_error: "PIN Code required" state_field: "State:" state_field_error: "State Required" country_field: "Country:" @@ -2083,7 +2088,7 @@ en_IN: enterprise_final_step: "Final step!" enterprise_social_text: "How can people find %{enterprise} online?" website: "Website" - website_placeholder: "eg. openfoodnetwork.org.au" + website_placeholder: "eg. openfoodnetwork.in" facebook: "Facebook" facebook_placeholder: "eg. www.facebook.com/PageNameHere" linkedin: "LinkedIn" diff --git a/config/locales/en_NZ.yml b/config/locales/en_NZ.yml index 9cf954d5ef..dbc5845878 100644 --- a/config/locales/en_NZ.yml +++ b/config/locales/en_NZ.yml @@ -782,6 +782,7 @@ en_NZ: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -1088,6 +1089,8 @@ en_NZ: rate: Rate customers: Customer active: Active? + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1705,6 +1708,8 @@ en_NZ: invoice_tax_total: "GST Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "GST No.:" diff --git a/config/locales/en_PH.yml b/config/locales/en_PH.yml index ca7a199432..fe20feeae1 100644 --- a/config/locales/en_PH.yml +++ b/config/locales/en_PH.yml @@ -620,6 +620,7 @@ en_PH: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -886,6 +887,8 @@ en_PH: vouchers: rate: Rate customers: Customer + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1416,6 +1419,8 @@ en_PH: invoice_tax_total: "VAT Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "TIN:" diff --git a/config/locales/en_US.yml b/config/locales/en_US.yml index 9b23d64d37..4686c02f4c 100644 --- a/config/locales/en_US.yml +++ b/config/locales/en_US.yml @@ -760,6 +760,7 @@ en_US: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -1051,6 +1052,8 @@ en_US: rate: Rate customers: Customer active: Active? + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1657,6 +1660,8 @@ en_US: invoice_tax_total: "Tax total:" tax_invoice: "INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "License, Certification, or Business ID:" diff --git a/config/locales/en_ZA.yml b/config/locales/en_ZA.yml index 368cb0d49f..6c34c26876 100644 --- a/config/locales/en_ZA.yml +++ b/config/locales/en_ZA.yml @@ -624,6 +624,7 @@ en_ZA: view_products: Go To Products Page view_inventory: Go To Inventory Page product_headings: + distributor: Distributor producer: Producer sku: SKU name: Name @@ -888,6 +889,8 @@ en_ZA: vouchers: rate: Rate customers: Customer + connected_apps: + loading: "Loading" actions: edit_profile: Settings properties: Properties @@ -1418,6 +1421,8 @@ en_ZA: invoice_tax_total: "VAT Total:" tax_invoice: "TAX INVOICE" tax_total: "Total tax (%{rate}):" + invoice_shipping_category_delivery: "Delivery" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Total (Excl. tax):" total_incl_tax: "Total (Incl. tax):" abn: "Company Number:" diff --git a/config/locales/es.yml b/config/locales/es.yml index 1cf3c71853..3bebf1300c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -704,8 +704,6 @@ es: table: save: Guardar Cambios reset: Desechar Cambios - bulk_update: - success: "Los productos se actualizaron correctamente" product_import: title: Importación de productos file_not_found: Archivo no encontrado o no se pudo abrir @@ -802,6 +800,7 @@ es: view_products: Ir a la página de productos view_inventory: Ir a la página de inventario product_headings: + distributor: Distribuidora producer: Productora sku: SKU name: Nombre @@ -1119,6 +1118,8 @@ es: remove_logo: "Eliminar el logo" remove_logo_confirm: "¿Está seguro de que desea eliminar este logo?" remove_logo_success: "Logo eliminado" + connected_apps: + loading: "Cargando" actions: edit_profile: Configuración properties: Propiedades @@ -1758,6 +1759,8 @@ es: invoice_tax_total: "IVA Total:" tax_invoice: "FACTURA DE IMPUESTOS" tax_total: "Total impuestos (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Recoger" total_excl_tax: "Total (Sin Impuestos):" total_incl_tax: "Total (Impuestos incl.)" abn: "NIF:" diff --git a/config/locales/es_CO.yml b/config/locales/es_CO.yml index d26a0bddc4..2252170726 100644 --- a/config/locales/es_CO.yml +++ b/config/locales/es_CO.yml @@ -649,6 +649,7 @@ es_CO: view_products: Ir a la página de productos view_inventory: Ir a la página de inventario product_headings: + distributor: Distribuidor producer: Productor sku: SKU name: Nombre @@ -920,6 +921,8 @@ es_CO: vouchers: rate: Impuesto customers: Cliente + connected_apps: + loading: "Cargando" actions: edit_profile: Configuración properties: Propiedades @@ -1465,6 +1468,8 @@ es_CO: invoice_tax_total: "Total IVA:" tax_invoice: "FACTURA DE IMPUESTOS" tax_total: "Total impuestos (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Recoger" total_excl_tax: "Total (sin impuestos):" total_incl_tax: "Total (Impuestos incl.)" abn: "NIT:" diff --git a/config/locales/es_CR.yml b/config/locales/es_CR.yml index d9ac04bc3e..e36b03826e 100644 --- a/config/locales/es_CR.yml +++ b/config/locales/es_CR.yml @@ -786,6 +786,7 @@ es_CR: view_products: Ir a la página de productos view_inventory: Ir a la página de inventario product_headings: + distributor: Distribuidor producer: Productor sku: SKU name: Nombre @@ -1095,6 +1096,8 @@ es_CR: rate: Impuesto customers: Cliente active: Activo? + connected_apps: + loading: "Cargando" actions: edit_profile: Configuración properties: Propiedades @@ -1714,6 +1717,8 @@ es_CR: invoice_tax_total: "Total IVA:" tax_invoice: "FACTURA DE IMPUESTOS" tax_total: "Total impuestos (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Recoger" total_excl_tax: "Total (sin impuestos):" total_incl_tax: "Total (Impuestos incl.)" abn: "NIF:" diff --git a/config/locales/es_US.yml b/config/locales/es_US.yml index 4c5d1ac6a3..3e78c2a400 100644 --- a/config/locales/es_US.yml +++ b/config/locales/es_US.yml @@ -758,6 +758,7 @@ es_US: view_products: Ir a la página de productos view_inventory: Ir a la página de inventario product_headings: + distributor: Distribuidor producer: Productora sku: SKU name: Nombre @@ -1050,6 +1051,8 @@ es_US: rate: Impuesto customers: Consumidora active: ¿Activo? + connected_apps: + loading: "Cargando" actions: edit_profile: Configuración properties: Propiedades @@ -1618,6 +1621,8 @@ es_US: invoice_tax_total: "IVA Total:" tax_invoice: "FACTURA DE IMPUESTOS" tax_total: "Total impuestos (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Recoger" total_excl_tax: "Total (Sin Impuestos):" total_incl_tax: "Total (Impuestos incl.)" abn: "NIF:" diff --git a/config/locales/fil_PH.yml b/config/locales/fil_PH.yml index 358c00a155..25279dac35 100644 --- a/config/locales/fil_PH.yml +++ b/config/locales/fil_PH.yml @@ -621,6 +621,7 @@ fil_PH: view_products: pumunta sa pahina ng mga produkto view_inventory: pumunta sa pahina ng mga imbentaryo product_headings: + distributor: Distributor producer: Producer sku: SKU name: Pangalan @@ -888,6 +889,8 @@ fil_PH: vouchers: rate: antas customers: Customer + connected_apps: + loading: "naglo-load" actions: edit_profile: Settings properties: mga katangian @@ -1418,6 +1421,8 @@ fil_PH: invoice_tax_total: "kabuuang GST:" tax_invoice: "TAX INVOICE" tax_total: "Kabuuang Tax (%{rate}):" + invoice_shipping_category_delivery: "pagdeliver" + invoice_shipping_category_pickup: "Pickup" total_excl_tax: "Kabuuan (Hindi kasama ang tax):" total_incl_tax: "Kabuuan (Kasama ang tax):" abn: "TIN:" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0f833aced0..0ef627f48b 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,5 +1,8 @@ fr: language_name: "Français" + time: + formats: + long: "%e %b %Y, %-k:%M" activerecord: models: spree/product: Produit @@ -778,7 +781,7 @@ fr: save: Sauvegarder les changements reset: Annuler les changements bulk_update: - success: "Produits mis à jour" + success: Changements sauvegardés product_import: title: Import liste produits file_not_found: Fichier non trouvé ou impossible à ouvrir @@ -877,6 +880,7 @@ fr: view_products: Aller à la page Produits view_inventory: Aller à la page Catalogues Boutiques product_headings: + distributor: Boutique producer: Producteur sku: Référence Produit name: Nom @@ -1208,6 +1212,8 @@ fr: create_custom_tab: "Créer un onglet personnalisé dans la boutique" custom_tab_title: "Titre de l'onglet personnalisé" custom_tab_content: "Contenu de l'onglet personnalisé" + connected_apps: + loading: "Chargement en cours" actions: edit_profile: Paramètres properties: Labels / propriétés @@ -1437,6 +1443,8 @@ fr: has_no_payment_methods: "%{enterprise} n'a pas défini de méthode de paiement" has_no_shipping_methods: "%{enterprise} n'a pas défini de méthode de livraison" has_no_enterprise_fees: "%{enterprise} n'a pas défini de marges et commissions" + flashes: + dismiss: Rejeter side_menu: enterprise: primary_details: "Informations de base" @@ -1900,9 +1908,11 @@ fr: invoice_column_price_per_unit_without_taxes: "Prix par unité (hors taxe)" invoice_column_tax_rate: "TVA applicable" invoice_tax_total: "Total TVA :" + invoice_cancel_and_replace_invoice: "annule et remplace la facture" tax_invoice: "FACTURE" tax_total: "Total taxe (%{rate}) :" - invoice_shipping_type: "Type :" + invoice_shipping_category_delivery: "Livraison" + invoice_shipping_category_pickup: "Retrait" total_excl_tax: "Total HT :" total_incl_tax: "Total TTC :" total_all_tax: "total taxe" @@ -2122,6 +2132,9 @@ fr: order_back_to_store: Retour à la boutique order_back_to_cart: Retour au panier order_back_to_website: Retour vers le site + checkout_details_title: Détails de la commande + checkout_payment_title: Paiement de la commande + checkout_summary_title: Résumé de la commande bom_tip: "Utilisez cette page pour modifier les quantités sur plusieurs commandes à la fois. Les produits peuvent aussi être supprimés des commandes si nécessaire." unsaved_changes_warning: "Des modifications n'ont pas été enregistrées et seront perdues si vous continuez." unsaved_changes_error: "Les champs entourés en rouge contiennent des erreurs." @@ -4064,6 +4077,7 @@ fr: has_no_payment_methods: "n'a pas de méthode de paiement" has_no_shipping_methods: "n'a pas de méthode de livraison" products: + products_tip: "Les produits que vous vendez via CoopCircuits." active_products: zero: "Vous n'avez aucun produit actif." one: "Vous avez un produit actif" @@ -4216,6 +4230,8 @@ fr: bulk_unit_size: Quantité totale du lot display_as: display_as: Unité affichée + clone: + success: Produit dupliqué reports: table: select_and_search: "Sélectionner les filtres et cliquer sur %{option} pour accéder aux données." diff --git a/config/locales/fr_BE.yml b/config/locales/fr_BE.yml index 0d4afaa5b1..6e4ea8856d 100644 --- a/config/locales/fr_BE.yml +++ b/config/locales/fr_BE.yml @@ -537,6 +537,7 @@ fr_BE: show: title: "Fichiers des conditions d'utilisation" no_files: "Aucune condition d'utilisation n'a encore été téléchargée." + current_terms_html: "Voir le %{tos_link} actuel. Heure de téléchargement : %{datetime} ." terms_of_service: "Conditions d'utilisation" delete: "Supprimer le fichier" confirm_delete: "Voulez-vous vraiment supprimer le fichier actuel des conditions d'utilisation ?" @@ -782,6 +783,7 @@ fr_BE: view_products: Aller à la page Produits view_inventory: Aller à la page Catalogues Comptoir product_headings: + distributor: Comptoir producer: Producteur·trice sku: Référence produit (sku) name: Nom @@ -870,6 +872,7 @@ fr_BE: legend: "Adresse" business_details: legend: "Juridique" + upload: 'télécharger' abn: Numéro d'entreprise abn_placeholder: 'ex: 000 000 000' acn: n° TVA @@ -877,6 +880,7 @@ fr_BE: display_invoice_logo: Afficher le logo sur la facture invoice_text: Ajouter une mention spécifique en bas des factures terms_and_conditions: "Termes et conditions" + uploaded_on: "téléchargé à" reset_form: "Vider les champs" business_address_legend: "Adresse de facturation" invoice_item_sorting_legend: "Ordre d'affichage sur facture" @@ -1000,7 +1004,7 @@ fr_BE: enable_subscriptions_false: "Désactivé" enable_subscriptions_true: "Activé" customer_names_in_reports: "Nom de client dans le rapport" - customer_names_tip: "Autoriser vos fourniseur à voir les noms des clients dans le rapport " + customer_names_tip: "Autoriser vos fourniseurs à voir les noms des clients dans le rapport " customer_names_false: "Désactivé" customer_names_true: "Activé" shopfront_message: "Message d'accueil comptoir ouvert" @@ -1099,6 +1103,8 @@ fr_BE: create_custom_tab: "Créer un onglet personnalisé dans la vitrine" custom_tab_title: "Titre de l'onglet personnalisé" custom_tab_content: "Contenu de l'onglet personnalisé" + connected_apps: + loading: "Chargement en cours" actions: edit_profile: Paramètres properties: Labels / propriétés @@ -1735,6 +1741,8 @@ fr_BE: invoice_tax_total: "Total TVA :" tax_invoice: "FACTURE" tax_total: "Total taxe (%{rate}) :" + invoice_shipping_category_delivery: "Livraison" + invoice_shipping_category_pickup: "Retrait" total_excl_tax: "Total HT :" total_incl_tax: "Total TTC :" abn: "Numéro d'entreprise : " @@ -1931,6 +1939,7 @@ fr_BE: order_not_paid: NON RÉGLÉ order_total: Total commande order_payment: "Payer via:" + no_payment_required: "Aucun paiement requis" order_billing_address: Adresse de facturation order_delivery_on: Livraison prévue order_delivery_address: Adresse de livraison @@ -2216,6 +2225,7 @@ fr_BE: orders_could_not_cancel: "Désolé, la commande n'a pas pu être annulée" orders_cannot_remove_the_final_item: "Impossible de supprimer le dernier produit d'une commande, si vous souhaitez supprimer l'ensemble des produits, veuillez annuler la commande." orders_bought_items_notice: + one: "Un article supplémentaire est déjà confirmé pour ce cycle de commande" few: "%{count} produits ajoutés ont été confirmés pour ce cycle de vente." many: "%{count} produits ajoutés ont été confirmés pour ce cycle de vente." other: "%{count} produits ajoutés ont été confirmés pour ce cycle de vente." @@ -2792,6 +2802,7 @@ fr_BE: report_header_transaction_fee: Frais de Transaction (TVA non incluse) report_header_total_untaxable_admin: Total ajustements non taxables report_header_total_taxable_admin: Total ajustments soumis à TVA (inclut TVA) + report_line_line_items: Ces articles equals: "Egal" contains: "contient" discount: "Réduction" @@ -2821,6 +2832,7 @@ fr_BE: payment_processing_failed: "Le paiement n' a pu être effectué , merci de vérifier les données rentrées" payment_method_not_supported: "Ce mode de paiement n'est pas possible. Veuillez en choisir un autre." payment_updated: "Paiement mis à jour " + action_required: "Action requise" tag_rules: "Règles de tag" enterprise_fee_whole_order: Commande totale enterprise_fee_by_name: "%{name} frais par %{role} %{enterprise_name}" @@ -2834,6 +2846,7 @@ fr_BE: enterprise_name_error: "est déjà utilisé. Si vous êtes le gérant de cette entreprise et que vous souhaitez demander le transfert du compte, ou bien si vous souhaitez distribuer les produits de cette entreprise, merci de contacter le manager actuel du profil à %{email}." enterprise_owner_error: "^ %{email} ne peut pas créer de nouvelles entreprises (limite actuelle : %{enterprise_limit} entreprises )." enterprise_role_uniqueness_error: "^Ce rôle existe déjà." + enterprise_terms_and_conditions_type_error: "Seuls les PDF sont autorisés" inventory_item_visibility_error: doit être vrai ou faux product_importer_file_error: "erreur : aucun document importé" product_importer_spreadsheet_error: "impossible de traiter le fichier : type de fichier invalide" @@ -2892,6 +2905,7 @@ fr_BE: resolve_errors: Veuillez corriger les erreurs suivantes more_items: "+ %{count} en plus" default_card_updated: La carte bancaire par défaut a été mise à jour + default_card_voids_auth: Changer votre carte par défaut supprimera les autorisations existantes des magasins pour la facturer. Vous pouvez réautoriser les magasins après avoir mis à jour la carte par défaut. Souhaitez-vous changer la carte par défaut ? cart: add_to_cart_failed: > Il y a eu un problème pour ajouter ce produit au panier. Il est peut-être @@ -2928,6 +2942,7 @@ fr_BE: terms_and_conditions_info: title: "Mise à jour des CGU & CGV" message_1: "Les CGV représentent le contrat entre vous, le vendeur, et l'acheteur. Ajouter un fichier ici permet à vos acheteurs de valider ce contrat lors de leur commande sous la forme d'une case à cocher avant la validation du paiement. Pour rappel, la mise en place de CGV est une obligation réglementaire." + message_2: "Les acheteurs ne seront tenus d’accepter les conditions générales qu’une seule fois. Cependant, si vous modifiez vos conditions générales, les acheteurs devront à nouveau les accepter avant de pouvoir passer à la caisse." terms_and_conditions_warning: title: "Mise à jour des CGU & CGV" message_1: "Tous vos acheteurs devront les accepter une fois à la validation de la commande. Si vous mettez à jour le fichier, tous vos acheteurs devront les accepter à nouveau lors du paiement." @@ -3043,6 +3058,8 @@ fr_BE: select_all_variants: "Sélectionner toutes %{total_number_of_variants}les variantes" variants_loaded: " %{num_of_variants_loaded}de %{total_number_of_variants}variantes chargées" loading_variants: "Chargement des variantes" + no_variants: "Aucune variante disponible pour ce produit (masquée via les paramètres d'inventaire)." + some_variants_hidden: "(Certaines variantes peuvent être masquées via les paramètres d'inventaire)" tag_rules: shipping_method_tagged_top: "Méthodes d'expédition étiquetées" shipping_method_tagged_bottom: "sont:" @@ -3064,7 +3081,7 @@ fr_BE: compiling_invoices: "Compile les factures" bulk_invoice_created: "Factures créées" bulk_invoice_failed: "La création des factures a échoué" - please_wait: "Veuillez attendre que le PDF soit disponible avant de fermé ce dialogue." + please_wait: "Veuillez attendre que le PDF soit disponible avant de fermer ce dialogue." order_state: address: "adresse" adjustments: "ajustements" @@ -3098,6 +3115,7 @@ fr_BE: processing: "en traitement" void: "faire un avoir" invalid: "invalide" + quantity_unavailable: "Stock disponible insuffisant. Cet article n'a pas été enregistré!" quantity_unchanged: "Quantité inchangée par rapport au montant précédent." cancel_the_order_html: "Cela annulera la commande en cours.
Êtes-vous sur de vouloir continuer?" cancel_the_order_send_cancelation_email: "Envoyer un e-mail d'annulation au client" @@ -3226,6 +3244,11 @@ fr_BE: signup_or_login: "Commencez par vous inscrire (ou connexion)" have_an_account: "Déjà inscrit?" action_login: "Se connecter." + inflections: + item: + one: "article" + many: "articles" + other: "articles" producers: signup: start_free_profile: "Commencez par créer votre profil entreprise, et présentez votre formule quand vous êtes prêt !" @@ -3506,6 +3529,9 @@ fr_BE: payment_method: "Méthode de paiement" payment_processing_failed: "Le paiement n' a pu être effectué , merci de vérifier les données rentrées" sku: "Référence produit" + there_are_no_items_for_this_order: "Il n'y a aucun article pour cette commande." + order_populator: + out_of_stock: '%{item} est en rupture de stock.' actions: update: "Mettre à jour" cancel: "Annuler" @@ -3762,6 +3788,7 @@ fr_BE: paypal: no_payment_via_admin_backend: Les payement paypal ne savent pas etre prit dans le Backoffice products: + image_upload_error: "Veuillez télécharger l'image au format JPG, PNG, GIF, SVG ou WEBP." new: title: "Nouveau Produit" new_product: "Nouveau Produit" @@ -4017,6 +4044,7 @@ fr_BE: past_orders: Commandes Passées transactions: transaction_history: Historique des Transactions + authorisation_required: Autorisation requise open_orders: order: Commander shop: Faire mes courses diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index 8ec8c6d354..20e35d116e 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -766,8 +766,6 @@ fr_CA: other: "%{count} produits modifiés" save: Sauvegarder les changements reset: Annuler les changements - bulk_update: - success: "Produits mis à jour" product_import: title: import produit file_not_found: Fichier non trouvé ou impossible à ouvrir @@ -866,6 +864,7 @@ fr_CA: view_products: Aller à la page Produits view_inventory: Aller à la page Catalogues Boutiques product_headings: + distributor: Hub-distributeur producer: Producteur sku: Référence Produit name: Nom @@ -1197,6 +1196,8 @@ fr_CA: create_custom_tab: "Créer un onglet personnalisé dans la boutique" custom_tab_title: "Titre de l'onglet personnalisé" custom_tab_content: "Contenu de l'onglet personnalisé" + connected_apps: + loading: "Chargement en cours" actions: edit_profile: Paramètres properties: Labels / propriétés @@ -1888,6 +1889,8 @@ fr_CA: invoice_tax_total: "Total Taxe :" tax_invoice: "FACTURE" tax_total: "Total taxe (%{rate}) :" + invoice_shipping_category_delivery: "Livraison" + invoice_shipping_category_pickup: "Retrait" total_excl_tax: "Total HT :" total_incl_tax: "Total TTC :" abn: "SIRET" diff --git a/config/locales/fr_CH.yml b/config/locales/fr_CH.yml index e572397cf1..38e82b783e 100644 --- a/config/locales/fr_CH.yml +++ b/config/locales/fr_CH.yml @@ -780,6 +780,7 @@ fr_CH: view_products: Aller à la page Produits view_inventory: Aller à la page Catalogues Boutiques product_headings: + distributor: Distributeur producer: Producteur sku: Référence Produit name: Nom @@ -1083,6 +1084,8 @@ fr_CH: rate: Taux customers: Client active: Active ? + connected_apps: + loading: "Chargement en cours" actions: edit_profile: Paramètres properties: Labels / propriétés @@ -1700,6 +1703,8 @@ fr_CH: invoice_tax_total: "Total TVA :" tax_invoice: "FACTURE" tax_total: "Total taxe (%{rate}) :" + invoice_shipping_category_delivery: "Livraison" + invoice_shipping_category_pickup: "Retrait" total_excl_tax: "Total HT :" total_incl_tax: "Total TTC :" abn: "SIRET" diff --git a/config/locales/fr_CM.yml b/config/locales/fr_CM.yml index ba66296ee4..fc0ddc0bf7 100644 --- a/config/locales/fr_CM.yml +++ b/config/locales/fr_CM.yml @@ -717,6 +717,7 @@ fr_CM: view_products: Aller à la page Produits view_inventory: Aller à la page Catalogues Boutiques product_headings: + distributor: Distributeur producer: Producteur sku: Référence Produit name: Produit/Variante @@ -1007,6 +1008,8 @@ fr_CM: rate: Taux customers: Client active: Active ? + connected_apps: + loading: "Chargement en cours" actions: edit_profile: Paramètres properties: Labels / propriétés @@ -1610,6 +1613,8 @@ fr_CM: invoice_tax_total: "Total TVA :" tax_invoice: "FACTURE" tax_total: "Total taxe (%{rate}) :" + invoice_shipping_category_delivery: "Livraison" + invoice_shipping_category_pickup: "Retrait" total_excl_tax: "Total HT :" total_incl_tax: "Total TTC :" abn: "SIRET" diff --git a/config/locales/hi.yml b/config/locales/hi.yml index ab6b2576ab..cb9be69189 100644 --- a/config/locales/hi.yml +++ b/config/locales/hi.yml @@ -780,8 +780,6 @@ hi: other: "%{count} उत्पाद सेव नहीं किए जा सके। कृपया त्रुटियों को रिव्यू करें और फिर से प्रयास करें।" save: परिवर्तन सेव करें reset: परिवर्तनों को अस्वीकार करें - bulk_update: - success: "उत्पाद सफलतापूर्वक अपडेट किए गए" product_import: title: उत्पाद इम्पोर्ट करें file_not_found: फ़ाइल नहीं मिली या खोली नहीं जा सकी @@ -880,6 +878,7 @@ hi: view_products: उत्पाडों के पेज पर जाएं view_inventory: इन्वेंट्री पेज पर जाएं product_headings: + distributor: वितरक producer: उत्पादक sku: SKU name: नाम @@ -1211,6 +1210,8 @@ hi: create_custom_tab: "शॉपफ्रन्ट में कस्टम टैब बनाएं" custom_tab_title: "कस्टम टैब के लिए शीर्षक" custom_tab_content: "कस्टम टैब के लिए सामग्री" + connected_apps: + loading: "लोड हो रहा" actions: edit_profile: सेटिंग्स properties: प्रॉपर्टीज़ @@ -1902,7 +1903,8 @@ hi: invoice_tax_total: "GST कुल:" tax_invoice: "टैक्स इनवॉइस" tax_total: "कुल टैक्स (%{rate} ):" - invoice_shipping_type: "टाइप करें:" + invoice_shipping_category_delivery: "डिलिवरी" + invoice_shipping_category_pickup: "पिकअप" total_excl_tax: "कुल (टैक्स को छोड़कर):" total_incl_tax: "कुल (टैक्स सहित):" total_all_tax: "कुल टैक्स:" @@ -1982,7 +1984,7 @@ hi: label_groups: "ग्रुप्स" label_about: "परिचय" label_blog: "ब्लॉग" - label_support: "समर्थन" + label_support: "सपोर्ट" label_shopping: "शॉपिंग" label_login: "लॉग-इन करें" label_logout: "लॉग-आउट करें" @@ -2056,10 +2058,10 @@ hi: home_shop: अभी खरीदें brandstory_headline: "कृषि उत्पाद, स्थानीय और ऑनलाईन!" brandstory_intro: "कभी-कभी सिस्टम को ठीक करने का सबसे अच्छा तरीका एक नया सिस्टम शुरू करना होता है…" - brandstory_part1: "ओपन फूड नेटवर्क इंडिया सॉफ्टवेयर प्लेटफॉर्म किसानों को लाभदायक कीमतों पर अपनी उपज ऑनलाइन बेचने की सुविधा देता है। यह सॉफ़्टवेयर खाद्यान्न बेचने के लिए डिज़ाइन किया गया है ताकि यह विभिन्न मापों या स्टॉक स्तरों को संभाल सके जो केवल कृषि उत्पादों में आम हैं। जैसे एक दर्जन अंडे, धनिया का एक गुच्छा, या एक पूरे चिकन का वजन जो अलग-अलग हो सकता है।" - brandstory_part2: "खाद्यान्न उत्पादक, Farmer Producer Organizations (FPO), या Farmer Producer Companies (FPC) अपनी खुद की ऑनलाइन दुकान बना सकते हैं, ऑनलाइन पेमेंट ले सकते है, या इसी वेबसाइट पर अन्य दुकानों के माध्यम से बेच भी सकते हैं।" + brandstory_part1: "ओपन फूड नेटवर्क सॉफ्टवेयर प्लेटफॉर्म किसानों को लाभदायक कीमतों पर अपनी उपज ऑनलाइन बेचने की सुविधा देता है। यह सॉफ़्टवेयर खाद्यान्न बेचने के लिए डिज़ाइन किया गया है ताकि यह विभिन्न मापों या स्टॉक स्तरों को संभाल सके जो केवल कृषि उत्पादों में आम हैं। जैसे एक दर्जन अंडे, धनिया का एक गुच्छा, या एक पूरे चिकन का वजन जो अलग-अलग हो सकता है।" + brandstory_part2: "खाद्यान्न उत्पादक, Farmers Markets, Farmer Producer Organizations (FPO), या Farmer Producer Companies (FPC) अपनी खुद की ऑनलाइन दुकान बना सकते हैं, ऑनलाइन पेमेंट ले सकते है, या इसी वेबसाइट पर अन्य दुकानों के माध्यम से बेच भी सकते हैं।" brandstory_part3: "थोक विक्रेता, Farmer Producer Organizations (FPO), या Farmer Producer Companies (FPC), OFN को अपने द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर के साथ integrate कर सकते हैं और ऑनलाइन खाद्य केंद्रों और दुकानों के हमारे राष्ट्रीय नेटवर्क के माध्यम से ग्राहकों को अपने उत्पादों की आपूर्ति करने के लिए खरीद समूह बना सकते हैं।" - brandstory_part4: "Farmer Producer Organizations (FPO), या Farmer Producer Companies (FPC) एक ऑनलाइन किसान बाजार बनाने के लिए अपने स्थानीय क्षेत्र में उत्पादकों को एक साथ ला सकते हैं, जिससे एक मजबूत स्थानीय खाद्य अर्थव्यवस्था बन सकती है।" + brandstory_part4: "Farmers Markets एक ऑनलाइन किसान बाजार बनाने के लिए अपने स्थानीय क्षेत्र में उत्पादकों को एक साथ ला सकते हैं, जिससे एक मजबूत स्थानीय खाद्य अर्थव्यवस्था बन सकती है।" brandstory_part5_strong: "हम इसे Open Food Network कहते हैं।" brandstory_part6: "यदि आप अच्छा खाद्य बेचते हैं - एक किसान, किसान बाजार, खाद्य सहकारी समिति, या खाद्य केंद्र के रूप में - तो ऐसा सॉफ़्टवेयर चुनें जो लोगों और पृथ्वी के लिए खाद्य प्रणाली बनाने के आपके मूल्यों के अनुरूप हो, न कि लाभ के लिए। प्रतिस्पर्धात्मक रूप से बजाय सामूहिक रूप से काम करके, हम नए सॉफ़्टवेयर विकसित करने की लागत साझा करते हैं, और हम यह सुनिश्चित करते हैं कि हमारी परियोजना लचीली है!" system_headline: "OFN पर कैसे बेचें - 3 आसान स्टेप्स।" @@ -2352,12 +2354,12 @@ hi: sell_hubs_detail: "OFN पर अपने खाद्यान्न एंटरप्राइज़ या संगठन के लिए एक प्रोफ़ाइल सेट करें। किसी भी समय आप अपनी प्रोफ़ाइल को मल्टी-उत्पादक शॉप में अपग्रेड कर सकते हैं।" sell_groups_detail: "अपने क्षेत्र के लिए या अपने संगठन के लिए एंटरप्राइजों (उत्पादकों और दूसरे खाद्यान्नों के एंटरप्राइज़) की एक अनुकूलित निर्देशिका सेट करें।" sell_user_guide: "हमारी यूज़र गाइड में और जानें।" - sell_listing_price: "OFN पर लिस्टिंग फ्री है। OFN पर शॉप खोलना और चलाना ₹50,000 की मासिक बिक्री तक फ्री है। यदि आप ज्यादा बिक्री करते हैं तो आप बिक्री के 1% से 3% के बीच अपना सामुदायिक योगदान चुन सकते हैं। मूल्य निर्धारण के बारे में ज्यादा जानकारी के लिए शीर्ष मेन्यू में अबाउट लिंक के माध्यम से सॉफ़्टवेयर प्लेटफ़ॉर्म अनुभाग पर जाएं।" + sell_listing_price: "OFN India पर लिस्टिंग फ्री है। दुकानों और हब्स के लिए योजनाएं कम से कम ₹375 प्रति माह से शुरू होती हैं। मूल्य निर्धारण के बारे में अधिक जानकारी के लिए https://about.openfoodindia.org/pricing/ पर जाएं।" sell_embed: "हम आपकी अपनी अनुकूलित वेबसाइट में एक OFN शॉप भी एम्बेड कर सकते हैं या आपके क्षेत्र के लिए एक अनुकूलित स्थानीय खाद्यान्न नेटवर्क वेबसाइट बना सकते हैं।" sell_ask_services: "OFN सेवाओं के बारे में हमसे पूछें।" shops_title: दुकानें shops_headline: खरीदारी, पूरी तरह से बदली हुई। - shops_text: अनाज साइकल में उगता है, किसान साइकल में कटाई करते हैं, और हम अनाज को साइकल में ऑर्डर करते हैं। अगर आपको कोई ऑर्डर साइकल बंद मिलता है, तो जल्द ही वापस चेक करें। + shops_text: खाद्य फसलें एक विशिष्ट अवधि में उगती हैं, किसान एक विशिष्ट अवधि में फसल काटते हैं और हम भी एक विशिष्ट अवधि (सायकल) में खाद्य पदार्थो का ऑर्डर देते हैं। यदि जिस स्टोर पर आप जाना चाहते हैं उसका ऑर्डर चक्र बंद है, तो बाद में पुनः प्रयास करें। shops_signup_title: हब के रूप में साइन अप करें shops_signup_headline: खाद्यान्न हब्स, असीमित। shops_signup_motivation: आपका मॉडल जो भी हो, हम आपका समर्थन करते हैं। आप जैसे भी बदलते हैं, हम आपके साथ हैं। हम गैर-लाभकारी, स्वतंत्र और ओपन-सोर्स हैं। हम वे सॉफ़्टवेयर पार्टनर हैं जिनके बारे में आपने सपने देखे हैं। @@ -2489,18 +2491,18 @@ hi: producer: "वूट! सबसे पहले हमें आपके फार्म/खेत के बारे में थोड़ा बहुत जानने कि जरूरत है:" enterprise_name_field: "एंटरप्राइज़ का नाम:" producer_name_field: "फार्म का नाम:" - producer_name_field_placeholder: "उदाहरण प्रकाश सिंह जी का जबरदस्त फार्म" + producer_name_field_placeholder: "उदाहरण प्रकाश सिंह जी का फार्म" producer_name_field_error: "कृपया अपने एंटरप्राइज़ के लिए एक यूनीक नाम चुनें" address1_field: "पता पंक्ति 1:" address1_field_placeholder: "उदाहरण 123 सरदार वल्लभ पटेल रोड" address1_field_error: "कृपया पता एंटर करें" address2_field: "पता पंक्ति 2:" suburb_field: "उपनगर:" - suburb_field_placeholder: "उदाहरण नॉर्थकोट" + suburb_field_placeholder: "उदाहरण कोल्हापुर" suburb_field_error: "कृपया एक उपनगर में प्रवेश करें" - postcode_field: "पोस्टकोड:" - postcode_field_placeholder: "उदाहरण 3070" - postcode_field_error: "पोस्टकोड आवश्यक" + postcode_field: "पिनकोड:" + postcode_field_placeholder: "उदाहरण 400081" + postcode_field_error: "पिनकोड आवश्यक" state_field: "राज्य:" state_field_error: "राज्य आवश्यक" country_field: "देश:" @@ -2520,7 +2522,7 @@ hi: whatsapp_phone_field: "WhatsApp फ़ोन नंबर" whatsapp_phone_tooltip: "यह नंबर आपकी सार्वजनिक प्रोफ़ाइल में प्रदर्शित होगा जिसे WhatsApp लिंक के रूप में खोला जाएगा।" phone_field_placeholder: "उदाहरण (03) 1234 5678" - whatsapp_phone_field_placeholder: "उदाहरण +61 4 1234 5678" + whatsapp_phone_field_placeholder: "उदाहरण +91 4 1234 5678" type: title: "टाइप करें" headline: "%{enterprise} जोड़ने का अंतिम चरण!" @@ -2564,7 +2566,7 @@ hi: logo_placeholder: "एक बार अपलोड होते ही आपका लोगो रिव्यू के लिए यहां दिखाई देगा" promo: select_promo_image: "चरण 3. प्रोमो छवि चुनें" - promo_image_tip: "टिप: एक बैनर के रूप में दिखाया गया है, वरीयता प्राप्त1200×260px है" + promo_image_tip: "टिप: एक बैनर के रूप में दिखाया गया है, वरीयता प्राप्त 1200×260px है" promo_image_label: "प्रोमो छवि चुनें" promo_image_drag: "अपने प्रोमो को यहां खींचें और छोड़ें" review_promo_image: "चरण 4. अपने प्रोमो बैनर को रिव्यू करें" @@ -2586,8 +2588,8 @@ hi: instagram_placeholder: "उदाहरण @instagram_handle" limit_reached: headline: "अरे नहीं!" - message: "आप सीमा तक पहुँच गए हैं!" - text: "आप उन एंटरप्राइजिस की संख्या की सीमा तक पहुँच गए हैं, जिनका आपको मालिक होने की अनुमति है" + message: "आप limit तक पहुँच गए हैं!" + text: "आप उन एंटरप्राइजिस की संख्या की limit तक पहुँच गए हैं, जितनोंकी आपको मालिक होने की अनुमति है" action: "होमपेज पर वापस लौटें" finished: headline: "समाप्त हुआ!" diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 0686c9ac3f..7bc6446474 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -773,6 +773,7 @@ hu: view_products: Ugrás a Termékek oldalra view_inventory: Ugrás a Leltár oldalra product_headings: + distributor: Elosztó producer: Termelő sku: SKU name: Név @@ -1078,6 +1079,8 @@ hu: rate: Mérték customers: Vevő active: Aktív? + connected_apps: + loading: "Betöltés" actions: edit_profile: Beállítások properties: Tulajdonságok @@ -1705,6 +1708,8 @@ hu: invoice_tax_total: "GST összesen:" tax_invoice: "ADÓSZÁMLA" tax_total: "Teljes adó (%{rate}):" + invoice_shipping_category_delivery: "Szállítás" + invoice_shipping_category_pickup: "Átvétel" total_excl_tax: "Összesen (adó nélkül):" total_incl_tax: "Összesen (adóval együtt):" abn: "LÉGI ÚTON SZÁLLÍTOTT:" diff --git a/config/locales/it.yml b/config/locales/it.yml index 4054df082c..bf3134548f 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -817,6 +817,7 @@ it: view_products: Vai alla Pagina dei Prodotti view_inventory: Vai alla Pagina dell'Inventario product_headings: + distributor: Distributore producer: Produttore sku: Codice ID name: Nome @@ -1125,6 +1126,8 @@ it: rate: Tariffa customers: Cliente active: Attivo? + connected_apps: + loading: "Caricamento" actions: edit_profile: Impostazioni properties: Proprietà @@ -1766,6 +1769,8 @@ it: invoice_tax_total: "IVA totale" tax_invoice: "Conferma d'ordine" tax_total: "Totale IVA %{rate}:" + invoice_shipping_category_delivery: "Consegna" + invoice_shipping_category_pickup: "Prelievo" total_excl_tax: "Totale (IVA escl.):" total_incl_tax: "Totale (IVA incl.):" abn: "CF:" diff --git a/config/locales/it_CH.yml b/config/locales/it_CH.yml index 78272fb157..fc0bb165f7 100644 --- a/config/locales/it_CH.yml +++ b/config/locales/it_CH.yml @@ -758,6 +758,7 @@ it_CH: view_products: Vai alla Pagina dei Prodotti view_inventory: Vai alla Pagina dell'Inventario product_headings: + distributor: Distributore producer: Produttore sku: Codice ID name: Nome @@ -1057,6 +1058,8 @@ it_CH: rate: Tariffa customers: Cliente active: Attivo? + connected_apps: + loading: "Caricamento" actions: edit_profile: Impostazioni properties: Proprietà @@ -1665,6 +1668,8 @@ it_CH: invoice_tax_total: "IVA totale" tax_invoice: "Conferma d'ordine" tax_total: "Totale tasse (%{rate}):" + invoice_shipping_category_delivery: "Consegna" + invoice_shipping_category_pickup: "Prelievo" total_excl_tax: "Totale (Tasse escl.):" total_incl_tax: "Totale (Tasse incl.):" abn: "CF:" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 3892a1be8e..189276e167 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -781,6 +781,7 @@ ko: view_products: 제품 페이지로 이동 view_inventory: 인벤토리 페이지로 이동 product_headings: + distributor: 유통업체 producer: 제공자 sku: 재고 관리 단위 name: 이름 @@ -1077,6 +1078,8 @@ ko: rate: 비율 customers: 고객 active: 활성화 하시겠습니까? + connected_apps: + loading: "로딩 중" actions: edit_profile: 설정 properties: 특성 @@ -1694,6 +1697,8 @@ ko: invoice_tax_total: "물품·용역소비세 총합 :" tax_invoice: "세금 계산서" tax_total: "총 세금 (%{rate}) :" + invoice_shipping_category_delivery: "배달" + invoice_shipping_category_pickup: "직접 수령" total_excl_tax: "총합 (세금 별도)" total_incl_tax: "총합 (세금 포함) :" abn: "호주 비즈니스 번호 :" diff --git a/config/locales/ml.yml b/config/locales/ml.yml index 84660dcb32..f798d5bc8d 100644 --- a/config/locales/ml.yml +++ b/config/locales/ml.yml @@ -32,15 +32,15 @@ ml: enterprise_fee: fee_type: ഫീസ് തരം spree/order: - payment_state: പേയ്മെന്റ് സംസ്ഥാനം - shipment_state: ഷിപ്പിംഗ് സംസ്ഥാനം + payment_state: പേയ്മെന്റ് സ്റ്റേറ്റ് + shipment_state: ഷിപ്പിംഗ് സ്റ്റേറ്റ് completed_at: പൂർത്തിയാക്കിയത് number: നമ്പർ - state: സംസ്ഥാനം + state: സ്റ്റേറ്റ് email: ഉപഭോക്താവിന്റെ ഇ-മെയിൽ spree/payment: amount: തുക - state: സംസ്ഥാനം + state: സ്റ്റേറ്റ് source: ഉറവിടം spree/product: name: "ഉത്പന്നത്തിന്റെ പേര്" @@ -371,9 +371,9 @@ ml: home: "ഒഎഫ്എൻ" title: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക്" welcome_to: "-ലേക്ക് സ്വാഗതം" - site_meta_description: "ഞങ്ങൾ അടിത്തറയിൽ നിന്ന് ആരംഭിക്കുന്നു. തങ്ങളുടെ കഥകൾ അഭിമാനത്തോടെയും സത്യസന്ധമായും പറയാൻ തയ്യാറായ കർഷകരോടൊപ്പം. ന്യായമായും സത്യസന്ധമായും ഉൽപ്പന്നങ്ങളുമായി ആളുകളെ ബന്ധിപ്പിക്കാൻ തയ്യറാകുന്ന വിതരണക്കാരോടൊപ്പം. മികച്ച പ്രതിവാര ഷോപ്പിംഗ് തീരുമാനങ്ങൾ എടുക്കാൻ കഴിയുമെന്ന് വിശ്വസിക്കുന്ന ഉപഭോക്താക്കൾക്കൊപ്പം..." - search_by_name: പേരോ നഗരമോ ഉപയോഗിച്ച് തിരയുക... - producers_join: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ചേരാൻ ഓസ്‌ട്രേലിയൻ കർഷകരെ ഇപ്പോൾ സ്വാഗതം ചെയ്യുന്നു. + site_meta_description: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഇന്ത്യ സോഫ്റ്റ്‌വെയർ പ്ലാറ്റ്‌ഫോം, കർഷകരെ ന്യായമായ വിലയ്ക്ക് ഉൽപ്പന്നങ്ങൾ ഓൺലൈനിൽ വിൽക്കാൻ അനുവദിക്കുന്നു. ഇത് ആഹാരസാധനങ്ങൾ വിൽക്കുന്നതിനായി പ്രത്യേകം നിർമ്മിച്ചതാണ്, അതിനാൽ അതിൽ മാത്രം ഉള്ള തന്ത്രപരമായ അളവുകളോ സ്റ്റോക്ക് ലെവലുകളോ കൈകാര്യം ചെയ്യാൻ ഇതിന് കഴിയും - ഉദാഹരണത്തിന്, ഒരു ഡസൻ മുട്ടകൾ, ഒരു കെട്ട് ചീര, ഭാരത്തിൽ വ്യത്യാസമുള്ള ഒരു മുഴുവൻ കോഴി…" + search_by_name: പേര്, നഗരം, സംസ്ഥാനം അല്ലെങ്കിൽ പിൻ കോഡ് എന്നിവ പ്രകാരം തിരയുക... + producers_join: ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ചേരാൻ ഇന്ത്യൻ കർഷകരെ ഇപ്പോൾ സ്വാഗതം ചെയ്യുന്നു. charges_sales_tax: ജി എസ് ടി ഈടാക്കുന്നുണ്ടോ? business_address: "വ്യാപാര മേൽവിലാസം" print_invoice: "ഇൻവോയ്സ് പ്രിന്റ് ചെയ്യുക" @@ -420,7 +420,7 @@ ml: enterprises: എൻറ്റർപ്രൈസിസ് enterprise_groups: ഗ്രൂപ്പുകൾ reports: റിപ്പോർട്ടുകൾ - listing_reports: ലിസ്റ്റിംഗ് റിപ്പോർട്ടുകൾ + listing_reports: റിപ്പോർട്ടുകളുടെ പട്ടിക variant_overrides: ചരക്കുപട്ടിക import: ഇറക്കുമതി ചെയ്യുക spree_products: സ്പ്രി ഉൽപ്പന്നങ്ങൾ @@ -561,7 +561,7 @@ ml: shipping_method: ഷിപ്പിംഗ് രീതി shop: ഷോപ്പ് sku: എസ്.കെ.യു - status_state: സംസ്ഥാനം + status_state: സ്റ്റേറ്റ് tags: ടാഗുകൾ variant: വേരിയന്റ് weight: ഭാരം @@ -594,6 +594,9 @@ ml: has_n_rules: "%{num} നിയമങ്ങളുണ്ട്" unsaved_confirm_leave: "ഈ പേജിൽ സേവ് ചെയ്യാത്ത മാറ്റങ്ങളുണ്ട്. സേവ് ചെയ്യാതെ തുടരണോ?" available_units: "ലഭ്യമായ യൂണിറ്റുകൾ" + terms_of_service_have_been_updated_html: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിന്റെ സേവന നിബന്ധനകൾ അപ്‌ഡേറ്റ് ചെയ്‌തു: %{tos_link}" + terms_of_service: സേവന നിബന്ധനകൾ വായിക്കുക + accept_terms_of_service: സേവന നിബന്ധനകൾ അംഗീകരിക്കുക shopfront_settings: embedded_shopfront_settings: "ഉൾച്ചേർത്ത ഷോപ്പ്ഫ്രണ്ട് ക്രമീകരണങ്ങൾ" enable_embedded_shopfronts: "എംബഡഡ് ഷോപ്പ്ഫ്രണ്ടുകൾ പ്രവർത്തനക്ഷമമാക്കുക" @@ -626,7 +629,7 @@ ml: stripe_connect_enabled: സ്ട്രൈപ്പ് കണക്ട് ഉപയോഗിച്ച് പേയ്‌മെന്റുകൾ സ്വീകരിക്കാൻ ഷോപ്പുകളെ പ്രാപ്‌തമാക്കണോ? no_api_key_msg: ഈ എന്റർപ്രൈസസിന് സ്ട്രൈപ്പ് അക്കൗണ്ട് നിലവിലില്ല. configuration_explanation_html: സ്ട്രൈപ്പ് കണക്റ്റ് ഇന്റഗ്രേഷൻ കോൺഫിഗർ ചെയ്യുന്നതിനുള്ള വിശദമായ നിർദ്ദേശങ്ങൾക്ക്, ദയവായി ഈ ഗൈഡ് പരിശോധിക്കുക. - status: പദവി + status: സ്ഥിതി ok: ശരി instance_secret_key: അടിയന്തര രഹസ്യ കീ account_id: അക്കൗണ്ട് ഐഡി @@ -780,6 +783,8 @@ ml: other: "%{count} ഉൽപ്പന്നങ്ങൾ സേവ് ചെയ്യാൻ കഴിഞ്ഞില്ല. തകരാറുകൾ അവലോകനം ചെയ്‌ത് വീണ്ടും ശ്രമിക്കുക." save: മാറ്റങ്ങൾ സേവ് ചെയ്യുക reset: മാറ്റങ്ങൾ ഉപേക്ഷിക്കുക + bulk_update: + success: മാറ്റങ്ങൾ സേവ് ചെയ്തു. product_import: title: ഉൽപ്പന്ന ഇറക്കുമതി file_not_found: ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല @@ -878,6 +883,7 @@ ml: view_products: ഉൽപ്പന്നങ്ങളുടെ പേജിലേക്ക് പോകുക view_inventory: ചരക്കുപ്പട്ടിക പേജിലേക്ക് പോകുക product_headings: + distributor: വിതരണക്കാരൻ producer: പ്രൊഡ്യൂസർ sku: എസ്.കെ.യു name: പേര് @@ -957,7 +963,7 @@ ml: new_enterprise: പുതിയ എന്റർപ്രൈസ് producer?: "പ്രൊഡ്യൂസർ?" package: പാക്കേജ് - status: പദവി + status: സ്ഥിതി manage: കൈകാര്യം ചെയ്യുക form: about_us: @@ -1211,6 +1217,10 @@ ml: create_custom_tab: "ഷോപ്പ്ഫ്രണ്ടിൽ ഇഷ്‌ടാനുസൃത ടാബ് സൃഷ്‌ടിക്കുക" custom_tab_title: "ഇഷ്‌ടാനുസൃത ടാബിനുള്ള ശീർഷകം" custom_tab_content: "ഇഷ്‌ടാനുസൃത ടാബിനുള്ള ഉള്ളടക്കം" + connected_apps: + legend: "ബന്ധിപ്പിച്ച ആപ്പുകൾ" + title: "റീജനറേറ്റീവ് കണ്ടെത്തുക" + loading: "ലോഡിംഗ്" actions: edit_profile: ക്രമീകരണങ്ങൾ properties: പ്രോപ്പർട്ടികൾ @@ -1255,7 +1265,7 @@ ml: manage_link: ക്രമീകരണങ്ങൾ producer?: "പ്രൊഡ്യൂസർ?" package: "പാക്കേജ്" - status: "പദവി" + status: "സ്ഥിതി" new_form: owner: ഉടമ owner_tip: ഈ എന്റർപ്രൈസസിന്റെ ഉത്തരവാദിത്തമുള്ള പ്രാഥമിക ഉപയോക്താവ്. @@ -1440,6 +1450,8 @@ ml: has_no_payment_methods: "%{enterprise} -ന് പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല" has_no_shipping_methods: "%{enterprise} -ന് ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല" has_no_enterprise_fees: "%{enterprise} -ന് എന്റർപ്രൈസ് ഫീസ് ഇല്ല" + flashes: + dismiss: ബഹിഷ്കരിക്കുക side_menu: enterprise: primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" @@ -1460,6 +1472,7 @@ ml: users: "ഉപയോക്താക്കൾ" vouchers: വൗച്ചറുകൾ white_label: "വൈറ്റ് ലേബൽ" + connected_apps: "ബന്ധിപ്പിച്ച ആപ്പുകൾ" enterprise_group: primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" users: "ഉപയോക്താക്കൾ" @@ -1531,7 +1544,7 @@ ml: name: ഉൽപ്പന്നങ്ങളും ചരക്കുപട്ടികയും users_and_enterprises: name: ഉപയോക്താക്കളും സംരംഭങ്ങളും - description: എന്റർപ്രൈസ് ഉടമസ്ഥതയും നിലയും + description: എന്റർപ്രൈസ് ഉടമസ്ഥതയും സ്ഥിതിയും order_cycle_management: name: ഓർഡർ സൈക്കിൾ മാനേജ്മെന്റ് sales_tax: @@ -1580,7 +1593,7 @@ ml: index: title: "ഓഐഡിസി ക്രമീകരണങ്ങൾ" connect: "നിങ്ങളുടെ അക്കൗണ്ട് ബന്ധിപ്പിക്കുക" - already_connected: "നിങ്ങളുടെ അക്കൗണ്ട് ഇതിനകം തന്നെ ഈ ഡിഎഫ്സി അംഗീകാര അക്കൗണ്ടുമായി ലിങ്ക് ചെയ്തിട്ടുണ്ട്:" + already_connected: "നിങ്ങളുടെ അക്കൗണ്ട് ഇതിനകം തന്നെ ഈ ഡിഎഫ്സി അനുമതി അക്കൗണ്ടുമായി ലിങ്ക് ചെയ്തിട്ടുണ്ട്:" les_communs_link: "ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി സെർവർ" link_your_account: "ആദ്യം ഡിഎഫ്സി (ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി കണക്ട്) ഉപയോഗിക്കുന്ന അംഗീകൃത ദാതാവുമായി നിങ്ങളുടെ അക്കൗണ്ട് ലിങ്ക് ചെയ്യേണ്ടത് ആവശ്യമാണ്." link_account_button: "നിങ്ങളുടെ ലെസ് കമ്മ്യൂണ്സ് ഓപ്പൺ ഐഡി കണക്ട് അക്കൗണ്ട് ലിങ്ക് ചെയ്യുക" @@ -1754,7 +1767,7 @@ ml: city: label: നഗരം state_id: - label: സംസ്ഥാനം + label: സ്റ്റേറ്റ് zipcode: label: പിൻ കോഡ് country_id: @@ -1900,6 +1913,7 @@ ml: invoice_column_price_per_unit_without_taxes: "ഓരോ യൂണിറ്റിനും വില (നികുതി ഒഴികെ)" invoice_column_tax_rate: "നികുതി നിരക്ക്" invoice_tax_total: "ജി.എസ്.ടി ആകെ:" + invoice_cancel_and_replace_invoice: "ഇൻവോയ്സ് റദ്ദാക്കുകയും പകരം വയ്ക്കുകയും ചെയ്യുന്നു" tax_invoice: "നികുതി ഇൻവോയ്സ്" tax_total: "മൊത്തം നികുതി (%{rate}):" invoice_shipping_category_delivery: "ഡെലിവറി" @@ -1925,6 +1939,7 @@ ml: menu_6_title: "ബന്ധിപ്പിക്കുക" menu_6_url: "https://openfoodnetwork.org/au/connect/" menu_7_title: "പഠിക്കുക" + menu_7_url: "https://openfoodnetwork.org/au/learn/" logo: "ലോഗോ (640x130)" logo_mobile: "മൊബൈൽ ലോഗോ (75x26)" logo_mobile_svg: "മൊബൈൽ ലോഗോ (എസ് വി ജി)" @@ -1958,7 +1973,7 @@ ml: longitude: രേഖാംശം longitude_placeholder: ഉദാ. 144.7851531 use_geocoder: വിലാസത്തിൽ നിന്ന് സ്വയമേവ അക്ഷാംശവും രേഖാംശവും കണക്കാക്കണോ? - state: സംസ്ഥാനം + state: സ്റ്റേറ്റ് postcode: പിൻ കോഡ് postcode_placeholder: ഉദാ. 3070 suburb: നഗരപ്രാന്തം @@ -2056,20 +2071,20 @@ ml: home_shop: ഇപ്പോൾ ഷോപ്പുചെയ്യുക brandstory_headline: "ആഹാരസാധനങ്ങൾ, ഉൾപ്പെടുത്താത്തത്." brandstory_intro: "ചിലപ്പോൾ സിസ്റ്റം ശരിയാക്കാനുള്ള ഏറ്റവും നല്ല മാർഗം പുതിയൊരെണ്ണം ആരംഭിക്കുക എന്നതാണ്..." - brandstory_part1: "ഞങ്ങൾ അടിത്തറയിൽ നിന്ന് ആരംഭിക്കുന്നു. തങ്ങളുടെ കഥകൾ അഭിമാനത്തോടെയും സത്യസന്ധമായും പറയാൻ തയ്യാറായ കർഷകരോടൊപ്പം. ന്യായമായും സത്യസന്ധമായും ഉൽപ്പന്നങ്ങളുമായി ആളുകളെ ബന്ധിപ്പിക്കാൻ തയ്യറാകുന്ന വിതരണക്കാരോടൊപ്പം. മികച്ച പ്രതിവാര ഷോപ്പിംഗ് തീരുമാനങ്ങൾക്ക് ലോകത്തെ മാറ്റാൻ കഴിയുമെന്ന് വിശ്വസിക്കുന്ന ഉപഭോക്താക്കൾക്കൊപ്പം." - brandstory_part2: "അപ്പോൾ അത് യാഥാർത്ഥ്യമാക്കാൻ നമുക്ക് ഒരു വഴി ആവശ്യമാണ്. ആഹാരസാധനങ്ങൾ കൃഷി ചെയ്യുകയും വിൽക്കുകയും വാങ്ങുകയും ചെയ്യുന്ന എല്ലാവരെയും ശാക്തീകരിക്കുന്നതിനുള്ള ഒരു മാർഗം. എല്ലാ കഥകളും പറയാനും എല്ലാ ലോജിസ്റ്റിക്‌സും കൈകാര്യം ചെയ്യാനുമുള്ള ഒരു മാർഗം. ഇടപാട് എല്ലാ ദിവസവും പരിവർത്തനത്തിലേക്ക് മാറ്റാനുള്ള ഒരു മാർഗം." - brandstory_part3: "അതിനാൽ ഞങ്ങൾ കളത്തെ സമനിലയിലാക്കുന്ന ഒരു ഓൺലൈൻ മാർക്കറ്റ് പ്ലേസ് നിർമ്മിക്കുന്നു. ഇത് സുതാര്യമാണ്, അതിനാൽ ഇത് യഥാർത്ഥ ബന്ധങ്ങൾ സൃഷ്ടിക്കുന്നു. ഇത് ഓപ്പൺ സോഴ്‌സ് ആയതിനാൽ ഇത് എല്ലാവരുടെയും ഉടമസ്ഥതയിലാണ്. ഇത് പ്രദേശങ്ങളിലേക്കും രാജ്യങ്ങളിലേക്കും വ്യാപിക്കുന്നു, അതിനാൽ ആളുകൾ ലോകമെമ്പാടുമുള്ള പതിപ്പുകൾ ആരംഭിക്കുന്നു." - brandstory_part4: "ഇത് എല്ലായിടത്തും പ്രവർത്തിക്കുന്നു. ഇത് എല്ലാം മാറ്റുന്നു." - brandstory_part5_strong: "ഞങ്ങൾ അതിനെ ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് എന്ന് വിളിക്കുന്നു." - brandstory_part6: "നമുക്കെല്ലാവർക്കും ആഹാരസാധനങ്ങൾ ഇഷ്ടമാണ്. ഇനി നമുക്ക് നമ്മുടെ ആഹാര സമ്പ്രദായവും ഇഷ്ടപ്പെടാം." - system_headline: "ഷോപ്പിംഗ് - ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നത് ഇതാ." - system_step1: "1. തിരയുക" - system_step1_text: "സീസണൽ പ്രാദേശിക ആഹാരത്തിനായി ഞങ്ങളുടെ വൈവിധ്യമാർന്ന സ്വതന്ത്ര ഷോപ്പുകൾ തിരയുക. അയൽപക്കവും ആഹാര വിഭാഗവും അനുസരിച്ച് തിരയുകയോ, അല്ലെങ്കിൽ നിങ്ങൾ ഡെലിവറി / പിക്കപ്പ് തിരഞ്ഞെടുക്കുകയോ ചെയ്യുക." - system_step2: "2. ഷോപ്പ്" - system_step2_text: "വൈവിധ്യമാർന്ന പ്രൊഡ്യൂസേഴ്സിൽ നിന്നും, ഹബുകളിൽ നിന്നും താങ്ങാനാവുന്ന പ്രാദേശിക ആഹാരം ഉപയോഗിച്ച് നിങ്ങളുടെ ഇടപാടുകൾ രൂപാന്തരപ്പെടുത്തുക. നിങ്ങളുടെ ആഹാരത്തിന് പിന്നിലെ കഥകളും അത് ഉണ്ടാക്കുന്ന ആളുകളെയും അറിയുക!" - system_step3: "3. പിക്ക്-അപ്പ് / ഡെലിവറി" - system_step3_text: "നിങ്ങളുടെ ഡെലിവറിക്കായി കാത്തിരിക്കുക, അല്ലെങ്കിൽ നിങ്ങളുടെ ആഹാരവുമായി കൂടുതൽ വ്യക്തിഗത ബന്ധത്തിനായി നിങ്ങളുടെ പ്രൊഡ്യൂസർ അല്ലെങ്കിൽ ഹബ് സന്ദർശിക്കുക. പ്രകൃതി ഉദ്ദേശിച്ചതുപോലെ വൈവിധ്യമാർന്ന ഫുഡ് ഷോപ്പിംഗ്." - cta_headline: "ലോകത്തെ മികച്ച സ്ഥലമാക്കി മാറ്റുന്ന ഷോപ്പിംഗ്." + brandstory_part1: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഇന്ത്യ സോഫ്റ്റ്‌വെയർ പ്ലാറ്റ്‌ഫോം, കർഷകരെ ന്യായമായ വിലയ്ക്ക് ഉൽപ്പന്നങ്ങൾ ഓൺലൈനിൽ വിൽക്കാൻ അനുവദിക്കുന്നു. ഇത് ആഹാരസാധനങ്ങൾ വിൽക്കുന്നതിനായി പ്രത്യേകം നിർമ്മിച്ചതാണ്, അതിനാൽ അതിൽ മാത്രം ഉള്ള തന്ത്രപരമായ അളവുകളോ സ്റ്റോക്ക് ലെവലുകളോ കൈകാര്യം ചെയ്യാൻ ഇതിന് കഴിയും - ഉദാഹരണത്തിന്, ഒരു ഡസൻ മുട്ടകൾ, ഒരു കെട്ട് ചീര, ഭാരത്തിൽ വ്യത്യാസമുള്ള ഒരു മുഴുവൻ കോഴി…" + brandstory_part2: "ഫുഡ് പ്രൊഡ്യൂസർമാർ, ഫാർമർ പ്രൊഡ്യൂസർ ഓർഗനൈസേഷനുകൾ (എഫ്.പി.ഓ), അല്ലെങ്കിൽ ഫാർമർ പ്രൊഡ്യൂസർ കമ്പനികൾ (എഫ്.പി.സി) എന്നിവയ്ക്ക് ഈ പ്ലാറ്റ്‌ഫോമിൽ ഒരു ഓൺലൈൻ ഷോപ്പ് സൃഷ്ടിക്കാനും പേയ്‌മെന്റുകൾ ശേഖരിക്കാനും മറ്റ് ഷോപ്പുകൾ വഴി വിൽക്കാനും കഴിയും" + brandstory_part3: "മൊത്തക്കച്ചവടക്കാർ, ഫാർമർ പ്രൊഡ്യൂസർ ഓർഗനൈസേഷനുകൾ (എഫ്‌പി‌ഒ), അല്ലെങ്കിൽ ഫാർമർ പ്രൊഡ്യൂസർ കമ്പനികൾ (എഫ്‌പിസി) എന്നിവയ്‌ക്ക് അവരുടെ നിലവിലുള്ള സംവിധാനങ്ങളുമായി ഓഎഫ്എൻ സമന്വയിപ്പിക്കാനും ഞങ്ങളുടെ ദേശീയ ഭക്ഷ്യ ഹബ്ബുകളും ഷോപ്പുകളും വഴി ഉപഭോക്താക്കൾക്ക് അവരുടെ ഉൽപ്പന്നങ്ങൾ വിതരണം ചെയ്യുന്നതിനായി ഉപഭോക്തൃ ഗ്രൂപ്പുകളെ നിയന്ത്രിക്കാനും കഴിയും." + brandstory_part4: "ഫാർമർ പ്രൊഡ്യൂസർ ഓർഗനൈസേഷനുകൾ (എഫ്‌പി‌ഒ), അല്ലെങ്കിൽ ഫാർമർ പ്രൊഡ്യൂസർ കമ്പനികൾ (എഫ്‌പി‌സി) എന്നിവർക്ക് അവരുടെ പ്രാദേശിക പ്രദേശത്തെ ഉൽ‌പാദകരെ ഒരുമിച്ച് കൊണ്ടുവന്ന് ഒരു സാങ്കല്പിക കർഷക വിപണികൾ സൃഷ്ടിക്കാനും പ്രാദേശിക ഭക്ഷ്യ സമ്പദ്‌വ്യവസ്ഥ കെട്ടിപ്പടുക്കാനും കഴിയും." + brandstory_part5_strong: "സോഫ്‌റ്റ്‌വെയറിനെ പോലെ തന്നെ പ്രധാനപ്പെട്ടത് അതിന് അടിവരയിടുന്ന മൂല്യങ്ങളാണ്." + brandstory_part6: "ഒരു കർഷകൻ, കർഷക വിപണി, ഫുഡ് സഹകരണ സ്ഥാപനം, അല്ലെങ്കിൽ ഫുഡ് ഹബ്ബ് എന്നീ നിലകളിൽ നിങ്ങൾ നല്ല ആഹാരം വിൽക്കുകയാണെങ്കിൽ, പിന്നെ ലാഭത്തിനല്ല, ആളുകൾക്കും ഭൂമിക്കും വേണ്ടിയുള്ള ഭക്ഷ്യ സംവിധാനങ്ങൾ ഉണ്ടാക്കുന്നതിന് നിങ്ങളുടെ മൂല്യങ്ങളുമായി പൊരുത്തപ്പെടുന്ന സോഫ്‌റ്റ്‌വെയർ തിരഞ്ഞെടുക്കുക. മത്സരാധിഷ്ഠിതമായി പ്രവർത്തിക്കുന്നതിനുപകരം കൂട്ടായി പ്രവർത്തിക്കുന്നതിലൂടെ, പുതിയ സോഫ്‌റ്റ്‌വെയർ വികസിപ്പിക്കുന്നതിനുള്ള ചെലവുകൾ ഞങ്ങൾ വഹിക്കുന്നു, ഞങ്ങളുടെ പ്രോജക്‌റ്റ് മാറ്റങ്ങളെ ഉൾകൊള്ളാൻ കഴിയുന്നതാണെന്ന് ഞങ്ങൾ ഉറപ്പുവരുത്തുന്നു!" + system_headline: "ഓഎഫ്എൻ -ൽ സാധനങ്ങൾ വിൽക്കണോ- 3 എളുപ്പ ഘട്ടങ്ങൾ" + system_step1: "1. പുതിയ അക്കൗണ്ട് ഉണ്ടാക്കുക" + system_step1_text: "പേര്, വിവരണം, ഫോട്ടോകൾ, ബന്ധപ്പെടാനുള്ള വിശദാംശങ്ങൾ, സോഷ്യൽ മീഡിയ ലിങ്കുകൾ എന്നിവ ഉപയോഗിച്ച് നിങ്ങളുടെ എന്റർപ്രൈസ് സജ്ജീകരിക്കുക." + system_step2: "2. നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ കൂട്ടിച്ചേർക്കുക" + system_step2_text: "നിങ്ങളുടെ ഷോപ്പിലേക്ക് ഉൽപ്പന്നങ്ങൾ കൂട്ടിച്ചേർക്കുക - നിങ്ങളുടെ സ്വന്തമോ കൂടാതെ/അല്ലെങ്കിൽ നിങ്ങൾക്ക് ചുറ്റുമുള്ള മറ്റ് പ്രൊഡ്യൂസർമാരിൽ നിന്ന്. ചിത്രങ്ങൾ, വിവരണങ്ങൾ, വിലകൾ, സ്റ്റോക്ക് ലെവലുകൾ, എങ്ങനെവേണമെങ്കിലും ഉള്ള തൂക്കങ്ങൾ അളവുകൾ എന്നിവ സജ്ജമാക്കുക." + system_step3: "3. നിങ്ങളുടെ ഡെലിവറികൾ ആസൂത്രണം ചെയ്യുക" + system_step3_text: "പേയ്‌മെന്റ് രീതികൾ സജ്ജീകരിക്കുക. ഒന്നിലധികം പിക്ക്-അപ്പ് പോയിന്റുകളും ഡെലിവറി വിശദാംശങ്ങളും രൂപപ്പെടുത്തുക. ആവർത്തിച്ചുള്ള ഓർഡറുകളും പതിവ് വിതരണങ്ങളും ഉണ്ടാക്കുക." + cta_headline: "ഭാവിയിലെ സുസ്ഥിര ഭക്ഷ്യ ശൃംഖല." cta_label: "ഞാൻ തയാറാണ്" stats_headline: "ഞങ്ങൾ ഒരു പുതിയ ആഹാര സമ്പ്രദായം സൃഷ്ടിക്കുകയാണ്." stats_producers: "ഭക്ഷ്യ ഉത്പാദകർ" @@ -2504,7 +2519,7 @@ ml: postcode_field: "പിൻ കോഡ്:" postcode_field_placeholder: "ഉദാ 3070" postcode_field_error: "പിൻ കോഡ് ആവശ്യമാണ്" - state_field: "സംസ്ഥാനം:" + state_field: "സ്റ്റേറ്റ്:" state_field_error: "സംസ്ഥാനം ആവശ്യമാണ്" country_field: "രാജ്യം:" country_field_error: "ദയവായി ഒരു രാജ്യം തിരഞ്ഞെടുക്കുക" @@ -2627,8 +2642,8 @@ ml: balance: "മിച്ചം" transaction: "ഇടപാട്" transaction_date: "തീയതി" - payment_state: "പേയ്മെന്റ് നില" - shipping_state: "ഷിപ്പിംഗ് നില" + payment_state: "പേയ്മെന്റ് സ്ഥിതി" + shipping_state: "ഷിപ്പിംഗ് സ്ഥിതി" value: "മൂല്യം" balance_due: "ബാക്കി" credit: "ക്രെഡിറ്റ്" @@ -2662,7 +2677,7 @@ ml: admin_enterprise_groups_contact_city_placeholder: "ഉദാ. നോർത്ത്കോട്ടെ" admin_enterprise_groups_contact_zipcode: "പിൻ കോഡ്" admin_enterprise_groups_contact_zipcode_placeholder: "ഉദാ. 3070" - admin_enterprise_groups_contact_state_id: "സംസ്ഥാനം" + admin_enterprise_groups_contact_state_id: "സ്റ്റേറ്റ്" admin_enterprise_groups_contact_country_id: "രാജ്യം" admin_enterprise_groups_web_twitter: "ഉദാ. @the_prof" admin_enterprise_groups_web_website_placeholder: "ഉദാ. www.truffles.com" @@ -2785,7 +2800,7 @@ ml: admin_share_city: "നഗരം" admin_share_zipcode: "പിൻ കോഡ്" admin_share_country: "രാജ്യം" - admin_share_state: "സംസ്ഥാനം" + admin_share_state: "സ്റ്റേറ്റ്" hub_sidebar_hubs: "ഹബ്ബുകൾ" hub_sidebar_none_available: "ഒന്നും ലഭ്യമല്ല" hub_sidebar_manage: "കൈകാര്യം ചെയ്യുക" @@ -2824,7 +2839,7 @@ ml: report_header_order_cycle: ഓർഡർ സൈക്കിൾ report_header_user: ഉപയോക്താവ് report_header_email: ഇമെയിൽ - report_header_status: പദവി + report_header_status: സ്ഥിതി report_header_comments: അഭിപ്രായങ്ങൾ report_header_first_name: പേരിന്റെ ആദ്യഭാഗം report_header_last_name: പേരിന്റെ അവസാന ഭാഗം @@ -2834,14 +2849,60 @@ ml: report_header_billing_address: ബില്ലിംഗ് വിലാസം report_header_relationship: ബന്ധം report_header_hub: ഹബ് + report_header_hub_address: ഹബ് വിലാസം + report_header_to_hub: ഹബ്ബിലേക്ക് + report_header_hub_code: ഹബ് കോഡ് + report_header_hub_id: ഹബ് ഐഡി + report_header_hub_business_number: "ഹബ് ബിസിനസ് നമ്പർ" + report_header_hub_legal_name: "ഹബ്ബിന്റെ നിയമപരമായ പേര്" + report_header_hub_contact_name: "ഹബ് കോൺടാക്റ്റ് പേര്" + report_header_hub_email: "ഹബ് പൊതു ഇമെയിൽ" + report_header_hub_owner_email: ഹബ് ഉടമയുടെ ഇമെയിൽ + report_header_hub_phone: "ഹബ് ഫോൺ നമ്പർ" + report_header_hub_address_line1: "ഹബ് വിലാസം ലൈൻ 1" + report_header_hub_address_line2: "ഹബ് വിലാസം ലൈൻ 2" + report_header_hub_address_city: "ഹബ് നഗരപ്രാന്തം" + report_header_hub_address_zipcode: "ഹബ് പിൻകോഡ്" + report_header_hub_address_state_name: "ഹബ് സ്റ്റേറ്റ്" report_header_code: കോഡ് + report_header_paid: പണം നൽകിയോ? + report_header_delivery: ഡെലിവറി? report_header_shipping: ഷിപ്പിംഗ് report_header_shipping_method: ഷിപ്പിംഗ് രീതി + report_header_shipping_instructions: ഷിപ്പിംഗ് നിർദ്ദേശങ്ങൾ + report_header_ship_street: ഷിപ്പിംഗ് തെരുവ് + report_header_ship_street_2: ഷിപ്പിംഗ് തെരുവ് 2 + report_header_ship_city: ഷിപ്പിംഗ് നഗരം + report_header_ship_postcode: ഷിപ്പിംഗ് പിൻകോഡ് + report_header_ship_state: ഷിപ്പിംഗ് സ്റ്റേറ്റ് + report_header_billing_street: ബില്ലിംഗ് സ്ട്രീറ്റ് + report_header_billing_street_2: ബില്ലിംഗ് സ്ട്രീറ്റ് 2 + report_header_billing_street_3: ബില്ലിംഗ് സ്ട്രീറ്റ് 3 + report_header_billing_street_4: ബില്ലിംഗ് സ്ട്രീറ്റ് 4 + report_header_billing_city: ബില്ലിംഗ് സിറ്റി + report_header_billing_postcode: ബില്ലിംഗ് പിൻ കോഡ് + report_header_billing_state: ബില്ലിംഗ് സ്റ്റേറ്റ് + report_header_incoming_transport: ഇൻകമിംഗ് ട്രാൻസ്പോർട്ട് + report_header_special_instructions: പ്രത്യേക നിർദ്ദേശങ്ങൾ + report_header_order_number: ഓർഡർ നമ്പർ report_header_date: തീയതി + report_header_confirmation_date: സ്ഥിരീകരണ തീയതി report_header_tags: ടാഗുകൾ report_header_items: ഇനങ്ങൾ + report_header_items_total: "ഇനങ്ങൾ ആകെ %{currency_symbol}" + report_header_taxable_items_total: "നികുതി ചുമത്താവുന്ന ഇനങ്ങളുടെ ആകെത്തുക (%{currency_symbol})" + report_header_sales_tax: "വിൽപ്പന നികുതി (%{currency_symbol})" + report_header_delivery_charge: "ഡെലിവറി ചാർജ് (%{currency_symbol})" report_header_tax: "നികുതി" + report_header_tax_on_delivery: "ഡെലിവറിയ്ക്കുള്ള നികുതി (%{currency_symbol})" + report_header_tax_on_fees: "ഫീസിനുള്ള നികുതി (%{currency_symbol})" report_header_tax_category: "നികുതി വിഭാഗം" + report_header_tax_rate_name: "നികുതി നിരക്ക് പേര്" + report_header_tax_rate: "നികുതി നിരക്ക്" + report_header_total_tax: "മൊത്തം നികുതി (%{currency_symbol})" + report_header_total_excl_tax: "ആകെ നികുതി ഒഴികെ (%{currency_symbol})" + report_header_total_incl_tax: "മൊത്തം നികുതി ഉൾപ്പെടെ (%{currency_symbol})" + report_header_total_orders: "ഓർഡറുകളുടെ ആകെ എണ്ണം" report_header_enterprise: എന്റർപ്രൈസ് report_header_enterprise_fee_name: പേര് report_header_enterprise_fee_type: ഇനം @@ -2849,224 +2910,991 @@ ml: report_header_customer: ഉപഭോക്താവ് report_header_customer_first_name: പേരിന്റെ ആദ്യഭാഗം report_header_customer_last_name: പേരിന്റെ അവസാന ഭാഗം + report_header_customer_code: ഉപഭോക്തൃ കോഡ് report_header_product: ഉൽപ്പന്നം report_header_product_properties: ഉൽപ്പന്ന സവിശേഷതകൾ + report_header_product_tax_category: ഉൽപ്പന്ന നികുതി വിഭാഗം report_header_quantity: അളവ് + report_header_max_quantity: പരമാവധി അളവ് report_header_variant: വേരിയന്റ് + report_header_variant_value: വേരിയന്റ് മൂല്യം report_header_variant_unit: വേരിയന്റ് യൂണിറ്റ് + report_header_total_available: ആകെ ലഭ്യമായത് + report_header_unallocated: അനുവദിച്ചിട്ടില്ലാത്തത് + report_header_max_quantity_excess: പരമാവധി അളവിൽ അധികമുള്ളത് + report_header_taxons: നികുതികൾ report_header_supplier: വിതരണക്കാരൻ - report_header_producer: നിർമ്മാതാവ് + report_header_producer: പ്രൊഡ്യൂസർ + report_header_producer_suburb: പ്രൊഡ്യൂസർ നഗരപ്രാന്തം + report_header_producer_tax_status: പ്രൊഡ്യൂസർ ടാക്സ് സ്ഥിതി + report_header_producer_charges_sales_tax?: ജിഎസ്ടി/വാറ്റ് രജിസ്റ്റർ ചെയ്തത് report_header_unit: യൂണിറ്റ് + report_header_group_buy_unit_quantity: ഗ്രൂപ്പ് വാങ്ങൽ യൂണിറ്റ് അളവ് + report_header_cost: ചെലവ് + report_header_shipping_cost: ഷിപ്പിംഗ് കൂലി + report_header_curr_cost_per_unit: ഓരോ യൂണിറ്റിനും ഉള്ള ചെലവ് + report_header_total_shipping_cost: മൊത്തം ഷിപ്പിംഗ് ചെലവ് report_header_payment_method: പണമടയ്ക്കൽ രീതി report_header_sells: വിൽക്കുന്നു + report_header_visible: ദൃശ്യമാണ് report_header_price: വില report_header_unit_size: യൂണിറ്റ് വലിപ്പം report_header_distributor: വിതരണക്കാരൻ + report_header_distributor_address: വിതരണക്കാരന്റെ വിലാസം + report_header_distributor_city: വിതരണക്കാരന്റെ നഗരം + report_header_distributor_postcode: വിതരണക്കാരന്റെ പിൻകോഡ് + report_header_distributor_tax_status: വിതരണക്കാരന്റെ നികുതി നില + report_header_delivery_address: ഡെലിവറി വിലാസം + report_header_delivery_postcode: ഡെലിവറി പിൻ കോഡ് + report_header_bulk_unit_size: ബൾക്ക് യൂണിറ്റ് വലുപ്പം report_header_weight: ഭാരം + report_header_final_weight_volume: ഫൈനൽ (ഭാരം/വോളിയം) report_header_height: ഉയരം report_header_width: വീതി report_header_depth: ആഴം + report_header_sum_total: ആകെ തുക + report_header_date_of_order: ഓർഡർ തീയതി + report_header_amount_owing: കുടിശ്ശിക തുക report_header_amount_paid: അടച്ച തുക + report_header_units_required: ആവശ്യമായ യൂണിറ്റുകൾ + report_header_remainder: ബാക്കിയുള്ളത് + report_header_order_date: ഓർഡർ തീയതി + report_header_order_id: ഓർഡർ ഐഡി + report_header_item_name: ഇനത്തിന്റെ പേര് + report_header_temp_controlled_items: താപനില നിയന്ത്രിത ഇനങ്ങൾ? + report_header_customer_name: ഉപഭോക്താവിന്റെ പേര് + report_header_customer_email: ഉപഭോക്തൃ ഇമെയിൽ + report_header_customer_phone: ഉപഭോക്തൃ ഫോൺ + report_header_customer_city: ഉപഭോക്തൃ നഗരം report_header_payment_state: പേയ്മെന്റ് സ്റ്റേറ്റ് + report_header_payment_type: പേയ്മെന്റ് തരം + report_header_item_price: "ഇനം (%{currency})" + report_header_item_fees_price: "ഇനം + ഫീസ് (%{currency})" + report_header_admin_handling_fees: "അഡ്മിൻ & കൈകാര്യം ചെയ്യൽ (%{currency})" + report_header_ship_price: "ഷിപ്പിംഗ് (%{currency})" + report_header_pay_fee_price: "ഫീസ് അടയ്ക്കുക (%{currency})" + report_header_total_price: "ആകെ (%{currency})" + report_header_product_total_price: "ഉൽപ്പന്ന ആകെത്തുക (%{currency})" + report_header_shipping_total_price: "ഷിപ്പിംഗ് ആകെ (%{currency})" + report_header_outstanding_balance_price: "ബാക്കിയുള്ള തുക (%{currency})" + report_header_eft_price: "ഇ എഫ് ടി (%{currency})" + report_header_paypal_price: "പേപാൽ (%{currency})" report_header_sku: എസ്.കെ.യു report_header_amount: തുക report_header_balance: മിച്ചം + report_header_total_cost: "മൊത്തം ചെലവ്" + report_header_total_ordered: ആകെ ഓർഡർ ചെയ്തത് + report_header_total_max: ആകെ പരമാവധി + report_header_total_units: ആകെ യൂണിറ്റുകൾ + report_header_sum_max_total: "പരമാവധി ആകെ തുക" + report_header_total_excl_vat: "ആകെ ഒഴികെ. നികുതി (%{currency_symbol})" + report_header_total_incl_vat: "മൊത്തം നികുതി ഉൾപ്പെടെ (%{currency_symbol})" report_header_temp_controlled: ടെമ്പ് കൺട്രോൾഡ്? report_header_is_producer: പ്രൊഡ്യൂസർ? + report_header_not_confirmed: സ്ഥിരീകരിച്ചില്ല + report_header_gst_on_income: വരുമാനത്തിൽ ജി.എസ്.ടി + report_header_gst_free_income: ജിഎസ്ടി സൗജന്യ വരുമാനം + report_header_total_untaxable_produce: നികുതി നൽകേണ്ടാത്ത മൊത്തം ഉൽപ്പന്നങ്ങൾ (നികുതി ഇല്ല) + report_header_total_taxable_produce: നികുതി നൽകേണ്ട മൊത്തം ഉൽപ്പന്നങ്ങൾ (നികുതി ഉൾപ്പെടെ) + report_header_total_untaxable_fees: നികുതി നൽകാത്ത മൊത്തം ഫീസ് (നികുതി ഇല്ല) + report_header_total_taxable_fees: നികുതി നൽകേണ്ട മൊത്തം ഫീസ് (നികുതി ഉൾപ്പെടെ) + report_header_delivery_shipping_cost: ഡെലിവറി ഷിപ്പിംഗ് ചെലവ് (നികുതി ഉൾപ്പെടെ) + report_header_transaction_fee: ഇടപാട് ഫീസ് (നികുതി ഇല്ല) + report_header_total_untaxable_admin: മൊത്തം നികുതി നൽകാത്ത അഡ്മിൻ ക്രമീകരണങ്ങൾ (നികുതി ഇല്ല) + report_header_total_taxable_admin: നികുതി നൽകേണ്ട മൊത്തം അഡ്മിൻ ക്രമീകരണങ്ങൾ (നികുതി ഉൾപ്പെടെ) + report_line_cost_of_produce: ഉല്പന്ന ചെലവ് + report_line_line_items: ലൈൻ ഇനങ്ങൾ + report_header_last_completed_order_date: അവസാനം പൂർത്തിയാക്കിയ ഓർഡർ തീയതി + report_xero_configuration: സീറോ കോൺഫിഗറേഷൻ + initial_invoice_number: "പ്രാരംഭ ഇൻവോയ്സ് നമ്പർ" + invoice_date: "രസീത് തീയതി" + due_date: "അവസാന തീയതി" + account_code: "അക്കൗണ്ട് കോഡ്" + equals: "തുല്യമായത്" + contains: "അടങ്ങിയിട്ടുള്ളത്" + discount: "കിഴിവ്" + filter_products: "ഉൽപ്പന്നങ്ങൾ ഫിൽട്ടർ ചെയ്യുക" + delete_product_variant: "അവസാന വേരിയന്റ് ഇല്ലാതാക്കാൻ കഴിയില്ല!" + progress: "പുരോഗതി" + saving: "സേവ് ചെയ്യുന്നു.." + success: "വിജയം" + failure: "പരാജയം" + unsaved_changes_confirmation: "സേവ് ചെയ്യാത്ത മാറ്റങ്ങൾ നഷ്ടപ്പെടും. എന്തായാലും തുടരണോ?" + one_product_unsaved: "ഒരു ഉൽപ്പന്നത്തിലേക്കുള്ള മാറ്റങ്ങൾ സേവ് ചെയ്തിട്ടില്ല" + products_unsaved: "%{n} ഉൽപ്പന്നങ്ങളിലേക്കുള്ള മാറ്റങ്ങൾ സേവ് ചെയ്തിട്ടില്ല." + is_already_manager: "ഇതിനകം ഒരു മാനേജരാണ്!" + no_change_to_save: "സേവ് ചെയ്യാൻ മാറ്റങ്ങളൊന്നുമില്ല" + user_invited: "ഈ എന്റർപ്രൈസ് മാനേജ് ചെയ്യാൻ %{email} ക്ഷണിച്ചു" + add_manager: "നിലവിലുള്ള ഒരു ഉപയോക്താവിനെ ചേർക്കുക" users: "ഉപയോക്താക്കൾ" about: "കുറിച്ച്" images: "ചിത്രങ്ങൾ" + web: "വെബ്" primary_details: "പ്രാഥമിക വിശദാംശങ്ങൾ" social: "സാമൂഹികം" shipping: "ഷിപ്പിംഗ്" shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" payment_methods: "പേയ്മെന്റ് രീതികൾ" - tag_rules: "നിയമങ്ങൾ കൂട്ടിയോജിപ്പിക്കുക" + payment_method_fee: "ഇടപാട് ഫീസ്" + payment_processing_failed: "പേയ്‌മെന്റ് പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല, നിങ്ങൾ നൽകിയ വിശദാംശങ്ങൾ പരിശോധിക്കുക" + payment_method_not_supported: "ആ പേയ്‌മെന്റ് രീതി പിന്തുണയ്ക്കുന്നില്ല. ദയവായി മറ്റൊന്ന് തിരഞ്ഞെടുക്കുക." + payment_updated: "പേയ്മെന്റ് അപ്ഡേറ്റ് ചെയ്തു" + cannot_perform_operation: "പേയ്മെന്റ് അപ്ഡേറ്റ് ചെയ്യാനായില്ല" + action_required: "നടപടി ആവശ്യമാണ്" + tag_rules: "നിയമങ്ങൾ ടാഗ് ചെയ്യുക" + enterprise_fee_whole_order: മുഴുവൻ ഓർഡർ + enterprise_fee_by_name: " %{role} %{enterprise_name} മുഖേനയുള്ള %{name}ഫീസ്" + validation_msg_relationship_already_established: "^ആ ബന്ധം ഇതിനകം സ്ഥാപിതമാണ്." + validation_msg_at_least_one_hub: "^കുറഞ്ഞത് ഒരു ഹബ്ബെങ്കിലും തിരഞ്ഞെടുക്കണം" + validation_msg_tax_category_cant_be_blank: "^നികുതി വിഭാഗം ശൂന്യമാക്കാൻ കഴിയില്ല" + validation_msg_is_associated_with_an_exising_customer: "നിലവിലുള്ള ഒരു ഉപഭോക്താവുമായി ഇത് ബന്ധപ്പെട്ടിരിക്കുന്നു" + content_configuration_pricing_table: "(TODO: വിലനിർണ്ണയ പട്ടിക)" + content_configuration_case_studies: "(TODO: കേസ് സ്റ്റഡീസ്)" + content_configuration_detail: "(TODO: വിശദാംശങ്ങൾ)" + enterprise_name_error: "ഇതിനകം എടുത്തുകഴിഞ്ഞു. ഇത് നിങ്ങളുടെ എന്റർപ്രൈസ് ആണെങ്കിൽ നിങ്ങൾ ഉടമസ്ഥാവകാശം ക്ലെയിം ചെയ്യാൻ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അല്ലെങ്കിൽ ഈ എന്റർപ്രൈസുമായി വ്യാപാരം ചെയ്യാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, ഈ പ്രൊഫൈലിന്റെ നിലവിലെ മാനേജരെ %{email} -ൽ ബന്ധപ്പെടുക." enterprise_owner_error: "^ %{email} ന് കൂടുതൽ സംരംഭങ്ങൾ സ്വന്തമാക്കാൻ അനുവാദമില്ല (പരിധി %{enterprise_limit})." - product_importer_file_error: " തകരാറ്: ഒരു ഫയലും അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല" + enterprise_role_uniqueness_error: "^ആ ജോലി ഇതിനകം നിലവിലുണ്ട്." + enterprise_terms_and_conditions_type_error: "പിഡിഎഫ്-കൾ മാത്രമേ അനുവദിക്കൂ" + inventory_item_visibility_error: ശരിയോ തെറ്റോ ആയിരിക്കണം + product_importer_file_error: "തകരാറ്: ഒരു ഫയലും അപ്‌ലോഡ് ചെയ്‌തിട്ടില്ല" product_importer_spreadsheet_error: "ഫയൽ പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല: അസാധുവായ ഫയൽ തരം" product_importer_products_save_error: ഉൽപ്പന്നങ്ങളൊന്നും വിജയകരമായി സേവ് ചെയ്തില്ല product_import_file_not_found_notice: 'ഫയൽ കണ്ടെത്തിയില്ല അല്ലെങ്കിൽ തുറക്കാൻ കഴിഞ്ഞില്ല' product_import_no_data_in_spreadsheet_notice: 'സ്‌പ്രെഡ്‌ഷീറ്റിൽ ഡാറ്റയൊന്നും കണ്ടെത്തിയില്ല' + order_choosing_hub_notice: നിങ്ങളുടെ ഹബ് തിരഞ്ഞെടുത്തു. + order_cycle_selecting_notice: നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ തിരഞ്ഞെടുത്തു. + adjustments_tax_rate_error: "^ഈ ക്രമീകരണത്തിനുള്ള നികുതി നിരക്ക് ശരിയാണോയെന്ന് പരിശോധിക്കുക." + active_distributors_not_ready_for_checkout_message_singular: >- + %{distributor_names} എന്ന ഹബ് ഒരു സജീവ ഓർഡർ സൈക്കിളിൽ ലിസ്‌റ്റ് ചെയ്‌തിരിക്കുന്നു, + എന്നാൽ സാധുവായ ഷിപ്പിംഗ്, പേയ്‌മെന്റ് രീതികൾ ഇല്ല. നിങ്ങൾ ഇവ സജ്ജീകരിക്കുന്നത് + വരെ, ഉപഭോക്താക്കൾക്ക് ഈ ഹബ്ബിൽ ഷോപ്പിംഗ് നടത്താൻ കഴിയില്ല. + active_distributors_not_ready_for_checkout_message_plural: >- + %{distributor_names} എന്ന ഹബുകൾ ഒരു സജീവ ഓർഡർ സൈക്കിളിൽ ലിസ്‌റ്റ് ചെയ്‌തിട്ടുണ്ട്, + എന്നാൽ സാധുവായ ഷിപ്പിംഗ്, പേയ്‌മെന്റ് രീതികൾ ഇല്ല. നിങ്ങൾ ഇവ സജ്ജീകരിക്കുന്നത് + വരെ, ഉപഭോക്താക്കൾക്ക് ഈ ഹബ്ബുകളിൽ ഷോപ്പിംഗ് നടത്താൻ കഴിയില്ല. + enterprise_fees_update_notice: നിങ്ങളുടെ എന്റർപ്രൈസ് ഫീസ് അപ്ഡേറ്റ് ചെയ്തു. + enterprise_register_package_error: "ദയവായി ഒരു പാക്കേജ് തിരഞ്ഞെടുക്കുക" + enterprise_register_error: "%{enterprise} -നുള്ള രജിസ്ട്രേഷൻ പൂർത്തിയാക്കാൻ കഴിഞ്ഞില്ല" + enterprise_register_success_notice: "അഭിനന്ദനങ്ങൾ! %{enterprise} -നുള്ള രജിസ്‌ട്രേഷൻ പൂർത്തിയായി!" + enterprise_bulk_update_success_notice: "എന്റർപ്രൈസസ് വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു" + enterprise_bulk_update_error: 'അപ്ഡേറ്റ് പരാജയപ്പെട്ടു' + enterprise_shop_show_error: "നിങ്ങൾ തിരയുന്ന ഷോപ്പ് ഓഎഫ്എൻ-ൽ നിലവിലില്ല അല്ലെങ്കിൽ നിഷ്‌ക്രിയമാണ്. ദയവായി മറ്റ് കടകൾ പരിശോധിക്കുക." + order_cycles_bulk_update_notice: 'ഓർഡർ സൈക്കിളുകൾ അപ്ഡേറ്റ് ചെയ്തു.' + order_cycles_no_permission_to_coordinate_error: "ഒരു ഓർഡർ സൈക്കിൾ ഏകോപിപ്പിക്കാൻ നിങ്ങളുടെ സംരംഭങ്ങൾക്കൊന്നും അനുമതിയില്ല" + order_cycles_no_permission_to_create_error: "ആ എന്റർപ്രൈസ് ഏകോപിപ്പിച്ച ഒരു ഓർഡർ സൈക്കിൾ സൃഷ്ടിക്കാൻ നിങ്ങൾക്ക് അനുമതിയില്ല" + order_cycle_closed: "നിങ്ങൾ തിരഞ്ഞെടുത്ത ഓർഡർ സൈക്കിൾ ഇപ്പോൾ അടച്ചു. ദയവായി വീണ്ടും ശ്രമിക്കുക!" + back_to_orders_list: "ഓർഡർ ലിസ്റ്റിലേക്ക് മടങ്ങുക" + no_orders_found: "ഓർഡറുകളൊന്നും കണ്ടെത്തിയില്ല" + order_information: "ഓർഡർ വിവരം" + new_payment: "പുതിയ പേയ്മെന്റ്" + create_or_update_invoice: "ഇൻവോയ്സ് സൃഷ്ടിക്കുക അല്ലെങ്കിൽ അപ്ഡേറ്റ് ചെയ്യുക" + date_completed: "പൂർത്തിയായ തീയതി" amount: "തുക" + invoice_number: "ഇൻവോയ്സ് നമ്പർ" invoice_file: "ഫയൽ" + invalid_url: "'%{url}' എന്ന യുആർഎൽ അസാധുവാണ്" state_names: ready: തയ്യാറാണ് + pending: തീർപ്പാക്കാത്തത് + shipped: ഷിപ് ചെയ്തു js: + saving: 'സേവ് ചെയ്യുന്നു..' changes_saved: 'മാറ്റങ്ങൾ സേവ് ചെയ്തു.' - unsaved_changes: നിങ്ങൾക്ക് സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട് - error: പിശക് + authorising: "അധികാരപ്പെടുത്തുന്നു..." + save_changes_first: ആദ്യം മാറ്റങ്ങൾ സേവ് ചെയ്യുക. + all_changes_saved: എല്ലാ മാറ്റങ്ങളും സേവ് ചെയ്തു + unsaved_changes: നിങ്ങൾക്ക് സേവ് ചെയ്യാത്ത മാറ്റങ്ങളുണ്ട് + all_changes_saved_successfully: എല്ലാ മാറ്റങ്ങളും വിജയകരമായി സേവ് ചെയ്തു + oh_no: "അയ്യോ! നിങ്ങളുടെ മാറ്റങ്ങൾ സേവ് ചെയ്യാൻ എനിക്ക് കഴിഞ്ഞില്ല." + unauthorized: "ഈ പേജ് ആക്സസ് ചെയ്യാൻ നിങ്ങൾക്ക് അധികാരമില്ല." + error: തകരാറ് + unavailable: ലഭ്യമല്ല profile: പ്രൊഫൈൽ hub: ഹബ് shop: കട + choose: തിരഞ്ഞെടുക്കുക + resolve_errors: ഇനിപ്പറയുന്ന തകരാറുകൾ പരിഹരിക്കുക + more_items: "+ %{count} കൂടുതൽ" + default_card_updated: ഡിഫോൾട്ട് കാർഡ് അപ്ഡേറ്റ് ചെയ്തു + default_card_voids_auth: നിങ്ങളുടെ ഡിഫോൾട്ട് കാർഡ് മാറ്റുന്നത്, അത് ചാർജ് ചെയ്യുന്നതിനുള്ള കടകളുടെ നിലവിലുള്ള അംഗീകാരങ്ങൾ നീക്കം ചെയ്യും. ഡിഫോൾട്ട് കാർഡ് അപ്ഡേറ്റ് ചെയ്തതിന് ശേഷം നിങ്ങൾക്ക് ഷോപ്പുകൾക്ക് വീണ്ടും അംഗീകാരം നൽകാം. ഡിഫോൾട്ട് കാർഡ് മാറ്റാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുണ്ടോ? + cart: + add_to_cart_failed: > + കാർട്ടിലേക്ക് ഈ ഉൽപ്പന്നം ചേർക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായി. ഒരുപക്ഷേ അത് + ലഭ്യമല്ലാതാവുകയോ കട പൂട്ടുകയോ ചെയ്തേക്കാം. admin: + unit_price_tooltip: "വ്യത്യസ്ത ഉൽപ്പന്നങ്ങളും പാക്കേജിംഗ് വലുപ്പങ്ങളും തമ്മിലുള്ള വിലകൾ എളുപ്പത്തിൽ താരതമ്യം ചെയ്യാൻ നിങ്ങളുടെ ഉപഭോക്താക്കളെ അനുവദിക്കുന്നതിലൂടെ യൂണിറ്റ് വില സുതാര്യത വർദ്ധിപ്പിക്കുന്നു. ശ്രദ്ധിക്കുക, കടയുടെ മുൻവശത്ത് പ്രദർശിപ്പിക്കുന്ന അവസാന യൂണിറ്റ് വിലയിൽ നികുതിയും ഫീസും ഉൾപ്പെടുന്നതിനാൽ വ്യത്യാസമുണ്ടാകാം." + enterprise_limit_reached: "ഓരോ അക്കൗണ്ടിനും എന്റർപ്രൈസസിന്റെ സ്റ്റാൻഡേർഡ് പരിധിയിൽ നിങ്ങൾ എത്തിയിരിക്കുന്നു. നിങ്ങൾക്ക് ഇത് വർദ്ധിപ്പിക്കണമെങ്കിൽ %{contact_email} -ലേക്ക് എഴുതുക." + deleting_item_will_cancel_order: "ഈ പ്രവർത്തനം ഒന്നോ അതിലധികമോ ശൂന്യമായ ഓർഡറുകൾക്ക് കാരണമാകും, അത് റദ്ദാക്കപ്പെടും. നിങ്ങൾക്ക് തുടരാൻ താൽപ്പര്യമുണ്ടോ?" modals: + got_it: "മനസ്സിലായി" + confirm: "സ്ഥിരീകരിക്കുക" close: "അടയ്ക്കുക" continue: "തുടരുക" cancel: "റദ്ദാക്കുക" + invite: "ക്ഷണിക്കുക" + invite_title: "രജിസ്റ്റർ ചെയ്യാത്ത ഒരു ഉപയോക്താവിനെ ക്ഷണിക്കുക" tag_rule_help: title: നിയമങ്ങൾ കൂട്ടിയോജിപ്പിക്കുക + overview: അവലോകനം + overview_text: > + ഏതൊക്കെ ഇനങ്ങൾ ദൃശ്യമാകുമെന്നോ അല്ലെങ്കിൽ ഏതൊക്കെ ഉപയോക്താക്കൾക്ക് ദൃശ്യമാകുമെന്നോ + വിവരിക്കുന്നതിനുള്ള ഒരു മാർഗം ടാഗ് റൂൾസ് നൽകുന്നു. ഇനങ്ങൾ ഷിപ്പിംഗ് + രീതികൾ, പേയ്‌മെന്റ് രീതികൾ, ഉൽപ്പന്നങ്ങൾ, ഓർഡർ സൈക്കിളുകൾ എന്നിവ ആകാം. + by_default_rules: "'സ്വതവേ...' നിയമങ്ങൾ" + by_default_rules_text: > + ഇനങ്ങൾ ഡിഫോൾട്ടായി ദൃശ്യമാകാത്ത വിധം മറയ്ക്കാൻ ഡിഫോൾട്ട് നിയമങ്ങൾ നിങ്ങളെ + അനുവദിക്കുന്നു. പ്രത്യേക ടാഗുകളുള്ള ഉപഭോക്താക്കൾക്കുള്ള സ്ഥിരമല്ലാത്ത + നിയമങ്ങളാൽ ഈ സ്വഭാവം അസാധുവാക്കാവുന്നതാണ്. + customer_tagged_rules: "'ഉപഭോക്താക്കൾ ടാഗ് ചെയ്‌ത...' നിയമങ്ങൾ" + customer_tagged_rules_text: > + ഒരു നിർദ്ദിഷ്‌ട ഉപഭോക്തൃ ടാഗുമായി ബന്ധപ്പെട്ട നിയമങ്ങൾ സൃഷ്‌ടിക്കുന്നതിലൂടെ, + നിർദ്ദിഷ്‌ട ടാഗ് ഉള്ള ഉപഭോക്താക്കൾക്കായി നിങ്ങൾക്ക് ഡിഫോൾട്ട് സ്വഭാവം + (അത് ഇനങ്ങൾ കാണിക്കാനോ മറയ്‌ക്കാനോ ആകട്ടെ) അസാധുവാക്കാനാകും. + terms_and_conditions_info: + title: "നിബന്ധനകളും വ്യവസ്ഥകളും അപ്‌ലോഡ് ചെയ്യുന്നു" + message_1: "വിൽപ്പനക്കാരനും വാങ്ങുന്നയാളും തമ്മിലുള്ള കരാറാണ് നിബന്ധനകളും വ്യവസ്ഥകളും എന്നതിലുള്ളത്. നിങ്ങൾ ഇവിടെ ഒരു ഫയൽ അപ്‌ലോഡ് ചെയ്യുകയാണെങ്കിൽ, ചെക്ക്ഔട്ട് പൂർത്തിയാക്കുന്നതിന് ഷോപ്പർമാർ നിങ്ങളുടെ നിബന്ധനകളും വ്യവസ്ഥകളും അംഗീകരിക്കണം. വാങ്ങുന്നയാൾക്ക് ഇത് ചെക്ക്ഔട്ടിൽ ഒരു ചെക്ക്ബോക്സായി ദൃശ്യമാകും, അത് ചെക്ക്ഔട്ടുമായി മുന്നോട്ട് പോകുന്നതിന് പരിശോധിക്കേണ്ടതാണ്. ദേശീയ നിയമനിർമ്മാണത്തിന് അനുസൃതമായി നിബന്ധനകളും വ്യവസ്ഥകളും അപ്‌ലോഡ് ചെയ്യാൻ ഞങ്ങൾ ശുപാർശ ചെയ്യുന്നു." + message_2: "ഉപഭോക്താക്കൾ ഒരിക്കൽ മാത്രം നിബന്ധനകളും വ്യവസ്ഥകളും അംഗീകരിച്ചാൽ മതിയാകും. എന്നിരുന്നാലും, നിങ്ങൾ നിബന്ധനകളും വ്യവസ്ഥകളും മാറ്റുകയാണെങ്കിൽ ഉപഭോക്താക്കൾ വീണ്ടും അവ അംഗീകരിക്കേണ്ടതുണ്ട്." + terms_and_conditions_warning: + title: "നിബന്ധനകളും വ്യവസ്ഥകളും അപ്‌ലോഡ് ചെയ്യുന്നു" + message_1: "നിങ്ങളുടെ എല്ലാ ഉപഭോക്താക്കളും ചെക്ക്ഔട്ട് ചെയ്യുമ്പോൾ ഒരിക്കൽ അവ സമ്മതിക്കേണ്ടി വരും. നിങ്ങൾ ഫയൽ അപ്ഡേറ്റ് ചെയ്യുകയാണെങ്കിൽ, ചെക്ക്ഔട്ടിൽ നിങ്ങളുടെ എല്ലാ ഉപഭോക്താക്കളും അവ വീണ്ടും അംഗീകരിക്കേണ്ടതുണ്ട്." + message_2: "സബ്‌സ്‌ക്രിപ്‌ഷനുള്ള ഉപഭോക്താക്കൾക്കായി, നിങ്ങൾ അവർക്ക് ഇപ്പോൾ നിബന്ധനകളും വ്യവസ്ഥകളും (അല്ലെങ്കിൽ അവയിലെ മാറ്റങ്ങൾ) ഇമെയിൽ ചെയ്യേണ്ടതുണ്ട്, ഈ പുതിയ നിബന്ധനകളെയും വ്യവസ്ഥകളെയും കുറിച്ച് അവരെ ഒന്നും അറിയിക്കില്ല." + business_address_info: + message: "കമ്പനിയുടെ നിയമപരമായ പേര്, നിയമപരമായ വിലാസം, നിയമപരമായ ഫോൺ നമ്പർ എന്നിവ അവരുടെ പൊതു വ്യാപാര വിവരങ്ങളിലേക്ക് വ്യത്യസ്‌ത വിശദാംശങ്ങളോടെ രജിസ്റ്റർ ചെയ്‌ത നിയമപരമായ സ്ഥാപനത്തിൽ നിന്ന് ഇൻവോയ്‌സ് ചെയ്യുന്ന ബിസിനസുകൾക്കായി ഉപയോഗിക്കുന്നു. ഈ വിശദാംശങ്ങൾ ഇൻവോയ്സുകളിൽ മാത്രമേ ഉപയോഗിക്കൂ. ഈ വിശദാംശങ്ങൾ ശൂന്യമാണെങ്കിൽ നിങ്ങളുടെ പൊതു പേരും വിലാസവും ഫോൺ നമ്പറും ഇൻവോയ്സുകളിൽ ഉപയോഗിക്കും." panels: save: സേവ് saved: സേവ് ചെയ്തു saving: സേവ് ചെയ്യുന്നു enterprise_package: + hub_profile: ഹബ് പ്രൊഫൈൽ + hub_profile_cost: "ചെലവ്: എപ്പോഴും സൗജന്യം" + hub_profile_text1: > + ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിൽ ആളുകൾക്ക് നിങ്ങളെ കണ്ടെത്താനും ബന്ധപ്പെടാനും + കഴിയും. നിങ്ങളുടെ എന്റർപ്രൈസ് മാപ്പിൽ ദൃശ്യമാകും, കൂടാതെ ലിസ്റ്റിംഗുകളിൽ + തിരയാനും കഴിയും. + hub_profile_text2: > + ഒരു പ്രൊഫൈൽ ഉണ്ടായിരിക്കുന്നതും ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലൂടെ നിങ്ങളുടെ + പ്രാദേശിക ആഹാര സംവിധാനത്തിൽ കണക്ഷനുകൾ ഉണ്ടാക്കുന്നതും എല്ലായ്പ്പോഴും + സൗജന്യമായിരിക്കും. hub_shop: ഹബ് ഷോപ്പ് + hub_shop_text1: > + നിങ്ങളുടെ പ്രാദേശിക ആഹാര സമ്പ്രദായത്തിന്റെ നട്ടെല്ലാണ് നിങ്ങളുടെ സംരംഭം. + നിങ്ങൾക്ക് മറ്റ് സംരംഭങ്ങളിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ സമാഹരിക്കുകയും ഓപ്പൺ + ഫുഡ് നെറ്റ്‌വർക്കിലെ നിങ്ങളുടെ ഷോപ്പ് വഴി വിൽക്കുകയും ചെയ്യാം. + hub_shop_text2: > + ഹബുകൾക്ക് പല രൂപങ്ങൾ എടുക്കാം, അവ ഒരു ഫുഡ് സഹകരണ സ്ഥാപനം, ഒരു വാങ്ങൽ + ഗ്രൂപ്പ്, ഒരു വെജി-ബോക്സ് പ്രോഗ്രാം അല്ലെങ്കിൽ ഒരു പ്രാദേശിക പലചരക്ക് + കട എന്നിവ ആകാം. + hub_shop_text3: > + നിങ്ങളുടെ സ്വന്തം ഉൽപ്പന്നങ്ങൾ വിൽക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, + ഈ എന്റർപ്രൈസ് ഒരു പ്രൊഡ്യൂസർ ആയി മാറേണ്ടതുണ്ട്. + choose_package: ദയവായി ഒരു പാക്കേജ് തിരഞ്ഞെടുക്കുക + choose_package_text1: > + ഇടതുവശത്തുള്ള ഓപ്ഷനുകളിൽ നിന്ന് ഒരു പാക്കേജ് തിരഞ്ഞെടുക്കുന്നത് വരെ + നിങ്ങളുടെ എന്റർപ്രൈസ് പൂർണ്ണമായും സജീവമാകില്ല. + choose_package_text2: > + ഓരോ പാക്കേജിനെക്കുറിച്ചും കൂടുതൽ വിശദമായ വിവരങ്ങൾ കാണുന്നതിന് ഒരു ഓപ്‌ഷനിൽ + ക്ലിക്ക് ചെയ്യുക, നിങ്ങൾ പൂർത്തിയാക്കുമ്പോൾ ചുവന്ന സേവ് ബട്ടൺ അമർത്തുക! profile_only: പ്രൊഫൈൽ മാത്രം + profile_only_cost: "ചെലവ്: എപ്പോഴും സൗജന്യം" + profile_only_text1: > + ഒരു പ്രൊഫൈൽ നിങ്ങളെ മറ്റുള്ളവർക്ക് ദൃശ്യവും കോൺടാക്റ്റ് ചെയ്യാവുന്നതുമാക്കുന്നു, + നിങ്ങളുടെ കഥ പങ്കിടാനുള്ള ഒരു മാർഗമാണിത്. + profile_only_text2: > + നിങ്ങൾ ആഹാരം ഉൽപ്പാദിപ്പിക്കുന്നതിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കുകയും അത് മറ്റൊരാൾക്ക് + വിൽക്കുന്ന ജോലി ഉപേക്ഷിക്കുകയും ചെയ്യുകയാണെങ്കിൽ, നിങ്ങൾക്ക് ഓപ്പൺ ഫുഡ് + നെറ്റ്‌വർക്കിൽ ഒരു ഷോപ്പ് ആവശ്യമില്ല. + profile_only_text3: > + ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ചേർക്കുക, നിങ്ങളുടെ + ഉൽപ്പന്നങ്ങൾ അവരുടെ സ്റ്റോറുകളിൽ സ്റ്റോക്ക് ചെയ്യാൻ ഹബുകളെ അനുവദിക്കുന്നു. producer_shop: പ്രൊഡ്യൂസർ ഷോപ്പ് + producer_shop_text1: > + നിങ്ങളുടെ സ്വന്തം ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് ഷോപ്പ് ഫ്രണ്ട് വഴി നിങ്ങളുടെ + ഉൽപ്പന്നങ്ങൾ ഉപഭോക്താക്കൾക്ക് നേരിട്ട് വിൽക്കുക. + producer_shop_text2: > + ഒരു പ്രൊഡ്യൂസർ ഷോപ്പ് നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾക്ക് മാത്രമുള്ളതാണ്, സൈറ്റിന് + പുറത്ത് ഉൽപ്പാദിപ്പിച്ച ഉൽപ്പന്നങ്ങൾ വിൽക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, + ദയവായി 'പ്രൊഡ്യൂസർ ഹബ്' തിരഞ്ഞെടുക്കുക. producer_hub: പ്രൊഡ്യൂസർ ഹബ് + producer_hub_text1: > + നിങ്ങളുടെ പ്രാദേശിക ആഹാര സമ്പ്രദായത്തിന്റെ നട്ടെല്ലാണ് നിങ്ങളുടെ സംരംഭം. + ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ ഷോപ്പ് ഫ്രണ്ട് വഴി നിങ്ങൾക്ക് നിങ്ങളുടെ സ്വന്തം + ഉൽപ്പന്നങ്ങളും മറ്റ് സംരംഭങ്ങളിൽ നിന്ന് സമാഹരിച്ച ഉൽപ്പന്നങ്ങളും വിൽക്കാൻ + കഴിയും. + producer_hub_text2: > + പ്രൊഡ്യൂസർ ഹബ്‌സിന് പല രൂപങ്ങൾ എടുക്കാം, അവ ഒരു സിഎസ്‌എ, വെജി-ബോക്‌സ് + പ്രോഗ്രാം, അല്ലെങ്കിൽ റൂഫ്‌ടോപ്പ് ഗാർഡൻ ഉള്ള ആഹാര സഹകരണ സ്ഥാപനം എന്നിങ്ങനെ. + producer_hub_text3: > + ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്ക് കഴിയുന്നത്ര ഹബ് മോഡലുകളെ പിന്തുണയ്‌ക്കാൻ ലക്ഷ്യമിടുന്നു, + അതിനാൽ നിങ്ങളുടെ സാഹചര്യം പ്രശ്‌നമല്ല, നിങ്ങളുടെ സ്ഥാപനമോ പ്രാദേശിക + ഭക്ഷണ ബിസിനസോ പ്രവർത്തിപ്പിക്കുന്നതിന് ആവശ്യമായ സൗകര്യങ്ങൾ നൽകാൻ ഞങ്ങൾ + ആഗ്രഹിക്കുന്നു. get_listing: ഒരു ലിസ്റ്റിംഗ് നേടുക always_free: എപ്പോഴും സൗജന്യം sell_produce_others: മറ്റുള്ളവരിൽ നിന്നുള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക sell_own_produce: നിങ്ങളുടെ സ്വന്തം ഉൽപ്പന്നങ്ങൾ വിൽക്കുക sell_both: തന്നിൽ നിന്നും മറ്റുള്ളവരിൽ നിന്നും ഉള്ള ഉൽപ്പന്നങ്ങൾ വിൽക്കുക enterprise_producer: - producer: നിർമ്മാതാവ് + producer: പ്രൊഡ്യൂസർ + producer_text1: > + പ്രൊഡ്യൂസേഴ്‌സ് കഴിക്കാനും/അല്ലെങ്കിൽ കുടിക്കാനും സ്വാദിഷ്ടമായ കാര്യങ്ങൾ + ഉണ്ടാക്കുന്നു. നിങ്ങൾ അത് കൃഷി ചെയ്താലും, വളർത്തിയാലും, പാകം ചെയ്താലും, + ചുട്ടാലും, പുളിപ്പിച്ചാലും അല്ലെങ്കിൽ വാർത്തെടുത്താലും നിങ്ങൾ ഒരു പ്രൊഡ്യൂസർ + ആണ്. + producer_text2: > + മറ്റ് സംരംഭങ്ങളിൽ നിന്നുള്ള ആഹാരം സമാഹരിച്ച് ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ + ഒരു ഷോപ്പ് വഴി വിൽക്കുന്നത് പോലുള്ള മറ്റ് പ്രവർത്തനങ്ങളും പ്രൊഡ്യൂസർമാർക്ക് + ചെയ്യാൻ കഴിയും. + non_producer: നോൺ പ്രൊഡ്യൂസർ + non_producer_text1: > + ഉൽപ്പാദകരല്ലാത്തവർ സ്വയം ഒരു ഭക്ഷണവും ഉൽപ്പാദിപ്പിക്കുന്നില്ല, അതായത് + ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലൂടെ വിൽപ്പനയ്‌ക്കായി സ്വന്തം ഉൽപ്പന്നങ്ങൾ സൃഷ്ടിക്കാൻ + അവർക്ക് കഴിയില്ല. + non_producer_text2: > + പകരം, ഉൽപ്പാദകരല്ലാത്തവർ ഉത്പാദകരെ ഉപഭോക്താക്കളുമായി ബന്ധിപ്പിക്കുന്നതിൽ + വൈദഗ്ദ്ധ്യം നേടുന്നു, അത് സമാഹരിക്കുകയോ ഗ്രേഡിംഗ് ചെയ്യുകയോ പാക്കുചെയ്യുകയോ + ഭക്ഷണം വിൽക്കുകയോ വിതരണം ചെയ്യുകയോ മൂലമാകാം. + producer_desc: ആഹാര ഉത്പാദകർ + producer_example: ഉദാ. ഗ്രോവേഴ്സ്, ബേക്കേഴ്സ്, ബ്രൂവേഴ്സ്, മേക്കേഴ്സ് + non_producer_desc: മറ്റെല്ലാ ഭക്ഷ്യ സംരംഭങ്ങളും + non_producer_example: ഉദാ. പലചരക്ക് കടകൾ, ഭക്ഷ്യ സഹകരണ സ്ഥാപനങ്ങൾ, വാങ്ങൽ ഗ്രൂപ്പുകൾ enterprise_status: + status_title: "%{name} സജ്ജീകരിച്ചു, മുന്നോട്ടുപോകാൻ തയ്യാറാണ്!" + severity: തീവ്രത description: വിവരണം + resolve: പരിഹരിക്കുക + exchange_products: + load_more_variants: "കൂടുതൽ വേരിയന്റുകൾ ലോഡ് ചെയ്യുക" + load_all_variants: "എല്ലാ വേരിയന്റുകളും ലോഡ് ചെയ്യുക" + select_all_variants: "%{total_number_of_variants} വേരിയന്റുകളും തിരഞ്ഞെടുക്കുക" + variants_loaded: "%{num_of_variants_loaded} ൽ %{total_number_of_variants} വേരിയന്റുകൾ ലോഡ് ചെയ്തു" + loading_variants: "വേരിയന്റുകൾ ലോഡുചെയ്യുന്നു" + no_variants: "ഈ ഉൽപ്പന്നത്തിന് വേരിയന്റൊന്നും ലഭ്യമല്ല (ഇൻവെന്ററി ക്രമീകരണങ്ങൾ വഴി മറച്ചിരിക്കുന്നു)." + some_variants_hidden: "(ചില വേരിയന്റുകൾ ഇൻവെന്ററി ക്രമീകരണങ്ങൾ വഴി മറച്ചിരിക്കാം)" + tag_rules: + shipping_method_tagged_top: "ഷിപ്പിംഗ് രീതികൾ ടാഗ് ചെയ്‌തു" + shipping_method_tagged_bottom: "ഇവ:" + payment_method_tagged_top: "പേയ്‌മെന്റ് രീതികൾ ടാഗ് ചെയ്‌തു" + payment_method_tagged_bottom: "ഇവ:" + order_cycle_tagged_top: "ഓർഡർ സൈക്കിളുകൾ ടാഗ് ചെയ്‌തു" + order_cycle_tagged_bottom: "ഇവ:" + inventory_tagged_top: "ഇൻവെന്ററി വേരിയന്റുകൾ ടാഗ് ചെയ്‌തു" + inventory_tagged_bottom: "ഇവ:" + new_tag_rule_dialog: + select_rule_type: "ഒരു റൂൾ തരം തിരഞ്ഞെടുക്കുക:" + add_rule: "നിയമം ചേർക്കുക" + enterprise_fees: + inherit_from_product: "ഉൽപ്പന്നത്തിൽ നിന്ന് അവകാശം നേടുക" orders: + index: + per_page: "ഓരോ പേജിലും %{results}" + view_file: "ഫയൽ കാണുക" + compiling_invoices: "ഇൻവോയ്സുകൾ സമാഹരിക്കുന്നു" + bulk_invoice_created: "ബൾക്ക് ഇൻവോയ്സ് സൃഷ്ടിച്ചു" + bulk_invoice_failed: "ബൾക്ക് ഇൻവോയ്സ് സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു" + please_wait: "ഈ മോഡൽ അടയ്ക്കുന്നതിന് മുമ്പ് പിഡിഎഫ് തയ്യാറാകുന്നത് വരെ കാത്തിരിക്കുക." order_state: + address: "വിലാസം" + adjustments: "മാറ്റംവരുത്തലുകൾ" + awaiting_return: "തിരിച്ചുവരവിനായി കാത്തിരിക്കുന്നു" + canceled: "റദ്ദാക്കി" cart: "കാർട്ട്" + complete: "പൂർത്തിയായത്" + confirm: "സ്ഥിരീകരിക്കുക" + delivery: "ഡെലിവറി" + paused: "താൽക്കാലികമായി നിർത്തി" + payment: "പേയ്മെന്റ്" + pending: "തീർച്ചപ്പെടാത്ത" + resumed: "പുനരാരംഭിച്ചു" + returned: "തിരിച്ചയച്ചു" + confirmation: "സ്ഥിരീകരണം" + shipment_states: + backorder: "ബാക്ക്ഓർഡർ" + partial: "ഭാഗികമായ" + pending: "തീർച്ചപ്പെടാത്ത" + ready: "തയ്യാർ" + shipped: "അയച്ചു" + canceled: "റദ്ദാക്കി" + payment_states: + balance_due: "ബാക്കി" + completed: "പൂർത്തിയാക്കിയത്" + checkout: "ചെക്ക് ഔട്ട്" + credit_owed: "കടബാധ്യത" + failed: "പരാജയപ്പെട്ടു" + paid: "പണം നൽകി" + pending: "തീർച്ചപ്പെടാത്ത" + requires_authorization: "അനുമതി ആവശ്യമാണ്" + processing: "പ്രോസസ്സിംഗ്" + void: "ശൂന്യം" + invalid: "അസാധുവാണ്" + quantity_unavailable: "ആവശ്യത്തിന് സ്റ്റോക്ക് ലഭ്യമല്ല. ലൈൻ ഇനം സേവ് ചെയ്തിട്ടില്ല!" + quantity_unchanged: "മുൻ അളവിൽ നിന്ന് മാറ്റമില്ല." + cancel_the_order_html: "ഇത് നിലവിലെ ഓർഡർ റദ്ദാക്കും.
നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" + cancel_the_order_send_cancelation_email: "ഉപഭോക്താവിന് ഒരു റദ്ദാക്കൽ ഇമെയിൽ അയയ്ക്കുക" + restock_item: "റീസ്റ്റോക്ക് ഇനങ്ങൾ: ഈ ഇനം സ്റ്റോക്കിലേക്ക് തിരികെ നൽകുക" + restock_items: "റീസ്റ്റോക്ക് ഇനങ്ങൾ: എല്ലാ ഇനങ്ങളും സ്റ്റോക്കിലേക്ക് തിരികെ നൽകുക" + delete_line_items_html: + one: "ഇത് ഓർഡറിൽ നിന്ന് ഒരു വരി ഇനം ഇല്ലാതാക്കും.
നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" + other: "ഇത് ഓർഡറിൽ നിന്ന് %{count} ലൈൻ ഇനങ്ങൾ ഇല്ലാതാക്കും.
നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" resend_user_email_confirmation: resend: "വീണ്ടും അയയ്ക്കുക" + sending: "വീണ്ടും അയയ്‌ക്കുക..." + done: "വീണ്ടും അയച്ചു ✓" + failed: "വീണ്ടും അയയ്‌ക്കാനായില്ല ✗" order_cycles: schedules: + adding_a_new_schedule: "ഒരു പുതിയ ഷെഡ്യൂൾ ചേർക്കുന്നു" + updating_a_schedule: "ഒരു ഷെഡ്യൂൾ അപ്ഡേറ്റ് ചെയ്യുന്നു" + create_schedule: "ഷെഡ്യൂൾ സൃഷ്ടിക്കുക" + update_schedule: "ഷെഡ്യൂൾ അപ്ഡേറ്റ് ചെയ്യുക" + delete_schedule: "ഷെഡ്യൂൾ ഡിലീറ്റ് ചെയ്യുക" + schedule_name_placeholder: "ഷെഡ്യൂൾ പേര്" + created_schedule: "ഷെഡ്യൂൾ സൃഷ്ടിച്ചു" + updated_schedule: "ഷെഡ്യൂൾ അപ്ഡേറ്റ് ചെയ്തു" + deleted_schedule: "ഷെഡ്യൂൾ ഡിലീറ്റ് ചെയ്തു" + name_required_error: "ദയവായി ഈ ഷെഡ്യൂളിന് ഒരു പേര് നൽകുക" + no_order_cycles_error: "ദയവായി ഒരു ഓർഡർ സൈക്കിളെങ്കിലും തിരഞ്ഞെടുക്കുക (വലിച്ചിടുക)" available: "ലഭ്യമാണ്" + selected: "തിരഞ്ഞെടുത്തത്" customers: index: + add_customer: "ഉപഭോക്താവിനെ ചേർക്കുക" + add_a_new_customer_for: "%{shop_name} -നായി ഒരു പുതിയ ഉപഭോക്താവിനെ ചേർക്കുക" + customer_placeholder: "customer@example.org" valid_email_error: "സാധുതയുള്ള ഒരു ഇമെയിൽ വിലാസം നൽകുക" + subscriptions: + error_saving: "സബ്സ്ക്രിപ്ഷൻ സേവ് ചെയ്യുന്നതിൽ തകരാറ് സംഭവിച്ചു" + new: + please_select_a_shop: "ദയവായി ഒരു ഷോപ്പ് തിരഞ്ഞെടുക്കുക" + enterprises: + form: + images: + removed_logo_successfully: "ലോഗോ വിജയകരമായി നീക്കം ചെയ്തു" + immediate_logo_removal_warning: "നിങ്ങൾ സ്ഥിരീകരിച്ചതിന് ശേഷം ഉടൻ തന്നെ ലോഗോ നീക്കം ചെയ്യപ്പെടും." + removed_promo_image_successfully: "പ്രമോ ചിത്രം വിജയകരമായി നീക്കം ചെയ്തു" + immediate_promo_image_removal_warning: "നിങ്ങൾ സ്ഥിരീകരിച്ചതിന് ശേഷം ഉടൻ തന്നെ പ്രമോ ചിത്രം നീക്കം ചെയ്യപ്പെടും." + immediate_terms_and_conditions_removal_warning: "നിങ്ങൾ സ്ഥിരീകരിച്ചതിന് ശേഷം ഉടൻ തന്നെ നിബന്ധനകളും വ്യവസ്ഥകളും എന്ന ഫയൽ നീക്കം ചെയ്യപ്പെടും." + removed_terms_and_conditions_successfully: "നിബന്ധനകളും വ്യവസ്ഥകളും എന്ന ഫയൽ വിജയകരമായി നീക്കം ചെയ്തു" + insufficient_stock: "മതിയായ സ്റ്റോക്ക് ലഭ്യമല്ല, %{on_hand} മാത്രം ശേഷിക്കുന്നു" + out_of_stock: + reduced_stock_available: കുറഞ്ഞ സ്റ്റോക്ക് ലഭ്യമാണ് + out_of_stock_text: > + നിങ്ങൾ ഷോപ്പിംഗ് നടത്തുമ്പോൾ, നിങ്ങളുടെ കാർട്ടിലെ ഒന്നോ അതിലധികമോ ഉൽപ്പന്നങ്ങളുടെ + സ്റ്റോക്ക് ലെവലുകൾ കുറഞ്ഞു. എന്താണ് മാറിയതെന്ന് ഇവിടെ പറയുന്നു: + now_out_of_stock: ഇത് ഇപ്പോൾ സ്റ്റോക്കില്ല. + only_n_remainging: "ഇപ്പോൾ %{num} മാത്രമേ ശേഷിക്കുന്നുള്ളൂ." shopfront: variant: add_to_cart: "ചേർക്കുക" + in_cart: "കാർട്ടിൽ" + quantity_in_cart: "കാർട്ടിൽ %{quantity}" + remaining_in_stock: "%{quantity} മാത്രം ശേഷിക്കുന്നു" bulk_buy_modal: + min_quantity: "കുറഞ്ഞ അളവ്" max_quantity: "പരമാവധി അളവ്" + price_breakdown: "വില വിശ്ലേഷണം" + unit_price_tooltip: "ഇതാണ് ഈ ഉൽപ്പന്നത്തിന്റെ യൂണിറ്റ് വില. പാക്കേജിംഗ് വലുപ്പത്തിലും ഭാരത്തിലും നിന്ന് സ്വതന്ത്രമായി ഉൽപ്പന്നങ്ങളുടെ വില താരതമ്യം ചെയ്യാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു." variants: on_demand: 'yes': "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" variant_overrides: on_demand: + use_producer_settings: "പ്രൊഡ്യൂസർ സ്റ്റോക്ക് ക്രമീകരണങ്ങൾ ഉപയോഗിക്കുക" 'yes': "അതെ" 'no': "ഇല്ല" + inventory_products: "ഇൻവെന്ററി ഉൽപ്പന്നങ്ങൾ" + hidden_products: "മറഞ്ഞിരിക്കുന്ന ഉൽപ്പന്നങ്ങൾ" + new_products: "പുതിയ ഉൽപ്പന്നങ്ങൾ" + reset_stock_levels: സ്റ്റോക്ക് ലെവലുകൾ ഡിഫോൾട്ടിലേക്ക് പുനഃസജ്ജമാക്കുക + changes_to: -എന്നതിലേക്കുള്ള മാറ്റങ്ങൾ + one_override: ഒന്ന് അസാധുവാക്കുക + overrides: അസാധുവാക്കുന്നു + remain_unsaved: സേവ് ചെയ്യാതെ തുടരുന്നു. + no_changes_to_save: സേവ് ചെയ്യാൻ മാറ്റങ്ങളൊന്നുമില്ല.' + no_authorisation: "ആ മാറ്റങ്ങൾ സേവ് ചെയ്യാൻ എനിക്ക് അംഗീകാരം നേടാനായില്ല, അതിനാൽ അവ സേവ് ചെയ്യപ്പെട്ടിട്ടില്ല." + some_trouble: "%{errors} സേവ് ചെയ്യുന്നതിൽ എനിക്ക് കുറച്ച് പ്രശ്നമുണ്ടായിരുന്നു: " + changing_on_hand_stock: ഹാൻഡ് സ്റ്റോക്ക് ലെവൽ മാറുന്നു... + stock_reset: സ്റ്റോക്കുകൾ ഡിഫോൾട്ടിലേക്ക് റീസെറ്റ് ചെയ്യുന്നു. + tag_rules: + show_hide_variants: 'എന്റെ ഷോപ്പ് ഫ്രണ്ടിൽ വേരിയന്റുകൾ കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക' + show_hide_shipping: 'ചെക്ക്ഔട്ടിൽ ഷിപ്പിംഗ് രീതികൾ കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക' + show_hide_payment: 'ചെക്ക്ഔട്ടിൽ പേയ്മെന്റ് രീതികൾ കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക' + show_hide_order_cycles: 'എന്റെ ഷോപ്പ് ഫ്രണ്ടിൽ ഓർഡർ സൈക്കിളുകൾ കാണിക്കുക അല്ലെങ്കിൽ മറയ്ക്കുക' + visible: ദൃശ്യമാണ് + not_visible: ദൃശ്യമല്ല services: - save: സേവ് + unsaved_changes_message: സേവ് ചെയ്യപ്പെടാത്ത മാറ്റങ്ങൾ നിലവിൽ നിലവിലുണ്ട്, ഇപ്പോൾ സേവ് ചെയ്യണോ അതോ അവഗണിക്കണോ? + save: സേവ് ചെയ്യുക + ignore: അവഗണിക്കുക + add_to_order_cycle: "ഓർഡർ സൈക്കിളിലേക്ക് ചേർക്കുക" + manage_products: "ഉൽപ്പന്നങ്ങൾ കൈകാര്യം ചെയ്യുക" + edit_profile: "പ്രൊഫൈൽ എഡിറ്റ് ചെയ്യുക" + add_products_to_inventory: "ഇൻവെന്ററിയിലേക്ക് ഉൽപ്പന്നങ്ങൾ ചേർക്കുക" + resources: + could_not_delete_customer: 'ഉപഭോക്താവിനെ ഇല്ലാതാക്കാൻ കഴിഞ്ഞില്ല' + product_import: + confirmation: | + ഇതിനായുള്ള എല്ലാ ഉൽപ്പന്നങ്ങളുടെയും സ്റ്റോക്ക് ലെവൽ പൂജ്യമായി സജ്ജമാക്കും + അപ്‌ലോഡ് ചെയ്ത ഫയലിൽ ഇല്ലാത്ത എന്റർപ്രൈസ്. order_cycles: + create_failure: "ഓർഡർ സൈക്കിൾ സൃഷ്ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു" update_success: 'നിങ്ങളുടെ ഓർഡർ സൈക്കിൾ അപ്ഡേറ്റ് ചെയ്തു.' + update_failure: "ഓർഡർ സൈക്കിൾ അപ്ഡേറ്റ് ചെയ്യുന്നതിൽ പരാജയപ്പെട്ടു" + no_distributors: ഈ ഓർഡർ സൈക്കിളിൽ വിതരണക്കാരില്ല. നിങ്ങൾ ഒരെണ്ണം ചേർക്കുന്നത് വരെ ഈ ഓർഡർ സൈക്കിൾ ഉപഭോക്താക്കൾക്ക് ദൃശ്യമാകില്ല. ഈ ഓർഡർ സൈക്കിൾ സേവ് ചെയ്യുന്നത് തുടരാൻ നിങ്ങൾക്ക് താൽപ്പര്യമുണ്ടോ?' enterprises: - producer: "നിർമ്മാതാവ്" + producer: "പ്രൊഡ്യൂസർ" + non_producer: "നോൺ പ്രൊഡ്യൂസർ" + customers: + select_shop: 'ആദ്യം ഒരു ഷോപ്പ് തിരഞ്ഞെടുക്കുക' + could_not_create: ക്ഷമിക്കണം! സൃഷ്ടിക്കാൻ കഴിഞ്ഞില്ല subscriptions: + closes: അടയ്ക്കുന്നു closed: അടച്ചു + close_date_not_set: അടയ്ക്കുന്ന തീയതി സജ്ജീകരിച്ചിട്ടില്ല + spree: + users: + order: "ഓർഡർ ചെയ്യുക" registration: welcome_to_ofn: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലേക്ക് സ്വാഗതം!" + signup_or_login: "സൈൻ അപ്പ് ചെയ്തുകൊണ്ട് ആരംഭിക്കുക (അല്ലെങ്കിൽ ലോഗിൻ ചെയ്യുക)" + have_an_account: "ഇതിനകം ഒരു അക്കൗണ്ട് ഉണ്ടോ?" + action_login: "ഇപ്പോൾ ലോഗിൻ ചെയ്യുക." + stripe_elements: + unknown_error_from_stripe: | + ഞങ്ങളുടെ പേയ്‌മെന്റ് ഗേറ്റ്‌വേയിൽ നിങ്ങളുടെ കാർഡ് സജ്ജീകരിക്കുന്നതിൽ ഒരു തകരാറുണ്ടായി. + പേജ് പുതുക്കിയ ശേഷം വീണ്ടും ശ്രമിക്കുക, ഇത് രണ്ടാം തവണയും പരാജയപ്പെടുകയാണെങ്കിൽ, + പിന്തുണയ്ക്കായി ഞങ്ങളെ ബന്ധപ്പെടുക. + inflections: + each: + one: "ഓരോന്നും" + other: "ഓരോന്നും" + bunch: + one: "കുല" + other: "കൂട്ടങ്ങൾ" + pack: + one: "പായ്ക്ക്" + other: "പാക്കുകൾ" + box: + one: "പെട്ടി" + other: "പെട്ടികൾ" + bottle: + one: "കുപ്പി" + other: "കുപ്പികൾ" + jar: + one: "ഭരണി" + other: "ജാറുകൾ" + head: + one: "തല" + other: "ഹെഡ്സ്" + bag: + one: "ബാഗ്" + other: "ബാഗുകൾ" + loaf: + one: "അപ്പം" + other: "ബ്രെഡ്‌ഡുകൾ" + single: + one: "സിംഗിൾ" + other: "സിംഗിൾസ്" + tub: + one: "ടബ്" + other: "ട്യൂബുകൾ" + punnet: + one: "പന്നറ്റ്" + other: "പഴക്കൂടകൾ" + packet: + one: "പാക്കറ്റ്" + other: "പാക്കറ്റുകൾ" + item: + one: "ഇനം" + other: "ഇനങ്ങൾ" + dozen: + one: "ഡസൻ" + other: "ഡസനുകൾ" + unit: + one: "യൂണിറ്റ്" + other: "യൂണിറ്റുകൾ" + serve: + one: "സേവിക്കുക" + other: "സേവിക്കുന്നു" + tray: + one: "ട്രേ" + other: "ട്രേകൾ" + piece: + one: "കഷണം" + other: "കഷണങ്ങൾ" + pot: + one: "കലം" + other: "പാത്രങ്ങൾ" + bundle: + one: "ബണ്ടിൽ" + other: "ബണ്ടിലുകൾ" + flask: + one: "ഫ്ലാസ്ക്" + other: "ഫ്ലാസ്കുകൾ" + basket: + one: "കൊട്ടയിൽ" + other: "കൊട്ടകൾ" + sack: + one: "ചാക്ക്" + other: "ചാക്കുകൾ" + producers: + signup: + start_free_profile: "ഒരു സൗജന്യ പ്രൊഫൈലിൽ ആരംഭിക്കുക, നിങ്ങൾ തയ്യാറാകുമ്പോൾ വികസിപ്പിക്കുക!" order_management: reports: + bulk_coop: + filters: + bulk_coop_allocation: "ബൾക്ക് കോ-ഓപ് അലോക്കേഷൻ" + bulk_coop_customer_payments: "ബൾക്ക് കോ-ഓപ്പ് ഉപഭോക്തൃ പേയ്‌മെന്റുകൾ" + bulk_coop_packing_sheets: "ബൾക്ക് കോ-ഓപ്പ് പാക്കിംഗ് ഷീറ്റുകൾ" + bulk_coop_supplier_report: "ബൾക്ക് കോ-ഓപ്പ് സപ്ലയർ റിപ്പോർട്ട്" enterprise_fee_summaries: + filters: + date_range: "തീയതി പരിധി" + report_format_csv: "സി.എസ്.വി ഫയൽ ആയി ഡൗൺലോഡ് ചെയ്യുക" + generate_report: "റിപ്പോർട്ട് സൃഷ്ടിക്കുക" report: none: "ഒന്നുമില്ല" + select_and_search: "നിങ്ങളുടെ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ ഫിൽട്ടറുകൾ തിരഞ്ഞെടുത്ത് റിപ്പോർട്ട് സൃഷ്ടിക്കുക എന്നതിൽ ക്ലിക്ക് ചെയ്യുക." enterprise_fee_summary: + date_end_before_start_error: "ആരംഭിച്ചതിന് ശേഷമായിരിക്കണം" + parameter_not_allowed_error: "ഈ റിപ്പോർട്ടിനായി തിരഞ്ഞെടുത്ത ഒന്നോ അതിലധികമോ ഫിൽട്ടറുകൾ ഉപയോഗിക്കാൻ നിങ്ങൾക്ക് അധികാരമില്ല." fee_calculated_on_transfer_through_all: "എല്ലാം" + fee_calculated_on_transfer_through_entire_orders: "മുഴുവൻ ഓർഡറുകളും %{distributor} വഴി" + tax_category_various: "വിവിധ" + fee_type: + payment_method: "പേയ്മെന്റ് ഇടപാട്" + shipping_method: "ഷിപ്മെന്റ്" fee_placements: supplier: "ഇൻകമിംഗ്" distributor: "ഔട്ട്ഗോയിംഗ്" coordinator: "കോർഡിനേറ്റർ" + tax_category_name: + shipping_instance_rate: "പ്ലാറ്റ്ഫോം നിരക്ക്" formats: csv: header: fee_type: "ഫീസ് തരം" + enterprise_name: "എന്റർപ്രൈസ് ഉടമ" fee_name: "ഫീസ് പേര്" customer_name: "ഉപഭോക്താവ്" + fee_placement: "ഫീസ് പ്ലേസ്മെന്റ്" + fee_calculated_on_transfer_through_name: "കൈമാറ്റം ചെയ്യുമ്പോൾ ഉള്ള ഫീസ് കണക്ക്" tax_category_name: "നികുതി വിഭാഗം" + total_amount: "$$ ആകെ" html: header: fee_type: "ഫീസ് തരം" + enterprise_name: "എന്റർപ്രൈസ് ഉടമ" fee_name: "ഫീസ് പേര്" customer_name: "ഉപഭോക്താവ്" + fee_placement: "ഫീസ് പ്ലേസ്മെന്റ്" + fee_calculated_on_transfer_through_name: "കൈമാറ്റം ചെയ്യുമ്പോൾ ഉള്ള ഫീസ് കണക്ക്" tax_category_name: "നികുതി വിഭാഗം" + total_amount: "$$ ആകെ" + invalid_filter_parameters: "ഈ റിപ്പോർട്ടിനായി നിങ്ങൾ തിരഞ്ഞെടുത്ത ഫിൽട്ടറുകൾ അസാധുവാണ്." report: none: "ഒന്നുമില്ല" + order: "ഓർഡർ ചെയ്യുക" + order_details: "ഓർഡർ വിശദാംശങ്ങൾ" + customer_details: "ഉപഭോക്തൃ വിശദാംശങ്ങൾ" + adjustments: "മാറ്റംവരുത്തലുകൾ" + payments: "പേയ്മെന്റുകൾ" + return_authorizations: "റിട്ടേൺ അനുമതികൾ" credit_owed: "കടപ്പെട്ടിരിക്കുന്നു" + new_adjustment: "പുതിയ മാറ്റംവരുത്തലുകൾ" payment: "പേയ്മെന്റ്" payment_method: "പണമടയ്ക്കൽ രീതി" + shipment: "ഷിപ്മെന്റ്" + shipment_inc_vat: "വാറ്റ് ഉൾപ്പെടെയുള്ള ഷിപ്മെന്റ്" + shipping_tax_rate: "ഷിപ്പിംഗ് നികുതി നിരക്ക്" category: "വിഭാഗം" import_date: "ഇറക്കുമതി തീയതി" delivery: "ഡെലിവറി" + temperature_controlled: "താപ നിയന്ത്രിതം" + new_product: "പുതിയ ഉൽപ്പന്നം" administration: "ഭരണകൂടം" + logged_in_as: "ലോഗിൻ ചെയ്തത്" account: "അക്കൗണ്ട്" logout: "ലോഗൗട്ട്" + date_range: "തീയതി പരിധി" + status: "സ്ഥിതി" + new: "പുതിയത്" + start: "ആരംഭിക്കുക" + end: "അവസാനിപ്പിക്കുക" + stop: "നിർത്തുക" + first: "ആദ്യം" previous: "മുന്നിലത്തേത്" + last: "അവസാനത്തെത്" + webhook_endpoints: + create: + success: വെബ്ഹൂക് എൻഡ്‌പോയിന്റ് വിജയകരമായി സൃഷ്‌ടിച്ചു + error: വെബ്ഹൂക് എൻഡ്‌പോയിന്റ് സൃഷ്‌ടിക്കുന്നതിൽ പരാജയപ്പെട്ടു + destroy: + success: വെബ്ഹൂക് എൻഡ്‌പോയിന്റ് വിജയകരമായി ഇല്ലാതാക്കി + error: വെബ്ഹൂക് എൻഡ്‌പോയിന്റ് ഇല്ലാതാക്കുന്നതിൽ പരാജയപ്പെട്ടു spree: + order_updated: "ഓർഡർ അപ്ഡേറ്റ് ചെയ്തു" + add_country: "രാജ്യം ചേർക്കുക" + add_state: "സ്റ്റേറ്റ് ചേർക്കുക" + adjustment: "മാറ്റംവരുത്തലുകൾ" all: "എല്ലാം" + associated_adjustment_closed: "അനുബന്ധ മാറ്റംവരുത്തലുകൾ അടച്ചു" + back_to_adjustments_list: "മാറ്റംവരുത്തലുകളിലേക്ക് മടങ്ങുക" + back_to_users_list: "ഉപയോക്താക്കളിലേക്ക് മടങ്ങുക" + back_to_zones_list: "സോണുകളിലേക്ക് മടങ്ങുക" + card_code: "കാർഡ് കോഡ്" card_number: "കാർഡ് നമ്പർ" category: "വിഭാഗം" + created_successfully: "വിജയകരമായി സൃഷ്ടിച്ചു" credit: "ക്രെഡിറ്റ്" + editing_tax_category: "നികുതി വിഭാഗം എഡിറ്റുചെയ്യുന്നു" + editing_tax_rate: "നികുതി നിരക്ക് എഡിറ്റുചെയ്യുന്നു" + editing_zone: "എഡിറ്റിംഗ് സോൺ" + expiration: "കാലഹരണപ്പെടൽ" + invalid_payment_provider: "പേയ്‌മെന്റ് ദാതാവ് അസാധുവാണ്" + items_cannot_be_shipped: "സാധനങ്ങൾ അയക്കാൻ കഴിയില്ല" + gateway_config_unavailable: "ഗേറ്റ്‌വേ കോൺഫിഗറേഷൻ ലഭ്യമല്ല" + gateway_error: "പേയ്‌മെന്റ് പരാജയപ്പെട്ടു" more: "കൂടുതൽ" + new_adjustment: "പുതിയ മാറ്റംവരുത്തൽ" + new_tax_category: "പുതിയ നികുതി വിഭാഗം" + new_taxon: "പുതിയ ടാക്സൺ" + new_user: "പുതിയ ഉപയോക്താവ്" no_pending_payments: "തീർപ്പാക്കാത്ത പേയ്‌മെന്റുകളൊന്നുമില്ല" none: "ഒന്നുമില്ല" not_found: "കണ്ടെത്തിയില്ല" + notice_messages: + variant_deleted: "വേരിയന്റ് ഇല്ലാതാക്കി" + payment_method_not_supported: "പേയ്‌മെന്റ് രീതി പിന്തുണയ്ക്കുന്നില്ല" + resend_authorization_email: "അനുമതി ഇമെയിൽ വീണ്ടും അയയ്ക്കുക" + rma_credit: "ആർഎംഎ ക്രെഡിറ്റ്" + refund: "റീഫണ്ട്" + server_error: "സെർവർ തകരാർ" + shipping_method_names: + UPS Ground: "യുപിഎസ് ഗ്രൗണ്ട്" + pick_up: "ഫാമിൽ നിന്നും പിക്കപ്പ് ചെയ്യുക" + delivery: "ഒപ്പിട്ടു, സീൽ ചെയ്തു, എത്തിച്ചു" + start_date: "ആരംഭിക്കുന്ന തീയതി" + successfully_removed: "വിജയകരമായി നീക്കം ചെയ്തു" + taxonomy_edit: "ടാക്സോണമി എഡിറ്റ്" + taxonomy_tree_error: "ടാക്സോണമി ട്രീ തകരാർ" + taxonomy_tree_instruction: "ടാക്സോണമി ട്രീ നിർദ്ദേശം" + tree: "ട്രീ" updating: "അപ്ഡേറ്റ് ചെയ്യുന്നു" + your_order_is_empty_add_product: "നിങ്ങളുടെ ഓർഡർ ശൂന്യമാണ്, മുകളിൽ ഒരു ഉൽപ്പന്നം തിരയുകയും ചേർക്കുകയും ചെയ്യുക" + add_product: "ഉൽപ്പന്നം ചേർക്കുക" + name_or_sku: "പേര് അല്ലെങ്കിൽ എസ്കെയു (ഉൽപ്പന്നത്തിന്റെ പേരിന്റെ ആദ്യ 4 പ്രതീകങ്ങളെങ്കിലും നൽകുക)" resend: "വീണ്ടും അയയ്ക്കുക" + back_to_orders_list: "ഓർഡർ ലിസ്റ്റിലേക്ക് മടങ്ങുക" + back_to_payments_list: "പേയ്‌മെന്റ് ലിസ്റ്റിലേക്ക് മടങ്ങുക" + return_authorizations: "റിട്ടേൺ അനുമതികൾ" + cannot_create_returns: "ഈ ഓർഡറിന് ഷിപ്പ് ചെയ്‌ത യൂണിറ്റുകൾ ഇല്ലാത്തതിനാൽ റിട്ടേണുകൾ സൃഷ്‌ടിക്കാനാവില്ല." + select_stock: "സ്റ്റോക്ക് തിരഞ്ഞെടുക്കുക" + location: "സ്ഥാനം" + count_on_hand: "കൈയിൽ എണ്ണുക" quantity: "അളവ്" on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" on_hand: "കയ്യിൽ" + package_from: "പാക്കേജ് എവിടെ നിന്നും-" + item_description: "ഇനത്തെ കുറിച്ചുള്ള വിശദീകരണം" price: "വില" total: "ആകെ" edit: "എഡിറ്റ് ചെയ്യുക" + split: "രണ്ടായി പിരിക്കുക" delete: "ഇല്ലാതാക്കുക" + cannot_set_shipping_method_without_address: "ഉപഭോക്തൃ വിശദാംശങ്ങൾ നൽകുന്നതുവരെ ഷിപ്പിംഗ് രീതി സജ്ജീകരിക്കാൻ കഴിയില്ല." + no_tracking_present: "ട്രാക്കിംഗ് വിശദാംശങ്ങളൊന്നും നൽകിയിട്ടില്ല." + tracking: "ട്രാക്കിംഗ്" + tracking_number: "ട്രാക്കിംഗ് നമ്പർ" + order_total: "ഓർഡർ ആകെ" + customer_details: "ഉപഭോക്തൃ വിശദാംശങ്ങൾ" + customer_details_updated: "ഉപഭോക്തൃ വിശദാംശങ്ങൾ അപ്ഡേറ്റ് ചെയ്തു" + customer_search: "ഉപഭോക്തൃ തിരയൽ" + choose_a_customer: "ഒരു ഉപഭോക്താവിനെ തിരഞ്ഞെടുക്കുക" account: "അക്കൗണ്ട്" billing_address: "ബില്ലിംഗ് വിലാസം" shipping_address: "ഷിപ്പിംഗ് വിലാസം" first_name: "ഒന്നാം പേര് " last_name: "പേരിന്റെ അവസാന ഭാഗം" + street_address: "സ്ട്രീറ്റ് വിലാസം" + street_address_2: "വിലാസം (തുടർച്ച)" city: "നഗരം" + zip: "പിൻകോഡ്" country: "രാജ്യം" - state: "സംസ്ഥാനം" + state: "സ്റ്റേറ്റ്" phone: "ഫോൺ" update: "അപ്ഡേറ്റ് ചെയ്യുക" + use_billing_address: "ബില്ലിംഗ് വിലാസം ഉപയോഗിക്കുക" + adjustments: "മാറ്റംവരുത്തലുകൾ" continue: "തുടരുക" + fill_in_customer_info: "ഉപഭോക്തൃ വിവരങ്ങൾ പൂരിപ്പിക്കുക" credit_card: "ക്രെഡിറ്റ് കാർഡ്" + new_payment: "പുതിയ പേയ്മെന്റ്" + capture: "ക്യാപ്‌ചർ" + capture_and_complete_order: "ക്യാപ്‌ചർ ചെയ്‌ത് ഓർഡർ പൂർത്തിയാക്കുക" + void: "ശൂന്യം" login: "ലോഗിൻ" password: "പാസ്സ്‌വേർഡ്" + signature: "കയ്യൊപ്പ്" + solution: "പരിഹാരം" + landing_page: "ലാൻഡിംഗ് പേജ്" + server: "സെർവർ" + test_mode: "ടെസ്റ്റ് മോഡ്" + logourl: "ലോഗോ യുആർഎൽ" + are_you_sure_delete: "ഈ റെക്കോർഡ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?" + confirm_delete: "ഇല്ലാതാക്കൽ സ്ഥിരീകരിക്കുക" + configurations: "കോൺഫിഗറേഷനുകൾ" general_settings: "പൊതുവായ ക്രമീകരണങ്ങൾ" + site_name: "സൈറ്റിന്റെ പേര്" + site_url: "സൈറ്റ് യുആർഎൽ" + default_seo_title: "ഡിഫോൾട്ട് എസ്ഇഓ ശീർഷകം" + default_meta_description: "ഡിഫോൾട്ട് മെറ്റാ വിവരണം" + default_meta_keywords: "ഡിഫോൾട്ട് മെറ്റാ കീവേഡുകൾ" + currency_decimal_mark: "കറൻസി ഡെസിമൽ മാർക്ക്" + currency_settings: "കറൻസി ക്രമീകരണങ്ങൾ" + currency_symbol_position: '"രൂപയിലുള്ള തുകയ്ക്ക് മുൻപാണോ അതോ ശേഷമാണോ കറൻസി ചിഹ്നം" ഇടേണ്ടത്?' + currency_thousands_separator: "കറൻസി സെപ്പറേറ്റർ ചിഹ്നം" + hide_cents: "പൈസ മറയ്ക്കുക" + display_currency: "കറൻസി പ്രദർശിപ്പിക്കുക" + choose_currency: "കറൻസി തിരഞ്ഞെടുക്കുക" + mail_method_settings: "മെയിൽ രീതി ക്രമീകരണങ്ങൾ" + mail_settings_notice_html: "ഡീബഗ്ഗിംഗിനായി മാത്രം ഇവിടെ വരുത്തിയ മാറ്റങ്ങൾ താൽക്കാലികമായിരിക്കും, ഭാവിയിൽ അത് പഴയപടിയായേക്കാം.
ഇൻസ്‌റ്റൻസിന്റെ രഹസ്യങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്‌ത് ഓഫ്-ഇൻസ്റ്റാൾ ഉപയോഗിച്ച് പ്രൊവിഷൻ ചെയ്‌ത് ശാശ്വതമായ മാറ്റങ്ങൾ വരുത്താനാകും. കൂടുതൽ വിവരങ്ങൾക്ക് ഓഎഫ്എൻ ഗ്ലോബൽ ടീമിനെ സമീപിക്കുക." + general: "പൊതുവായത്" + enable_mail_delivery: "മെയിൽ ഡെലിവറി പ്രവർത്തനക്ഷമമാക്കുക" + send_mails_as: "മെയിലുകൾ ഇങ്ങനെ അയയ്ക്കുക" + smtp_send_all_emails_as_from_following_address: "ഇനിപ്പറയുന്ന വിലാസത്തിൽ നിന്ന് എല്ലാ മെയിലുകളും അയയ്ക്കുക." + send_copy_of_all_mails_to: "എല്ലാ മെയിലുകളുടെയും പകർപ്പ് ഇതിലേക്ക് അയയ്ക്കുക" + smtp_send_copy_to_this_addresses: "ഈ വിലാസത്തിലേക്ക് എല്ലാ ഔട്ട്‌ഗോയിംഗ് മെയിലുകളുടെയും ഒരു പകർപ്പ് അയയ്ക്കുന്നു. ഒന്നിലധികം വിലാസങ്ങൾ കോമ ഉപയോഗിച്ച് വേർതിരിക്കുക." tax_categories: "നികുതി വിഭാഗങ്ങൾ" + listing_tax_categories: "നികുതി വിഭാഗങ്ങളുടെ പട്ടിക" + back_to_tax_categories_list: "നികുതി വിഭാഗങ്ങളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" tax rate: "നികുതി നിരക്കുകൾ" + new_tax_rate: "പുതിയ നികുതി നിരക്ക്" tax_category: "നികുതി വിഭാഗം" tax_rates: "നികുതി നിരക്കുകൾ" rate: "നിരക്ക്" + tax_rate_amount_explanation: "കണക്കുകൂട്ടലുകളെ സഹായിക്കുന്നതിനുള്ള ഒരു ദശാംശ തുകയാണ് നികുതി നിരക്കുകൾ, (അതായത് നികുതി നിരക്ക് 5% ആണെങ്കിൽ 0.05 നൽകുക)" + included_in_price: "വിലയിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ട്" + show_rate_in_label: "ലേബലിൽ നിരക്ക് കാണിക്കുക" + back_to_tax_rates_list: "നികുതി നിരക്കുകളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" tax_settings: "നികുതി ക്രമീകരണങ്ങൾ" + zones: "സോണുകൾ" + new_zone: "പുതിയ സോൺ" + default_tax: "സ്ഥിരസ്ഥിതി നികുതി" + default_tax_zone: "സ്ഥിരസ്ഥിതി നികുതി സോൺ" + country_based: "രാജ്യം അടിസ്ഥാനമാക്കിയുള്ളത്" + state_based: "സംസ്ഥാനം അടിസ്ഥാനമാക്കിയുള്ളത്" + countries: "രാജ്യങ്ങൾ" + listing_countries: "രാജ്യങ്ങളുടെ പട്ടിക" + iso_name: "ഐഎസ്ഓ നാമം" + states_required: "ആവശ്യമുള്ള സംസ്ഥാനങ്ങൾ" + editing_country: "രാജ്യം എഡിറ്റ് ചെയ്യുന്നു" + back_to_countries_list: "രാജ്യങ്ങളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" + states: "സംസ്ഥാനങ്ങൾ" + abbreviation: "ചുരുക്കെഴുത്ത്" + new_state: "പുതിയ സംസ്ഥാനം" payment_methods: "പേയ്മെന്റ് രീതികൾ" + taxonomies: "ടാക്സോണമികൾ" + new_taxonomy: "പുതിയ ടാക്സോണമി" + back_to_taxonomies_list: "ടാക്‌സോണമി ലിസ്റ്റിലേക്ക് മടങ്ങുക" shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" shipping_method: "ഷിപ്പിംഗ് രീതി" + shipment: "കയറ്റുമതി" payment: "പേയ്മെന്റ്" - status: "പദവി" + status: "സ്ഥിതി" shipping_categories: "ഷിപ്പിംഗ് വിഭാഗങ്ങൾ" + new_shipping_category: "പുതിയ ഷിപ്പിംഗ് വിഭാഗം" + back_to_shipping_categories: "ഷിപ്പിംഗ് വിഭാഗങ്ങളിലേക്ക് മടങ്ങുക" + editing_shipping_category: "ഷിപ്പിംഗ് വിഭാഗം എഡിറ്റുചെയ്യുന്നു" name: "പേര്" description: "വിവരണം" type: "ഇനം" + default: "സ്ഥിരസ്ഥിതി" calculator: "കാൽക്കുലേറ്റർ" + zone: "സോൺ" display: "പ്രദർശിപ്പിക്കുക" + environment: "പരിസ്ഥിതി" active: "സജീവമാണ്" nore: "കൂടുതൽ" - create: "സൃഷ്ടിക്കാൻ" + no_results: "ഫലങ്ങളൊന്നുമില്ല" + create: "ഉണ്ടാക്കുക" + loading: "ലോഡിംഗ്" + flat_percent: "ശതമാനം" + per_kg: "കിലോയ്ക്ക്" amount: "തുക" + currency: "കറൻസി" + first_item: "ആദ്യ ഇനത്തിന്റെ വില" + additional_item: "അധിക ഇനത്തിന്റെ വില" + max_items: "പരമാവധി ഇനങ്ങൾ" + minimal_amount: "കുറഞ്ഞ തുക" + normal_amount: "സാധാരണ തുക" + discount_amount: "കിഴിവ് തുക" + no_images_found: "ചിത്രങ്ങളൊന്നും കണ്ടെത്തിയില്ല" + new_image: "പുതിയ ചിത്രം" + filename: "ഫയലിന്റെ പേര്" + alt_text: "ഇതര വാചകം" + thumbnail: "ലഘുചിത്രം" + back_to_images_list: "ചിത്രങ്ങളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" email: ഇമെയിൽ + account_updated: "അക്കൗണ്ട് അപ്ഡേറ്റ് ചെയ്തു!" + email_updated: "പുതിയ ഇമെയിൽ സ്ഥിരീകരിച്ചുകഴിഞ്ഞാൽ അക്കൗണ്ട് അപ്‌ഡേറ്റ് ചെയ്യും." + show_api_key_view_toggled: "ഷോ എപിഐ കീ വീക്ഷണം മാറ്റി!" + my_account: "എന്റെ അക്കൗണ്ട്" date: "തീയതി" + time: "സമയം" + inventory_error_flash_for_insufficient_quantity: "നിങ്ങളുടെ കാർട്ടിലെ ഒരു ഇനം ലഭ്യമല്ലാതായി." inventory: ഇൻവെന്ററി zipcode: പിൻ കോഡ് + weight: ഭാരം (കിലോ അല്ലെങ്കിൽ പൗണ്ട്) + error_user_destroy_with_orders: "പൂർത്തിയാക്കിയ ഓർഡറുകൾ ഉള്ള ഉപയോക്താക്കളെ ഡിലീറ്റ് ചെയ്യാൻ പാടില്ല" + cannot_create_payment_without_payment_methods: "പേയ്‌മെന്റ് രീതികളൊന്നും നിർവചിക്കാതെ നിങ്ങൾക്ക് ഒരു ഓർഡറിനായി പേയ്‌മെന്റ് ഉണ്ടാക്കാനാവില്ല." + please_define_payment_methods: "ദയവായി ആദ്യം ചില പേയ്മെന്റ് രീതികൾ നിർവ്വചിക്കുക." + options: "ഓപ്ഷനുകൾ" + has_no_shipped_units: "ഷിപ്പ് ചെയ്ത യൂണിറ്റുകൾ ഇല്ല" successfully_created: '%{resource} വിജയകരമായി സൃഷ്‌ടിച്ചു!' successfully_updated: '%{resource} വിജയകരമായി അപ്‌ഡേറ്റ് ചെയ്‌തു!' payment_method: "പണമടയ്ക്കൽ രീതി" + payment_processing_failed: "പേയ്‌മെന്റ് പ്രോസസ്സ് ചെയ്യാൻ കഴിഞ്ഞില്ല, നിങ്ങൾ നൽകിയ വിശദാംശങ്ങൾ പരിശോധിക്കുക" + not_available: "ബാധകമല്ല" sku: "എസ്.കെ.യു" + there_are_no_items_for_this_order: "ഈ ഓർഡറിന് ഇനങ്ങളൊന്നുമില്ല." + order_populator: + out_of_stock: '%{item} സ്റ്റോക്കില്ല.' actions: update: "അപ്ഡേറ്റ് ചെയ്യുക" cancel: "റദ്ദാക്കുക" shared: + error_messages: + errors_prohibited_this_record_from_being_saved: + one: "1 തകരാർ ഈ റെക്കോർഡ് സേവ് ചെയ്യുന്നത് തടഞ്ഞു:" + few: "%{count} തകരാറുകൾ ഈ റെക്കോർഡ് സേവ് ചെയ്യുന്നത് തടഞ്ഞു:" + many: "%{count} തകരാറുകൾ ഈ റെക്കോർഡ് സേവ് ചെയ്യുന്നത് തടഞ്ഞു:" + other: "%{count} തകരാറുകൾ ഈ റെക്കോർഡ് സേവ് ചെയ്യുന്നത് തടഞ്ഞു:" + there_were_problems_with_the_following_fields: "ഇനിപ്പറയുന്ന ഫീൽഡുകളിൽ പ്രശ്‌നങ്ങളുണ്ടായി" payments_list: + date_time: "തീയതി / സമയം" amount: "തുക" payment_method: "പണമടയ്ക്കൽ രീതി" payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" errors: messages: + included_price_validation: "നിങ്ങൾ ഒരു ഡിഫോൾട്ട് ടാക്സ് സോൺ സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ തിരഞ്ഞെടുക്കാൻ കഴിയില്ല" blank: "ശൂന്യമായിരിക്കാൻ കഴിയില്ല" + invalid_instagram_url: "ഉപയോക്തൃ നാമം മാത്രമായിരിക്കണം ഉദാ. പ്രൊഫ" + layouts: + admin: + login_nav: + header: + store: സ്റ്റോർ + validation: + must_be_int: "ഒരു പൂർണ്ണസംഖ്യ ആയിരിക്കണം" admin: + mail_methods: + send_testmail: "ടെസ്റ്റ് ഇമെയിൽ അയയ്ക്കുക" + testmail: + delivery_success: "ടെസ്റ്റ് ഇമെയിൽ അയച്ചു." + error: "ടെസ്റ്റ് ഇമെയിൽ അയയ്‌ക്കാൻ ശ്രമിക്കുമ്പോൾ ഒരു തകരാറ്‌ സംഭവിച്ചു." + unit_price_tooltip: "വ്യത്യസ്ത ഉൽപ്പന്നങ്ങളും പാക്കേജിംഗ് വലുപ്പങ്ങളും തമ്മിലുള്ള വിലകൾ എളുപ്പത്തിൽ താരതമ്യം ചെയ്യാൻ നിങ്ങളുടെ ഉപഭോക്താക്കളെ അനുവദിക്കുന്നതിലൂടെ യൂണിറ്റ് വില സുതാര്യത വർദ്ധിപ്പിക്കുന്നു. ശ്രദ്ധിക്കുക, കടയുടെ മുൻവശത്ത് പ്രദർശിപ്പിക്കുന്ന അവസാന യൂണിറ്റ് വിലയിൽ നികുതിയും ഫീസും ഉൾപ്പെടുന്നതിനാൽ വ്യത്യാസമുണ്ടാകാം." subscriptions: number: "നമ്പർ" tab: @@ -3075,111 +3903,263 @@ ml: bulk_order_management: "ബൾക്ക് ഓർഡർ മാനേജ്മെന്റ്" subscriptions: "സബ്സ്ക്രിപ്ഷനുകൾ" products: "ഉൽപ്പന്നങ്ങൾ" + option_types: "ഓപ്ഷൻ തരങ്ങൾ" properties: "പ്രോപ്പർട്ടികൾ" variant_overrides: "ഇൻവെന്ററി" reports: "റിപ്പോർട്ടുകൾ" + configuration: "കോൺഫിഗറേഷൻ" users: "ഉപയോക്താക്കൾ" roles: "കർത്തവ്യങ്ങൾ" order_cycles: "ഓർഡർ സൈക്കിളുകൾ" enterprises: "സംരംഭങ്ങൾ" + enterprise_relationships: "അനുമതികൾ" customers: "ഉപഭോക്താക്കൾ" groups: "ഗ്രൂപ്പുകൾ" oidc_settings: "ഓഐഡിസി ക്രമീകരണങ്ങൾ" + product_properties: + index: + inherits_properties_checkbox_hint: "%{supplier} ൽ നിന്ന് പ്രോപ്പർട്ടികൾ അവകാശമാക്കണോ? (മുകളിൽ അസാധുവായില്ലെങ്കിൽ)" + add_product_properties: "ഉൽപ്പന്ന ഗുണവിശേഷങ്ങൾ ചേർക്കുക" properties: index: - properties: "പ്രോപ്പർട്ടികൾ" + properties: "ഗുണവിശേഷങ്ങൾ" + new_property: "പുതിയ പ്രോപ്പർട്ടി" name: "പേര്" + presentation: "അവതരണം" + new: + new_property: "പുതിയ പ്രോപ്പർട്ടി" + edit: + editing_property: "പ്രോപ്പർട്ടി എഡിറ്റ് ചെയ്യുന്നു" + back_to_properties_list: "പ്രോപ്പർട്ടീസ് ലിസ്റ്റിലേക്ക് മടങ്ങുക" form: name: "പേര്" + presentation: "അവതരണം" return_authorizations: index: - status: "പദവി" + new_return_authorization: "പുതിയ റിട്ടേൺ അനുമതി" + return_authorizations: "റിട്ടേൺ അനുമതികൾ" + back_to_orders_list: "ഓർഡർ ലിസ്റ്റിലേക്ക് മടങ്ങുക" + rma_number: "ആർഎംഎ നമ്പർ" + status: "സ്ഥിതി" amount: "തുക" + cannot_create_returns: "ഈ ഓർഡറിന് ഷിപ്പ് ചെയ്‌ത യൂണിറ്റുകൾ ഇല്ലാത്തതിനാൽ റിട്ടേണുകൾ സൃഷ്‌ടിക്കാനാവില്ല." continue: "തുടരുക" new: + new_return_authorization: "പുതിയ റിട്ടേൺ അനുമതി" + back_to_return_authorizations_list: "റിട്ടേൺ അനുമതി ലിസ്റ്റിലേക്ക് മടങ്ങുക" continue: "തുടരുക" edit: + receive: "സ്വീകരിക്കുക" are_you_sure: "നിങ്ങൾക്ക് ഉറപ്പാണോ?" + return_authorization: "റിട്ടേൺ അനുമതി" form: product: "ഉൽപ്പന്നം" + quantity_shipped: "അളവ് അയച്ചു" + quantity_returned: "അളവ് തിരിച്ചയച്ചു" + return_quantity: "തിരിച്ചയച്ച അളവ്" amount: "തുക" - orders: + rma_value: "ആർഎംഎ മൂല്യം" + reason: "കാരണം" + stock_location: "സ്റ്റോക്ക് സ്ഥാനം" + states: + authorized: "അധികാരപ്പെടുത്തിയത്" + received: "ലഭിച്ചു" + canceled: "റദ്ദാക്കി" + line_items: index: + results_found: "%{number} ഫലങ്ങൾ കണ്ടെത്തി." + viewing: "%{start} മുതൽ %{end} വരെ കാണുന്നു." + orders: + add_product: + cannot_add_item_to_canceled_order: "റദ്ദാക്കിയ ഓർഡറിലേക്ക് ഇനം ചേർക്കാൻ കഴിയില്ല" + include_out_of_stock_variants: "സ്റ്റോക്ക് ലഭ്യമല്ലാത്ത വേരിയന്റുകൾ ഉൾപ്പെടുത്തുക" + index: + listing_orders: "ഓർഡറുകളുടെ പട്ടിക" new_order: "പുതിയ ഓർഡർ" + capture: "പിടിച്ചെടുക്കുക" ship: "കപ്പൽ" edit: "എഡിറ്റ് ചെയ്യുക" + order_not_updated: "ഓർഡർ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിഞ്ഞില്ല" + note: "കുറിപ്പ്" + first: "ആദ്യം" + last: "അവസാനത്തെത്" previous: "മുന്നിലത്തേത്" next: "അടുത്തത്" + loading: "ലോഡിംഗ്" + no_orders_found: "ഓർഡറുകളൊന്നും കണ്ടെത്തിയില്ല" + results_found: "%{number} ഫലങ്ങൾ കണ്ടെത്തി." + viewing: "%{start} മുതൽ %{end} വരെ കാണുന്നു." + print_invoices: "ഇൻവോയ്സുകൾ അച്ചടിക്കുക" + cancel_orders: "ഓർഡറുകൾ റദ്ദാക്കുക" resend_confirmation: "സ്ഥിരീകരണം അയയ്ക്കുക" + resend_confirmation_confirm_html: "ഇത് സ്ഥിരീകരണ ഇമെയിൽ ഉപഭോക്താവിന് വീണ്ടും അയയ്ക്കും.
നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" + send_invoice: "ഇൻവോയ്‌സുകൾ അയയ്‌ക്കുക" + send_invoice_confirm_html: "തിരഞ്ഞെടുത്ത എല്ലാ പൂർണ്ണമായ ഓർഡറുകൾക്കും ഇത് ഉപഭോക്തൃ ഇൻവോയ്‌സുകൾ ഇമെയിൽ ചെയ്യും.
നിങ്ങൾക്ക് തുടരണമെന്ന് തീർച്ചയാണോ?" + selected: + zero: "ഓർഡർ ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല" + one: "1 ഓർഡർ തിരഞ്ഞെടുത്തു" + other: "%{count} ഓർഡറുകൾ തിരഞ്ഞെടുത്തു" sortable_header: payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" shipment_state: "ഷിപ്പിംഗ് സ്റ്റേറ്റ്" completed_at: "പൂർത്തിയാക്കിയത്" number: "നമ്പർ" - state: "സംസ്ഥാനം" + state: "സ്റ്റേറ്റ്" email: "ഉപഭോക്താവിന്റെ ഇ-മെയിൽ" invoice: + issued_on: "പ്രസിദ്ധീകരിച്ചത്" tax_invoice: "നികുതി ഇൻവോയ്സ്" code: "കോഡ്" + from: "നിന്ന്" + to: "-നുള്ള ബിൽ" shipping: "ഷിപ്പിംഗ്" + order_number: "ഓർഡർ നമ്പർ" + invoice_number: "ഇൻവോയ്സ് നമ്പർ" payments_list: + date_time: "തീയതി / സമയം" payment_method: "പണമടയ്ക്കൽ രീതി" + payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" amount: "തുക" note: note_label: "കുറിപ്പ്:" no_note_present: "കുറിപ്പൊന്നും നൽകിയിട്ടില്ല." form: distribution_fields: - title: "വിതരണ" + title: "വിതരണം" + distributor: "വിതരണക്കാരൻ:" + order_cycle: "ഓർഡർ സൈക്കിൾ:" + line_item_adjustments: "ലൈൻ ഇനം മാറ്റംവരുത്തലുകൾ" + order_adjustments: "ഓർഡർ മാറ്റംവരുത്തലുകൾ" + order_total: "ഓർഡർ ആകെ" overview: + enterprises_header: + ofn_with_tip: എന്റർപ്രൈസസ് എന്നത് പ്രൊഡ്യൂസർമാർ കൂടാതെ/അല്ലെങ്കിൽ ഹബുകൾ ആണ്, മാത്രമല്ല അത് ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലെ ഓർഗനൈസേഷന്റെ അടിസ്ഥാന യൂണിറ്റുമാണ്. + enterprise_row: + has_no_enterprise_fees: "എന്റർപ്രൈസ് ഫീസ് ഇല്ല" + has_no_payment_methods: "പേയ്‌മെന്റ് രീതികളൊന്നുമില്ല" + has_no_shipping_methods: "ഷിപ്പിംഗ് രീതികളൊന്നുമില്ല" + products: + products_tip: "ഓപ്പൺ ഫുഡ് നെറ്റ്‌വർക്കിലൂടെ നിങ്ങൾ വിൽക്കുന്ന ഉൽപ്പന്നങ്ങൾ." + active_products: + zero: "നിങ്ങൾക്ക് സജീവ ഉൽപ്പന്നങ്ങളൊന്നുമില്ല." + one: "നിങ്ങൾക്ക് ഒരു സജീവ ഉൽപ്പന്നമുണ്ട്" + few: "നിങ്ങൾക്ക് %{count} സജീവ ഉൽപ്പന്നങ്ങളുണ്ട്" + many: "നിങ്ങൾക്ക് %{count} സജീവ ഉൽപ്പന്നങ്ങളുണ്ട്" + other: "നിങ്ങൾക്ക് %{count} സജീവ ഉൽപ്പന്നങ്ങളുണ്ട്" order_cycles: order_cycles: "ഓർഡർ സൈക്കിളുകൾ" + order_cycles_tip: "നിങ്ങളുടെ ഉൽപ്പന്നങ്ങൾ ഉപഭോക്താക്കൾക്ക് എപ്പോൾ, എവിടെയാണ് ലഭ്യമാകുന്നതെന്ന് ഓർഡർ സൈക്കിളുകൾ നിർണ്ണയിക്കുന്നു." + you_have_active: + zero: "നിങ്ങൾക്ക് സജീവമായ ഓർഡർ സൈക്കിളുകളൊന്നുമില്ല." + one: "നിങ്ങൾക്ക് ഒരു സജീവ ഓർഡർ സൈക്കിൾ ഉണ്ട്." + few: "നിങ്ങൾക്ക് %{count} സജീവമായ ഓർഡർ സൈക്കിളുകൾ ഉണ്ട്." + many: "നിങ്ങൾക്ക് %{count} സജീവമായ ഓർഡർ സൈക്കിളുകൾ ഉണ്ട്." + other: "നിങ്ങൾക്ക് %{count} സജീവമായ ഓർഡർ സൈക്കിളുകൾ ഉണ്ട്." + manage_order_cycles: "ഓർഡർ സൈക്കിളുകൾ നിയന്ത്രിക്കുക" + version: + view_all_releases: എല്ലാ റിലീസുകളും കാണുക shipping_methods: index: shipping_methods: "ഷിപ്പിംഗ് രീതികൾ" + new_shipping_method: "പുതിയ ഷിപ്പിംഗ് രീതി" name: "പേര്" products_distributor: "വിതരണക്കാരൻ" + zone: "സോൺ" calculator: "കാൽക്കുലേറ്റർ" display: "പ്രദർശിപ്പിക്കുക" + both: "ചെക്ക്ഔട്ടും ബാക്ക് ഓഫീസും" back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + no_shipping_methods_found: "ഷിപ്പിംഗ് രീതികളൊന്നും കണ്ടെത്തിയില്ല" + new: + new_shipping_method: "പുതിയ ഷിപ്പിംഗ് രീതി" + back_to_shipping_methods_list: "ഷിപ്പിംഗ് രീതികളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" + edit: + editing_shipping_method: "ഷിപ്പിംഗ് രീതി എഡിറ്റുചെയ്യുന്നു" + new: "പുതിയത്" + back_to_shipping_methods_list: "ഷിപ്പിംഗ് രീതികളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" form: categories: "വിഭാഗങ്ങൾ" tax_category: "നികുതി വിഭാഗം" + zones: "സോണുകൾ" + both: "ചെക്ക്ഔട്ടും ബാക്ക് ഓഫീസും" back_end: "ബാക്ക് ഓഫീസ് മാത്രം" + deactivation_warning: "ഒരു ഷിപ്പിംഗ് രീതി ഡീ-ആക്ടിവേറ്റ് ചെയ്യുന്നത് നിങ്ങളുടെ ലിസ്റ്റിൽ നിന്ന് ഷിപ്പിംഗ് രീതി അപ്രത്യക്ഷമാക്കും. പകരമായി, 'ഡിസ്‌പ്ലേ' എന്ന ഓപ്‌ഷൻ 'ബാക്ക് ഓഫീസ് മാത്രം' ആയി സജ്ജീകരിച്ച് നിങ്ങൾക്ക് ചെക്ക്ഔട്ട് പേജിൽ നിന്ന് ഒരു ഷിപ്പിംഗ് രീതി മറയ്ക്കാം." payment_methods: index: payment_methods: "പേയ്മെന്റ് രീതികൾ" + new_payment_method: "പുതിയ പേയ്‌മെന്റ് രീതി" name: "പേര്" products_distributor: "വിതരണക്കാരൻ" + provider: "ദാതാവ്" + environment: "പരിസ്ഥിതി" display: "പ്രദർശിപ്പിക്കുക" active: "സജീവമാണ്" + both: "രണ്ടും" back_end: "ബാക്ക് ഓഫീസ് മാത്രം" active_yes: "അതെ" active_no: "ഇല്ല" + no_payment_methods_found: "പേയ്‌മെന്റ് രീതികളൊന്നും കണ്ടെത്തിയില്ല" + new: + new_payment_method: "പുതിയ പേയ്‌മെന്റ് രീതി" + back_to_payment_methods_list: "പേയ്‌മെന്റ് രീതികളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" + edit: + new: "പുതിയത്" + editing_payment_method: "പേയ്‌മെന്റ് രീതി എഡിറ്റുചെയ്യുന്നു" + back_to_payment_methods_list: "പേയ്‌മെന്റ് രീതികളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" stripe_connect: enterprise_select_placeholder: തിരഞ്ഞെടുക്കുക... + loading_account_information_msg: സ്ട്രൈപ്പിൽ നിന്ന് അക്കൗണ്ട് വിവരങ്ങൾ ലോഡുചെയ്യുന്നു, ദയവായി കാത്തിരിക്കൂ... + stripe_disabled_msg: സ്ട്രൈപ്പ് പേയ്‌മെന്റുകൾ സിസ്റ്റം അഡ്മിനിസ്ട്രേറ്റർ പ്രവർത്തനരഹിതമാക്കി. + request_failed_msg: ക്ഷമിക്കണം. സ്ട്രൈപ്പ് ഉപയോഗിച്ച് അക്കൗണ്ട് വിശദാംശങ്ങൾ പരിശോധിക്കാൻ ശ്രമിക്കുമ്പോൾ എന്തോ തകരാർ സംഭവിച്ചു... account_missing_msg: ഈ എന്റർപ്രൈസസിന് സ്ട്രൈപ്പ് അക്കൗണ്ട് നിലവിലില്ല. - status: പദവി + connect_one: ഒന്ന് ബന്ധിപ്പിക്കുക + access_revoked_msg: ഈ സ്‌ട്രൈപ്പ് അക്കൗണ്ടിലേക്കുള്ള ആക്‌സസ് റദ്ദാക്കി, നിങ്ങളുടെ അക്കൗണ്ട് വീണ്ടും കണക്‌റ്റ് ചെയ്യുക. + status: സ്ഥിതി + connected: ബന്ധിപ്പിച്ചു account_id: അക്കൗണ്ട് ഐഡി business_name: ബിസിനസ്സ് പേര് charges_enabled: ചാർജുകൾ പ്രവർത്തനക്ഷമമാക്കി form: name: "പേര്" description: "വിവരണം" + environment: "പരിസ്ഥിതി" display: "പ്രദർശിപ്പിക്കുക" active: "സജീവമാണ്" active_yes: "അതെ" active_no: "ഇല്ല" + both: "ചെക്ക്ഔട്ടും ബാക്ക് ഓഫീസും" back_end: "ബാക്ക് ഓഫീസ് മാത്രം" tags: "ടാഗുകൾ" + deactivation_warning: "പേയ്‌മെന്റ് രീതി ഡീ-ആക്ടിവേറ്റ് ചെയ്യുന്നത് നിങ്ങളുടെ ലിസ്റ്റിൽ നിന്ന് പേയ്‌മെന്റ് രീതി അപ്രത്യക്ഷമാക്കും. പകരമായി, 'ഡിസ്‌പ്ലേ'എന്ന ഓപ്‌ഷൻ 'ബാക്ക് ഓഫീസ് മാത്രം' ആയി സജ്ജീകരിച്ച് നിങ്ങൾക്ക് ചെക്ക്ഔട്ട് പേജിൽ നിന്ന് ഒരു പേയ്‌മെന്റ് രീതി മറയ്ക്കാം." + providers: + provider: "ദാതാവ്" + check: "പണം/ഇഎഫ്ടി/ മുതലായവ (ഓട്ടോമാറ്റിക് മൂല്യനിർണ്ണയം ആവശ്യമില്ലാത്ത പേയ്‌മെന്റുകൾ)" + pin: "പേയ്‌മെന്റുകൾ പിൻ ചെയ്യുക" + paypalexpress: "പേപാൽ എക്സ്പ്രസ്" + stripeconnect: "സ്‌ട്രൈപ്പ്" + stripesca: "സ്‌ട്രൈപ്പ് എസ്സിഎ" + payments: + source_forms: + stripe: + error_saving_payment: പേയ്‌മെന്റ് സംരക്ഷിക്കുന്നതിൽ തകരാറ്‌ + submitting_payment: പേയ്‌മെന്റ് സമർപ്പിക്കുന്നു... + paypal: + no_payment_via_admin_backend: പേപാൽ പേയ്‌മെന്റുകൾ ബാക്ക് ഓഫീസിൽ ക്യാപ്‌ചർ ചെയ്യാൻ കഴിയില്ല products: + image_upload_error: "ദയവായി JPG, PNG, GIF, SVG അല്ലെങ്കിൽ WEBP ഫോർമാറ്റിൽ ചിത്രം അപ്‌ലോഡ് ചെയ്യുക." + image_not_processable: "ഇമേജ് അറ്റാച്ച്‌മെന്റ് ഒരു സാധുവായ ചിത്രമല്ല." new: + title: "പുതിയ ഉൽപ്പന്നം" + new_product: "പുതിയ ഉൽപ്പന്നം" supplier: "വിതരണക്കാരൻ" + supplier_select_placeholder: "ഒരു വിതരണക്കാരനെ തിരഞ്ഞെടുക്കുക" product_name: "ഉത്പന്നത്തിന്റെ പേര്" units: "യൂണിറ്റ് വലിപ്പം" value: "മൂല്യം" unit_name: "യൂണിറ്റിന്റെ പേര്" price: "വില" + unit_price: "യൂണിറ്റ് വില" + unit_price_legend: "ഇനത്തിന്റെ വിലയെ അടിസ്ഥാനമാക്കി കണക്കാക്കുന്നു" on_hand: "കയ്യിൽ" on_demand: "ആവശ്യപ്പെടുന്നതനുസരിച്ച്" product_description: "ഉൽപ്പന്ന വിവരണം" @@ -3188,6 +4168,10 @@ ml: index: header: title: ഉൽപ്പന്നങ്ങൾ മൊത്തമായി തിരുത്തുക + indicators: + title: ഉൽപ്പന്നങ്ങൾ ലോഡുചെയ്യുന്നു + no_products: "ഇതുവരെ ഉൽപ്പന്നങ്ങളൊന്നുമില്ല. എന്തുകൊണ്ടാണ് നിങ്ങൾ ഒന്നും ചേർക്കാത്തത്?" + no_results: "ക്ഷമിക്കണം, ഫലങ്ങളൊന്നും പൊരുത്തപ്പെടുന്നില്ല" products_head: name: പേര് unit: യൂണിറ്റ് @@ -3197,40 +4181,74 @@ ml: inherits_properties?: സ്വത്തുക്കൾ അവകാശമാക്കുന്നുണ്ടോ? av_on: "Av. ഓൺ" import_date: "ഇറക്കുമതി തീയതി" + products_variant: + variant_has_n_overrides: "ഈ വേരിയന്റിന് %{n} തിരുത്തൽ(കൾ) ഉണ്ട്" + new_variant: "പുതിയ വേരിയന്റ്" product_name: ഉത്പന്നത്തിന്റെ പേര് primary_taxon_form: product_category: ഉൽപ്പന്ന വിഭാഗം + group_buy_form: + group_buy: "ഗ്രൂപ്പ് വാങ്ങൽ?" + bulk_unit_size: ബൾക്ക് യൂണിറ്റ് വലിപ്പം display_as: display_as: പ്രദർശന മാർഗ്ഗം + clone: + success: ഉൽപ്പന്നം ക്ലോൺ ചെയ്തു reports: table: select_and_search: "നിങ്ങളുടെ ഡാറ്റ ആക്‌സസ് ചെയ്യാൻ ഫിൽട്ടറുകൾ തിരഞ്ഞെടുത്ത് %{option} ക്ലിക്ക് ചെയ്യുക." + customer_names_message: + customer_names_tip: "നിങ്ങൾ വിതരണം ചെയ്ത ഓർഡറുകൾക്കായി ഉപഭോക്തൃ പേരുകൾ മറച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങൾക്ക് വിതരണക്കാരനെ ബന്ധപ്പെടുകയും ഉപഭോക്തൃ പേരുകൾ കാണാൻ വിതരണക്കാരെ അനുവദിക്കുന്നതിന് അവരുടെ ഷോപ്പ് മുൻഗണനകൾ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിയുമോ എന്ന് ചോദിക്കുകയും ചെയ്യാം." + products_and_inventory: + all_products: + message: "റിപ്പോർട്ടുചെയ്ത സ്റ്റോക്ക് ലെവലുകൾ വിതരണക്കാരന്റെ ഉൽപ്പന്ന ലിസ്റ്റുകളിൽ നിന്ന് മാത്രമാണെന്ന കാര്യം ശ്രദ്ധിക്കുക. നിങ്ങളുടെ സ്റ്റോക്ക് അളവ് നിയന്ത്രിക്കാൻ നിങ്ങൾ ഇൻവെന്ററി ഉപയോഗിക്കുകയാണെങ്കിൽ ഈ റിപ്പോർട്ടിൽ ഈ മൂല്യങ്ങൾ അവഗണിക്കപ്പെടും." users: index: + listing_users: "ഉപയോക്താക്കളെ ലിസ്റ്റുചെയ്യുന്നു" + new_user: "പുതിയ ഉപയോക്താവ്" user: "ഉപയോക്താവ്" enterprise_limit: "എന്റർപ്രൈസ് പരിധി" search: "തിരയുക" email: "ഇമെയിൽ" edit: + editing_user: "ഉപയോക്താവ് എഡിറ്റ് ചെയ്യുന്നു" + back_to_users_list: "ഉപയോക്താക്കളുടെ പട്ടികയിലേക്ക് മടങ്ങുക" general_settings: "പൊതുവായ ക്രമീകരണങ്ങൾ" form: + disabled: "പ്രവർത്തനരഹിതമാണോ?" email: "ഇമെയിൽ" roles: "കർത്തവ്യങ്ങൾ" enterprise_limit: "എന്റർപ്രൈസ് പരിധി" + confirm_password: "പാസ്സ്‌വേർഡ് സ്ഥിരീകരിക്കുക" password: "പാസ്സ്‌വേർഡ്" + locale: "ഭാഷ" + email_confirmation: + confirmation_pending: "ഇമെയിൽ സ്ഥിരീകരണം തീർച്ചപ്പെടുത്തിയിട്ടില്ല. ഞങ്ങൾ ഒരു സ്ഥിരീകരണ ഇമെയിൽ %{address} ലേക്ക് അയച്ചു." variants: index: sku: "എസ്.കെ.യു" price: "വില" + options: "ഓപ്ഷനുകൾ" + no_results: "ഫലങ്ങളൊന്നുമില്ല" + option_types: "ഓപ്ഷൻ തരങ്ങൾ" + option_values: "ഓപ്ഷൻ മൂല്യങ്ങൾ" and: "ഒപ്പം" + new_variant: "പുതിയ വേരിയന്റ്" + show_active: "സജീവമായവ കാണിക്കുക" + show_deleted: "ഇല്ലാതാക്കിയവ കാണിക്കുക" + new: + new_variant: "പുതിയ വേരിയന്റ്" form: sku: "എസ്.കെ.യു" price: "വില" + unit_price: "യൂണിറ്റ് വില" display_as: "പ്രദർശന മാർഗ്ഗം" display_name: "പ്രദർശന നാമം" + display_as_placeholder: 'ഉദാ. 2 കി.ഗ്രാം' + display_name_placeholder: 'ഉദാ. തക്കാളി' autocomplete: out_of_stock: "സ്റ്റോക്കില്ല" - producer_name: "നിർമ്മാതാവ്" + producer_name: "പ്രൊഡ്യൂസർ" unit: "യൂണിറ്റ്" shared: configuration_menu: @@ -3239,59 +4257,303 @@ ml: name: "പേര്" number: "നമ്പർ" completed_at: "പൂർത്തിയാക്കിയത്" - state: "സംസ്ഥാനം" + state: "സ്റ്റേറ്റ്" payment_state: "പേയ്മെന്റ് സ്റ്റേറ്റ്" shipment_state: "ഷിപ്പിംഗ് സ്റ്റേറ്റ്" email: "ഇമെയിൽ" total: "ആകെ" billing_address_name: "പേര്" + general_settings: + edit: + legal_settings: "നിയമ ക്രമീകരണങ്ങൾ" + cookies_consent_banner_toggle: "കുക്കികളുടെ സമ്മത ബാനർ പ്രദർശിപ്പിക്കുക" + privacy_policy_url: "സ്വകാര്യതാ നയ യുആർഎൽ" + enterprises_require_tos: "സംരംഭങ്ങൾ സേവന നിബന്ധനകൾ അംഗീകരിക്കണം" + shoppers_require_tos: "ഷോപ്പർമാർ സേവന നിബന്ധനകൾ അംഗീകരിക്കണം" + cookies_policy_matomo_section: "കുക്കി നയ പേജിൽ മറ്റോമോ വിഭാഗം പ്രദർശിപ്പിക്കുക" + footer_tos_url: "സേവന നിബന്ധനകൾ യുആർഎൽ" + checkout: + payment: + stripe: + choose_one: ഒന്ന് തിരഞ്ഞെടുക്കുക + enter_new_card: ഒരു പുതിയ കാർഡിനായി വിശദാംശങ്ങൾ നൽകുക + used_saved_card: "സേവ് ചെയ്തിട്ടുള്ള കാർഡ് ഉപയോഗിക്കുക:" + or_enter_new_card: "അല്ലെങ്കിൽ, ഒരു പുതിയ കാർഡിന്റെ വിശദാംശങ്ങൾ നൽകുക:" + remember_this_card: ഈ കാർഡ് ഓർമിച്ചിരിക്കണോ? + stripe_sca: + choose_one: ഒന്ന് തിരഞ്ഞെടുക്കുക + enter_new_card: ഒരു പുതിയ കാർഡിനായി വിശദാംശങ്ങൾ നൽകുക + used_saved_card: "സേവ് ചെയ്തിട്ടുള്ള കാർഡ് ഉപയോഗിക്കുക:" + or_enter_new_card: "അല്ലെങ്കിൽ, ഒരു പുതിയ കാർഡിന്റെ വിശദാംശങ്ങൾ നൽകുക:" + remember_this_card: ഈ കാർഡ് ഓർമിച്ചിരിക്കണോ? date_picker: + flatpickr_date_format: "Y-m-d" + flatpickr_datetime_format: "Y-m-d H:i" + today: "ഇന്ന്" + now: "ഇപ്പോൾ" close: "അടയ്ക്കുക" orders: + error_flash_for_unavailable_items: "നിങ്ങളുടെ കാർട്ടിലെ ഒരു ഇനം ലഭ്യമല്ലാതായി. തിരഞ്ഞെടുത്ത അളവുകൾ തിരുത്തുക." + edit: + login_to_view_order: "നിങ്ങളുടെ ഓർഡർ കാണുന്നതിന് ദയവായി ലോഗിൻ ചെയ്യുക." + bought: + item: "ഈ ഓർഡർ സൈക്കിളിൽ ഇതിനകം ഓർഡർ ചെയ്തിട്ടുണ്ട്" line_item: + insufficient_stock: "മതിയായ സ്റ്റോക്ക് ലഭ്യമല്ല, %{on_hand} മാത്രം ശേഷിക്കുന്നു" out_of_stock: "സ്റ്റോക്കില്ല" + unavailable_item: "നിലവിൽ ലഭ്യമല്ല" + shipment_states: + backorder: ബാക്ക്ഓർഡർ + partial: ഭാഗികമായ + pending: തീർച്ചപ്പെടാത്ത + ready: തയ്യാർ + shipped: അയച്ചു + canceled: റദ്ദാക്കി + payment_states: + balance_due: ബാക്കി + completed: പൂർത്തിയാക്കിയത് + checkout: ചെക്ക് ഔട്ട് + credit_owed: കടബാധ്യത + failed: പരാജയപ്പെട്ടു + paid: പണം നൽകി + pending: തീർച്ചപ്പെടാത്ത + processing: പ്രോസസ്സിംഗ് + requires_authorization: "അനുമതി ആവശ്യമാണ്" + void: ശൂന്യം + invalid: അസാധുവാണ് + authorise: അധികാരപ്പെടുത്തുക order_mailer: + cancel_email: + customer_greeting: "പ്രിയ %{name}," + instructions_html: "%{distributor} -ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ റദ്ദാക്കി. നിങ്ങളുടെ രേഖകൾക്കായി ഈ റദ്ദാക്കൽ വിവരം സൂക്ഷിക്കുക." + dont_cancel: "നിങ്ങൾ മനസ്സ് മാറ്റുകയോ ഈ ഓർഡർ റദ്ദാക്കാൻ ആഗ്രഹിക്കുന്നില്ലെങ്കിലോ ദയവായി %{email} -ൽ ബന്ധപ്പെടുക " + order_summary_canceled_html: "ഓർഡർ സംഗ്രഹം #%{number} [റദ്ദാക്കി]" + details: "നിങ്ങൾ ഓർഡർ ചെയ്തതിന്റെ വിശദാംശങ്ങൾ ഇതാ:" + unpaid_order: "നിങ്ങളുടെ ഓർഡറിന് പണമടച്ചിട്ടില്ലാത്തതിനാൽ റീഫണ്ട് നൽകിയിട്ടില്ല" + paid_order: "നിങ്ങളുടെ ഓർഡറിന് പണമടച്ചിട്ടുള്ളതിനാൽ %{distributor} മുഴുവൻ തുകയും റീഫണ്ട് ചെയ്തു" + credit_order: "നിങ്ങളുടെ ഓർഡറിന് പണമടച്ചിട്ടുള്ളതിനാൽ നിങ്ങളുടെ അക്കൗണ്ടിൽ ക്രെഡിറ്റ് ചെയ്യപ്പെട്ടു" + subject: "ഓർഡർ റദ്ദാക്കൽ" + cancel_email_for_shop: + greeting: "പ്രിയ %{name}," + subject: "ഓർഡർ റദ്ദാക്കൽ" + intro: "ഒരു ഉപഭോക്താവ് അവരുടെ ഓർഡർ # %{number} റദ്ദാക്കി." + view_cancelled_order: "റദ്ദാക്കിയ ഓർഡർ കാണുക" confirm_email: subject: "ഓർഡർ സ്ഥിരീകരണം" + invoice_email: + hi: "ഹായ് %{name}" + invoice_attached_text: നിങ്ങളുടെ സമീപകാല ഓർഡറിന്റെ ഇൻവോയ്സ് ഇവിടെ കൊടുത്തിരിക്കുന്നു, കാണുക + user_mailer: + reset_password_instructions: + request_sent_text: | + നിങ്ങളുടെ പാസ്‌വേഡ് പുനഃസജ്ജമാക്കാനുള്ള അഭ്യർത്ഥന നടത്തി. + നിങ്ങളല്ല ഈ അഭ്യർത്ഥന നടത്തിയതെങ്കിൽ, ഈ ഇമെയിൽ അവഗണിക്കുക. + link_text: > + നിങ്ങൾ ഈ അഭ്യർത്ഥന നടത്തിയെങ്കിൽ താഴെയുള്ള ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുക: + issue_text: | + മുകളിലുള്ള യുആർഎൽ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, അത് നിങ്ങളുടെ ബ്രൗസറിൽ പകർത്താൻ ശ്രമിക്കുക. + എന്തെങ്കിലും പ്രശ്നങ്ങൾ ഉണ്ടെങ്കിൽ ഞങ്ങളുമായി ബന്ധപ്പെടുക. + subject: "പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുന്നതിനുള്ള നിർദ്ദേശങ്ങൾ " + confirmation_instructions: + subject: "നിങ്ങളുടെ ഓഎഫ്എൻ അക്കൗണ്ട് സ്ഥിരീകരിക്കുക" + payment_mailer: + authorize_payment: + subject: "ഓഎഫ്എൻ-ൽ %{distributor} -ലേക്കുള്ള നിങ്ങളുടെ പേയ്‌മെന്റ് അംഗീകരിക്കുക" + instructions: "%{distributor} -ക്കുള്ള നിങ്ങളുടെ %{amount}പേയ്‌മെന്റിന് അധിക പ്രാമാണീകരണം ആവശ്യമാണ്. നിങ്ങളുടെ പേയ്‌മെന്റ് അംഗീകരിക്കുന്നതിന് ഇനിപ്പറയുന്ന യുആർഎൽ സന്ദർശിക്കുക:" + authorization_required: + subject: "ഒരു പേയ്‌മെന്റിന് ഉപഭോക്താവിന്റെ അനുമതി ആവശ്യമാണ്" + message: "%{order_number} എന്ന ഓർഡറിന്റെ പേയ്‌മെന്റിന് ഉപഭോക്താവിൽ നിന്ന് അധിക അനുമതി ആവശ്യമാണ്. ഉപഭോക്താവിന് ഇമെയിൽ വഴി അറിയിപ്പ് ലഭിച്ചു, അത് അംഗീകരിക്കപ്പെടുന്നതുവരെ പേയ്‌മെന്റ് തീർച്ചപ്പെടുത്തിയിട്ടില്ലെന്ന് ദൃശ്യമാകും." shipment_mailer: shipped_email: dear_customer: "പ്രിയ ഉപഭോക്താവേ," + instructions: "%{distributor} ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ അയച്ചു" shipment_summary: "ഷിപ്പിംഗ് സംഗ്രഹം" subject: "ഷിപ്പ്മെന്റ് അറിയിപ്പ്" thanks: "നിങ്ങളുടെ ബിസിനസ്സിന് നന്ദി." track_information: "ട്രാക്കിംഗ് വിവരങ്ങൾ: %{tracking}" track_link: "ട്രാക്കിംഗ് ലിങ്ക്: %{url}" + picked_up_instructions: "%{distributor} ൽ നിന്നുള്ള നിങ്ങളുടെ ഓർഡർ പിക്ക് ചെയ്തു" + picked_up_subject: "പിക്കപ്പ് അറിയിപ്പ്" + test_mailer: + test_email: + greeting: "അഭിനന്ദനങ്ങൾ!" + message: "നിങ്ങൾക്ക് ഈ ഇമെയിൽ ലഭിച്ചിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ ഇമെയിൽ ക്രമീകരണം ശരിയാണ്." + subject: "ടെസ്റ്റ് മെയിൽ" order_state: + address: വിലാസം + adjustments: മാറ്റംവരുത്തലുകൾ + awaiting_return: തിരിച്ചുവരവിനായി കാത്തിരിക്കുന്നു + canceled: റദ്ദാക്കി cart: കാർട്ട് + confirmation: "സ്ഥിരീകരണം" + complete: പൂർത്തിയായത് + confirm: സ്ഥിരീകരിക്കുക + delivery: ഡെലിവറി + paused: താൽക്കാലികമായി നിർത്തി + payment: പേയ്മെന്റ് + pending: തീർച്ചപ്പെടാത്ത + resumed: പുനരാരംഭിച്ചു + returned: തിരിച്ചയച്ചു + subscription_state: + active: സജീവം + pending: തീർച്ചപ്പെടാത്ത + ended: അവസാനിച്ചു + paused: താൽക്കാലികമായി നിർത്തി + canceled: റദ്ദാക്കി paypal: + already_refunded: "ഈ പേയ്‌മെന്റ് റീഫണ്ട് ചെയ്‌തു, അതിൽ തുടർ നടപടികളൊന്നും സ്വീകരിക്കാനാകില്ല." + no_payment_via_admin_backend: "നിങ്ങൾക്ക് ഇപ്പോൾ അഡ്‌മിൻ ബാക്കെൻഡ് വഴി പേയ്പാൽ അക്കൗണ്ടുകൾ ചാർജ് ചെയ്യാൻ കഴിയില്ല." + transaction: "പേപാൽ ഇടപാട്" + payer_id: "പേയർ ഐഡി" + transaction_id: "ഇടപാട് ഐഡി" + token: "ടോക്കൺ" + refund: "റീഫണ്ട്" refund_amount: "തുക" + original_amount: "യഥാർത്ഥ തുക: %{amount}" + refund_successful: "പേയ്പാൽ റീഫണ്ട് വിജയകരമായി" + refund_unsuccessful: "പേയ്പാൽ റീഫണ്ട് പരാജയപ്പെട്ടു" + actions: + refund: "റീഫണ്ട്" + flash: + cancel: "പേയ്പാൽ ഉപയോഗിക്കാൻ താൽപ്പര്യമില്ലേ? കുഴപ്പമില്ല." + connection_failed: "പേയ്പാൽ-ലേക്ക് ബന്ധിപ്പിക്കാൻ കഴിഞ്ഞില്ല." + generic_error: "പേയ്പാൽ പരാജയപ്പെട്ടു. %{reasons}" users: + api_keys: + regenerate_key: "കീ വീണ്ടും ഉണ്ടാക്കുക" + title: എപിഐ കീ + webhook_endpoints: + title: വെബ്‌ഹുക്ക് എൻഡ്‌പോയിന്റുകൾ + description: സിസ്റ്റത്തിലെ ഇവന്റുകൾ ബാഹ്യ സിസ്റ്റങ്ങളിലേക്ക് വെബ്‌ഹുക്കുകളെ ട്രിഗർ ചെയ്‌തേക്കാം. + event_types: + order_cycle_opened: ഓർഡർ സൈക്കിൾ തുറന്നു + event_type: + header: ഇവന്റ് തരം + url: + header: എൻഡ്‌പോയിന്റ് യുആർഎൽ + create_placeholder: റിമോട്ട് വെബ്ഹുക്ക് എൻഡ് പോയിന്റിന്റെ യുആർഎൽ നൽകുക + developer_settings: + title: ഡെവലപ്പർ ക്രമീകരണങ്ങൾ + form: + account_settings: അക്കൗണ്ട് ക്രമീകരണങ്ങൾ show: tabs: + developer_settings: ഡെവലപ്പർ ക്രമീകരണങ്ങൾ orders: ഓർഡറുകൾ + cards: ക്രെഡിറ്റ് കാർഡുകൾ + transactions: ഇടപാടുകൾ + settings: അക്കൗണ്ട് ക്രമീകരണങ്ങൾ + unconfirmed_email: "%{unconfirmed_email} -ന്റെ ഇമെയിൽ സ്ഥിരീകരണം നടന്നിട്ടില്ല. പുതിയ ഇമെയിൽ സ്ഥിരീകരിച്ചുകഴിഞ്ഞാൽ നിങ്ങളുടെ ഇമെയിൽ വിലാസം അപ്ഡേറ്റ് ചെയ്യപ്പെടും." + orders: + open_orders: ആരംഭിച്ച ഓർഡറുകൾ + past_orders: കഴിഞ്ഞ ഓർഡറുകൾ + transactions: + transaction_history: ഇടപാട് ചരിത്രം + authorisation_required: അംഗീകാരം ആവശ്യമാണ് + authorise: അധികാരപ്പെടുത്തുക open_orders: + order: ഓർഡർ ചെയ്യുക shop: കട + changes_allowed_until: -വരെ മാറ്റങ്ങൾ അനുവദിച്ചിരിക്കുന്നു items: ഇനങ്ങൾ total: ആകെ edit: എഡിറ്റ് ചെയ്യുക cancel: റദ്ദാക്കുക closed: അടച്ചു + until: വരെ past_orders: + order: ഓർഡർ ചെയ്യുക shop: കട completed_at: പൂർത്തിയാക്കിയത് items: ഇനങ്ങൾ total: ആകെ - status: പദവി + paid?: പണം നൽകിയോ? + status: സ്ഥിതി + completed: പൂർത്തിയായി cancelled: റദ്ദാക്കി + saved_cards: + default?: സ്ഥിരസ്ഥിതി? + delete?: ഇല്ലാതാക്കുക? + cards: + authorised_shops: അംഗീകൃത കടകൾ + authorised_shops_agreement: നിങ്ങൾക്കുള്ള ഏതൊരു സബ്‌സ്‌ക്രിപ്‌ഷനും (അതായത്. ആവർത്തിച്ചുള്ള ഓർഡറുകൾ) നിങ്ങളുടെ ഡിഫോൾട്ട് ക്രെഡിറ്റ് കാർഡ് ചാർജ് ചെയ്യാൻ അനുവദിച്ചിരിക്കുന്ന ഷോപ്പുകളുടെ ലിസ്‌റ്റാണിത്. നിങ്ങളുടെ കാർഡ് വിശദാംശങ്ങൾ സുരക്ഷിതമായി സൂക്ഷിക്കും, കട ഉടമകളുമായി പങ്കിടില്ല. നിങ്ങളിൽ നിന്ന് നിരക്ക് ഈടാക്കുമ്പോൾ എല്ലായ്പ്പോഴും നിങ്ങളെ അറിയിക്കും. ഒരു ഷോപ്പിനായി ബോക്‌സ് ചെക്ക് ചെയ്യുന്നതിലൂടെ, ആ ഷോപ്പിൽ നിങ്ങൾ സൃഷ്‌ടിക്കുന്ന ഏതൊരു സബ്‌സ്‌ക്രിപ്‌ഷന്റെയും നിബന്ധനകൾക്ക് അനുസൃതമായി പേയ്‌മെന്റുകൾ എടുക്കുന്നതിന് നിങ്ങളുടെ കാർഡ് ഇഷ്യൂ ചെയ്‌ത ധനകാര്യ സ്ഥാപനത്തിന് നിർദ്ദേശങ്ങൾ അയയ്‌ക്കാൻ ആ ഷോപ്പിനെ അധികാരപ്പെടുത്താൻ നിങ്ങൾ സമ്മതിക്കുന്നു. + saved_cards_popover: പിന്നീടുള്ള ഉപയോഗത്തിനായി സേവ് ചെയ്യാൻ നിങ്ങൾ തിരഞ്ഞെടുത്ത കാർഡുകളുടെ പട്ടികയാണിത്. നിങ്ങൾ ഒരു ഓർഡർ ചെക്ക്ഔട്ട് ചെയ്യുമ്പോൾ നിങ്ങളുടെ 'ഡിഫോൾട്ട്' സ്വയമേവ തിരഞ്ഞെടുക്കപ്പെടും, നിങ്ങൾ അങ്ങനെ ചെയ്യാൻ അനുവദിച്ചിട്ടുള്ള ഏതെങ്കിലും കടകളിൽ നിന്ന് ചാർജുകൾ ഈടാക്കാം (വലത് കാണുക). + authorised_shops: + shop_name: "കടയുടെ പേര്" + allow_charges?: "ഡിഫോൾട്ട് കാർഡിലേക്ക് ചാർജുകൾ അനുവദിക്കണോ?" + no_default_saved_cards_tooltip: ചാർജുകൾ അനുവദിക്കുന്നതിന് നിങ്ങൾ ഒരു ക്രെഡിറ്റ് കാർഡ് ഡിഫോൾട്ടായി അടയാളപ്പെടുത്തേണ്ടതുണ്ട്. + localized_number: + invalid_format: ഒരു അസാധുവായ ഫോർമാറ്റ് ഉണ്ട്. ദയവായി ഒരു നമ്പർ നൽകുക. api: invalid_api_key: "അസാധുവായ എപിഐ കീ ( %{key} ) വ്യക്തമായിട്ടുണ്ട്." unauthorized: "ആ പ്രവർത്തനം നടത്താൻ നിങ്ങൾക്ക് അധികാരമില്ല." invalid_resource: "അസാധുവായ റീസോർസ്. തകരാറുകൾ പരിഹരിച്ച് വീണ്ടും ശ്രമിക്കുക." resource_not_found: "നിങ്ങൾ തിരയുന്ന റീസോർസ് കണ്ടെത്താനായില്ല." + access: "എപിഐ ആക്സസ്" + key: "കീ" + clear_key: "കീ മായ്ക്കുക" + regenerate_key: "കീ വീണ്ടും ഉണ്ടാക്കുക" + no_key: "കീ ഇല്ല" + generate_key: "എപിഐ കീ ഉണ്ടാക്കുക" + key_generated: "കീ ഉണ്ടാക്കി" + key_cleared: "കീ മായ്ച്ചു" + shipment: + cannot_ready: "കയറ്റുമതി തയ്യാറാക്കാൻ കഴിയില്ല." + invalid_taxonomy_id: "ടാക്സോണമി ഐഡി അസാധുവാണ്." + toggle_api_key_view: "ഉപയോക്താവിനായി എപിഐ കീ കാണിക്കുക" + activerecord: + models: + spree/payment: + one: പേയ്മെന്റ് + other: പേയ്മെന്റുകൾ + unit: യൂണിറ്റ് + per_unit: യൂണിറ്റിന് + datetime: + distance_in_words: + about_x_hours: + one: ഏകദേശം 1 മണിക്കൂർ + other: ഏകദേശം %{count} മണിക്കൂറുകൾ + about_x_months: + one: ഏകദേശം 1 മാസം + other: ഏകദേശം %{count} മാസങ്ങൾ + about_x_years: + one: ഏകദേശം 1 വർഷം + other: ഏകദേശം %{count} വർഷങ്ങൾ + almost_x_years: + one: ഏകദേശം 1 വർഷം + other: '%{count}വർഷങ്ങളോളം' + half_a_minute: അര മിനിറ്റ് + less_than_x_seconds: + one: 1 സെക്കൻഡിൽ കുറവ് + other: '%{count} സെക്കൻഡിൽ കുറവ്' + less_than_x_minutes: + one: ഒരു മിനിറ്റിൽ താഴെ + other: '%{count} മിനിറ്റിൽ കുറവ്' + over_x_years: + one: 1 വർഷത്തിൽ കൂടുതൽ + other: '%{count} വർഷത്തിൽ കൂടുതൽ' + x_seconds: + one: "1 സെക്കൻഡ്" + other: "%{count} സെക്കൻഡുകൾ" + x_minutes: + one: "1 മിനിറ്റ്" + other: "%{count} മിനിറ്റുകൾ" + x_days: + one: "1 ദിവസം" + other: "%{count} ദിവസങ്ങൾ" + x_months: + one: "1 മാസം" + other: "%{count} മാസങ്ങൾ" + x_years: + one: "1 വർഷം" + other: "%{count} വർഷങ്ങൾ" components: + multiple_checked_select: + filter_placeholder: "ഫിൽട്ടർ ഓപ്ഷനുകൾ" search_input: placeholder: തിരയുക selector_with_filter: + selected_items: "%{count} തിരഞ്ഞെടുത്തു" search_placeholder: തിരയുക pagination: next: അടുത്തത് diff --git a/config/locales/mr.yml b/config/locales/mr.yml index 9d1ad2acb6..6990f408af 100644 --- a/config/locales/mr.yml +++ b/config/locales/mr.yml @@ -236,7 +236,7 @@ mr: signed_up_but_unconfirmed: "पुष्टीकरण दुव्यासह एक संदेश तुमच्या ईमेल पत्त्यावर पाठविला गेला आहे. तुमचे खाते सक्रिय करण्यासाठी कृपया लिंक उघडा." unknown_error: "तुमचे खाते तयार करताना काहीतरी चूक झाली. तुमचा ईमेल पत्ता तपासा आणि पुन्हा प्रयत्न करा." failure: - disabled: "तुमचे खाते अक्षम केले गेले आहे. या समस्येचे निराकरण करण्यासाठी कृपया ॲडमिनिस्ट्रेटरशी संपर्क साधा." + disabled: "तुमचे खाते डिसेबल केले गेले आहे. या समस्येचे निराकरण करण्यासाठी कृपया ॲडमिनिस्ट्रेटरशी संपर्क साधा." invalid: | चुकीचा इमेल किंवा पासवर्ड शब्द. तुम्ही मागील वेळी गेस्ट होता का? कदाचित तुम्हाला एखादे खाते तयार करावे लागेल किंवा तुमचा पासवर्ड रीसेट करावा लागेल. @@ -372,7 +372,7 @@ mr: title: "ओपन फूड नेटवर्क" welcome_to: "आपले स्वागत आहे" site_meta_description: "ओपन फूड नेटवर्क इंडिया सॉफ्टवेअर प्लॅटफॉर्म, शेतकऱ्यांना फायदेशीर किमतीत त्यांचे उत्पादन ऑनलाइन विकण्याची क्षमता देते. हे सॉफ्टवेअर अन्नधान्यं विकण्यासाठीच बनवले गेले आहे जेणेकरून ते विभिन्नं मापं किंवा स्टॉकची लेव्हल हाताळू शकते जी फक्त कृषी उत्पादनांमध्येच असते. उदा. डझनभर अंडी, कोथिंबिरीची जुडी, किंवा एक अख्ख चिकन ज्याचे वजन वेगवेगळे असू शकते." - search_by_name: नाव किंवा उपनगरानुसार शोधा... + search_by_name: 'नांव, उपनगर किंवा पिन कोडनुसार शोधा ... ' producers_join: ओपन फूड नेटवर्कमध्ये सामील होण्यासाठी भारतीय उत्पादकांचे आता स्वागत आहे. charges_sales_tax: GST आकारणार? business_address: "व्यवसायाचा पत्ता" @@ -642,7 +642,7 @@ mr: matomo_site_id: "Matomo साइट आयडी" matomo_tag_manager_url: "Matomo टॅग व्यवस्थापक URL" info_html: "Matomo हे वेब आणि मोबाइल ॲनालिटिक्स ॲप्लिकेशन आहे. तुम्ही एकतर Matomo ऑन-प्रिमाइसेस होस्ट करू शकता किंवा क्लाउड-होस्टेड सेवा वापरू शकता. अधिक माहितीसाठी matomo.org पहा." - config_instructions_html: "येथे तुम्ही OFN Matomo एकत्रीकरण कॉन्फिगर करू शकता. खालील Matomo URL ने Matomo instance कडे निर्देश केला पाहिजे जेथे वापरकर्त्याची ट्रॅकिंग माहिती पाठविली जाईल; ते रिक्त ठेवल्यास, Matomo वापरकर्ता ट्रॅकिंग अक्षम केले जाईल. साइट आयडी फील्ड अनिवार्य नाही परंतु जर तुम्ही एकाच Matomo instanceवर एकापेक्षा जास्त वेबसाइटचा ट्रॅक करत असाल तर ते उपयुक्त आहे; ते Matomo उदाहरण कन्सोलवर आढळू शकते." + config_instructions_html: "येथे तुम्ही OFN Matomo एकत्रीकरण कॉन्फिगर करू शकता. खालील Matomo URL ने Matomo instance कडे निर्देश केला पाहिजे जेथे वापरकर्त्याची ट्रॅकिंग माहिती पाठविली जाईल; ते रिक्त ठेवल्यास, Matomo वापरकर्ता ट्रॅकिंग डिसेबल केले जाईल. साइट आयडी फील्ड अनिवार्य नाही परंतु जर तुम्ही एकाच Matomo instanceवर एकापेक्षा जास्त वेबसाइटचा ट्रॅक करत असाल तर ते उपयुक्त आहे; ते Matomo उदाहरण कन्सोलवर आढळू शकते." config_instructions_tag_manager_html: "Matomo Tag Manager URL सेट केल्याने Matomo Tag Manager सक्षम होतो. हे साधन तुम्हाला अ‍ॅनॅलिटिक्स इव्हेंट सेट करण्याची परवानगी देते. Matomo Tag Manager URL ही Matomo Tag Manager च्या Install Code विभागातून कॉपी केली आहे. तुम्ही योग्य कंटेनर आणि वातावरण निवडल्याची खात्री करा कारण हे पर्याय URL बदलतात." customers: index: @@ -780,8 +780,6 @@ mr: other: "%{count} उत्पादने जतन करणे शक्य नाही. कृपया एरर्सचे पुनरावलोकन करा आणि पुन्हा प्रयत्न करा." save: बदल जतन करा reset: बदल जतन करू नका - bulk_update: - success: "उत्पादने यशस्वीरित्या अद्यतनित केली" product_import: title: उत्पादन आयात file_not_found: फाइल सापडली नाही किंवा उघडता आली नाही @@ -992,7 +990,7 @@ mr: sort_items_by_supplier?: पुरवठादारानुसार वस्तूंचे वर्गीकरण करायचे? sort_items_by_supplier_tip: "सक्षम केल्यावर, पुरवठादाराच्या नावानुसार वस्तूंचे वर्गीकरण केले जाईल." enabled: सक्रिय करा - disabled: निष्क्रिय करा + disabled: डिसेबल करा business_address: company_legal_name: कंपनीचे कायदेशीर नाव company_placeholder: उदाहरण Inc. @@ -1109,11 +1107,11 @@ mr: allow_order_changes_true: "ऑर्डर सायकल चालू असताना ग्राहक ऑर्डर बदलू/रद्द करू शकतात" enable_subscriptions: "सबस्क्रिप्शन्स" enable_subscriptions_tip: "सबस्क्रिप्शन्स सक्षम करायची?" - enable_subscriptions_false: "निष्क्रिय केले" + enable_subscriptions_false: "डिसेबल्ड आहे" enable_subscriptions_true: "सक्रिय केले" customer_names_in_reports: "रिपोर्टस् मधील ग्राहकांची नावे" customer_names_tip: "रिपोर्टस् मध्ये तुमच्या ग्राहकांची नावे पाहण्यासाठी तुमच्या पुरवठादारांना सक्षम करा" - customer_names_false: "निष्क्रिय केले" + customer_names_false: "डिसेबल्ड आहे" customer_names_true: "सक्रिय केले" shopfront_message: "शॉपफ्रंट संदेश" shopfront_message_placeholder: > @@ -1140,7 +1138,7 @@ mr: display_remaining_stock: "उपलब्धता कमी असल्यास उपलब्ध स्टॉक दुकानात प्रदर्शित करा" display_remaining_stock_tip: "फक्त 3 किंवा त्यापेक्षा कमी वस्तू शिल्लक असल्यास खरेदीदारांना सूचित करा. " enabled: "सक्रिय केले" - disabled: "अक्षम" + disabled: "डिसेबल्ड आहे" social: legend: "सामाजिक" twitter_placeholder: "उदा. @the_prof" @@ -1842,7 +1840,6 @@ mr: invoice_tax_total: "GST एकूण:" tax_invoice: "टॅक्स इन्व्हॉइस" tax_total: "एकूण कर (%{rate}):" - invoice_shipping_type: "प्रकार:" total_excl_tax: "एकूण (कर वगळून):" total_incl_tax: "एकूण (करासह):" total_all_tax: "एकूण कर:" @@ -1852,13 +1849,13 @@ mr: order_number: "ऑर्डर क्रमांक:" date_of_transaction: "व्यवहाराची तारीख:" menu_1_title: "दुकाने" - menu_1_url: "/शॉप्स" + menu_1_url: "/shops" menu_2_title: "नकाशा" - menu_2_url: "/मॅप्स" + menu_2_url: "/map" menu_3_title: "उत्पादक" - menu_3_url: "/उत्पादक" + menu_3_url: "/producers" menu_4_title: "ग्रुप्स" - menu_4_url: "/ग्रुप्स" + menu_4_url: "/groups" menu_5_title: "बद्दल" menu_5_url: "https://about.openfoodnetwork.in" menu_6_title: "किंमत" @@ -1996,7 +1993,7 @@ mr: home_shop: खरेदी करा brandstory_headline: "कृषि उत्पादन, स्थानिक आणि ऑनलाईन!" brandstory_intro: "कधी कधी सिस्टमला ठीक करण्याचा सर्वोत्तम मार्ग म्हणजे नवीन सिस्टम सुरू करणे…" - brandstory_part1: "ओपन फूड नेटवर्क इंडिया सॉफ्टवेअर प्लॅटफॉर्म, शेतकऱ्यांना फायदेशीर किमतीत त्यांचे उत्पादन ऑनलाइन विकण्याची क्षमता देते. हे सॉफ्टवेअर अन्नधान्यं विकण्यासाठीच बनवले गेले आहे जेणेकरून ते विभिन्नं मापं किंवा स्टॉकची लेव्हल हाताळू शकते जी फक्त कृषी उत्पादनांमध्येच असते. उदा. डझनभर अंडी, कोथिंबिरीची जुडी, किंवा एक अख्ख चिकन ज्याचे वजन वेगवेगळे असू शकते." + brandstory_part1: "ओपन फूड नेटवर्क सॉफ्टवेअर प्लॅटफॉर्म, शेतकऱ्यांना फायदेशीर किमतीत त्यांचे उत्पादन ऑनलाइन विकण्याची क्षमता देते. हे सॉफ्टवेअर अन्नधान्यं विकण्यासाठीच बनवले गेले आहे जेणेकरून ते विभिन्नं मापं किंवा स्टॉकची लेव्हल हाताळू शकते जी फक्त कृषी उत्पादनांमध्येच असते. उदा. डझनभर अंडी, कोथिंबिरीची जुडी, किंवा एक अख्ख चिकन ज्याचे वजन वेगवेगळे असू शकते." brandstory_part2: "अन्नधान्य उत्पादक, Farmer Producer Organizations (FPO), किंवा Farmer Producer Companies (FPC) स्वतःचे ऑनलाइन शॉप तयार करू शकतात, पेमेंट गोळा करू शकतात, किंवा ह्याच वेबसाइटवरील इतर दुकानांमधूनही विक्री करू शकतात." brandstory_part3: "घाऊक विक्रेते, Farmer Producer Organizations (FPO), किंवा Farmer Producer Companies (FPC) ते वापरत असलेल्या सॉफ्टवेअरशी OFN integrate करू शकतात आणि खरेदी गट तयार करून ग्राहकांना ऑनलाईन अन्नधान्य केंद्रे आणि आमच्या दुकानांच्या राष्ट्रीय नेटवर्कद्वारे त्यांच्या उत्पादनांचा पुरवठा करू शकतात." brandstory_part4: "Farmer Producer Organizations (FPO), किंवा Farmer Producer Companies (FPC) त्यांच्या स्थानिक क्षेत्रातील उत्पादकांना एकत्र आणून शेतकर्‍यांची एक ऑनलाइन बाजारपेठ तयार करू शकतात, एक मजबुत स्थानिक अन्न अर्थव्यवस्था तयार करू शकतात." @@ -2292,12 +2289,12 @@ mr: sell_hubs_detail: "तुमच्या फूड एंटरप्राइझ किंवा OFN वर संस्थेसाठी प्रोफाइल सेट करा. तुम्ही तुमचे प्रोफाईल कधीही मल्टी- उत्पादक शॉपमध्ये अपग्रेड करू शकता." sell_groups_detail: "खास तुमच्या विभागासाठी किंवा तुमच्या संस्थेसाठी एंटरप्राइजेसची (उत्पादक आणि इतर फूड एंटरप्राइजेस) डिरेक्टरी तयार करा." sell_user_guide: "आमच्या वापरकर्ता मार्गदर्शकामध्ये अधिक शोधा." - sell_listing_price: "OFN वर लिस्टिंग विनामूल्य आहे. OFN वर शॉप उघडणे आणि चालवणे हे मासिक विक्री $500 पर्यंत विनामूल्य आहे. तुम्ही अधिक विक्री केल्यास तुम्ही तुमच्या विक्रीच्या 1% आणि 3% दरम्यान तुमचे समुदाय योगदान निवडू शकता. किंमतीच्या अधिक तपशीलासाठी वरच्या मेनूमधील बद्दल लिंकद्वारे सॉफ्टवेअर प्लॅटफॉर्म विभागाला भेट द्या." + sell_listing_price: "OFN India वर लिस्टिंग विनामूल्य आहे. दुकाने आणि हब्स साठी योजना दरमहा ₹375 पासून सुरू होतात. किंमतीबद्दल अधिक माहितीसाठी https://about.openfoodindia.org/pricing/ ला भेट द्या." sell_embed: "आम्ही तुमच्या स्वतःच्या वेबसाइटमध्येदेखील OFN शॉप एम्बेड करू शकतो किंवा तुमच्या विभागासाठी खास बनवलेली स्थानिक खाद्य नेटवर्क वेबसाइट तयार करू शकतो." sell_ask_services: "OFN सेवांबद्दल आमच्याकडे चौकशी करा. " shops_title: शॉप्स shops_headline: खरेदी, आमूलाग्र बदललेली. - shops_text: 'अन्न विशिष्ट कालावधीत वाढते, शेतकरी विशिष्ट कालावधीत कापणी करतात आणि तसेच आम्हीही विशिष्ट कालावधी (सायकल) मध्ये खाद्य ऑर्डर करतो. तुम्हाला ऑर्डर सायकल बंद असल्याचे आढळल्यास, लवकरच पुन्हा प्रयत्न करा. ' + shops_text: अन्नधान्य एका विशिष्ट कालावधीत वाढते, शेतकरी विशिष्ट कालावधीत कापणी करतात आणि तसेच आपणही विशिष्ट कालावधी (सायकल) मध्ये खाद्य ऑर्डर करतो. जर तुम्हाला हवे असलेल्या दुकानाची ऑर्डर सायकल बंद असल्याचे आढळल्यास, तर थोड्या वेळाने पुन्हा प्रयत्न करा. shops_signup_title: हब म्हणून साइन अप करा shops_signup_headline: अन्नधान्य हब, अमर्यादित. shops_signup_motivation: 'तुमचे मॉडेल काहीही असो, आम्ही तुम्हाला सहकार्य करतो. तुम्ही बदललात तरी आम्ही तुमच्या सोबत राहू. आम्ही ना-नफा, स्वतंत्र आणि मुक्त स्रोत आहोत. आम्ही अगदी तुमच्या मनाजोगे सॉफ्टवेअर भागीदार आहोत. ' @@ -2439,8 +2436,8 @@ mr: suburb_field_placeholder: "उदा. रत्नागिरी" suburb_field_error: "कृपया उपनगर प्रविष्ट करा" postcode_field: "पिनकोड:" - postcode_field_placeholder: "उदा. 3070" - postcode_field_error: "पोस्टकोड आवश्यक आहे" + postcode_field_placeholder: "उदा. 400081" + postcode_field_error: "पिनकोड आवश्यक आहे" state_field: "राज्य:" state_field_error: "राज्य आवश्यक" country_field: "देश:" @@ -2480,7 +2477,7 @@ mr: enterprise_description: "संक्षिप्त वर्णन" enterprise_description_placeholder: "तुमच्या एंटरप्राइझचे वर्णन करणारे एक संक्षिप्त वाक्य" enterprise_long_desc: "तपशीलवार वर्णन" - enterprise_long_desc_placeholder: "तुमच्या एंटरप्राइझची कथा सांगण्याची ही संधी आहे - तुम्ही कशामुळे वेगळे आणि विलक्षण आहात ? आमचा सल्ला आहे की तुमचे वर्णन 600 वर्ण किंवा 150 शब्दांपेक्षा कमी ठेवा." + enterprise_long_desc_placeholder: "तुमच्या एंटरप्राइझची कथा सांगण्याची ही संधी आहे - तुम्ही कशामुळे वेगळे आणि विलक्षण आहात ? आमचा सल्ला आहे की तुमचे वर्णन 600 अक्षरं किंवा 150 शब्दांपेक्षा कमी ठेवा." enterprise_long_desc_length: "%{num} / 600 वर्णांपर्यंत लिहू शकता. " enterprise_abn: "ABN" enterprise_abn_placeholder: "उदा. 99 123 456 789" @@ -2504,7 +2501,7 @@ mr: logo_placeholder: "एकदा अपलोड केल्यानंतर तुमचा लोगो पुनरावलोकनासाठी येथे दिसेल" promo: select_promo_image: "पायरी 3. प्रोमो इमेज निवडा" - promo_image_tip: "टीप: बॅनर म्हणून दर्शविले जाते, शक्यतो आकार 1200×260px असावा" + promo_image_tip: "टीप: बॅनर म्हणून दर्शविले जाते, शक्यतो आकार 1200×260px असावा" promo_image_label: "प्रोमो इमेज निवडा" promo_image_drag: "तुमचा प्रोमो येथे ड्रॅग आणि ड्रॉप करा" review_promo_image: "पायरी 4. तुमच्या प्रोमो बॅनरचे पुनरावलोकन करा" @@ -4022,7 +4019,7 @@ mr: stripe_connect: enterprise_select_placeholder: निवडा... loading_account_information_msg: Stripe वरून खाते माहिती लोड करत आहे, कृपया प्रतीक्षा करा... - stripe_disabled_msg: Stripe पेमेंट सिस्टम ॲडमिनिस्ट्रेटरद्वारे निष्क्रिय केले गेले आहे. + stripe_disabled_msg: Stripe पेमेंट सिस्टम ॲडमिनिस्ट्रेटरद्वारे डिसेबल केले गेले आहे. request_failed_msg: क्षमस्व. Stripe सह खाते तपशील सत्यापित करण्याचा प्रयत्न करताना काहीतरी चूक झाली... account_missing_msg: या एंटरप्राइझसाठी कोणतेही Stripe खाते अस्तित्वात नाही. connect_one: एक कनेक्ट करा @@ -4126,7 +4123,7 @@ mr: back_to_users_list: "वापरकर्त्यांच्या यादीकडे परत" general_settings: "सामान्य सेटिंग्ज" form: - disabled: "अक्षम?" + disabled: "डिसेबल्ड आहे?" email: "ईमेल" roles: "भूमिका" enterprise_limit: "एंटरप्राइझ मर्यादा" diff --git a/config/locales/nb.yml b/config/locales/nb.yml index 1f839f5808..5013da01d1 100644 --- a/config/locales/nb.yml +++ b/config/locales/nb.yml @@ -780,8 +780,6 @@ nb: other: "%{count} produkter kunne ikke lagres. Se gjennom feilene og prøv igjen." save: Lagre endringer reset: Forkaste endringer - bulk_update: - success: "Produktene er oppdatert" product_import: title: Produktimport file_not_found: Filen ble ikke funnet eller kunne ikke åpnes @@ -880,6 +878,7 @@ nb: view_products: Gå til produktside view_inventory: Gå til varelager product_headings: + distributor: Distributør producer: Produsent sku: SKU name: Navn @@ -1210,6 +1209,8 @@ nb: create_custom_tab: "Lag egendefinert fane i butikk" custom_tab_title: "Tittel for egendefinert fane" custom_tab_content: "Innhold for egendefinert fane" + connected_apps: + loading: "Laster" actions: edit_profile: Innstillinger properties: Egenskaper @@ -1900,7 +1901,8 @@ nb: invoice_tax_total: "MVA Totalt:" tax_invoice: "AVGIFTSFAKTURA" tax_total: "Totalavgift (%{rate}):" - invoice_shipping_type: "Type:" + invoice_shipping_category_delivery: "Levering" + invoice_shipping_category_pickup: "Henting" total_excl_tax: "Sum (Eks. avgift):" total_incl_tax: "Sum (Inkl. avgift):" total_all_tax: "Total skatt:" diff --git a/config/locales/nl_BE.yml b/config/locales/nl_BE.yml index 9924b1bc51..b53ab0e138 100644 --- a/config/locales/nl_BE.yml +++ b/config/locales/nl_BE.yml @@ -638,6 +638,7 @@ nl_BE: view_products: Ga naar de pagina Producten view_inventory: Ga naar de inventarispagina product_headings: + distributor: Distributeur producer: Producent sku: SKU name: Naam @@ -911,6 +912,8 @@ nl_BE: rate: Percentage customers: Klant active: Actief? + connected_apps: + loading: "Aan het opladen" actions: edit_profile: Instellingen properties: Eigenschappen @@ -1458,6 +1461,8 @@ nl_BE: invoice_tax_total: "Totaal BTW:" tax_invoice: "FACTUUR" tax_total: "BTW Totaal (%{rate}):" + invoice_shipping_category_delivery: "Levering" + invoice_shipping_category_pickup: "Ophaling" total_excl_tax: "Totaal (Excl. BTW):" total_incl_tax: "Totaal (Incl. BTW):" abn: "Bedrijfsnummer : " diff --git a/config/locales/pa.yml b/config/locales/pa.yml index 5a0ab9d7ab..d026d0ece8 100644 --- a/config/locales/pa.yml +++ b/config/locales/pa.yml @@ -204,7 +204,7 @@ pa: not_available_to_shop: "%{shop} ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" invalid_type: "ਨਕਦੀ ਜਾਂ ਸਟ੍ਰਾਈਪ ਵਿਧੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ" charges_not_allowed: "^ਇਸ ਗਾਹਕ ਦੁਆਰਾ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਤੇ ਪੈਸੇ ਕੱਟੇ ਜਾਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ" - no_default_card: "\"^ਇਸ ਗਾਹਕ ਲਈ ਕੋਈ ਡਿਫੌਲਟ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ\"" + no_default_card: "^ਇਸ ਗਾਹਕ ਲਈ ਕੋਈ ਡਿਫੌਲਟ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" shipping_method: not_available_to_shop: "%{shop} ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" card_details: "ਕਾਰਡ ਦੇ ਵੇਰਵੇ" @@ -311,6 +311,8 @@ pa: report_ready: subject: "ਰਿਪੋਰਟ ਤਿਆਰ ਹੈ" heading: "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਰਿਪੋਰਟ ਤਿਆਰ ਹੈ" + intro: | + ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ਦੀ ਮਿਆਦ ਇੱਕ ਹਫ਼ਤੇ ਬਾਅਦ ਖਤਮ ਹੋ ਜਾਵੇਗੀ। link_label: "\"%{name}\"" shipment_mailer: shipped_email: @@ -359,9 +361,9 @@ pa: home: "OFN" title: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ" welcome_to: "ਤੁਹਾਡਾ ਸਵਾਗਤ ਹੈ" - site_meta_description: "ਅਸੀਂ ਹੇਠਲੇ ਪੱਧਰ ਤੋਂ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ। ਉਹਨਾਂ ਕਿਸਾਨਾਂ ਅਤੇ ਉਤਪਾਦਕਾਂ ਨਾਲ ਜੋ ਆਪਣੀਆਂ ਕਹਾਣੀਆਂ ਮਾਣ ਅਤੇ ਸਚਾਈ ਨਾਲ ਦੱਸਣ ਲਈ ਤਿਆਰ ਹਨ। ਉਹਨਾਂ ਵਿਤਰਕਾਂ ਦੇ ਨਾਲ ਜੋ ਲੋਕਾਂ ਨੂੰ ਨਿਰਪੱਖ ਅਤੇ ਇਮਾਨਦਾਰੀ ਨਾਲ ਉਤਪਾਦਾਂ ਨਾਲ ਜੋੜਨ ਲਈ ਤਿਆਰ ਹਨ। ਖਰੀਦਦਾਰਾਂ ਦੇ ਨਾਲ ਜੋ ਵਿਸ਼ਵਾਸ ਕਰਦੇ ਹਨ ਕਿ ਬਿਹਤਰ ਹਫਤਾਵਾਰੀ ਖਰੀਦਦਾਰੀ ਫੈਸਲੇ..." - search_by_name: ਨਾਮ ਜਾਂ ਉਪਨਗਰ ਦੁਆਰਾ ਖੋਜੋ... - producers_join: ਆਸਟ੍ਰੇਲੀਆਈ ਉਤਪਾਦਕਾਂ ਦਾ ਹੁਣ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਸਵਾਗਤ ਹੈ। + site_meta_description: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਇੰਡੀਆ ਸਾਫਟਵੇਅਰ ਪਲੇਟਫਾਰਮ ਕਿਸਾਨਾਂ ਨੂੰ ਔਨਲਾਈਨ ਉਤਪਾਦ ਵੇਚਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਉਸ ਕੀਮਤ ਤੇ ਜੋ ਉਹਨਾਂ ਲਈ ਸਹੀ ਹਨ। ਇਹ ਖਾਸ ਤੌਰ ਉਤੇ ਭੋਜਨ ਉਤਪਾਦ ਵੇਚਣ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ ਤਾਂ ਜੋ ਇਹ ਔਖੇ ਉਪਾਵਾਂ ਜਾਂ ਸਟਾਕ ਦੇ ਪੱਧਰਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕੇ ਜੋ ਸਿਰਫ ਭੋਜਨ ਵਿੱਚ ਹੁੰਦੇ ਹਨ - ਇੱਕ ਦਰਜਨ ਅੰਡੇ, ਅਜਵਾਇਣ ਦਾ ਇੱਕ ਗੁੱਛਾ, ਇੱਕ ਪੂਰਾ ਚਿਕਨ ਜੋ ਭਾਰ ਵਿੱਚ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ..." + search_by_name: ਨਾਂ, ਸ਼ਹਿਰ, ਰਾਜ ਜਾਂ ਪਿੰਨ ਕੋਡ ਦੁਆਰਾ ਖੋਜ ਕਰੋ... + producers_join: ਭਾਰਤੀ ਉਤਪਾਦਕਾਂ ਦਾ ਹੁਣ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਸਵਾਗਤ ਹੈ। charges_sales_tax: ਜੀਐਸਟੀ ਲਾਉਂਦੇ ਹਨ? business_address: "ਕਾਰੋਬਾਰੀ ਪਤਾ" print_invoice: "ਇਨਵੌਇਸ ਪ੍ਰਿੰਟ" @@ -494,7 +496,7 @@ pa: columns: name: ਨਾਮ unit: ਯੂਨਿਟ - price: '"ਕੀਮਤ"' + price: ਕੀਮਤ producer: ਉਤਪਾਦਕ category: ਸ਼੍ਰੇਣੀ sku: SKU @@ -505,7 +507,7 @@ pa: import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" columns_selector: unit: ਯੂਨਿਟ - price: '"ਕੀਮਤ"' + price: ਕੀਮਤ producer: ਉਤਪਾਦਕ category: ਸ਼੍ਰੇਣੀ sku: SKU @@ -538,7 +540,7 @@ pa: payment: ਭੁਗਤਾਨ payment_method: ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ phone: ਫੋਨ - price: '"ਕੀਮਤ"' + price: ਕੀਮਤ producer: ਉਤਪਾਦਕ image: ਤਸਵੀਰ product: ਉਤਪਾਦ @@ -599,327 +601,2695 @@ pa: number_localization: number_localization_settings: "ਨੰਬਰ ਸਥਾਨੀਕਰਨ ਸੈਟਿੰਗਾਂ" enable_localized_number: "ਅੰਤਰਰਾਸ਼ਟਰੀ ਹਜ਼ਾਰ/ਦਸ਼ਮਲਵ ਵਿਭਾਜਕ ਤਰਕ ਦੀ ਵਰਤੋਂ ਕਰੋ" + invoice_settings: + edit: + title: "ਇਨਵੌਇਸ ਸੈਟਿੰਗਾਂ" + enable_invoices?: "ਇਨਵੌਇਸ ਸਮਰੱਥ ਕਰੋ?" + invoice_style2?: "ਵਿਕਲਪਿਕ ਇਨਵੌਇਸ ਮਾਡਲਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜਿਸ ਵਿੱਚ ਪ੍ਰਤੀ ਦਰ ਅਤੇ ਪ੍ਰਤੀ ਆਈਟਮ ਟੈਕਸ ਦਰ ਦੀ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੁੰਦੀ ਹੈ (ਅਜੇ ਤੱਕ ਉਹਨਾਂ ਦੇਸ਼ਾਂ ਲਈ ਸਮਰਥਿਤ ਨਹੀਂ ਜੋ ਟੈਕਸ-ਮੁਕਤ ਕੀਮਤਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਦੇ ਹਨ)" + enterprise_number_required_on_invoices?: "ਇੱਕ ਇਨਵੌਇਸ ਬਣਾਉਣ ਲਈ ABN ਦੀ ਲੋੜ ਹੈ?" + stripe_connect_settings: + edit: + title: "ਸਟ੍ਰਾਈਪ ਕਨੈਕਟ" + settings: "ਸੈਟਿੰਗਾਂ" + stripe_connect_enabled: ਸ਼ੋਪਾਂ ਨੂੰ ਸਟ੍ਰਾਈਪ ਕਨੈਕਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭੁਗਤਾਨ ਸਵੀਕਾਰ ਕਰਨ ਲਈ ਸਮਰੱਥ ਬਣਾਓ? + no_api_key_msg: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਕੋਈ ਸਟ੍ਰਾਈਪ ਖਾਤਾ ਨਹੀਂ ਹੈ। + configuration_explanation_html: ਸਟ੍ਰਾਈਪ ਕਨੈਕਟ ਏਕੀਕਰਣ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰਨ ਬਾਰੇ ਵਿਸਤ੍ਰਿਤ ਨਿਰਦੇਸ਼ਾਂ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਗਾਈਡ ਤੋਂ ਸਲਾਹ ਲਓ। + status: ਸਥਿਤੀ + ok: ਠੀਕ ਹੈ + instance_secret_key: ਇੰਸਟੈਂਸ ਸਿਕ੍ਰੇਟ ਕੀ + account_id: ਖਾਤਾ ਆਈ.ਡੀ + business_name: ਕਾਰੋਬਾਰ ਦਾ ਨਾਮ + charges_enabled: ਚਾਰਜ ਸਮਰੱਥ ਕੀਤੇ ਗਏ + charges_enabled_warning: "ਚੇਤਾਵਨੀ: ਤੁਹਾਡੇ ਖਾਤੇ ਲਈ ਚਾਰਜ ਸਮਰੱਥ ਨਹੀਂ ਹਨ" + auth_fail_error: ਤੁਹਾਡੇ ਵੱਲੋਂ ਪ੍ਰਦਾਨ ਕੀਤੀ API ਕੁੰਜੀ ਅਵੈਧ ਹੈ + empty_api_key_error_html: ਕੋਈ ਸਟ੍ਰਾਈਪ API ਕੁੰਜੀ ਪ੍ਰਦਾਨ ਨਹੀਂ ਕੀਤੀ ਗਈ ਹੈ। ਆਪਣੇ API ਨੂੰ ਸੇਟ ਕਰਨ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਇਹਨਾਂ ਹਦਾਇਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ + matomo_settings: + edit: + title: "ਮੈਟੋਮੋ ਸੈਟਿੰਗਾਂ" + matomo_url: "ਮੈਟੋਮੋ URL" + matomo_site_id: "ਮੈਟੋਮੋ ਸਾਈਟ ਆਈਡੀ" + matomo_tag_manager_url: "ਮੈਟੋਮੋ ਟੈਗ ਮੈਨੇਜਰ URL" + info_html: "ਮੈਟੋਮੋ ਇੱਕ ਵੈਬ ਅਤੇ ਮੋਬਾਈਲ ਐਨਾਲਿਟਿਕਸ ਐਪ੍ਲੀਕੇਸ਼ਨ ਹੈ। ਤੁਸੀਂ ਜਾਂ ਤਾਂਮੈਟੋਮੋ ਦੇ ਔਨ-ਪ੍ਰੀਮਾਇਸੇਸ ਹੋਸਟ ਬਣਾ ਸਕਦੇ ਹੋ ਜਾਂ ਕਲਾਉਡ-ਹੋਸਟੇਡ ਸੇਵਾ ਦਾ ਉਪਯੋਗ ਕਰ ਸਕਦੇ ਹੋ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ matomo.org ਵੇਖੋ।" + config_instructions_html: "ਇੱਥੇ ਤੁਸੀਂ OFN ਮੈਟੋਮੋ ਏਕੀਕਰਣ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰ ਸਕਦੇ ਹੋ। ਹੇਠਾਂ ਦਿੱਤੇ ਮੈਟੋਮੋ URL ਨੂੰ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਿੱਥੇ ਉਪਭੋਗਤਾ ਦੀ ਟਰੈਕਿੰਗ ਜਾਣਕਾਰੀ ਭੇਜੀ ਜਾਵੇਗੀ; ਜੇਕਰ ਇਸਨੂੰ ਖਾਲੀ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਮੈਟੋਮੋ ਉਪਭੋਗਤਾ ਟਰੈਕਿੰਗ ਨੂੰ ਅਯੋਗ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਸਾਈਟ ਆਈਡੀ ਫ਼ੀਲਡ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ ਪਰ ਉਪਯੋਗੀ ਹੋ ਸਕਦੀ ਹੈ, ਜੇ ਤੁਸੀਂ ਇੱਕੋ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਤੇ ਇੱਕ ਤੋਂ ਵੱਧ ਵੈਬਸਾਈਟਾਂ ਨੂੰ ਟਰੈਕ ਕਰ ਰਹੇ ਹੋਵੋ; ਇਸਨੂੰ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਕੰਸੋਲ ਉਤੇ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ।" + config_instructions_tag_manager_html: "ਇੱਥੇ ਤੁਸੀਂ OFN ਮੈਟੋਮੋ ਏਕੀਕਰਣ ਨੂੰ ਕੌਂਫਿਗਰ ਕਰ ਸਕਦੇ ਹੋ। ਹੇਠਾਂ ਦਿੱਤੇ ਮੈਟੋਮੋ URL ਨੂੰ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ ਜਿੱਥੇ ਉਪਭੋਗਤਾ ਦੀ ਟਰੈਕਿੰਗ ਜਾਣਕਾਰੀ ਭੇਜੀ ਜਾਵੇਗੀ; ਜੇਕਰ ਇਸਨੂੰ ਖਾਲੀ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਮੈਟੋਮੋ ਉਪਭੋਗਤਾ ਟਰੈਕਿੰਗ ਨੂੰ ਅਯੋਗ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ। ਸਾਈਟ ਆਈਡੀ ਫ਼ੀਲਡ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ ਪਰ ਉਪਯੋਗੀ ਹੋ ਸਕਦੀ ਹੈ, ਜੇ ਤੁਸੀਂ ਇੱਕੋ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਤੇ ਇੱਕ ਤੋਂ ਵੱਧ ਵੈਬਸਾਈਟਾਂ ਨੂੰ ਟਰੈਕ ਕਰ ਰਹੇ ਹੋਵੋ; ਇਸਨੂੰ ਮੈਟੋਮੋ ਇੰਸਟੈਂਸ ਕੰਸੋਲ ਉਤੇ ਲੱਭਿਆ ਜਾ ਸਕਦਾ ਹੈ।" customers: index: + new_customer: "ਨਵਾਂ ਗਾਹਕ" + code: ਕੋਡ + duplicate_code: "ਇਹ ਕੋਡ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਚੁੱਕਿਆ ਹੈ।" bill_address: "ਬਿਲਿੰਗ ਪਤਾ" ship_address: "ਸ਼ਿਪਿੰਗ ਪਤਾ" + balance: "ਬਾਕੀ ਰਕਮ" + update_address_success: "ਪਤਾ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ।" + update_address_error: "ਮਾਫ਼ ਕਰਨਾ! ਕਿਰਪਾ ਕਰਕੇ ਸਾਰੇ ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਭਰੋ!" + edit_bill_address: "ਬਿਲਿੰਗ ਪਤਾ ਸੰਪਾਦਿਤ ਕਰੋ" + edit_ship_address: "ਸ਼ਿਪਿੰਗ ਪਤਾ ਸੰਪਾਦਿਤ ਕਰੋ" + required_fileds: "ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਤਾਰੇ ਨਾਲ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਗਿਆ ਹੈ" + select_country: "ਦੇਸ਼ ਚੁਣੋ" + select_state: "ਰਾਜ ਚੁਣੋ" edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + update_address: "ਪਤਾ ਅੱਪਡੇਟ ਕਰੋ" + confirm_delete: "ਯਕੀਨੀ ਤੌਰ ਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + search_by_email: "ਈਮੇਲ/ਕੋਡ ਦੁਆਰਾ ਖੋਜੋ..." + guest_label: "ਗੈਸਟ ਚੈਕਆਉਟ" + credit_owed: "ਬਕਾਇਆ ਕਰਜ਼ਾ" + balance_due: "ਬਕਾਇਆ ਰਕਮ" + destroy: + has_associated_subscriptions: "ਹਟਾਉਣਾ ਅਸਫਲ ਰਿਹਾ: ਇਸ ਗਾਹਕ ਕੋਲ ਕਿਰਿਆਸ਼ੀਲ ਗਾਹਕੀਆਂ ਹਨ। ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਰੱਦ ਕਰੋ।" + contents: + edit: + title: ਕੰਟੇਂਟ + header: ਹੈਡਰ + home_page: ਹੋਮ ਪੇਜ + producer_signup_page: ਉਤਪਾਦਕ ਸਾਈਨਅੱਪ ਪੇਜ + hub_signup_page: ਹੱਬ ਸਾਈਨਅੱਪ ਪੇਜ + group_signup_page: ਸਮੂਹ ਸਾਈਨਅਪ ਪੇਜ + main_links: ਮੁੱਖ ਮੇਨਯੁ ਦੇ ਲਿੰਕ + footer_and_external_links: ਫੁੱਟਰ ਅਤੇ ਬਾਹਰੀ ਲਿੰਕ + your_content: ਤੁਹਾਡਾ ਕੰਟੇਂਟ + user_guide: ਉਪਭੋਗਤਾ ਗਾਈਡ + map: ਮੈਪ enterprise_fees: index: + title: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ" + enterprise: "ਐਂਟਰਪ੍ਰਾਈਜ਼" fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" name: "ਨਾਮ" tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + calculator: "ਕੈਲਕੁਲੇਟਰ" + calculator_values: "ਕੈਲਕੁਲੇਟਰ ਵੈਲਯੂ" + search: "ਖੋਜੋ" + name_placeholder: "ਜਿਵੇਂ - ਪੈਕਿੰਗ ਫ਼ੀਸ" + enterprise_groups: + index: + new_button: ਨਵਾਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸਮੂਹ + form_primary_details: + primary_details: "ਪ੍ਰਾਥਮਿਕ ਵੇਰਵੇ" + form_users: + users: "ਉਪਭੋਗਤਾ" + form_about: + about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + form_images: + images: "ਫੋਟੋ" + form_address: + contact: "ਸੰਪਰਕ" + form_web: + web: "ਵੈਬ ਸੰਸਾਧਨ" + enterprise_roles: + form: + manages: ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ + enterprise_role: + manages: ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ products: + unit_name_placeholder: 'ਜਿਵੇਂ ਕਿ ਗੁੱਛੇ''' index: unit: ਯੂਨਿਟ + display_as: ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ category: ਸ਼੍ਰੇਣੀ tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ inherits_properties?: ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ? + av_on: "ਏਵੀ. ਆਨ" + import_date: ਇਮਪੋਰਟ ਕੀਤੇ ਗਏ + upload_an_image: ਇੱਕ ਫੋਟੋ ਅੱਪਲੋਡ ਕਰੋ + seo: + product_search_keywords: "ਉਤਪਾਦ ਖੋਜ ਕੀਵਰਡ" + product_search_tip: "ਸ਼ਾਪ ਵਿੱਚ ਆਪਣੇ ਉਤਪਾਦ ਲੱਭਣ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਨ ਲਈ ਸ਼ਬਦ ਟਾਈਪ ਕਰੋ। ਹਰੇਕ ਕੀਵਰਡ ਨੂੰ ਵੱਖ ਕਰਨ ਲਈ ਉਹਨਾਂ ਵਿਚਕਾਰ ਖਾਲੀ ਥਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।" + seo_tip: "ਵੈਬ ਤੇ ਆਪਣੇ ਉਤਪਾਦਾਂ ਨੂੰ ਲੱਭਣ ਵਿੱਚ ਮਦਦ ਲਈ ਸ਼ਬਦ ਟਾਈਪ ਕਰੋ। ਹਰੇਕ ਕੀਵਰਡ ਨੂੰ ਵੱਖ ਕਰਨ ਲਈ ਉਹਨਾਂ ਵਿਚਕਾਰ ਖਾਲੀ ਥਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।" + search: "ਖੋਜੋ" + properties: + property_name: "ਪ੍ਰਾਪਰਟੀ ਦਾ ਨਾਮ" + inherited_property: "ਅਪਣਾਈ ਗਈ ਪ੍ਰਾਪਰਟੀ" + variants: + infinity: "ਇਨਫਿਨਿਟੀ" + to_order_tip: "ਆਰਡਰ ਉਤੇ ਬਣੀਆਂ ਆਈਟਮਾਂ ਵਿੱਚ ਸਟਾਕ ਦੇ ਪੱਧਰ ਨਿਰਧਾਰਤ ਨਹੀਂ ਹੁੰਦੇ, ਜਿਵੇਂ ਕਿ ਆਰਡਰ ਤੇ ਬਣਾਈ ਗਈ ਤਾਜ਼ਾ ਬ੍ਰੈਡ।" + back_to_products_list: "ਉਤਪਾਦਾਂ ਦੀ ਸੂਚੀ ਤੇ ਵਾਪਿਸ" + editing_product: "ਉਤਪਾਦ ਦਾ ਸੰਪਾਦਨ" + tabs: + product_details: "ਉਤਪਾਦ ਵੇਰਵੇ" + group_buy_options: "ਸਮੂਹ ਖਰੀਦ ਵਿਕਲਪ" + images: "ਫੋਟੋ" + variants: "ਵੇਰੀਐਂਟਸ" + product_properties: "ਉਤਪਾਦ ਦੀ ਪਰੌਪਰਟੀਆਂ" products_v3: + index: + header: + title: ਥੋਕ ਸੰਪਾਦਿਤ ਉਤਪਾਦ + loading: ਤੁਹਾਡੇ ਉਤਪਾਦ ਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ + sort: + pagination: + total_html: "ਤੁਹਾਡੇ ਖੋਜ ਮਾਪਦੰਡ ਲਈ %{total} ਉਤਪਾਦ ਮਿਲੇ ਹਨ। %{from} ਤੋਂ %{to} ਦਿਖਾ ਰਹੇ ਹਨ।" + per_page: + show: ਵਿਖਾਓ + per_page: "%{num} ਪ੍ਰਤੀ ਪੇਜ" + clear_search: ਖੋਜ ਮਿਟਾਓ filters: + search_products: ਉਤਪਾਦਾਂ ਦੀ ਖੋਜ ਕਰੋ + all_producers: ਸਾਰੇ ਉਤਪਾਦਕ + all_categories: ਸਾਰੀਆਂ ਸ਼੍ਰੇਣੀਆਂ producers: label: ਉਤਪਾਦਕ categories: label: ਸ਼੍ਰੇਣੀਆਂ + search: ਖੋਜੋ + no_products: + no_products_found: ਕੋਈ ਉਤਪਾਦ ਨਹੀਂ ਲੱਭੇ + import_products: ਇੱਕ ਤੋਂ ਜ਼ਿਆਦਾ ਉਤਪਾਦ ਇਮਪੋਰਟ ਕਰੋ + no_products_found_for_search: ਤੁਹਾਡੇ ਖੋਜ ਮਾਪਦੰਡਾਂ ਦੇ ਅਨੁਸਾਰ ਕੋਈ ਉਤਪਾਦ ਨਹੀਂ ਮਿਲੇ + table: + save: ਤਬਦੀਲੀਆਂ ਨੂੰ ਸੇਵ ਕਰੋ + reset: ਤਬਦੀਲੀਆਂ ਤਿਆਗੋ product_import: + title: ਉਤਪਾਦ ਦਾ ਇਮਪੋਰਟ + file_not_found: ਫ਼ਾਈਲ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ + no_data: ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਿੱਚ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ + confirm_reset: "ਇਹ ਇਸ \\n ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਸਾਰੇ ਉਤਪਾਦਾਂ ਤੇ ਸਟਾਕ ਪੱਧਰ ਨੂੰ ਜ਼ੀਰੋ ਤੇ ਸੇਟ ਕਰੇਗਾ ਜੋ ਅੱਪਲੋਡ ਕੀਤੀ ਫਾਈਲ ਵਿੱਚ ਮੌਜੂਦ ਨਹੀਂ ਹਨ" model: + no_file: "ਗਲਤੀ: ਕੋਈ ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤੀ ਗਈ" + could_not_process: "ਫਾਇਲ ਸੰਸਾਧਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ: ਅਵੈਧ ਫਾਇਲ ਕਿਸਮ" + incorrect_value: ਗਲਤ ਵਲਯੂ + conditional_blank: ਜੇਕਰ unit_type ਖਾਲੀ ਹੈ ਤਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ + no_product: ਡੇਟਾਬੇਸ ਵਿੱਚ ਕਿਸੇ ਉਤਪਾਦ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ + not_found: ਡੇਟਾਬੇਸ ਵਿੱਚ ਨਹੀਂ ਮਿਲਿਆ + category_not_found: ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਸ਼੍ਰੇਣੀਆਂ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ। ਉਤਪਾਦ ਇਮਪੋਰਟ ਪੇਜ ਤੇ ਚੁਣਨ ਲਈ ਸਹੀ ਸ਼੍ਰੇਣੀਆਂ ਵੇਖੋ, ਜਾਂ ਜਾਂਚ ਕਰੋ ਕਿ ਕੋਈ ਗਲਤ ਸਪੈਲਿੰਗ ਤਾਂ ਨਹੀਂ ਹੈ। + not_updatable: ਉਤਪਾਦ ਇਮਪੋਰਟ ਰਾਹੀਂ ਮੌਜੂਦਾ ਉਤਪਾਦਾਂ ਤੇ ਅਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ + values_must_be_same: ਸਮਾਨ ਨਾਮ ਵਾਲੇ ਉਤਪਾਦਾਂ ਲਈ ਇੱਕੋ ਜਿਹਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ blank: ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ + products_no_permission: ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ + inventory_no_permission: ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਉਤਪਾਦਕ ਲਈ ਇਨਵੇਂਟਰੀ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ + none_saved: ਕਿਸੇ ਵੀ ਉਤਪਾਦ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਗਿਆ + line_number: "ਲਾਈਨ %{number}:" + encoding_error: "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀ ਸਰੋਤ ਫਾਈਲ ਦੀ ਭਾਸ਼ਾ ਸੈਟਿੰਗਾਂ ਦੀ ਜਾਂਚ ਕਰੋ ਅਤੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ UTF-8 ਇੰਕੋਡਿੰਗ ਨਾਲ ਸੇਵ ਕੀਤੀ ਗਈ ਹੈ।" + unexpected_error: "ਫਾਈਲ ਖੋਲ੍ਹਣ ਦੌਰਾਨ ਉਤਪਾਦ ਇਮਪੋਰਟ ਵਿੱਚ ਇੱਕ ਅਣਕਿਆਸੀ ਗਲਤੀ ਆਈ: %{error_message}" + malformed_csv: "ਉਤਪਾਦ ਇਮਪੋਰਟ ਨੂੰ ਇੱਕ ਨੁਕਸਦਾਰ CSV ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ: %{error_message}" index: + notice: "ਨੋਟਿਸ" + beta_notice: "ਇਹ ਫ਼ੀਚਰ ਅਜੇ ਵੀ ਬੀਟਾ ਵਿੱਚ ਹੈ: ਤੁਸੀਂ ਇਸਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ ਕੁਝ ਤਰੁੱਟੀਆਂ ਦਾ ਅਨੁਭਵ ਕਰ ਸਕਦੇ ਹੋ। ਕਿਰਪਾ ਕਰਕੇ ਸਮਰਥਨ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਵਿੱਚ ਸੰਕੋਚ ਨਾ ਕਰੋ।" + select_file: ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਇੱਕ ਸਪ੍ਰੈਡਸ਼ੀਟ ਚੁਣੋ + spreadsheet: ਸਪ੍ਰੈਡਸ਼ੀਟ + choose_import_type: ਇਮਪੋਰਟ ਦੀ ਕਿਸਮ ਚੁਣੋ + import_into: ਇਮਪੋਰਟ ਦੀ ਕਿਸਮ + product_list: ਉਤਪਾਦਾਂ ਦੀ ਸੂਚੀ + inventories: ਇਨਵੇਂਟਰੀਆਂ import: ਇਮਪੋਰਟ + upload: ਅੱਪਲੋਡ ਕਰੋ + csv_templates: CSV ਟੈਮਪਲੇਟ + product_list_template: ਉਤਪਾਦ ਸੂਚੀ ਦਾ ਟੈਮਪਲੇਟ ਡਾਊਨਲੋਡ ਕਰੋ + inventory_template: ਇਨਵੈਂਟਰੀ ਟੈਂਪਲੇਟ ਡਾਊਨਲੋਡ ਕਰੋ + category_values: ਉਪਲਬਧ ਸ਼੍ਰੇਣੀਆਂ ਦੇ ਵੈਲਯੂ + product_categories: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀਆਂ + tax_categories: ਟੈਕਸ ਸ਼੍ਰੇਣੀਆਂ + shipping_categories: ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀਆਂ import: + review: ਸਮੀਖਿਆ import: ਇਮਪੋਰਟ save: ਸੇਵ ਕਰੋ + results: ਨਤੀਜੇ + save_imported: ਇਮਪੋਰਟ ਕੀਤੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸੇਵ ਕਰੋ + no_valid_entries: ਕੋਈ ਵੈਧ ਐਂਟਰੀਆਂ ਨਹੀਂ ਮਿਲੀਆਂ + none_to_save: ਸੇਵ ਕਰਨ ਲਈ ਕੋਈ ਐਂਟਰੀਆਂ ਨਹੀਂ ਹਨ + some_invalid_entries: ਇਮਪੋਰਟ ਕੀਤੀ ਫਾਈਲ ਵਿੱਚ ਅਵੈਧ ਐਂਟਰੀਆਂ ਹਨ + fix_before_import: ਕਿਰਪਾ ਕਰਕੇ ਇਹਨਾਂ ਤਰੁੱਟੀਆਂ ਨੂੰ ਠੀਕ ਕਰੋ ਅਤੇ ਫਾਈਲ ਨੂੰ ਦੁਬਾਰਾ ਇਮਪੋਰਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ + save_valid?: ਹੁਣ ਲਈ ਵੈਧ ਐਂਟਰੀਆਂ ਨੂੰ ਸੇਵ ਕਰੋ ਅਤੇ ਬਾਕੀਆਂ ਨੂੰ ਤਿਆਗ ਦਿਓ? + no_errors: ਕੋਈ ਵੀ ਤਰੁੱਟੀਆਂ ਨਹੀਂ ਮਿਲੀ! + save_all_imported?: ਇਮਪੋਰਟ ਕੀਤੇ ਸਾਰੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸੇਵ ਕਰੋ? + options_and_defaults: ਇਮਪੋਰਟ ਵਿਕਲਪ ਅਤੇ ਡਿਫੌਲਟ + no_permission: ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ + not_found: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਡੇਟਾਬੇਸ ਵਿੱਚ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਿਆ + no_name: ਕੋਈ ਨਾਂ ਨਹੀਂ + blank_enterprise: ਕੁਝ ਉਤਪਾਦਾਂ ਲਈ ਕੋਈ ਵੀ ਪਰਿਭਾਸ਼ਿਤ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨਹੀਂ ਹੈ + reset_absent?: ਗੈਰਹਾਜ਼ਰ ਉਤਪਾਦਾਂ ਨੂੰ ਰੀਸੈਟ ਕਰੋ + reset_absent_tip: ਫਾਈਲ ਵਿੱਚ ਮੌਜੂਦ ਨਾ ਹੋਣ ਵਾਲੇ ਸਾਰੇ ਉਤਪਾਦਾਂ ਲਈ ਸਟਾਕ ਨੂੰ ਜ਼ੀਰੋ ਤੇ ਸੇਟ ਕਰੋ + overwrite_all: ਸਭ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰੋ + overwrite_empty: ਜੇਕਰ ਖਾਲੀ ਹੈ ਤਾਂ ਓਵਰਰਾਈਟ ਕਰੋ + default_stock: ਸਟਾਕ ਦਾ ਪੱਧਰ ਸੇਟ ਕਰੋ + default_tax_cat: ਟੈਕਸ ਸ਼੍ਰੇਣੀ ਸੇਟ ਕਰੋ + default_shipping_cat: ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀ ਸੇਟ ਕਰੋ + default_available_date: ਉਪਲਬਧ ਮਿਤੀ ਸੇਟ ਕਰੋ + validation_overview: ਇਮਪੋਰਟ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਸੰਖੇਪ ਜਾਣਕਾਰੀ + entries_found: ਇੰਪੋਰਟ ਕੀਤੀ ਫਾਈਲ ਵਿੱਚ ਐਂਟਰੀਆਂ ਮਿਲੀਆਂ + entries_with_errors: ਆਈਟਮਾਂ ਵਿੱਚ ਤਰੁੱਟੀਆਂ ਹਨ ਅਤੇ ਇਮਪੋਰਟ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ + products_to_create: ਉਤਪਾਦ ਬਣਾਏ ਜਾਣਗੇ + products_to_update: ਉਤਪਾਦ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾਣਗੇ + inventory_to_create: ਇਨਵੇਂਟਰੀ ਆਈਟਮਾਂ ਬਣਾਈਆਂ ਜਾਣਗੀਆਂ + inventory_to_update: ਇਨਵੇਂਟਰੀ ਆਈਟਮਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ + products_to_reset: ਮੌਜੂਦਾ ਉਤਪਾਦਾਂ ਦਾ ਸਟਾਕ ਨੂੰ ਜ਼ੀਰੋ ਤੇ ਰੀਸੈਟ ਹੋ ਜਾਵੇਗਾ + inventory_to_reset: ਮੌਜੂਦਾ ਇਨਵੇਂਟਰੀ ਆਈਟਮਾਂ ਦਾ ਸਟਾਕ ਨੂੰ ਜ਼ੀਰੋ ਤੇ ਰੀਸੈਟ ਹੋ ਜਾਵੇਗਾ + line: ਲਾਈਨ + item_line: ਆਈਟਮ ਲਾਈਨ + import_review: + not_updatable_tip: "ਮੌਜੂਦਾ ਉਤਪਾਦਾਂ ਲਈ ਥੋਕ ਇਮਪੋਰਟ ਰਾਹੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਖੇਤਰਾਂ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:" + fields_ignored: ਜਦੋਂ ਇਮਪੋਰਟ ਕੀਤੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸੇਵ ਕੀਤੇ ਜਾਣ ਤੇ ਇਹਨਾਂ ਖੇਤਰਾਂ ਨੂੰ ਅਣਡਿੱਠ ਕੀਤਾ ਜਾਵੇਗਾ। + entries_table: + not_updatable: ਮੌਜੂਦਾ ਉਤਪਾਦਾਂ ਤੇ ਥੋਕ ਇਮਪੋਰਟ ਦੁਆਰਾ ਇਸ ਖੇਤਰ ਨੂੰ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ + save_results: + final_results: ਅੰਤਿਮ ਨਤੀਜੇ ਇਮਪੋਰਟ ਕਰੋ + products_created: ਉਤਪਾਦ ਬਣਾਏ ਗਏ + products_updated: ਉਤਪਾਦ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ + inventory_created: ਇਨਵੇਂਟਰੀ ਆਈਟਮਾਂ ਬਣਾਈਆਂ ਗਈਆਂ + inventory_updated: ਇਨਵੇਂਟਰੀ ਆਈਟਮਾਂ ਅਪਡੇਟ ਕੀਤੀਆਂ ਗਈਆਂ + products_reset: Products had stock level reset to zero + inventory_reset: ਇਨਵੇਂਟਰੀ ਦਾ ਸਟਾਕ ਪੱਧਰ ਜ਼ੀਰੋ ਤੇ ਰੀਸੈਟ ਕੀਤਾ ਗਿਆ ਸੀ + all_saved: "ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸੇਵ ਕੀਤੀਆਂ ਗਈਆਂ" + some_saved: "ਆਈਟਮਾਂ ਸਫਲਤਾਪੂਰਵਕ ਸੇਵ ਕੀਤੀਆਂ ਗਈਆਂ" + save_errors: ਤਰੁੱਟੀਆਂ ਸੇਵ ਕਰੋ + import_again: ਕੋਈ ਹੋਰ ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਕਰੋ + view_products: ਉਤਪਾਦ ਪੇਜ ਤੇ ਜਾਓ + view_inventory: Go To Inventory Page product_headings: + distributor: ਵਿਤਰਕ producer: ਉਤਪਾਦਕ sku: SKU name: ਨਾਮ category: ਸ਼੍ਰੇਣੀ description: ਵਰਣਨ + unit_type: ਯੂਨਿਟ ਦੀ ਕਿਸਮ variant_unit_name: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਦਾ ਨਾਮ - price: '"ਕੀਮਤ"' + price: ਕੀਮਤ on_hand: ਹੱਥ ਵਿਚ on_demand: ਡਿਮਾਂਡ ਤੇ shipping_category: ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀ tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ variant_overrides: + loading_flash: + loading_inventory: ਇਨਵੇਂਟਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ index: title: ਇਨਵੇਂਟਰੀ + description: ਆਪਣੇ ਇੰਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਇਨਵੇਂਟਰੀ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਇਸ ਪੇਜ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇੱਥੇ ਸੇਟ ਕੀਤਾ ਕੋਈ ਵੀ ਉਤਪਾਦ ਵੇਰਵਾ 'ਉਤਪਾਦ' ਪੇਜ ਉਤੇ ਸੇਟ ਕੀਤੇ ਵਰਣਨ ਨੂੰ ਓਵਰਰਾਈਡ ਕਰ ਦੇਵੇਗਾ + enable_reset?: ਸਟਾਕ ਰੀਸੇਟ ਸਮਰੱਥ ਕਰੀਏ? + default_stock: "ਡਿਫੌਲਟ ਸਟਾਕ" + inherit?: ਅਪਣਾਈਏ? add: ਜੋੜੋ + hide: ਲੁਕਾਓ + import_date: ਇਮਪੋਰਟ ਕੀਤੇ ਗਏ + select_a_shop: ਇੱਕ ਸ਼ਾਪ ਚੁਣੋ + review_now: ਹੁਣੇ ਸਮੀਖਿਆ ਕਰੋ + new_products_alert_message: ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ %{new_product_count} ਨਵੇਂ ਉਤਪਾਦ ਉਪਲਬਧ ਹਨ। + currently_empty: ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਇਸ ਸਮੇਂ ਖਾਲੀ ਹੈ + no_matching_products: ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਕੋਈ ਮੇਲ ਖਾਂਦੇ ਉਤਪਾਦ ਨਹੀਂ ਮਿਲੇ + no_hidden_products: ਇਸ ਇਨਵੇਂਟਰੀ ਤੋਂ ਕੋਈ ਉਤਪਾਦ ਲੁਕਾਇਆ ਨਹੀਂ ਗਿਆ ਹੈ + no_matching_hidden_products: ਕੋਈ ਵੀ ਲੁਕਵੇਂ ਉਤਪਾਦ ਤੁਹਾਡੇ ਖੋਜ ਮਾਪਦੰਡ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ + no_new_products: ਇਸ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕੋਈ ਨਵੇਂ ਉਤਪਾਦ ਉਪਲਬਧ ਨਹੀਂ ਹਨ + no_matching_new_products: ਕੋਈ ਵੀ ਨਵਾਂ ਉਤਪਾਦ ਤੁਹਾਡੇ ਖੋਜ ਮਾਪਦੰਡ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ + inventory_powertip: ਇਹ ਤੁਹਾਡੇ ਉਤਪਾਦਾਂ ਦੀ ਇਨਵੇਂਟਰੀ ਹੈ। ਆਪਣੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਉਤਪਾਦ ਜੋੜਨ ਲਈ, ਵਿਊਇੰਗ ਡ੍ਰੌਪਡਾਉਨ ਵਿੱਚੋਂ 'ਨਵੇਂ ਉਤਪਾਦ' ਚੁਣੋ। + hidden_powertip: ਇਹ ਉਤਪਾਦ ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਤੋਂ ਲੁਕਾਏ ਗਏ ਹਨ ਅਤੇ ਤੁਹਾਡੀ ਸ਼ਾਪ ਵਿੱਚ ਜੋੜਣ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹੋਣਗੇ। ਤੁਸੀਂ ਆਪਣੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਉਤਪਾਦ ਜੋੜਨ ਲਈ 'ਜੋੜੋ' ਉਤੇ ਕਲਿੱਕ ਕਰ ਸਕਦੇ ਹੋ। + new_powertip: ਇਹ ਉਤਪਾਦ ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਜੋੜੇ ਜਾਣ ਲਈ ਉਪਲਬਧ ਹਨ। ਆਪਣੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਕਿਸੇ ਉਤਪਾਦ ਨੂੰ ਜੋੜਨ ਲਈ 'ਜੋੜੋ' 'ਤੇ ਕਲਿੱਕ ਕਰੋ, ਜਾਂ ਇਸਨੂੰ ਵੇਖੇ ਜਾਣ ਤੋਂ ਛੁਪਾਉਣ ਲਈ 'ਲੁਕਾਓ' ਉਤੇ ਕਲਿੱਕ ਕਰੋ। ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਕਦੇ ਵੀ ਆਪਣਾ ਮਨ ਬਦਲ ਸਕਦੇ ਹੋ! + controls: + back_to_my_inventory: ਮੇਰੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਵਾਪਸ ਜਾਓ orders: + edit: + order_sure_want_to: ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਇਸ ਆਰਡਰ ਨੂੰ %{event} ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? + voucher_tax_included_in_price: "%{label} (ਵਾਊਚਰ ਵਿੱਚ ਟੈਕਸ ਸ਼ਾਮਲ)" + invoice_email_sent: 'ਇਨਵੌਇਸ ਈਮੇਲ ਭੇਜ ਦਿੱਤੀ ਗਈ ਹੈ''' + order_email_resent: 'ਆਰਡਰ ਈਮੇਲ ਦੁਬਾਰਾ ਭੇਜ ਦਿੱਤੀ ਗਈ ਹੈ''' bulk_management: + tip: "ਬਹੁਤ ਸਾਰੇ ਆਰਡਰਾਂ ਵਿੱਚ ਉਤਪਾਦ ਦੀ ਮਾਤਰਾ ਨੂੰ ਬਦਲਣ ਲਈ ਇਸ ਪੇਜ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਲੋੜ ਪੈਣ ਤੇ ਉਤਪਾਦਾਂ ਨੂੰ ਆਰਡਰਾਂ ਤੋਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।" + shared: "ਸੰਸਾਧਨ ਸਾਂਝਾ ਕੀਤਾ?" + order_no: "ਆਰਡਰ ਨੰਬਰ" + order_date: "ਤੇ ਪੂਰਾ ਹੋਇਆ" + max: "ਅਧਿਕਤਮ" + product_unit: "ਉਤਪਾਦ: ਯੂਨਿਟ" + weight_volume: "ਭਾਰ/ਮਾਤਰਾ (ਗ੍ਰਾਮ)" + ask: "ਪੁੱਛੋ?" page_title: "ਥੋਕ ਆਰਡਰ ਪ੍ਰਬੰਧਨ" + actions_delete: "ਚੁਣੇ ਗਏ ਨੂੰ ਹਟਾਓ" + loading: "ਆਰਡਰ ਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" + no_results: "ਕੋਈ ਆਰਡਰ ਨਹੀਂ ਮਿਲਿਆ।" + group_buy_unit_size: "ਸਮੂਹ ਖਰੀਦ ਯੂਨਿਟ ਦਾ ਸਾਈਜ਼" + total_qtt_ordered: "ਆਰਡਰ ਕੀਤੀ ਕੁੱਲ ਮਾਤਰਾ" + max_qtt_ordered: "ਆਰਡਰ ਕੀਤੀ ਗਈ ਅਧਿਕਤਮ ਮਾਤਰਾ" + current_fulfilled_units: "ਮੌਜੂਦਾ ਪੂਰੀਆਂ ਕੀਤੀਆਂ ਯੂਨਿਟਾਂ" + max_fulfilled_units: "ਅਧਿਕਤਮ ਮੁਕੰਮਲ ਹੋਈਆਂ ਯੂਨਿਟਾਂ" + order_error: "ਤੁਹਾਡੇ ਵੱਲੋਂ ਆਰਡਰ ਅੱਪਡੇਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਤਰੁੱਟੀਆਂ ਨੂੰ ਹੱਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ।\\nਲਾਲ ਕਿਨਾਰਿਆਂ ਵਾਲੇ ਕਿਸੇ ਵੀ ਖੇਤਰ ਵਿੱਚ ਤਰੁੱਟੀਆਂ ਹੁੰਦੀਆਂ ਹਨ।" + variants_without_unit_value: "ਚੇਤਾਵਨੀ: ਕੁਝ ਵੇਰੀਐਂਟਸ ਦੀ ਕੋਈ ਯੂਨਿਟ ਵੈਲਯੂ ਨਹੀਂ ਹੁੰਦੀ" all: "ਸਾਰੇ" + select_variant: "ਇੱਕ ਵੇਰੀਐਂਟ ਚੁਣੋ" + note: + note_label: "ਨੋਟ:" + no_note_present: "ਕੋਈ ਨੋਟ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।" + enterprise: + select_outgoing_oc_products_from: ਇਥੋਂ ਬਾਹਰ ਜਾਣ ਵਾਲੇ OC ਉਤਪਾਦਾਂ ਦੀ ਚੋਣ ਕਰੋ enterprises: index: title: ਐਂਟਰਪ੍ਰਾਈਜ਼ + new_enterprise: ਐਂਟਰਪ੍ਰਾਈਜ਼ਜ਼ + producer?: "ਉਤਪਾਦਕ?" + package: ਪੈਕੇਜ + status: ਸਥਿਤੀ + manage: ਪ੍ਰਬੰਧਿਤ ਕਰੋ form: + about_us: + legend: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + desc_short: ਸੰਖੇਪ ਵਰਣਨ + desc_short_placeholder: ਇੱਕ ਜਾਂ ਦੋ ਵਾਕਾਂ ਵਿੱਚ ਸਾਨੂੰ ਆਪਣੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਾਰੇ ਦੱਸੋ + desc_long: ਸਾਡੇ ਬਾਰੇ ਵਿੱਚ + desc_long_placeholder: ਗਾਹਕਾਂ ਨੂੰ ਆਪਣੇ ਬਾਰੇ ਦੱਸੋ। ਇਹ ਜਾਣਕਾਰੀ ਤੁਹਾਡੇ ਜਨਤਕ ਪ੍ਰੋਫਾਈਲ ਤੇ ਵਿਖਾਈ ਦਿੰਦੀ ਹੈ। + address: + legend: "ਪਤਾ" business_details: + legend: "ਕਾਰੋਬਾਰੀ ਵੇਰਵੇ" + upload: 'ਅੱਪਲੋਡ''' + abn: ABN + abn_placeholder: ਜਿਵੇਂ - 99 123 456 789 + acn: ACN + acn_placeholder: ਜਿਵੇਂ - 99 123 456 789 + display_invoice_logo: ਇਨਵੌਇਸ ਤੇ ਲੋਗੋ ਡਿਸਪਲੇ ਕਰੋ + invoice_text: ਇਨਵੌਇਸ ਦੇ ਅੰਤ ਵਿੱਚ ਅਨੁਕੂਲਿਤ ਟੈਕਸਟ ਸ਼ਾਮਲ ਕਰੋ + terms_and_conditions: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ" + remove_terms_and_conditions: "ਫਾਇਲ ਹਟਾਓ" + uploaded_on: "ਇਸਤੇ ਅੱਪਲੋਡ ਕੀਤਾ ਗਿਆ" + reset_form: "ਫਾਰਮ ਰੀਸੈਟ ਕਰੋ" business_address_legend: "ਕਾਰੋਬਾਰੀ ਪਤਾ" + invoice_item_sorting_legend: "ਇਨਵੌਇਸ ਆਈਟਮ ਦੀ ਛਾਂਟੀ" + sort_items_by_supplier?: ਸਪਲਾਇਰ ਦੁਆਰਾ ਆਈਟਮਾਂ ਨੂੰ ਕ੍ਰਮਬੱਧ ਕਰੋ? + sort_items_by_supplier_tip: "ਜਦੋਂ ਸਮਰੱਥ ਹੋਦਾ ਹੈ, ਤਾਂ ਆਈਟਮਾਂ ਨੂੰ ਸਪਲਾਇਰ ਦੇ ਨਾਂ ਦੁਆਰਾ ਛਾਂਟਿਆ ਜਾਣਗੀਆਂ।" + enabled: ਸਮਰੱਥ ਕਰੋ + disabled: ਅਸਮਰੱਥ ਕਰੋ + business_address: + company_legal_name: ਕੰਪਨੀ ਦਾ ਕਾਨੂੰਨੀ ਨਾਂ + company_placeholder: ਜਿਵੇਂ - Inc. + address1: ਕਾਨੂੰਨੀ ਪਤਾ + address1_placeholder: 123 ਹਾਈ ਸੇਂਟ + address2: ਪਤਾ (ਜਾਰੀ) + legal_phone_number: ਕਾਨੂੰਨੀ ਫੋਨ ਨੰਬਰ + phone_placeholder: "98 123 4565" + select_country: "ਦੇਸ਼ ਚੁਣੋ" + select_state: "ਰਾਜ ਚੁਣੋ" contact: + legend: "ਸੰਪਰਕ" name: ਨਾਮ + name_placeholder: ਜਿਵੇਂ - ਗੁਸਤਾਵ ਪ੍ਲਮ + email_address: ਪਬਲਿਕ ਈਮੇਲ ਪਤਾ + email_address_placeholder: ਜਿਵੇਂ ਕਿ inquiries@fresh-food.com + email_address_tip: "ਇਹ ਈਮੇਲ ਐਡਰੈੱਸ ਤੁਹਾਡੇ ਪਬਲਿਕ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਦਿਸੇਗਾ।" phone: ਫੋਨ + phone_placeholder: ਜਿਵੇਂ - 98 7654 3210 + whatsapp_phone: WhatsApp ਫੋਨ ਨੰਬਰ + whatsapp_phone_placeholder: ਜਿਵੇਂ - +61 4 9876 5432 + whatsapp_phone_tip: "ਇਹ ਨੰਬਰ ਤੁਹਾਡੇ ਪਬਲਿਕ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ WhatsApp ਲਿੰਕ ਦੇ ਰੂਪ ਵਿੱਚ ਖੋਲ੍ਹਣ ਲਈ ਵਿਖਾਇਆ ਜਾਵੇਗਾ।" + website: ਵੈਬਸਾਈਟ + website_placeholder: ਜਿਵੇਂ ਕਿ www.tuffles.com enterprise_fees: + legend: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ" name: ਨਾਮ fee_type: ਫੀਸ ਦੀ ਕਿਸਮ + manage_fees: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ + no_fees_yet: ਤੁਹਾਡੀ ਹਾਲੇ ਕੋਈ ਵੀ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ ਨਹੀਂ ਹੈ। + create_button: ਹੁਣੇ ਇੱਕ ਬਣਾਓ + enterprise_permissions: + legend: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਅਨੁਮਤੀਆਂ" + enterprise_relationships: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸਬੰਧ + images: + legend: "ਫੋਟੋ" + logo: ਲੋਗੋ + promo_image_placeholder: 'ਇਹ ਫੋਟੋ "ਸਾਡੇ ਬਾਰੇ ਵਿੱਚ" ਪ੍ਰਦਰਸ਼ਿਤ ਹੈ' + promo_image_note1: 'ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ:''' + promo_image_note2: ਇੱਥੇ ਅੱਪਲੋਡ ਕੀਤੀ ਕਿਸੇ ਵੀ ਪ੍ਰੋਮੋ ਦੀ ਫੋਟੋ ਨੂੰ 1200 x 260 ਵਿੱਚ ਕੱਟਿਆ ਜਾਵੇਗਾ। + promo_image_note3: ਪ੍ਰੋਮੋ ਫੋਟੋ ਕਿਸੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਪ੍ਰੋਫਾਈਲ ਪੇਜ ਦੇ ਉਪਰ ਦੀ ਔਰ ਅਤੇ ਪੌਪ-ਅਪ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। + remove_logo: "ਫੋਟੋ ਹਟਾਓ" + remove_promo_image: "ਫੋਟੋ ਹਟਾਓ" + inventory_settings: + legend: "ਇਨਵੇਂਟਰੀ ਸੈਟਿੰਗਾਂ" + text1: ਤੁਸੀਂ ਆਪਣੀ ਇਨਵੇਂਟਰੀ ਰਾਹੀਂ ਸਟਾਕ ਦੇ ਪੱਧਰ ਅਤੇ ਕੀਮਤਾਂ ਦੇ ਪ੍ਰਬੰਧਨ ਦਾ ਵਿਕਲਪ ਚੁਣ ਸਕਦੇ ਹੋ + inventory: ਇਨਵੇਂਟਰੀ + text2: > + ਜੇਕਰ ਤੁਸੀਂ ਇਨਵੇਂਟਰੀ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਚੁਣ ਸਕਦੇ ਹੋ ਕਿ + ਤੁਹਾਡੇ ਸਪਲਾਇਰਾਂ ਦੁਆਰਾ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਨਵੇਂ ਉਤਪਾਦਾਂ ਨੂੰ ਸਟਾਕ ਕੀਤੇ ਜਾਣ ਤੋਂ + ਪਹਿਲਾਂ ਤੁਹਾਡੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ ਜਾਂ ਨਹੀਂ। ਜੇਕਰ ਤੁਸੀਂ + ਆਪਣੇ ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਲਈ ਆਪਣੀ ਇਨਵੇਂਟਰੀ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ + ਤਾਂ ਤੁਹਾਨੂੰ ਹੇਠਾਂ 'ਸਿਫ਼ਾਰਸ਼ੀ' ਵਿਕਲਪ ਦੀ ਚੋਣ ਕਰਨੀ ਚਾਹੀਦੀ ਹੈ: + preferred_product_selection_from_inventory_only_yes: ਨਵੇਂ ਉਤਪਾਦ ਮੇਰੇ ਸ਼ੌਪਫ੍ਰੰਟ ਵਿੱਚ ਰੱਖੇ ਜਾ ਸਕਦੇ ਹਨ (ਸਿਫਾਰਿਸ਼ ਕੀਤੀ ਗਈ) + preferred_product_selection_from_inventory_only_no: ਮੇਰੇ ਸ਼ੌਪਫਰੰਟ ਵਿੱਚ ਰੱਖੇ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਨਵੇਂ ਉਤਪਾਦ ਮੇਰੀ ਇਨਵੇਂਟਰੀ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ। payment_methods: + legend: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" name: ਨਾਮ + applies: ਲਾਗੂ ਹੁੰਦਾ ਹੈ? + manage: ਭੁਗਤਾਨ ਦੇ ਢੰਗਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ + no_method_yet: ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਤੱਕ ਕੋਈ ਭੁਗਤਾਨ ਦਾ ਢੰਗ ਨਹੀਂ ਹੈ। + create_button: ਭੁਗਤਾਨ ਦਾ ਨਵਾਂ ਢੰਗ ਬਣਾਓ + create_one_button: ਹੁਣੇ ਇੱਕ ਬਣਾਓ primary_details: + legend: "ਪ੍ਰਾਥਮਿਕ ਵੇਰਵੇ" name: ਨਾਮ + name_placeholder: ਜਿਵੇਂ - ਪ੍ਰੋਫੈਸਰ ਪਲੱਮ ਦੇ ਬਾਇਓਡਾਇਨਾਮਿਕ ਟਰਫਲਜ਼ groups: ਸਮੂਹ + groups_tip: ਕੋਈ ਵੀ ਸਮੂਹ ਜਾਂ ਖੇਤਰ ਚੁਣੋ ਜਿਸ ਦੇ ਤੁਸੀਂ ਮੈਂਬਰ ਹੋ। ਇਹ ਗਾਹਕਾਂ ਨੂੰ ਤੁਹਾਡੇ ਉਦਯੋਗ ਨੂੰ ਲੱਭਣ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ। + groups_placeholder: ਉਪਲਬਧ ਸਮੂਹਾਂ ਨੂੰ ਖੋਜਣ ਲਈ ਟਾਈਪ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰੋ... + primary_producer: ਮੁੱਖ ਉਤਪਾਦਕ? + primary_producer_tip: ਜੇਕਰ ਤੁਸੀਂ ਭੋਜਨ ਦੇ ਮੁੱਖ ਉਤਪਾਦਕ ਹੋ ਤਾਂ 'ਉਤਪਾਦਕ' ਚੁਣੋ। producer: ਉਤਪਾਦਕ + any: ਕੋਈ ਵੀ none: ਕੋਈ ਨਹੀਂ + own: ਆਪਣਾ + sells: ਵੇਚਦਾ ਹੈ + sells_tip: "ਕੋਈ ਨਹੀਂ - ਐਂਟਰਪ੍ਰਾਈਜ਼ ਗਾਹਕਾਂ ਨੂੰ ਸਿੱਧੇ ਤੌਰ ਤੇ ਨਹੀਂ ਵੇਚਦਾ।
ਆਪਣਾ - ਐਂਟਰਪ੍ਰਾਈਜ਼ ਗਾਹਕਾਂ ਨੂੰ ਆਪਣੇ ਉਤਪਾਦ ਵੇਚਦਾ ਹੈ।
ਕੋਈ ਵੀ - ਐਂਟਰਪ੍ਰਾਈਜ਼ ਆਪਣੇ ਜਾਂ ਹੋਰ ਉਦਯੋਗਾਂ ਦੇ ਉਤਪਾਦ ਵੇਚ ਸਕਦਾ ਹੈ।
" + visible_in_search: ਖੋਜ ਵਿੱਚ ਦਿਸਦਾ ਹੈ? + visible_in_search_tip: "\"ਸ਼ਾਪਾਂ
1. ਪਬਲਿਕ ਤੌਰ ਤੇ OFN ਦੇ ਨਕਸ਼ੇ ਅਤੇ ਲਿਸਟਿੰਗਜ਼ ਤੇ ਵਿਖਾਈ ਦੇ ਸਕਦੀਆਂ ਹਨ।
2. ਨਕਸ਼ਿਆਂ ਅਤੇ ਲਿਸਟਿੰਗਜ਼ ਤੇ ਲੁਕੀਆਂ ਹੋਈਆਂ ਹਨ ਪਰ ਦੂਜੀਆਂ ਸ਼ਾਪਾਂ ਦੁਆਰਾ ਹਵਾਲਾ ਦਿੱਤੀਆਂ ਗਈਆਂ ਹਨ ਅਤੇ ਉਹਨਾਂ ਦੇ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ ਲਿੰਕ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।
3. ਪੂਰੀ ਤਰ੍ਹਾਂ ਛੁਪੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ।\"" + visible: ਪਬਲਿਕ + not_visible: ਲੁਕੀਆ ਹੋਇਆ + hidden: ਸਾਰੇ ਹਵਾਲੇ ਲੁਕਾਓ + properties: + legend: "ਪ੍ਰਾਪਰਟੀਜ਼" + permalink: + permalink: ਸਥਾਈ ਲਿੰਕ (ਕੋਈ ਖਾਲੀ ਥਾਂ ਨਹੀਂ) + permalink_tip: "ਇਹ ਸਥਾਈ ਲਿੰਕ ਤੁਹਾਡੀ ਦੁਕਾਨ ਦਾ URL ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ: %{link}ਤੁਹਾਡੀ-ਸ਼ਾਪ-ਦਾ ਨਾਮ/ਸ਼ਾਪ" + link_to_front: ਸ਼ਾਪਫਰੰਟ ਨਾਲ ਲਿੰਕ ਕਰੋ + link_to_front_tip: ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਤੁਹਾਡੇ ਸ਼ੌਪਫਰੰਟ ਦਾ ਸਿੱਧਾ ਲਿੰਕ। + ofn_uid: OFN UID + ofn_uid_tip: ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਇੰਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਵਰਤੋਂ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਵਿਸ਼ੇਸ਼ ਆਈਡੀ। shipping_methods: + legend: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" name: "ਨਾਮ" + applies: "ਕਿਰਿਆਸ਼ੀਲ?" + manage: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" + create_button: "ਸ਼ਿਪਿੰਗ ਦੇ ਨਵੇਂ ਢੰਗ ਬਣਾਓ" + create_one_button: "ਹੁਣੇ ਇੱਕ ਬਣਾਓ" + no_method_yet: "ਤੁਹਾਡੇ ਕੋਲ ਹਾਲੇ ਤੱਕ ਕੋਈ ਵੀ ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ ਨਹੀਂ ਹਨ।" shop_preferences: + legend: "ਸ਼ਾਪ ਤਰਜੀਹਾਂ" + shopfront_requires_login: "ਇੱਕ ਪਬਲਿਕ ਤੌਰ ਉਤੇ ਵਿਖਾਈ ਦੇਣ ਵਾਲੀ ਸ਼ਾਪ?" + shopfront_requires_login_tip: "ਚੁਣੋ ਕਿ ਕੀ ਗਾਹਕਾਂ ਨੂੰ ਸ਼ਾਪਫ੍ਰੰਟ ਵੇਖਣ ਲਈ ਲੌਗਇਨ ਕਰਨਾ ਪਵੇਗਾ ਜਾਂ ਇਹ ਸਾਰਿਆਂ ਨੂੰ ਖਾਈ ਵਿਖਾਈ ਦਵੇਗੀ।" + shopfront_requires_login_false: "ਪਬਲਿਕ" + shopfront_requires_login_true: "ਸਿਰਫ਼ ਰਜਿਸਟਰਡ ਗਾਹਕਾਂ ਨੂੰ ਵਿਖੇਗਾ" + recommend_require_login: "ਆਰਡਰ ਬਦਲੇ ਜਾਣ ਲਈ ਅਸੀਂ ਉਪਭੋਗਤਾਵਾਂ ਦੇ ਲੌਗਇਨ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ।" + allow_guest_orders: "ਗੈਸਟ ਆਰਡਰ" + allow_guest_orders_tip: "ਇੱਕ ਗੈਸਟ ਵਜੋਂ ਚੈਕਆਉਟ ਦੀ ਆਗਿਆ ਦਿਓ ਜਾਂ ਇੱਕ ਰਜਿਸਟਰਡ ਉਪਭੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।" + allow_guest_orders_false: "ਆਰਡਰ ਕਰਨ ਲਈ ਲੌਗਇਨ ਦੀ ਲੋੜ ਹੈ" + allow_guest_orders_true: "ਗੈਸਟ ਚੈਕਆਉਟ ਦੀ ਆਗਿਆ ਦਿਓ" + allow_order_changes: "ਆਰਡਰ ਬਦਲੋ" + allow_order_changes_tip: "ਜਦ ਤੱਕ ਆਰਡਰ ਸਾਈਕਲ ਖੁੱਲਾ ਹੈ, ਗਾਹਕਾਂ ਨੂੰ ਆਪਣਾ ਆਰਡਰ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿਓ।" + allow_order_changes_false: "ਕੀਤੇ ਗਏ ਆਰਡਰ ਨੂੰ ਬਦਲਿਆ/ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" + allow_order_changes_true: "ਆਰਡਰ ਸਾਈਕਲ ਖੁੱਲੇ ਹੋਣ ਤੇ ਗਾਹਕ ਆਰਡਰ ਬਦਲ/ਰੱਦ ਕਰ ਸਕਦੇ ਹਨ" + enable_subscriptions: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ" + enable_subscriptions_tip: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਕਾਰਜਕੁਸ਼ਲਤਾ ਨੂੰ ਸਮਰੱਥ ਕਰੋ?" + enable_subscriptions_false: "ਅਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + enable_subscriptions_true: "ਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + customer_names_in_reports: "ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਗਾਹਕ ਦੇ ਨਾਮ" + customer_names_tip: "ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਆਪਣੇ ਗਾਹਕਾਂ ਦੇ ਨਾ ਵੇਖਣ ਲਈ ਆਪਣੇ ਸਪਲਾਇਰਾਂ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ" + customer_names_false: "ਅਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + customer_names_true: "ਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + shopfront_message: "ਸ਼ਾਪਫਰੰਟ ਸੰਦੇਸ਼" + shopfront_message_placeholder: > + ਗਾਹਕਾਂ ਦਾ ਸੁਆਗਤ ਕਰਨ ਅਤੇ ਤੁਹਾਡੇ ਨਾਲ ਖਰੀਦਦਾਰੀ ਕਰਨ ਦਾ ਢੰਗ ਦੱਸਣ ਲਈ ਇੱਕ ਵਿਕਲਪਿਕ + ਸੰਦੇਸ਼। ਜੇਕਰ ਟੈਕਸਟ ਇੱਥੇ ਦਰਜ ਕੀਤਾ ਗਿਆ ਹੈ ਤਾਂ ਉਹ ਹੋਮ ਟੈਬ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ + ਹੋਵੇਗਾ ਜਦੋਂ ਗਾਹਕ ਪਹਿਲੀ ਵਾਰ ਤੁਹਾਡੇ ਸ਼ਾਪ ਦੇ ਸਾਹਮਣੇ ਆਉਂਦੇ ਹਨ। + shopfront_message_link_tooltip: "ਲਿੰਕ ਪਾਓ / ਸੰਪਾਦਿਤ ਕਰੋ" + shopfront_message_link_prompt: "ਸਮਿਲਿਤ ਕਰਨ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ URL ਦਾਖਲ ਕਰੋ" + shopfront_closed_message: "ਸ਼ਾਪਫ੍ਰੰਟ ਦੇ ਬੰਦ ਹੋਣ ਦਾ ਸੰਦੇਸ਼" + shopfront_closed_message_placeholder: > + ਇੱਕ ਸੰਦੇਸ਼ ਜੋ ਇਸ ਬਾਰੇ ਵਧੇਰੇ ਵਿਸਤ੍ਰਿਤ ਵਿਆਖਿਆ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਕਿ ਤੁਹਾਡੀ + ਸ਼ਾਪ ਕਿਉਂ ਬੰਦ ਹੈ ਅਤੇ/ਜਾਂ ਗਾਹਕ ਇਸ ਦੇ ਦੁਬਾਰਾ ਖੁੱਲ੍ਹਣ ਦੀ ਉਮੀਦ ਕਦੋਂ ਕਰ ਸਕਦੇ + ਹਨ। ਇਹ ਤੁਹਾਡੀ ਸ਼ਾਪ ਤੇ ਉਦੋਂ ਹੀ ਪ੍ਰਦਰਸ਼ਿਤ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ + ਕਿਰਿਆਸ਼ੀਲ ਆਰਡਰ ਸਾਈਕਲ ਨਹੀਂ ਹੁੰਦਾ ਹੈ (ਯਾਨੀ ਜਦੋਂ ਸ਼ਾਪ ਬੰਦ ਹੈ)। + shopfront_category_ordering: "ਸ਼ਾਪਫਰੰਟ ਸ਼੍ਰੇਣੀ ਦੇ ਅਧਾਰ ਤੇ ਆਰਡਰ" + shopfront_category_ordering_note: "(ਉਪਰ ਤੋਂ ਥੱਲੇ)" + open_date: "ਖੁੱਲਣ ਦੀ ਮਿਤੀ" + close_date: "ਬੰਦ ਹੋਣ ਦੀ ਮਿਤੀ" + display_ordering_in_shopfront: "ਸ਼ਾਪਫਰੰਟ ਵਿੱਚ ਆਰਡਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ:" + shopfront_sort_by_category: "ਸ਼੍ਰੇਣੀ ਦੁਆਰਾ" + shopfront_sort_by_producer: "ਉਤਪਾਦਕ ਦੁਆਰਾ" shopfront_sort_by_category_placeholder: "ਸ਼੍ਰੇਣੀ" shopfront_sort_by_producer_placeholder: "ਉਤਪਾਦਕ" + display_remaining_stock: "ਜੇਕਰ ਹੱਥ ਵਿੱਚ ਸਟਾਕ ਘੱਟ ਹੈ ਤਾਂ ਬਾਕੀ ਬਚੇ ਸਟਾਕ ਨੂੰ ਸ਼ਾਪਫਰੰਟ ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" + display_remaining_stock_tip: "ਜਦੋਂ ਸਿਰਫ 3 ਜਾਂ ਉਸਤੋਂ ਘੱਟ ਚੀਜ਼ਾਂ ਬਚੀਆਂ ਹੋਣ ਤਾਂ ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਸੂਚਿਤ ਕਰੋ।" + enabled: "ਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + disabled: "ਅਸਮਰੱਥ ਕੀਤਾ ਗਿਆ" + social: + legend: "ਸਮਾਜਿਕ" + twitter_placeholder: "ਜਿਵੇਂ - @the_prof" + instagram_placeholder: "ਜਿਵੇਂ -the_prof" + facebook_placeholder: "ਜਿਵੇਂ- www.facebook.com/PageNameHere" + linkedin_placeholder: "ਜਿਵੇਂ - www.linkedin.com/in/YourNameHere" stripe_connect: + connect_with_stripe: "ਸਟ੍ਰਾਈਪ ਨਾਲ ਕਨੇਕਟ ਕਰੋ" + stripe_connect_intro: "ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਭੁਗਤਾਨ ਸਵੀਕਾਰ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਨਾਲ ਕਨੇਕਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਸ਼ੁਰੂਆਤ ਕਰਨ ਲਈ ਸੱਜੇ ਪਾਸੇ ਦਿੱਤੇ ਗਏ ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰੋ।" + stripe_account_connected: "ਸਟ੍ਰਾਈਪ ਖਾਤਾ ਕਨੇਕਟ ਹੈ।" + disconnect: "ਖਾਤਾ ਡਿਸਕਕਨੇਟ ਕਰੋ" confirm_modal: + title: ਸਟ੍ਰਾਈਪ ਨਾਲ ਕਨੇਕਟ ਕਰੋ + part1: ਸਟ੍ਰਾਈਪ ਇੱਕ ਭੁਗਤਾਨ ਪ੍ਰੋਸੈਸਿੰਗ ਸੇਵਾ ਹੈ ਜੋ OFN ਉਤੇ ਸ਼ਾਪਾਂ ਨੂੰ ਗਾਹਕਾਂ ਤੋਂ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਭੁਗਤਾਨ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ। + part2: ਇਸ ਫ਼ੀਚਰ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਆਪਣੇ ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਨੂੰ OFN ਨਾਲ ਕਨੇਕਟ ਕਰਨਾ ਹੋਵੇਗਾ। ਹੇਠਾਂ 'ਮੈਂ ਸਹਿਮਤ ਹਾਂ' ਉਤੇ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਤੁਸੀਂ ਸਟ੍ਰਾਈਪ ਵੈਬਸਾਈਟ ਤੇ ਰੀਡਾਇਰੈਕਟ ਹੋ ਜਾਵੋਗੇ, ਜਿੱਥੇ ਤੁਸੀਂ ਮੌਜੂਦਾ ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਨੂੰ ਕਨੇਕਟ ਕਰ ਸਕਦੇ ਹੋ, ਜਾਂ ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਪਹਿਲਾਂ ਤੋਂ ਕੋਈ ਖਾਤਾ ਨਹੀਂ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇੱਕ ਨਵਾਂ ਖਾਤਾ ਬਣਾ ਸਕਦੇ ਹੋ। + part3: ਇਹ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਨੂੰ ਤੁਹਾਡੀ ਤਰਫੋਂ ਗਾਹਕਾਂ ਤੋਂ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਭੁਗਤਾਨ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਵੇਗਾ। ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਆਪਣੇ ਖੁਦ ਦੇ ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਨੂੰ ਕਾਇਮ ਰੱਖਣ, ਫੀਸਾਂ ਦਾ ਭੁਗਤਾਨ ਕਰਨ ਅਤੇ ਕਿਸੇ ਵੀ ਚਾਰਜਬੈਕ ਅਤੇ ਗਾਹਕ ਸੇਵਾ ਨੂੰ ਖੁਦ ਸੰਭਾਲਣ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। + i_agree: ਮੈਂ ਸਹਿਮਤ ਹਾਂ cancel: ਰੱਦ ਕਰੋ + tag_rules: + legend: "ਟੈਗ ਨਿਯਮ" + default_rules: + by_default: ਡਿਫੌਲਟ ਦਵਾਰਾ + no_rules_yet: ਅਜੇ ਤੱਕ ਕੋਈ ਡਿਫੌਲਟ ਨਿਯਮ ਲਾਗੂ ਨਹੀਂ ਹੁੰਦੇ + add_new_button: '+ ਇੱਕ ਨਵਾਂ ਡਿਫੌਲਟ ਨਿਯਮ ਜੋੜੋ''' + no_tags_yet: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਤੇ ਅਜੇ ਤੱਕ ਕੋਈ ਟੈਗ ਲਾਗੂ ਨਹੀਂ ਹਨ + no_rules_yet: ਇਸ ਟੈਗ ਤੇ ਅਜੇ ਤੱਕ ਕੋਈ ਨਿਯਮ ਲਾਗੂ ਨਹੀਂ ਹਨ + for_customers_tagged: 'ਟੈਗ ਕੀਤੇ ਗਾਹਕਾਂ ਲਈ:''' + add_new_rule: '+ ਇੱਕ ਨਵਾਂ ਨਿਯਮ ਜੋੜੋ''' + add_new_tag: '+ ਇੱਕ ਨਵਾਂ ਟੈਗ ਜੋੜੋ''' + users: + legend: "ਉਪਭੋਗਤਾ" + email_confirmation_notice_html: "ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਲੰਬਿਤ ਹੈ। ਅਸੀਂ %{email} ਨੂੰ ਇੱਕ ਪੁਸ਼ਟੀਕਰਨ ਈਮੇਲ ਭੇਜੀ ਹੈ।" + resend: ਦੁਬਾਰਾ ਭੇਜੋ + owner: 'ਮਾਲਕ''' + contact: "ਸੰਪਰਕ" + contact_tip: "ਪ੍ਰਬੰਧਕ ਜੋ ਆਰਡਰਾਂ ਅਤੇ ਸੂਚਨਾਵਾਂ ਲਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਈਮੇਲ ਪ੍ਰਾਪਤ ਕਰੇਗਾ। ਉਦੇ ਕੋਲ ਇੱਕ ਪੁਸ਼ਟੀ ਕੀਤਾ ਈਮੇਲ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।" + owner_tip: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਪ੍ਰਾਥਮਿਕ ਉਪਭੋਗਤਾ। + notifications: ਸੂਚਨਾਵਾਂ + notifications_tip: ਆਰਡਰਾਂ ਬਾਰੇ ਸੂਚਨਾਵਾਂ ਇਸ ਈਮੇਲ ਪਤੇ ਉਤੇ ਭੇਜੀਆਂ ਜਾਣਗੀਆਂ। + notifications_placeholder: ਜਿਵੇਂ - gustav@truffles.com + notifications_note: 'ਨੋਟ: ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਨਵੇਂ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਹੋ ਸਕਦੀ ਹੈ''' + managers: ਪ੍ਰਬੰਧਕ + managers_tip: ਦੂਜੇ ਉਪਭੋਗਤਾ ਜਿਹਨਾਂ ਕੋਲ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ। + invite_manager: "ਪ੍ਰਬੰਧਕ ਨੂੰ ਸੱਦਾ ਦਿਓ" + invite_manager_tip: "ਕਿਸੇ ਗੈਰ-ਰਜਿਸਟਰਡ ਉਪਭੋਗਤਾ ਨੂੰ ਸਾਈਨ ਅੱਪ ਕਰਨ ਅਤੇ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਪ੍ਰਬੰਧਕ ਬਣਨ ਲਈ ਸੱਦਾ ਦਿਓ।" + add_unregistered_user: "ਇੱਕ ਗੈਰ-ਰਜਿਸਟਰਡ ਉਪਭੋਗਤਾ ਜੋੜੋ" + email_confirmed: "ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਹੋਈ" + email_not_confirmed: "ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋਈ" vouchers: + legend: ਵਾਊਚਰ + voucher_code: ਵਾਊਚਰ ਕੋਡ + rate: ਦਰ + label: ਲੇਬਲ + purpose: ਉਦੇਸ਼ + expiry: ਸਮਾਪਤੀ + use_limit: ਵਰਤੋਂ/ਸੀਮਾ customers: ਗਾਹਕ + net_value: ਸ਼ੁੱਧ ਮੁੱਲ + active: ਕਿਰਿਆਸ਼ੀਲ? + add_new: ਨਵਾਂ ਜੋੜੋ + no_voucher_yet: ਅਜੇ ਤੱਕ ਕੋਈ ਵਾਊਚਰ ਨਹੀਂ white_label: + legend: "ਚਿੱਟਾ ਲੇਬਲ" + hide_ofn_navigation: "OFN ਨੈਵੀਗੇਸ਼ਨ ਲੁਕਾਓ" + upload_logo: "ਸ਼ੋਪਫ੍ਰੰਟ ਵਿੱਚ ਵਰਤਿਆ ਗਿਆ ਲੋਗੋ" + remove_logo: "ਲੋਗੋ ਹਟਾਓ" + remove_logo_confirm: "ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ ਤੇ ਇਸ ਲੋਗੋ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + remove_logo_success: "ਲੋਗੋ ਹਟਾਇਆ ਗਿਆ" white_label_logo_link_label: "ਸ਼ੌਪਫਰੰਟ ਵਿੱਚ ਵਰਤੇ ਗਏ ਲੋਗੋ ਦਾ ਲਿੰਕ" + hide_groups_tab: "ਸ਼ਾਪਫਰੰਟ ਵਿੱਚ ਸਮੂਹ ਟੈਬ ਨੂੰ ਲੁਕਾਓ" + create_custom_tab: "ਸ਼ਾਪਫ੍ਰੰਟ ਵਿੱਚ ਕਸਟਮ ਟੈਬ ਬਣਾਓ" + custom_tab_title: "ਕਸਟਮ ਟੈਬ ਲਈ ਸਿਰਲੇਖ" + custom_tab_content: "ਕਸਟਮ ਟੈਬ ਲਈ ਕੰਟੇਂਟ" + actions: + edit_profile: ਸੈਟਿੰਗਾਂ + properties: ਪ੍ਰਾਪਰਟੀਜ਼ + payment_methods: ਭੁਗਤਾਨ ਦੇ ਢੰਗ + payment_methods_tip: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਕੋਲ ਭੁਗਤਾਨ ਦੇ ਕੋਈ ਢੰਗ ਨਹੀਂ ਹਨ + shipping_methods: ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ + shipping_methods_tip: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਕੋਲ ਸ਼ਿਪਿੰਗ ਦੇ ਕੋਈ ਢੰਗ ਨਹੀਂ ਹਨ + enterprise_fees: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ + enterprise_fees_tip: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਕੋਈ ਫ਼ੀਸ ਨਹੀਂ ਹੈ admin_index: name: ਨਾਮ + role: ਭੂਮਿਕਾ + sells: ਵੇਚਦਾ ਹੈ + visible: ਦਿਸਣਯੋਗ? + owner: ਮਾਲਕ' producer: ਉਤਪਾਦਕ + change_type_form: + producer_profile: ਉਤਪਾਦਕ ਪ੍ਰੋਫਾਈਲ' + connect_ofn: OFN ਦੁਆਰਾ ਕਨੇਕਟ ਕਰੋ + always_free: ਹਮੇਸ਼ਾ ਮੁਫ਼ਤ + producer_description_text: ਆਪਣੇ ਉਤਪਾਦਾਂ ਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਨਾਲ ਜੋੜੋ, ਹੱਬ ਨੂੰ ਉਹਨਾਂ ਦੇ ਸਟੋਰਾਂ ਵਿੱਚ ਤੁਹਾਡੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸਟਾਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋਏ। + producer_shop: ਉਤਪਾਦਕ ਸ਼ਾਪ + sell_your_produce: ਆਪਣੀ ਖੁਦ ਦੀ ਪੈਦਾਵਾਰ ਵੇਚੋ + producer_shop_description_text: ਆਪਣੇ ਖੁਦ ਦੇ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਸ਼ਾਪਫਰੰਟ ਰਾਹੀਂ ਗਾਹਕਾਂ ਨੂੰ ਆਪਣੇ ਉਤਪਾਦ ਸਿੱਧੇ ਤੌਰ ਤੇ ਵੇਚੋ। + producer_shop_description_text2: ਇੱਕ ਉਤਪਾਦਕ ਸ਼ਾਪ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਪੈਦਾਵਾਰ ਲਈ ਹੈ, ਜੇਕਰ ਤੁਸੀਂ ਕਿਥੇ ਹੋਰ ਉਗਾਏ/ਉਤਪਾਦਿਤ ਉਤਪਾਦ ਵੇਚਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ 'ਉਤਪਾਦਕ ਹੱਬ' ਦੀ ਚੋਣ ਕਰੋ। + producer_hub: ਉਤਪਾਦਕ ਹੱਬ + producer_hub_text: ਆਪਣੇ ਅਤੇ ਦੂਜਿਆਂ ਦੀ ਪੈਦਾਵਾਰ ਵੇਚੋ + producer_hub_description_text: ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਪ੍ਰਣਾਲੀ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਤੁਸੀਂ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਆਪਣੇ ਸ਼ੌਪਫਰੰਟ ਰਾਹੀਂ ਆਪਣੀ ਖੁਦ ਦੀ ਪੈਦਾਵਾਰ ਦੇ ਨਾਲ-ਨਾਲ ਦੂਜੇ ਉਦਯੋਗਾਂ ਤੋਂ ਇਕੱਠੀ ਕੀਤੀ ਉਪਜ ਵੀ ਵੇਚ ਸਕਦੇ ਹੋ। + profile: ਸਿਰਫ਼ ਪ੍ਰੋਫਾਈਲ + get_listing: ਇੱਕ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰੋ + profile_description_text: ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਲੋਕ ਤੁਹਾਨੂੰ ਲੱਭ ਅਤੇ ਸੰਪਰਕ ਕਰ ਸਕਦੇ ਹਨ। ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਮੈਪ ਤੇ ਵਿਖਾਈ ਦੇਵੇਗਾ, ਅਤੇ ਸੂਚੀਆਂ ਵਿੱਚ ਖੋਜਣ ਯੋਗ ਹੋਵੇਗਾ। + hub_shop: ਹੱਬ ਸ਼ਾਪ + hub_shop_text: ਦੂਜਿਆਂ ਦੇ ਉਤਪਾਦ ਵੇਚੋ + hub_shop_description_text: ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਪ੍ਰਣਾਲੀ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਤੁਸੀਂ ਦੂਜਿਆਂ ਉਦਯੋਗਾਂ ਦੀ ਪੈਦਾਵਾਰ ਇਕੱਠੇ ਕਰਦੇ ਹੋ ਅਤੇ ਇਸਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਆਪਣੀ ਸ਼ਾਪ ਰਾਹੀਂ ਵੇਚ ਸਕਦੇ ਹੋ। + choose_option: ਕਿਰਪਾ ਕਰਕੇ ਉਪਰੋਕਤ ਵਿਕਲਪਾਂ ਵਿੱਚੋਂ ਇੱਕ ਦੀ ਚੋਣ ਕਰੋ। + change_now: ਹੁਣੇ ਬਦਲੋ + enterprise_user_index: + loading_enterprises: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲੋਡ ਕਰ ਰਹੇ ਹਨ + no_enterprises_found: ਕੋਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨਹੀਂ ਮਿਲੇ। + search_placeholder: ਨਾਂ ਦੁਆਰਾ ਖੋਜ ਕਰੋ + manage: ਪ੍ਰਬੰਧਿਤ ਕਰੋ + manage_link: ਸੈਟਿੰਗਾਂ + producer?: "ਉਤਪਾਦਕ?" + package: "ਪੈਕੇਜ" + status: "ਸਥਿਤੀ" + new_form: + owner: ਮਾਲਕ' + owner_tip: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਪ੍ਰਾਥਮਿਕ ਉਪਭੋਗਤਾ। + i_am_producer: ਮੈਂ ਇੱਕ ਉਤਪਾਦਕ ਹਾਂ + contact_name: ਸੰਪਰਕ ਨਾਮ + edit: + editing: 'ਸੈਟਿੰਗਾਂ:''' + back_link: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੂਚੀ ਤੇ ਵਾਪਸ ਜਾਓ + new: + title: ਐਂਟਰਪ੍ਰਾਈਜ਼ਜ਼ + back_link: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੂਚੀ ਤੇ ਵਾਪਸ ਜਾਓ welcome: + welcome_title: ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਤੁਹਾਡਾ ਸੁਆਗਤ ਹੈ! + welcome_text: ਤੁਸੀਂ ਸਫਲਤਾਪੂਰਵਕ ਇਹ ਬਣਾ ਲਿਆ ਹੈ + next_step: ਅਗਲਾ ਕਦਮ + choose_starting_point: 'ਆਪਣਾ ਪੈਕੇਜ ਚੁਣੋ:''' profile: 'ਪ੍ਰੋਫਾਈਲ' + producer_profile: 'ਉਤਪਾਦਕ ਪ੍ਰੋਫਾਈਲ''' + invite_manager: + user_already_exists: "ਉਪਭੋਗਤਾ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ" + error: "ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ" order_cycles: + loading_flash: + loading_order_cycles: ਆਰਡਰ ਸਾਈਕਲ ਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ + loading: ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ... new: create: "ਬਣਾਓ" cancel: "ਰੱਦ ਕਰੋ" + back_to_list: "ਸੂਚੀ ਤੇ ਵਾਪਸ" edit: save: "ਸੇਵ ਕਰੋ" + save_and_next: "ਸੇਵ ਕਰੋ ਅਤੇ ਅਗਲਾ" + next: "ਅਗਲਾ" cancel: "ਰੱਦ ਕਰੋ" + back_to_list: "ਸੂਚੀ ਤੇ ਵਾਪਸ" + save_and_back_to_list: "ਸੇਵ ਕਰੋ ਅਤੇ ਸੂਚੀ ਵਿੱਚ ਵਾਪਸ" + choose_products_from: "ਇਥੋਂ ਉਤਪਾਦ ਚੁਣੋ:" + re_notify_producers: ਉਤਪਾਦਕਾਂ ਨੂੰ ਦੁਬਾਰਾ ਸੂਚਿਤ ਕਰੋ + notify_producers_tip: ਇਹ ਹਰੇਕ ਉਤਪਾਦਕ ਨੂੰ ਉਹਨਾਂ ਦੇ ਆਰਡਰ ਦੀ ਸੂਚੀ ਦੇ ਨਾਲ ਇੱਕ ਈਮੇਲ ਭੇਜੇਗਾ। incoming: + incoming: "ਅੰਦਰ ਆਉਣ ਵਾਲੇ" supplier: "ਸਪਲਾਇਰ" products: "ਉਤਪਾਦ" + receival_details: "ਪ੍ਰਾਪਤੀ ਵੇਰਵੇ" + fees: "ਫ਼ੀਸ" save: "ਸੇਵ ਕਰੋ" + save_and_next: "ਸੇਵ ਕਰੋ ਅਤੇ ਅਗਲਾ" + next: "ਅਗਲਾ" cancel: "ਰੱਦ ਕਰੋ" + back_to_list: "ਸੂਚੀ ਤੇ ਵਾਪਸ" outgoing: + outgoing: "ਬਾਹਰ ਜਾਣ ਵਾਲੇ" + distributor: "ਵਿਤਰਕ" products: "ਉਤਪਾਦ" tags: "ਟੈਗ" + delivery_details: "ਡਿਲਿਵਰੀ ਵੇਰਵੇ" + fees: "ਫ਼ੀਸ" + next: "ਅਗਲਾ" + previous: "ਪਿਛਲਾ" save: "ਸੇਵ ਕਰੋ" + save_and_next: "ਸੇਵ ਕਰੋ ਅਤੇ ਅਗਲਾ" cancel: "ਰੱਦ ਕਰੋ" + back_to_list: "ਸੂਚੀ ਤੇ ਵਾਪਸ" checkout_options: + back_end: "ਸਿਰਫ ਬੈਕ ਆਫਿਸ" cancel: "ਰੱਦ ਕਰੋ" + checkout_options: "ਚੈਕਆਊਟ ਵਿਕਲਪ" + distributor: "ਵਿਤਰਕ" + no_payment_methods: ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਤੇ ਹਰੇਕ ਵਿਤਰਕ ਨੂੰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਭੁਗਤਾਨ ਦੇ ਢੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। + no_shipping_methods: ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਤੇ ਹਰੇਕ ਵਿਤਰਕ ਨੂੰ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" save: "ਸੇਵ ਕਰੋ" + save_and_back_to_list: "ਸੇਵ ਕਰੋ ਅਤੇ ਸੂਚੀ ਵਿੱਚ ਵਾਪਸ" select_all: "ਸਭ ਨੂੰ ਚੁਣੋ" + shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" + wizard_progress: + edit: "1. ਆਮ ਸੈਟਿੰਗਾਂ" + incoming: "2. ਅੰਦਰ ਆਉਣ ਵਾਲੇ ਉਤਪਾਦ" + outgoing: "3. ਬਾਹਰ ਜਾਣ ਵਾਲੇ ਉਤਪਾਦ" + checkout_options: "4. ਚੈਕਆਊਟ ਵਿਕਲਪ" exchange_form: + pickup_time_tip: ਜਦੋਂ ਇਸ OC ਤੋਂ ਆਰਡਰ ਗਾਹਕ ਲਈ ਤਿਆਰ ਹੋ ਜਾਣਗੇ + pickup_instructions_placeholder: "ਪਿਕ-ਅੱਪ ਹਦਾਇਤਾਂ" + pickup_instructions_tip: ਇਹ ਹਦਾਇਤਾਂ ਗਾਹਕਾਂ ਨੂੰ ਆਰਡਰ ਪੂਰਾ ਕਰਨ ਤੋਂ ਬਾਅਦ ਦਿਖਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ + pickup_time_placeholder: "ਇਸ ਲਈ ਤਿਆਰ (ਜਿਵੇਂ ਕਿ ਮਿਤੀ / ਸਮਾਂ)" + receival_instructions_placeholder: "ਪ੍ਰਾਪਤੀ ਨਿਰਦੇਸ਼" + add_fee: 'ਫ਼ੀਸ ਜੋੜੋ''' remove: 'Remove' + selected: 'ਚੁਣੇ ਗਏ''' + add_exchange_form: + add_supplier: 'ਸਪਲਾਇਰ ਜੋੜੋ''' + add_distributor: 'ਵਿਤਰਕ ਜੋੜੋ''' + advanced_settings: + automatic_notifications: ਸਵੈਚਲਿਤ ਸੂਚਨਾਵਾਂ + automatic_notifications_tip: ਆਰਡਰ ਸਾਈਕਲ ਦੇ ਬੰਦ ਹੋਣ ਤੇ ਉਤਪਾਦਕਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਆਰਡਰਾਂ ਬਾਰੇ ਈਮੇਲ ਰਾਹੀਂ ਸਵੈਚਲਿਤ ਤੌਰ ਤੇ ਸੂਚਿਤ ਕਰੋ + title: ਉਨਤ ਸੈਟਿੰਗਾਂ + choose_product_tip: ਤੁਸੀਂ ਆਉਣ ਵਾਲੇ ਅਤੇ ਜਾਣ ਵਾਲੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸਿਰਫ਼ %{inventory} ਦੀ ਇਨਵੇਂਟਰੀ ਤੱਕ ਸੀਮਤ ਕਰ ਸਕਦੇ ਹੋ। + preferred_product_selection_from_coordinator_inventory_only_here: ਸਿਰਫ਼ ਕੋਆਰਡੀਨੇਟਰ ਦੀ ਇਨਵੇਂਟਰੀ + preferred_product_selection_from_coordinator_inventory_only_all: ਸਾਰੇ ਉਪਲਬਧ ਉਤਪਾਦ + save_reload: ਪੇਜ ਨੂੰ ਸੇਵ ਅਤੇ ਦੁਬਾਰਾ ਲੋਡ ਕਰੋ + order_cycle_top_buttons: + advanced_settings: "ਤੁਸੀਂ ਆਉਣ ਵਾਲੇ ਅਤੇ ਜਾਣ ਵਾਲੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸਿਰਫ਼ %{inventory} ਦੀ ਇਨਵੇਂਟਰੀ ਤੱਕ ਸੀਮਤ ਕਰ ਸਕਦੇ ਹੋ।" + coordinator_fees: + add: ਕੋਆਰਡੀਨੇਟਰ ਫੀਸ ਜੋੜੋ + filters: + search_by_order_cycle_name: "ਆਰਡਰ ਸਾਈਕਲ ਦੇ ਨਾਮ ਦੁਆਰਾ ਖੋਜੋ..." + involving: "ਸੰਮਲਿਤ" + any_enterprise: "ਕੋਈ ਵੀ ਐਂਟਰਪ੍ਰਾਈਜ਼" + any_schedule: "ਕੋਈ ਵੀ ਸ਼ੈਡਿਊਲ" form: + general_settings: "ਆਮ ਸੈਟਿੰਗਾਂ" + incoming: ਅੰਦਰ ਆਉਣ ਵਾਲੇ supplier: ਸਪਲਾਇਰ products: ਉਤਪਾਦ + receival_details: ਪ੍ਰਾਪਤੀ ਵੇਰਵੇ + fees: ਫ਼ੀਸ + outgoing: ਬਾਹਰ ਜਾਣ ਵਾਲੇ + distributor: ਵਿਤਰਕ tags: ਟੈਗ + add_a_tag: ਟੈਗ ਜੋੜੋ + delivery_details: ਪਿਕਅੱਪ / ਡਿਲਿਵਰੀ ਵੇਰਵੇ index: schedule: ਸਮਾਸੂਚੀ + schedules: ਸ਼ੈਡਿਊਲ + new_schedule: ਨਵਾਂ ਸ਼ੈਡਿਊਲ + new_schedule_tooltip: ਉਹ ਬਾਰੰਬਾਰਤਾ ਜਿਸ ਨਾਲ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ name_and_timing_form: name: ਨਾਮ + orders_open: ਆਰਡਰ ਖੋਲ੍ਹਣ ਦਾ ਸਮਾਂ + coordinator: ਕੋਆਰਡੀਨੇਟਰ + orders_close: ਆਰਡਰ ਬੰਦ ਹੋ ਗਏ ਹਨ + row: + suppliers: ਸਪਲਾਇਰ + distributors: ਵਿਤਰਕ + variants: ਵੇਰੀਐਂਟਸ simple_form: + ready_for: ਲਈ ਤਿਆਰ + ready_for_placeholder: ਮਿਤੀ/ਸਮਾਂ customer_instructions: ਗਾਹਕ ਨਿਰਦੇਸ਼ + customer_instructions_placeholder: ਪਿਕ-ਅੱਪ ਜਾਂ ਡਿਲਿਵਰੀ ਨੋਟ products: ਉਤਪਾਦ + fees: ਫ਼ੀਸ tags: ਟੈਗ + destroy_errors: + orders_present: ਉਸ ਆਰਡਰ ਸਾਈਕਲ ਨੂੰ ਇੱਕ ਗਾਹਕ ਦੁਆਰਾ ਚੁਣਿਆ ਗਿਆ ਹੈ ਅਤੇ ਇਸਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ। ਗਾਹਕਾਂ ਨੂੰ ਇਸ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਤੋਂ ਰੋਕਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਬੰਦ ਕਰੋ। + schedule_present: ਉਹ ਆਰਡਰ ਸਾਈਕਲ ਇੱਕ ਸ਼ੈਡਿਊਲ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ ਅਤੇ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਪਹਿਲਾਂ ਸ਼ੈਡਿਊਲ ਤੋਂ ਲਿੰਕ ਤੋਂ ਹਟਾਓ ਜਾਂ ਡਿਲੀਟ ਕਰੋ। + bulk_update: + no_data: ਹਮ, ਕੁਝ ਗੜਬੜ ਹੋ ਗਈ। ਕੋਈ ਆਰਡਰ ਸਾਈਕਲ ਡੇਟਾ ਨਹੀਂ ਮਿਲਿਆ। date_warning: + msg: ਇਹ ਆਰਡਰ ਸਾਈਕਲ %{n} ਓਪਨ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਆਰਡਰ ਨਾਲ ਜੁੜੀ ਹੋਈ ਹੈ। ਇਸ ਮਿਤੀ ਨੂੰ ਹੁਣ ਬਦਲਣ ਨਾਲ ਕਿਸੇ ਵੀ ਪਹਿਲਾਂ ਤੋਂ ਕੀਤੇ ਆਰਡਰ ਤੇ ਕੋਈ ਅਸਰ ਨਹੀਂ ਪਵੇਗਾ, ਪਰ ਜੇ ਸੰਭਵ ਹੋਵੇ ਤਾਂ ਇਸਤੋਂ ਬਚਣਾ ਚਾਹੀਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਯਕੀਨੀ ਤੌਰ ਉਤੇ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ? cancel: ਰੱਦ ਕਰੋ + proceed: ਅੱਗੇ ਵਧੋ + status: + undated: ਮਿਤੀ ਤੋਂ ਬਿਨਾਂ + upcoming: ਜਲਦ ਆਉਣ ਵਾਲਾ + open: ਖੁਲਿਆ ਹੋਇਆ + closed: ਬੰਦ ਕੀਤਾ ਹੋਇਆ + producer_properties: + index: + title: ਉਤਪਾਦਕ ਪ੍ਰਾਪਰਟੀਜ਼ + proxy_orders: + cancel: + could_not_cancel_the_order: ਆਰਡਰ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ + resume: + could_not_resume_the_order: ਆਰਡਰ ਮੁੜ ਸ਼ੁਰੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ + select2: + minimal_search_length: ਕਿਰਪਾ ਕਰਕੇ %{count} ਜਾਂ ਜ਼ਿਆਦਾ ਅੱਖਰ ਦਾਖਲ ਕਰੋ + searching: ਖੋਜ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ... + no_matches: ਕੋਈ ਮੇਲ ਨਹੀਂ ਮਿਲਿਆ + shared: + user_guide_link: + user_guide: ਉਪਭੋਗਤਾ ਗਾਈਡ + enterprises_hubs_tabs: + has_no_payment_methods: "%{enterprise} ਦੇ ਕੋਲ ਕੋਈ ਭੁਗਤਾਨ ਤੇ ਤਰੀਕੇ ਨਹੀਂ ਹਨ" + has_no_shipping_methods: "%{enterprise} ਦੇ ਕੋਲ ਕੋਈ ਸ਼ਿਪਿੰਗ ਤੇ ਤਰੀਕੇ ਨਹੀਂ ਹਨ" + has_no_enterprise_fees: "%{enterprise} has no enterprise fees" + side_menu: + enterprise: + primary_details: "ਪ੍ਰਾਥਮਿਕ ਵੇਰਵੇ" + address: "ਪਤਾ" + contact: "ਸੰਪਰਕ" + social: "ਸਮਾਜਿਕ" + about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + business_details: "ਕਾਰੋਬਾਰੀ ਵੇਰਵੇ" + images: "ਫੋਟੋ" + properties: "ਪ੍ਰਾਪਰਟੀਜ਼" + shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" + enterprise_fees: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ" + enterprise_permissions: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਅਨੁਮਤੀਆਂ" + inventory_settings: "ਇਨਵੇਂਟਰੀ ਸੈਟਿੰਗਾਂ" + tag_rules: "ਟੈਗ ਨਿਯਮ" + shop_preferences: "ਸ਼ਾਪ ਤਰਜੀਹਾਂ" + users: "ਉਪਭੋਗਤਾ" + vouchers: ਵਾਊਚਰ + white_label: "ਚਿੱਟਾ ਲੇਬਲ" + enterprise_group: + primary_details: "ਪ੍ਰਾਥਮਿਕ ਵੇਰਵੇ" + users: "ਉਪਭੋਗਤਾ" + about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + images: "ਫੋਟੋ" + contact: "ਸੰਪਰਕ" + web: "ਵੈਬ ਸੰਸਾਧਨ" + enterprise_issues: + create_new: ਨਵਾਂ ਬਣਾਓ + resend_email: ਈਮੇਲ ਦੁਬਾਰਾ ਭੇਜੋ + has_no_payment_methods: "%{enterprise} ਕੋਲ ਇਸ ਵੇਲੇ ਕੋਈ ਭੁਗਤਾਨ ਵਿਧੀ ਨਹੀਂ ਹੈ" + has_no_shipping_methods: "%{enterprise} ਕੋਲ ਵਰਤਮਾਨ ਵਿੱਚ ਕੋਈ ਵੀ ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ ਨਹੀਂ ਹਨ" + email_confirmation: "ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ ਲੰਬਿਤ ਹੈ। ਅਸੀਂ %{email} ਨੂੰ ਇੱਕ ਪੁਸ਼ਟੀਕਰਨ ਈਮੇਲ ਭੇਜੀ ਹੈ।" + not_visible: "%{enterprise} ਦਿਖਾਈ ਨਹੀਂ ਦੇ ਰਿਹਾ ਹੈ ਅਤੇ ਇਸ ਲਈ ਮੈਪ ਤੇ ਜਾਂ ਖੋਜਾਂ ਵਿੱਚ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਦਾ" reports: + deprecated: "ਇਹ ਰਿਪੋਰਟ ਬਰਤਰਫ਼ ਕੀਤੀ ਗਈ ਹੈ ਅਤੇ ਭਵਿੱਖ ਵਿੱਚ ਰੀਲੀਜ਼ ਵਿੱਚ ਹਟਾ ਦਿੱਤੀ ਜਾਵੇਗੀ।" + hidden: ਲੁਕਿਆ ਹੋਇਆ + unitsize: ਯੂਨਿਟ ਦਾ ਸਾਈਜ਼ + total: ਕੁੱਲ + total_items: ਕੁੱਲ ਆਈਟਮਾਂ + total_by_customer: ਗਾਹਕ ਦੁਆਰਾ ਕੁੱਲ + total_by_supplier: ਸਪਲਾਇਰ ਦੁਆਰਾ ਕੁੱਲ + supplier_totals: ਆਰਡਰ ਸਾਈਕਲ ਸਪਲਾਇਰ ਕੁੱਲ + percentage: "%{value} %" + supplier_totals_by_distributor: ਵਿਤਰਕ ਦੁਆਰਾ ਆਰਡਰ ਸਾਈਕਲ ਸਪਲਾਇਰ ਦਾ ਕੁੱਲ ਜੋੜ + totals_by_supplier: ਸਪਲਾਇਰ ਦੁਆਰਾ ਆਰਡਰ ਸਾਈਕਲ ਵਿਤਰਕ ਦਾ ਕੁੱਲ ਜੋੜ + customer_totals: ਆਰਡਰ ਸਾਈਕਲ ਗਾਹਕ ਕੁੱਲ ਜੋੜ + all_products: ਸਾਰੇ ਉਤਪਾਦ + inventory: ਇਨਵੇਂਟਰੀ (ਹੱਥ ਵਿਚ) + lettuce_share: ਲੈਟਯੂਸਸ਼ੇਅਰ + payment_methods: ਭੁਗਤਾਨ ਦੇ ਤਰੀਕੇ ਦੀ ਰਿਪੋਰਟ + delivery: ਡਿਲਿਵਰੀ ਰਿਪੋਰਟ + sales_tax_totals_by_producer: ਉਤਪਾਦਕ ਦੁਆਰਾ ਕੁੱਲ ਸੇਲ੍ਸ ਟੈਕਸ + sales_tax_totals_by_order: ਆਰਡਰ ਦੁਆਰਾ ਕੁੱਲ ਸੇਲ੍ਸ ਟੈਕਸ + tax_types: ਟੈਕਸ ਦੀਆਂ ਕਿਸਮਾਂ + tax_rates: ਟੈਕਸ ਦੀਆਂ ਦਰਾਂ + pack_by_customer: ਗਾਹਕ ਦੇ ਅਨੁਸਾਰ ਪੈਕ + pack_by_supplier: ਸਪਲਾਇਰ ਦੇ ਅਨੁਸਾਰ ਪੈਕ + pack_by_product: ਉਤਪਾਦ ਦੇ ਅਨੁਸਾਰ ਪੈਕ + download: + button: "ਰਿਪੋਰਟ ਡਾਊਨਲੋਡ ਕਰੋ" + show: + report_taking_longer: > + ਮਾਫ਼ ਕਰਨਾ, ਇਸ ਰਿਪੋਰਟ ਨੂੰ ਸੰਸਾਧਿਤ ਕਰਨ ਵਿੱਚ ਬਹੁਤ ਸਮਾਂ ਲੱਗਾ। ਇਸ ਵਿੱਚ ਬਹੁਤ + ਸਾਰਾ ਡੇਟਾ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਅਸੀਂ ਹੋਰ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਰੁੱਝੇ ਹੋਏ ਹਾਂ। ਤੁਸੀਂ ਬਾਅਦ + ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ। + report_taking_longer_html: > + ਇਸ ਰਿਪੋਰਟ ਨੂੰ ਸੰਸਾਧਿਤ ਹੋਣ ਵਿੱਚ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੱਗ ਰਿਹਾ ਹੈ। ਇਸ ਵਿੱਚ ਬਹੁਤ ਸਾਰਾ + ਡੇਟਾ ਹੋ ਸਕਦਾ ਹੈ ਜਾਂ ਅਸੀਂ ਹੋਰ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਰੁੱਝੇ ਹੋਏ ਹਾਂ। ਇੱਕ ਵਾਰ ਜਦੋਂ + ਇਹ ਪੂਰਾ ਹੋ ਜਾਂਦਾ ਹੈ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਈਮੇਲ ਰਾਹੀਂ ਸੂਚਿਤ ਕਰਾਂਗੇ। + report_link_label: ਰਿਪੋਰਟ ਡਾਊਨਲੋਡ ਕਰੋ (ਜਦੋਂ ਉਪਲਬਧ ਹੋਵੇ) + revenues_by_hub: + name: ਹੱਬ ਦੁਆਰਾ ਰੇਵਨ੍ਯੂ + description: ਹੱਬ ਦੁਆਰਾ ਰੇਵਨ੍ਯੂ + orders_and_distributors: + name: ਆਰਡਰ ਅਤੇ ਵਿਤਰਕ + description: ਵਿਤਰਕ ਵੇਰਵਿਆਂ ਦੇ ਨਾਲ ਆਰਡਰ + bulk_coop: + name: ਥੋਕ ਸਹਿਕਾਰਤਾ + description: ਥੋਕ ਸਹਿਕਾਰਤਾ ਆਰਡਰਾਂ ਲਈ ਰਿਪੋਰਟਾਂ + payments: + name: ਭੁਗਤਾਨ ਰਿਪੋਰਟਾਂ + description: ਭੁਗਤਾਨਾਂ ਲਈ ਰਿਪੋਰਟਾਂ + orders_and_fulfillment: + name: ਆਰਡਰ ਅਤੇ ਪੂਰਤੀ ਰਿਪੋਰਟਾਂ + customers: + name: ਗਾਹਕ + products_and_inventory: + name: ਉਤਪਾਦ ਅਤੇ ਇਨਵੇਂਟਰੀ + users_and_enterprises: + name: ਉਪਭੋਗਤਾ ਅਤੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ + description: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਮਲਕੀਅਤ ਅਤੇ ਸਥਿਤੀ + order_cycle_management: + name: ਆਰਡਰ ਸਾਈਕਲ ਪ੍ਰਬੰਧਨ + sales_tax: + name: ਸੇਲ੍ਸ ਟੈਕਸ + xero_invoices: + name: Xero ਦੇ ਇਨਵੌਇਸ + description: Xero ਵਿੱਚ ਇਮਪੋਰਟ ਲਈ ਇਨਵੌਇਸ + enterprise_fee_summary: + name: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ ਦਾ ਸਾਰ" + description: "ਇਕੱਠੀ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫੀਸਾਂ ਦਾ ਸਾਰ" + enterprise_fees_with_tax_report_by_order: "ਆਰਡਰ ਦੁਆਰਾ ਟੈਕਸ ਰਿਪੋਰਟ ਨਾਲ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫੀਸ" + enterprise_fees_with_tax_report_by_producer: "ਉਤਪਾਦਕ ਦੁਆਰਾ ਟੈਕਸ ਰਿਪੋਰਟ ਨਾਲ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫੀਸ" + errors: + no_report_type: "ਕਿਰਪਾ ਕਰਕੇ ਰਿਪੋਰਟ ਦੀ ਕਿਸਮ ਨਿਰਦੇਸ਼ਿਤ ਕਰੋ" + report_not_found: "ਰਿਪੋਰਟ ਨਹੀਂ ਮਿਲੀ" + missing_ransack_params: "ਕਿਰਪਾ ਕਰਕੇ ਬੇਨਤੀ ਵਿੱਚ ਰੈਨਸੈਕ ਖੋਜ ਪੇਰਾਮੀਟਰ ਦੀ ਸਪਲਾਈ ਕਰੋ" + hidden_field: "<ਲੁਕਿਆ ਹੋਇਆ >" + summary_row: + total: "ਕੁੱਲ" table: + select_and_search: "ਫਿਲਟਰ ਚੁਣੋ ਅਤੇ ਆਪਣੇ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚਣ ਲਈ %{option} ਤੇ ਕਲਿੱਕ ਕਰੋ।" headings: + hub: "ਹੱਬ" + customer_code: "ਕੋਡ" first_name: "ਪਹਿਲਾ ਨਾਂ" last_name: "ਆਖਰੀ ਨਾਂ" supplier: "ਸਪਲਾਇਰ" product: "ਉਤਪਾਦ" variant: "ਵੇਰੀਐਂਟ" quantity: "ਮਾਤਰਾ" - price: "\"ਕੀਮਤ\"" + is_temperature_controlled: "ਤਾਪਮਾਨ ਦਵਾਰਾ ਨਿਯੰਤ੍ਰਿਤ?" + temp_controlled: "ਤਾਪਮਾਨ ਦਵਾਰਾ ਨਿਯੰਤ੍ਰਿਤ?" + price: "ਕੀਮਤ" + rendering_options: + generate_report: "ਰਿਪੋਰਟ ਤਿਆਰ ਕਰੋ" + on_screen: "ਸਕ੍ਰੀਨ ਤੇ" + spreadsheet: "ਸਪ੍ਰੈਡਸ਼ੀਟ (ਐਕਸਲ, ਓਪਨਆਫਿਸ..)" + display: ਡਿਸਪਲੇ + summary_row: ਸਾਰਾਂਸ਼ ਕਤਾਰ + header_row: ਹੈਡਰ ਕਤਾਰ + raw_data: ਕੱਚਾ ਡੇਟਾ + formatted_data: ਫਾਰਮੈਟ ਕੀਤਾ ਡੇਟਾ + packing: + name: "ਪੈਕਿੰਗ ਦੀਆਂ ਰਿਪੋਰਟਾਂ" + oidc_settings: + index: + title: "OIDC ਸੈਟਿੰਗਾਂ" + connect: "ਆਪਣਾ ਖਾਤਾ ਕਨੈਕਟ ਕਰੋ" + already_connected: "ਤੁਹਾਡਾ ਖਾਤਾ ਪਹਿਲਾਂ ਹੀ ਇਸ DFC ਪ੍ਰਮਾਣੀਕਰਨ ਖਾਤੇ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ:" + les_communs_link: "ਲੇਸ ਕਮਿਊਨਜ਼ ਓਪਨ ਆਈਡੀ ਸਰਵਰ" + link_your_account: "ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਆਪਣੇ ਖਾਤੇ ਨੂੰ DFC (ਲੇਸ ਕਮਿਊਨਸ ਓਪਨ ਆਈਡੀ ਕਨੈਕਟ) ਦੁਆਰਾ ਵਰਤੇ ਗਏ ਅਧਿਕਾਰ ਪ੍ਰਦਾਤਾ ਨਾਲ ਲਿੰਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।" + link_account_button: "ਆਪਣੇ ਲੇਸ ਕਮਿਊਨਸ OIDC ਖਾਤੇ ਨੂੰ ਲਿੰਕ ਕਰੋ" + view_account: "ਆਪਣੇ ਖਾਤੇ ਨੂੰ ਵੇਖਣ ਲਈ, ਇੱਥੇ ਵੇਖੋ:" subscriptions: + index: + title: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ" + new: "ਨਵੀਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨ" + issue: "ਮੁੱਦੇ" + new: + title: "ਨਵੀਂ ਸਬਸਕ੍ਰਿਪਸ਼ਨ" + edit: + title: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਸੰਪਾਦਿਤ ਕਰੋ" + table: + edit_subscription: ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਸੰਪਾਦਿਤ ਕਰੋ + pause_subscription: ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਵਿਰਾਮ ਦਿਓ + unpause_subscription: ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਮੁੜ ਕੇ ਸ਼ੁਰੂ ਕਰੋ + cancel_subscription: ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਰੱਦ ਕਰੋ + filters: + query_placeholder: "\"ਈਮੇਲ ਦੁਆਰਾ ਖੋਜੋ...\"" + setup_explanation: + title: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ" + just_a_few_more_steps: 'ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੁਝ ਹੋਰ ਕਦਮ:''' + enable_subscriptions: "ਤੁਹਾਡੀਆਂ ਸ਼ਾਪਾਂ ਵਿੱਚੋਂ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਲਈ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ" + enable_subscriptions_step_1_html: 1. %{enterprises_link} ਪੇਜ ਤੇ ਜਾਓ, ਆਪਣੀ ਸ਼ਾਪ ਲੱਭੋ, ਅਤੇ "ਪ੍ਰਬੰਧਿਤ ਕਰੋ" ਉਤੇ ਕਲਿੱਕ ਕਰੋ। + enable_subscriptions_step_2: 2. "ਸ਼ਾਪ ਤਰਜੀਹਾਂ" ਦੇ ਤਹਿਤ, ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਵਿਕਲਪ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ + set_up_shipping_and_payment_methods_html: '%{shipping_link} ਅਤੇ %{payment_link} ਦੇ ਤਰੀਕਿਆਂ ਨੂੰ ਸੇਟਅੱਪ ਕਰੋ' + set_up_shipping_and_payment_methods_note_html: ਨੋਟ ਕਰੋ ਕਿ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨਾਲ ਸਿਰਫ਼ ਨਕਦ ਅਤੇ ਸਟ੍ਰਾਈਪ ਭੁਗਤਾਨ ਦੇ ਢੰਗ
ਵਰਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ + ensure_at_least_one_customer_html: ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਘੱਟੋ-ਘੱਟ ਇੱਕ %{customer_link} ਮੌਜੂਦ ਹੈ + create_at_least_one_schedule: ਘੱਟੋ-ਘੱਟ ਇੱਕ ਸ਼ੈਡਿਊਲ ਬਣਾਓ + create_at_least_one_schedule_step_1_html: 1. %{order_cycles_link} ਪੇਜ ਤੇ ਜਾਓ + create_at_least_one_schedule_step_2: 2. ਜੇਕਰ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਅਜਿਹਾ ਨਹੀਂ ਕੀਤਾ ਹੈ ਤਾਂ ਇੱਕ ਆਰਡਰ ਸਾਈਕਲ ਬਣਾਓ + create_at_least_one_schedule_step_3: 3. '+ ਨਵੇਂ ਸ਼ਡਿਊਲ' ਉਤੇ ਕਲਿੱਕ ਕਰੋ, ਅਤੇ ਫਾਰਮ ਭਰੋ + once_you_are_done_you_can_html: ਇੱਕ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਪੂਰਾ ਕਰ ਲੈਂਦੇ ਹੋ, ਤੁਸੀਂ %{reload_this_page_link} ਕਰ ਸਕਦੇ ਹੋ + reload_this_page: ਇਸ ਪੇਜ ਨੂੰ ਮੁੜ ਲੋਡ ਕਰੋ + form: + create: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਬਣਾਓ" + steps: + details: 1. ਬੁਨਿਆਦੀ ਵੇਰਵੇ + address: 2. ਪਤਾ + products: 3. ਉਤਪਾਦ ਜੋੜੋ + review: 4. ਸਮੀਖਿਆ ਕਰੋ ਅਤੇ ਸੇਵ ਕਰੋ + subscription_line_items: + this_is_an_estimate: | + ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਮਤਾਂ ਸਿਰਫ ਇੱਕ ਅਨੁਮਾਨ ਹਨ ਅਤੇ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਬਦਲਣ ਦੇ ਸਮੇਂ ਦੀ ਗਣਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਕੀਮਤਾਂ ਜਾਂ ਫ਼ੀਸਾਂ ਨੂੰ ਬਦਲਦੇ ਹੋ, ਤਾਂ ਆਰਡਰ ਅੱਪਡੇਟ ਕੀਤੇ ਜਾਣਗੇ, ਪਰ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਅਜੇ ਵੀ ਪੁਰਾਣੇ ਮੁੱਲਾਂ ਨੂੰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੇਗੀ। + not_in_open_and_upcoming_order_cycles_warning: "ਇਸ ਉਤਪਾਦ ਲਈ ਕੋਈ ਓਪਨ ਜਾਂ ਆਗਾਮੀ ਆਰਡਰ ਸਾਈਕਲ ਨਹੀਂ ਹਨ।" autocomplete: + name_or_sku: "ਨਾਂ ਜਾਂ SKU" quantity: "ਮਾਤਰਾ" add: "ਜੋੜੋ" details: + details: ਮਾਤਰਾ + invalid_error: ਓਹ! ਕਿਰਪਾ ਕਰਕੇ ਸਾਰੇ ਲੋੜੀਂਦੇ ਖੇਤਰਾਂ ਨੂੰ ਭਰੋ... + allowed_payment_method_types_tip: ਇਸ ਸਮੇਂ ਸਿਰਫ਼ ਨਕਦ ਅਤੇ ਸਟ੍ਰਾਈਪ ਭੁਗਤਾਨ ਦੇ ਢੰਗਾਂ ਦੀ ਵਰਤੋਂ ਹੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ credit_card: ਕਰੇਡਿਟ ਕਾਰਡ + charges_not_allowed: ਇਸ ਗਾਹਕ ਦੁਆਰਾ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਤੇ ਪੈਸੇ ਕੱਟੇ ਜਾਣ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ + no_default_card: ਗਾਹਕ ਕੋਲ ਚਾਰਜ ਕਰਨ ਲਈ ਕੋਈ ਕਾਰਡ ਉਪਲਬਧ ਨਹੀਂ ਹਨ + card_ok: ਗਾਹਕ ਕੋਲ ਚਾਰਜ ਕਰਨ ਲਈ ਇੱਕ ਕਾਰਡ ਉਪਲਬਧ ਹੈ + begins_at_placeholder: "ਇੱਕ ਮਿਤੀ ਚੁਣੋ" + ends_at_placeholder: "ਵਿਕਲਪਿਕ" + loading_flash: + loading: ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲੋਡ ਹੋ ਰਹੀ ਹੈ review: + details: ਮਾਤਰਾ + address: ਪਤਾ products: ਉਤਪਾਦ + no_open_or_upcoming_order_cycle: "ਕੋਈ ਆਗਾਮੀ ਆਰਡਰ ਸਾਈਕਲ ਨਹੀਂ" + products_panel: + save: "ਸੇਵ ਕਰੋ" + saving: "ਬਚਤ ਕਰ ਰਹੇ ਹਾਂ" + saved: "ਸੇਵ ਕੀਤਾ ਗਿਆ" + product_already_in_order: ਇਸ ਉਤਪਾਦ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਆਰਡਰ ਵਿੱਚ ਜੋੜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਮਾਤਰਾ ਨੂੰ ਸਿੱਧਾ ਸੰਪਾਦਿਤ ਕਰੋ। + stock: + insufficient_stock: "ਨਾਕਾਫ਼ੀ ਸਟਾਕ ਉਪਲਬਧ" + out_of_stock: "ਸਟਾਕ ਵਿੱਚ ਨਹੀਂ ਹੈਂ" orders: number: ਨੰਬਰ + confirm_edit: ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇਸ ਆਰਡਰ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਅਜਿਹਾ ਕਰਨ ਨਾਲ ਭਵਿੱਖ ਵਿੱਚ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸਵੈਚਲਿਤ ਤੌਰ ਤੇ ਸਿੰਕ ਕਰਨਾ ਜ਼ਿਆਦਾ ਮੁਸ਼ਕਲ ਹੋ ਸਕਦਾ ਹੈ। + confirm_cancel_msg: "ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਇਸ ਕਾਰਵਾਈ ਨੂੰ ਵਾਪਸ ਨਹੀਂ ਲਿੱਤਾ ਜਾ ਸਕਦਾ।" + cancel_failure_msg: "Sorry, cancellation failed!" + confirm_pause_msg: "Are you sure you want to pause this subscription?" + pause_failure_msg: "ਮੁਆਫ਼ ਕਰਨਾ, ਵਿਰਾਮ ਅਸਫਲ ਰਿਹਾ!" + confirm_unpause_msg: "ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਦੇ ਸ਼ਡਿਊਲ ਵਿੱਚ ਇੱਕ ਖੁੱਲਾ ਆਰਡਰ ਸਾਈਕਲ ਹੈ, ਤਾਂ ਇਸ ਗਾਹਕ ਲਈ ਇੱਕ ਆਰਡਰ ਬਣਾਇਆ ਜਾਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + unpause_failure_msg: "ਮਾਫ਼ ਕਰਨਾ, ਵਿਰਾਮ ਤੋਂ ਬਾਹਰ ਕੱਢਣਾ ਅਸਫਲ ਰਿਹਾ!" + confirm_cancel_open_orders_msg: "ਇਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲਈ ਕੁਝ ਆਰਡਰ ਇਸ ਸਮੇਂ ਖੁੱਲ੍ਹੇ ਹਨ। ਗਾਹਕ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਸੂਚਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿ ਆਰਡਰ ਲਿੱਤਾ ਜਾਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਇਸ ਆਰਡਰ (ਇਹਨਾਂ ਆਰਡਰਾਂ) ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੋਗੇ ਜਾਂ ਉਹਨਾਂ ਨੂੰ ਰੱਖਣਾ ਚਾਹੋਗੇ?" + resume_canceled_orders_msg: "ਇਸ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲਈ ਕੁਝ ਆਰਡਰ ਹੁਣੇ ਮੁੜ ਤੋਂ ਸ਼ੁਰੂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ। ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਆਰਡਰ ਡ੍ਰੌਪਡਾਊਨ ਤੋਂ ਮੁੜ-ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ।" + yes_cancel_them: ਉਹਨਾਂ ਨੂੰ ਰੱਦ ਕਰੋ + no_keep_them: ਉਹਨਾਂ ਨੂੰ ਰੱਖੋ + yes_i_am_sure: ਹਾਂ, ਮੈਨੂੰ ਯਕੀਨ ਹੈ number: "ਨੰਬਰ" + order_update_issues_msg: ਕੁਝ ਆਰਡਰ ਸਵੈਚਲਿਤ ਤੌਰ ਤੇ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ, ਇਹ ਸਭ ਤੋਂ ਵੱਧ ਸੰਭਾਵਨਾ ਹੈ ਕਿਉਂਕਿ ਉਹਨਾਂ ਨੂੰ ਹੱਥੀਂ ਸੰਪਾਦਿਤ ਕੀਤਾ ਗਿਆ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਸੂਚੀਬੱਧ ਮੁੱਦਿਆਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ ਅਤੇ ਲੋੜ ਪੈਣ ਤੇ ਵਿਅਕਤੀਗਤ ਆਰਡਰਾਂ ਲਈ ਕੋਈ ਵੀ ਸਮਾਯੋਜਨ ਕਰੋ। + no_results: + no_subscriptions: ਅਜੇ ਤੱਕ ਕੋਈ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨਹੀਂ... + why_dont_you_add_one: ਤੁਸੀਂ ਇੱਕ ਕਿਉਂ ਨਹੀਂ ਜੋੜਦੇ? :) + no_matching_subscriptions: ਕੋਈ ਮੇਲ ਖਾਂਦੀ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨਹੀਂ ਮਿਲੀ + schedules: + destroy: + associated_subscriptions_error: ਇਸ ਸ਼ਡਿਊਲ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਸੰਬੰਧਿਤ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਹਨ vouchers: new: + legend: ਨਵਾਂ ਵਾਊਚਰ back: ਵਾਪਸ save: ਸੇਵ ਕਰੋ + voucher_code: ਵਾਊਚਰ ਕੋਡ voucher_amount: ਰਕਮ + voucher_type: ਵਾਊਚਰ ਦੀ ਕਿਸਮ + flat_rate: ਫਲੈਟ + percentage_rate: ਪ੍ਰਤੀਸ਼ਤ (%) + controllers: + enterprises: + stripe_connect_cancelled: "ਸਟ੍ਰਾਈਪ ਨਾਲ ਕਨੇਕਸ਼ਨ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ" + stripe_connect_success: "ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੇਕਟ ਕੀਤਾ ਗਿਆ" + stripe_connect_fail: ਮਾਫ਼ ਕਰਨਾ, ਤੁਹਾਡੇ ਸਟ੍ਰਾਈਪ ਖਾਤੇ ਦਾ ਕਨੇਕਸ਼ਨ ਅਸਫਲ ਰਿਹਾ + stripe_connect_settings: + resource: ਸਟ੍ਰਾਈਪ ਕਨੇਕਟ ਕੌਂਫਿਗਰੇਸ਼ਨ + api: + unknown_error: "ਕੁਝ ਗੜਬੜ ਹੋ ਗਈ ਹੈ। ਸਾਡੀ ਟੀਮ ਨੂੰ ਸੂਚਿਤ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।" + invalid_api_key: "ਅਵੈਧ API ਕੁੰਜੀ (%{key}) ਨਿਰਧਾਰਤ ਕੀਤੀ ਗਈ।" + unauthorized: "ਤੁਸੀਂ ਉਹ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਅਧਿਕਾਰਤ ਨਹੀਂ ਹੋ।" + unpermitted_parameters: "ਇਸ ਬੇਨਤੀ ਵਿੱਚ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ: %{params}" + missing_parameter: "ਇੱਕ ਲੋੜੀਂਦਾ ਪੈਰਾਮੀਟਰ ਗੁੰਮ ਜਾਂ ਖਾਲੀ ਹੈ: %{param}" + invalid_resource: "ਅਵੈਧ ਸਰੋਤ। ਕਿਰਪਾ ਕਰਕੇ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + resource_not_found: "ਜਿਸ ਸਰੋਤ ਨੂੰ ਤੁਸੀਂ ਲੱਭ ਰਹੇ ਸੀ, ਉਹ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।" + enterprise_logo: + destroy_attachment_does_not_exist: "ਲੋਗੋ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + enterprise_promo_image: + destroy_attachment_does_not_exist: "ਪ੍ਰੋਮੋ ਫੋਟੋ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + enterprise_terms_and_conditions: + destroy_attachment_does_not_exist: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਦੀ ਫ਼ਾਈਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ" + orders: + failed_to_update: "ਆਰਡਰ ਅੱਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ" + query_param: + error: + title: ਅਵੈਧ ਪੁੱਛਗਿੱਛ ਪੈਰਾਮੀਟਰ + extra_fields: "ਅਸਮਰਥਿਤ ਖੇਤਰ: %{fields}" checkout: + failed: "ਚੈਕਆਊਟ ਅਸਫਲ ਰਿਹਾ। ਕਿਰਪਾ ਕਰਕੇ ਸਾਨੂੰ ਦੱਸੋ ਤਾਂ ਜੋ ਅਸੀਂ ਤੁਹਾਡੇ ਆਰਡਰ ਨੂੰ ਸੰਸਾਧਿਤ ਕਰ ਸਕੀਏ।" + payment_cancelled_due_to_stock: "ਭੁਗਤਾਨ ਰੱਦ ਕੀਤਾ ਗਿਆ: ਸਟਾਕ ਸੰਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਕਾਰਨ ਚੈਕਆਉਟ ਪੂਰਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + order_not_loaded: "ਚੈਕਆਉਟ ਸੰਸਾਧਨ ਲਈ ਕੋਈ ਵੈਧ ਆਰਡਰ ਨਹੀਂ ਮਿਲਿਆ" + your_details_without_number: ਤੁਹਾਡੇ ਵੇਰਵੇ + payment_method_without_number: ਭੁਗਤਾਨੇ ਦੇ ਢੰਗ + order_summary_without_number: ਆਰਡਰ ਸੰਖੇਪ + already_ordered: + cart: "ਕਾਰਟ" + message_html: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ ਤੁਹਾਡੇ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਆਰਡਰ ਹੈ। ਤੁਹਾਡੇ ਵੱਲੋਂ ਪਹਿਲਾਂ ਆਰਡਰ ਕੀਤੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਵੇਖਣ ਲਈ %{cart} ਨੂੰ ਚੈਕ ਕਰੋ। ਜਦੋਂ ਤੱਕ ਆਰਡਰ ਸਾਈਕਲ ਖੁੱਲ੍ਹਾ ਹੈ, ਤੁਸੀਂ ਆਈਟਮਾਂ ਨੂੰ ਰੱਦ ਵੀ ਕਰ ਸਕਦੇ ਹੋ।" step1: contact_information: + title: ਸੰਪਰਕ ਜਾਣਕਾਰੀ email: label: ਈਮੇਲ phone: label: ਫੋਨ ਨੰਬਰ billing_address: + title: ਬਿਲਿੰਗ ਪਤਾ first_name: label: ਪਹਿਲਾ ਨਾਂ last_name: label: ਆਖਰੀ ਨਾਂ address: + address1: + label: पता (गली + मकान नंबर) + address2: + label: ਵਾਧੂ ਪਤੇ ਦੀ ਜਾਣਕਾਰੀ (ਵਿਕਲਪਿਕ) + city: + label: ਸ਼ਹਿਰ state_id: label: ਸਥਿਤੀ + zipcode: + label: ਪਿੰਨ ਕੋਡ + country_id: + label: ਦੇਸ਼ + shipping_info: + title: ਸ਼ਿਪਿੰਗ ਜਾਣਕਾਰੀ + submit: ਅਗਲਾ - ਭੁਗਤਾਨ ਦਾ ਢੰਗ + cancel: ਬਾਸਕੇਟ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ ਉਤੇ ਵਾਪਸ step2: + payment_method: + title: ਭੁਗਤਾਨੇ ਦੇ ਢੰਗ form: + card_number: + label: ਕਾਰਡ ਨੰਬਰ + placeholder: ਜਿਵੇਂ ਕਿ 4242 4242 4242 4242 + card_verification_value: + label: CVC card_month: label: ਮਹੀਨਾ card_year: label: ਸਾਲ + stripe: + use_saved_card: ਸੇਵ ਕੀਤੇ ਕਾਰਡਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ + use_new_card: ਆਪਣੇ ਕਾਰਡ ਦੀ ਪਛਾਣ ਭਰੋ + save_card: ਭਵਿੱਖ ਦੀ ਵਰਤੋਂ ਲਈ ਕਾਰਡ ਸੇਵ ਕਰੋ + create_new_card: ਜਾਂ ਹੇਠਾਂ ਨਵੇਂ ਕਾਰਡ ਦੇ ਵੇਰਵੇ ਭਰੋ + explaination: ਤੁਸੀਂ ਅਗਲੇ ਪੜਾਅ ਵਿੱਚ ਆਪਣੇ ਆਰਡਰ ਦੀ ਸਮੀਖਿਆ ਅਤੇ ਪੁਸ਼ਟੀ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਅੰਤਿਮ ਲਾਗਤਾਂ ਸ਼ਾਮਲ ਹਨ। + submit: ਆਰਡਰ ਸੰਖੇਪ + cancel: ਤੁਹਾਡੇ ਵੇਰਵਿਆਂ ਤੇ ਵਾਪਸ + voucher: + voucher: "%{voucher_amount} ਵਾਊਚਰ" + apply_voucher: ਵਾਊਚਰ ਲਾਗੂ ਕਰੋ + apply: ਲਾਗੂ ਕਰੋ + placeholder: ਵਾਊਚਰ ਕੋਡ ਦਾਖਲ ਕਰੋ + remove_code: ਕੋਡ ਹਟਾਓ + confirm_delete: ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਵਾਉਚਰ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ? + warning_forfeit_remaining_amount: "ਨੋਟ: ਜੇਕਰ ਤੁਹਾਡੇ ਆਰਡਰ ਦੀ ਕੁੱਲ ਰਕਮ ਤੁਹਾਡੇ ਵਾਊਚਰ ਤੋਂ ਘੱਟ ਹੈ ਤਾਂ ਤੁਸੀਂ ਬਾਕੀ ਮੁੱਲ ਨੂੰ ਖਰਚ ਕਰਨ ਦੇ ਯੋਗ ਨਹੀਂ ਹੋ ਸਕੋਗੇ।" step3: delivery_details: + title: ਡਿਲਿਵਰੀ ਵੇਰਵੇ edit: ਸੰਪਾਦਿਤ ਕਰੋ + address: ਡਿਲਿਵਰੀ ਪਤਾ + instructions: ਹਦਾਇਤਾਂ payment_method: + title: ਭੁਗਤਾਨੇ ਦੇ ਢੰਗ edit: ਸੰਪਾਦਿਤ ਕਰੋ + instructions: ਹਦਾਇਤਾਂ order: + title: ਆਰਡਰ ਵੇਰਵੇ edit: ਸੰਪਾਦਿਤ ਕਰੋ + terms_and_conditions: + message_html: "ਮੈਂ ਵਿਕਰੇਤਾ ਦੇ %{terms_and_conditions_link} ਨਾਲ ਸਹਿਮਤ ਹਾਂ।" + link_text: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ" + platform_terms_of_service: + message_html: "ਮੈਂ ਪਲੇਟਫਾਰਮ %{tos_link} ਨਾਲ ਸਹਿਮਤ ਹਾਂ।" + all_terms_and_conditions: + message_html: "ਮੈਂ ਵਿਕਰੇਤਾ ਦੇ %{terms_and_conditions_link} ਅਤੇ ਪਲੇਟਫਾਰਮ %{tos_link} ਨਾਲ ਸਹਿਮਤ ਹਾਂ।" + terms_and_conditions: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ" + submit: ਪੂਰਾ ਆਰਡਰ + cancel: ਭੁਗਤਾਨ ਦੇ ਤਰੀਕੇ ਤੇ ਵਾਪਸ + errors: + saving_failed: "ਸੇਵ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ, ਕਿਰਪਾ ਕਰਕੇ ਹਾਈਲਾਈਟ ਕੀਤੇ ਖੇਤਰਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰੋ।" + terms_not_accepted: ਕਿਰਪਾ ਕਰਕੇ ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਸਵੀਕਾਰ ਕਰੋ + required: ਖੇਤਰ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ + invalid_number: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੈਧ ਫੋਨ ਨੰਬਰ ਭਰੋ" + invalid_email: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੈਧ ਈਮੇਲ ਪਤਾ ਭਰੋ" + select_a_shipping_method: ਇੱਕ ਸ਼ਿਪਿੰਗ ਦਾ ਢੰਗ ਚੁਣੋ + select_a_payment_method: ਇੱਕ ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ ਚੁਣੋ + no_shipping_methods_available: ਸ਼ਿਪਿੰਗ ਵਿਕਲਪਾਂ ਦੀ ਅਣਹੋਂਦ ਕਾਰਨ ਚੈਕਆਉਟ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਸ਼ਾਪ ਦੇ ਮਾਲਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ। + voucher_not_found: ਨਹੀਂ ਲਭਿਆ + add_voucher_error: ਵਾਊਚਰ ਜੋੜਦੇ ਸਮੇਂ ਇੱਕ ਤਰੁੱਟੀ ਉਤਪੰਨ ਹੋਈ + shops: + hubs: + show_closed_shops: "ਬੰਦ ਸ਼ਾਪਾਂ ਵਿਖਾਓ" + hide_closed_shops: "ਬੰਦ ਸ਼ਾਪਾਂ ਲੁਕਾਓ" + show_on_map: "ਮੈਪ ਤੇ ਸਭ ਵਿਖਾਓ" shared: mailers: powered_by: open_food_network: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ" + powered_html: "ਤੁਹਾਡਾ ਖਰੀਦਦਾਰੀ ਅਨੁਭਵ %{open_food_network} ਦੁਆਰਾ ਸੰਚਾਲਿਤ ਹੈ।" menu: + cart: + cart: "ਕਾਰਟ" + cart_sidebar: + checkout: "ਚੈਕਆਊਟ" + edit_cart: "ਕਾਰਟ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" + items_in_cart_singular: "ਤੁਹਾਡੀ ਕਾਰਟ ਵਿੱਚ %{num} ਆਈਟਮ ਹੈ" + items_in_cart_plural: "ਤੁਹਾਡੀ ਕਾਰਟ ਵਿੱਚ %{num} ਆਈਟਮਾਂ ਹਨ" + close: "ਬੰਦ" + cart_empty: "ਤੁਹਾਡਾ ਕਾਰਟ ਖਾਲੀ ਹੈ" + take_me_shopping: "ਮੈਨੂੰ ਖਰੀਦਦਾਰੀ ਕਰਨ ਲਈ ਲੈ ਚਲੋ!" signed_in: profile: "ਪ੍ਰੋਫਾਈਲ" - invoice_column_price: "\"ਕੀਮਤ\"" + mobile_menu: + cart: "ਕਾਰਟ" + register_call: + selling_on_ofn: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਆਉਣ ਵਿੱਚ ਦਿਲਚਸਪੀ ਰੱਖਦੇ ਹੋ?" + register: "ਇੱਥੇ ਰਜਿਸਟਰ ਕਰੋ" + footer: + footer_secure: "ਸੁਰੱਖਿਅਤ ਅਤੇ ਭਰੋਸੇਮੰਦ." + footer_secure_text: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੁਹਾਡੀ ਖਰੀਦਦਾਰੀ ਅਤੇ ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ ਨੂੰ ਗੁਪਤ ਰੱਖਣ ਲਈ ਹਰ ਥਾਂ SSL ਐਨਕ੍ਰਿਪਸ਼ਨ (2048 ਬਿੱਟ RSA) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਸਾਡੇ ਸਰਵਰ ਤੁਹਾਡੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਦੇ ਵੇਰਵਿਆਂ ਨੂੰ ਸਟੋਰ ਨਹੀਂ ਕਰਦੇ ਹਨ ਅਤੇ ਭੁਗਤਾਨਾਂ ਨੂੰ PCI-ਅਨੁਕੂਲ ਸੇਵਾਵਾਂ ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।" + footer_contact_headline: "ਸੰਪਰਕ ਵਿੱਚ ਰਹੋ" + footer_contact_email: "ਸਾਨੂੰ ਈਮੇਲ ਕਰੋ" + footer_nav_headline: "ਨੇਵੀਗੇਟ" + footer_join_headline: "ਸਾਡੇ ਨਾਲ ਜੁੜੋ" + footer_join_body: "ਓਪਨ ਫੂਡ ਨੈੱਟਵਰਕ ਉਤੇ ਇੱਕ ਸੂਚੀ, ਸ਼ਾਪ ਜਾਂ ਸਮੂਹ ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ।" + footer_join_cta: "ਮੈਨੂੰ ਹੋਰ ਦੱਸੋ!" + footer_legal_call: "ਸਾਡਾ ਇਹ ਪੜ੍ਹੋ" + footer_legal_visit: "ਸਾਨੂੰ ਇਥੇ ਲੱਭੋ" + footer_legal_text_html: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਇੱਕ ਮੁਫਤ ਅਤੇ ਓਪਨ ਸੋਰਸ ਸੌਫਟਵੇਅਰ ਪਲੇਟਫਾਰਮ ਹੈ। ਸਾਡੇ ਕੰਟੇਂਟ ਨੂੰ %{content_license} ਅਤੇ ਸਾਡੇ ਕੋਡ ਨੂੰ %{code_license} ਤੋਂ ਲਾਇਸੈਂਸ ਪ੍ਰਾਪਤ ਹੈ।" + footer_data_text_with_privacy_policy_html: "ਅਸੀਂ ਤੁਹਾਡੇ ਡੇਟਾ ਦੀ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦੇਖਭਾਲ ਕਰਦੇ ਹਾਂ। ਸਾਡੀ %{privacy_policy} ਅਤੇ %{cookies_policy}\" ਵੇਖੋ।" + footer_data_text_without_privacy_policy_html: "ਅਸੀਂ ਤੁਹਾਡੇ ਡੇਟਾ ਦੀ ਚੰਗੀ ਤਰ੍ਹਾਂ ਦੇਖਭਾਲ ਕਰਦੇ ਹਾਂ। ਸਾਡੀ %{cookies_policy} ਵੇਖੋ" + footer_data_privacy_policy: "ਪ੍ਰਾਈਵੇਸੀ ਪਾਲਿਸੀ" + footer_data_cookies_policy: "ਕੂਕੀਜ਼ ਪਾਲਿਸੀ" + shop: + messages: + customer_required: + login: "ਲਾਗਇਨ" + contact: "ਸੰਪਰਕ" + require_customer_login: "ਸਿਰਫ਼ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਗਾਹਕ ਹੀ ਇਸ ਸ਼ਾਪ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹਨ।" + require_login_link_html: "ਜੇ ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਗਾਹਕ ਹੋ, ਤਾਂ ਅੱਗੇ ਵਧਣ ਲਈ %{login} ਕਰੋ।" + require_login_2_html: "ਇੱਥੇ ਖਰੀਦਦਾਰੀ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? ਕਿਰਪਾ ਕਰਕੇ %{contact} %{enterprise} ਅਤੇ ਸ਼ਾਮਲ ਹੋਣ ਬਾਰੇ ਪੁੱਛੋ।" + require_customer_html: "ਜੇ ਤੁਸੀਂ ਇੱਥੇ ਖਰੀਦਦਾਰੀ ਸ਼ੁਰੂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ ਸ਼ਾਮਲ ਹੋਣ ਬਾਰੇ ਪੁੱਛਣ ਲਈ %{contact} %{enterprise} ਨੂੰ ਪੁੱਛੋ।" + products: + summary: + bulk: "ਥੋਕ" + card_could_not_be_updated: ਕਾਰਡ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ + card_could_not_be_saved: ਕਾਰਡ ਨੂੰ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ + spree_gateway_error_flash_for_checkout: "ਤੁਹਾਡੀ ਭੁਗਤਾਨ ਜਾਣਕਾਰੀ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਸੀ: %{error}" + invoice_billing_address: "ਬਿਲਿੰਗ ਪਤਾ:" + invoice_column_tax: "ਜੀਐਸਟੀ" + invoice_column_price: "ਕੀਮਤ" + invoice_column_item: "ਆਈਟਮ" + invoice_column_qty: "ਮਾਤਰਾ" + invoice_column_weight_volume: "ਵਜ਼ਨ / ਮਾਤਰਾ" + invoice_column_unit_price_with_taxes: "ਯੂਨਿਟ ਕੀਮਤ (ਟੈਕਸ ਸਮੇਤ)" + invoice_column_unit_price_without_taxes: "ਯੂਨਿਟ ਕੀਮਤ (ਟੈਕਸ ਛੱਡ ਕੇ)" + invoice_column_price_with_taxes: "ਕੁੱਲ ਕੀਮਤ (ਟੈਕਸ ਸਮੇਤ)" + invoice_column_price_without_taxes: "ਕੁੱਲ ਕੀਮਤ (ਟੈਕਸ ਛੱਡ ਕੇ)" + invoice_column_price_per_unit_without_taxes: "ਪ੍ਰਤੀ ਯੂਨਿਟ ਕੀਮਤ (ਟੈਕਸ ਛੱਡ ਕੇ)" invoice_column_tax_rate: "ਟੈਕਸ ਦੀ ਦਰ" + invoice_tax_total: "ਜੀਐਸਟੀ ਕੁੱਲ:" + tax_invoice: "ਟੈਕਸ ਇਨਵੌਇਸ" + tax_total: "ਕੁੱਲ ਟੈਕਸ (%{rate}):" + invoice_shipping_category_delivery: "ਡਿਲਿਵਰੀ" + invoice_shipping_category_pickup: "ਪਿਕਅੱਪ" + total_excl_tax: "ਕੁੱਲ (ਟੈਕਸ ਛੱਡ ਕੇ):" + total_incl_tax: "ਕੁੱਲ (ਟੈਕਸ ਸਮੇਤ):" + total_all_tax: "ਕੁੱਲ ਟੈਕਸ:" + abn: "ABN:" + acn: "ACN:" + invoice_issued_on: "ਇਨਵੌਇਸ ਇਸ ਮਿਤੀ ਨੂੰ ਜਾਰੀ ਕੀਤਾ ਗਿਆ:" + order_number: "ਆਰਡਰ ਨੰਬਰ:" + date_of_transaction: "ਲੈਣ-ਦੇਣ ਦੀ ਮਿਤੀ:" + menu_1_title: "ਸ਼ਾਪਾਂ" + menu_1_url: "/ਸ਼ਾਪਾਂ" + menu_2_title: "ਮੈਪ" + menu_2_url: "/ਮੈਪ" menu_3_title: "ਉਤਪਾਦਕ" + menu_3_url: "ਉਤਪਾਦਕ" menu_4_title: "ਸਮੂਹ" + menu_4_url: "/ਸਮੂਹ" + menu_5_title: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + menu_5_url: "https://about.openfoodnetwork.org.au/" + menu_6_title: "ਕਨੈਕਟ" + menu_6_url: "https://openfoodnetwork.org/au/connect/" + menu_7_title: "ਸਿੱਖੋ" + menu_7_url: "https://openfoodnetwork.org/au/learn/" + logo: "ਲੋਗੋ (640x130)" + logo_mobile: "ਮੋਬਾਈਲ ਲੋਗੋ (75x26)" + logo_mobile_svg: "ਮੋਬਾਈਲ ਲੋਗੋ (SVG)" + home_hero: "ਹੀਰੋ ਫੋਟੋ" + home_show_stats: "ਅੰਕੜੇ ਵਿਖਾਓ" + footer_logo: "ਲੋਗੋ (220x76)" + footer_facebook_url: "ਫੇਸਬੁੱਕ URL" + footer_twitter_url: "ਟਵਿੱਟਰ URL" + footer_instagram_url: "ਇੰਸਟਾਗ੍ਰਾਮ URL" + footer_linkedin_url: "ਲਿੰਕਡਇਨ URL" + footer_googleplus_url: "ਗੂਗਲ ਪਲੱਸ URL" + footer_pinterest_url: "ਪਿਨਟਰੈਸਟ URL" footer_email: "ਈਮੇਲ" + footer_links_md: "ਲਿੰਕ" + footer_about_url: "URL ਦੇ ਬਾਰੇ ਵਿੱਚ" + user_guide_link: "ਉਪਭੋਗਤਾ ਗਾਈਡ ਲਿੰਕ" name: ਨਾਮ first_name: ਪਹਿਲਾ ਨਾਂ last_name: ਆਖਰੀ ਨਾਂ email: ਈਮੇਲ phone: ਫੋਨ + next: ਅਗਲਾ + address: ਪਤਾ + address_placeholder: ਜਿਵੇਂ ਕਿ 123 ਹਾਈ ਸਟਰੀਟ + address2: ਪਤਾ (ਜਾਰੀ) + city: ਸ਼ਹਿਰ + city_placeholder: ਜਿਵੇਂ ਕਿ ਨੌਰਥਕੋਟ + latitude: ਲੈਟਿਟ੍ਯੂਡ + latitude_placeholder: ਜਿਵੇਂ ਕਿ -37.4713077 + latitude_longitude_tip: ਤੁਹਾਡੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਨਕਸ਼ੇ ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰਨ ਲਈ ਲੈਟਿਟ੍ਯੂਡ ਅਤੇ ਲੌਨਜੀਟੂਡ ਦੀ ਲੋੜ ਹੈ। + longitude: ਲੌਨਜੀਟੂਡ + longitude_placeholder: ਜਿਵੇਂ ਕਿ - 144.7851531 + use_geocoder: ਪਤੇ ਤੋਂ ਸਵੈਚਲਿਤ ਤੌਰ ਤੇ ਲੈਟਿਟ੍ਯੂਡ ਅਤੇ ਲੌਨਜੀਟੂਡ ਦੀ ਗਣਨਾ ਕਰੋ? state: ਸਥਿਤੀ + postcode: ਪਿੰਨ ਕੋਡ + postcode_placeholder: ਜਿਵੇਂ ਕਿ 3070 + suburb: ਉਪਨਗਰ + country: ਦੇਸ਼ + unauthorized: ਅਣਅਧਿਕਾਰਤ + terms_of_service: "ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ" + on_demand: ਡਿਮਾਂਡ ਤੇ + not_allowed: ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ + no_shipping: ਸ਼ਿਪਿੰਗ ਦਾ ਕੋਈ ਢੰਗ ਨਹੀਂ + no_payment: ਭੁਗਤਾਨ ਦਾ ਕੋਈ ਢੰਗ ਨਹੀਂ + no_shipping_or_payment: ਸ਼ਿਪਿੰਗ ਜਾਂ ਭੁਗਤਾਨ ਦਾ ਕੋਈ ਢੰਗ ਨਹੀਂ + unconfirmed: ਅਪੁਸ਼ਟ + days: ਦਿਨ + authorization_failure: "ਅਧਿਕਾਰੀਕਰਨ ਅਸਫਲਤਾ" description: "ਵਰਣਨ" label_shop: "ਸ਼ਾਪ" + label_shops: "ਸ਼ਾਪਾਂ" + label_map: "ਮੈਪ" label_producer: "ਉਤਪਾਦਕ" label_producers: "ਉਤਪਾਦਕ" label_groups: "ਸਮੂਹ" + label_about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + label_blog: "ਬਲੌਗ" + label_support: "ਸਮਰਥਨ" + label_shopping: "ਸ਼ਾਪਿੰਗ" + label_login: "ਲਾਗਇਨ" + label_logout: "ਲਾਗਆਊਟ" + label_signup: "ਸਾਇਨ ਅਪ" + label_administration: "ਪ੍ਰਸ਼ਾਸਨ" + label_admin: "ਪ੍ਰਸ਼ਾਸਕ" + label_account: "ਖਾਤਾ" label_more: "ਹੋਰ ਵਿਖਾਓ" + label_less: "ਘੱਟ ਵਿਖਾਓ" + label_notices: "ਨੋਟਿਸ" + cart_items: "ਆਈਟਮਾਂ" + cart_headline: "ਤੁਹਾਡਾ ਸ਼ਾਪਿੰਗ ਕਾਰਟ" + total: "ਕੁੱਲ" + cart_updating: "ਕਾਰਟ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + cart_empty: "ਕਾਰਟ ਖਾਲੀ ਹੈ" + cart_edit: "ਆਪਣੇ ਕਾਰਟ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ" + item: "ਆਈਟਮ" + qty: "ਮਾਤਰਾ" + card_number: ਕਾਰਡ ਨੰਬਰ + card_securitycode: "ਸੁਰੱਖਿਆ ਕੋਡ" + card_expiry_date: ਮਿਆਦ ਪੁੱਗਣ ਦੀ ਮਿਤੀ + card_masked_digit: "X" + card_expiry_abbreviation: "Exp" + new_credit_card: "ਨਵਾਂ ਕ੍ਰੈਡਿਟ ਕਾਰਡ" + my_credit_cards: ਮੇਰੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ + add_new_credit_card: ਨਵਾਂ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਜੋੜੋ + saved_cards: ਸੇਵ ਕੀਤੇ ਕਾਰਡ + add_a_card: ਇੱਕ ਕਾਰਡ ਜੋੜੋ + add_card: ਕਾਰਡ ਜੋੜੋ + you_have_no_saved_cards: ਤੁਸੀਂ ਅਜੇ ਤੱਕ ਕੋਈ ਵੀ ਕਾਰਡ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਹੈ + saving_credit_card: ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਸੇਵ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ... + card_has_been_removed: "ਤੁਹਾਡਾ ਕਾਰਡ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ (ਨੰਬਰ: %{number})" + card_could_not_be_removed: ਮਾਫ਼ ਕਰਨਾ, ਕਾਰਡ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਿਆ + invalid_credit_card: "ਅਵੈਧ ਕ੍ਰੈਡਿਟ ਕਾਰਡ" + legal: + cookies_policy: + header: "ਅਸੀਂ ਕੂਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਿਵੇਂ ਕਰਦੇ ਹਾਂ" + desc_part_1: "ਕੂਕੀਜ਼ ਬਹੁਤ ਛੋਟੀਆਂ ਟੈਕਸਟ ਫਾਈਲਾਂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉਤੇ ਸਟੋਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਕੁਝ ਵੈਬਸਾਈਟਾਂ ਤੇ ਜਾਂਦੇ ਹੋ।" + desc_part_2: "OFN ਵਿੱਚ ਅਸੀਂ ਤੁਹਾਡੀ ਗੋਪਨੀਯਤਾ ਦਾ ਪੂਰਾ ਸਤਿਕਾਰ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਸਿਰਫ਼ ਉਹਨਾਂ ਕੂਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਜੋ ਤੁਹਾਨੂੰ ਆਨਲਾਈਨ ਭੋਜਨ ਵੇਚਣ/ਖਰੀਦਣ ਦੀ ਸੇਵਾ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। ਅਸੀਂ ਤੁਹਾਡਾ ਕੋਈ ਵੀ ਡੇਟਾ ਨਹੀਂ ਵੇਚਦੇ। ਅਸੀਂ ਭਵਿੱਖ ਵਿੱਚ ਤੁਹਾਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦਾ ਪ੍ਰਸਤਾਵ ਦੇ ਸਕਦੇ ਹਾਂ। ਨਵੀਆਂ ਕਾਮਨਜ਼ ਸੇਵਾਵਾਂ ਬਣਾਉਣ ਲਈ ਤੁਹਾਡੇ ਕੁਝ ਡੇਟਾ ਜੋ ਈਕੋਸਿਸਟਮ ਲਈ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੀਆਂ ਹਨ (ਜਿਵੇਂ ਕਿ ਛੋਟੇ ਭੋਜਨ ਪ੍ਰਣਾਲੀਆਂ ਲਈ ਲੌਜਿਸਟਿਕ ਸੇਵਾਵਾਂ) ਪਰ ਅਸੀਂ ਅਜੇ ਉਥੇ ਨਹੀਂ ਹਾਂ, ਅਤੇ ਅਸੀਂ ਤੁਹਾਡੇ ਅਧਿਕਾਰ ਤੋਂ ਬਿਨਾਂ ਅਜਿਹਾ ਨਹੀਂ ਕਰਾਂਗੇ :-)" + desc_part_3: "ਅਸੀਂ ਕੂਕੀਜ਼ ਦੀ ਵਰਤੋਂ ਮੁੱਖ ਤੌਰ ਤੇ ਇਹ ਯਾਦ ਰੱਖਣ ਲਈ ਕਰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਕੌਣ ਹੋ ਜੇ ਤੁਸੀਂ ਸੇਵਾ ਵਿੱਚ 'ਲੌਗ ਇਨ' ਕਰਦੇ ਹੋ, ਜਾਂ ਤੁਹਾਡੇ ਦੁਆਰਾ ਲੌਗਇਨ ਨਾ ਹੋਣ ਤੇ ਵੀ ਤੁਹਾਡੇ ਕਾਰਟ ਵਿੱਚ ਪਾਈਆਂ ਗਈਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਦੇ ਯੋਗ ਹੋਣ ਲਈ। ਜੇਕਰ ਤੁਸੀਂ ਬਿਨਾਂ \"ਕੂਕੀਜ਼ ਸਵੀਕਾਰ ਹਨ\" ਤੇ ਕਲਿੱਕ ਕੀਤੇ ਵੈਬਸਾਈਟ ਉਤੇ ਨੈਵੀਗੇਟ ਕਰਦੇ ਰਹਿੰਦੇ ਹੋ, ਤਾਂ ਅਸੀਂ ਮੰਨਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਸਾਨੂੰ ਉਹਨਾਂ ਕੂਕੀਜ਼ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਸਹਿਮਤੀ ਦੇ ਰਹੇ ਹੋ ਜੋ ਵੈਬਸਾਈਟ ਦੇ ਕੰਮਕਾਜ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। ਇੱਥੇ ਕੂਕੀਜ਼ ਦੀ ਉਹ ਸੂਚੀ ਦਿੱਤੀ ਗਈ ਹੈ ਜੋ ਅਸੀਂ ਵਰਤਦੇ ਹਾਂ!" + essential_cookies: "ਜ਼ਰੂਰੀ ਕੂਕੀਜ਼" + essential_cookies_desc: "ਸਾਡੀ ਵੈਬਸਾਈਟ ਦੇ ਸੰਚਾਲਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਕੂਕੀਜ਼ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹਨ।" + essential_cookies_note: "ਜ਼ਿਆਦਾਤਰ ਕੂਕੀਜ਼ ਵਿੱਚ ਸਿਰਫ਼ ਇੱਕ ਵਿਲੱਖਣ ਪਛਾਣਕਰਤਾ ਹੁੰਦਾ ਹੈ, ਪਰ ਕੋਈ ਹੋਰ ਡੇਟਾ ਨਹੀਂ, ਇਸਲਈ ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਅਤੇ ਪਾਸਵਰਡ ਕਦੇ ਵੀ ਉਹਨਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਹੁੰਦਾ ਅਤੇ ਕਦੇ ਵੀ ਸਾਹਮਣੇ ਨਹੀਂ ਆਉਂਦਾ।" + cookie_domain: "ਇਸ ਦੁਆਰਾ ਸੇਟ ਕਰੋ:" + cookie_session_desc: "ਵੇਬਸਾਈਟ ਨੂੰ ਪੇਜ ਉਤੇ ਵਿਜ਼ਿਟ ਦੇ ਵਿਚਕਾਰ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਦੀ ਆਗਿਆ ਦੇਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਉਦਾਹਰਨ ਲਈ, ਤੁਹਾਡੀ ਕਾਰਟ ਵਿੱਚ ਆਈਟਮਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣ ਲਈ।" + cookie_consent_desc: "ਕੂਕੀਜ਼ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਉਪਭੋਗਤਾ ਦੀ ਸਹਿਮਤੀ ਦੀ ਸਥਿਤੀ ਨੂੰ ਕਾਇਮ ਰੱਖਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ" + cookie_remember_me_desc: "ਜੇਕਰ ਉਪਭੋਗਤਾ ਨੇ ਵੈਬਸਾਈਟ ਨੂੰ ਉਸਨੂੰ ਯਾਦ ਰੱਖਣ ਲਈ ਬੇਨਤੀ ਕੀਤੀ ਹੈ ਤਾਂ ਇਸਨੂੰ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਕੂਕੀ 12 ਦਿਨਾਂ ਬਾਅਦ ਆਪਣੇ ਆਪ ਮਿਟਾ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। ਜੇਕਰ ਇੱਕ ਉਪਭੋਗਤਾ ਦੇ ਰੂਪ ਵਿੱਚ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਕੂਕੀ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਲੌਗਆਊਟ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ ਕੂਕੀ ਨੂੰ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉਤੇ ਇੰਸਟਾਲ ਕੀਤਾ ਜਾਵੇ ਤਾਂ ਤੁਹਾਨੂੰ ਲੌਗਇਨ ਕਰਨ ਵੇਲੇ \"ਮੈਨੂੰ ਯਾਦ ਰੱਖੋ\" ਚੈਕਬਾਕਸ ਤੇ ਚੈਕ ਦਾ ਨਿਸ਼ਾਨ ਨਹੀਂ ਲਾਉਣਾ ਚਾਹੀਦਾ।" + cookie_openstreemap_desc: "ਸਾਡੇ ਦੋਸਤਾਨਾ ਓਪਨ ਸੋਰਸ ਮੈਪਿੰਗ ਪ੍ਰਦਾਤਾ (OpenStreetMap) ਦੁਆਰਾ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਕਿ ਇੱਕ ਦਿੱਤੇ ਸਮੇਂ ਦੇ ਦੌਰਾਨ ਉਹ ਬਹੁਤ ਸਾਰੀਆਂ ਬੇਨਤੀਆਂ ਪ੍ਰਾਪਤ ਨਾ ਕਰਨ, ਤਾਂ ਜੋ ਉਹਨਾਂ ਦੀਆਂ ਸੇਵਾਵਾਂ ਦੀ ਦੁਰਵਰਤੋਂ ਨੂੰ ਰੋਕਿਆ ਜਾ ਸਕੇ।" + cookie_stripe_desc: "ਧੋਖਾਧੜੀ ਦਾ ਪਤਾ ਲਗਾਉਣ ਲਈ ਸਾਡੇ ਭੁਗਤਾਨ ਪ੍ਰੋਸੈਸਰ ਸਟ੍ਰਾਈਪ ਦੁਆਰਾ ਇਕੱਤਰ ਕੀਤਾ ਗਿਆ ਡੇਟਾ https://stripe.com/cookies-policy/legal। ਸਾਰੀਆਂ ਸ਼ਾਪਾਂ ਸਟ੍ਰਾਈਪ ਨੂੰ ਭੁਗਤਾਨ ਵਿਧੀ ਵਜੋਂ ਨਹੀਂ ਵਰਤਦੀਆਂ ਹਨ, ਪਰ ਧੋਖਾਧੜੀ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸਨੂੰ ਸਾਰੇ ਪੰਨਿਆਂ ਤੇ ਲਾਗੂ ਕਰਨਾ ਇੱਕ ਚੰਗਾ ਅਭਿਆਸ ਹੈ। ਸ਼ਾਇਦ ਸਟ੍ਰਾਈਪ ਇੱਕ ਤਸਵੀਰ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਾਡੇ ਕਿਹੜੇ ਪੰਨੇ ਆਮ ਤੌਰ ਤੇ ਉਹਨਾਂ ਦੇ API ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦੇ ਹਨ ਅਤੇ ਫਿਰ ਕਿਸੇ ਵੀ ਅਸਧਾਰਨ ਚੀਜ਼ਾਂ ਨੂੰ ਫਲੈਗ ਕਰਦੇ ਹਨ। ਇਸ ਲਈ ਸਟ੍ਰਾਈਪ ਕੂਕੀ ਨੂੰ ਸੈਟ ਕਰਨਾ ਇੱਕ ਉਪਭੋਗਤਾ ਲਈ ਭੁਗਤਾਨ ਵਿਧੀ ਪ੍ਰਦਾਨ ਕਰਨ ਨਾਲੋਂ ਵਧੇਰੇ ਵਿਆਪਕ ਹੈ। ਇਸਨੂੰ ਹਟਾਉਣਾ ਸੰਭਵ ਹੈ। ਇਸਨੂੰ ਹਟਾਉਣ ਨਾਲ ਸੁਰੱਖਿਆ ਦੀ ਸੇਵਾ ਪ੍ਰਭਾਵਿਤ ਹੋ ਸਕਦੀ ਹੈ। ਤੁਸੀਂ ਸਟ੍ਰਾਈਪ ਬਾਰੇ ਹੋਰ ਜਾਣ ਸਕਦੇ ਅਤੇ ਇਸਦੀ ਗੋਪਨੀਯਤਾ ਨੀਤੀ ਨੂੰ https://stripe.com/privacy ਤੇ ਪੜ੍ਹ ਸਕਦੇ ਹੋ।" + statistics_cookies: "ਸਟੈਟਿਸਟਿਕਸ ਕੂਕੀਜ਼" + statistics_cookies_desc: "ਹੇਠ ਦਿੱਤੇ ਸਖਤੀ ਨਾਲ ਜ਼ਰੂਰੀ ਨਹੀਂ ਹਨ, ਪਰ ਤੁਹਾਡੇ ਦਵਾਰਾ ਅਨੁਮਤੀ ਦੇਣ ਨਾਲ ਇਹ ਸਾਨੂੰ ਉਪਭੋਗਤਾ ਵਿਵਹਾਰ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ, ਪਛਾਣ ਕਰਨ ਲਈ ਕਿ ਤੁਹਾਨੂੰ ਸਭ ਤੋਂ ਵੱਧ ਕਿਹੜੀਆਂ ਸੁਵਿਧਾਵਾਂ ਸਬ ਤੋਂ ਵਧੀਆ ਲੱਗਦੀਆਂ ਹਨ, ਜਾਂ ਨਹੀਂ ਲੱਗਦੇ ਹਨ, ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਸਮਝਣ, ਆਦਿ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ, ਜਿਦੇ ਨਾਲ ਅਸੀਂ ਇੱਕ ਬੇਹਤਰ ਉਪਭੋਗਤਾ ਅਨੁਭਵ ਪ੍ਰਦਾਨ ਕਰਨ ਵਿੱਚ ਸਕਸ਼ਮ ਬਣਾਉਂਦੇ ਹਨ।" + statistics_cookies_matomo_desc_html: "ਪਲੇਟਫਾਰਮ ਦੀ ਵਰਤੋਂ ਦੇ ਡੇਟਾ ਨੂੰ ਇਕੱਤਰ ਕਰਨ ਅਤੇ ਵਿਸ਼ਲੇਸ਼ਣ ਕਰਨ ਲਈ, ਅਸੀਂ Matomo (ex Piwik) ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ, ਜੋ ਕਿ ਇੱਕ ਓਪਨ ਸੋਰਸ ਵਿਸ਼ਲੇਸ਼ਣ ਟੂਲ ਹੈ ਜੋ GDPR ਅਨੁਕੂਲ ਹੈ ਅਤੇ ਤੁਹਾਡੀ ਗੋਪਨੀਯਤਾ ਦੀ ਰੱਖਿਆ ਕਰਦਾ ਹੈ।" + statistics_cookies_matomo_optout: "ਕੀ ਤੁਸੀਂ ਮਾਟੋਮੋ ਵਿਸ਼ਲੇਸ਼ਕੀ ਤੋਂ ਬਾਹਰ ਨਿਕਲਣਾ ਚਾਹੁੰਦੇ ਹੋ? ਅਸੀਂ ਕੋਈ ਨਿੱਜੀ ਡਾਟਾ ਇਕੱਠਾ ਨਹੀਂ ਕਰਦੇ, ਅਤੇ ਮਾਟੋਮੋ ਸਾਡੀ ਸੇਵਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰਦਾ ਹੈ, ਪਰ ਅਸੀਂ ਤੁਹਾਡੀ ਪਸੰਦ ਦਾ ਸਨਮਾਨ ਕਰਦੇ ਹਾਂ :-)" + cookie_matomo_heatmap_desc: "ਡਾਟਾ ਇਕੱਠਾ ਕਰਨ ਲਈ ਮਾਟੋਮੋ ਦੀ ਪਹਿਲੀ ਪਾਰਟੀ ਕੂਕੀਜ਼।" + cookie_matomo_ignore_desc: "ਕੁਕੀ ਜਿਦੀ ਵਰਤੋਂ ਉਪਭੋਗਤਾ ਨੂੰ ਟਰੈਕ ਕੀਤੇ ਜਾਣ ਤੋਂ ਰੋਕਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।" + disabling_cookies_header: "ਕੂਕੀਜ਼ ਨੂੰ ਅਯੋਗ ਕਰਨ ਵੇਲੇ ਚੇਤਾਵਨੀ" + disabling_cookies_desc: "ਇੱਕ ਉਪਭੋਗਤਾ ਦੇ ਤੌਰ ਤੇ ਤੁਸੀਂ ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ ਦੇ ਸੈਟਿੰਗ ਕੰਟਰੋਲ ਦੁਆਰਾ ਜਦੋਂ ਵੀ ਚਾਹੋ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਜਾਂ ਕਿਸੇ ਹੋਰ ਵੈਬਸਾਈਟ ਤੋਂ ਕੂਕੀਜ਼ ਨੂੰ ਇਜਾਜ਼ਤ ਦੇ ਸਕਦੇ ਹੋ, ਬਲੌਕ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਮਿਟਾ ਸਕਦੇ ਹੋ। ਹਰੇਕ ਬ੍ਰਾਊਜ਼ਰ ਦਾ ਵੱਖਰਾ ਆਪਰੇਟਿਵ ਹੁੰਦਾ ਹੈ। ਇੱਥੇ ਲਿੰਕ ਦਿੱਤੇ ਗਏ ਹਨ:" + disabling_cookies_firefox_link: "https://support.mozilla.org/en-US/kb/enable-and-disable-cookies-website-preferences" + disabling_cookies_ie_link: "https://support.microsoft.com/en-us/help/17442/windows-internet-explorer-delete-manage-cookies" + disabling_cookies_safari_link: "https://www.apple.com/legal/privacy/en-ww/cookies/" + disabling_cookies_note: "ਪਰ ਧਿਆਨ ਰੱਖੋ ਕਿ ਜੇਕਰ ਤੁਸੀਂ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਦੁਆਰਾ ਵਰਤੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਜ਼ਰੂਰੀ ਕੂਕੀਜ਼ ਨੂੰ ਹਟਾਉਂਦੇ ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰਦੇ ਹੋ, ਤਾਂ ਵੈਬਸਾਈਟ ਕੰਮ ਨਹੀਂ ਕਰੇਗੀ, ਉਦਾਹਰਨ ਲਈ ਤੁਸੀਂ ਆਪਣੇ ਕਾਰਟ ਵਿੱਚ ਨਾ ਤਾਂ ਕੁਜ ਜੋੜ ਸਕੋਗੇ ਅਤੇ ਨਾ ਹੀ ਚੈਕਆਉਟ ਕਰ ਸਕੋਗੇ।" + cookies_banner: + cookies_definition: "ਕੂਕੀਜ਼ ਬਹੁਤ ਛੋਟੀਆਂ ਟੈਕਸਟ ਫਾਈਲਾਂ ਹੁੰਦੀਆਂ ਹਨ ਜੋ ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉਤੇ ਸਟੋਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਜਦੋਂ ਤੁਸੀਂ ਕੁਝ ਵੈਬਸਾਈਟਾਂ ਤੇ ਜਾਂਦੇ ਹੋ।" + cookies_policy_link: "ਕੂਕੀਜ਼ ਪਾਲਿਸੀ" + brandstory_part1: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਸਾਫਟਵੇਅਰ ਪਲੇਟਫਾਰਮ ਕਿਸਾਨਾਂ ਨੂੰ ਔਨਲਾਈਨ ਉਤਪਾਦ ਵੇਚਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਉਸ ਕੀਮਤ ਤੇ ਜੋ ਉਹਨਾਂ ਲਈ ਸਹੀ ਹਨ। ਇਹ ਖਾਸ ਤੌਰ ਉਤੇ ਭੋਜਨ ਉਤਪਾਦ ਵੇਚਣ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ ਤਾਂ ਜੋ ਇਹ ਔਖੇ ਉਪਾਵਾਂ ਜਾਂ ਸਟਾਕ ਦੇ ਪੱਧਰਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕੇ ਜੋ ਸਿਰਫ ਭੋਜਨ ਵਿੱਚ ਹੁੰਦੇ ਹਨ - ਇੱਕ ਦਰਜਨ ਅੰਡੇ, ਅਜਵਾਇਣ ਦਾ ਇੱਕ ਗੁੱਛਾ, ਇੱਕ ਪੂਰਾ ਚਿਕਨ ਜੋ ਭਾਰ ਵਿੱਚ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ..." + brandstory_part2: "ਫਾਰਮਰਜ਼, ਭੋਜਨ ਉਤਪਾਦਕ, ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਆਰਗੇਨਾਈਜ਼ੇਸ਼ਨਾਂ (FPO), ਜਾਂ ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਕੰਪਨੀਆਂ (FPC) ਇਸ ਪਲੇਟਫਾਰਮ ਉਤੇ ਇੱਕ ਔਨਲਾਈਨ ਸ਼ਾਪ ਬਣਾ ਸਕਦੇ ਹਨ, ਭੁਗਤਾਨ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹਨ ਅਤੇ ਹੋਰ ਸ਼ਾਪਾਂ ਰਾਹੀਂ ਵੇਚ ਸਕਦੇ ਹਨ।" + brandstory_part3: "ਥੋਕ ਵਿਕਰੇਤਾ, ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਆਰਗੇਨਾਈਜ਼ੇਸ਼ਨਾਂ (FPO), ਜਾਂ ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਕੰਪਨੀਆਂ (FPC) ਆਪਣੇ ਮੌਜੂਦਾ ਸਿਸਟਮਾਂ ਨਾਲ OFN ਨੂੰ ਜੋੜ ਸਕਦੀਆਂ ਹਨ ਅਤੇ ਫੂਡ ਹੱਬਾਂ ਅਤੇ ਸ਼ਾਪਾਂ ਦੇ ਸਾਡੇ ਰਾਸ਼ਟਰੀ ਨੈਟਵਰਕ ਰਾਹੀਂ ਗਾਹਕਾਂ ਨੂੰ ਉਹਨਾਂ ਦੀ ਉਪਜ ਦੀ ਸਪਲਾਈ ਕਰਨ ਲਈ ਖਰੀਦ ਸਮੂਹਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰ ਸਕਦੀਆਂ ਹਨ।" + brandstory_part4: "ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਆਰਗੇਨਾਈਜ਼ੇਸ਼ਨਾਂ (FPO), ਜਾਂ ਫਾਰਮਰ ਪ੍ਰੋਡਿਊਸਰ ਕੰਪਨੀਆਂ (FPC) ਇੱਕ ਮਜਬੂਤ ਸਥਾਨਕ ਭੋਜਨ ਅਰਥ ਵਿਵਸਥਾ ਦਾ ਨਿਰਮਾਣ ਕਰਦੇ ਹੋਏ, ਵਰਚੁਅਲ ਕਿਸਾਨਾਂ ਦੇ ਬਾਜ਼ਾਰ ਬਣਾਉਣ ਲਈ ਆਪਣੇ ਸਥਾਨਕ ਖੇਤਰ ਵਿੱਚ ਉਤਪਾਦਕਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰ ਸਕਦੇ ਹਨ।" + brandstory_part5_strong: "ਅਤੇ ਸਾਫਟਵੇਅਰ ਦੇ ਨਾਲ-ਨਾਲ ਸਬਤੋਂ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਕੀ ਹੈ, ਉਹ ਹਨ ਮੁੱਲ ਜੋ ਇਸ ਦਾ ਮੂਲ ਅਧਾਰ ਬਣਦੇ ਹਨ।" + brandstory_part6: "ਜੇਕਰ ਤੁਸੀਂ ਚੰਗਾ ਭੋਜਨ ਵੇਚਦੇ ਹੋ - ਇੱਕ ਕਿਸਾਨ, ਕਿਸਾਨ ਦੇ ਬਾਜ਼ਾਰ, ਭੋਜਨ ਸਹਿਕਾਰਤਾ, ਜਾਂ ਭੋਜਨ ਹੱਬ ਦੇ ਤੌਰ ਤੇ - ਤਾਂ ਉਸ ਸਾਫਟਵੇਅਰ ਦੀ ਚੋਣ ਕਰੋ ਜੋ ਤੁਹਾਡੇ ਮੁੱਲਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ, ਲੋਕਾਂ ਅਤੇ ਗ੍ਰਹਿ ਲਈ ਭੋਜਨ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਬਣਾਉਂਦਾ ਹੈ, ਨਾ ਕਿ ਲਾਭ ਵਾਸਤੇ। ਮੁਕਾਬਲੇਬਾਜ਼ੀ ਦੀ ਬਜਾਏ ਸਮੂਹਿਕ ਤੌਰ ਉਤੇ ਕੰਮ ਕਰਕੇ, ਅਸੀਂ ਨਵੇਂ ਸੌਫਟਵੇਅਰ ਨੂੰ ਵਿਕਸਤ ਕਰਨ ਦੀਆਂ ਲਾਗਤਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹਾਂ, ਅਤੇ ਅਸੀਂ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹਾਂ ਕਿ ਸਾਡਾ ਪ੍ਰੋਜੈਕਟ ਮਜਬੂਤ ਹੈ!" + system_headline: "OFN ਉਤੇ ਵੇਚਣਾ - 3 ਆਸਾਨ ਕਦਮ" + system_step1: "1. ਨਵਾਂ ਖਾਤਾ ਬਣਾਓ" + system_step1_text: "ਨਾਂ, ਵਰਣਨ, ਫੋਟੋਆਂ, ਸੰਪਰਕ ਵੇਰਵਿਆਂ ਅਤੇ ਸੋਸ਼ਲ ਮੀਡੀਆ ਲਿੰਕਾਂ ਦੇ ਨਾਲ ਆਪਣੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਸੇਟ ਅਪ ਕਰੋ।" + system_step2: "2. ਆਪਣੇ ਉਤਪਾਦ ਜੋੜੋ" + system_step2_text: "ਆਪਣੀ ਸ਼ਾਪ ਵਿੱਚ ਉਤਪਾਦ ਸ਼ਾਮਲ ਕਰੋ - ਤੁਹਾਡੇ ਆਪਣੇ ਅਤੇ/ਜਾਂ ਤੁਹਾਡੇ ਆਲੇ-ਦੁਆਲੇ ਦੇ ਹੋਰ ਉਤਪਾਦਕਾਂ ਦੇ। ਫੋਟੋ, ਵਰਣਨ, ਕੀਮਤਾਂ, ਸਟਾਕ ਦੇ ਪੱਧਰ ਅਤੇ ਲਚਕਦਾਰ ਵਜ਼ਨ ਅਤੇ ਮਾਪ ਸੇਟ ਕਰੋ।" + system_step3: "3. ਆਪਣੀਆਂ ਡਿਲੀਵਰੀ ਦੀ ਯੋਜਨਾ ਬਣਾਓ" + system_step3_text: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ ਸੇਟ ਅਪ ਕਰੋ। ਕਈ ਪਿਕ-ਅੱਪ ਪੁਆਇੰਟ ਅਤੇ ਡਿਲੀਵਰੀ ਵੇਰਵੇ ਬਣਾਓ। ਆਵਰਤੀ ਆਰਡਰ ਅਤੇ ਨਿਯਮਤ ਵੰਡਣ ਦੀ ਪ੍ਰਕ੍ਰਿਆ ਬਣਾਓ।" + cta_headline: "ਭਵਿੱਖ ਦਾ ਟਿਕਾਊ ਭੋਜਨ ਨੈਟਵਰਕ।" + cta_label: "ਮੈਂ ਤਿਆਰ ਹਾਂ" + stats_headline: "ਅਸੀਂ ਇੱਕ ਨਵੀਂ ਭੋਜਨ ਪ੍ਰਣਾਲੀ ਬਣਾ ਰਹੇ ਹਾਂ।" + stats_producers: "ਭੋਜਨ ਉਤਪਾਦਕ" + stats_shops: "ਭੋਜਨ ਦੀਆਂ ਸ਼ਾਪਾਂ" + stats_shoppers: "ਭੋਜਨ ਖਰੀਦਦਾਰ" + stats_orders: "ਭੋਜਨ ਆਰਡਰ" + checkout_title: ਚੈਕਆਊਟ + checkout_now: ਹੁਣੇ ਚੈਕਆਉਟ ਕਰੋ + checkout_order_ready: ਇਹਨਾਂ ਲਈ ਆਰਡਰ ਤਿਆਰ ਹੈ + checkout_hide: ਲੁਕਾਓ + checkout_expand: ਫੈਲਾਓ + checkout_headline: "ਠੀਕ ਹੈ, ਚੈਕਆਉਟ ਲਈ ਤਿਆਰ ਹੋ?" + checkout_as_guest: "ਗੈਸਟ ਦੇ ਤੌਰ ਤੇ ਚੈਕਆਉਟ ਕਰੋ" + checkout_details: "ਤੁਹਾਡੇ ਵੇਰਵੇ" + checkout_billing: "ਬਿਲਿੰਗ ਜਾਣਕਾਰੀ" + checkout_default_bill_address: "ਡਿਫੌਲਟ ਬਿਲਿੰਗ ਪਤੇ ਵਜੋਂ ਸੁਰੱਖਿਅਤ ਕਰੋ" + checkout_shipping: ਸ਼ਿਪਿੰਗ ਜਾਣਕਾਰੀ + checkout_default_ship_address: "ਡਿਫੌਲਟ ਬਿਲਿੰਗ ਪਤੇ ਵਜੋਂ ਸੁਰੱਖਿਅਤ ਕਰੋ" + checkout_method_free: ਮੁਫ਼ਤ + checkout_address_same: ਕੀ ਸ਼ਿਪਿੰਗ ਪਤਾ ਅਤੇ ਬਿਲਿੰਗ ਪਤਾ ਇੱਕੋ ਹੈ? + checkout_ready_for: "ਇਸ ਲਈ ਤਿਆਰ:" + checkout_instructions: "ਕੋਈ ਟਿੱਪਣੀਆਂ ਜਾਂ ਵਿਸ਼ੇਸ਼ ਹਦਾਇਤਾਂ?" checkout_payment: ਭੁਗਤਾਨ + checkout_send: ਹੁਣੇ ਆਰਡਰ ਕਰੋ + checkout_your_order: ਤੁਹਾਡਾ ਆਰਡਰ + checkout_cart_total: ਕਾਰਟ ਦੀ ਕੁੱਲ ਰਕਮ checkout_shipping_price: ਸ਼ਿਪਿੰਗ + checkout_total_price: ਕੁੱਲ + checkout_back_to_cart: "ਕਾਰਟ ਤੇ ਵਾਪਸ" + cost_currency: "ਲਾਗਤ ਦੀ ਕਰੰਸੀ" + order_paid: ਭੁਗਤਾਨ ਕੀਤਾ ਗਿਆ + order_not_paid: ਭੁਗਤਾਨ ਨਹੀਂ ਕੀਤਾ ਗਿਆ + order_payment: "ਇਸ ਰਾਹੀਂ ਭੁਗਤਾਨ:" + order_billing_address: ਬਿਲਿੰਗ ਪਤਾ + order_delivery_address: ਡਿਲਿਵਰੀ ਪਤਾ + order_delivery_time: ਡਿਲਿਵਰੀ ਦਾ ਸਮਾਂ + order_special_instructions: "ਤੁਹਾਡੇ ਨੋਟ:" + order_pickup_time: ਕਲੇਕਟ ਕਰਨ ਲਈ ਤਿਆਰ + order_pickup_instructions: ਕਲੇਕਸ਼ਨ ਦੇ ਨਿਰਦੇਸ਼ + order_produce: ਉਤਪਾਦਨ + order_amount_paid: ਭੁਗਤਾਨ ਕੀਤੀ ਰਕਮ + order_total_price: ਕੁੱਲ + order_balance_due: ਬਕਾਇਆ ਰਕਮ + order_includes_tax: (ਟੈਕਸ ਸ਼ਾਮਲ ਹੈ) + order_payment_paypal_successful: ਪੇਪਾਲ ਦੁਆਰਾ ਤੁਹਾਡਾ ਭੁਗਤਾਨ ਸਫਲਤਾਪੂਰਵਕ ਸੰਸਾਧਿਤ ਹੋ ਗਿਆ ਹੈ। + order_hub_info: ਹੱਬ ਦੀ ਜਾਣਕਾਰੀ + order_back_to_store: ਸਟੋਰ ਤੇ ਵਾਪਸ + order_back_to_cart: ਕਾਰਟ ਤੇ ਵਾਪਸ + order_back_to_website: ਵੈਬਸਾਈਟ ਤੇ ਵਾਪਸ + bom_tip: "ਬਹੁਤ ਸਾਰੇ ਆਰਡਰਾਂ ਵਿੱਚ ਉਤਪਾਦ ਦੀ ਮਾਤਰਾ ਨੂੰ ਬਦਲਣ ਲਈ ਇਸ ਪੇਜ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਲੋੜ ਪੈਣ ਤੇ ਉਤਪਾਦਾਂ ਨੂੰ ਆਰਡਰਾਂ ਤੋਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।" + unsaved_changes_warning: "ਬਿਨਾ ਸੇਵ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਮੌਜੂਦ ਹਨ ਅਤੇ ਜੇਕਰ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਦੇ ਹੋ ਤਾਂ ਗੁੰਮ ਹੋ ਜਾਣਗੀਆਂ।" + unsaved_changes_error: "ਲਾਲ ਕਿਨਾਰਿਆਂ ਵਾਲੇ ਖੇਤਰਾਂ ਵਿੱਚ ਤਰੁੱਟੀਆਂ ਹਨ।" products: "ਉਤਪਾਦ" + products_in: "%{oc} ਵਿੱਚ" + products_at: "%{ਡਿਸਟ੍ਰੀਬਿਊਟਰ} ਤੇ" + products_elsewhere: "ਕਿਤੇ ਹੋਰ ਲੱਭੇ ਉਤਪਾਦ" + email_confirmed: "ਆਪਣੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ।" + email_confirmation_activate_account: "ਇਸ ਤੋਂ ਪਹਿਲਾਂ ਕਿ ਅਸੀਂ ਤੁਹਾਡੇ ਨਵੇਂ ਖਾਤੇ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰ ਸਕੀਏ, ਸਾਨੂੰ ਤੁਹਾਡੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।" + email_confirmation_greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ, %{contact}!" + email_confirmation_profile_created: "%{name} ਲਈ ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਬਣਾਇਆ ਗਿਆ ਹੈ! ਤੁਹਾਡੇ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਲਈ ਸਾਨੂੰ ਇਸ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।" + email_confirmation_click_link: "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਅਤੇ ਆਪਣੀ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਸੇਟ ਕਰਨਾ ਜਾਰੀ ਰੱਖਣ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ ਲਿੰਕ ਉਤੇ ਕਲਿੱਕ ਕਰੋ।" + email_confirmation_link_label: "ਇਸ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ »" + email_confirmation_help_html: "ਆਪਣੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਬਾਅਦ ਤੁਸੀਂ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਆਪਣੇ ਪ੍ਰਬੰਧਨ ਖਾਤੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੇ ਹੋ। %{sitename} ਦੇ ਫ਼ੀਚਰ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ ਅਤੇ ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਜਾਂ ਔਨਲਾਈਨ ਸਟੋਰ ਦੀ ਵਰਤੋਂ ਸ਼ੁਰੂ ਕਰਨ ਲਈ %{link} ਨੂੰ ਵੇਖੋ।" + email_confirmation_notice_unexpected: "ਤੁਹਾਨੂੰ ਇਹ ਸੁਨੇਹਾ ਇਸ ਲਈ ਪ੍ਰਾਪਤ ਹੋਇਆ ਹੈ ਕਿਉਂਕਿ ਤੁਸੀਂ %{sitename} ਤੇ ਸਾਈਨ ਅੱਪ ਕੀਤਾ ਸੀ, ਜਾਂ ਕਿਸੇ ਅਜਿਹੇ ਵਿਅਕਤੀ ਦੁਆਰਾ ਸਾਈਨ ਅੱਪ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਸੱਦਾ ਦਿੱਤਾ ਗਿਆ ਸੀ ਜਿਸਨੂੰ ਤੁਸੀਂ ਸ਼ਾਇਦ ਜਾਣਦੇ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਇਹ ਸਮਝ ਨਹੀਂ ਪਾ ਰਹੇ ਹੋ ਕਿ ਤੁਸੀਂ ਇਹ ਈਮੇਲ ਕਿਉਂ ਪ੍ਰਾਪਤ ਕੀਤਾ ਹੈ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ %{contact} ਨੂੰ ਲਿਖੋ।" + email_social: "ਸਾਡੇ ਨਾਲ ਜੁੜੋ:" + email_contact: "ਸਾਨੂੰ ਈਮੇਲ ਕਰੋ:" + email_signoff: "ਚੀਅਰਸ," + email_signature: "%{sitename} ਟੀਮ" email_confirm_customer_greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + email_confirm_customer_intro_html: "%{distributor} ਤੋਂ ਖਰੀਦਦਾਰੀ ਲਈ ਧੰਨਵਾਦ!" + email_confirm_customer_number_html: "ਆਰਡਰ ਪੁਸ਼ਟਿਕਰਨ #%{number}" + email_confirm_customer_details_html: "%{distributor} ਤੋਂ ਤੁਹਾਡੇ ਆਰਡਰ ਵੇਰਵੇ ਇੱਥੇ ਹਨ:" + email_confirm_customer_signoff: "ਸ਼ੁਭਕਾਮਨਾਵਾਂ," email_confirm_shop_greeting: "ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ %{name}," + email_confirm_shop_order_html: "ਸ਼ਾਬਾਸ਼! ਤੁਹਾਡੇ ਕੋਲ %{distributor} ਲਈ ਇੱਕ ਨਵਾਂ ਆਰਡਰ ਹੈ!" + email_confirm_shop_number_html: "ਆਰਡਰ ਪੁਸ਼ਟਿਕਰਨ #%{number}" + email_order_summary_item: "ਆਈਟਮ" + email_order_summary_quantity: "ਮਾਤਰਾ" email_order_summary_sku: "SKU" - email_order_summary_price: "\"ਕੀਮਤ\"" + email_order_summary_price: "ਕੀਮਤ" + email_order_summary_subtotal: "ਉਪ-ਕੁੱਲ:" + email_order_summary_total: "ਕੁੱਲ" + email_order_summary_includes_tax: "(ਟੈਕਸ ਸਮੇਤ):" + email_payment_paid: ਭੁਗਤਾਨ ਕੀਤਾ ਗਿਆ + email_payment_not_paid: ਭੁਗਤਾਨ ਨਹੀਂ ਕੀਤਾ ਗਿਆ + email_payment_description: ਚੈਕਆਉਟ ਤੇ ਭੁਗਤਾਨ ਦਾ ਵੇਰਵਾ + email_payment_summary: ਭੁਗਤਾਨ ਸੰਖੇਪ + email_payment_method: "ਇਸ ਰਾਹੀਂ ਭੁਗਤਾਨ:" + email_so_placement_intro_html: "ਤੁਹਾਡੇ ਕੋਲ %{distributor} ਨਾਲ ਇੱਕ ਨਵਾਂ ਆਰਡਰ ਹੈ" + email_so_placement_details_html: "%{distributor} ਲਈ ਤੁਹਾਡੇ ਆਰਡਰ ਦੇ ਵੇਰਵੇ ਇੱਥੇ ਦਿੱਤੇ ਗਏ ਹਨ:" + email_so_placement_changes: "ਬਦਕਿਸਮਤੀ ਨਾਲ, ਤੁਹਾਡੇ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੇ ਸਾਰੇ ਉਤਪਾਦ ਉਪਲਬਧ ਨਹੀਂ ਸਨ। ਤੁਹਾਡੇ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੀ ਅਸਲ ਮਾਤਰਾਵਾਂ ਹੇਠਾਂ ਕਟਿਆਂ ਹੋਇਆਂ ਵਿਖਾਈਆਂ ਗਈਆਂ ਹਨ।" + email_so_payment_success_intro_html: "%{distributor} ਤੋਂ ਤੁਹਾਡੇ ਆਰਡਰ ਲਈ ਇੱਕ ਸਵੈਚਾਲਿਤ ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਕੀਤੀ ਗਈ ਹੈ।" + email_so_placement_explainer_html: "ਇਹ ਆਰਡਰ ਤੁਹਾਡੇ ਲਈ ਸਵੈਚਾਲਿਤ ਢੰਗ ਨਾਲ ਬਣਾਇਆ ਗਿਆ ਸੀ।" + email_so_edit_true_html: "ਜਦੋ ਤਕ %{orders_close_at} ਤੇ ਆਰਡਰ ਬੰਦ ਨਹੀਂ ਹੋ ਜਾਂਦੇ, ਤਦ ਤਕ ਤੁਸੀਂ ਵਿੱਚ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ।" + email_so_edit_false_html: "ਤੁਸੀਂ ਕਿਸੀ ਵੀ ਸਮੇਂ ਤੇ ਇਸ ਆਰਡਰ ਦੇ ਵੇਰਵੇ ਵੇਖ ਸਕਦੇ ਹੋ।" + email_so_contact_distributor_html: "ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਈ ਸਵਾਲ ਹਨ ਤਾ ਤੁਸੀਂ %{email} ਦੇ ਦਵਾਰਾ %{distributor} ਨਾਲ ਸੰਪਰਕ ਕਰ ਸਕਦੇ ਹੋ।" + email_so_contact_distributor_to_change_order_html: "ਇਹ ਆਰਡਰ ਤੁਹਾਡੇ ਲਈ ਸਵੈਚਾਲਿਤ ਢੰਗ ਨਾਲ ਬਣਾਇਆ ਗਿਆ ਸੀ। ਤੁਸੀਂ %{email} ਦੇ ਦਵਾਰਾ %{distributor} ਨਾਲ ਸੰਪਰਕ ਕਰਕੇ%{orders_close_at} ਦੇ ਬੰਦ ਹੋਣ ਤਕ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ।" + email_so_confirmation_intro_html: "%{distributor} ਦੇ ਨਾਲ ਤੁਹਾਡੇ ਆਰਡਰ ਦੀ ਪੁਸ਼ਟੀ ਹੁਣ ਹੋ ਗਈ ਹੈ" + email_so_confirmation_explainer_html: "ਇਹ ਆਰਡਰ ਤੁਹਾਡੇ ਲਈ ਸਵੈਚਲਿਤ ਤੌਰ ਤੇ ਦਿੱਤਾ ਗਿਆ ਸੀ, ਅਤੇ ਹੁਣ ਇਸਨੂੰ ਅੰਤਿਮ ਰੂਪ ਦੇ ਦਿੱਤਾ ਗਿਆ ਹੈ." + email_so_confirmation_details_html: "%{distributor} ਤੋਂ ਤੁਹਾਡੇ ਆਰਡਰ ਬਾਰੇ ਤੁਹਾਨੂੰ ਜੋ ਕੁਜ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ, ਉਹ ਸਬ ਇਥੇ ਦਿੱਤਾ ਗਿਆ ਹੈ:" + email_so_empty_intro_html: "ਅਸੀਂ %{distributor} ਨੂੰ ਇੱਕ ਨਵਾਂ ਆਰਡਰ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ, ਪਰ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਆਈਆਂ..." + email_so_empty_explainer_html: "ਬਦਕਿਸਮਤੀ ਨਾਲ, ਤੁਹਾਡੇ ਦੁਆਰਾ ਆਰਡਰ ਕੀਤੇ ਗਏ ਉਤਪਾਦਾਂ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਉਪਲਬਧ ਨਹੀਂ ਸੀ, ਇਸਲਈ ਕੋਈ ਆਰਡਰ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ ਹੈ। ਤੁਹਾਡੇ ਦੁਆਰਾ ਬੇਨਤੀ ਕੀਤੀ ਅਸਲ ਮਾਤਰਾ ਹੇਠਾਂ ਕੱਟ ਕੇ ਵਿਖਾਈਆਂ ਗਈਆਂ ਹਨ।" + email_so_empty_details_html: "%{distributor} ਕੇ ਕੋਲ ਨਾ ਕੀਤੇ ਗਏ ਆਰਡਰ ਦੇ ਵੇਰਵੇ ਇੱਥੇ ਦਿੱਤੇ ਗਏ ਹਨ:" + email_so_failed_payment_intro_html: "ਅਸੀਂ ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ, ਪਰ ਕੁਝ ਸਮੱਸਿਆਵਾਂ ਆਈਆਂ..." + email_so_failed_payment_explainer_html: "ਤੁਹਾਡੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨਾਲ ਸਮੱਸਿਆ ਦੇ ਕਾਰਨ %{distributor} ਨਾਲ ਤੁਹਾਡੀ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲਈ ਭੁਗਤਾਨ ਅਸਫਲ ਰਿਹਾ। %{distributor} ਨੂੰ ਇਸ ਅਸਫਲ ਭੁਗਤਾਨ ਬਾਰੇ ਸੂਚਿਤ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ।" + email_so_failed_payment_details_html: "ਭੁਗਤਾਨ ਗੇਟਵੇ ਦੁਆਰਾ ਪ੍ਰਦਾਨ ਕੀਤੀ ਗਈ ਅਸਫਲਤਾ ਦੇ ਵੇਰਵੇ ਇੱਥੇ ਦਿੱਤੇ ਗਏ ਹਨ:" + email_shipping_delivery_details: ਡਿਲਿਵਰੀ ਵੇਰਵੇ + email_shipping_delivery_time: "ਡਿਲਿਵਰੀ ਦਾ ਦਿਨ:" + email_shipping_delivery_address: "ਡਿਲਿਵਰੀ ਪਤਾ" + email_shipping_collection_details: ਕਲੇਕਸ਼ਨ ਦੇ ਵੇਰਵੇ + email_shipping_collection_time: "ਕਲੇਕਟ ਕਰਨ ਲਈ ਤਿਆਰ" + email_shipping_collection_instructions: "ਕਲੇਕਸ਼ਨ ਦੇ ਨਿਰਦੇਸ਼" + email_special_instructions: "ਤੁਹਾਡੇ ਨੋਟ:" + email_signup_greeting: ਸਤ ਸ੍ਰੀ ਅਕਾਲ! + email_signup_welcome: "%{sitename} ਵਿੱਚ ਤੁਹਾਡਾ ਸੁਆਗਤ ਹੈ!" + email_signup_confirmed_email: "ਤੁਹਾਡੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਧੰਨਵਾਦ।" + email_signup_shop_html: "ਤੁਸੀਂ ਹੁਣ %{link} ਤੇ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।" + email_signup_text: "ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਧੰਨਵਾਦ। ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਗਾਹਕ ਹੋ, ਤਾਂ ਅਸੀਂ ਤੁਹਾਨੂੰ ਬਹੁਤ ਸਾਰੇ ਸ਼ਾਨਦਾਰ ਕਿਸਾਨਾਂ, ਵਧੀਆ ਫੂਡ ਹੱਬਾਂ ਅਤੇ ਸੁਆਦੀ ਭੋਜਨ ਨਾਲ ਜਾਣੂ ਕਰਵਾਉਣ ਲਈ ਉਤਸੁਕ ਹਾਂ! ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਜਾਂ ਭੋਜਨ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਹੋ, ਤਾਂ ਅਸੀਂ ਤੁਹਾਨੂੰ ਇਸ ਨੈਟਵਰਕ ਦੇ ਇੱਕ ਹਿੱਸਾ ਬਣਾਉਣ ਲਈ ਉਤਸ਼ਾਹਿਤ ਹਾਂ।" + email_signup_help_html: "ਅਸੀਂ ਤੁਹਾਡੇ ਸਾਰੇ ਸਵਾਲਾਂ ਅਤੇ ਫੀਡਬੈਕ ਦਾ ਸੁਆਗਤ ਕਰਦੇ ਹਾਂ; ਤੁਸੀਂ ਸਾਈਟ ਉਤੇ ਫੀਡਬੈਕ ਭੇਜੋ ਬਟਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਜਾਂ ਸਾਨੂੰ %{email} ਤੇ ਈਮੇਲ ਕਰ ਸਕਦੇ ਹੋ" + invite_email: + greeting: "ਸਤ ਸ੍ਰੀ ਅਕਾਲ!" + invited_to_manage: "ਤੁਹਾਨੂੰ %{instance} ਉਤੇ %{enterprise} ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਸੱਦਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।" + confirm_your_email: "ਤੁਹਾਨੂੰ ਇੱਕ ਪੁਸ਼ਟੀਕਰਨ ਲਿੰਕ ਦੇ ਨਾਲ ਇੱਕ ਈਮੇਲ ਪ੍ਰਾਪਤ ਹੋਇਆ ਹੋਵੇਗਾ ਜਾਂ ਜਲਦੀ ਹੀ ਪ੍ਰਾਪਤ ਹੋਵੇਗਾ। ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣੀ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰ ਲੈਂਦੇ, ਤੁਸੀਂ %{enterprise} ਦੇ ਪ੍ਰੋਫਾਈਲ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਪਾਉਂਗੇ।" shopping_tabs_shop: "ਸ਼ਾਪ" + shopping_tabs_about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" shopping_tabs_producers: "ਉਤਪਾਦਕ" + shopping_tabs_contact: "ਸੰਪਰਕ" shopping_tabs_groups: "ਸਮੂਹ" + shopping_contact_address: "ਪਤਾ" + shopping_contact_web: "ਸੰਪਰਕ" + shopping_contact_social: "ਫਾਲੋ ਕਰੋ" + shopping_groups_part_of: "ਇਸ ਦਾ ਹਿੱਸਾ ਹੈ:" + shopping_producers_of_hub: "%{hub} ਦੇ ਉਤਪਾਦਕ:" + enterprises_next_closing: "ਅਗਲਾ ਆਰਡਰ ਸਮਾਪਤ ਹੋ ਰਿਹਾ ਹੈ" + enterprises_currently_open: "ਆਰਡਰ ਇਸ ਵੇਲੇ ਖੁੱਲ੍ਹੇ ਹਨ" + enterprises_ready_for: "ਲਈ ਤਿਆਰ" + enterprises_choose: "ਚੁਣੋ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣਾ ਆਰਡਰ ਚਾਹੁੰਦੇ ਹੋ:" + maps_open: "ਖੁਲਾ ਹੈ" + maps_closed: "ਬੰਦ ਹੈ" + map_title: "ਮੈਪ" + hubs_buy: "ਇਹਨਾਂ ਲਈ ਖਰੀਦੋ:" + hubs_shopping_here: "ਇੱਥੇ ਖਰੀਦਦਾਰੀ ਕਰ ਰਹੇ ਹਾਂ" + hubs_orders_closed: "ਆਰਡਰ ਬੰਦ ਹ" + hubs_profile_only: "ਸਿਰਫ਼ ਪ੍ਰੋਫਾਈਲ" + hubs_delivery_options: "ਡਿਲਿਵਰੀ ਵਿਕਲਪ" + hubs_pickup: "ਪਿਕਅੱਪ" + hubs_delivery: "ਡਿਲਿਵਰੀ" + hubs_producers: "ਸਾਡੇ ਉਤਪਾਦਕ" + hubs_filter_by: "ਇਸਦੇ ਅਨੁਸਾਰ ਫਿਲਟਰ ਕਰੋ" + hubs_filter_type: "ਕਿਸਮ" + hubs_filter_delivery: "ਡਿਲਿਵਰੀ" + hubs_filter_property: "ਪ੍ਰਾਪਰਟੀ" + hubs_matches: "ਕੀ ਤੁਹਾਡਾ ਮਤਲਬ ਸੀ?" + hubs_intro: ਆਪਣੇ ਸਥਾਨਕ ਖੇਤਰ ਵਿੱਚ ਖਰੀਦਦਾਰੀ ਕਰੋ + hubs_distance: ਇਸਦੇ ਸਭ ਤੋਂ ਨੇੜੇ + hubs_distance_filter: "ਮੈਨੂੰ %{location} ਦੇ ਨੇੜੇ ਦੀਆਂ ਸ਼ਾਪਾਂ ਵਿਖਾਓ" + shop_changeable_orders_alert_html: + one: %{shop} / %{order} ਵਾਲਾ ਤੁਹਾਡਾ ਆਰਡਰ ਸਮੀਖਿਆ ਲਈ ਖੁੱਲ੍ਹਾ ਹੈ। ਤੁਸੀਂ %{oc_close} ਤੱਕ ਬਦਲਾਅ ਕਰ ਸਕਦੇ ਹੋ। + few: ਤੁਹਾਡੇ ਕੋਲ %{count} ਇਸ %{shop} ਦੇ ਨਾਲ ਜੋ ਆਰਡਰ ਹਨ, ਅਤੇ ਉਹ ਅਜੇ ਵੀ ਸਮੀਖਿਆ ਲਈ ਖੁੱਲ੍ਹੇ ਹਨ। ਤੁਸੀਂ %{oc_close} ਤੱਕ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ। + many: ਤੁਹਾਡੇ ਕੋਲ %{count} ਇਸ %{shop} ਦੇ ਨਾਲ ਜੋ ਆਰਡਰ ਹਨ, ਅਤੇ ਉਹ ਅਜੇ ਵੀ ਸਮੀਖਿਆ ਲਈ ਖੁੱਲ੍ਹੇ ਹਨ। ਤੁਸੀਂ %{oc_close} ਤੱਕ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ। + other: ਤੁਹਾਡੇ ਕੋਲ %{count} ਇਸ %{shop} ਦੇ ਨਾਲ ਜੋ ਆਰਡਰ ਹਨ, ਅਤੇ ਉਹ ਅਜੇ ਵੀ ਸਮੀਖਿਆ ਲਈ ਖੁੱਲ੍ਹੇ ਹਨ। ਤੁਸੀਂ %{oc_close} ਤੱਕ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ। + orders_changeable_orders_alert_html: ਇਸ ਆਰਡਰ ਦੀ ਪੁਸ਼ਟੀ ਹੋ ਚੁੱਕੀ ਹੈ, ਪਰ ਤੁਸੀਂ %{oc_close} ਤੱਕ ਬਦਲਾਵ ਕਰ ਸਕਦੇ ਹੋ। products_clear: ਮਿਟਾਓ + products_showing: "ਦਿਖਾਇਆ ਜਾ ਰਿਹਾ ਹੈ:" + products_results_for: "ਇਸ ਲਈ ਨਤੀਜੇ" + products_or: "ਜਾਂ" + products_and: "ਅਤੇ" + products_filters_in: "ਵਿੱਚ" + products_with: ਨਾਲ + products_search: "ਖੋਜੋ..." + products_filter_by: "ਇਸਦੇ ਅਨੁਸਾਰ ਫਿਲਟਰ ਕਰੋ" + products_filter_selected: "ਚੁਣੇ ਗਏ'" + products_filter_heading: "ਫਿਲਟਰ" products_filter_clear: "ਮਿਟਾਓ" + products_filter_done: "ਪੂਰਾ ਹੋਇਆ" + products_loading: "ਉਤਪਾਦ ਲੋਡ ਹੋ ਰਹੇ ਹਨ..." + products_updating_cart: "ਕਾਰਟ ਨੂੰ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..." + products_cart_empty: "ਕਾਰਟ ਖਾਲੀ ਹੈ" + products_edit_cart: "ਆਪਣੇ ਕਾਰਟ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ" + products_from: ਤੋਂ + products_change: "ਸੇਵ ਕਰਨ ਲਈ ਕੋਈ ਬਦਲਾਅ ਨਹੀਂ ਹਨ।" + products_update_error: "ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਗਲਤੀ (ਗਲਤੀਆਂ) ਦੇ ਕਾਰਨ ਸੇਵ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ:" + products_update_error_msg: "ਸੇਵ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।" + products_update_error_data: "ਅਵੈਧ ਡੇਟਾ ਦੇ ਕਾਰਨ ਸੇਵ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ:" + products_changes_saved: "ਬਦਲਾਵਾਂ ਨੂੰ ਸੇਵ ਕੀਤਾ ਗਿਆ।" + products_no_results_html: "ਮਾਫ਼ ਕਰਨਾ, %{query} ਲਈ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਮਿਲਿਆ" + products_clear_search: "ਖੋਜ ਮਿਟਾਓ" + search_no_results_html: "ਮਾਫ਼ ਕਰਨਾ, %{query} ਲਈ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਮਿਲਿਆ। ਹੋਰ ਖੋਜ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰੋ?" + components_profiles_popover: "ਪ੍ਰੋਫਾਈਲਾਂ ਦਾ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਕੋਈ ਸ਼ਾਪਫਰੰਟ ਨਹੀਂ ਹੈ, ਪਰ ਕਿਤੇ ਹੋਰ ਉਹਨਾਂ ਦੀ ਆਪਣੀ ਭੌਤਿਕ ਜਾਂ ਔਨਲਾਈਨ ਸ਼ਾਪ ਹੋ ਸਕਦੀ ਹੈ" + components_profiles_show: "ਪ੍ਰੋਫਾਈਲ ਵਿਖਾਓ" + components_filters_nofilters: "ਕੋਈ ਫਿਲਟਰ ਨਹੀਂ" + components_filters_clearfilters: "ਸਾਰੇ ਫਿਲਟਰ ਸਾਫ਼ ਕਰੋ" groups_title: ਸਮੂਹ + groups_headline: ਸਮੂਹ/ਖੇਤਰ + groups_text: "ਹਰ ਉਤਪਾਦਕ ਵਿਲੱਖਣ ਹੁੰਦਾ ਹੈ। ਹਰ ਕਾਰੋਬਾਰ ਕੋਲ ਕੁਜ ਵੱਖਰਾ ਪੇਸ਼ ਕਰਨ ਲਈ ਹੁੰਦਾ ਹੈ। ਸਾਡੇ ਸਮੂਹ ਉਤਪਾਦਕਾਂ, ਹੱਬਾਂ ਅਤੇ ਵਿਤਰਕਾਂ ਦੇ ਸਮੂਹ ਹਨ ਜੋ ਸਥਾਨ, ਕਿਸਾਨ ਬਾਜ਼ਾਰ ਜਾਂ ਫਲਸਫੇ ਵਰਗੀਆਂ ਸਾਂਝੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹਨ। ਇਹ ਤੁਹਾਡੇ ਖਰੀਦਦਾਰੀ ਅਨੁਭਵ ਨੂੰ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ। ਇਸ ਲਈ ਸਾਡੇ ਸਮੂਹਾਂ ਦੀ ਪੜਚੋਲ ਕਰੋ ਅਤੇ ਤੁਹਾਡੇ ਲਈ ਬਣਾਈ ਚੀਜਾਂ ਦਾ ਅਨੰਦ ਲਵੋ।" + groups_search: "ਨਾਂ ਜਾਂ ਸ਼ਬਦ ਲੱਭੋ" + groups_no_groups: "ਕੋਈ ਸਮੂਹ ਨਹੀਂ ਲੱਭਿਆ" + groups_about: "ਸਾਡੇ ਬਾਰੇ ਵਿੱਚ" + groups_producers: "ਸਾਡੇ ਉਤਪਾਦਕ" + groups_hubs: "ਸਾਡੇ ਹੱਬ" + groups_contact_web: ਸੰਪਰਕ + groups_contact_social: ਫਾਲੋ ਕਰੋ + groups_contact_address: ਪਤਾ + groups_contact_email: ਸਾਨੂੰ ਈਮੇਲ ਕਰੋ + groups_contact_website: ਸਾਡੀ ਵੈਬਸਾਈਟ ਤੇ ਆਓ + groups_contact_facebook: ਫੇਸਬੁੱਕ ਤੇ ਸਾਨੂੰ ਫੋਲੋ ਕਰੋ + groups_signup_title: ਇੱਕ ਸਮੂਹ ਵਜੋਂ ਸਾਈਨ ਅੱਪ ਕਰੋ + groups_signup_headline: ਸਮੂਹ ਸਾਈਨ ਅੱਪ + groups_signup_intro: "ਅਸੀਂ ਸਹਿਯੋਗੀ ਮਾਰਕੀਟਿੰਗ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਪਲੇਟਫਾਰਮ ਹਾਂ, ਤੁਹਾਡੇ ਮੈਂਬਰਾਂ ਅਤੇ ਹਿੱਸੇਦਾਰਾਂ ਲਈ ਨਵੇਂ ਬਾਜ਼ਾਰਾਂ ਤੱਕ ਪਹੁੰਚਣ ਦਾ ਸਭ ਤੋਂ ਆਸਾਨ ਤਰੀਕਾ। ਅਸੀਂ ਗੈਰ-ਲਾਭਕਾਰੀ, ਕਿਫਾਇਤੀ ਅਤੇ ਸਰਲ ਹਾਂ।" + groups_signup_email: ਸਾਨੂੰ ਈਮੇਲ ਕਰੋ + groups_signup_motivation1: ਅਸੀਂ ਭੋਜਨ ਪ੍ਰਣਾਲੀਆਂ ਨੂੰ ਨਿਰਪੱਖ ਢੰਗ ਨਾਲ ਬਦਲਦੇ ਹਾਂ। + groups_signup_motivation2: ਇਸ ਲਈ ਅਸੀਂ ਹਰ ਰੋਜ਼ ਮੰਜੇ ਤੋਂ ਉਠਦੇ ਹਾਂ। ਅਸੀਂ ਓਪਨ ਸੋਰਸ ਕੋਡ ਦੇ ਆਧਾਰ ਉਤੇ ਇੱਕ ਗਲੋਬਲ ਗੈਰ-ਮੁਨਾਫ਼ਾ ਸੰਸਥਾ ਹਾਂ। ਅਸੀਂ ਨਿਰਪੱਖ ਖੇਡਦੇ ਹਾਂ। ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਸਾਡੇ ਉਤੇ ਭਰੋਸਾ ਕਰ ਸਕਦੇ ਹੋ। + groups_signup_motivation3: ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਵੱਡੇ ਵਿਚਾਰ ਹਨ, ਅਤੇ ਅਸੀਂ ਮਦਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਅਸੀਂ ਆਪਣਾ ਗਿਆਨ, ਨੈਟਵਰਕ ਅਤੇ ਸਰੋਤ ਸਾਂਝੇ ਕਰਾਂਗੇ। ਅਸੀਂ ਜਾਣਦੇ ਹਾਂ ਕਿ ਕੱਲੇ ਰਹਿਣ ਨਾਲ ਬਦਲਾਵ ਨਹੀਂ ਲਿਆਯਾ ਜਾ ਸਕਦਾ, ਇਸ ਲਈ ਅਸੀਂ ਤੁਹਾਡੇ ਨਾਲ ਭਾਈਵਾਲੀ ਕਰਾਂਗੇ। + groups_signup_motivation4: ਅਸੀਂ ਤੁਹਾਨੂੰ ਉਥੇ ਹੀ ਮਿਲਦੇ ਹਾਂ ਜਿੱਥੇ ਤੁਸੀਂ ਹੋ। + groups_signup_motivation5: ਤੁਸੀਂ ਫੂਡ ਹੱਬ, ਉਤਪਾਦਕਾਂ, ਜਾਂ ਵਿਤਰਕਾਂ, ਦਾ ਗਠਜੋੜ ਜਾਂ ਇੱਕ ਉਦਯੋਗ ਸੰਸਥਾ, ਜਾਂ ਇੱਕ ਸਥਾਨਕ ਸਰਕਾਰ ਹੋ ਸਕਦੇ ਹੋ। + groups_signup_motivation6: ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਅੰਦੋਲਨ ਵਿੱਚ ਤੁਹਾਡੀ ਭੂਮਿਕਾ ਜੋ ਵੀ ਹੋਵੇ, ਅਸੀਂ ਮਦਦ ਕਰਨ ਲਈ ਤਿਆਰ ਹਾਂ। ਹਾਲਾਂਕਿ ਤੁਸੀਂ ਹੈਰਾਨ ਹੋਵੋਗੇ ਕਿ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੁਹਾਡੀ ਹਿੱਸੇ ਦੀ ਦੁਨੀਆਂ ਵਿੱਚ ਕੀ ਕਰ ਰਿਹਾ ਹੈ ਜਾਂ ਕਿਹੋ ਜਿਹਾ ਵਿਖਾਈ ਦੇਵੇਗਾ, ਆਓ ਫਿਰ ਗੱਲਬਾਤ ਸ਼ੁਰੂ ਕਰੀਏ। + groups_signup_motivation7: ਅਸੀਂ ਭੋਜਨ ਦੀਆਂ ਗਤੀਵਿਧੀਆਂ ਨੂੰ ਵਧੇਰੇ ਅਰਥਪੂਰਨ ਬਣਾਉਂਦੇ ਹਾਂ। + groups_signup_motivation8: ਤੁਹਾਨੂੰ ਆਪਣੇ ਨੈਟਵਰਕਾਂ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਅਤੇ ਸਮਰੱਥ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਅਸੀਂ ਗੱਲਬਾਤ ਅਤੇ ਕਾਰਵਾਈ ਲਈ ਇੱਕ ਪਲੇਟਫਾਰਮ ਪੇਸ਼ ਕਰਦੇ ਹਾਂ। ਤੁਹਾਨੂੰ ਅਸਲ ਸ਼ਮੂਲੀਅਤ ਦੀ ਲੋੜ ਹੈ। ਅਸੀਂ ਸਾਰੇ ਖਿਡਾਰੀਆਂ, ਸਾਰੇ ਹਿੱਸੇਦਾਰਾਂ, ਸਾਰੇ ਖੇਤਰਾਂ ਤੱਕ ਪਹੁੰਚਣ ਵਿੱਚ ਮਦਦ ਕਰਾਂਗੇ। + groups_signup_motivation9: ਤੁਹਾਨੂੰ ਸੰਸਾਧਨਾਂ ਦੀ ਲੋੜ ਹੈ। ਅਸੀਂ ਆਪਣੇ ਸਾਰੇ ਤਜ਼ਰਬੇ ਨੂੰ ਕੰਮ ਤੇ ਲਾਵਾਂਗੇ। ਤੁਹਾਡੇ ਸਹਿਯੋਗ ਦੀ ਲੋੜ ਹੈ। ਅਸੀਂ ਤੁਹਾਨੂੰ ਸਾਥੀਆਂ ਦੇ ਗਲੋਬਲ ਨੈਟਵਰਕ ਨਾਲ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਜੋੜਾਂਗੇ। + groups_signup_pricing: ਸਮੂਹ ਖਾਤਾ + groups_signup_studies: ਕੇਸ ਸਟੱਡੀਜ਼ + groups_signup_contact: ਚਰਚਾ ਕਰਨ ਲਈ ਤਿਆਰ ਹੋ? + groups_signup_contact_text: "OFN ਤੁਹਾਡੇ ਲਈ ਕੀ ਕਰ ਸਕਦਾ ਹੈ, ਇਹ ਜਾਣਨ ਲਈ ਸੰਪਰਕ ਕਰੋ:" + groups_signup_detail: "ਇੱਥੇ ਵੇਰਵਾ ਹੈ." + login_invalid: "ਅਵੈਧ ਈਮੇਲ ਜਾਂ ਪਾਸਵਰਡ" + producers_about: ਸਾਡੇ ਬਾਰੇ + producers_buy: ਇਹਨਾਂ ਲਈ ਖਰੀਦਦਾਰੀ ਕਰੋ + producers_contact: ਸੰਪਰਕ + producers_contact_phone: ਕਾਲ ਕਰੋ + producers_contact_social: ਫਾਲੋ ਕਰੋ + producers_buy_at_html: "%{enterprise} ਦੇ ਉਤਪਾਦਾਂ ਲਈ ਇੱਥੇ ਖਰੀਦਦਾਰੀ ਕਰੋ:" + producers_filter: ਇਸਦੇ ਅਨੁਸਾਰ ਫਿਲਟਰ ਕਰੋ + producers_filter_type: ਕਿਸਮ + producers_filter_property: ਪ੍ਰਾਪਰਟੀ producers_title: ਉਤਪਾਦਕ + producers_headline: ਸਥਾਨਕ ਉਤਪਾਦਕਾਂ ਨੂੰ ਲੱਭੋ + producers_signup_title: ਇੱਕ ਉਤਪਾਦਕ ਦੇ ਤੌਰ ਤੇ ਸਾਈਨ ਅੱਪ ਕਰੋ + producers_signup_headline: ਭੋਜਨ ਉਤਪਾਦਕ, ਅਧਿਕਾਰਤ। + producers_signup_motivation: ਆਪਣਾ ਭੋਜਨ ਵੇਚੋ ਅਤੇ ਵਿਭਿੰਨ ਨਵੇਂ ਬਾਜ਼ਾਰਾਂ ਨੂੰ ਆਪਣੀਆਂ ਕਹਾਣੀਆਂ ਦੱਸੋ। ਹਰ ਓਵਰਹੈਡ ਤੇ ਸਮਾਂ ਅਤੇ ਪੈਸਾ ਬਚਾਓ। ਅਸੀਂ ਬਿਨਾਂ ਜੋਖਮ ਦੇ ਨਵੀਨਤਾ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਾਂ। ਅਸੀਂ ਖੇਡ ਦੇ ਮੈਦਾਨ ਨੂੰ ਸਾਰਿਆਂ ਲਈ ਬਰਾਬਰ ਕਰ ਦਿੱਤਾ ਹੈ। + producers_signup_send: ਹੁਣੇ ਸ਼ਾਮਲ ਹੋਵੋ + producers_signup_enterprise: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੇ ਖਾਤੇ + producers_signup_studies: ਸਾਡੇ ਉਤਪਾਦਕ ਦੀਆਂ ਕਹਾਣੀਆਂ। + producers_signup_cta_headline: ਹੁਣੇ ਸ਼ਾਮਲ ਹੋਵੋ! + producers_signup_cta_action: ਹੁਣੇ ਸ਼ਾਮਲ ਹੋਵੋ + producers_signup_detail: ਇੱਥੇ ਵੇਰਵਾ ਹੈ. producer: ਉਤਪਾਦਕ + products_item: ਆਈਟਮ products_description: ਵਰਣਨ products_variant: ਵੇਰੀਐਂਟ products_quantity: ਮਾਤਰਾ + products_available: ਉਪਲੱਬਧ? products_producer: "ਉਤਪਾਦਕ" - products_price: "\"ਕੀਮਤ\"" + products_price: "ਕੀਮਤ" + name_or_sku: "ਨਾਂ ਜਾਂ SKU" + register_title: ਰਜਿਸਟਰ + sell_title: "ਰਜਿਸਟਰ" + sell_headline: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਪ੍ਰਾਪਤ ਕਰੋ!" + sell_motivation: "ਆਪਣੀ ਸਭ ਤੋਂ ਵਧੀਆ ਭੋਜਨ ਸਮੱਗਰੀ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ।" sell_producers: "ਉਤਪਾਦਕ" + sell_hubs: "ਹੱਬ" sell_groups: "ਸਮੂਹ" + sell_producers_detail: "ਆਪਣੇ ਕਾਰੋਬਾਰ ਲਈ OFN ਤੇ ਕੁਝ ਹੀ ਮਿੰਟਾਂ ਵਿੱਚ ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਸੇਟ ਕਰੋ। ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣੇ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਇੱਕ ਔਨਲਾਈਨ ਸਟੋਰ ਵਿੱਚ ਅੱਪਗ੍ਰੇਡ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਆਪਣੇ ਉਤਪਾਦ ਸਿੱਧੇ ਗਾਹਕਾਂ ਨੂੰ ਵੇਚ ਸਕਦੇ ਹੋ।" + sell_hubs_detail: "OFN ਤੇ ਆਪਣੇ ਫੂਡ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਜਾਂ ਸੰਸਥਾ ਲਈ ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਸੇਟ ਕਰੋ। ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਸਮੇਂ ਆਪਣੀ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਮਲਟੀ-ਪ੍ਰੋਡਿਊਸਰ ਦੀ ਸ਼ਾਪ ਤੇ ਅੱਪਗ੍ਰੇਡ ਕਰ ਸਕਦੇ ਹੋ।" + sell_groups_detail: "ਆਪਣੇ ਖੇਤਰ ਜਾਂ ਆਪਣੀ ਸੰਸਥਾ ਲਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ਾਂ (ਉਤਪਾਦਕਾਂ ਅਤੇ ਹੋਰ ਭੋਜਨ ਐਂਟਰਪ੍ਰਾਈਜ਼) ਦੀ ਇੱਕ ਅਨੁਕੂਲਿਤ ਡਾਇਰੈਕਟਰੀ ਸਥਾਪਤ ਕਰੋ।" + sell_user_guide: "ਸਾਡੀ ਉਪਭੋਗਤਾ ਗਾਈਡ ਵਿੱਚ ਹੋਰ ਜਾਣੋ।" + sell_listing_price: "OFN ਤੇ ਲਿਸਟਿੰਗ ਕਰਨਾ ਮੁਫ਼ਤ ਹੈ। ਇਹ $500 ਤੱਕ ਦੀ ਮਹੀਨਾਵਾਰ ਵਿਕਰੀ ਦੇ ਨਾਲ OFN ਉਤੇ ਇੱਕ ਸ਼ਾਪ ਖੋਲ੍ਹਣ ਅਤੇ ਚਲਾਉਣ ਲਈ ਮੁਫ਼ਤ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਇਸਤੋਂ ਜ਼ਿਆਦਾ ਵੇਚਦੇ ਹੋ ਤਾਂ ਤੁਸੀਂ ਵਿਕਰੀ ਦੇ 1% ਤੋਂ 3% ਵਿਚਕਾਰ ਆਪਣਾ ਕਮਿਊਨਿਟੀ ਯੋਗਦਾਨ ਚੁਣ ਸਕਦੇ ਹੋ। ਕੀਮਤ ਬਾਰੇ ਹੋਰ ਜਾਨਣ ਲਈ ਸੌਫਟਵੇਅਰ ਪਲੇਟਫਾਰਮ ਸੈਕਸ਼ਨ ਤੇ \"ਸਾਡੇ ਬਾਰੇ\" ਵਾਲੇ ਲਿੰਕ ਰਾਹੀਂ ਜਾਓ।" + sell_embed: "ਅਸੀਂ ਇੱਕ OFN ਸ਼ਾਪ ਨੂੰ ਤੁਹਾਡੀ ਆਪਣੀ ਕਸਟਮਾਈਜ਼ ਕੀਤੀ ਵੈਬਸਾਈਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ ਜਾਂ ਤੁਹਾਡੇ ਖੇਤਰ ਲਈ ਇੱਕ ਕਸਟਮਾਈਜ਼ ਕੀਤੀ ਸਥਾਨਕ ਫੂਡ ਨੈਟਵਰਕ ਵੈਬਸਾਈਟ ਬਣਾ ਸਕਦੇ ਹਾਂ।" + sell_ask_services: "OFN ਸੇਵਾਵਾਂ ਬਾਰੇ ਸਾਨੂੰ ਪੁੱਛੋ।" + shops_title: ਸ਼ਾਪਾਂ + shops_headline: ਖਰੀਦਦਾਰੀ, ਪਰਿਵਰਤਿਤ + shops_text: ਭੋਜਨ ਸਾਈਕਲਾਂ ਵਿੱਚ ਵਧਦਾ ਹੈ, ਕਿਸਾਨ ਸਾਈਕਲਾਂ ਵਿੱਚ ਵਾਢੀ ਕਰਦੇ ਹਨ, ਅਤੇ ਅਸੀਂ ਸਾਈਕਲਾਂ ਵਿੱਚ ਭੋਜਨ ਆਰਡਰ ਕਰਦੇ ਹਾਂ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਕੋਈ ਆਰਡਰ ਸਾਈਕਲ ਬੰਦ ਮਿਲਦਾ ਹੈ, ਤਾਂ ਜਲਦ ਹੀ ਦੁਬਾਰਾ ਜਾਂਚ ਕਰਿਓ। + shops_signup_title: ਇੱਕ ਹੱਬ ਦੇ ਰੂਪ ਵਿੱਚ ਸਾਈਨ ਅਪ ਕਰੋ + shops_signup_headline: ਫੂਡ ਹੱਬ, ਅਸੀਮਤ। + shops_signup_motivation: ਤੁਹਾਡਾ ਮਾਡਲ ਜੋ ਵੀ ਹੋਵੇ, ਅਸੀਂ ਤੁਹਾਡਾ ਸਮਰਥਨ ਕਰਦੇ ਹਾਂ। ਭਾਵੇਂ ਤੁਸੀਂ ਕਿੰਨੇ ਵੀ ਬਦਲਾਵ ਕਰੋ, ਅਸੀਂ ਤੁਹਾਡੇ ਨਾਲ ਹਾਂ। ਅਸੀਂ ਗੈਰ-ਮੁਨਾਫ਼ਾ, ਸੁਤੰਤਰ ਅਤੇ ਖੁਲੇ-ਸਰੋਤ ਹਾਂ। ਅਸੀਂ ਉਹ ਸੌਫਟਵੇਅਰ ਪਾਰਟਨਰ ਹਾਂ ਜਿਨ੍ਹਾਂ ਦਾ ਤੁਸੀਂ ਸੁਪਨਾ ਵੇਖਿਆ ਹੈ। + shops_signup_action: ਹੁਣੇ ਸ਼ਾਮਲ ਹੋਵੋ + shops_signup_pricing: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੇ ਖਾਤੇ + shops_signup_stories: ਸਾਡੇ ਹੱਬ ਤੋਂ ਕਹਾਣੀਆਂ। + shops_signup_help: ਅਸੀਂ ਮਦਦ ਕਰਨ ਲਈ ਤਿਆਰ ਹਾਂ। + shops_signup_help_text: ਤੁਹਾਨੂੰ ਇੱਕ ਬਿਹਤਰ ਰਿਟਰਨ ਦੀ ਲੋੜ ਹੈ। ਤੁਹਾਨੂੰ ਨਵੇਂ ਖਰੀਦਦਾਰਾਂ ਅਤੇ ਲੌਜਿਸਟਿਕ ਭਾਈਵਾਲਾਂ ਦੀ ਲੋੜ ਹੈ। ਤੁਹਾਨੂੰ ਆਪਣੀ ਕਹਾਣੀ ਥੋਕ, ਖੁਦਰਾ ਅਤੇ ਰਸੋਈ ਦੇ ਮੇਜ਼ ਉਤੇ ਦੱਸੇ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ। + shops_signup_detail: ਇੱਥੇ ਵੇਰਵਾ ਹੈ. + orders: "ਆਰਡਰ" + orders_fees: "ਫ਼ੀਸ..." + orders_edit_title: "ਖਰੀਦਦਾਰੀ ਕਾਰਟ" + orders_edit_headline: "ਤੁਹਾਡਾ ਸ਼ਾਪਿੰਗ ਕਾਰਟ" + orders_edit_time: "ਇਹਨਾਂ ਲਈ ਆਰਡਰ ਤਿਆਰ ਹੈ" + orders_edit_continue: "ਖਰੀਦਦਾਰੀ ਜਾਰੀ ਰੱਖੋ" + orders_edit_checkout: "ਚੈਕਆਊਟ" + orders_form_empty_cart: "ਖਾਲੀ ਕਾਰਟ" orders_form_update_cart: "ਅੱਪਡੇਟ" + orders_form_subtotal: "ਉਤਪਾਦ ਉਪ-ਕੁਲ" + orders_form_total: "ਕੁੱਲ" + orders_oc_expired_headline: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ ਆਰਡਰ ਬੰਦ ਹੋ ਗਏ ਹਨ" + orders_oc_expired_text: "ਮਾਫ਼ ਕਰਨਾ, ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ ਆਰਡਰ %{time} ਪਹਿਲਾਂ ਬੰਦ ਹੋ ਗਏ ਹਨ! ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਵੇਖਣ ਲਈ ਸਿੱਧੇ ਆਪਣੇ ਹੱਬ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਕਿ ਕਿ ਉਹ ਲੇਟ ਆਰਡਰ ਸਵੀਕਾਰ ਕਰ ਸਕਦੇ ਹਨ।" + orders_oc_expired_text_others_html: "ਮਾਫ਼ ਕਰਨਾ, ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ ਆਰਡਰ %{time} ਪਹਿਲਾਂ ਬੰਦ ਹੋ ਗਏ ਹਨ! ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਵੇਖਣ ਲਈ ਸਿੱਧੇ ਆਪਣੇ ਹੱਬ ਨਾਲ ਸੰਪਰਕ ਕਰੋ ਕਿ ਕੀ ਉਹ ਲੇਟ ਆਰਡਰ %{link} ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਸਕਦੇ ਹਨ।" + orders_oc_expired_text_link: "ਜਾਂ ਇਸ ਹੱਬ ਤੇ ਉਪਲਬਧ ਹੋਰ ਆਰਡਰ ਸਾਈਕਲ ਵੇਖੋ" + orders_oc_expired_email: "ਈਮੇਲ:" + orders_oc_expired_phone: "ਫੋਨ:" + orders_show_title: "ਆਰਡਰ ਦੀ ਪੁਸ਼ਟੀ" + orders_show_time: "ਇਸ ਤੇ ਆਰਡਰ ਤਿਆਰ ਹੈ" + orders_show_order_number: "ਆਰਡਰ #%{number}" orders_show_cancelled: "ਰੱਦ ਕੀਤਾ ਗਿਆ" + orders_show_confirmed: "ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ" + orders_your_order_has_been_cancelled: "ਤੁਹਾਡਾ ਆਰਡਰ ਰੱਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ" + orders_could_not_cancel: "ਮਾਫ਼ ਕਰਨਾ, ਆਰਡਰ ਰੱਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" + orders_cannot_remove_the_final_item: "ਕਿਸੇ ਆਰਡਰ ਤੋਂ ਅੰਤਿਮ ਆਈਟਮ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਕਿਰਪਾ ਕਰਕੇ ਇਸਦੀ ਬਜਾਏ ਆਰਡਰ ਨੂੰ ਰੱਦ ਕਰੋ।" + orders_bought_items_notice: + one: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ ਇੱਕ ਵਾਧੂ ਆਈਟਮ ਦੀ ਪਹਿਲਾਂ ਹੀ ਪੁਸ਼ਟੀ ਕੀਤੀ ਜਾ ਚੁਕੀ ਹੈ" + few: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ %{count} ਵਾਧੂ ਆਈਟਮਾਂ ਦੀ ਪੁਸ਼ਟੀ ਪਹਿਲਾਂ ਹੀ ਹੋ ਚੁੱਕੀ ਹੈ" + many: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ %{count} ਵਾਧੂ ਆਈਟਮਾਂ ਦੀ ਪੁਸ਼ਟੀ ਪਹਿਲਾਂ ਹੀ ਹੋ ਚੁੱਕੀ ਹੈ" + other: "ਇਸ ਆਰਡਰ ਸਾਈਕਲ ਲਈ %{count} ਵਾਧੂ ਆਈਟਮਾਂ ਦੀ ਪੁਸ਼ਟੀ ਪਹਿਲਾਂ ਹੀ ਹੋ ਚੁੱਕੀ ਹੈ" + orders_bought_edit_button: "ਪੁਸ਼ਟੀ ਕੀਤੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰੋ" + orders_bought_already_confirmed: "* ਪਹਿਲਾਂ ਹੀ ਪੁਸ਼ਟੀ ਹੋ ਚੁਕੀ ਹੈ" + orders_confirm_cancel: "ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਇਸ ਆਰਡਰ ਨੂੰ ਰੱਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" + order_processed_successfully: "ਤੁਹਾਡੇ ਆਰਡਰ ਦੀ ਸਫਲਤਾਪੂਰਵਕ ਸੰਸਾਧਿਤ ਕੀਤੀ ਗਈ ਹੈ" + products_cart_distributor_choice: "ਤੁਹਾਡੇ ਆਰਡਰ ਲਈ ਵਿਤਰਕ:" + products_cart_distributor_change: "ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਉਤਪਾਦ ਨੂੰ ਆਪਣੀ ਕਾਰਟ ਵਿੱਚ ਜੋੜਦੇ ਹੋ ਤਾਂ ਇਸ ਆਰਡਰ ਲਈ ਤੁਹਾਡੇ ਵਿਤਰਕ ਨੂੰ %{name} ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜਾਵੇਗਾ।" + products_cart_distributor_is: "ਇਸ ਆਰਡਰ ਲਈ ਤੁਹਾਡਾ ਵਿਤਰਕ %{name} ਹੈ।" + products_distributor_error: "ਕਿਰਪਾ ਕਰਕੇ ਕਿਸੇ ਹੋਰ ਵਿਤਰਕ ਨਾਲ ਖਰੀਦਦਾਰੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ %{link} ਉਤੇ ਆਪਣਾ ਆਰਡਰ ਪੂਰਾ ਕਰੋ।" + products_oc: "ਤੁਹਾਡੇ ਆਰਡਰ ਲਈ ਆਰਡਰ ਸਾਈਕਲ:" + products_oc_change: "ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਉਤਪਾਦ ਨੂੰ ਆਪਣੀ ਕਾਰਟ ਵਿੱਚ ਜੋੜਦੇ ਹੋ ਤਾਂ ਇਸ ਆਰਡਰ ਲਈ ਤੁਹਾਡਾ ਆਰਡਰ ਸਾਈਕਲ %{name} ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜਾਵੇਗਾ।" + products_oc_is: "ਇਸ ਆਰਡਰ ਲਈ ਤੁਹਾਡਾ ਆਰਡਰ ਸਾਈਕਲ %{name} ਹੈ।" + products_oc_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੱਖਰੇ ਆਰਡਰ ਸਾਈਕਲ ਵਿੱਚ ਖਰੀਦਦਾਰੀ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ %{link} ਤੋਂ ਆਪਣਾ ਆਰਡਰ ਪੂਰਾ ਕਰੋ।" + products_oc_current: "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਆਰਡਰ ਸਾਈਕਲ" + products_max_quantity: ਅਧਿਕਤਮ ਮਾਤਰਾ + products_distributor: ਵਿਤਰਕ + products_distributor_info: ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਆਰਡਰ ਲਈ ਇੱਕ ਵਿਤਰਕ ਚੁਣਦੇ ਹੋ, ਤਾਂ ਉਹਨਾਂ ਦਾ ਪਤਾ ਅਤੇ ਪਿਕਅੱਪ ਸਮਾਂ ਇੱਥੇ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। password: ਪਾਸਵਰਡ + remember_me: ਮੈਨੂੰ ਯਾਦ ਰੱਖੋ + are_you_sure: "ਕੀ ਤੁਹਾਨੂੰ ਯਕੀਨ ਹੈ?" + orders_open: "ਆਰਡਰ ਖੁੱਲ੍ਹੇ ਹਨ" + closing: "ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ" + going_back_to_home_page: "ਤੁਹਾਨੂੰ ਹੋਮ ਪੇਜ ਉਤੇ ਵਾਪਸ ਲੈ ਜਾ ਰਹੇ ਹਾਂ" + creating: ਬਣਾ ਰਹੇ ਹਨ + updating: ਅੱਪਡੇਟ ਹੋ ਰਿਹਾ ਹੈ + failed_to_create_enterprise: "ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ ਰਿਹਾ।" + failed_to_create_enterprise_unknown: "ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ।\\nਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਖੇਤਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਭਰੇ ਹੋਏ ਹਨ।" + failed_to_update_enterprise_unknown: "ਤੁਹਾਡੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਵਿੱਚ ਅਸਫਲ।\\nਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਸਾਰੇ ਖੇਤਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਭਰੇ ਹੋਏ ਹਨ।" + enterprise_confirm_delete_message: "ਇਹ ਉਸ %{product} ਨੂੰ ਵੀ ਮਿਟਾ ਦੇਵੇਗਾ ਜੋ ਇਹ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸਪਲਾਈ ਕਰਦਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਇਸ ਨੂੰ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + order_not_saved_yet: "ਤੁਹਾਡਾ ਆਰਡਰ ਅਜੇ ਤੱਕ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ। ਸਾਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਕੁਝ ਸਕਿੰਟ ਦਿਓ!" + filter_by: "ਇਸਦੇ ਅਨੁਸਾਰ ਫਿਲਟਰ ਕਰੋ" + hide_filters: "ਫਿਲਟਰ ਲੁਕਾਓ" + one_filter_applied: "1 ਫਿਲਟਰ ਲਾਗੂ ਕੀਤਾ ਗਿਆ" + x_filters_applied: "ਫਿਲਟਰ ਲਾਗੂ ਕੀਤੇ ਗਏ" + submitting_order: "ਤੁਹਾਡਾ ਆਰਡਰ ਜਮ੍ਹਾਂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ: ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕ ਕਰੋ" + confirm_hub_change: "ਕੀ ਤੁਸੀਂ ਯਕੀਨਨ ਹੋ? ਇਹ ਤੁਹਾਡੇ ਚੁਣੇ ਹੋਏ ਹੱਬ ਨੂੰ ਬਦਲ ਦੇਵੇਗਾ ਅਤੇ ਤੁਹਾਡੇ ਖਰੀਦਦਾਰੀ ਦੇ ਕਾਰਟ ਵਿੱਚ ਰੱਖੀ ਕਿਸੇ ਵੀ ਆਈਟਮ ਨੂੰ ਹਟਾ ਦੇਵੇਗਾ।" + confirm_oc_change: "ਕੀ ਤੁਸੀਂ ਯਕੀਨਨ ਹੋ? ਇਹ ਤੁਹਾਡੇ ਚੁਣੇ ਹੋਏ ਆਰਡਰ ਸਾਈਕਲ ਨੂੰ ਬਦਲ ਦੇਵੇਗਾ ਅਤੇ ਤੁਹਾਡੀ ਖਰੀਦਦਾਰੀ ਦੇ ਕਾਰਟ ਵਿੱਚ ਰੱਖੇ ਕਿਸੇ ਵੀ ਆਈਟਮ ਨੂੰ ਹਟਾ ਦੇਵੇਗਾ।" + location_placeholder: "ਕੋਈ ਲੋਕੇਸ਼ਨ ਟਾਈਪ ਕਰੋ..." error_required: "ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ" + error_number: "ਨੰਬਰ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + error_email: "ਈਮੇਲ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + error_not_found_in_database: "%{name} ਡਾਟਾਬੇਸ ਵਿੱਚ ਨਹੀਂ ਮਿਲਿਆ" + error_not_primary_producer: "%{name} ਨੂੰ ਇੱਕ ਉਤਪਾਦਕ ਵਜੋਂ ਸਮਰੱਥ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ" + error_no_permission_for_enterprise: "\\\"%{name}\\\": ਤੁਹਾਨੂੰ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ" + item_handling_fees: "ਆਈਟਮ ਹੈਂਡਲਿੰਗ ਫੀਸ (ਆਈਟਮ ਦੇ ਕੁੱਲ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ)" + january: "ਜਨਵਰੀ" + february: "ਫਰਵਰੀ" + march: "ਮਾਰਚ" + april: "ਅਪ੍ਰੈਲ" + may: "ਮਈ" + june: "ਜੂਨ" + july: "ਜੁਲਾਈ" + august: "ਅਗਸਤ" + september: "ਸਤੰਬਰ" + october: "ਅਕਤੂਬਰ" + november: "ਨਵੰਬਰ" + december: "ਦਸੰਬਰ" + email_not_found: "ਈਮੇਲ ਪਤਾ ਨਹੀਂ ਮਿਲਿਆ" + email_unconfirmed: "ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨੀ ਪਵੇਗੀ।" + email_required: "ਤੁਹਾਨੂੰ ਇੱਕ ਈਮੇਲ ਪਤਾ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ" + logging_in: "ਇੱਕ ਪਲ ਰੁਕੋ, ਅਸੀਂ ਤੁਹਾਨੂੰ ਲੌਗਇਨ ਕਰ ਰਹੇ ਹਾਂ" + signup_email: "ਤੁਹਾਡਾ ਈਮੇਲ" + choose_password: "ਇੱਕ ਪਾਸਵਰਡ ਚੁਨੋ" + confirm_password: "ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" + action_signup: "ਹੁਣੇ ਸਾਈਨ ਅੱਪ ਕਰੋ" + forgot_password: "ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ?" + password_reset_sent: "ਤੁਹਾਡੇ ਪਾਸਵਰਡ ਨੂੰ ਰੀਸੈਟ ਕਰਨ ਦੀਆਂ ਹਦਾਇਤਾਂ ਵਾਲੀ ਇੱਕ ਈਮੇਲ ਭੇਜੀ ਗਈ ਹੈ!" + reset_password: "ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰੋ" + update_and_recalculate_fees: "ਅਪਡੇਟ ਕਰੋ ਅਤੇ ਫੀਸਾਂ ਦੀ ਮੁੜ ਗਣਨਾ ਕਰੋ" registration: steps: + introduction: + registration_greeting: "ਸਤ ਸ੍ਰੀ ਅਕਾਲ!" + registration_intro: "ਹੁਣ ਤੁਸੀਂ ਆਪਣੇ ਉਤਪਾਦਕ ਜਾਂ ਹੱਬ ਲਈ ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਬਣਾ ਸਕਦੇ ਹੋ" + registration_checklist: "ਮੈਨੂੰ ਕੀ ਚਾਹੀਦਾ ਹੈ?" + registration_time: "5-10 ਮਿੰਟ" + registration_enterprise_address: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਪਤਾ" + registration_contact_details: "ਪ੍ਰਾਥਮਿਕ ਸੰਪਰਕ ਵੇਰਵੇ" + registration_logo: "ਤੁਹਾਡੇ ਲੋਗੋ ਦੀ ਫੋਟੋ" + registration_promo_image: "ਤੁਹਾਡੀ ਪ੍ਰੋਫ਼ਾਈਲ ਲਈ ਲੈਂਡਸਕੇਪ ਫੋਟੋ" + registration_about_us: "'ਸਾਡੇ ਬਾਰੇ ਵਿੱਚ' ਦਾ ਟੈਕਸਟ" + registration_outcome_headline: "ਮੈਨੂੰ ਕੀ ਮਿਲਦਾ ਹੈ?" + registration_outcome1_html: "ਤੁਹਾਡੀ ਪ੍ਰੋਫਾਈਲ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਤੁਹਾਨੂੰ ਲੱਭਣ ਅਤੇ ਸੰਪਰਕ ਕਰਨ ਵਿੱਚ ਲੋਕਾਂ ਦੀ ਮਦਦ ਕਰਦੀ ਹੈ।" + registration_outcome2: "ਤੁਹਾਡੀ ਸਮਾਜਿਕ ਅਤੇ ਔਨਲਾਈਨ ਮੌਜੂਦਗੀ ਲਈ ਕਨੇਕਸ਼ਨਾਂ ਨੂੰ ਵਧਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਨ ਲਈ, ਆਪਣੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਕਹਾਣੀ ਦੱਸਣ ਲਈ ਇਸ ਥਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ।" + registration_outcome3: "ਇਹ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਵਪਾਰ ਕਰਨ, ਜਾਂ ਔਨਲਾਈਨ ਸਟੋਰ ਖੋਲ੍ਹਣ ਵੱਲ ਪਹਿਲਾ ਕਦਮ ਹੈ।" + registration_action: "ਆਓ ਸ਼ੁਰੂ ਕਰੀਏ!" + details: + title: "ਮਾਤਰਾ" + headline: "ਆਓ ਸ਼ੁਰੂ ਕਰੀਏ" + enterprise: "ਵਾਹ! ਪਹਿਲਾਂ ਸਾਨੂੰ ਤੁਹਾਡੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਾਰੇ ਥੋੜ੍ਹਾ ਜਿਹਾ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ:" + producer: "ਵਾਹ! ਪਹਿਲਾਂ ਸਾਨੂੰ ਤੁਹਾਡੇ ਖੇਤ ਬਾਰੇ ਥੋੜ੍ਹਾ ਜਿਹਾ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ:" + enterprise_name_field: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਨਾਮ:" + producer_name_field: "ਖੇਤ ਦਾ ਨਾਮ:" + producer_name_field_placeholder: "ਜਿਵੇਂ ਕਿ ਚਾਰਲੀ ਦਾ ਸ਼ਾਨਦਾਰ ਫਾਰਮ" + producer_name_field_error: "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਉੱਦਮ ਲਈ ਇੱਕ ਵਿਲੱਖਣ ਨਾਮ ਚੁਣੋ" + address1_field: "ਪਤਾ ਲਾਈਨ 1:" + address1_field_placeholder: "ਜਿਵੇਂ ਕਿ 123 ਕਰੈਨਬੇਰੀ ਡਰਾਈਵ" + address1_field_error: "ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਪਤਾ ਦਰਜ ਕਰੋ" + address2_field: "ਪਤਾ ਲਾਈਨ 2:" + suburb_field: "ਉਪਨਗਰ:" + suburb_field_placeholder: "ਜਿਵੇਂ ਕਿ ਨੌਰਥਕੋਟ" + suburb_field_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਉਪਨਗਰ ਦਾਖਲ ਕਰੋ" + postcode_field: "ਪਿਨਕੋਡ:" + postcode_field_placeholder: "ਜਿਵੇਂ ਕਿ 3070" + postcode_field_error: "ਪਿਨਕੋਡ ਲੋੜੀਂਦਾ ਹੈ" + state_field: "ਰਾਜ:" + state_field_error: "ਰਾਜ ਲੋੜੀਂਦਾ ਹੈ" + country_field: "ਦੇਸ਼:" + country_field_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਦੇਸ਼ ਚੁਣੋ" + map_location: "ਮੈਪ ਲੋਕੇਸ਼ਨ" + locate_address: "ਮੈਪ ਉਤੇ ਪਤਾ ਲੱਭੋ" + drag_pin: "ਜੇਕਰ ਸਹੀ ਨਹੀਂ ਹੈ ਤਾਂ ਪਿੰਨ ਨੂੰ ਸਹੀ ਥਾਂ ਤੇ ਡ੍ਰੈਗ ਕਰੋ ਅਤੇ ਡਰੌਪ ਕਰੋ।" + confirm_address: "ਮੈਂ ਪੁਸ਼ਟੀ ਕਰਦਾ ਹਾਂ ਕਿ ਨਕਸ਼ੇ ਉਤੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਦਰਸਾਈ ਗਈ ਪੋਜੀਸ਼ਨ ਸਹੀ ਹੈ।" + drag_map_marker: "ਪੇਂਡੂ ਖੇਤਰਾਂ ਵਿੱਚ ਕੰਮ ਕਰਨ ਵਾਲੇ ਬਹੁਤ ਸਾਰੇ ਉਤਪਾਦਕਾਂ ਦੇ ਕਾਰਨ, ਨਕਸ਼ਿਆਂ ਦੀ ਸਟੀਕਤਾ ਵਿੱਚ ਹਮੇਸ਼ਾ ਸੁਧਾਰ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ। ਪਿੰਨ ਨੂੰ ਦਬਾਉਣ ਜਾਂ ਟੈਪ ਕਰਕੇ ਪਿੰਨ ਨੂੰ ਹਿਲਾਉਣ ਲਈ ਉਪਰ ਦਿੱਤੇ ਮੈਪ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਕੇ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਇਹ ਸਮਝਣ ਵਿੱਚ ਸਾਡੀ ਮਦਦ ਕਰੋ ਕਿ ਤੁਸੀਂ ਕਿੱਥੇ ਸਥਿਤ ਹੋ ਅਤੇ ਫਿਰ ਤੁਹਾਡੇ ਗਿਆਨ ਦੇ ਆਧਾਰ ਤੇ ਜ਼ਿਆਦਾ ਸਟੀਕ ਹੋਣ ਵਾਲੇ ਸਥਾਨ ਤੇ ਖਿੱਚਣਾ।" contact: + title: "ਸੰਪਰਕ" + who_is_managing_enterprise: "%{enterprise} ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਕੌਣ ਜ਼ਿੰਮੇਵਾਰ ਹੈ?" + contact_field: "ਪ੍ਰਾਇਮਰੀ ਸੰਪਰਕ" + contact_field_placeholder: "ਸੰਪਰਕ ਨਾਮ" + contact_field_required: "ਤੁਹਾਨੂੰ ਇੱਕ ਪ੍ਰਾਇਮਰੀ ਸੰਪਰਕ ਦਰਜ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।" phone_field: "ਫੋਨ ਨੰਬਰ" + whatsapp_phone_field: "WhatsApp ਫੋਨ ਨੰਬਰ" + whatsapp_phone_tooltip: "ਇਹ ਨੰਬਰ ਤੁਹਾਡੇ ਪਬਲਿਕ ਪ੍ਰੋਫਾਈਲ ਵਿੱਚ WhatsApp ਲਿੰਕ ਦੇ ਰੂਪ ਵਿੱਚ ਖੋਲ੍ਹਣ ਲਈ ਵਿਖਾਇਆ ਜਾਵੇਗਾ।" + phone_field_placeholder: "ਜਿਵੇਂ ਕਿ (03) 1234 5678" + whatsapp_phone_field_placeholder: "ਜਿਵੇਂ ਕਿ +61 4 1234 5678" + type: + title: "ਕਿਸਮ" + headline: "%{enterprise} ਨੂੰ ਜੋੜਨ ਲਈ ਆਖਰੀ ਕਦਮ!" + question: "ਕੀ ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਹੋ?" + yes_producer: "ਹਾਂ, ਮੈਂ ਇੱਕ ਉਤਪਾਦਕ ਹਾਂ" + no_producer: "ਨਹੀਂ, ਮੈਂ ਉਤਪਾਦਕ ਨਹੀਂ ਹਾਂ" + producer_field_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਚੁਣੋ। ਕੀ ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਹੋ?" + yes_producer_help: "ਉਤਪਾਦਕ ਖਾਣ ਅਤੇ/ਜਾਂ ਪੀਣ ਲਈ ਸੁਆਦੀ ਚੀਜ਼ਾਂ ਬਣਾਉਂਦੇ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਹੋ ਜੇਕਰ ਤੁਸੀਂ ਇਸਨੂੰ ਉਗਾਉਂਦੇ ਹੋ, ਪਾਲਦੇ ਹੋ, ਬਰਿਊ ਕਰਦੇ ਹੋ, ਬੇਕ ਕਰਦੇ ਹੋ, ਖਮੀਰਦੇ ਹੋ, ਦੁੱਧ ਕੱਢਦੇ ਹੋ ਜਾਂ ਇਸਨੂੰ ਢਾਲਦੇ ਹੋ।" + no_producer_help: "ਜੇ ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਨਹੀਂ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਸ਼ਾਇਦ ਉਹ ਵਿਅਕਤੀ ਹੋ ਜੋ ਭੋਜਨ ਵੇਚਦੇ ਅਤੇ ਵੰਡਦੇ ਹੋ। ਤੁਸੀਂ ਇੱਕ ਹੱਬ, ਸਹਿਕਾਰੀ ਸਮਿਤੀ, ਖਰੀਦ ਸਮੂਹ, ਖੁਦਰਾ ਵਿਕਰੇਤਾ, ਥੋਕ ਵਿਕਰੇਤਾ ਜਾਂ ਕੋਈ ਹੋਰ ਹੋ ਸਕਦੇ ਹੋ।" + create_profile: "ਪ੍ਰੋਫਾਈਲ ਬਣਾਓ" + about: + title: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + headline: "ਬਹੁਤ ਵਧੀਆ!" + message: "ਆਓ ਹੁਣ ਇਸ ਬਾਰੇ ਵੇਰਵੇ ਨੂੰ ਬਾਹਰ ਕੱਢੀਏ" + success: "ਸਫਲਤਾ! %{enterprise} ਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ" + registration_exit_message: "ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਵੀ ਪੜਾਅ ਤੇ ਇਸ ਵਿਜ਼ਰਡ ਤੋਂ ਬਾਹਰ ਹੋ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਐਡਮਿਨ ਇੰਟਰਫੇਸ ਤੇ ਜਾ ਕੇ ਆਪਣੀ ਪ੍ਰੋਫਾਈਲ ਬਣਾਉਣਾ ਜਾਰੀ ਰੱਖ ਸਕਦੇ ਹੋ।" + enterprise_description: "ਸੰਖੇਪ ਵਰਣਨ" + enterprise_description_placeholder: "ਤੁਹਾਡੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਵਰਣਨ ਕਰਨ ਵਾਲਾ ਇੱਕ ਛੋਟਾ ਵਾਕ" + enterprise_long_desc: "ਲੰਬਾ ਵਰਣਨ" + enterprise_long_desc_placeholder: "ਇਹ ਤੁਹਾਡੇ ਲਈ ਤੁਹਾਡੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੀ ਕਹਾਣੀ ਦੱਸਣ ਦਾ ਮੌਕਾ ਹੈ - ਤੁਹਾਨੂੰ ਕਿਹੜੀ ਚੀਜ਼ ਵੱਖਰੀ ਅਤੇ ਸ਼ਾਨਦਾਰ ਬਣਾਉਂਦੀ ਹੈ? ਅਸੀਂ ਤੁਹਾਡੇ ਵਰਣਨ ਨੂੰ 600 ਅੱਖਰਾਂ ਜਾਂ 150 ਸ਼ਬਦਾਂ ਤੋਂ ਘੱਟ ਰੱਖਣ ਦਾ ਸੁਝਾਅ ਦੇਵਾਂਗੇ।" + enterprise_abn: "ABN" + enterprise_abn_placeholder: "ਜਿਵੇਂ - 99 123 456 789" + enterprise_acn: "ACN" + enterprise_acn_placeholder: "ਜਿਵੇਂ - 99 123 456 789" + enterprise_tax_required: "ਤੁਹਾਨੂੰ ਕਿਸੇ ਇੱਕ ਦੀ ਚੋਣ ਕਰਨੀ ਪਵੇਗੀ।" images: + title: "ਫੋਟੋ" + headline: "ਧੰਨਵਾਦ!" + description: "ਆਓ ਤੁਹਾਡੀ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਸ਼ਾਨਦਾਰ ਬਣਾਉਣ ਲਈ ਕੁਝ ਸੁੰਦਰ ਫੋਟੋਆਂ ਅਪਲੋਡ ਕਰੀਏ! :)" + uploading: "ਅਪਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..." + continue: "ਜਾਰੀ ਰੱਖੋ" back: "ਵਾਪਸ" + logo: + select_logo: "ਕਦਮ 1. ਲੋਗੋ ਦੀ ਫੋਟੋ ਦੀ ਚੋਣ ਕਰੋ" + logo_tip: "ਟਿਪ: ਵਰਗ ਫੋਟੋ ਵਧੀਆ ਕੰਮ ਕਰਨਗੇ, ਤਰਜੀਹੀ ਤੌਰ 'ਤੇ ਘੱਟੋ-ਘੱਟ 300×300px" + logo_label: "ਇੱਕ ਲੋਗੋ ਫੋਟੋ ਚੁਣੋ" + logo_drag: "ਆਪਣੇ ਲੋਗੋ ਨੂੰ ਇੱਥੇ ਡ੍ਰੈਗ ਅਤੇ ਡਰੌਪ ਕਰੋ" + review_logo: "ਕਦਮ 2. ਆਪਣੇ ਲੋਗੋ ਦੀ ਸਮੀਖਿਆ ਕਰੋ" + review_logo_tip: "ਟਿਪ: ਵਧੀਆ ਨਤੀਜਿਆਂ ਲਈ, ਤੁਹਾਡੇ ਲੋਗੋ ਨੂੰ ਉਪਲਬਧ ਥਾਂ ਭਰਨੀ ਚਾਹੀਦੀ ਹੈ" + logo_placeholder: "ਤੁਹਾਡਾ ਲੋਗੋ ਅੱਪਲੋਡ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸਮੀਖਿਆ ਲਈ ਇੱਥੇ ਦਿਖਾਈ ਦੇਵੇਗਾ" + promo: + select_promo_image: "ਕਦਮ 3. ਪ੍ਰੋਮੋ ਫੋਟੋ ਚੁਣੋ" + promo_image_tip: "ਟਿਪ: ਇੱਕ ਬੈਨਰ ਵਜੋਂ ਵਿਖਾਇਆ ਗਿਆ, ਤਰਜੀਹੀ ਕੀਤਾ ਸਾਈਜ਼ 1200×260px ਹੈ" + promo_image_label: "ਇੱਕ ਪ੍ਰੋਮੋ ਫੋਟੋ ਚੁਣੋ" + promo_image_drag: "ਆਪਣੇ ਪ੍ਰੋਮੋ ਨੂੰ ਇੱਥੇ ਡ੍ਰੈਗ ਕਰੋ ਅਤੇ ਡਰੌਪ ਕਰੋ" + review_promo_image: "ਕਦਮ 4. ਆਪਣੇ ਪ੍ਰੋਮੋ ਬੈਨਰ ਦੀ ਸਮੀਖਿਆ ਕਰੋ" + review_promo_image_tip: "ਟਿਪ: ਸਭ ਤੋਂ ਵਧੀਆ ਨਤੀਜਿਆਂ ਲਈ, ਤੁਹਾਡੀ ਪ੍ਰੋਮੋ ਫੋਟੋ ਨੂੰ ਉਪਲਬਧ ਥਾਂ ਭਰਨੀ ਚਾਹੀਦੀ ਹੈ" + promo_image_placeholder: "ਤੁਹਾਡਾ ਲੋਗੋ ਅੱਪਲੋਡ ਹੋਣ ਤੋਂ ਬਾਅਦ ਸਮੀਖਿਆ ਲਈ ਇੱਥੇ ਦਿਖਾਈ ਦੇਵੇਗਾ" + social: + title: "ਸਮਾਜਿਕ" + enterprise_final_step: "ਆਖਰੀ ਕਦਮ!" + enterprise_social_text: "ਲੋਕ %{enterprise} ਨੂੰ ਔਨਲਾਈਨ ਕਿਵੇਂ ਲੱਭ ਸਕਦੇ ਹਨ?" + website: "ਵੈਬਸਾਈਟ" + website_placeholder: "ਜਿਵੇਂ ਕਿ - openfoodnetwork.org.au" + facebook: "ਫੇਸਬੁੱਕ" + facebook_placeholder: "ਜਿਵੇਂ- www.facebook.com/PageNameHere" + linkedin: "ਲਿੰਕਡਇਨ" + linkedin_placeholder: "ਜਿਵੇਂ ਕਿ - www.linkedin.com/YourNameHere" + twitter: "ਟਵਿੱਟਰ" + twitter_placeholder: "ਜਿਵੇਂ ਕਿ - @twitter_handle" + instagram: "ਇੰਸਟਾਗ੍ਰਾਮ" + instagram_placeholder: "ਜਿਵੇਂ ਕਿ - @instagram_handle" + limit_reached: + headline: "ਓਹ ਨਹੀਂ!" + message: "ਤੁਸੀਂ ਇਸਦੀ ਹੱਦ ਤੱਕ ਪਹੁੰਚ ਗਏ ਹੋ!" + text: "ਤੁਸੀਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਰੱਖਣ ਦੀ ਸੰਖਿਆ ਦੀ ਸੀਮਾ ਤੱਕ ਪਹੁੰਚ ਗਏ ਹੋ ਜਿਨ੍ਹਾਂ ਦੀ ਤੁਹਾਨੂੰ ਇਜਾਜ਼ਤ ਹੈ" + finished: + headline: "ਸਮਾਪਤ!" + thanks: "%{enterprise} ਲਈ ਵੇਰਵੇ ਭਰਨ ਲਈ ਧੰਨਵਾਦ।" + login: "ਤੁਸੀਂ ਓਪਨ ਫੂਡ ਨੈੱਟਵਰਕ ਵਿੱਚ ਲੌਗਇਨ ਕਰਕੇ ਅਤੇ ਐਡਮਿਨ ਤੇ ਜਾ ਕੇ ਕਿਸੇ ਵੀ ਪੜਾਅ ਉਤੇ ਆਪਣੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਬਦਲ ਜਾਂ ਅੱਪਡੇਟ ਕਰ ਸਕਦੇ ਹੋ।" + action: "ਐਂਟਰਪ੍ਰਾਈਜ ਡੈਸ਼ਬੋਰਡ ਤੇ ਜਾਓ" back: "ਵਾਪਸ" + continue: "ਜਾਰੀ ਰੱਖੋ" + action_or: "ਜਾਂ" + enterprise_limit: ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੀਮਾ + shipping_method_destroy_error: "ਉਸ ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ ਨੂੰ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਕਿਉਂਕਿ ਇਹ ਇੱਕ ਆਰਡਰ ਦੁਆਰਾ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਹੈ: %{number}।" + fees: "ਫ਼ੀਸ" + fee_name: "ਫ਼ੀਸ ਦਾ ਨਾਮ" + fee_owner: "ਫ਼ੀਸ ਦਾ ਮਾਲਕ" + item_cost: "ਆਈਟਮ ਦੀ ਕੀਮਤ" + bulk: "ਥੋਕ" + shop_variant_quantity_min: "ਨਿਊਨਤਮ" + shop_variant_quantity_max: "ਅਧਿਕਤਮ" + contact: "ਸੰਪਰਕ" + follow: "ਫਾਲੋ ਕਰੋ" + shop_for_products_html: "%{enterprise} ਉਤਪਾਦਾਂ ਦੀ ਇੱਥੇ ਖਰੀਦਦਾਰੀ ਕਰੋ:" + change_shop: "ਸ਼ਾਪ ਨੂੰ ਇਸ ਵਿੱਚ ਬਦਲੋ:" + shop_at: "ਹੁਣੇ ਖਰੀਦਦਾਰੀ ਕਰੋ:" + admin_fee: "ਐਡਮਿਨ ਫੀਸ" + sales_fee: "ਵਿਕਰੀ ਫੀਸ" + packing_fee: "ਪੈਕਿੰਗ ਫੀਸ" + transport_fee: "ਟਰਾਂਸਪੋਰਟ ਫੀਸ" + fundraising_fee: "ਫੰਡਰੇਜ਼ਿੰਗ ਫੀਸ" + price_graph: "ਕੀਮਤ ਗ੍ਰਾਫ਼" + included_tax: "ਸ਼ਾਮਲ ਟੈਕਸ" + tax: "ਟੈਕਸ" + tax_amount_included: "%{amount} (ਸ਼ਾਮਲ)" + remove_tax: "ਟੈਕਸ ਹਟਾਓ" + balance: "ਬਾਕੀ ਰਕਮ" + transaction: "ਲੈਣ-ਦੇਣ" transaction_date: "ਮਿਤੀ" + payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" + shipping_state: "ਸ਼ਿਪਿੰਗ ਸਥਿਤੀ" + value: "ਵਲਯੂ" + balance_due: "ਬਕਾਇਆ ਰਕਮ" + credit: "ਕ੍ਰੈਡਿਟ" + Paid: "ਭੁਗਤਾਨ ਕੀਤਾ ਗਿਆ" + Ready: "ਤਿਆਰ" + not_visible: ਦਿਖਾਈ ਨਹੀਂ ਦੇ ਰਿਹਾ + you_have_no_orders_yet: "ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਆਰਡਰ ਨਹੀਂ ਹਨ" + show_only_complete_orders: "ਸਿਰਫ਼ ਪੂਰੇ ਆਰਡਰ ਵਿਖਾਓ" + successfully_created: '%{resource} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਬਣਾਇਆ ਗਿਆ ਹੈ!' + successfully_removed: '%{resource} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ!' + successfully_updated: '%{resource} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ!''' + running_balance: "ਚਲ ਰਹੀ ਬਕਾਇਆ ਰਕਮ" + outstanding_balance: "ਬਕਾਇਆ ਰਕਮ" + admin_enterprise_relationships: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਅਨੁਮਤੀਆਂ" + admin_enterprise_relationships_everything: "ਸਭ ਕੁਝ" + admin_enterprise_relationships_permits: "ਪਰਮਿਟ" + admin_enterprise_relationships_seach_placeholder: "ਖੋਜੋ" admin_enterprise_relationships_button_create: "ਬਣਾਓ" + admin_enterprise_relationships_to: "ਨੂੰ" + admin_enterprise_groups: "ਐਂਟਰਪਰਾਈਜ਼ ਸਮੂਹ" admin_enterprise_groups_name: "ਨਾਮ" + admin_enterprise_groups_owner: "ਮਾਲਕ'" + admin_enterprise_groups_on_front_page: "ਪਹਿਲੇ ਪੰਨੇ ਤੇ?" admin_enterprise_groups_enterprise: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + admin_enterprise_groups_data_powertip: "ਇਸ ਸਮੂਹ ਲਈ ਜ਼ਿੰਮੇਵਾਰ ਪ੍ਰਾਇਮਰੀ ਉਪਭੋਗਤਾ।" + admin_enterprise_groups_data_powertip_logo: "ਇਹ ਗਰੁੱਪ ਦਾ ਲੋਗੋ ਹੈ" + admin_enterprise_groups_data_powertip_promo_image: "ਇਹ ਫੋਟੋ ਗਰੁੱਪ ਪ੍ਰੋਫਾਈਲ ਦੇ ਸਿਖਰ ਤੇ ਪ੍ਰਦਰਸ਼ਿਤ ਹੁੰਦੀ ਹੈ" + admin_enterprise_groups_contact_phone_placeholder: "ਜਿਵੇਂ ਕਿ 98 7654 3210" + admin_enterprise_groups_contact_address1_placeholder: "ਜਿਵੇਂ ਕਿ 123 ਹਾਈ ਸਟਰੀਟ" + admin_enterprise_groups_contact_city: "ਉਪਨਗਰ" + admin_enterprise_groups_contact_city_placeholder: "ਜਿਵੇਂ ਕਿ ਨੌਰਥਕੋਟ" + admin_enterprise_groups_contact_zipcode: "ਪਿੰਨ ਕੋਡ" + admin_enterprise_groups_contact_zipcode_placeholder: "ਜਿਵੇਂ ਕਿ 3070" admin_enterprise_groups_contact_state_id: "ਸਥਿਤੀ" + admin_enterprise_groups_contact_country_id: "ਦੇਸ਼" + admin_enterprise_groups_web_twitter: "ਜਿਵੇਂ - @the_prof" + admin_enterprise_groups_web_website_placeholder: "ਜਿਵੇਂ ਕਿ www.tuffles.com" + admin_order_cycles: "ਐਡਮਿਨ ਆਰਡਰ ਸਾਈਕਲ" + open: "ਖੁਲਾ ਹੈ" + close: "ਬੰਦ" create: "ਬਣਾਓ" + search: "ਖੋਜੋ" supplier: "ਸਪਲਾਇਰ" - product_name: "\"ਉਤਪਾਦ ਦਾ ਨਾਂ\"" + product_name: "ਉਤਪਾਦ ਦਾ ਨਾਂ" + product_description: "ਉਤਪਾਦ ਵਰਣਨ" + permalink: "ਪਰਮਾਲਿੰਕ" + shipping_categories: "ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀਆਂ" + units: "ਯੂਨਿਟ ਸਾਈਜ਼" + coordinator: "ਕੋਆਰਡੀਨੇਟਰ" + distributor: "ਵਿਤਰਕ" + enterprise_fees: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ" + process_my_order: "ਮੇਰਾ ਆਰਡਰ ਸੰਸਾਧਿਤ ਕਰੋ" + delivery_instructions: ਡਿਲਿਵਰੀ ਨਿਰਦੇਸ਼ + delivery_method: ਡਿਲਿਵਰੀ ਦਾ ਢੰਗ fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + display: "ਡਿਸਪਲੇ" tags: "ਟੈਗ" + calculator: "ਕੈਲਕੁਲੇਟਰ" + calculator_values: "ਕੈਲਕੁਲੇਟਰ ਵੈਲਯੂ" + calculator_settings_warning: "ਜੇਕਰ ਤੁਸੀਂ ਕੈਲਕੁਲੇਟਰ ਦੀ ਕਿਸਮ ਬਦਲ ਰਹੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਕੈਲਕੁਲੇਟਰ ਸੈਟਿੰਗਾਂ ਨੂੰ ਸੰਪਾਦਿਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਹਿਲਾਂ ਸੇਵ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ" + calculator_preferred_unit_error: "ਕਿਲੋ ਜਾਂ ਪੌਂਡ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ" + calculator_preferred_value_error: "ਅਵੈਧ ਇਨਪੁਟ। ਕਿਰਪਾ ਕਰਕੇ ਸਿਰਫ਼ ਨੰਬਰਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਉਦਾਹਰਨ ਲਈ: 10, 5.5, -20" + flat_percent_per_item: "ਫਲੈਟ ਪ੍ਰਤੀਸ਼ਤ (ਪ੍ਰਤੀ ਆਈਟਮ)" + flat_rate_per_item: "ਫਲੈਟ ਪ੍ਰਤੀਸ਼ਤ (ਪ੍ਰਤੀ ਆਈਟਮ)" + flat_rate_per_order: "ਫਲੈਟ ਰੇਟ (ਪ੍ਰਤੀ ਆਰਡਰ)" + flexible_rate: "ਬਦਲਾਵ ਯੋਗ ਦਰ" + price_sack: "ਬੋਰੀ ਦੀ ਕੀਮਤ" + new_order_cycles: "ਨਵਾਂ ਆਰਡਰ ਸਾਈਕਲ" + new_order_cycle: "ਨਵਾਂ ਆਰਡਰ ਸਾਈਕਲ" + new_order_cycle_tooltip: "ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮੇਂ ਲਈ ਸ਼ਾਪ ਖੋਲ੍ਹੋ" + select_a_coordinator_for_your_order_cycle: "ਆਪਣੇ ਆਰਡਰ ਚੱਕਰ ਲਈ ਕੋਆਰਡੀਨੇਟਰ ਦੀ ਚੋਣ ਕਰੋ" + notify_producers: 'ਉਤਪਾਦਕਾਂ ਨੂੰ ਸੂਚਿਤ ਕਰੋ''' + edit_order_cycle: "ਆਰਡਰ ਸਾਈਕਲ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" + roles: "ਭੂਮਿਕਾਵਾਂ" update: "ਅੱਪਡੇਟ" delete: ਹਟਾਓ + add_producer_property: "ਉਤਪਾਦਕ ਪ੍ਰਾਪਰਟੀ ਜੋੜੋ" + in_progress: "ਪ੍ਰਗਤੀ ਵਿੱਚ" + started_at: "ਇਸ ਸਮੇਂ ਸ਼ੁਰੂ ਹੋਇਆ" + queued: "ਕਤਾਰ ਵਿੱਚ" + scheduled_for: "ਇਸ ਲਈ ਸ਼ੈਡਿਊਲ ਕੀਤਾ ਗਿਆ" + customers: "ਗਾਹਕ" + please_select_hub: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਹੱਬ ਚੁਣੋ" + loading_customers: "ਗਾਹਕਾਂ ਨੂੰ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" + no_customers_found: "ਕੋਈ ਗਾਹਕ ਨਹੀਂ ਲੱਭੇ" + go: "ਜਾਓ" + hub: "ਹੱਬ" product: "ਉਤਪਾਦ" - price: "\"ਕੀਮਤ\"" + price: "ਕੀਮਤ" + review: "ਸਮੀਖਿਆ" + save_changes: "ਬਦਲਾਵ ਸੇਵ ਕਰੋ" + order_saved: "ਆਰਡਰ ਸੇਵ ਕੀਤਾ ਗਿਆ" + no_products: ਕੋਈ ਉਤਪਾਦ ਨਹੀਂ + spree_admin_overview_enterprises_header: "ਮੇਰਾ ਐਂਟਰਪ੍ਰਾਈਜ਼" + spree_admin_overview_enterprises_footer: "ਮੇਰੇ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" spree_admin_enterprises_hubs_name: "ਨਾਮ" + spree_admin_enterprises_create_new: "ਨਵਾਂ ਬਣਾਓ" + spree_admin_enterprises_shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" + spree_admin_enterprises_fees: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫ਼ੀਸ" + spree_admin_enterprises_none_create_a_new_enterprise: "ਇੱਕ ਨਵਾਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਬਣਾਓ" + spree_admin_enterprises_none_text: "ਤੁਹਾਡੇ ਕੋਲ ਅਜੇ ਕੋਈ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨਹੀਂ ਹੈ" + spree_admin_enterprises_tabs_hubs: "ਹੱਬ" + spree_admin_enterprises_producers_manage_products: "ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" + spree_admin_enterprises_create_new_product: "ਇੱਕ ਨਵਾਂ ਉਤਪਾਦ ਬਣਾਓ" + spree_admin_single_enterprise_alert_mail_confirmation: "ਕਿਰਪਾ ਕਰਕੇ ਈਮੇਲ ਪਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" + spree_admin_single_enterprise_alert_mail_sent: "ਅਸੀਂ ਇਸ ਨੂੰ ਇੱਕ ਈਮੇਲ ਭੇਜੀ ਹੈ" + spree_admin_overview_action_required: "ਕਾਰਵਾਈ ਲੋੜੀਂਦੀ ਹੈ" + spree_admin_overview_check_your_inbox: "ਕਿਰਪਾ ਕਰਕੇ ਹੋਰ ਹਦਾਇਤਾਂ ਲਈ ਆਪਣੇ ਇਨਬਾਕਸ ਦੀ ਜਾਂਚ ਕਰੋ। ਧੰਨਵਾਦ!" + spree_admin_unit_value: ਯੂਨਿਟ ਵੈਲਯੂ + spree_admin_unit_description: ਯੂਨਿਟ ਵਰਣਨ + spree_admin_variant_unit: ਵੇਰੀਐਂਟ ਯੂਨਿਟ + spree_admin_variant_unit_scale: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਸਕੇਲ spree_admin_supplier: ਸਪਲਾਇਰ spree_admin_product_category: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ + spree_admin_variant_unit_name: ਵੇਰੀਐਂਟ ਯੂਨਿਟ ਦਾ ਨਾਮ + unit_name: "ਯੂਨਿਟ ਦਾ ਨਾਮ" + change_package: "ਪੈਕੇਜ ਬਦਲੋ" + spree_admin_single_enterprise_hint: "ਸੰਕੇਤ: ਲੋਕਾਂ ਨੂੰ ਤੁਹਾਨੂੰ ਲੱਭਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ, ਇਸ ਦੇ ਹੇਠਾਂ ਆਪਣੀ ਦਿੱਖ ਨੂੰ ਚਾਲੂ ਕਰੋ" + spree_admin_eg_pickup_from_school: "ਜਿਵੇਂ ਕਿ 'ਪ੍ਰਾਇਮਰੀ ਸਕੂਲ ਤੋਂ ਪਿਕ-ਅੱਪ'" + spree_admin_eg_collect_your_order: "ਜਿਵੇਂ ਕਿ 'ਕਿਰਪਾ ਕਰਕੇ 123 ਇਮੇਜਿਨਰੀ ਸੇਂਟ, ਨੌਰਥਕੋਟ, 3070' ਤੋਂ ਆਪਣਾ ਆਰਡਰ ਲਵੋ" + spree_classification_primary_taxon_error: "ਟੈਕਸਨ %{taxon}, %{product} ਦਾ ਪ੍ਰਾਇਮਰੀ ਟੈਕਸਨ ਹੈ ਅਤੇ ਇਸ ਨੂੰ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ" + spree_order_availability_error: "ਵਿਤਰਕ ਜਾਂ ਆਰਡਰ ਸਾਈਕਲ ਤੁਹਾਡੇ ਕਾਰਟ ਵਿੱਚ ਉਤਪਾਦਾਂ ਦੀ ਸਪਲਾਈ ਨਹੀਂ ਕਰ ਸਕਦਾ" + spree_order_populator_error: "ਉਹ ਵਿਤਰਕ ਜਾਂ ਆਰਡਰ ਸਾਈਕਲ ਤੁਹਾਡੇ ਕਾਰਟ ਵਿੱਚ ਦਿੱਤੇ ਸਾਰੇ ਉਤਪਾਦਾਂ ਦੀ ਸਪਲਾਈ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਹੋਰ ਚੁਣੋ।" + spree_order_cycle_error: "ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਆਰਡਰ ਲਈ ਇੱਕ ਆਰਡਰ ਸਾਈਕਲ ਚੁਣੋ।" + spree_order_populator_availability_error: "ਉਹ ਉਤਪਾਦ ਚੁਣੇ ਹੋਏ ਵਿਤਰਕ ਜਾਂ ਆਰਡਰ ਸਾਈਕਲ ਤੋਂ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।" + spree_distributors_error: "ਘੱਟੋ-ਘੱਟ ਇੱਕ ਹੱਬ ਚੁਣਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ" + spree_user_enterprise_limit_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})." + spree_variant_product_error: ਘੱਟੋ-ਘੱਟ ਇੱਕ ਵੇਰੀਐਂਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ + your_profil_live: "ਤੁਹਾਡਾ ਪ੍ਰੋਫਾਈਲ ਲਾਈਵ" + see: "ਵੇਖੋ" + live: "ਲਾਈਵ" + manage: "ਪ੍ਰਬੰਧਿਤ ਕਰੋ" + resend: "ਦੁਬਾਰਾ ਭੇਜੋ" + add_and_manage_products: "ਉਤਪਾਦਾਂ ਨੂੰ ਜੋੜੋ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰੋ" + add_and_manage_order_cycles: "ਆਰਡਰ ਸਾਈਕਲ ਜੋੜੋ ਅਤੇ ਪ੍ਰਬੰਧਿਤ ਕਰੋ" + manage_order_cycles: "ਆਰਡਰ ਸਾਈਕਲ ਪ੍ਰਬੰਧਿਤ ਕਰੋ" + manage_products: "ਉਤਪਾਦਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ" + edit_profile_details: "ਪ੍ਰੋਫਾਈਲ ਵੇਰਵਿਆਂ ਦਾ ਸੰਪਾਦਨ ਕਰੋ" + edit_profile_details_etc: "ਆਪਣਾ ਪ੍ਰੋਫ਼ਾਈਲ ਵਰਣਨ, ਫੋਟੋ, ਆਦਿ ਬਦਲੋ।" order_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + enterprise_relationships: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਅਨੁਮਤੀਆਂ" + first_name_begins_with: "ਪਹਿਲਾ ਨਾਮ ਇਸ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ" + last_name_begins_with: "ਆਖਰੀ ਨਾਮ ਇਸ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ" + shipping_method: "ਸ਼ਿਪਿੰਗ ਦਾ ਢੰਗ" + new_order: "ਨਵਾਂ ਆਰਡਰ" + enterprise_tos_link: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦਾ ਲਿੰਕ" + enterprise_tos_message: "ਅਸੀਂ ਉਹਨਾਂ ਲੋਕਾਂ ਨਾਲ ਕੰਮ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ ਜੋ ਸਾਡੇ ਉਦੇਸ਼ਾਂ ਅਤੇ ਕਦਰਾਂ-ਕੀਮਤਾਂ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹਨ। ਇਸ ਤਰ੍ਹਾਂ ਅਸੀਂ ਨਵੇਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ਾਂ ਨੂੰ ਸਾਡੇ ਨਾਲ ਸਹਿਮਤ ਹੋਣ ਲਈ ਕਹਿੰਦੇ ਹਾਂ" + enterprise_tos_agree: "ਮੈਂ ਉਪਰੋਕਤ ਸੇਵਾ ਦੀਆਂ ਸ਼ਰਤਾਂ ਨਾਲ ਸਹਿਮਤ ਹਾਂ" + tax_settings: "ਟੈਕਸ ਸੈਟਿੰਗਾਂ" + products_require_tax_category: "ਉਤਪਾਦਾਂ ਨੂੰ ਟੈਕਸ ਸ਼੍ਰੇਣੀ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ" + admin_shared_address_1: "ਪਤਾ" + admin_shared_address_2: "ਪਤਾ (ਜਾਰੀ)" + admin_share_city: "ਸ਼ਹਿਰ" + admin_share_zipcode: "ਪਿੰਨ ਕੋਡ" + admin_share_country: "ਦੇਸ਼" admin_share_state: "ਸਥਿਤੀ" + hub_sidebar_hubs: "ਹੱਬ" + hub_sidebar_none_available: "ਕੋਈ ਵੀ ਉਪਲਬਧ ਨਹੀਂ" + hub_sidebar_manage: "ਪ੍ਰਬੰਧਿਤ ਕਰੋ" + hub_sidebar_at_least: "ਘੱਟੋ-ਘੱਟ ਇੱਕ ਹੱਬ ਚੁਣਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ" + hub_sidebar_blue: "ਨੀਲਾ" + hub_sidebar_red: "ਲਾਲ" + order_cycles_closed_for_hub: "ਤੁਹਾਡੇ ਵੱਲੋਂ ਚੁਣਿਆ ਹੱਬ ਆਰਡਰਾਂ ਲਈ ਅਸਥਾਈ ਤੌਰ ਤੇ ਬੰਦ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + report_customers_distributor: "ਵਿਤਰਕ" + report_customers_hub: "ਹੱਬ" report_customers_supplier: "ਸਪਲਾਇਰ" report_customers_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + report_customers_type: "ਰਿਪੋਰਟ ਦੀ ਕਿਸਮ" + report_customers_csv: "CSV ਦੇ ਤੌਰ ਤੇ ਡਾਊਨਲੋਡ ਕਰੋ" report_customers: ਗਾਹਕ report_producers: "ਉਤਪਾਦਕ" + report_type: "ਰਿਪੋਰਟ ਦੀ ਕਿਸਮ" + report_hubs: "ਹੱਬ" + report_payment: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" + report_distributor: "ਵਿਤਰਕ" + report_payment_by: 'ਕਿਸਮ ਦੇ ਅਨੁਸਾਰ ਭੁਗਤਾਨ''' + report_itemised_payment: 'ਆਈਟਮ ਦੇ ਅਨੁਸਾਰ ਭੁਗਤਾਨ ਦਾ ਕੁੱਲ''' + report_payment_totals: 'ਭੁਗਤਾਨ ਦਾ ਕੁੱਲ''' + report_all: 'ਸਾਰੇ''' report_order_cycle: "ਆਰਡਰ ਸਾਈਕਲ" + report_hide_columns: ਲੁਕਾਉਣ ਲਈ ਕਾਲਮ report_columns: ਕਾਲਮ report_enterprises: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + report_enterprise_fee: "ਫੀਸ ਦੇ ਨਾਂ" + report_users: "ਉਪਭੋਗਤਾ" + report_tax_rates: ਟੈਕਸ ਦੀਆਂ ਦਰਾਂ + report_tax_types: ਟੈਕਸ ਦੀਆਂ ਕਿਸਮਾਂ + report_filters: ਰਿਪੋਰਟ ਫਿਲਟਰ + report_print: ਪ੍ਰਿੰਟ ਰਿਪੋਰਟ + report_render_options: ਰੈਂਡਰਿੰਗ ਵਿਕਲਪ + report_header_ofn_uid: OFN UID report_header_order_cycle: ਆਰਡਰ ਸਾਈਕਲ report_header_email: ਈਮੇਲ + report_header_status: ਸਥਿਤੀ + report_header_comments: ਟਿੱਪਣੀਆਂ report_header_first_name: ਪਹਿਲਾ ਨਾਂ report_header_last_name: ਆਖਰੀ ਨਾਂ + report_header_suburb: ਉਪਨਗਰ report_header_phone: ਫੋਨ + report_header_address: ਪਤਾ report_header_billing_address: ਬਿਲਿੰਗ ਪਤਾ + report_header_relationship: ਸਬੰਧ + report_header_hub: ਹੱਬ + report_header_hub_address: ਹੱਬ ਦਾ ਪਤਾ + report_header_to_hub: ਹੱਬ ਨੂੰ + report_header_hub_code: ਹੱਬ ਕੋਡ + report_header_hub_id: ਹੱਬ ਆਈਡੀ + report_header_hub_business_number: "\"ਹੱਬ ਦਾ ਬਿਜ਼ਨਸ ਨੰਬਰ\"" + report_header_hub_legal_name: "ਹੱਬ ਦਾ ਕਾਨੂੰਨੀ ਨਾਂ" + report_header_hub_contact_name: "ਹੱਬ ਦਾ ਸੰਪਰਕ ਨਾਂ" + report_header_hub_email: "ਹੱਬ ਦਾ ਪਬਲਿਕ ਈਮੇਲ" + report_header_hub_owner_email: ਹੱਬ ਦੇ ਮਾਲਕ ਦਾ ਈਮੇਲ + report_header_hub_phone: "ਹੱਬ ਦਾ ਫੋਨ ਨੰਬਰ" + report_header_hub_address_line1: "ਹੱਬ ਪਤਾ ਲਾਈਨ 1" + report_header_hub_address_line2: "ਹੱਬ ਪਤਾ ਲਾਈਨ 2" + report_header_hub_address_city: "ਹੱਬ ਉਪਨਗਰ" + report_header_hub_address_zipcode: "ਹੱਬ ਪਿਨਕੋਡ" + report_header_hub_address_state_name: "ਹੱਬ ਰਾਜ" + report_header_code: ਕੋਡ + report_header_paid: ਭੁਗਤਾਨ ਕੀਤਾ? + report_header_delivery: ਡਿਲਿਵਰੀ? report_header_shipping: ਸ਼ਿਪਿੰਗ report_header_shipping_method: ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ + report_header_shipping_instructions: ਸ਼ਿਪਿੰਗ ਨਿਰਦੇਸ਼ + report_header_ship_street: ਸ਼ਿਪ ਸਟ੍ਰੀਟ + report_header_ship_street_2: ਸ਼ਿਪ ਸਟ੍ਰੀਟ 2 + report_header_ship_city: ਸ਼ਿਪ ਸ਼ਹਿਰ + report_header_ship_postcode: ਸ਼ਿਪ ਪਿਨਕੋਡ + report_header_ship_state: ਸ਼ਿਪ ਰਾਜ + report_header_billing_street: ਬਿਲਿੰਗ ਸਟ੍ਰੀਟ + report_header_billing_street_2: ਬਿਲਿੰਗ ਸਟ੍ਰੀਟ 2 + report_header_billing_street_3: ਬਿਲਿੰਗ ਸਟ੍ਰੀਟ 3 + report_header_billing_street_4: ਬਿਲਿੰਗ ਸਟ੍ਰੀਟ 4 + report_header_billing_city: ਬਿਲਿੰਗ ਸ਼ਹਿਰ + report_header_billing_postcode: ਬਿਲਿੰਗ ਪਿਨਕੋਡ + report_header_billing_state: ਬਿਲਿੰਗ ਰਾਜ + report_header_incoming_transport: ਆਉਣ ਵਾਲੀ ਟ੍ਰਾੰਸਪੋਰਟ + report_header_special_instructions: ਵਿਸ਼ੇਸ਼ ਹਦਾਇਤਾਂ + report_header_order_number: ਆਰਡਰ ਨੰਬਰ report_header_date: ਮਿਤੀ + report_header_confirmation_date: ਪੁਸ਼ਟੀਕਰਨ ਮਿਤੀ report_header_tags: ਟੈਗ report_header_items: ਵਸਤੂਆਂ + report_header_items_total: "ਕੁੱਲ ਆਈਟਮਾਂ %{currency_symbol}" + report_header_taxable_items_total: "ਕੁੱਲ ਟੈਕਸਯੋਗ ਆਈਟਮਾਂ (%{currency_symbol})" + report_header_sales_tax: "ਵਿਕਰੀ ਟੈਕਸ (%{currency_symbol})" + report_header_delivery_charge: "ਡਿਲਿਵਰੀ ਚਾਰਜ (%{currency_symbol})" + report_header_tax: "ਟੈਕਸ" + report_header_tax_on_delivery: "ਲਿਵਰੀ ਤੇ ਟੈਕਸ (%{currency_symbol})" + report_header_tax_on_fees: "ਫੀਸਾਂ ਤੇ ਟੈਕਸ (%{currency_symbol})" report_header_tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + report_header_tax_rate_name: "ਟੈਕਸ ਦੀ ਦਰ ਦਾ ਨਾਂ" + report_header_tax_rate: "ਟੈਕਸ ਦੀ ਦਰ" + report_header_total_tax: "ਕੁੱਲ ਟੈਕਸ (%{currency_symbol})" + report_header_total_excl_tax: "ਟੈਕਸ ਹਟਾ ਕੇ ਕੁੱਲ (%{currency_symbol})" + report_header_total_incl_tax: "ਕੁੱਲ ਟੈਕਸ ਸਮੇਤ (%{currency_symbol})" + report_header_total_orders: "ਆਰਡਰਾਂ ਦੀ ਕੁੱਲ ਸੰਖਿਆ" + report_header_enterprise: ਐਂਟਰਪ੍ਰਾਈਜ਼ report_header_enterprise_fee_name: ਨਾਮ + report_header_enterprise_fee_type: ਕਿਸਮ + report_header_enterprise_fee_owner: ਮਾਲਕ' report_header_customer: ਗਾਹਕ report_header_customer_first_name: ਪਹਿਲਾ ਨਾਂ report_header_customer_last_name: ਆਖਰੀ ਨਾਂ + report_header_customer_code: ਗਾਹਕ ਕੋਡ report_header_product: ਉਤਪਾਦ + report_header_product_properties: ਉਤਪਾਦ ਦੀ ਪਰੌਪਰਟੀਆਂ + report_header_product_tax_category: ਉਤਪਾਦ ਟੈਕਸ ਸ਼੍ਰੇਣੀ report_header_quantity: ਮਾਤਰਾ + report_header_max_quantity: ਅਧਿਕਤਮ ਮਾਤਰਾ report_header_variant: ਵੇਰੀਐਂਟ + report_header_variant_value: ਵੇਰੀਐਂਟ ਵੈਲਯੂ report_header_variant_unit: '"ਵੇਰੀਐਂਟ ਯੂਨਿਟ"' + report_header_total_available: ਕੁੱਲ ਉਪਲਬਧ + report_header_unallocated: ਆਵੰਟਿਤ ਨਹੀਂ ਕੀਤੀ ਗਈ + report_header_max_quantity_excess: ਅਧਿਕਤਮ ਮਾਤਰਾ + report_header_taxons: ਟੈਕਸੋਨਸ report_header_supplier: ਸਪਲਾਇਰ report_header_producer: ਉਤਪਾਦਕ + report_header_producer_suburb: ਉਤਪਾਦਕ + report_header_producer_tax_status: ਉਤਪਾਦਕ ਟੈਕਸ ਸਥਿਤੀ + report_header_producer_charges_sales_tax?: ਜੀਐੱਸਟੀ/ਵੈਟ ਰਜਿਸਟਰਡ report_header_unit: ਯੂਨਿਟ + report_header_group_buy_unit_quantity: ਸਮੂਹ ਖਰੀਦ ਯੂਨਿਟ ਦੀ ਮਾਤਰਾ + report_header_cost: ਲਾਗਤ + report_header_shipping_cost: ਸ਼ਿਪਿੰਗ ਦੀ ਲਾਗਤ + report_header_curr_cost_per_unit: ਪ੍ਰਤੀ ਯੂਨਿਟ ਕਰੰਸੀ ਦੀ ਲਾਗਤ + report_header_total_shipping_cost: ਕੁੱਲ ਸ਼ਿਪਿੰਗ ਲਾਗਤ report_header_payment_method: ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ - report_header_price: '"ਕੀਮਤ"' + report_header_sells: ਵੇਚਦਾ ਹੈ + report_header_visible: ਦਿਸਦਾ ਹੈ + report_header_price: ਕੀਮਤ + report_header_unit_size: ਯੂਨਿਟ ਸਾਈਜ਼ + report_header_distributor: ਵਿਤਰਕ + report_header_distributor_address: ਵਿਤਰਕ ਦਾ ਪਤਾ + report_header_distributor_city: ਵਿਤਰਕ ਦਾ ਸ਼ਹਿਰ + report_header_distributor_postcode: ਵਿਤਰਕ ਪਿਨਕੋਡ + report_header_distributor_tax_status: ਵਿਤਰਕ ਟੈਕਸ ਸਥਿਤੀ + report_header_delivery_address: ਡਿਲੀਵਰੀ ਦਾ ਪਤਾ + report_header_delivery_postcode: ਡਿਲੀਵਰੀ ਪਿਨਕੋਡ + report_header_bulk_unit_size: ਥੋਕ ਯੂਨਿਟ ਦਾ ਸਾਈਜ਼ report_header_weight: ਭਾਰ + report_header_final_weight_volume: ਅੰਤਮ (ਭਾਰ/ਮਾਤਰਾ) report_header_height: ਉਚਾਈ report_header_width: ਚੌੜਾਈ report_header_depth: ਡੂੰਘਾਈ + report_header_sum_total: ਕੁੱਲ ਜੋੜ + report_header_date_of_order: ਆਰਡਰ ਦੀ ਮਿਤੀ + report_header_amount_owing: ਬਕਾਇਆ ਰਕਮ + report_header_amount_paid: ਭੁਗਤਾਨ ਕੀਤੀ ਰਕਮ + report_header_units_required: ਲੋੜੀਂਦੀਆਂ ਯੂਨਿਟਾਂ + report_header_remainder: ਬਾਕੀ + report_header_order_date: ਆਰਡਰ ਦੀ ਮਿਤੀ + report_header_order_id: ਆਰਡਰ ਆਈਡੀ + report_header_item_name: ਆਈਟਮ ਦਾ ਨਾਂ + report_header_temp_controlled_items: ਤਾਪਮਾਨ ਨਿਯੰਤਰਿਤ ਆਈਟਮਾਂ? + report_header_customer_name: ਗਾਹਕ ਦਾ ਨਾਂ + report_header_customer_email: ਗਾਹਕ ਈਮੇਲ + report_header_customer_phone: ਫੋਨ + report_header_customer_city: ਗਾਹਕ ਸ਼ਹਿਰ report_header_payment_state: ਭੁਗਤਾਨ ਸਥਿਤੀ + report_header_payment_type: ਭੁਗਤਾਨ ਸਥਿਤੀ + report_header_item_price: "ਆਈਟਮ (%{currency})" + report_header_item_fees_price: "ਆਈਟਮ + ਫੀਸ (%{currency})" + report_header_admin_handling_fees: "ਐਡਮਿਨ ਅਤੇ ਹੈਂਡਲਿੰਗ (%{currency})" + report_header_ship_price: "ਸ਼ਿਪ (%{currency})" + report_header_pay_fee_price: "ਫੀਸ ਦਾ ਭੁਗਤਾਨ ਕਰੋ (%{currency})" + report_header_total_price: "ਕੁੱਲ (%{currency})" + report_header_product_total_price: "ਕੁੱਲ ਉਤਪਾਦ (%{currency})" + report_header_shipping_total_price: "ਕੁੱਲ ਸ਼ਿਪਿੰਗ (%{currency})" + report_header_outstanding_balance_price: "ਬੱਚਿਆ ਬਕਾਇਆ (%{currency})" + report_header_eft_price: "ਈਐਫਟੀ (%{currency})" + report_header_paypal_price: "ਪੇਪਾਲ (%{currency})" report_header_sku: SKU report_header_amount: ਰਕਮ + report_header_balance: ਬਾਕੀ ਰਕਮ + report_header_total_cost: "ਕੁੱਲ ਲਾਗਤ" + report_header_total_ordered: ਕੁੱਲ ਕੀਤਾ ਗਿਆ ਆਰਡਰ + report_header_total_max: ਕੁੱਲ ਅਧਿਕਤਮ + report_header_total_units: ਕੁੱਲ ਯੂਨਿਟਾਂ + report_header_sum_max_total: "ਕੁੱਲ ਅਧਿਕਤਮ ਜੋੜ" + report_header_total_excl_vat: "ਟੈਕਸ ਹਟਾ ਕੇ ਕੁੱਲ (%{currency_symbol})" + report_header_total_incl_vat: "ਕੁੱਲ ਟੈਕਸ ਸਮੇਤ (%{currency_symbol})" + report_header_temp_controlled: ਤਾਪਮਾਨ ਦਵਾਰਾ ਨਿਯੰਤ੍ਰਿਤ? + report_header_is_producer: ਉਤਪਾਦਕ? + report_header_not_confirmed: ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋਈ + report_header_gst_on_income: ਆਮਦਨੀ ਤੇ ਜੀਐਸਟੀ + report_header_gst_free_income: ਜੀਐਸਟੀ ਮੁਕਤ ਆਮਦਨ + report_header_total_untaxable_produce: ਕੁੱਲ ਟੈਕਸ ਰਹਿਤ ਉਤਪਾਦ (ਕੋਈ ਟੈਕਸ ਨਹੀਂ) + report_header_total_taxable_produce: ਕੁੱਲ ਟੈਕਸਯੋਗ ਉਤਪਾਦ (ਟੈਕਸ ਸਮੇਤ) + report_header_total_untaxable_fees: ਕੁੱਲ ਟੈਕਸ ਰਹਿਤ ਫੀਸਾਂ (ਕੋਈ ਟੈਕਸ ਨਹੀਂ) + report_header_total_taxable_fees: ਕੁੱਲ ਟੈਕਸਯੋਗ ਫੀਸਾਂ (ਟੈਕਸ ਸਮੇਤ) + report_header_delivery_shipping_cost: ਡਿਲੀਵਰੀ ਸ਼ਿਪਿੰਗ ਲਾਗਤ (ਟੈਕਸ ਸਮੇਤ) + report_header_transaction_fee: ਲੈਣ-ਦੇਣ ਫੀਸ (ਕੋਈ ਟੈਕਸ ਨਹੀਂ) + report_header_total_untaxable_admin: ਕੁੱਲ ਟੈਕਸ ਰਹਿਤ ਐਡਮਿਨ ਐਡਜਸਟਮੈਂਟਸ (ਕੋਈ ਟੈਕਸ ਨਹੀਂ) + report_header_total_taxable_admin: ਕੁੱਲ ਟੈਕਸਯੋਗ ਐਡਮਿਨ ਐਡਜਸਟਮੈਂਟਸ (ਟੈਕਸ ਸਮੇਤ) + report_line_cost_of_produce: ਉਤਪਾਦ ਦੀ ਲਾਗਤ + report_line_line_items: ਲਾਈਨ ਆਈਟਮਾਂ + report_header_last_completed_order_date: ਆਖ਼ਰੀ ਮੁਕੰਮਲ ਆਰਡਰ ਦੀ ਮਿਤੀ + report_xero_configuration: ਜ਼ੀਰੋ ਕੌਂਫਿਗਰੇਸ਼ਨ + initial_invoice_number: "ਸ਼ੁਰੂਆਤੀ ਇਨਵੌਇਸ ਨੰਬਰ" + invoice_date: "ਇਨਵੌਇਸ ਮਿਤੀ" + due_date: "ਅਦਾਇਗੀ ਮਿਤੀ" + account_code: "ਖਾਤਾ ਕੋਡ" + equals: "ਦੇ ਬਰਾਬਰ" + contains: "ਸ਼ਾਮਲ ਹੈ" + discount: "ਛੂਟ" + filter_products: "ਉਤਪਾਦ ਫਿਲਟਰ ਕਰੋ" + delete_product_variant: "ਆਖਰੀ ਵੇਰੀਐਂਟ ਨੂੰ ਮਿਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ!" + progress: "ਪ੍ਰਗਤੀ" + saving: "ਸੇਵ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ.." + success: "ਸਫਲਤਾ" + failure: "ਅਸਫਲਤਾ" + unsaved_changes_confirmation: "ਸੇਵ ਨਾ ਕੀਤੀਆਂ ਬਦਲਾਵ ਗੁਮ ਹੋ ਜਾਣਗੀਆਂ। ਫਿਰ ਵੀ ਜਾਰੀ ਰੱਖੋ?" + one_product_unsaved: "ਇੱਕ ਉਤਪਾਦ ਵਿੱਚ ਬਦਲਾਵ ਸੇਵ ਨਹੀਂ ਹਨ।" + products_unsaved: "%{n} ਉਤਪਾਦਾਂ ਵਿੱਚ ਬਦਲਾਵ ਸੇਵ ਨਹੀਂ ਹਨ।" + is_already_manager: "ਪਹਿਲਾਂ ਹੀ ਮੈਨੇਜਰ ਹੈ!" + no_change_to_save: "ਸੇਵ ਕਰਨ ਲਈ ਕੋਈ ਬਦਲਾਵ ਨਹੀਂ ਹਨ" + user_invited: "%{email} ਨੂੰ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਦੇ ਪ੍ਰਬੰਧਨ ਲਈ ਸੱਦਾ ਦਿੱਤਾ ਗਿਆ ਹੈ" + add_manager: "ਮੌਜੂਦਾ ਉਪਭੋਗਤਾ ਸ਼ਾਮਲ ਕਰੋ" + users: "ਉਪਭੋਗਤਾ" + about: "ਦੇ ਬਾਰੇ ਵਿੱਚ" + images: "ਫੋਟੋ" + web: "ਵੇਬ" + primary_details: "ਪ੍ਰਾਥਮਿਕ ਵੇਰਵੇ" + social: "ਸਮਾਜਿਕ" shipping: "ਸ਼ਿਪਿੰਗ" + shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" + payment_method_fee: "ਲੈਣ-ਦੇਣ ਫੀਸ" + payment_processing_failed: "ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਿਆ, ਕਿਰਪਾ ਕਰਕੇ ਤੁਹਾਡੇ ਦੁਆਰਾ ਦਰਜ ਕੀਤੇ ਵੇਰਵਿਆਂ ਦੀ ਜਾਂਚ ਕਰੋ" + payment_method_not_supported: "ਉਹ ਭੁਗਤਾਨ ਦਾ ਢੰਗ ਅਸਮਰਥਿਤ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਹੋਰ ਚੁਣੋ।" + payment_updated: "ਭੁਗਤਾਨ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ" + cannot_perform_operation: "ਭੁਗਤਾਨ ਅੱਪਡੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" + action_required: "ਕਾਰਵਾਈ ਲੋੜੀਂਦੀ ਹੈ" + tag_rules: "ਟੈਗ ਨਿਯਮ" + enterprise_fee_whole_order: ਪੂਰਾ ਆਰਡਰ + enterprise_fee_by_name: "%{name} ਫੀਸ %{role} %{enterprise_name} ਦੁਆਰਾ" + validation_msg_relationship_already_established: "^ਉਹ ਸੰਬੰਧ ਪਹਿਲਾਂ ਹੀ ਸਥਾਪਿਤ ਹੈ।" + validation_msg_at_least_one_hub: "^ਘੱਟੋ-ਘੱਟ ਇੱਕ ਹੱਬ ਚੁਣਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ" + validation_msg_tax_category_cant_be_blank: "^ਟੈਕਸ ਸ਼੍ਰੇਣੀ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦੀ" + validation_msg_is_associated_with_an_exising_customer: "ਮੌਜੂਦਾ ਗਾਹਕ ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ" + content_configuration_pricing_table: "(TODO: ਕੀਮਤ ਸਾਰਣੀ)" + content_configuration_case_studies: "(ਟੋਡੋ: ਕੇਸ ਸਟੱਡੀਜ਼)" + content_configuration_detail: "(TODO: ਵੇਰਵੇ)" + enterprise_name_error: "ਪਹਿਲਾਂ ਹੀ ਲੀਤਾ ਜਾ ਚੁੱਕਾ ਹੈ। ਜੇਕਰ ਇਹ ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਹੈ ਅਤੇ ਤੁਸੀਂ ਮਲਕੀਅਤ ਦਾ ਦਾਅਵਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਜਾਂ ਜੇਕਰ ਤੁਸੀਂ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨਾਲ ਵਪਾਰ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ %{email} ਤੇ ਇਸ ਪ੍ਰੋਫਾਈਲ ਦੇ ਮੌਜੂਦਾ ਮੈਨੇਜਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।" + enterprise_owner_error: "^%{email} is not permitted to own any more enterprises (limit is %{enterprise_limit})." + enterprise_role_uniqueness_error: "^ਉਹ ਭੂਮਿਕਾ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।" + enterprise_terms_and_conditions_type_error: "ਸਿਰਫ ਪੀਡੀਐਫ ਦੀ ਇਜਾਜ਼ਤ ਹੈ" + inventory_item_visibility_error: ਸੱਚਾ ਜਾਂ ਝੂਠ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ + product_importer_file_error: "ਗਲਤੀ: ਕੋਈ ਫ਼ਾਈਲ ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤੀ ਗਈ" + product_importer_spreadsheet_error: "ਫਾਇਲ ਸੰਸਾਧਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ: ਅਵੈਧ ਫਾਇਲ ਕਿਸਮ" + product_importer_products_save_error: ਕਿਸੇ ਵੀ ਉਤਪਾਦ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਸੇਵ ਨਹੀਂ ਕੀਤਾ ਗਿਆ + product_import_file_not_found_notice: 'ਫ਼ਾਈਲ ਨਹੀਂ ਮਿਲੀ ਜਾਂ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ' + product_import_no_data_in_spreadsheet_notice: 'ਸਪ੍ਰੈਡਸ਼ੀਟ ਵਿੱਚ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ' + order_choosing_hub_notice: ਤੁਹਾਡਾ ਹੱਬ ਚੁਣਿਆ ਗਿਆ ਹੈ। + order_cycle_selecting_notice: ਤੁਹਾਡਾ ਆਰਡਰ ਸਾਈਕਲ ਚੁਣਿਆ ਗਿਆ ਹੈ। + adjustments_tax_rate_error: "^ਕਿਰਪਾ ਕਰਕੇ ਜਾਂਚ ਕਰੋ ਕਿ ਇਸ ਸਮਾਯੋਜਨ ਲਈ ਟੈਕਸ ਦੀ ਦਰ ਸਹੀ ਹੈ।" + active_distributors_not_ready_for_checkout_message_singular: >- + ਹੱਬ %{distributor_names} ਇੱਕ ਸਰਗਰਮ ਆਰਡਰ ਸਾਈਕਲ ਵਿੱਚ ਸੂਚੀਬੱਧ ਹੈ, ਪਰ ਇਸ ਵਿੱਚ ਵੈਧ + ਸ਼ਿਪਿੰਗ ਅਤੇ ਭੁਗਤਾਨ ਦੇ ਢੰਗ ਨਹੀਂ ਹਨ। ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਸੇਟ ਨਹੀਂ ਕਰਦੇ, ਗਾਹਕ + ਇਸ ਹੱਬ ਉਤੇ ਖਰੀਦਦਾਰੀ ਕਰਨ ਦੇ ਯੋਗ ਨਹੀਂ ਹੋਣਗੇ। + active_distributors_not_ready_for_checkout_message_plural: >- + ਹੱਬ %{distributor_names} ਇੱਕ ਸਰਗਰਮ ਆਰਡਰ ਸਾਈਕਲ ਵਿੱਚ ਸੂਚੀਬੱਧ ਹਨ, ਪਰ ਇਸ ਵਿੱਚ ਵੈਧ + ਸ਼ਿਪਿੰਗ ਅਤੇ ਭੁਗਤਾਨ ਦੇ ਢੰਗ ਨਹੀਂ ਹਨ। ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਹਨਾਂ ਨੂੰ ਸੇਟ ਨਹੀਂ ਕਰਦੇ, ਗਾਹਕ + ਇਸ ਹੱਬ ਉਤੇ ਖਰੀਦਦਾਰੀ ਕਰਨ ਦੇ ਯੋਗ ਨਹੀਂ ਹੋਣਗੇ। + enterprise_fees_update_notice: ਤੁਹਾਡੀਆਂ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਫੀਸਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ। + enterprise_register_package_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਪੈਕੇਜ ਚੁਣੋ" + enterprise_register_error: "%{enterprise} ਲਈ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਪੂਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ" + enterprise_register_success_notice: "ਵਧਾਈਆਂ! %{enterprise} ਲਈ ਰਜਿਸਟ੍ਰੇਸ਼ਨ ਪੂਰਾ ਹੋ ਗਿਆ ਹੈ!" + enterprise_bulk_update_success_notice: "ਐਂਟਰਪ੍ਰਾਈਜ਼ਾਂ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ" + enterprise_bulk_update_error: 'ਅੱਪਡੇਟ ਅਸਫਲ''' amount: "ਰਕਮ" invoice_file: "ਫਾਇਲ" + state_names: + ready: ਤਿਆਰ js: + changes_saved: 'ਬਦਲਾਵਾਂ ਨੂੰ ਸੇਵ ਕੀਤਾ ਗਿਆ।' unsaved_changes: ਤੁਹਾਡੇ ਕੋਲ ਸੇਵ ਨਾ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ ਹਨ error: ਗਲਤੀ profile: ਪ੍ਰੋਫਾਈਲ + hub: ਹੱਬ shop: ਸ਼ਾਪ + resolve_errors: ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰੋ + more_items: "+ %{count} ਹੋਰ" + default_card_updated: ਡਿਫੌਲਟ ਕਾਰਡ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ + default_card_voids_auth: ਤੁਹਾਡੇ ਡਿਫੌਲਟ ਕਾਰਡ ਨੂੰ ਬਦਲਣ ਨਾਲ ਇਸ ਨੂੰ ਚਾਰਜ ਕਰਨ ਲਈ ਸ਼ਾਪਾਂ ਦੇ ਮੌਜੂਦਾ ਅਧਿਕਾਰ ਹਟਾ ਦਿੱਤੇ ਜਾਣਗੇ। ਤੁਸੀਂ ਡਿਫੌਲਟ ਕਾਰਡ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਤੋਂ ਬਾਅਦ ਸ਼ਾਪਾਂ ਨੂੰ ਮੁੜ-ਅਧਿਕਾਰਤ ਕਰ ਸਕਦੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਡਿਫੌਲਟ ਕਾਰਡ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ? + cart: + add_to_cart_failed: > + ਇਸ ਉਤਪਾਦ ਨੂੰ ਕਾਰਟ ਵਿੱਚ ਜੋੜਨ ਵਿੱਚ ਇੱਕ ਸਮੱਸਿਆ ਆਈ ਸੀ। ਸ਼ਾਇਦ ਇਹ ਅਣਉਪਲਬਧ ਹੋ ਗਿਆ + ਹੈ ਜਾਂ ਸ਼ਾਪ ਬੰਦ ਹੋ ਰਹੀ ਹੈ। admin: + unit_price_tooltip: "\"ਯੂਨਿਟ ਦੀ ਕੀਮਤ ਤੁਹਾਡੇ ਗਾਹਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਉਤਪਾਦਾਂ ਅਤੇ ਪੈਕੇਜਿੰਗ ਆਕਾਰਾਂ ਵਿਚਕਾਰ ਕੀਮਤਾਂ ਦੀ ਆਸਾਨੀ ਨਾਲ ਤੁਲਨਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਕੇ ਪਾਰਦਰਸ਼ਤਾ ਵਧਾਉਂਦੀ ਹੈ। ਧਿਆਨ ਦਿਓ, ਕਿ ਸ਼ਾਪਫ੍ਰੰਟ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੀ ਗਈ ਅੰਤਿਮ ਯੂਨਿਟ ਕੀਮਤ ਵੱਖਰੀ ਹੋ ਸਕਦੀ ਹੈ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਟੈਕਸ ਅਤੇ ਫੀਸਾਂ ਸ਼ਾਮਲ ਹਨ।\"" + enterprise_limit_reached: "ਤੁਸੀਂ ਪ੍ਰਤੀ ਖਾਤਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ਾਂ ਦੀ ਮਿਆਰੀ ਸੀਮਾ ਤੱਕ ਪਹੁੰਚ ਗਏ ਹੋ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਵਧਾਉਣ ਦੀ ਲੋੜ ਹੈ ਤਾਂ %{contact_email} ਨੂੰ ਲਿਖੋ।" + deleting_item_will_cancel_order: "ਇਸ ਕਾਰਵਾਈ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ ਖਾਲੀ ਆਰਡਰ ਹੋਣਗੇ, ਜੋ ਕਿ ਰੱਦ ਕਰ ਦਿੱਤੇ ਜਾਣਗੇ। ਕੀ ਤੁਸੀਂ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ?" modals: + got_it: "ਮਿਲ ਗਿਆ" + confirm: "ਪੁਸ਼ਟੀ ਕਰੋ" + close: "ਬੰਦ" + continue: "ਜਾਰੀ ਰੱਖੋ" cancel: "ਰੱਦ ਕਰੋ" + invite: "ਸੱਦਾ ਦਿਓ" + invite_title: "ਇੱਕ ਗੈਰ-ਰਜਿਸਟਰਡ ਉਪਭੋਗਤਾ ਨੂੰ ਸੱਦਾ ਦਿਓ" + tag_rule_help: + title: ਟੈਗ ਨਿਯਮ + overview: ਸੰਖੇਪ ਜਾਣਕਾਰੀ + overview_text: > + ਟੈਗ ਨਿਯਮ ਇਹ ਵਰਣਨ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਕਿ ਕਿਹੜੀਆਂ ਆਈਟਮਾਂ ਵਿਖਾਈ + ਦੇ ਰਹੀਆਂ ਹਨ ਜਾਂ ਕਿਹੜੇ ਗਾਹਕਾਂ ਨੂੰ ਵਿਖਾਈ ਦੇ ਰਹੀਆਂ ਹਨ। ਆਈਟਮਾਂ ਸ਼ਿਪਿੰਗ ਦੇ + ਢੰਗਾਂ, ਭੁਗਤਾਨ ਦੇ ਢੰਗ, ਉਤਪਾਦ ਅਤੇ ਆਰਡਰ ਸਾਈਕਲ ਹੋ ਸਕਦੀਆਂ ਹਨ। + by_default_rules: "'ਡਿਫੌਲਟ ਦੇ ਤੌਰ ਤੇ...' ਨਿਯਮ" + by_default_rules_text: > + ਡਿਫੌਲਟ ਨਿਯਮ ਤੁਹਾਨੂੰ ਆਈਟਮਾਂ ਨੂੰ ਲੁਕਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ ਤਾਂ ਜੋ ਉਹ ਡਿਫੌਲਟ + ਰੂਪ ਵਿੱਚ ਵਿਖਾਈ ਨਾ ਦੇਣ। ਇਸ ਵਿਵਹਾਰ ਨੂੰ ਫਿਰ ਖਾਸ ਟੈਗਾਂ ਵਾਲੇ ਗਾਹਕਾਂ ਲਈ ਗੈਰ-ਡਿਫੌਲਟ + ਨਿਯਮਾਂ ਦੁਆਰਾ ਓਵਰਰਾਈਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। + customer_tagged_rules: "'ਟੈਗ ਕੀਤੇ ਗਏ ਗਾਹਕ...' ਨਿਯਮ" + customer_tagged_rules_text: > + ਕਿਸੇ ਖਾਸ ਗਾਹਕ ਟੈਗ ਨਾਲ ਸੰਬੰਧਿਤ ਨਿਯਮ ਬਣਾ ਕੇ, ਤੁਸੀਂ ਖਾਸ ਟੈਗ ਵਾਲੇ ਗਾਹਕਾਂ + ਲਈ ਡਿਫੌਲਟ ਵਿਵਹਾਰ (ਭਾਵੇਂ ਇਹ ਚੀਜ਼ਾਂ ਵਿਖਾਉਣ ਲਈ ਜਾਂ ਲੁਕਾਉਣ ਲਈ ਹੋਣ) ਨੂੰ ਓਵਰਰਾਈਡ + ਕਰ ਸਕਦੇ ਹੋ। + terms_and_conditions_info: + title: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਅੱਪਲੋਡ ਹੋ ਰਹੀਆਂ ਹਨ" + message_1: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਤੁਹਾਡੇ, ਵਿਕਰੇਤਾ ਅਤੇ ਖਰੀਦਦਾਰ ਵਿਚਕਾਰ ਇਕਰਾਰਨਾਮੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਇੱਥੇ ਇੱਕ ਫਾਈਲ ਅਪਲੋਡ ਕਰਦੇ ਹੋ ਤਾਂ ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਚੈਕਆਉਟ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨਾ ਪਵੇਗਾ। ਖਰੀਦਦਾਰ ਲਈ ਇਹ ਚੈਕਆਉਟ ਤੇ ਇੱਕ ਚੈਕਬਾਕਸ ਦੇ ਰੂਪ ਵਿੱਚ ਵਿਖਾਈ ਦੇਵੇਗਾ ਜੋ ਕਿ ਚੈਕਆਉਟ ਦੇ ਨਾਲ ਅੱਗੇ ਵਧਣ ਲਈ ਜ਼ਰੂਰੀ ਹੋਵੇਗਾ। ਅਸੀਂ ਤੁਹਾਨੂੰ ਰਾਸ਼ਟਰੀ ਕਾਨੂੰਨ ਦੇ ਨਾਲ ਇਕਸਾਰਤਾ ਵਿੱਚ ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਅਪਲੋਡ ਕਰਨ ਦੀ ਜ਼ੋਰਦਾਰ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ।" + message_2: "ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਸਿਰਫ਼ ਇੱਕ ਵਾਰ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਹਾਲਾਂਕਿ ਜੇਕਰ ਤੁਸੀਂ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਨੂੰ ਬਦਲਦੇ ਹੋ ਤਾਂ ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਚੈਕਆਉਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਦੁਬਾਰਾ ਸਵੀਕਾਰ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।" + terms_and_conditions_warning: + title: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਅੱਪਲੋਡ ਹੋ ਰਹੀਆਂ ਹਨ" + message_1: "ਤੁਹਾਡੇ ਸਾਰੇ ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਚੈਕਆਉਟ ਵੇਲੇ ਇੱਕ ਵਾਰ ਉਹਨਾਂ ਨਾਲ ਸਹਿਮਤ ਹੋਣਾ ਪਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ ਫਾਈਲ ਨੂੰ ਅਪਡੇਟ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਸਾਰੇ ਖਰੀਦਦਾਰਾਂ ਨੂੰ ਚੈਕਆਉਟ ਵੇਲੇ ਉਹਨਾਂ ਨਾਲ ਦੁਬਾਰਾ ਸਹਿਮਤ ਹੋਣਾ ਪਵੇਗਾ।" + message_2: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਵਾਲੇ ਖਰੀਦਦਾਰਾਂ ਲਈ, ਤੁਹਾਨੂੰ ਉਹਨਾਂ ਨੂੰ ਹੁਣੇ ਵਾਸਤੇ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ (ਜਾਂ ਉਹਨਾਂ ਵਿੱਚ ਤਬਦੀਲੀਆਂ) ਵਾਲੀ ਇੱਕ ਈਮੇਲ ਭੇਜਣ ਦੀ ਲੋੜ ਹੈ, ਨਹੀਂ ਤਾਂ ਉਹਨਾਂ ਨੂੰ ਇਹਨਾਂ ਨਵੇਂ ਨਿਯਮਾਂ ਅਤੇ ਸ਼ਰਤਾਂ ਬਾਰੇ ਕੋਈ ਵੀ ਸੂਚਿਤ ਨਹੀਂ ਕਰੇਗਾ।" + business_address_info: + message: "ਕੰਪਨੀ ਦਾ ਕਾਨੂੰਨੀ ਨਾਂ, ਕਨੂੰਨੀ ਪਤਾ ਅਤੇ ਕਨੂੰਨੀ ਫੋਨ ਨੰਬਰ ਉਹਨਾਂ ਕਾਰੋਬਾਰਾਂ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ ਜੋ ਉਹਨਾਂ ਦੀ ਜਨਤਕ ਵਪਾਰਕ ਜਾਣਕਾਰੀ ਵਿੱਚ ਵੱਖ-ਵੱਖ ਵੇਰਵਿਆਂ ਦੇ ਨਾਲ ਰਜਿਸਟਰਡ ਇੱਕ ਕਾਨੂੰਨੀ ਸੰਸਥਾ ਤੋਂ ਇਨਵੋਇਸ ਬਣਾਉਂਦੇ ਹਨ। ਇਹ ਵੇਰਵੇ ਸਿਰਫ਼ ਇਨਵੌਇਸਾਂ ਲਈ ਵਰਤੇ ਜਾਣਗੇ। ਜੇਕਰ ਇਹ ਵੇਰਵੇ ਖਾਲੀ ਹਨ ਤਾਂ ਤੁਹਾਡਾ ਜਨਤਕ ਨਾਮ, ਪਤਾ, ਅਤੇ ਫ਼ੋਨ ਨੰਬਰ ਇਨਵੋਇਸ ਉਤੇ ਵਰਤੇ ਜਾਣਗੇ।" panels: + save: ਸੇਵ ਕਰੋ + saved: '"ਸੇਵ ਕੀਤਾ ਗਿਆ"' + saving: ਬਚਤ ਕਰ ਰਹੇ ਹਾਂ + enterprise_package: + hub_profile: ਹੱਬ ਪ੍ਰੋਫਾਈਲ + hub_profile_cost: "ਲਾਗਤ: ਹਮੇਸ਼ਾ ਮੁਫ਼ਤ" + hub_profile_text1: > + ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਤੇ ਲੋਕ ਤੁਹਾਨੂੰ ਲੱਭ ਅਤੇ ਸੰਪਰਕ ਕਰ ਸਕਦੇ ਹਨ। ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ + ਮੈਪ ਤੇ ਵਿਖਾਈ ਦੇਵੇਗਾ, ਅਤੇ ਸੂਚੀਆਂ ਵਿੱਚ ਖੋਜਣ ਯੋਗ ਹੋਵੇਗਾ। + hub_profile_text2: > + ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਹੋਣਾ, ਅਤੇ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਰਾਹੀਂ ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਪ੍ਰਣਾਲੀ + ਦੇ ਅੰਦਰ ਕਨੈਕਸ਼ਨ ਬਣਾਉਣਾ ਹਮੇਸ਼ਾ ਮੁਫ਼ਤ ਹੋਵੇਗਾ। + hub_shop: ਹੱਬ ਸ਼ਾਪ + hub_shop_text1: > + ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਪ੍ਰਣਾਲੀ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਤੁਸੀਂ + ਦੂਜਿਆਂ ਉਦਯੋਗਾਂ ਦੀ ਪੈਦਾਵਾਰ ਇਕੱਠੇ ਕਰਦੇ ਹੋ ਅਤੇ ਇਸਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ + ਆਪਣੀ ਸ਼ਾਪ ਰਾਹੀਂ ਵੇਚ ਸਕਦੇ ਹੋ। + hub_shop_text2: > + ਹੱਬ ਕਈ ਰੂਪ ਲੈ ਸਕਦੇ ਹਨ, ਭਾਵੇਂ ਉਹ ਭੋਜਨ ਸਹਿਕਾਰਤਾ, ਇੱਕ ਖਰੀਦ ਸਮੂਹ, ਇੱਕ ਸ਼ਾਕਾਹਾਰੀ-ਬਾਕਸ + ਪ੍ਰੋਗਰਾਮ, ਜਾਂ ਇੱਕ ਸਥਾਨਕ ਕਰਿਆਨੇ ਦੀ ਦੁਕਾਨ ਹੋਵੇ। + hub_shop_text3: > + ਜੇਕਰ ਤੁਸੀਂ ਵੀ ਆਪਣੇ ਖੁਦ ਦੇ ਉਤਪਾਦ ਵੇਚਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਉਤਪਾਦਕ + ਬਣਨ ਲਈ ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਨੂੰ ਬਦਲਣ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। + choose_package: ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਪੈਕੇਜ ਚੁਣੋ + choose_package_text1: > + ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਉਦੋਂ ਤੱਕ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਰਗਰਮ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦੋਂ ਤੱਕ ਖੱਬੇ + ਪਾਸੇ ਦੇ ਵਿਕਲਪਾਂ ਵਿੱਚੋਂ ਇੱਕ ਪੈਕੇਜ ਨਹੀਂ ਚੁਣਿਆ ਜਾਂਦਾ। + choose_package_text2: > + ਹਰੇਕ ਪੈਕੇਜ ਬਾਰੇ ਵਧੇਰੇ ਵਿਸਤ੍ਰਿਤ ਜਾਣਕਾਰੀ ਵੇਖਣ ਲਈ ਇੱਕ ਵਿਕਲਪ ਉਤੇ ਕਲਿੱਕ ਕਰੋ, + ਅਤੇ ਜਦੋਂ ਤੁਸੀਂ ਪੂਰਾ ਕਰ ਲੈਂਦੇ ਹੋ ਤਾਂ ਲਾਲ ਸੇਵ ਬਟਨ ਨੂੰ ਦਬਾਓ! + profile_only: ਸਿਰਫ਼ ਪ੍ਰੋਫਾਈਲ + profile_only_cost: "ਲਾਗਤ: ਹਮੇਸ਼ਾ ਮੁਫ਼ਤ" + profile_only_text1: > + ਇੱਕ ਪ੍ਰੋਫਾਈਲ ਤੁਹਾਨੂੰ ਦੂਜਿਆਂ ਲਈ ਦ੍ਰਿਸ਼ਮਾਨ ਅਤੇ ਸੰਪਰਕਯੋਗ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ + ਤੁਹਾਡੀ ਕਹਾਣੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਦਾ ਇੱਕ ਤਰੀਕਾ ਹੈ। + profile_only_text2: >+ + ਜੇਕਰ ਤੁਸੀਂ ਭੋਜਨ ਪੈਦਾ ਕਰਨ ਉਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਨਾ ਪਸੰਦ ਕਰਦੇ ਹੋ, ਅਤੇ ਇਸਨੂੰ + ਕਿਸੇ ਵੇਚਣ ਦਾ ਕੰਮ ਕੀਏ ਹੋਰ ਉਤੇ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ + ਤੇ ਸ਼ਾਪ ਦੀ ਲੋੜ ਨਹੀਂ ਪਵੇਗੀ। + + profile_only_text3: >+ + ਆਪਣੇ ਉਤਪਾਦਾਂ ਨੂੰ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ, ਹੱਬ ਨੂੰ ਉਹਨਾਂ ਦੇ ਸਟੋਰਾਂ + ਵਿੱਚ ਤੁਹਾਡੇ ਉਤਪਾਦਾਂ ਨੂੰ ਸਟਾਕ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋਏ। + + producer_shop: ਉਤਪਾਦਕ ਸ਼ਾਪ + producer_shop_text1: >+ + ਆਪਣੇ ਖੁਦ ਦੇ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਸ਼ਾਪਫਰੰਟ ਰਾਹੀਂ ਗਾਹਕਾਂ ਨੂੰ ਆਪਣੇ ਉਤਪਾਦ ਸਿੱਧੇ + ਤੌਰ ਤੇ ਵੇਚੋ। + + producer_shop_text2: >+ + ਇੱਕ ਉਤਪਾਦਕ ਸ਼ਾਪ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਉਤਪਾਦਾਂ ਲਈ ਹੈ, ਜੇਕਰ ਤੁਸੀਂ ਸਾਈਟ ਤੋਂ ਉਗਾਈ/ਉਤਪਾਦਿਤ + ਉਤਪਾਦ ਵੇਚਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਕਿਰਪਾ ਕਰਕੇ 'ਉਤਪਾਦਕ ਹੱਬ' ਨੂੰ ਚੁਣੋ। + + producer_hub: ਉਤਪਾਦਕ ਹੱਬ + producer_hub_text1: > + ਤੁਹਾਡਾ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਤੁਹਾਡੇ ਸਥਾਨਕ ਭੋਜਨ ਪ੍ਰਣਾਲੀ ਦੀ ਰੀੜ੍ਹ ਦੀ ਹੱਡੀ ਹੈ। ਤੁਸੀਂ + ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਆਪਣੇ ਸ਼ੌਪਫਰੰਟ ਰਾਹੀਂ ਆਪਣੀ ਖੁਦ ਦੀ ਪੈਦਾਵਾਰ ਦੇ ਨਾਲ-ਨਾਲ + ਦੂਜੇ ਉਦਯੋਗਾਂ ਤੋਂ ਇਕੱਠੀ ਕੀਤੀ ਉਪਜ ਵੀ ਵੇਚ ਸਕਦੇ ਹੋ। + producer_hub_text2: >+ + ਉਤਪਾਦਕ ਹੱਬ ਬਹੁਤ ਸਾਰੇ ਰੂਪ ਲੈ ਸਕਦੇ ਹਨ, ਭਾਵੇਂ ਉਹ CSA ਹੋਣ, ਸ਼ਾਕਾਹਾਰੀ-ਬਾਕਸ + ਪ੍ਰੋਗਰਾਮ, ਜਾਂ ਛੱਤ ਵਾਲੇ ਬਗੀਚੇ ਦੇ ਨਾਲ ਭੋਜਨ ਸਹਿਕਾਰਤਾ ਹੋਵੇ। + + producer_hub_text3: > + ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਦਾ ਉਦੇਸ਼ ਵੱਧ ਤੋਂ ਵੱਧ ਹੱਬ ਮਾਡਲਾਂ ਦਾ ਸਮਰਥਨ ਕਰਨਾ ਹੈ, ਇਸ + ਲਈ ਤੁਹਾਡੀ ਸਥਿਤੀ ਦਾ ਕੋਈ ਫਰਕ ਨਹੀਂ ਪੈਂਦਾ, ਅਸੀਂ ਤੁਹਾਡੇ ਸੰਗਠਨ ਜਾਂ ਸਥਾਨਕ ਭੋਜਨ + ਕਾਰੋਬਾਰ ਨੂੰ ਚਲਾਉਣ ਲਈ ਲੋੜੀਂਦੇ ਸਾਧਨ ਪ੍ਰਦਾਨ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। + get_listing: ਇੱਕ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰੋ + always_free: ਹਮੇਸ਼ਾ ਮੁਫ਼ਤ + sell_produce_others: ਦੂਜਿਆਂ ਦੇ ਉਤਪਾਦ ਵੇਚੋ + sell_own_produce: ਆਪਣੀ ਖੁਦ ਦੀ ਪੈਦਾਵਾਰ ਵੇਚੋ + sell_both: ਆਪਣੇ ਅਤੇ ਦੂਜਿਆਂ ਦੀ ਪੈਦਾਵਾਰ ਵੇਚੋ enterprise_producer: producer: ਉਤਪਾਦਕ + producer_text1: > + ਉਤਪਾਦਕ ਖਾਣ ਜਾਂ ਪੀਣ ਲਈ ਸੁਆਦੀ ਚੀਜ਼ਾਂ ਬਣਾਉਂਦੇ ਹਨ। ਤੁਸੀਂ ਇੱਕ ਉਤਪਾਦਕ ਹੋ ਜੇਕਰ + ਤੁਸੀਂ ਇਸਨੂੰ ਉਗਾਉਂਦੇ ਹੋ, ਇਸਨੂੰ ਪਾਲਦੇ ਹੋ, ਇਸਨੂੰ ਬਰਿਊ ਕਰਦੇ ਹੋ, ਇਸਨੂੰ ਬੇਕ + ਕਰਦੇ ਹੋ, ਇਸਨੂੰ ਖਮੀਰਦੇ ਹੋ, ਦੁੱਧ ਕੱਢਦੇ ਹੋ ਜਾਂ ਇਸਨੂੰ ਢਾਲਦੇ ਹੋ। + producer_text2: > + ਉਤਪਾਦਕ ਹੋਰ ਫੰਕਸ਼ਨ ਵੀ ਕਰ ਸਕਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਦੂਜੇ ਉਦਯੋਗਾਂ ਤੋਂ ਭੋਜਨ ਇਕੱਠਾ + ਕਰਨਾ ਅਤੇ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਉਤੇ ਸ਼ਾਪ ਰਾਹੀਂ ਇਸ ਨੂੰ ਵੇਚਣਾ। + non_producer: ਗੈਰ-ਉਤਪਾਦਕ + non_producer_text1: > + ਗੈਰ-ਉਤਪਾਦਕ ਖੁਦ ਕੋਈ ਭੋਜਨ ਪੈਦਾ ਨਹੀਂ ਕਰਦੇ ਹਨ, ਮਤਲਬ ਕਿ ਉਹ ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ + ਰਾਹੀਂ ਵਿਕਰੀ ਲਈ ਆਪਣੇ ਖੁਦ ਦੇ ਉਤਪਾਦ ਬਣਾ ਨਹੀਂ ਸਕਦੇ ਹਨ। + non_producer_text2: > + ਇਸ ਦੀ ਬਜਾਏ, ਗੈਰ-ਉਤਪਾਦਕ ਉਤਪਾਦਕਾਂ ਨੂੰ ਅੰਤਮ ਖਾਣ ਵਾਲੇ ਨਾਲ ਜੋੜਨ ਵਿੱਚ ਮੁਹਾਰਤ + ਰੱਖਦੇ ਹਨ, ਭਾਵੇਂ ਇਹ ਭੋਜਨ ਨੂੰ ਇਕੱਠਾ ਕਰਨ, ਗਰੇਡਿੰਗ, ਪੈਕਿੰਗ, ਵੇਚਣ ਜਾਂ ਡਿਲੀਵਰ + ਕਰਕੇ ਹੋਵੇ। + producer_desc: ਭੋਜਨ ਦੇ ਉਤਪਾਦਕ + producer_example: ਜਿਵੇਂ ਕਿ ਉਗਾਉਣ ਵਾਲੇ, ਬੇਕਰ, ਬਰੂਅਰ, ਮੇਕਰ + non_producer_desc: ਬਾਕੀ ਸਾਰੇ ਭੋਜਨ ਐਂਟਰਪ੍ਰਾਈਜ਼ + non_producer_example: ਜਿਵੇਂ ਕਿ ਕਰਿਆਨੇ ਦੀਆਂ ਦੁਕਾਨਾਂ, ਭੋਜਨ ਸਹਿਕਾਰਤਾ, ਖਰੀਦਣ ਵਾਲੇ ਸਮੂਹ enterprise_status: + status_title: "%{name} ਸੇਟਅੱਪ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਸਾਹਮਣੇ ਆਉਣ ਲਈ ਤਿਆਰ ਹੈ!" + severity: ਤੀਬਰਤਾ description: ਵਰਣਨ + resolve: ਸੰਕਲਪ + exchange_products: + load_more_variants: "ਹੋਰ ਵੇਰੀਐਂਟਸ ਲੋਡ ਕਰੋ" + load_all_variants: "ਸਾਰੇ ਵੇਰੀਐਂਟਸ ਲੋਡ ਕਰੋ" + select_all_variants: "ਸਾਰੇ %{total_number_of_variants} ਵੇਰੀਐਂਟ ਚੁਣੋ" + variants_loaded: "%{num_of_variants_loaded} of %{total_number_of_variants} ਵੇਰੀਐਂਟਸ ਲੋਡ ਕੀਤੇ ਗਏ" + loading_variants: "ਵੇਰੀਐਂਟ ਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" + no_variants: "ਇਸ ਉਤਪਾਦ ਲਈ ਕੋਈ ਵੇਰੀਐਂਟ ਉਪਲਬਧ ਨਹੀਂ ਹੈ (ਇਨਵੇਂਟਰੀ ਸੈਟਿੰਗਾਂ ਰਾਹੀਂ ਲੁਕਿਆ ਹੋਇਆ)।" + some_variants_hidden: "(ਕੁਝ ਵੇਰੀਐਂਟ ਇਨਵੇਂਟਰੀ ਸੈਟਿੰਗਾਂ ਰਾਹੀਂ ਲੁਕੇ ਹੋਏ ਹੋ ਸਕਦੇ ਹਨ)" + tag_rules: + shipping_method_tagged_top: "ਸ਼ਿਪਿੰਗ ਢੰਗ ਟੈਗ ਕੀਤੇ ਗਏ" + shipping_method_tagged_bottom: "ਹਨ:" + payment_method_tagged_top: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ ਟੈਗ ਕੀਤੇ ਗਏ" + payment_method_tagged_bottom: "ਹਨ:" + order_cycle_tagged_top: "ਟੈਗ ਕੀਤੇ ਆਰਡਰ ਸਾਈਕਲ" + order_cycle_tagged_bottom: "ਹਨ:" + inventory_tagged_top: "ਟੈਗ ਕੀਤੇ ਗਏ ਇਨਵੇਂਟਰੀ ਵੇਰੀਐਂਟ" + inventory_tagged_bottom: "ਹਨ:" + new_tag_rule_dialog: + select_rule_type: "ਇੱਕ ਨਿਯਮ ਕਿਸਮ ਚੁਣੋ:" + add_rule: "ਨਿਯਮ ਜੋੜੋ" + enterprise_fees: + inherit_from_product: "ਉਤਪਾਦ ਤੋਂ ਅਪਣਾਓ" + orders: + index: + per_page: "ਪ੍ਰਤੀ ਪੇਜ %{results}" + view_file: "ਫਾਇਲ ਵੇਖੋ" + compiling_invoices: "ਇਨਵੌਇਸ ਇਕੱਠੇ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ" + bulk_invoice_created: "ਥੋਕ ਇਨਵੌਇਸ ਬਣਾਇਆ ਗਿਆ" + bulk_invoice_failed: "ਥੋਕ ਇਨਵੌਇਸ ਬਣਾਉਣ ਵਿੱਚ ਅਸਫਲ" + please_wait: "ਇਸ ਮੋਡਲ ਨੂੰ ਬੰਦ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕਿਰਪਾ ਕਰਕੇ ਪੀਡੀਐਫ ਦੇ ਤਿਆਰ ਹੋਣ ਤੱਕ ਉਡੀਕ ਕਰੋ।" + order_state: + address: "ਪਤਾ" + adjustments: "ਸਮਾਯੋਜਨ" + awaiting_return: "ਵਾਪਸੀ ਦੀ ਉਡੀਕ" + canceled: "ਰੱਦ ਕੀਤਾ ਗਿਆ" + cart: "ਕਾਰਟ" + complete: "ਪੂਰਾ" + confirm: "ਪੁਸ਼ਟੀ ਕਰੋ" + delivery: "ਡਿਲਿਵਰੀ" + paused: "ਵਿਰਾਮ ਕੀਤਾ" + payment: "ਭੁਗਤਾਨ" + pending: "ਲੰਬਿਤ" + resumed: "ਮੁੜ ਸ਼ੁਰੂ ਕੀਤਾ" + returned: "ਵਾਪਸ ਪਰਤਿਆ" + confirmation: "ਪੁਸ਼ਟੀ" + shipment_states: + backorder: "ਬੈਕ ਆਰਡਰ" + partial: "ਅੰਸ਼ਕ" + pending: "ਲੰਬਿਤ" + ready: "ਤਿਆਰ" + shipped: "ਭੇਜਿਆ ਗਿਆ" + canceled: "ਰੱਦ ਕੀਤਾ ਗਿਆ" + payment_states: + balance_due: "ਬਕਾਇਆ ਰਕਮ" + completed: "ਮੁਕੰਮਲ ਕੀਤਾ" + checkout: "ਚੈਕਆਊਟ" + credit_owed: "ਬਕਾਇਆ ਕਰਜ਼ਾ" + failed: "ਅਸਫ਼ਲ" + paid: "ਭੁਗਤਾਨ ਕੀਤਾ ਗਿਆ" + pending: "ਲੰਬਿਤ" + requires_authorization: "ਅਧਿਕਾਰ ਦੀ ਲੋੜ ਹੈ" + processing: "ਸੰਸਾਧਨ" + void: "ਖਾਲੀ" + invalid: "ਅਵੈਧ" + quantity_unavailable: "ਨਾਕਾਫ਼ੀ ਸਟਾਕ ਉਪਲਬਧ ਹੈ। ਲਾਈਨ ਆਈਟਮ ਸੇਵ ਨਹੀਂ ਕੀਤੀ ਗਈ!" + quantity_unchanged: "ਪਿਛਲੀ ਰਕਮ ਤੋਂ ਮਾਤਰਾ ਵਿੱਚ ਕੋਈ ਬਦਲਾਅ ਨਹੀਂ ਕੀਤਾ ਗਿਆ।" + cancel_the_order_html: "ਇਹ ਮੌਜੂਦਾ ਆਰਡਰ ਨੂੰ ਰੱਦ ਕਰ ਦੇਵੇਗਾ।
ਕੀ ਤੁਸੀਂ ਵਾਕਈ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ?" + cancel_the_order_send_cancelation_email: "ਗਾਹਕ ਨੂੰ ਇੱਕ ਰੱਦ ਕਰਨ ਵਾਲੀ ਈਮੇਲ ਭੇਜੋ" + restock_item: "ਆਈਟਮਾਂ ਨੂੰ ਮੁੜ ਸਟਾਕ ਕਰੋ: ਇਸ ਆਈਟਮ ਨੂੰ ਸਟਾਕ ਵਿੱਚ ਵਾਪਸ ਕਰੋ" + restock_items: "ਆਈਟਮਾਂ ਨੂੰ ਮੁੜ ਸਟਾਕ ਕਰੋ: ਸਾਰੀਆਂ ਆਈਟਮਾਂ ਨੂੰ ਸਟਾਕ ਵਿੱਚ ਵਾਪਸ ਕਰੋ" + resend_user_email_confirmation: + resend: "ਦੁਬਾਰਾ ਭੇਜੋ" + sending: "ਦੁਬਾਰਾ ਭੇਜੋ" + done: "ਮੁੜ ਭੇਜਣਾ ਸਫਲ ਗਿਆ ✓" + failed: "ਮੁੜ ਭੇਜਣਾ ਅਸਫਲ ਗਿਆ ✓" order_cycles: schedules: + adding_a_new_schedule: "ਇੱਕ ਨਵਾਂ ਸ਼ਡਿਊਲ ਜੋੜ ਰਹੇ ਹਾਂ" + updating_a_schedule: "ਇੱਕ ਸ਼ਡਿਊਲ ਨੂੰ ਅੱਪਡੇਟ ਕਰ ਰਹੇ ਹਾਂ" + create_schedule: "ਸ਼ਡਿਊਲ ਬਣਾਓ" + update_schedule: "ਸ਼ਡਿਊਲ ਅਪਡੇਟ ਕਰੋ" + delete_schedule: "ਸ਼ਡਿਊਲ ਹਟਾਓ" + schedule_name_placeholder: "ਸ਼ਡਿਊਲ ਦਾ ਨਾਂ" + created_schedule: "ਸ਼ਡਿਊਲ ਬਣਾਇਆ ਗਿਆ" + updated_schedule: "ਸ਼ਡਿਊਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ" + deleted_schedule: "ਹਟਾਇਆ ਗਿਆ ਸ਼ਡਿਊਲ" + name_required_error: "ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਸ਼ਡਿਊਲ ਲਈ ਇੱਕ ਨਾਂ ਦਰਜ ਕਰੋ" + no_order_cycles_error: "ਕਿਰਪਾ ਕਰਕੇ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਆਰਡਰ ਸਾਈਕਲ ਚੁਣੋ (ਡਰੈਗ ਐਂਡ ਡ੍ਰੌਪ)" available: "ਉਪਲੱਬਧ" + selected: "ਚੁਣਿਆ ਗਿਆ" + customers: + index: + add_customer: "ਗਾਹਕ ਜੋੜੋ" + add_a_new_customer_for: "%{shop_name} ਲਈ ਨਵਾਂ ਗਾਹਕ ਜੋੜੋ" + customer_placeholder: "customer@example.org" + valid_email_error: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਵੈਧ ਈਮੇਲ ਪਤਾ ਭਰੋ" + subscriptions: + error_saving: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਸੇਵ ਕਰਨ ਵਿੱਚ ਗਲਤੀ" + new: + please_select_a_shop: "ਕਿਰਪਾ ਕਰਕੇ ਇੱਕ ਸ਼ਾਪ ਚੁਣੋ" + enterprises: + form: + images: + removed_logo_successfully: "ਲੋਗੋ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਇਆ ਗਿਆ" + immediate_logo_removal_warning: "ਤੁਹਾਡੇ ਵੱਲੋਂ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਬਾਅਦ ਲੋਗੋ ਤੁਰੰਤ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।" + removed_promo_image_successfully: "ਪ੍ਰੋਮੋ ਦੀ ਫੋਟੋ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਇਆ ਗਿਆ" + immediate_promo_image_removal_warning: "ਤੁਹਾਡੇ ਵੱਲੋਂ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਬਾਅਦ ਪ੍ਰੋਮੋ ਫੋਟੋ ਨੂੰ ਤੁਰੰਤ ਹਟਾ ਦਿੱਤਾ ਜਾਵੇਗਾ।" + immediate_terms_and_conditions_removal_warning: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਦੀ ਫਾਈਲ ਤੁਹਾਡੇ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਹਟਾ ਦਿੱਤੀ ਜਾਵੇਗੀ।" + removed_terms_and_conditions_successfully: "ਨਿਯਮ ਅਤੇ ਸ਼ਰਤਾਂ ਦੀ ਫਾਈਲ ਸਫਲਤਾਪੂਰਵਕ ਹਟਾਈ ਗਈ" + insufficient_stock: "ਨਾਕਾਫ਼ੀ ਸਟਾਕ ਉਪਲਬਧ ਹੈ, ਸਿਰਫ਼ %{on_hand} ਬਾਕੀ" + out_of_stock: + reduced_stock_available: ਘੱਟ ਸਟਾਕ ਉਪਲਬਧ ਹੈ + out_of_stock_text: > + ਜਦੋਂ ਤੁਸੀਂ ਖਰੀਦਦਾਰੀ ਕਰ ਰਹੇ ਹੁੰਦੇ ਹੋ, ਤੁਹਾਡੇ ਕਾਰਟ ਵਿੱਚ ਇੱਕ ਜਾਂ ਇੱਕ ਤੋਂ ਵੱਧ + ਉਤਪਾਦਾਂ ਦੇ ਸਟਾਕ ਦੇ ਪੱਧਰ ਘਟ ਗਏ ਹਨ। ਇੱਥੇ ਕੀ ਬਦਲਿਆ ਹੈ. ਉਹ ਵਿਖਾਇਆ ਗਿਆ ਹੈ: + now_out_of_stock: ਹੁਣ ਸਟਾਕ ਤੋਂ ਬਾਹਰ ਹੈ। + only_n_remainging: "ਹੁਣ ਸਿਰਫ਼ %{num} ਬਾਕੀ ਹਨ।" shopfront: variant: add_to_cart: "ਜੋੜੋ" + in_cart: "ਕਾਰਟ ਵਿੱਚ" + quantity_in_cart: "%{quantity} ਕਾਰਟ ਵਿੱਚ" + remaining_in_stock: "ਸਿਰਫ %{quantity} ਬਾਕੀ" + bulk_buy_modal: + min_quantity: "ਨਿਊਨਤਮ ਮਾਤਰਾ" + max_quantity: "ਅਧਿਕਤਮ ਮਾਤਰਾ" + variants: + on_demand: + 'yes': "ਡਿਮਾਂਡ ਤੇ" variant_overrides: on_demand: 'yes': "ਹਾਂ" 'no': "ਨਹੀਂ" + services: + save: ਸੇਵ ਕਰੋ enterprises: producer: "ਉਤਪਾਦਕ" + subscriptions: + closed: ਬੰਦ ਕੀਤਾ ਹੋਇਆ + spree: + users: + order: "ਆਰਡਰ" + registration: + welcome_to_ofn: "ਓਪਨ ਫੂਡ ਨੈਟਵਰਕ ਵਿੱਚ ਤੁਹਾਡਾ ਸੁਆਗਤ ਹੈ!" order_management: reports: enterprise_fee_summaries: @@ -927,49 +3297,87 @@ pa: none: "ਕੋਈ ਨਹੀਂ" enterprise_fee_summary: fee_calculated_on_transfer_through_all: "ਸਾਰੇ" + fee_placements: + supplier: "ਅੰਦਰ ਆਉਣ ਵਾਲੇ" + distributor: "ਬਾਹਰ ਜਾਣ ਵਾਲੇ" + coordinator: "ਕੋਆਰਡੀਨੇਟਰ" formats: csv: header: fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + fee_name: "ਫ਼ੀਸ ਦਾ ਨਾਮ" customer_name: "ਗਾਹਕ" tax_category_name: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" html: header: fee_type: "ਫੀਸ ਦੀ ਕਿਸਮ" + fee_name: "ਫ਼ੀਸ ਦਾ ਨਾਮ" customer_name: "ਗਾਹਕ" tax_category_name: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" report: none: "ਕੋਈ ਨਹੀਂ" + order: "ਆਰਡਰ" + credit_owed: "ਬਕਾਇਆ ਕਰਜ਼ਾ" payment: "ਭੁਗਤਾਨ" payment_method: "ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ" category: "ਸ਼੍ਰੇਣੀ" import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" + delivery: "ਡਿਲਿਵਰੀ" + administration: "ਪ੍ਰਸ਼ਾਸਨ" + account: "ਖਾਤਾ" + logout: "ਲਾਗਆਊਟ" + previous: "ਪਿਛਲਾ" spree: all: "ਸਾਰੇ" + card_number: "ਕਾਰਡ ਨੰਬਰ" category: "ਸ਼੍ਰੇਣੀ" + credit: "ਕ੍ਰੈਡਿਟ" more: "ਹੋਰ" no_pending_payments: "ਕੋਈ ਬਕਾਇਆ ਭੁਗਤਾਨ ਨਹੀਂ ਹੈ" none: "ਕੋਈ ਨਹੀਂ" + not_found: "ਨਹੀਂ ਲਭਿਆ" + refund: "ਰਿਫੰਡ" + updating: "ਅੱਪਡੇਟ ਹੋ ਰਿਹਾ ਹੈ" + resend: "ਦੁਬਾਰਾ ਭੇਜੋ" quantity: "ਮਾਤਰਾ" on_demand: "ਡਿਮਾਂਡ ਤੇ" on_hand: "ਹੱਥ ਵਿਚ" - price: "\"ਕੀਮਤ\"" + price: "ਕੀਮਤ" + total: "ਕੁੱਲ" edit: "ਸੰਪਾਦਿਤ ਕਰੋ" delete: "ਹਟਾਓ" + account: "ਖਾਤਾ" billing_address: "ਬਿਲਿੰਗ ਪਤਾ" shipping_address: "ਸ਼ਿਪਿੰਗ ਪਤਾ" first_name: "ਪਹਿਲਾ ਨਾਂ" last_name: "ਆਖਰੀ ਨਾਂ" + city: "ਸ਼ਹਿਰ" + country: "ਦੇਸ਼" state: "ਸਥਿਤੀ" phone: "ਫੋਨ" update: "ਅੱਪਡੇਟ" + continue: "ਜਾਰੀ ਰੱਖੋ" credit_card: "ਕਰੇਡਿਟ ਕਾਰਡ" + login: "ਲਾਗਇਨ" password: "ਪਾਸਵਰਡ" + general_settings: "ਆਮ ਸੈਟਿੰਗਾਂ" + tax_categories: "ਟੈਕਸ ਸ਼੍ਰੇਣੀਆਂ" + tax rate: "ਟੈਕਸ ਦੀਆਂ ਦਰਾਂ" tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + tax_rates: "ਟੈਕਸ ਦੀਆਂ ਦਰਾਂ" + rate: "ਦਰ" + tax_settings: "ਟੈਕਸ ਸੈਟਿੰਗਾਂ" + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" + shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" shipping_method: "ਸ਼ਿਪਿੰਗ ਦਾ ਤਰੀਕਾ" payment: "ਭੁਗਤਾਨ" + status: "ਸਥਿਤੀ" + shipping_categories: "ਸ਼ਿਪਿੰਗ ਸ਼੍ਰੇਣੀਆਂ" name: "ਨਾਮ" description: "ਵਰਣਨ" + type: "ਕਿਸਮ" + calculator: "ਕੈਲਕੁਲੇਟਰ" + display: "ਡਿਸਪਲੇ" active: "ਸਕ੍ਰਿਅ" nore: "ਹੋਰ" create: "ਬਣਾਓ" @@ -977,7 +3385,11 @@ pa: email: ਈਮੇਲ date: "ਮਿਤੀ" inventory: ਇਨਵੇਂਟਰੀ + zipcode: ਪਿੰਨ ਕੋਡ + successfully_created: '%{resource} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਬਣਾਇਆ ਗਿਆ ਹੈ!' + successfully_updated: '%{resource} ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ!''' payment_method: "ਭੁਗਤਾਨ ਦਾ ਤਰੀਕਾ" + payment_processing_failed: "ਭੁਗਤਾਨ ਸੰਸਾਧਿਤ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਿਆ, ਕਿਰਪਾ ਕਰਕੇ ਤੁਹਾਡੇ ਦੁਆਰਾ ਦਰਜ ਕੀਤੇ ਵੇਰਵਿਆਂ ਦੀ ਜਾਂਚ ਕਰੋ" sku: "SKU" actions: update: "ਅੱਪਡੇਟ" @@ -991,32 +3403,50 @@ pa: messages: blank: "ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ" admin: + unit_price_tooltip: "\"ਯੂਨਿਟ ਦੀ ਕੀਮਤ ਤੁਹਾਡੇ ਗਾਹਕਾਂ ਨੂੰ ਵੱਖ-ਵੱਖ ਉਤਪਾਦਾਂ ਅਤੇ ਪੈਕੇਜਿੰਗ ਆਕਾਰਾਂ ਵਿਚਕਾਰ ਕੀਮਤਾਂ ਦੀ ਆਸਾਨੀ ਨਾਲ ਤੁਲਨਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਕੇ ਪਾਰਦਰਸ਼ਤਾ ਵਧਾਉਂਦੀ ਹੈ। ਧਿਆਨ ਦਿਓ, ਕਿ ਸ਼ਾਪਫ੍ਰੰਟ ਵਿੱਚ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੀ ਗਈ ਅੰਤਿਮ ਯੂਨਿਟ ਕੀਮਤ ਵੱਖਰੀ ਹੋ ਸਕਦੀ ਹੈ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਟੈਕਸ ਅਤੇ ਫੀਸਾਂ ਸ਼ਾਮਲ ਹਨ।\"" subscriptions: number: "ਨੰਬਰ" tab: dashboard: "ਡੈਸ਼ਬੋਰਡ" + orders: "ਆਰਡਰ" bulk_order_management: "ਥੋਕ ਆਰਡਰ ਪ੍ਰਬੰਧਨ" + subscriptions: "ਸਬਸਕ੍ਰਿਪਸ਼ਨ" products: "ਉਤਪਾਦ" + properties: "ਪ੍ਰਾਪਰਟੀਜ਼" variant_overrides: "ਇਨਵੇਂਟਰੀ" reports: "ਰਿਪੋਰਟਾਂ" + users: "ਉਪਭੋਗਤਾ" + roles: "ਭੂਮਿਕਾਵਾਂ" order_cycles: "ਆਰਡਰ ਸਾਈਕਲ" enterprises: "ਐਂਟਰਪ੍ਰਾਈਜ਼" + customers: "ਗਾਹਕ" groups: "ਸਮੂਹ" + oidc_settings: "OIDC ਸੈਟਿੰਗਾਂ" properties: index: + properties: "ਪ੍ਰਾਪਰਟੀਜ਼" name: "ਨਾਮ" form: name: "ਨਾਮ" return_authorizations: index: + status: "ਸਥਿਤੀ" amount: "ਰਕਮ" + continue: "ਜਾਰੀ ਰੱਖੋ" + new: + continue: "ਜਾਰੀ ਰੱਖੋ" + edit: + are_you_sure: "ਕੀ ਤੁਹਾਨੂੰ ਯਕੀਨ ਹੈ?" form: product: "ਉਤਪਾਦ" amount: "ਰਕਮ" orders: index: + new_order: "ਨਵਾਂ ਆਰਡਰ" ship: "ਸ਼ਿਪ" edit: "ਸੰਪਾਦਿਤ ਕਰੋ" + previous: "ਪਿਛਲਾ" + next: "ਅਗਲਾ" resend_confirmation: "ਪੁਸ਼ਟੀ ਮੁੜ ਭੇਜੋ" sortable_header: payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" @@ -1026,9 +3456,15 @@ pa: state: "ਸਥਿਤੀ" email: "ਗਾਹਕ ਦਾ ਈਮੇਲ" invoice: + tax_invoice: "ਟੈਕਸ ਇਨਵੌਇਸ" + code: "ਕੋਡ" shipping: "ਸ਼ਿਪਿੰਗ" payments_list: + payment_method: "ਭੁਗਤਾਨੇ ਦੇ ਢੰਗ" amount: "ਰਕਮ" + note: + note_label: "ਨੋਟ:" + no_note_present: "ਕੋਈ ਨੋਟ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।" form: distribution_fields: title: "ਵਿਤਰਣ" @@ -1037,58 +3473,98 @@ pa: order_cycles: "ਆਰਡਰ ਸਾਈਕਲ" shipping_methods: index: + shipping_methods: "ਸ਼ਿਪਿੰਗ ਦੇ ਢੰਗ" name: "ਨਾਮ" + products_distributor: "ਵਿਤਰਕ" + calculator: "ਕੈਲਕੁਲੇਟਰ" + display: "ਡਿਸਪਲੇ" + back_end: "ਸਿਰਫ ਬੈਕ ਆਫਿਸ" form: categories: "ਸ਼੍ਰੇਣੀਆਂ" tax_category: "ਟੈਕਸ ਸ਼੍ਰੇਣੀ" + back_end: "ਸਿਰਫ ਬੈਕ ਆਫਿਸ" payment_methods: index: + payment_methods: "ਭੁਗਤਾਨ ਦੇ ਢੰਗ" name: "ਨਾਮ" + products_distributor: "ਵਿਤਰਕ" + display: "ਡਿਸਪਲੇ" active: "ਸਕ੍ਰਿਅ" + back_end: "ਸਿਰਫ ਬੈਕ ਆਫਿਸ" active_yes: "ਹਾਂ" active_no: "ਨਹੀਂ" stripe_connect: enterprise_select_placeholder: ਚੁਣੋ... + account_missing_msg: ਇਸ ਐਂਟਰਪ੍ਰਾਈਜ਼ ਲਈ ਕੋਈ ਸਟ੍ਰਾਈਪ ਖਾਤਾ ਨਹੀਂ ਹੈ। + status: ਸਥਿਤੀ + account_id: ਖਾਤਾ ਆਈ.ਡੀ + business_name: ਕਾਰੋਬਾਰ ਦਾ ਨਾਮ + charges_enabled: ਚਾਰਜ ਸਮਰੱਥ ਕੀਤੇ ਗਏ form: name: "ਨਾਮ" description: "ਵਰਣਨ" + display: "ਡਿਸਪਲੇ" active: "ਸਕ੍ਰਿਅ" active_yes: "ਹਾਂ" active_no: "ਨਹੀਂ" + back_end: "ਸਿਰਫ ਬੈਕ ਆਫਿਸ" tags: "ਟੈਗ" products: new: supplier: "ਸਪਲਾਇਰ" product_name: "\"ਉਤਪਾਦ ਦਾ ਨਾਂ\"" - price: "\"ਕੀਮਤ\"" + units: "ਯੂਨਿਟ ਸਾਈਜ਼" + value: "ਵਲਯੂ" + unit_name: "ਯੂਨਿਟ ਦਾ ਨਾਮ" + price: "ਕੀਮਤ" on_hand: "ਹੱਥ ਵਿਚ" on_demand: "ਡਿਮਾਂਡ ਤੇ" + product_description: "ਉਤਪਾਦ ਵਰਣਨ" image: "ਤਸਵੀਰ" + unit_name_placeholder: 'ਜਿਵੇਂ ਕਿ ਗੁੱਛੇ''' index: + header: + title: ਥੋਕ ਸੰਪਾਦਿਤ ਉਤਪਾਦ products_head: name: ਨਾਮ unit: ਯੂਨਿਟ + display_as: ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ category: ਸ਼੍ਰੇਣੀ tax_category: ਟੈਕਸ ਸ਼੍ਰੇਣੀ inherits_properties?: ਪ੍ਰਾਪਰਟੀਜ਼ ਅਪਣਾਉਂਦੇ ਹਨ? + av_on: "ਏਵੀ. ਆਨ" import_date: "ਇਮਪੋਰਟ ਮਿਤੀ" product_name: '"ਉਤਪਾਦ ਦਾ ਨਾਂ"' primary_taxon_form: product_category: ਉਤਪਾਦ ਸ਼੍ਰੇਣੀ + display_as: + display_as: ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ + reports: + table: + select_and_search: "ਫਿਲਟਰ ਚੁਣੋ ਅਤੇ ਆਪਣੇ ਡੇਟਾ ਤੱਕ ਪਹੁੰਚਣ ਲਈ %{option} ਤੇ ਕਲਿੱਕ ਕਰੋ।" users: index: + enterprise_limit: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੀਮਾ" + search: "ਖੋਜੋ" email: "ਈਮੇਲ" + edit: + general_settings: "ਆਮ ਸੈਟਿੰਗਾਂ" form: email: "ਈਮੇਲ" + roles: "ਭੂਮਿਕਾਵਾਂ" + enterprise_limit: "ਐਂਟਰਪ੍ਰਾਈਜ਼ ਸੀਮਾ" password: "ਪਾਸਵਰਡ" variants: index: sku: "SKU" - price: "\"ਕੀਮਤ\"" + price: "ਕੀਮਤ" + and: "ਅਤੇ" form: sku: "SKU" - price: "\"ਕੀਮਤ\"" + price: "ਕੀਮਤ" + display_as: "ਇਸ ਤਰ੍ਹਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ" autocomplete: + out_of_stock: "ਸਟਾਕ ਵਿੱਚ ਨਹੀਂ ਹੈਂ" producer_name: "ਉਤਪਾਦਕ" unit: "ਯੂਨਿਟ" shared: @@ -1102,25 +3578,193 @@ pa: payment_state: "ਭੁਗਤਾਨ ਸਥਿਤੀ" shipment_state: "ਸ਼ਿਪਮੈਂਟ ਦੀ ਸਥਿਤੀ" email: "ਈਮੇਲ" + total: "ਕੁੱਲ" billing_address_name: "ਨਾਮ" + date_picker: + close: "ਬੰਦ" + orders: + line_item: + insufficient_stock: "ਨਾਕਾਫ਼ੀ ਸਟਾਕ ਉਪਲਬਧ ਹੈ, ਸਿਰਫ਼ %{on_hand} ਬਾਕੀ" + out_of_stock: "ਸਟਾਕ ਵਿੱਚ ਨਹੀਂ ਹੈਂ" + shipment_states: + backorder: ਬੈਕ ਆਰਡਰ + partial: ਅੰਸ਼ਕ + pending: ਲੰਬਿਤ + ready: ਤਿਆਰ + shipped: ਭੇਜਿਆ ਗਿਆ + payment_states: + balance_due: ਬਕਾਇਆ ਰਕਮ + completed: ਮੁਕੰਮਲ ਕੀਤਾ + checkout: ਚੈਕਆਊਟ + credit_owed: ਬਕਾਇਆ ਕਰਜ਼ਾ + failed: ਅਸਫ਼ਲ + paid: ਭੁਗਤਾਨ ਕੀਤਾ ਗਿਆ + pending: ਲੰਬਿਤ + processing: ਸੰਸਾਧਨ + requires_authorization: "ਅਧਿਕਾਰ ਦੀ ਲੋੜ ਹੈ" + void: ਖਾਲੀ + invalid: ਅਵੈਧ + order_mailer: + confirm_email: + subject: "ਆਰਡਰ ਦੀ ਪੁਸ਼ਟੀ" + user_mailer: + confirmation_instructions: + subject: "ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ OFN ਖਾਤੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" + payment_mailer: + authorize_payment: + subject: "ਕਿਰਪਾ ਕਰਕੇ OFN ਤੇ %{distributor} ਨੂੰ ਆਪਣਾ ਭੁਗਤਾਨ ਅਧਿਕਾਰਤ ਕਰੋ" + instructions: "%{distributor} ਨੂੰ %{amount} ਦੇ ਤੁਹਾਡੇ ਭੁਗਤਾਨ ਲਈ ਵਾਧੂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਭੁਗਤਾਨ ਨੂੰ ਅਧਿਕਾਰਤ ਕਰਨ ਲਈ ਹੇਠਾਂ ਦਿੱਤੇ URL ਉਤੇ ਜਾਓ:" + authorization_required: + subject: "ਭੁਗਤਾਨ ਲਈ ਗਾਹਕ ਤੋਂ ਅਧਿਕਾਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ" + message: "ਆਰਡਰ %{order_number} ਦੇ ਭੁਗਤਾਨ ਲਈ ਗਾਹਕ ਤੋਂ ਵਾਧੂ ਅਧਿਕਾਰ ਦੀ ਲੋੜ ਹੈ। ਗਾਹਕ ਨੂੰ ਈਮੇਲ ਰਾਹੀਂ ਸੂਚਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਜਦੋਂ ਤੱਕ ਇਹ ਅਧਿਕਾਰਤ ਨਹੀਂ ਹੋ ਜਾਂਦਾ, ਭੁਗਤਾਨ ਬਕਾਏ ਵਜੋਂ ਵਿਖਾਈ ਦੇਵੇਗਾ।" shipment_mailer: shipped_email: dear_customer: "ਪਿਆਰੇ ਗਾਹਕ," + instructions: "%{distributor} ਤੋਂ ਤੁਹਾਡਾ ਆਰਡਰ ਭੇਜ ਦਿੱਤਾ ਗਿਆ ਹੈ" shipment_summary: "ਸ਼ਿਪਮੈਂਟ ਸੰਖੇਪ" subject: "ਸ਼ਿਪਮੈਂਟ ਬਾਰੇ ਸੂਚਨਾ" thanks: "ਤੁਹਾਡੇ ਕਾਰੋਬਾਰ ਦੇਣ ਲਈ ਧੰਨਵਾਦ।" track_information: "ਟਰੈਕਿੰਗ ਜਾਣਕਾਰੀ: %{tracking}" track_link: "ਟਰੈਕਿੰਗ ਲਿੰਕ: %{url}" + picked_up_instructions: "%{distributor} ਤੋਂ ਤੁਹਾਡਾ ਆਰਡਰ ਪਿਕ-ਅੱਪ ਕਰ ਲਿਆ ਗਿਆ ਹੈ" + picked_up_subject: "ਪਿਕ ਅੱਪ ਨੋਟੀਫਿਕੇਸ਼ਨ" + test_mailer: + test_email: + greeting: "ਵਧਾਈਆਂ!" + message: "ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਹ ਈਮੇਲ ਪ੍ਰਾਪਤ ਹੋਈ ਹੈ, ਤਾਂ ਤੁਹਾਡੀ ਈਮੇਲ ਸੈਟਿੰਗਾਂ ਸਹੀ ਹਨ।" + subject: "ਟੈਸਟ ਮੇਲ" + order_state: + address: ਪਤਾ + adjustments: ਸਮਾਯੋਜਨ + awaiting_return: ਵਾਪਸੀ ਦੀ ਉਡੀਕ + canceled: ਰੱਦ ਕੀਤਾ ਗਿਆ + cart: ਕਾਰਟ + confirmation: "ਪੁਸ਼ਟੀ" + complete: ਪੂਰਾ + confirm: ਪੁਸ਼ਟੀ ਕਰੋ + delivery: ਡਿਲਿਵਰੀ + paused: ਵਿਰਾਮ ਕੀਤਾ + payment: ਭੁਗਤਾਨ + pending: ਲੰਬਿਤ + resumed: ਮੁੜ ਸ਼ੁਰੂ ਕੀਤਾ + returned: ਵਾਪਸ ਪਰਤਿਆ + subscription_state: + active: ਸਕ੍ਰਿਅ + pending: ਲੰਬਿਤ + ended: ਖਤਮ ਹੋ ਗਿਆ + paused: ਵਿਰਾਮ ਕੀਤਾ + canceled: ਰੱਦ ਕੀਤਾ ਗਿਆ paypal: + already_refunded: "ਇਹ ਭੁਗਤਾਨ ਵਾਪਸ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਸ ਤੇ ਕੋਈ ਹੋਰ ਕਾਰਵਾਈ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ।" + no_payment_via_admin_backend: "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਐਡਮਿਨ ਬੈਕਐਂਡ ਦੁਆਰਾ ਪੇਪਾਲ ਖਾਤਿਆਂ ਤੋਂ ਚਾਰਜ ਨਹੀਂ ਲੈ ਸਕਦੇ ਹੋ।" + transaction: "ਪੇਪਾਲ ਲੈਣ-ਦੇਣ" + payer_id: "ਭੁਗਤਾਨਕਰਤਾ ਆਈਡੀ" + transaction_id: "\"ਲੈਣ-ਦੇਣ ਆਈਡੀ\"" + token: "ਟੋਕਨ" + refund: "ਰਿਫੰਡ" refund_amount: "ਰਕਮ" + original_amount: "ਅਸਲ ਰਕਮ: %{amount}" + refund_successful: "ਪੇਪਾਲ ਰਿਫੰਡ ਸਫਲ" + refund_unsuccessful: "ਪੇਪਾਲ ਰਿਫੰਡ ਅਸਫਲ" + actions: + refund: "ਰਿਫੰਡ" + flash: + cancel: "ਪੇਪਾਲ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਨਾ ਚਾਹੁੰਦੇ? ਕੋਈ ਸਮੱਸਿਆ ਨਹੀਂ।" + connection_failed: "ਪੇਪਾਲ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।" + generic_error: "ਪੇਪਾਲ ਅਸਫਲ ਰਿਹਾ। %{reasons}" users: + api_keys: + regenerate_key: "ਕੁੰਜੀ ਨੂੰ ਮੁੜ ਤਿਆਰ ਕਰੋ" + title: API ਕੁੰਜੀ + webhook_endpoints: + title: ਵੈਬਹੁੱਕ ਐਂਡਪੁਆਇੰਟ + description: ਸਿਸਟਮ ਵਿੱਚ ਇਵੈਂਟਸ ਵੈਬਹੁੱਕ ਨੂੰ ਬਾਹਰੀ ਸਿਸਟਮਾਂ ਲਈ ਟਰਿੱਗਰ ਕਰ ਸਕਦੇ ਹਨ। + event_types: + order_cycle_opened: ਆਰਡਰ ਸਾਈਕਲ ਖੋਲ੍ਹਿਆ ਗਿਆ + event_type: + header: ਇਵੇੰਟ ਦੀ ਕਿਸਮ + url: + header: ਐਂਡਪੁਆਇੰਟ URL + create_placeholder: ਰਿਮੋਟ ਵੈਬਹੁੱਕ ਐਂਡਪੁਆਇੰਟ ਦਾ URL ਦਾਖਲ ਕਰੋ + developer_settings: + title: ਡਿਵੈਲਪਰ ਸੈਟਿੰਗਜ਼ + form: + account_settings: ਖਾਤਾ ਸੈਟਿੰਗਜ਼ + show: + tabs: + developer_settings: ਡਿਵੈਲਪਰ ਸੈਟਿੰਗਜ਼ + orders: ਆਰਡਰ + cards: ਕ੍ਰੈਡਿਟ ਕਾਰਡ + transactions: ਲੈਣ-ਦੇਣ + settings: ਖਾਤਾ ਸੈਟਿੰਗਜ਼ + unconfirmed_email: "ਇਸ ਲਈ ਬਕਾਇਆ ਈਮੇਲ ਪੁਸ਼ਟੀਕਰਨ: %{unconfirmed_email}। ਨਵੀਂ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਹੋਣ ਤੇ ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਅੱਪਡੇਟ ਕੀਤਾ ਜਾਵੇਗਾ।" + orders: + open_orders: ਖੁੱਲ੍ਹੇ ਆਰਡਰ + past_orders: ਪਿਛਲੇ ਆਰਡਰ + transactions: + transaction_history: ਲੈਣ-ਦੇਣ ਦਾ ਇਤਿਹਾਸ + authorisation_required: ਅਧਿਕਾਰ ਦੀ ਲੋੜ ਹੈ + authorise: ਅਧਿਕਾਰਤ ਕਰੋ open_orders: + order: ਆਰਡਰ shop: ਸ਼ਾਪ + changes_allowed_until: ਇਸ ਤੱਕ ਬਦਲਾਵ ਦੀ ਇਜਾਜ਼ਤ ਹੈ items: ਵਸਤੂਆਂ + total: ਕੁੱਲ edit: ਸੰਪਾਦਿਤ ਕਰੋ cancel: ਰੱਦ ਕਰੋ + closed: ਬੰਦ ਹੈ + until: ਤੱਕ past_orders: + order: ਆਰਡਰ shop: ਸ਼ਾਪ completed_at: ਇਸ ਸਮੇਂ ਪੂਰਾ ਹੋਇਆ items: ਵਸਤੂਆਂ + total: ਕੁੱਲ + paid?: ਭੁਗਤਾਨ ਕੀਤਾ? + status: ਸਥਿਤੀ + completed: ਪੂਰਾ ਹੋਇਆ cancelled: ਰੱਦ ਕੀਤਾ ਗਿਆ + saved_cards: + default?: ਡਿਫੌਲਟ? + delete?: ਹਟਾਓ? + cards: + authorised_shops: ਅਧਿਕਾਰਤ ਸ਼ਾਪਾਂ + authorised_shops_agreement: ਇਹ ਉਹਨਾਂ ਸ਼ਾਪਾਂ ਦੀ ਸੂਚੀ ਹੈ ਜਿਹਨਾਂ ਨੂੰ ਤੁਹਾਡੇ ਕੋਲ ਕਿਸੇ ਵੀ ਗਾਹਕੀ (ਜਿਵੇਂ ਕਿ ਆਰਡਰ ਦੁਹਰਾਉਣ) ਲਈ ਤੁਹਾਡੇ ਡਿਫੌਲਟ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਤੋਂ ਚਾਰਜ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੈ। ਤੁਹਾਡੇ ਕਾਰਡ ਦੇ ਵੇਰਵੇ ਸੁਰੱਖਿਅਤ ਰੱਖੇ ਜਾਣਗੇ ਅਤੇ ਦੁਕਾਨ ਮਾਲਕਾਂ ਨਾਲ ਸਾਂਝੇ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ। ਤੁਹਾਡੇ ਤੋਂ ਚਾਰਜ ਲਏ ਜਾਣ ਤੇ ਤੁਹਾਨੂੰ ਹਮੇਸ਼ਾ ਸੂਚਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। ਕਿਸੇ ਸ਼ਾਪ ਲਈ ਬਕਸੇ ਤੇ ਨਿਸ਼ਾਨ ਲਗਾ ਕੇ, ਤੁਸੀਂ ਉਸ ਸ਼ਾਪ ਨੂੰ ਉਸ ਵਿੱਤੀ ਸੰਸਥਾ ਨੂੰ ਨਿਰਦੇਸ਼ ਭੇਜਣ ਲਈ ਅਧਿਕਾਰਤ ਕਰਨ ਲਈ ਸਹਿਮਤ ਹੋ ਰਹੇ ਹੋ ਜਿਸ ਨੇ ਉਸ ਸ਼ਾਪ ਨਾਲ ਤੁਹਾਡੇ ਦੁਆਰਾ ਬਣਾਈ ਗਈ ਕਿਸੇ ਵੀ ਗਾਹਕੀ ਦੀਆਂ ਸ਼ਰਤਾਂ ਦੇ ਅਨੁਸਾਰ ਭੁਗਤਾਨ ਲੈਣ ਲਈ ਤੁਹਾਡਾ ਕਾਰਡ ਜਾਰੀ ਕੀਤਾ ਹੈ। + saved_cards_popover: ਇਹ ਉਹਨਾਂ ਕਾਰਡਾਂ ਦੀ ਸੂਚੀ ਹੈ ਜੋ ਤੁਸੀਂ ਬਾਅਦ ਵਿੱਚ ਵਰਤੋਂ ਲਈ ਸੇਵ ਕਰਨ ਦੀ ਚੋਣ ਕੀਤੀ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਆਰਡਰ ਚੈਕਆਊਟ ਕਰਦੇ ਹੋ ਤਾਂ ਤੁਹਾਡਾ 'ਡਿਫੌਲਟ' ਆਪਣੇ ਆਪ ਚੁਣਿਆ ਜਾਵੇਗਾ, ਅਤੇ ਤੁਹਾਡੇ ਦੁਆਰਾ ਅਜਿਹਾ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੱਤੀ ਗਈ ਕਿਸੇ ਵੀ ਸ਼ਾਪ ਦੁਆਰਾ ਚਾਰਜ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ (ਸੱਜੇ ਵੇਖੋ)। + authorised_shops: + shop_name: "ਸ਼ਾਪ ਦਾ ਨਾਂ" + allow_charges?: "ਡਿਫਾਲਟ ਕਾਰਡ ਨੂੰ ਚਾਰਜ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ?" + no_default_saved_cards_tooltip: ਚਾਰਜ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣ ਲਈ ਤੁਹਾਨੂੰ ਇੱਕ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੂੰ ਡਿਫੌਲਟ ਵਜੋਂ ਮਾਰਕ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। + localized_number: + invalid_format: ਇੱਕ ਅਵੈਧ ਫਾਰਮੈਟ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਕੋਈ ਨੰਬਰ ਦਾਖਲ ਕਰੋ। + api: + invalid_api_key: "ਅਵੈਧ API ਕੁੰਜੀ (%{key}) ਨਿਰਧਾਰਤ ਕੀਤੀ ਗਈ।" + unauthorized: "ਤੁਸੀਂ ਉਹ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਅਧਿਕਾਰਤ ਨਹੀਂ ਹੋ।" + invalid_resource: "ਅਵੈਧ ਸਰੋਤ। ਕਿਰਪਾ ਕਰਕੇ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" + resource_not_found: "ਜਿਸ ਸਰੋਤ ਨੂੰ ਤੁਸੀਂ ਲੱਭ ਰਹੇ ਸੀ, ਉਹ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ।" + access: "API ਐਕਸੈਸ" + key: "ਕੁੰਜੀ" + clear_key: "ਕੁੰਜੀ ਸਾਫ਼ ਕਰੋ" + regenerate_key: "ਕੁੰਜੀ ਨੂੰ ਮੁੜ ਤਿਆਰ ਕਰੋ" + no_key: "ਕੋਈ ਕੁੰਜੀ ਨਹੀਂ" + generate_key: "API ਕੁੰਜੀ ਬਣਾਓ" + key_generated: "ਕੁੰਜੀ ਤਿਆਰ ਕੀਤੀ ਗਈ" + key_cleared: "ਕੁੰਜੀ ਹਟਾਈ ਗਈ" + shipment: + cannot_ready: "ਸ਼ਿਪਮੈਂਟ ਤਿਆਰ ਨਹੀਂ ਹੋ ਸਕਦੀ।" + invalid_taxonomy_id: "ਅਵੈਧ ਟੈਕਸੋਨੌਮੀ ਆਈਡੀ।" + toggle_api_key_view: "ਉਪਭੋਗਤਾ ਲਈ API ਕੁੰਜੀ ਦ੍ਰਿਸ਼ ਵਿਖਾਓ" + unit: ਯੂਨਿਟ + per_unit: ਪ੍ਰਤੀ ਯੂਨਿਟ + components: + multiple_checked_select: + filter_placeholder: "ਫਿਲਟਰ ਵਿਕਲਪ" + search_input: + placeholder: ਖੋਜੋ + selector_with_filter: + selected_items: "%{count} ਚੁਣੇ ਗਏ" + search_placeholder: ਖੋਜੋ + pagination: + next: ਅਗਲਾ + previous: ਪਿਛਲਾ diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 67308657bc..6b4299a232 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -1354,6 +1354,7 @@ pl: invoice_tax_total: "Suma podatku VAT:" tax_invoice: "FAKTURA PODATKOWA" tax_total: "Całkowity podatek (%{rate}):" + invoice_shipping_category_pickup: "Odbiór" total_excl_tax: "Razem (bez podatku):" total_incl_tax: "Razem (z podatkiem):" abn: "NIP:" diff --git a/config/locales/pt.yml b/config/locales/pt.yml index d9ef8e2d4b..93df68d1d7 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -674,6 +674,7 @@ pt: view_products: Ir para a Página de Produtos view_inventory: Ir para a Página de Inventário product_headings: + distributor: Distribuidor producer: Produtor/a sku: SKU name: Nome @@ -951,6 +952,8 @@ pt: rate: Taxa customers: Consumidor active: Activo? + connected_apps: + loading: "A carregar" actions: edit_profile: Definições properties: Propriedades @@ -1475,6 +1478,8 @@ pt: invoice_tax_total: "Total IVA:" tax_invoice: "FACTURA FISCAL" tax_total: "Total de Impostos (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Levantamento" total_excl_tax: "Total (excl. imposto):" total_incl_tax: "Total (incl. imposto):" abn: "NIPC:" diff --git a/config/locales/pt_BR.yml b/config/locales/pt_BR.yml index edd6fc288f..64d1fa4e54 100644 --- a/config/locales/pt_BR.yml +++ b/config/locales/pt_BR.yml @@ -717,6 +717,7 @@ pt_BR: view_products: Ir para a página de produtos view_inventory: Ir para a página de inventário product_headings: + distributor: Distribuidor producer: Produtor sku: SKU name: Nome @@ -992,6 +993,8 @@ pt_BR: vouchers: customers: Consumidor active: Ativo? + connected_apps: + loading: "Carregando" actions: edit_profile: Configurações properties: Propriedades @@ -1551,6 +1554,8 @@ pt_BR: invoice_tax_total: "Total de Imposto sobre Bens e Serviços" tax_invoice: "FATURA" tax_total: "Total de taxas (%{rate}):" + invoice_shipping_category_delivery: "Entrega" + invoice_shipping_category_pickup: "Retirada" total_excl_tax: "Total (sem imposto):" total_incl_tax: "Total (com imposto):" abn: "CNPJ:" diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 03516a796a..289d51a1c8 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -848,6 +848,7 @@ ru: view_products: Перейти на Страницу Товаров view_inventory: Перейти на Страницу Элементов товарной номенклатуры product_headings: + distributor: Дистрибьютор producer: Производитель sku: SKU name: Название @@ -1178,6 +1179,8 @@ ru: create_custom_tab: "Создать пользовательскую вкладку на витрине магазина" custom_tab_title: "Название пользовательской вкладки" custom_tab_content: "Контент для пользовательской вкладки" + connected_apps: + loading: "Загружается" actions: edit_profile: Настройки properties: Свойства @@ -1868,6 +1871,8 @@ ru: invoice_tax_total: "Всего налогов:" tax_invoice: "СЧЁТ" tax_total: "Всего налога (%{rate}):" + invoice_shipping_category_delivery: "Доставка" + invoice_shipping_category_pickup: "Самовывоз" total_excl_tax: "Всего (Искл. налог):" total_incl_tax: "Всего (Вкл. налог):" abn: "ИНН" diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 72468ce05d..e0fe1c26e3 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -328,6 +328,7 @@ sv: blank: kan inte vara blank none_saved: sparade inte några produkter product_headings: + distributor: Distributör producer: Producent sku: SKU name: Namn @@ -896,6 +897,8 @@ sv: invoice_tax_total: "Summa moms" tax_invoice: "SKATTEFAKTURA" tax_total: "Summa skatter (%{rate}):" + invoice_shipping_category_delivery: "Leverans" + invoice_shipping_category_pickup: "Upphämtning" total_excl_tax: "Summa (Exkl skatt):" total_incl_tax: "Summa (Inkl skatt):" abn: "ABN:" diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 655a828874..e6b8f61624 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -699,6 +699,7 @@ tr: view_products: Ürünler Sayfasına Git view_inventory: Stok Sayfasına Git product_headings: + distributor: Dağıtımcı producer: ÜRETİCİ sku: Stok Kodu name: Ad @@ -979,6 +980,8 @@ tr: rate: oran customers: Müşteri active: AKTİF? + connected_apps: + loading: "Yükleniyor" actions: edit_profile: Ayarlar properties: ÖZELLİKLER @@ -1559,6 +1562,8 @@ tr: invoice_tax_total: "Toplam KDV:" tax_invoice: "VERGİ FATURASI" tax_total: "Toplam vergi (%{rate}):" + invoice_shipping_category_delivery: "Eve Teslim" + invoice_shipping_category_pickup: "Teslimat Noktası" total_excl_tax: "Toplam (vergi hariç):" total_incl_tax: "Toplam (Vergi dahil):" abn: "VKN/TCKN:" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 18656e5710..0aa7ea3b0a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -784,6 +784,7 @@ uk: view_products: Перейдіть на сторінку продуктів view_inventory: Перейдіть на сторінку інвентаризації product_headings: + distributor: Дистрибютор producer: Виробник sku: Артикул name: Ім'я @@ -1092,6 +1093,8 @@ uk: rate: Оцінка customers: Замовник active: Активний? + connected_apps: + loading: "Завантаження" actions: edit_profile: Налаштування properties: Властивості @@ -1712,6 +1715,8 @@ uk: invoice_tax_total: "Всього ПДВ:" tax_invoice: "ПОДАТКОВА НАКЛАДНА" tax_total: "Загальний податок (%{rate}):" + invoice_shipping_category_delivery: "Доставка" + invoice_shipping_category_pickup: "Самовивіз" total_excl_tax: "Усього (без податку):" total_incl_tax: "Всього (вкл. податок):" abn: "ABN:" From 41112c14625dbe21e5bc2420740223d2540a69d7 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 29 Nov 2023 12:14:00 +1100 Subject: [PATCH 185/219] DRY uploaded file use in specs --- spec/controllers/api/v0/logos_controller_spec.rb | 2 +- spec/controllers/api/v0/product_images_controller_spec.rb | 2 +- spec/controllers/api/v0/promo_images_controller_spec.rb | 2 +- spec/factories/order_cycle_factory.rb | 2 +- spec/support/file_helper.rb | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/controllers/api/v0/logos_controller_spec.rb b/spec/controllers/api/v0/logos_controller_spec.rb index 9aa9769d1d..b1bb65b187 100644 --- a/spec/controllers/api/v0/logos_controller_spec.rb +++ b/spec/controllers/api/v0/logos_controller_spec.rb @@ -18,7 +18,7 @@ module Api } describe "removing logo" do - let(:image) { Rack::Test::UploadedFile.new(black_logo_file, "image/png") } + let(:image) { black_logo_file } let(:enterprise) { create(:enterprise, owner: enterprise_owner, logo: image) } diff --git a/spec/controllers/api/v0/product_images_controller_spec.rb b/spec/controllers/api/v0/product_images_controller_spec.rb index 464e9025cc..a85db7771c 100644 --- a/spec/controllers/api/v0/product_images_controller_spec.rb +++ b/spec/controllers/api/v0/product_images_controller_spec.rb @@ -8,7 +8,7 @@ describe Api::V0::ProductImagesController, type: :controller do render_views describe "uploading an image" do - let(:image) { Rack::Test::UploadedFile.new(black_logo_file, 'image/png') } + let(:image) { black_logo_file } let(:pdf) { Rack::Test::UploadedFile.new(pdf_path, 'application/pdf') } let(:pdf_path) { Rails.public_path.join('Terms-of-service.pdf') } let(:product_without_image) { create(:product) } diff --git a/spec/controllers/api/v0/promo_images_controller_spec.rb b/spec/controllers/api/v0/promo_images_controller_spec.rb index dff570aba3..92fdce4940 100644 --- a/spec/controllers/api/v0/promo_images_controller_spec.rb +++ b/spec/controllers/api/v0/promo_images_controller_spec.rb @@ -18,7 +18,7 @@ module Api } describe "removing promo image" do - let(:image) { Rack::Test::UploadedFile.new(black_logo_file, "image/png") } + let(:image) { black_logo_file } let(:enterprise) { create(:enterprise, owner: enterprise_owner, promo_image: image) } diff --git a/spec/factories/order_cycle_factory.rb b/spec/factories/order_cycle_factory.rb index 8518bb68c1..18c1fd7181 100644 --- a/spec/factories/order_cycle_factory.rb +++ b/spec/factories/order_cycle_factory.rb @@ -35,7 +35,7 @@ FactoryBot.define do viewable_id: product.id, viewable_type: 'Spree::Product', alt: "position 1", - attachment: Rack::Test::UploadedFile.new(white_logo_path), + attachment: white_logo_file, position: 1 ) diff --git a/spec/support/file_helper.rb b/spec/support/file_helper.rb index 8f4ead848b..4ab44257d7 100644 --- a/spec/support/file_helper.rb +++ b/spec/support/file_helper.rb @@ -2,11 +2,11 @@ module FileHelper def black_logo_file - Rack::Test::UploadedFile.new(black_logo_path) + Rack::Test::UploadedFile.new(black_logo_path, "image/png") end def white_logo_file - Rack::Test::UploadedFile.new(white_logo_path) + Rack::Test::UploadedFile.new(white_logo_path, "image/png") end def black_logo_path From 6327f46733f38994209689b1809a307ebb91ea3f Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Wed, 29 Nov 2023 12:20:51 +1100 Subject: [PATCH 186/219] Use fixture_file_upload helper where possible We can't use it in factories but in other places it's a nice shortcut. --- spec/controllers/api/v0/product_images_controller_spec.rb | 2 +- .../api/v0/terms_and_conditions_controller_spec.rb | 2 +- spec/models/terms_of_service_file_spec.rb | 2 +- spec/support/api_helper.rb | 2 +- spec/system/admin/tos_banner_spec.rb | 2 +- spec/system/consumer/checkout/summary_spec.rb | 4 ++-- spec/system/consumer/shopping/checkout_spec.rb | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/controllers/api/v0/product_images_controller_spec.rb b/spec/controllers/api/v0/product_images_controller_spec.rb index a85db7771c..a19ef98c00 100644 --- a/spec/controllers/api/v0/product_images_controller_spec.rb +++ b/spec/controllers/api/v0/product_images_controller_spec.rb @@ -9,7 +9,7 @@ describe Api::V0::ProductImagesController, type: :controller do describe "uploading an image" do let(:image) { black_logo_file } - let(:pdf) { Rack::Test::UploadedFile.new(pdf_path, 'application/pdf') } + let(:pdf) { fixture_file_upload(pdf_path, 'application/pdf') } let(:pdf_path) { Rails.public_path.join('Terms-of-service.pdf') } let(:product_without_image) { create(:product) } let(:product_with_image) { create(:product_with_image) } diff --git a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb index 89d0b6fc08..ed8978cd7f 100644 --- a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb +++ b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb @@ -14,7 +14,7 @@ module Api describe "removing terms and conditions file" do let(:terms_file_path) { Rails.public_path.join('Terms-of-service.pdf') } let(:terms_and_conditions_file) { - Rack::Test::UploadedFile.new(terms_file_path, "application/pdf") + fixture_file_upload(terms_file_path, "application/pdf") } let(:enterprise) { create(:enterprise, owner: enterprise_owner) } diff --git a/spec/models/terms_of_service_file_spec.rb b/spec/models/terms_of_service_file_spec.rb index 21718a0e9b..d702a66365 100644 --- a/spec/models/terms_of_service_file_spec.rb +++ b/spec/models/terms_of_service_file_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' describe TermsOfServiceFile do let(:pdf) { File.open(Rails.public_path.join('Terms-of-service.pdf')) } - let(:upload) { Rack::Test::UploadedFile.new(pdf, "application/pdf") } + let(:upload) { fixture_file_upload(pdf, "application/pdf") } describe ".current" do it "returns nil" do diff --git a/spec/support/api_helper.rb b/spec/support/api_helper.rb index 7632c90c86..a0f8e10105 100644 --- a/spec/support/api_helper.rb +++ b/spec/support/api_helper.rb @@ -28,7 +28,7 @@ module OpenFoodNetwork end def image(filename) - Rack::Test::UploadedFile.new(Rails.root + "spec/support/fixtures" + filename) + fixture_file_upload(Rails.root + "spec/support/fixtures" + filename) end end end diff --git a/spec/system/admin/tos_banner_spec.rb b/spec/system/admin/tos_banner_spec.rb index 48808896f3..853c18384a 100644 --- a/spec/system/admin/tos_banner_spec.rb +++ b/spec/system/admin/tos_banner_spec.rb @@ -8,7 +8,7 @@ describe 'Terms of Service banner' do let(:admin_user) { create(:admin_user, terms_of_service_accepted_at: nil) } let(:test_file) { "Terms-of-service.pdf" } let(:pdf_upload) do - Rack::Test::UploadedFile.new(Rails.public_path.join(test_file), "application/pdf") + fixture_file_upload(Rails.public_path.join(test_file), "application/pdf") end before do diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index 2f2767d7dd..408acbbbfb 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -126,10 +126,10 @@ describe "As a consumer, I want to checkout my order" do let(:system_terms_path) { Rails.public_path.join('Terms-of-service.pdf') } let(:shop_terms_path) { Rails.public_path.join('Terms-of-ServiceUK.pdf') } let(:system_terms) { - Rack::Test::UploadedFile.new(system_terms_path, "application/pdf") + fixture_file_upload(system_terms_path, "application/pdf") } let(:shop_terms) { - Rack::Test::UploadedFile.new(shop_terms_path, "application/pdf") + fixture_file_upload(shop_terms_path, "application/pdf") } context "when none are required" do diff --git a/spec/system/consumer/shopping/checkout_spec.rb b/spec/system/consumer/shopping/checkout_spec.rb index 8b39be28f5..33332d8819 100644 --- a/spec/system/consumer/shopping/checkout_spec.rb +++ b/spec/system/consumer/shopping/checkout_spec.rb @@ -90,7 +90,7 @@ describe "As a consumer I want to check out my cart" do pending 'login in as user' do let(:user) { create(:user) } let(:pdf_upload) { - Rack::Test::UploadedFile.new( + fixture_file_upload( Rails.public_path.join('Terms-of-service.pdf'), "application/pdf" ) From dd639435f1a4e53bdab1a7c1415be4ff1b84c9c6 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 8 Jan 2024 10:58:27 +1100 Subject: [PATCH 187/219] Remove unnecessary image file helper --- spec/controllers/api/v0/products_controller_spec.rb | 6 ++++-- .../fixtures => fixtures/files}/thinking-cat.jpg | Bin spec/support/api_helper.rb | 4 ---- spec/system/admin/products_spec.rb | 8 +++----- 4 files changed, 7 insertions(+), 11 deletions(-) rename spec/{support/fixtures => fixtures/files}/thinking-cat.jpg (100%) diff --git a/spec/controllers/api/v0/products_controller_spec.rb b/spec/controllers/api/v0/products_controller_spec.rb index c31e323896..b96081a57e 100644 --- a/spec/controllers/api/v0/products_controller_spec.rb +++ b/spec/controllers/api/v0/products_controller_spec.rb @@ -25,15 +25,17 @@ describe Api::V0::ProductsController, type: :controller do end context "as a normal user" do + let(:attachment) { fixture_file_upload("thinking-cat.jpg") } + before do allow(current_api_user) .to receive(:has_spree_role?).with("admin").and_return(false) end it "gets a single product" do - product.create_image!(attachment: image("thinking-cat.jpg")) + product.create_image!(attachment:) product.variants.create!(unit_value: "1", unit_description: "thing", price: 1) - product.variants.first.images.create!(attachment: image("thinking-cat.jpg")) + product.variants.first.images.create!(attachment:) product.set_property("spree", "rocks") api_get :show, id: product.to_param diff --git a/spec/support/fixtures/thinking-cat.jpg b/spec/fixtures/files/thinking-cat.jpg similarity index 100% rename from spec/support/fixtures/thinking-cat.jpg rename to spec/fixtures/files/thinking-cat.jpg diff --git a/spec/support/api_helper.rb b/spec/support/api_helper.rb index a0f8e10105..b9546b25e6 100644 --- a/spec/support/api_helper.rb +++ b/spec/support/api_helper.rb @@ -26,9 +26,5 @@ module OpenFoodNetwork expect(json_response).to eq("error" => "You are not authorized to perform that action.") expect(response.status).to eq 401 end - - def image(filename) - fixture_file_upload(Rails.root + "spec/support/fixtures" + filename) - end end end diff --git a/spec/system/admin/products_spec.rb b/spec/system/admin/products_spec.rb index 47a5e58cef..0a83938ce0 100644 --- a/spec/system/admin/products_spec.rb +++ b/spec/system/admin/products_spec.rb @@ -340,6 +340,7 @@ describe ' context "as an enterprise user" do let!(:tax_category) { create(:tax_category) } let(:filter) { { producerFilter: 2 } } + let(:image_file_path) { Rails.root.join(file_fixture_path, "thinking-cat.jpg") } before do @new_user = create(:user) @@ -627,14 +628,13 @@ describe ' end it "upload a new product image including url filters" do - file_path = Rails.root + "spec/support/fixtures/thinking-cat.jpg" product = create(:simple_product, supplier: @supplier2) visit spree.admin_product_images_path(product, filter) page.find('a#new_image_link').click - attach_file('image_attachment', file_path) + attach_file('image_attachment', image_file_path) click_button "Create" uri = URI.parse(current_url) @@ -680,13 +680,11 @@ describe ' viewable_type: 'Spree::Product', alt: "position 1", attachment: image, position: 1) - file_path = Rails.root + "spec/support/fixtures/thinking-cat.jpg" - visit spree.admin_product_images_path(product, filter) page.find("a.icon-edit").click - attach_file('image_attachment', file_path) + attach_file('image_attachment', image_file_path) click_button "Update" uri = URI.parse(current_url) From 2699ae6ca70e9f701ea6be1afe8b2849b464d418 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 8 Jan 2024 11:28:47 +1100 Subject: [PATCH 188/219] DRY terms of service PDF file use in specs --- .../api/v0/product_images_controller_spec.rb | 3 +-- .../v0/terms_and_conditions_controller_spec.rb | 5 +---- spec/models/terms_of_service_file_spec.rb | 5 +++-- spec/support/file_helper.rb | 5 +++++ spec/system/admin/tos_banner_spec.rb | 8 +++----- spec/system/consumer/checkout/summary_spec.rb | 16 +++++----------- spec/system/consumer/shopping/checkout_spec.rb | 7 +------ 7 files changed, 19 insertions(+), 30 deletions(-) diff --git a/spec/controllers/api/v0/product_images_controller_spec.rb b/spec/controllers/api/v0/product_images_controller_spec.rb index a19ef98c00..2c0a380bee 100644 --- a/spec/controllers/api/v0/product_images_controller_spec.rb +++ b/spec/controllers/api/v0/product_images_controller_spec.rb @@ -9,8 +9,7 @@ describe Api::V0::ProductImagesController, type: :controller do describe "uploading an image" do let(:image) { black_logo_file } - let(:pdf) { fixture_file_upload(pdf_path, 'application/pdf') } - let(:pdf_path) { Rails.public_path.join('Terms-of-service.pdf') } + let(:pdf) { terms_pdf_file } let(:product_without_image) { create(:product) } let(:product_with_image) { create(:product_with_image) } let(:current_api_user) { create(:admin_user) } diff --git a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb index ed8978cd7f..d5e7f511f8 100644 --- a/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb +++ b/spec/controllers/api/v0/terms_and_conditions_controller_spec.rb @@ -12,10 +12,7 @@ module Api let(:enterprise_manager) { create(:user, enterprises: [enterprise]) } describe "removing terms and conditions file" do - let(:terms_file_path) { Rails.public_path.join('Terms-of-service.pdf') } - let(:terms_and_conditions_file) { - fixture_file_upload(terms_file_path, "application/pdf") - } + let(:terms_and_conditions_file) { terms_pdf_file } let(:enterprise) { create(:enterprise, owner: enterprise_owner) } before do diff --git a/spec/models/terms_of_service_file_spec.rb b/spec/models/terms_of_service_file_spec.rb index d702a66365..19d9fb183d 100644 --- a/spec/models/terms_of_service_file_spec.rb +++ b/spec/models/terms_of_service_file_spec.rb @@ -3,8 +3,9 @@ require 'spec_helper' describe TermsOfServiceFile do - let(:pdf) { File.open(Rails.public_path.join('Terms-of-service.pdf')) } - let(:upload) { fixture_file_upload(pdf, "application/pdf") } + include FileHelper + + let(:upload) { terms_pdf_file } describe ".current" do it "returns nil" do diff --git a/spec/support/file_helper.rb b/spec/support/file_helper.rb index 4ab44257d7..3e2feb2233 100644 --- a/spec/support/file_helper.rb +++ b/spec/support/file_helper.rb @@ -16,4 +16,9 @@ module FileHelper def white_logo_path Rails.root.join('app/webpacker/images/logo-white.png') end + + def terms_pdf_file + file_path = Rails.public_path.join("Terms-of-service.pdf") + fixture_file_upload(file_path, "application/pdf") + end end diff --git a/spec/system/admin/tos_banner_spec.rb b/spec/system/admin/tos_banner_spec.rb index 853c18384a..902d11071f 100644 --- a/spec/system/admin/tos_banner_spec.rb +++ b/spec/system/admin/tos_banner_spec.rb @@ -4,12 +4,10 @@ require 'system_helper' describe 'Terms of Service banner' do include AuthenticationHelper + include FileHelper let(:admin_user) { create(:admin_user, terms_of_service_accepted_at: nil) } - let(:test_file) { "Terms-of-service.pdf" } - let(:pdf_upload) do - fixture_file_upload(Rails.public_path.join(test_file), "application/pdf") - end + let(:pdf_upload) { terms_pdf_file } before do Spree::Config.enterprises_require_tos = true @@ -43,7 +41,7 @@ describe 'Terms of Service banner' do # Upload new ToS visit admin_terms_of_service_files_path - attach_file "Attachment", Rails.public_path.join(test_file) + attach_file "Attachment", pdf_upload.path click_button "Create Terms of service file" # check it has been uploaded diff --git a/spec/system/consumer/checkout/summary_spec.rb b/spec/system/consumer/checkout/summary_spec.rb index 408acbbbfb..f36dfa5f22 100644 --- a/spec/system/consumer/checkout/summary_spec.rb +++ b/spec/system/consumer/checkout/summary_spec.rb @@ -123,14 +123,8 @@ describe "As a consumer, I want to checkout my order" do describe "terms and conditions" do let(:customer) { create(:customer, enterprise: order.distributor, user:) } let(:tos_url) { "https://example.org/tos" } - let(:system_terms_path) { Rails.public_path.join('Terms-of-service.pdf') } - let(:shop_terms_path) { Rails.public_path.join('Terms-of-ServiceUK.pdf') } - let(:system_terms) { - fixture_file_upload(system_terms_path, "application/pdf") - } - let(:shop_terms) { - fixture_file_upload(shop_terms_path, "application/pdf") - } + let(:system_terms) { terms_pdf_file } + let(:shop_terms) { terms_pdf_file } context "when none are required" do it "doesn't show checkbox or links" do @@ -152,7 +146,7 @@ describe "As a consumer, I want to checkout my order" do describe "when customer has not accepted T&Cs before" do it "shows a link to the T&Cs and disables checkout button until terms are accepted" do visit checkout_step_path(:summary) - expect(page).to have_link "Terms and Conditions", href: /#{shop_terms_path.basename}$/ + expect(page).to have_link "Terms and Conditions", href: /Terms-of-service\.pdf/ expect(page).to have_field "order_accept_terms", checked: false end end @@ -243,8 +237,8 @@ describe "As a consumer, I want to checkout my order" do it "shows links to both terms and all need accepting" do visit checkout_step_path(:summary) - expect(page).to have_link "Terms and Conditions", href: /#{shop_terms_path.basename}$/ - expect(page).to have_link("Terms of service", href: /Terms-of-service.pdf/, count: 2) + expect(page).to have_link "Terms and Conditions", href: /Terms-of-service\.pdf/ + expect(page).to have_link("Terms of service", href: /Terms-of-service\.pdf/, count: 2) expect(page).to have_field "order_accept_terms", checked: false end end diff --git a/spec/system/consumer/shopping/checkout_spec.rb b/spec/system/consumer/shopping/checkout_spec.rb index 33332d8819..b897468232 100644 --- a/spec/system/consumer/shopping/checkout_spec.rb +++ b/spec/system/consumer/shopping/checkout_spec.rb @@ -89,12 +89,7 @@ describe "As a consumer I want to check out my cart" do pending 'login in as user' do let(:user) { create(:user) } - let(:pdf_upload) { - fixture_file_upload( - Rails.public_path.join('Terms-of-service.pdf'), - "application/pdf" - ) - } + let(:pdf_upload) { terms_pdf_file } before do login_as(user) From b0b061f97d054884e0fc976ef575e47007d23925 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Dec 2023 15:24:18 +1100 Subject: [PATCH 189/219] Activate vouchers for dev and test CI can then tell me if some specs still rely on it being disabled. --- lib/open_food_network/feature_toggle.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/open_food_network/feature_toggle.rb b/lib/open_food_network/feature_toggle.rb index feb89bb597..d92e654cc3 100644 --- a/lib/open_food_network/feature_toggle.rb +++ b/lib/open_food_network/feature_toggle.rb @@ -61,6 +61,10 @@ module OpenFoodNetwork "background_reports" => <<~DESC, Generate reports in a background process to limit memory consumption. DESC + "vouchers" => <<~DESC, + Add voucher functionality. Voucher can be managed via Enterprise settings. + This is activated per enterprise. Enter actors as Enterprise;1234. + DESC }.freeze def self.setup! From e2eead0f864b3b3f689b3fddb7ad2dbbdbeca867 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Dec 2023 16:06:04 +1100 Subject: [PATCH 190/219] Scroll to reveal White Label tab The Vouchers tab pushed the White Label tab further down and it was hidden by the savebar. The CSS adjustment in this commit makes sure that users can always see all menu items. The automatic scrolling by Capybara fails because of the savebar but scrolling to the bottom works. --- app/webpacker/css/admin/side_menu.scss | 3 ++ spec/system/admin/enterprises_spec.rb | 44 ++++++++++---------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/app/webpacker/css/admin/side_menu.scss b/app/webpacker/css/admin/side_menu.scss index 398787b7b8..f746c45cda 100644 --- a/app/webpacker/css/admin/side_menu.scss +++ b/app/webpacker/css/admin/side_menu.scss @@ -2,6 +2,9 @@ border-right: 2px solid #f6f6f6; border-top: 2px solid #f6f6f6; + /* Reserve space for the save bar to avoid hidden menu items. */ + margin-bottom: 2em; + .menu_item { display: block; padding: 8px 15px; diff --git a/spec/system/admin/enterprises_spec.rb b/spec/system/admin/enterprises_spec.rb index a70ed7084a..69c52cf6b1 100644 --- a/spec/system/admin/enterprises_spec.rb +++ b/spec/system/admin/enterprises_spec.rb @@ -623,9 +623,7 @@ describe ' before do visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label end it "set the hide_ofn_navigation preference for the current shop" do @@ -636,9 +634,7 @@ describe ' expect(distributor1.reload.hide_ofn_navigation).to be true visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label uncheck "Hide OFN navigation" click_button 'Update' @@ -655,9 +651,7 @@ describe ' expect(distributor1.reload.hide_ofn_navigation).to be true visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label expect(page).to have_content "LOGO USED IN SHOPFRONT" uncheck "Hide OFN navigation" @@ -672,9 +666,7 @@ describe ' distributor1.update_attribute(:hide_ofn_navigation, true) visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label end it "can updload the white label logo for the current shop" do @@ -694,9 +686,7 @@ describe ' distributor1.update white_label_logo: white_logo_file visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label end it "can remove the white label logo for the current shop" do @@ -750,9 +740,7 @@ describe ' expect(distributor1.reload.hide_groups_tab).to be true visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label uncheck "Hide groups tab in shopfront" click_button 'Update' @@ -764,9 +752,7 @@ describe ' context "creating custom tabs" do before do visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label check "Create custom tab in shopfront" end @@ -788,9 +774,7 @@ describe ' expect(page).to have_content("Custom tab title can't be blank") expect(distributor1.reload.custom_tab).to be_nil - within(".side_menu") do - click_link "White Label" - end + select_white_label expect(page).to have_checked_field "Create custom tab in shopfront" end @@ -813,9 +797,7 @@ describe ' before do distributor1.update(custom_tab:) visit edit_admin_enterprise_path(distributor1) - within(".side_menu") do - click_link "White Label" - end + select_white_label end it "display the custom tab fields with the current values" do @@ -1094,6 +1076,14 @@ describe ' end end end + + def select_white_label + # The savebar sits on top of the bottom menu item until we scroll. + scroll_to :bottom + within(".side_menu") do + click_link "White Label" + end + end end def update_message From a8c83b670b7c8919d98e776545dd35bb81f4f134 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Dec 2023 15:29:30 +1100 Subject: [PATCH 191/219] Remove superfluous feature tag from specs --- spec/lib/reports/sales_tax_totals_by_order_spec.rb | 6 +++--- spec/requests/admin/vouchers_spec.rb | 2 +- spec/system/admin/vouchers_spec.rb | 2 -- spec/system/consumer/checkout/payment_spec.rb | 2 +- spec/system/consumer/checkout/tax_incl_spec.rb | 2 +- spec/system/consumer/checkout/tax_not_incl_spec.rb | 2 +- 6 files changed, 7 insertions(+), 9 deletions(-) diff --git a/spec/lib/reports/sales_tax_totals_by_order_spec.rb b/spec/lib/reports/sales_tax_totals_by_order_spec.rb index 83b46555df..9194ae3dbb 100644 --- a/spec/lib/reports/sales_tax_totals_by_order_spec.rb +++ b/spec/lib/reports/sales_tax_totals_by_order_spec.rb @@ -105,7 +105,7 @@ describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do expect(tax_total).to eq(0.2 + 2) end - context "with a voucher", feature: :vouchers do + context "with a voucher" do let(:voucher) do create(:voucher_flat_rate, code: 'some_code', enterprise: order.distributor, amount: 10) end @@ -133,7 +133,7 @@ describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do expect(total).to eq(113.3 - 3.3) end - context "with a voucher", feature: :vouchers do + context "with a voucher" do let(:voucher) do create(:voucher_flat_rate, code: 'some_code', enterprise: order.distributor, amount: 10) end @@ -214,7 +214,7 @@ describe "Reporting::Reports::SalesTax::SalesTaxTotalsByOrder" do create(:voucher_flat_rate, code: 'some_code', enterprise: order.distributor, amount: 10) end - it "adjusts total_excl_tax and tax with voucher tax", feature: :vouchers do + it "adjusts total_excl_tax and tax with voucher tax" do add_voucher(order, voucher) mock_voucher_adjustment_service(excluded_tax: -0.29) diff --git a/spec/requests/admin/vouchers_spec.rb b/spec/requests/admin/vouchers_spec.rb index 8ec34f28a1..7c77f9a1ff 100644 --- a/spec/requests/admin/vouchers_spec.rb +++ b/spec/requests/admin/vouchers_spec.rb @@ -2,7 +2,7 @@ require "spec_helper" -describe "/admin/enterprises/:enterprise_id/vouchers", type: :request, feature: :vouchers do +describe "/admin/enterprises/:enterprise_id/vouchers", type: :request do let(:enterprise) { create(:supplier_enterprise, name: "Feedme") } let(:enterprise_user) { create(:user, enterprise_limit: 1) } diff --git a/spec/system/admin/vouchers_spec.rb b/spec/system/admin/vouchers_spec.rb index 0b97755804..c6893de80f 100644 --- a/spec/system/admin/vouchers_spec.rb +++ b/spec/system/admin/vouchers_spec.rb @@ -15,8 +15,6 @@ describe ' let(:enterprise_user) { create(:user, enterprise_limit: 1) } before do - Flipper.enable(:vouchers, enterprise) - enterprise_user.enterprise_roles.build(enterprise:).save login_as enterprise_user end diff --git a/spec/system/consumer/checkout/payment_spec.rb b/spec/system/consumer/checkout/payment_spec.rb index 65f18d271b..970c9a09c8 100644 --- a/spec/system/consumer/checkout/payment_spec.rb +++ b/spec/system/consumer/checkout/payment_spec.rb @@ -114,7 +114,7 @@ describe "As a consumer, I want to checkout my order" do end end - describe "vouchers", feature: :vouchers do + describe "vouchers" do context "with no voucher available" do before do visit checkout_step_path(:payment) diff --git a/spec/system/consumer/checkout/tax_incl_spec.rb b/spec/system/consumer/checkout/tax_incl_spec.rb index dfc9bd9413..e0d1713a1d 100644 --- a/spec/system/consumer/checkout/tax_incl_spec.rb +++ b/spec/system/consumer/checkout/tax_incl_spec.rb @@ -108,7 +108,7 @@ describe "As a consumer, I want to see adjustment breakdown" do assert_db_tax_incl end - context "when using a voucher", feature: :vouchers do + context "when using a voucher" do let!(:voucher) do create(:voucher_flat_rate, code: 'some_code', enterprise: distributor, amount: 10) end diff --git a/spec/system/consumer/checkout/tax_not_incl_spec.rb b/spec/system/consumer/checkout/tax_not_incl_spec.rb index aa44094b71..aa746adad6 100644 --- a/spec/system/consumer/checkout/tax_not_incl_spec.rb +++ b/spec/system/consumer/checkout/tax_not_incl_spec.rb @@ -2,7 +2,7 @@ require "system_helper" -describe "As a consumer, I want to see adjustment breakdown", feature: :vouchers do +describe "As a consumer, I want to see adjustment breakdown" do include ShopWorkflow include CheckoutHelper include CheckoutRequestsHelper From 9aff9efa861f54c629956604d5d5038f0236214b Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Dec 2023 15:32:05 +1100 Subject: [PATCH 192/219] Remove feature vouchers --- lib/open_food_network/feature_toggle.rb | 8 -------- 1 file changed, 8 deletions(-) diff --git a/lib/open_food_network/feature_toggle.rb b/lib/open_food_network/feature_toggle.rb index d92e654cc3..ef23b78a96 100644 --- a/lib/open_food_network/feature_toggle.rb +++ b/lib/open_food_network/feature_toggle.rb @@ -40,10 +40,6 @@ module OpenFoodNetwork shipping categories. Activating this feature for an enterprise owner will activate it for all shops of this enterprise. DESC - "vouchers" => <<~DESC, - Add voucher functionality. Voucher can be managed via Enterprise settings. - This is activated per enterprise. Enter actors as Enterprise;1234. - DESC "invoices" => <<~DESC, Preserve the state of generated invoices and enable multiple invoice numbers instead of only one live-updating invoice. DESC @@ -61,10 +57,6 @@ module OpenFoodNetwork "background_reports" => <<~DESC, Generate reports in a background process to limit memory consumption. DESC - "vouchers" => <<~DESC, - Add voucher functionality. Voucher can be managed via Enterprise settings. - This is activated per enterprise. Enter actors as Enterprise;1234. - DESC }.freeze def self.setup! From 38843c4d4d6110a28242311e8b859cca2a2560f2 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 22 Dec 2023 15:36:36 +1100 Subject: [PATCH 193/219] Remove use of feature vouchers --- app/views/admin/enterprises/_form.html.haml | 6 ------ app/views/admin/shared/_side_menu.html.haml | 2 +- app/views/checkout/_payment.html.haml | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/app/views/admin/enterprises/_form.html.haml b/app/views/admin/enterprises/_form.html.haml index eff2a6ac1a..dcaae1a149 100644 --- a/app/views/admin/enterprises/_form.html.haml +++ b/app/views/admin/enterprises/_form.html.haml @@ -9,12 +9,6 @@ %fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }} %legend= t(".#{ item[:name] }.legend") - - when 'vouchers' - - if feature?(:vouchers, spree_current_user, @enterprise) - %fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }} - %legend= t(".#{ item[:form_name] || item[:name] }.legend") - = render "admin/enterprises/form/#{ item[:form_name] || item[:name] }", f: f - - else %fieldset.alpha.no-border-bottom{ id: "#{item[:name]}_panel", data: { "tabs-and-panels-target": "panel" }} %legend= t(".#{ item[:form_name] || item[:name] }.legend") diff --git a/app/views/admin/shared/_side_menu.html.haml b/app/views/admin/shared/_side_menu.html.haml index 168add17ce..e900c233a8 100644 --- a/app/views/admin/shared/_side_menu.html.haml +++ b/app/views/admin/shared/_side_menu.html.haml @@ -1,7 +1,7 @@ .side_menu#side_menu - if @enterprise - enterprise_side_menu_items(@enterprise).each do |item| - - next if !item[:show] || (item[:name] == 'vouchers' && !feature?(:vouchers, spree_current_user, @enterprise)) + - next if !item[:show] %a.menu_item{ href: item[:href] || "##{item[:name]}_panel", data: { action: "tabs-and-panels#activate", "tabs-and-panels-target": "tab", test: "link_for_#{item[:name]}" }, class: item[:selected] } %i{ class: item[:icon_class] } %span= t(".enterprise.#{item[:name] }") diff --git a/app/views/checkout/_payment.html.haml b/app/views/checkout/_payment.html.haml index 38e237bb4d..656a246efe 100644 --- a/app/views/checkout/_payment.html.haml +++ b/app/views/checkout/_payment.html.haml @@ -1,5 +1,5 @@ .medium-6#checkout-payment-methods - - if feature?(:vouchers, spree_current_user, @order.distributor) && @order.distributor.vouchers.present? + - if @order.distributor.vouchers.present? %div.checkout-substep = render partial: "checkout/voucher_section", locals: { order: @order, voucher_adjustment: @order.voucher_adjustments.first } From 4e510e9bd0c1860550ea26dccc912af70934c983 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Mon, 8 Jan 2024 15:13:55 +1100 Subject: [PATCH 194/219] Avoid warning hiding main menu in report spec --- spec/system/admin/reports/orders_and_fulfillment_spec.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spec/system/admin/reports/orders_and_fulfillment_spec.rb b/spec/system/admin/reports/orders_and_fulfillment_spec.rb index 23870f35fc..9e8c01577d 100644 --- a/spec/system/admin/reports/orders_and_fulfillment_spec.rb +++ b/spec/system/admin/reports/orders_and_fulfillment_spec.rb @@ -20,8 +20,10 @@ describe "Orders And Fulfillment" do create(:address, address1: "distributor address", city: 'The Shire', zipcode: "1234") } let(:distributor) { - create(:distributor_enterprise, address: distributor_address, - name: "Distributor Name") + create(:distributor_enterprise, + with_payment_and_shipping: true, + address: distributor_address, + name: "Distributor Name") } let(:order_cycle) { create(:simple_order_cycle, distributors: [distributor]) } let(:order1) { From da1ed8c1180486a2ebf0255f618f30a8da703bc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 09:07:26 +0000 Subject: [PATCH 195/219] Bump puma from 6.4.1 to 6.4.2 Bumps [puma](https://github.com/puma/puma) from 6.4.1 to 6.4.2. - [Release notes](https://github.com/puma/puma/releases) - [Changelog](https://github.com/puma/puma/blob/master/History.md) - [Commits](https://github.com/puma/puma/compare/v6.4.1...v6.4.2) --- updated-dependencies: - dependency-name: puma dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7f4a28cb3a..932f070117 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -492,7 +492,7 @@ GEM psych (5.1.2) stringio public_suffix (5.0.4) - puma (6.4.1) + puma (6.4.2) nio4r (~> 2.0) query_count (1.1.1) activerecord (>= 4.2) From d8c6241398a173175710287d0049f49d23164a1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 09:09:30 +0000 Subject: [PATCH 196/219] Bump bullet from 7.1.4 to 7.1.5 Bumps [bullet](https://github.com/flyerhzm/bullet) from 7.1.4 to 7.1.5. - [Changelog](https://github.com/flyerhzm/bullet/blob/main/CHANGELOG.md) - [Commits](https://github.com/flyerhzm/bullet/compare/7.1.4...7.1.5) --- updated-dependencies: - dependency-name: bullet dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7f4a28cb3a..355aa732f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -181,7 +181,7 @@ GEM bugsnag (6.26.0) concurrent-ruby (~> 1.0) builder (3.2.4) - bullet (7.1.4) + bullet (7.1.5) activesupport (>= 3.0.0) uniform_notifier (~> 1.11) cable_ready (5.0.1) From c3e102aa0e26c5363c2886e5dc0b45dbfc5c319a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 09:36:52 +0000 Subject: [PATCH 197/219] Bump @floating-ui/dom from 1.5.3 to 1.5.4 Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.5.3 to 1.5.4. - [Release notes](https://github.com/floating-ui/floating-ui/releases) - [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/dom/CHANGELOG.md) - [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.5.4/packages/dom) --- updated-dependencies: - dependency-name: "@floating-ui/dom" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 32 ++++++++++++++++---------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 2a3c354f91..f49690ab17 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ ] }, "dependencies": { - "@floating-ui/dom": "^1.5.3", + "@floating-ui/dom": "^1.5.4", "@hotwired/turbo": "^7.3.0", "@rails/webpacker": "5.4.4", "cable_ready": "5.0.2", diff --git a/yarn.lock b/yarn.lock index e20ed1f64e..f585e40c61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1092,25 +1092,25 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@floating-ui/core@^1.4.2": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" - integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== - dependencies: - "@floating-ui/utils" "^0.1.3" - -"@floating-ui/dom@^1.5.3": +"@floating-ui/core@^1.5.3": version "1.5.3" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" - integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.3.tgz#b6aa0827708d70971c8679a16cf680a515b8a52a" + integrity sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q== dependencies: - "@floating-ui/core" "^1.4.2" - "@floating-ui/utils" "^0.1.3" + "@floating-ui/utils" "^0.2.0" -"@floating-ui/utils@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.3.tgz#6ee493102b45d796d69f1f472d4bf64e5244500a" - integrity sha512-uvnFKtPgzLnpzzTRfhDlvXX0kLYi9lDRQbcDmT8iXl71Rx+uwSuaUIQl3DNC7w5OweAQ7XQMDObML+KaYDQfng== +"@floating-ui/dom@^1.5.4": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.4.tgz#28df1e1cb373884224a463235c218dcbd81a16bb" + integrity sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ== + dependencies: + "@floating-ui/core" "^1.5.3" + "@floating-ui/utils" "^0.2.0" + +"@floating-ui/utils@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== "@hotwired/stimulus-webpack-helpers@^1.0.0": version "1.0.1" From ee6fd0ffeb841ca6d8f7195f565775e20ec9eaf9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 22:54:20 +0000 Subject: [PATCH 198/219] Bump follow-redirects from 1.14.8 to 1.15.4 Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.8 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.8...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e20ed1f64e..6d232c4326 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4090,9 +4090,9 @@ flush-write-stream@^1.0.0: readable-stream "^2.3.6" follow-redirects@^1.0.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== for-in@^1.0.2: version "1.0.2" From 2defc4afa749b97cb29490ea31c8c28d6e00bde3 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 9 Jan 2024 12:34:05 +1100 Subject: [PATCH 199/219] Ensure form-actions content uses available space Using pre-defined colunms was a hacky short term solution, this way is more flexible. --- app/views/admin/products_v3/_table.html.haml | 4 ++-- app/webpacker/css/admin/products_v3.scss | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index e34c4b786d..45674305d6 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -7,13 +7,13 @@ = render(partial: "admin/shared/flashes", locals: { flashes: }) if defined? flashes %fieldset.form-actions{ class: ("hidden" unless defined?(error_counts)), 'data-bulk-form-target': "actions" } .container - .status.eleven.columns + .status .modified_summary{ 'data-bulk-form-target': "changedSummary", 'data-translation-key': 'admin.products_v3.table.changed_summary'} - if defined?(error_counts) .error_summary -# X products were saved correctly, but Y products could not be saved correctly. Please review errors and try again = t('.error_summary.saved', count: error_counts[:saved]) + t('.error_summary.invalid', count: error_counts[:invalid]) - .form-buttons.five.columns + .form-buttons = form.submit t('.reset'), type: :reset, class: "medium", 'data-reflex': 'click->products#fetch' = form.submit t('.save'), class: "medium" %table.products diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 123fa7f286..cc90b4c2a9 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -27,6 +27,16 @@ left: 0; right: 0; z-index: 1; // Ensure tom-select and .disabled-section are covered + + .container { + .status { + flex-grow: 1; // Fill space + } + + .form-buttons { + flex-shrink: 0; // Don't shrink + } + } } } From e48d009668a77fd0fd32731531e2fe3cd36bed8f Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 9 Jan 2024 13:11:49 +1100 Subject: [PATCH 200/219] Hide #sort section instead of covering it Before, the .form-actions was overlaying it, to avoid making the table below jump. But if the .form-actions and #sort are the same height, it won't jump when we swap them. It does make the table jump in the case of a multi-line .form-actions message, but that only happens after submit anyway. This is needed for the next commit.. --- app/webpacker/css/admin/products_v3.scss | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index cc90b4c2a9..9114a43fba 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -22,8 +22,8 @@ // Form actions floats over other controls when active #products-form { .form-actions { - position: absolute; - top: -1em; + // position: absolute; + // top: -1; left: 0; right: 0; z-index: 1; // Ensure tom-select and .disabled-section are covered @@ -174,7 +174,8 @@ } #sort { - margin-bottom: 1em; + margin-top: 3px; // Helps even up with .form-actions when visible + margin-bottom: 1rem; display: flex; justify-content: space-between; align-items: center; @@ -184,6 +185,10 @@ line-height: $btn-relaxed-height; height: $btn-relaxed-height; + &.disabled-section { + display: none; + } + .with-dropdown { display: flex; justify-content: space-between; @@ -198,7 +203,7 @@ grid-template-rows: 1fr; grid-column-gap: 20px; align-items: end; - margin-bottom: 20px; + margin-bottom: 1rem; .query { grid-column: 1 / span 3; From 626e903ab9e05b2a897d71419c7cc0d2f2a6bc34 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Tue, 9 Jan 2024 14:44:12 +1100 Subject: [PATCH 201/219] Add ability for controller to use CanCan --- .../dfc_provider/application_controller.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/controllers/dfc_provider/application_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/application_controller.rb index 3db7525d58..16a830d336 100644 --- a/engines/dfc_provider/app/controllers/dfc_provider/application_controller.rb +++ b/engines/dfc_provider/app/controllers/dfc_provider/application_controller.rb @@ -8,6 +8,7 @@ module DfcProvider protect_from_forgery with: :null_session rescue_from ActiveRecord::RecordNotFound, with: :not_found + rescue_from CanCan::AccessDenied, with: :unauthorized before_action :check_authorization @@ -16,7 +17,7 @@ module DfcProvider private def check_authorization - head :unauthorized if current_user.nil? + unauthorized if current_user.nil? end def check_enterprise @@ -50,5 +51,13 @@ module DfcProvider def not_found head :not_found end + + def unauthorized + head :unauthorized + end + + def current_ability + @current_ability ||= Spree::Ability.new(current_user) + end end end From 4f27bea02f135554ae4ecb61dd3387941d7908a7 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 9 Jan 2024 13:25:43 +1100 Subject: [PATCH 202/219] Make table header sticky But it overlaps the .form-actions. how to make them sticky together.. todo: register the z-index in variables.scss --- app/webpacker/css/admin/products_v3.scss | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 9114a43fba..cc633277ab 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -49,9 +49,15 @@ border-collapse: separate; // This is needed for the outer padding. Also should be helpful to give more flexibility of borders between rows. // Additional horizontal padding to align with input contents - thead th.with-input { - padding-left: $padding-tbl-cell + $hpadding-txt; - padding-right: $padding-tbl-cell + $hpadding-txt; + thead { + position: sticky; + top: 0; + z-index: 1; // TODO: Cover .popout and .vertical-ellipsis-menu, but only when sticky + + th.with-input { + padding-left: $padding-tbl-cell + $hpadding-txt; + padding-right: $padding-tbl-cell + $hpadding-txt; + } } // Row hover From d847565bfb07a55c98c00619a29c78d0c26f12e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 10:00:06 +0000 Subject: [PATCH 203/219] Bump bugsnag from 6.26.0 to 6.26.1 Bumps [bugsnag](https://github.com/bugsnag/bugsnag-ruby) from 6.26.0 to 6.26.1. - [Release notes](https://github.com/bugsnag/bugsnag-ruby/releases) - [Changelog](https://github.com/bugsnag/bugsnag-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/bugsnag/bugsnag-ruby/compare/v6.26.0...v6.26.1) --- updated-dependencies: - dependency-name: bugsnag dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d164281df3..ab1cf953de 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -178,7 +178,7 @@ GEM bindex (0.8.1) bootsnap (1.17.0) msgpack (~> 1.2) - bugsnag (6.26.0) + bugsnag (6.26.1) concurrent-ruby (~> 1.0) builder (3.2.4) bullet (7.1.5) From fbbaf51522ee91e40db84fb94facd6de6b1763fc Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 09:21:43 +1100 Subject: [PATCH 204/219] Safely autocorrect Lint/SymbolConversion Inspecting 1530 files .....................................................................................................................................................................................................................................................................................................................................................W.................................................................................................................................................................................................................................................W..........................................................................................................................................................................................................................................................W....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Offenses: app/models/spree/preferences/preferable_class_methods.rb:73:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}" instead. "preferred_#{name}".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:77:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}=" instead. "preferred_#{name}=".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:81:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"prefers_#{name}?" instead. "prefers_#{name}?".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:85:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"prefers_#{name}=" instead. "prefers_#{name}=".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:89:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_default" instead. "preferred_#{name}_default".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:93:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_type" instead. "preferred_#{name}_type".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/models/spree/preferences/preferable_class_methods.rb:97:9: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"preferred_#{name}_description" instead. "preferred_#{name}_description".to_sym ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ app/services/sets/product_set.rb:121:28: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"variant_#{error.attribute}" instead. product.errors.add("variant_#{error.attribute}".to_sym, error.message) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ lib/spree/core/environment_extension.rb:11:24: W: [Corrected] Lint/SymbolConversion: Unnecessary symbol conversion; use :"#{name}=" instead. create_method( "#{name}=".to_sym ) { |val| ^^^^^^^^^^^^^^^^^ 1530 files inspected, 9 offenses detected, 9 offenses corrected --- .rubocop_todo.yml | 10 ---------- .../spree/preferences/preferable_class_methods.rb | 14 +++++++------- app/services/sets/product_set.rb | 2 +- lib/spree/core/environment_extension.rb | 2 +- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index bd2b7c9b67..d0292c2fd8 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -121,16 +121,6 @@ Lint/SelfAssignment: Exclude: - 'app/models/spree/order/checkout.rb' -# Offense count: 9 -# This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: EnforcedStyle. -# SupportedStyles: strict, consistent -Lint/SymbolConversion: - Exclude: - - 'app/models/spree/preferences/preferable_class_methods.rb' - - 'app/services/sets/product_set.rb' - - 'lib/spree/core/environment_extension.rb' - # Offense count: 1 # This cop supports unsafe autocorrection (--autocorrect-all). Lint/UselessMethodDefinition: diff --git a/app/models/spree/preferences/preferable_class_methods.rb b/app/models/spree/preferences/preferable_class_methods.rb index 4bff9406f6..71f6b746f7 100644 --- a/app/models/spree/preferences/preferable_class_methods.rb +++ b/app/models/spree/preferences/preferable_class_methods.rb @@ -70,31 +70,31 @@ module Spree end def preference_getter_method(name) - "preferred_#{name}".to_sym + :"preferred_#{name}" end def preference_setter_method(name) - "preferred_#{name}=".to_sym + :"preferred_#{name}=" end def prefers_getter_method(name) - "prefers_#{name}?".to_sym + :"prefers_#{name}?" end def prefers_setter_method(name) - "prefers_#{name}=".to_sym + :"prefers_#{name}=" end def preference_default_getter_method(name) - "preferred_#{name}_default".to_sym + :"preferred_#{name}_default" end def preference_type_getter_method(name) - "preferred_#{name}_type".to_sym + :"preferred_#{name}_type" end def preference_description_getter_method(name) - "preferred_#{name}_description".to_sym + :"preferred_#{name}_description" end end end diff --git a/app/services/sets/product_set.rb b/app/services/sets/product_set.rb index 362acae3f1..1adcdcb579 100644 --- a/app/services/sets/product_set.rb +++ b/app/services/sets/product_set.rb @@ -118,7 +118,7 @@ module Sets # Copy any variant errors to product variant&.errors&.each do |error| # The name is namespaced to avoid confusion with product attrs of same name. - product.errors.add("variant_#{error.attribute}".to_sym, error.message) + product.errors.add(:"variant_#{error.attribute}", error.message) end variant&.errors.blank? end diff --git a/lib/spree/core/environment_extension.rb b/lib/spree/core/environment_extension.rb index 674ed9dbf2..56d54517ea 100644 --- a/lib/spree/core/environment_extension.rb +++ b/lib/spree/core/environment_extension.rb @@ -8,7 +8,7 @@ module Spree def add_class(name) instance_variable_set "@#{name}", Set.new - create_method( "#{name}=".to_sym ) { |val| + create_method( :"#{name}=" ) { |val| instance_variable_set( "@" + name, val) } From 18c2b2512b9d551dff5485ba097fa322bbfecc9f Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 09:29:37 +1100 Subject: [PATCH 205/219] Safely autocorrect Style/RedundantLineContinuation Inspecting 1530 files .................................................................................................................................................................................C................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................C....................................................................................................................... Offenses: app/helpers/shop_helper.rb:48:43: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected. no_open_order_cycles?(order_cycles) && ^ app/helpers/shop_helper.rb:48:44: C: [Corrected] Style/RedundantLineContinuation: Redundant line continuation. no_open_order_cycles?(order_cycles) && \ ... ^ spec/system/admin/configuration/content_spec.rb:35:64: C: [Corrected] Layout/TrailingWhitespace: Trailing whitespace detected. expect(page).to have_selector :link, "markdown link", href: ^ spec/system/admin/configuration/content_spec.rb:35:65: C: [Corrected] Style/RedundantLineContinuation: Redundant line continuation. expect(page).to have_selector :link, "markdown link", href: \ ... ^ 1530 files inspected, 4 offenses detected, 4 offenses corrected --- .rubocop_todo.yml | 7 ------- app/helpers/shop_helper.rb | 2 +- spec/system/admin/configuration/content_spec.rb | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index d0292c2fd8..41b61f2e27 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -944,13 +944,6 @@ Style/RedundantInterpolation: - 'lib/tasks/karma.rake' - 'spec/base_spec_helper.rb' -# Offense count: 2 -# This cop supports safe autocorrection (--autocorrect). -Style/RedundantLineContinuation: - Exclude: - - 'app/helpers/shop_helper.rb' - - 'spec/system/admin/configuration/content_spec.rb' - # Offense count: 1 # This cop supports safe autocorrection (--autocorrect). Style/RedundantParentheses: diff --git a/app/helpers/shop_helper.rb b/app/helpers/shop_helper.rb index 3b649b8af2..78886edb35 100644 --- a/app/helpers/shop_helper.rb +++ b/app/helpers/shop_helper.rb @@ -45,7 +45,7 @@ module ShopHelper end def shopfront_closed_message?(order_cycles) - no_open_order_cycles?(order_cycles) && \ + no_open_order_cycles?(order_cycles) && current_distributor.preferred_shopfront_closed_message.present? end diff --git a/spec/system/admin/configuration/content_spec.rb b/spec/system/admin/configuration/content_spec.rb index aaf4d4ec2e..a74bd03421 100644 --- a/spec/system/admin/configuration/content_spec.rb +++ b/spec/system/admin/configuration/content_spec.rb @@ -32,7 +32,7 @@ describe " # And markdown is rendered # expect(page).to have_link "markdown link" and the correct href - expect(page).to have_selector :link, "markdown link", href: \ + expect(page).to have_selector :link, "markdown link", href: "/:/?#@!$&'()*+,;=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" end From 7e00dbfd672d702fbea5ecc6809a46c3309f3cbf Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 09:35:38 +1100 Subject: [PATCH 206/219] Style/RedundantParentheses --- .rubocop_todo.yml | 6 ------ app/models/spree/app_configuration.rb | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 41b61f2e27..033060ab5a 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -944,12 +944,6 @@ Style/RedundantInterpolation: - 'lib/tasks/karma.rake' - 'spec/base_spec_helper.rb' -# Offense count: 1 -# This cop supports safe autocorrection (--autocorrect). -Style/RedundantParentheses: - Exclude: - - 'app/models/spree/app_configuration.rb' - # Offense count: 1 # This cop supports safe autocorrection (--autocorrect). # Configuration parameters: AllowMultipleReturnValues. diff --git a/app/models/spree/app_configuration.rb b/app/models/spree/app_configuration.rb index 97f704eae3..0490c6432f 100644 --- a/app/models/spree/app_configuration.rb +++ b/app/models/spree/app_configuration.rb @@ -135,7 +135,7 @@ module Spree # Enable cache preference :enable_products_cache?, :boolean, - default: (Rails.env.production? || Rails.env.staging?) + default: Rails.env.production? || Rails.env.staging? # Available units preference :available_units, :string, default: "g,kg,T,mL,L,kL" From 2a3d498c1365d88c1277b486172614766be08902 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 09:38:35 +1100 Subject: [PATCH 207/219] Style/RedundantReturn --- .rubocop_todo.yml | 7 ------- app/models/spree/product.rb | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 033060ab5a..d886260035 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -944,13 +944,6 @@ Style/RedundantInterpolation: - 'lib/tasks/karma.rake' - 'spec/base_spec_helper.rb' -# Offense count: 1 -# This cop supports safe autocorrection (--autocorrect). -# Configuration parameters: AllowMultipleReturnValues. -Style/RedundantReturn: - Exclude: - - 'app/models/spree/product.rb' - # Offense count: 19 # This cop supports unsafe autocorrection (--autocorrect-all). # Configuration parameters: AllowedMethods, AllowedPatterns. diff --git a/app/models/spree/product.rb b/app/models/spree/product.rb index a2f70d4f77..4c9840a8fb 100755 --- a/app/models/spree/product.rb +++ b/app/models/spree/product.rb @@ -188,7 +188,7 @@ module Spree .with_permission(:add_to_order_cycle) .where(enterprises: { is_primary_producer: true }) .pluck(:parent_id) - return where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids) + where('spree_products.supplier_id IN (?)', [enterprise.id] | permitted_producer_ids) } scope :active, lambda { where("spree_products.deleted_at IS NULL") } From b90349e4c23aa765a1b9276a44f76d2d95c5ffb2 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Tue, 9 Jan 2024 14:44:59 +1100 Subject: [PATCH 208/219] Add endpoint to add enterprise to a group plus documentaion --- .../affiliated_by_controller.rb | 33 +++++++++ engines/dfc_provider/config/routes.rb | 4 +- .../enterprise_groups/affiliated_by_spec.rb | 73 +++++++++++++++++++ swagger/dfc.yaml | 24 ++++++ 4 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb create mode 100644 engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb diff --git a/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb new file mode 100644 index 0000000000..934758e6d5 --- /dev/null +++ b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module DfcProvider + module EnterpriseGroups + class AffiliatedByController < DfcProvider::ApplicationController + def create + group = EnterpriseGroup.find(params[:enterprise_group_id]) + + authorize! :update, group + + enterprise_uri = RDF::URI.new(params[:@id]) + + return head :bad_request unless enterprise_uri.valid? + + enterprise_id = ofn_id_from_uri(enterprise_uri) + enterprise = Enterprise.find(enterprise_id) + + group.enterprises << enterprise + + return head :unprocessable_entity unless group.save + + head :created + end + + private + + def ofn_id_from_uri(uri) + # enterprise uri follow this format http://test.host/api/dfc/enterprises/{ofn_enterprise_id} + uri.path.split("/").last + end + end + end +end diff --git a/engines/dfc_provider/config/routes.rb b/engines/dfc_provider/config/routes.rb index 7390cc39a4..28afd17041 100644 --- a/engines/dfc_provider/config/routes.rb +++ b/engines/dfc_provider/config/routes.rb @@ -7,6 +7,8 @@ DfcProvider::Engine.routes.draw do resources :supplied_products, only: [:create, :show, :update] resources :social_medias, only: [:show] end - resources :enterprise_groups, only: [:index, :show] + resources :enterprise_groups, only: [:index, :show] do + resources :affiliated_by, only: [:create], module: 'enterprise_groups' + end resources :persons, only: [:show] end diff --git a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb new file mode 100644 index 0000000000..7491bd969f --- /dev/null +++ b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +require_relative "../../swagger_helper" + +describe "EnterpriseGroups::AffiliatedBy", type: :request, swagger_doc: "dfc.yaml", + rswag_autodoc: true do + let(:user) { create(:oidc_user, id: 12_345) } + let(:group) { + create( + :enterprise_group, + id: 60_000, owner: user, name: "Sustainable Farmers", address:, + enterprises: [enterprise], + ) + } + let(:address) { create(:address, id: 40_000, address1: "8 Acres Drive") } + let(:enterprise) { create(:enterprise, id: 10_000) } + let!(:enterprise2) { create(:enterprise, id: 10_001) } + + before { login_as user } + + path "/api/dfc/enterprise_groups/{enterprise_group_id}/affiliated_by" do + post "Add enterprise to group" do + consumes "application/json" + + parameter name: :enterprise_group_id, in: :path, type: :string + parameter name: :enterprise_id, in: :body, schema: { + example: { + '@id': "http://test.host/api/dfc/enterprises/10001" + } + } + + let(:enterprise_group_id) { group.id } + let(:enterprise_id) do |example| + example.metadata[:operation][:parameters].second[:schema][:example] + end + + response "201", "created" do + run_test! do + expect(group.enterprises.reload).to include(enterprise2) + end + end + + response "400", "bad request" do + describe "with missing request body" do + around do |example| + # Rswag expects all required parameters to be supplied with `let` + # but we want to send a request without the request body parameter. + parameters = example.metadata[:operation][:parameters] + example.metadata[:operation][:parameters] = [parameters.first] + example.run + example.metadata[:operation][:parameters] = parameters + end + + run_test! + end + + describe "with non valid enterprise uri" do + let(:enterprise_id) { { '@id': "http://test.host/%api/dfc/enterprises/10001" } } + + run_test! + end + end + + response "401", "unauthorized" do + let(:non_group_owner) { create(:oidc_user, id: 12_346) } + + before { login_as non_group_owner } + + run_test! + end + end + end +end diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index e128c4d92e..b761182cd9 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -236,6 +236,30 @@ paths: "@type": "@id" dfc-b:stockLimitation: '3' dfc-b:sku: new-sku + "/api/dfc/enterprise_groups/{enterprise_group_id}/affiliated_by": + post: + summary: Add enterprise to group + parameters: + - name: enterprise_group_id + in: path + required: true + schema: + type: string + tags: + - EnterpriseGroups::AffiliatedBy + responses: + '201': + description: created + '400': + description: bad request + '401': + description: unauthorized + requestBody: + content: + application/json: + schema: + example: + "@id": http://test.host/api/dfc/enterprises/10001 "/api/dfc/enterprise_groups": get: summary: List groups From c3e513e45724d11bea3bef2bdec97e6e111be411 Mon Sep 17 00:00:00 2001 From: David Cook Date: Tue, 9 Jan 2024 14:21:59 +1100 Subject: [PATCH 209/219] Move .form-actions into table, to allow sticky stacking Unfortunately, it's not possible to stack two sticky elements that are inside different containers: https://stackoverflow.com/questions/54689034/pure-css-multiple-stacked-position-sticky So instead I've moved them under the same container. The .form-actions needs to cover up some of the table border. I don't like the deep nesting of markup or class naming.. pls suggest if you have better ideas! --- app/views/admin/products_v3/_table.html.haml | 25 +++++++++-------- app/webpacker/css/admin/products_v3.scss | 29 ++++++++++++++------ 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/app/views/admin/products_v3/_table.html.haml b/app/views/admin/products_v3/_table.html.haml index 45674305d6..10e4f14c73 100644 --- a/app/views/admin/products_v3/_table.html.haml +++ b/app/views/admin/products_v3/_table.html.haml @@ -5,17 +5,6 @@ 'data-bulk-form-error-value': defined?(error_counts), } do |form| = render(partial: "admin/shared/flashes", locals: { flashes: }) if defined? flashes - %fieldset.form-actions{ class: ("hidden" unless defined?(error_counts)), 'data-bulk-form-target': "actions" } - .container - .status - .modified_summary{ 'data-bulk-form-target': "changedSummary", 'data-translation-key': 'admin.products_v3.table.changed_summary'} - - if defined?(error_counts) - .error_summary - -# X products were saved correctly, but Y products could not be saved correctly. Please review errors and try again - = t('.error_summary.saved', count: error_counts[:saved]) + t('.error_summary.invalid', count: error_counts[:invalid]) - .form-buttons - = form.submit t('.reset'), type: :reset, class: "medium", 'data-reflex': 'click->products#fetch' - = form.submit t('.save'), class: "medium" %table.products %col{ width:"15%" } %col{ width:"5%", style: "max-width:5em" } @@ -28,6 +17,20 @@ %col{ width:"5%", style: "max-width:5em" } %col{ width:"5%", style: "max-width:5em" } %thead + %tr + %td.form-actions-wrapper{ colspan: 10 } + .form-actions-wrapper2 + %fieldset.form-actions{ class: ("hidden" unless defined?(error_counts)), 'data-bulk-form-target': "actions" } + .container + .status + .modified_summary{ 'data-bulk-form-target': "changedSummary", 'data-translation-key': 'admin.products_v3.table.changed_summary'} + - if defined?(error_counts) + .error_summary + -# X products were saved correctly, but Y products could not be saved correctly. Please review errors and try again + = t('.error_summary.saved', count: error_counts[:saved]) + t('.error_summary.invalid', count: error_counts[:invalid]) + .form-buttons + = form.submit t('.reset'), type: :reset, class: "medium", 'data-reflex': 'click->products#fetch' + = form.submit t('.save'), class: "medium" %tr %th.align-left.with-input= t('admin.products_page.columns.name') %th.align-right= t('admin.products_page.columns.sku') diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index cc633277ab..d72e1b17d7 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -19,15 +19,8 @@ position: relative; } - // Form actions floats over other controls when active #products-form { .form-actions { - // position: absolute; - // top: -1; - left: 0; - right: 0; - z-index: 1; // Ensure tom-select and .disabled-section are covered - .container { .status { flex-grow: 1; // Fill space @@ -46,6 +39,7 @@ background-color: $color-tbl-bg; padding: 4px; + padding-top: 0; // Hide border because .form-actions is there. It is added with th padding instead. border-collapse: separate; // This is needed for the outer padding. Also should be helpful to give more flexibility of borders between rows. // Additional horizontal padding to align with input contents @@ -54,6 +48,24 @@ top: 0; z-index: 1; // TODO: Cover .popout and .vertical-ellipsis-menu, but only when sticky + // Form actions replaces other controls when active + // It is part of the table header, to allow for sticky stacking when scrolling. + .form-actions-wrapper { + padding: 0; + overflow: visible; + background-color: white; + } + .form-actions-wrapper2 { + position: relative; + // Stretch to cover table side borders + left: -4px; + width: calc(100% + 8px); + background-color: white; + + padding: 4px 0; + z-index: 1; // Ensure tom-select and .disabled-section are covered + } + th.with-input { padding-left: $padding-tbl-cell + $hpadding-txt; padding-right: $padding-tbl-cell + $hpadding-txt; @@ -93,6 +105,7 @@ } th { + padding-top: $padding-tbl-cell + 4px; // Increase padding to create a top border // Clip long content in headers, but allow wrapping overflow: hidden; text-overflow: clip; // If colums are so small that headers are clipping, ellipsis are more of a hindrance @@ -142,7 +155,7 @@ } // "Naked" inputs. Row hover helps reveal them. - input:not([type="checkbox"]) { + tbody input:not([type="checkbox"]) { background-color: $color-tbl-cell-bg; height: auto; font-size: inherit; From 92921c89d188bd3db4b274ca3aadf387713bc71c Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Tue, 9 Jan 2024 16:08:20 +1100 Subject: [PATCH 210/219] Add enpoint to delete enterprise from group Plus documentation --- .../affiliated_by_controller.rb | 8 +++++ engines/dfc_provider/config/routes.rb | 2 +- .../enterprise_groups/affiliated_by_spec.rb | 32 +++++++++++++++++++ swagger/dfc.yaml | 21 ++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb index 934758e6d5..7813a1bcea 100644 --- a/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb +++ b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb @@ -22,6 +22,14 @@ module DfcProvider head :created end + def destroy + group = EnterpriseGroup.find(params[:enterprise_group_id]) + + authorize! :update, group + + group.enterprises.delete(params[:id]) + end + private def ofn_id_from_uri(uri) diff --git a/engines/dfc_provider/config/routes.rb b/engines/dfc_provider/config/routes.rb index 28afd17041..26762340ac 100644 --- a/engines/dfc_provider/config/routes.rb +++ b/engines/dfc_provider/config/routes.rb @@ -8,7 +8,7 @@ DfcProvider::Engine.routes.draw do resources :social_medias, only: [:show] end resources :enterprise_groups, only: [:index, :show] do - resources :affiliated_by, only: [:create], module: 'enterprise_groups' + resources :affiliated_by, only: [:create, :destroy], module: 'enterprise_groups' end resources :persons, only: [:show] end diff --git a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb index 7491bd969f..65bffa8427 100644 --- a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb @@ -70,4 +70,36 @@ describe "EnterpriseGroups::AffiliatedBy", type: :request, swagger_doc: "dfc.yam end end end + + path "/api/dfc/enterprise_groups/{enterprise_group_id}/affiliated_by/{id}" do + delete "Remove enterprise from group" do + parameter name: :enterprise_group_id, in: :path, type: :string + parameter name: :id, in: :path, type: :string + + let(:enterprise_group_id) { group.id } + let(:id) { enterprise2.id } + + response "204", "no content" do + before do + group.enterprises << enterprise2 + group.save! + end + + it "removes enterperise from group" do |example| + expect { + submit_request(example.metadata) + group.reload + }.to change { group.enterprises.count }.by(-1) + end + end + + response "401", "unauthorized" do + let(:non_group_owner) { create(:oidc_user, id: 12_346) } + + before { login_as non_group_owner } + + run_test! + end + end + end end diff --git a/swagger/dfc.yaml b/swagger/dfc.yaml index b761182cd9..a7a8df3e83 100644 --- a/swagger/dfc.yaml +++ b/swagger/dfc.yaml @@ -260,6 +260,27 @@ paths: schema: example: "@id": http://test.host/api/dfc/enterprises/10001 + "/api/dfc/enterprise_groups/{enterprise_group_id}/affiliated_by/{id}": + delete: + summary: Remove enterprise from group + parameters: + - name: enterprise_group_id + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + tags: + - EnterpriseGroups::AffiliatedBy + responses: + '204': + description: no content + '401': + description: unauthorized "/api/dfc/enterprise_groups": get: summary: List groups From 792dc2cb36ee48bf14d463383c175de2b0e4e317 Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 14:15:10 +1100 Subject: [PATCH 211/219] Add shadow --- app/webpacker/css/admin/products_v3.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index d72e1b17d7..977b5fbac3 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -47,6 +47,7 @@ position: sticky; top: 0; z-index: 1; // TODO: Cover .popout and .vertical-ellipsis-menu, but only when sticky + box-shadow: $box-shadow; // Form actions replaces other controls when active // It is part of the table header, to allow for sticky stacking when scrolling. From a78042cee10b014f1942ebd104d484b4233e823c Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Wed, 10 Jan 2024 15:48:36 +1100 Subject: [PATCH 212/219] Remove save after adding an association with << `<<` operator already save the the association to the database --- .../dfc_provider/enterprise_groups/affiliated_by_controller.rb | 2 -- .../spec/requests/enterprise_groups/affiliated_by_spec.rb | 1 - 2 files changed, 3 deletions(-) diff --git a/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb index 7813a1bcea..acb5ad6898 100644 --- a/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb +++ b/engines/dfc_provider/app/controllers/dfc_provider/enterprise_groups/affiliated_by_controller.rb @@ -17,8 +17,6 @@ module DfcProvider group.enterprises << enterprise - return head :unprocessable_entity unless group.save - head :created end diff --git a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb index 65bffa8427..4230fe2b29 100644 --- a/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb +++ b/engines/dfc_provider/spec/requests/enterprise_groups/affiliated_by_spec.rb @@ -82,7 +82,6 @@ describe "EnterpriseGroups::AffiliatedBy", type: :request, swagger_doc: "dfc.yam response "204", "no content" do before do group.enterprises << enterprise2 - group.save! end it "removes enterperise from group" do |example| From 0bb0e1674e0fbb6b32913034ad8340e65834d41b Mon Sep 17 00:00:00 2001 From: David Cook Date: Wed, 10 Jan 2024 16:41:47 +1100 Subject: [PATCH 213/219] Remove unused rule I forgot to remove this before. --- app/webpacker/css/admin/products_v3.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/app/webpacker/css/admin/products_v3.scss b/app/webpacker/css/admin/products_v3.scss index 977b5fbac3..8271602135 100644 --- a/app/webpacker/css/admin/products_v3.scss +++ b/app/webpacker/css/admin/products_v3.scss @@ -64,7 +64,6 @@ background-color: white; padding: 4px 0; - z-index: 1; // Ensure tom-select and .disabled-section are covered } th.with-input { From 013ee6e9b7954572306d9c04ef9a35bc21321d3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:06:32 +0000 Subject: [PATCH 214/219] Bump view_component from 3.9.0 to 3.10.0 Bumps [view_component](https://github.com/viewcomponent/view_component) from 3.9.0 to 3.10.0. - [Release notes](https://github.com/viewcomponent/view_component/releases) - [Changelog](https://github.com/ViewComponent/view_component/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/viewcomponent/view_component/compare/v3.9.0...v3.10.0) --- updated-dependencies: - dependency-name: view_component dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab1cf953de..af84c0b8ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -753,7 +753,7 @@ GEM validates_lengths_from_database (0.8.0) activerecord (>= 4) vcr (6.2.0) - view_component (3.9.0) + view_component (3.10.0) activesupport (>= 5.2.0, < 8.0) concurrent-ruby (~> 1.0) method_source (~> 1.0) From 286816700d8e3a1fdf2e89088c496c5dd9742e75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:08:02 +0000 Subject: [PATCH 215/219] Bump knapsack_pro from 6.0.3 to 6.0.4 Bumps [knapsack_pro](https://github.com/KnapsackPro/knapsack_pro-ruby) from 6.0.3 to 6.0.4. - [Changelog](https://github.com/KnapsackPro/knapsack_pro-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/KnapsackPro/knapsack_pro-ruby/compare/v6.0.3...v6.0.4) --- updated-dependencies: - dependency-name: knapsack_pro dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab1cf953de..023de4018e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -380,7 +380,7 @@ GEM jsonapi-serializer (2.2.0) activesupport (>= 4.2) jwt (2.7.1) - knapsack_pro (6.0.3) + knapsack_pro (6.0.4) rake language_server-protocol (3.17.0.3) launchy (2.5.0) From bb031b6bf67181951fdd5261d173e9b414845e4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:09:23 +0000 Subject: [PATCH 216/219] Bump faraday from 2.8.1 to 2.9.0 Bumps [faraday](https://github.com/lostisland/faraday) from 2.8.1 to 2.9.0. - [Release notes](https://github.com/lostisland/faraday/releases) - [Changelog](https://github.com/lostisland/faraday/blob/main/CHANGELOG.md) - [Commits](https://github.com/lostisland/faraday/compare/v2.8.1...v2.9.0) --- updated-dependencies: - dependency-name: faraday dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index ab1cf953de..676bedc2f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -271,13 +271,12 @@ GEM factory_bot_rails (6.2.0) factory_bot (~> 6.2.0) railties (>= 5.0.0) - faraday (2.8.1) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) + faraday (2.9.0) + faraday-net_http (>= 2.0, < 3.2) faraday-follow_redirects (0.3.0) faraday (>= 1, < 3) - faraday-net_http (3.0.2) + faraday-net_http (3.1.0) + net-http ferrum (0.14) addressable (~> 2.5) concurrent-ruby (~> 1.1) @@ -419,6 +418,8 @@ GEM msgpack (1.7.2) multi_json (1.15.0) multi_xml (0.6.0) + net-http (0.4.1) + uri net-imap (0.4.2) date net-protocol @@ -658,7 +659,6 @@ GEM ruby-rc4 (0.1.5) ruby-vips (2.1.4) ffi (~> 1.12) - ruby2_keywords (0.0.5) rubyzip (2.3.2) rufus-scheduler (3.8.2) fugit (~> 1.1, >= 1.1.6) @@ -741,6 +741,7 @@ GEM concurrent-ruby (~> 1.0) unicode-display_width (2.5.0) uniform_notifier (1.16.0) + uri (0.13.0) valid_email2 (5.1.1) activemodel (>= 3.2) mail (~> 2.5) From 30b5d065c1526d9fdbb972b9f799b15b218da545 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 11 Jan 2024 15:13:41 +1100 Subject: [PATCH 217/219] Replace deprecated swagger syntax --- config/initializers/rswag_ui.rb | 2 +- engines/dfc_provider/spec/swagger_helper.rb | 2 +- spec/swagger_helper.rb | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/config/initializers/rswag_ui.rb b/config/initializers/rswag_ui.rb index 81ab58c1b9..2dfa56c504 100644 --- a/config/initializers/rswag_ui.rb +++ b/config/initializers/rswag_ui.rb @@ -6,7 +6,7 @@ Rswag::Ui.configure do |config| # host) to the corresponding endpoint and the second is a title that will be # displayed in the document selector. # NOTE: If you're using rspec-api to expose Swagger files - # (under swagger_root) as JSON or YAML endpoints, then the list below should + # (under openapi_root) as JSON or YAML endpoints, then the list below should # correspond to the relative paths for those endpoints. config.openapi_endpoint 'v1.yaml', 'API V1 Docs' diff --git a/engines/dfc_provider/spec/swagger_helper.rb b/engines/dfc_provider/spec/swagger_helper.rb index 3a549d38ca..ebc26a578d 100644 --- a/engines/dfc_provider/spec/swagger_helper.rb +++ b/engines/dfc_provider/spec/swagger_helper.rb @@ -5,7 +5,7 @@ require_relative "spec_helper" RSpec.configure do |config| # Override swagger docs to generate only this file: - config.swagger_docs = { + config.openapi_specs = { 'dfc.yaml' => { openapi: '3.0.1', info: { diff --git a/spec/swagger_helper.rb b/spec/swagger_helper.rb index a8a2495577..0a131fb5ff 100644 --- a/spec/swagger_helper.rb +++ b/spec/swagger_helper.rb @@ -9,15 +9,15 @@ RSpec.configure do |config| # Specify a root folder where Swagger JSON files are generated # NOTE: If you're using the rswag-api to serve API descriptions, you'll need # to ensure that it's configured to serve Swagger from the same folder - config.swagger_root = Rails.root.join('swagger').to_s + config.openapi_root = Rails.root.join('swagger').to_s # Define one or more Swagger documents and provide global metadata for each one # When you run the 'rswag:specs:swaggerize' rake task, the complete Swagger will - # be generated at the provided relative path under swagger_root + # be generated at the provided relative path under openapi_root # By default, the operations defined in spec files are added to the first # document below. You can override this behavior by adding a swagger_doc tag to the # the root example_group in your specs, e.g. describe '...', swagger_doc: 'v2/swagger.json' - config.swagger_docs = { + config.openapi_specs = { 'v1.yaml' => { openapi: '3.0.1', info: { @@ -70,7 +70,7 @@ RSpec.configure do |config| # The swagger_docs configuration option has the filename including format in # the key, this may want to be changed to avoid putting yaml in json files. # Defaults to json. Accepts ':json' and ':yaml'. - config.swagger_format = :yaml + config.openapi_format = :yaml end module RswagExtension From 3425be4deddd9915219eef9f2d38c07c6b725046 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Thu, 11 Jan 2024 15:14:10 +1100 Subject: [PATCH 218/219] Show DFC API first in documentation The capabilities and documentation for the DFC API are bigger. And since it's in active development, people want to check the DFC API more frequently. They needed to find the switch to select the DFC API in the top right corner but now it's displayed straight away. --- config/initializers/rswag_ui.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/rswag_ui.rb b/config/initializers/rswag_ui.rb index 2dfa56c504..e8f8d4096b 100644 --- a/config/initializers/rswag_ui.rb +++ b/config/initializers/rswag_ui.rb @@ -9,8 +9,8 @@ Rswag::Ui.configure do |config| # (under openapi_root) as JSON or YAML endpoints, then the list below should # correspond to the relative paths for those endpoints. - config.openapi_endpoint 'v1.yaml', 'API V1 Docs' config.openapi_endpoint 'dfc.yaml', 'OFN DFC API Docs' + config.openapi_endpoint 'v1.yaml', 'API V1 Docs' # Add Basic Auth in case your API is private # config.basic_auth_enabled = true From f66cdba0da56b63464afa3a23e995e9e7c62438f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 09:13:52 +0000 Subject: [PATCH 219/219] Bump newrelic_rpm from 9.6.0 to 9.7.0 Bumps [newrelic_rpm](https://github.com/newrelic/newrelic-ruby-agent) from 9.6.0 to 9.7.0. - [Release notes](https://github.com/newrelic/newrelic-ruby-agent/releases) - [Changelog](https://github.com/newrelic/newrelic-ruby-agent/blob/dev/CHANGELOG.md) - [Commits](https://github.com/newrelic/newrelic-ruby-agent/compare/9.6.0...9.7.0) --- updated-dependencies: - dependency-name: newrelic_rpm dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index fafc690ab2..563692f8e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -170,7 +170,6 @@ GEM aws-sigv4 (~> 1.8) aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) - base64 (0.2.0) bcp47_spec (0.2.1) bcrypt (3.1.19) bigdecimal (3.0.2) @@ -429,8 +428,7 @@ GEM timeout net-smtp (0.4.0) net-protocol - newrelic_rpm (9.6.0) - base64 + newrelic_rpm (9.7.0) nio4r (2.7.0) nokogiri (1.16.0) mini_portile2 (~> 2.8.2)