From 8658b1a74324001389cb1565f74133da72a45d31 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Fri, 17 Feb 2023 11:28:30 +0100 Subject: [PATCH 01/14] Remove quick filter that search only on displayed line items + remove specs as well --- .../line_items_controller.js.coffee | 1 - .../admin/orders/bulk_management.html.haml | 4 +- .../admin/bulk_order_management_spec.rb | 65 ------------------- 3 files changed, 1 insertion(+), 69 deletions(-) diff --git a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee index d2dc108464..1932043f7d 100644 --- a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee @@ -26,7 +26,6 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, $scope.distributorFilter = '' $scope.supplierFilter = '' $scope.orderCycleFilter = '' - $scope.quickSearch = '' $scope.startDate = undefined $scope.endDate = undefined event = new CustomEvent('flatpickr:clear') diff --git a/app/views/spree/admin/orders/bulk_management.html.haml b/app/views/spree/admin/orders/bulk_management.html.haml index 2c3090a17c..354e7c09af 100644 --- a/app/views/spree/admin/orders/bulk_management.html.haml +++ b/app/views/spree/admin/orders/bulk_management.html.haml @@ -97,8 +97,6 @@ .clear %div{ ng: { hide: 'RequestMonitor.loading || line_items.length == 0' }, style: "display: flex; justify-content: flex-start; column-gap: 10px; margin-bottom: 15px" } - %div{ style: "flex-grow: 1" } - %input.fullwidth{ :type => "text", :id => 'quick_search', 'ng-model' => 'quickSearch', :placeholder => 'Quick Search' } -# This -20px is a hack to make the dropdowns align properly %div{ style: "margin-right: -20px;" } = render 'admin/shared/bulk_actions_dropdown' @@ -162,7 +160,7 @@ = "#{t('admin.price')} (#{Spree::Money.currency_symbol})" %th.actions - %tr.line_item{ ng: { repeat: "line_item in filteredLineItems = ( line_items | filter:quickSearch | variantFilter:selectedUnitsProduct:selectedUnitsVariant:sharedResource | orderBy:sorting.predicate:sorting.reverse )", 'class-even' => "'even'", 'class-odd' => "'odd'", attr: { id: "li_{{line_item.id}}" } } } + %tr.line_item{ ng: { repeat: "line_item in filteredLineItems = ( line_items | variantFilter:selectedUnitsProduct:selectedUnitsVariant:sharedResource | orderBy:sorting.predicate:sorting.reverse )", 'class-even' => "'even'", 'class-odd' => "'odd'", attr: { id: "li_{{line_item.id}}" } } } %td.bulk %input{ :type => "checkbox", :name => 'bulk', 'ng-model' => 'line_item.checked', 'ignore-dirty' => true } %td.order_no{ 'ng-show' => 'columns.order_no.visible' } {{ line_item.order.number }} diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index d7547a126d..5b34876861 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -602,38 +602,6 @@ describe ' end end - context "using quick search" do - let!(:o1) { - create(:order_with_distributor, state: 'complete', shipment_state: 'ready', - completed_at: Time.zone.now ) - } - let!(:o2) { - create(:order_with_distributor, state: 'complete', shipment_state: 'ready', - completed_at: Time.zone.now ) - } - let!(:o3) { - create(:order_with_distributor, state: 'complete', shipment_state: 'ready', - completed_at: Time.zone.now ) - } - let!(:li1) { create(:line_item_with_shipment, order: o1 ) } - let!(:li2) { create(:line_item_with_shipment, order: o2 ) } - let!(:li3) { create(:line_item_with_shipment, order: o3 ) } - - before :each do - visit_bulk_order_management - end - - it "filters line items based on their attributes and the contents of the quick search input" do - expect(page).to have_selector "tr#li_#{li1.id}" - expect(page).to have_selector "tr#li_#{li2.id}" - expect(page).to have_selector "tr#li_#{li3.id}" - fill_in "quick_search", with: o1.email - expect(page).to have_selector "tr#li_#{li1.id}" - expect(page).to have_no_selector "tr#li_#{li2.id}" - expect(page).to have_no_selector "tr#li_#{li3.id}" - end - end - context "using date restriction controls" do let!(:o1) { create(:order_with_distributor, state: 'complete', shipment_state: 'ready', @@ -793,39 +761,6 @@ describe ' end.to have_enqueued_mail(Spree::OrderMailer, :cancel_email) end end - - context "when a filter has been applied" do - it "only toggles checkboxes which are in filteredLineItems" do - fill_in "quick_search", with: o1.number - expect(page).to have_no_selector "tr#li_#{li2.id}" - check "toggle_bulk" - fill_in "quick_search", with: '' - wait_until { request_monitor_finished 'LineItemsCtrl' } - expect(find("tr#li_#{li1.id} input[type='checkbox'][name='bulk']").checked?).to be true - expect(find("tr#li_#{li2.id} input[type='checkbox'][name='bulk']").checked?).to be false - expect(find("input[type='checkbox'][name='toggle_bulk']").checked?).to be false - end - - it "only applies the delete action to filteredLineItems" do - check "toggle_bulk" - fill_in "quick_search", with: o1.number - expect(page).to have_no_selector "tr#li_#{li2.id}" - - find("div#bulk-actions-dropdown").click - find("div#bulk-actions-dropdown div.menu_item", text: "Delete Selected" ).click - - within ".modal" do - click_on("OK") - end - - expect(page).to have_no_selector "tr#li_#{li1.id}" - expect(page).to have_selector "#quick_search" - fill_in "quick_search", with: '' - wait_until { request_monitor_finished 'LineItemsCtrl' } - expect(page).to have_selector "tr#li_#{li2.id}" - expect(page).to have_no_selector "tr#li_#{li1.id}" - end - end end context "using action buttons" do From ebd5d706c25d5b431f5d02bb7f234b8410d352cf Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Fri, 17 Feb 2023 11:38:12 +0100 Subject: [PATCH 02/14] Add search input Actually this only search for `order_email` or `order_number` or `product_name` or `supplier_name` + Improve display by reduce each columns width --- .../controllers/line_items_controller.js.coffee | 2 ++ .../spree/admin/orders/bulk_management.html.haml | 14 ++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee index 1932043f7d..d411c81440 100644 --- a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee @@ -26,6 +26,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, $scope.distributorFilter = '' $scope.supplierFilter = '' $scope.orderCycleFilter = '' + $scope.query = '' $scope.startDate = undefined $scope.endDate = undefined event = new CustomEvent('flatpickr:clear') @@ -59,6 +60,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, [formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate) RequestMonitor.load LineItems.index( + "q[variant_product_supplier_name_or_order_email_or_order_number_or_product_name_cont]": $scope.query, "q[order_state_not_eq]": "canceled", "q[order_shipment_state_not_eq]": "shipped", "q[order_completed_at_not_null]": "true", diff --git a/app/views/spree/admin/orders/bulk_management.html.haml b/app/views/spree/admin/orders/bulk_management.html.haml index 354e7c09af..3ca93cfc81 100644 --- a/app/views/spree/admin/orders/bulk_management.html.haml +++ b/app/views/spree/admin/orders/bulk_management.html.haml @@ -18,22 +18,28 @@ %input.red{ type: "button", value: "Save Changes", ng: { click: "submit()", disabled: "!bulk_order_form.$dirty" } } %legend{ align: 'center'}= t(:search) %div{ :class => "sixteen columns alpha" } - .filter_select{ :class => "four columns" } + .quick_search.three.columns.alpha + %label{ for: 'quick_filter' } + %br + %input.quick-search.fullwidth{ ng: {model: 'query'}, name: "quick_filter", type: 'text', placeholder: t('admin.quick_search'), "ng-keypress" => "$event.keyCode === 13 && fetchResults()" } + .one.columns +   + .filter_select{ :class => "three columns" } %label{ :for => 'supplier_filter' } = t("admin.producer") %br %input#supplier_filter.ofn-select2.fullwidth{ type: 'number', 'min-search' => 5, data: 'suppliers', placeholder: "#{t(:all)}", blank: "{ id: '', name: '#{t(:all)}' }", on: { selecting: "confirmRefresh" }, ng: { model: 'supplierFilter' } } - .filter_select{ :class => "four columns" } + .filter_select{ :class => "three columns" } %label{ :for => 'distributor_filter' } = t("admin.shop") %br %input#distributor_filter.ofn-select2.fullwidth{ type: 'number', 'min-search' => 5, data: 'distributors', placeholder: "#{t(:all)}", blank: "{ id: '', name: '#{t(:all)}' }", on: { selecting: "confirmRefresh" }, ng: { model: 'distributorFilter' } } - .filter_select{ :class => "four columns" } + .filter_select{ :class => "three columns" } %label{ :for => 'order_cycle_filter' } = t("admin.order_cycle") %br %input#order_cycle_filter.ofn-select2.fullwidth{ type: 'number', 'min-search' => 5, data: 'orderCycles', placeholder: "#{t(:all)}", blank: "{ id: '', name: '#{t(:all)}' }", on: { selecting: "confirmRefresh" }, ng: { model: 'orderCycleFilter' } } - .date_filter{class: "four columns"} + .date_filter{class: "three columns"} %label = t("date_range") %br From 8ad532c41a598b84a99c5116ad919cf160a36994 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 28 Feb 2023 17:16:25 +0100 Subject: [PATCH 03/14] Can search `bill_address:phone, firstname, lastname` and `distributor:name` --- .../line_items/controllers/line_items_controller.js.coffee | 2 +- app/models/enterprise.rb | 2 +- app/models/spree/address.rb | 2 +- app/models/spree/order.rb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee index d411c81440..1157e571b1 100644 --- a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee @@ -60,7 +60,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, [formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate) RequestMonitor.load LineItems.index( - "q[variant_product_supplier_name_or_order_email_or_order_number_or_product_name_cont]": $scope.query, + "q[order_distributor_name_or_order_bill_address_phone_or_order_bill_address_firstname_or_order_bill_address_lastname_or_variant_product_supplier_name_or_order_email_or_order_number_or_product_name_cont]": $scope.query, "q[order_state_not_eq]": "canceled", "q[order_shipment_state_not_eq]": "shipped", "q[order_completed_at_not_null]": "true", diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index 20f0aba26d..5efc7ea1cf 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -17,7 +17,7 @@ class Enterprise < ApplicationRecord }.freeze VALID_INSTAGRAM_REGEX = %r{\A[a-zA-Z0-9._]{1,30}([^/-]*)\z} - searchable_attributes :sells, :is_primary_producer + searchable_attributes :sells, :is_primary_producer, :name searchable_associations :properties searchable_scopes :is_primary_producer, :is_distributor, :is_hub, :activated, :visible, :ready_for_checkout, :not_ready_for_checkout diff --git a/app/models/spree/address.rb b/app/models/spree/address.rb index c40cb05a28..998cb0ec4f 100644 --- a/app/models/spree/address.rb +++ b/app/models/spree/address.rb @@ -4,7 +4,7 @@ module Spree class Address < ApplicationRecord include AddressDisplay - searchable_attributes :firstname, :lastname + searchable_attributes :firstname, :lastname, :phone searchable_associations :country, :state belongs_to :country, class_name: "Spree::Country" diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index e696b872e9..5032b9d650 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -14,7 +14,7 @@ module Spree searchable_attributes :number, :state, :shipment_state, :payment_state, :distributor_id, :order_cycle_id, :email, :total, :customer_id - searchable_associations :shipping_method, :bill_address + searchable_associations :shipping_method, :bill_address, :distributor searchable_scopes :complete, :incomplete checkout_flow do From 50bc48c96f6eed347241dbb046e62f6995f1c343 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Tue, 28 Feb 2023 17:37:24 +0100 Subject: [PATCH 04/14] Introduce some specs around searching in BOM --- .../admin/bulk_order_management_spec.rb | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/spec/system/admin/bulk_order_management_spec.rb b/spec/system/admin/bulk_order_management_spec.rb index 5b34876861..506e1c9de6 100644 --- a/spec/system/admin/bulk_order_management_spec.rb +++ b/spec/system/admin/bulk_order_management_spec.rb @@ -127,6 +127,81 @@ describe ' end end + context "searching" do + let!(:a1) { create(:address, phone: "1234567890", firstname: "Willy", lastname: "Wonka") } + let!(:o1) { + create(:order_with_distributor, state: 'complete', shipment_state: 'ready', + completed_at: Time.zone.now, bill_address: a1) + } + let!(:o2) { + create(:order_with_distributor, state: 'complete', shipment_state: 'ready', + completed_at: Time.zone.now ) + } + let!(:s1) { create(:supplier_enterprise) } + let!(:s2) { create(:supplier_enterprise) } + let!(:li1) { create(:line_item_with_shipment, order: o1, product: create(:product, supplier: s1)) } + let!(:li2) { create(:line_item_with_shipment, order: o2, product: create(:product, supplier: s2)) } + let!(:li3) { create(:line_item_with_shipment, order: o2, product: create(:product, supplier: s2)) } + + before :each do + visit_bulk_order_management + end + + it "by product name" do + fill_in "quick_filter", with: li1.product.name + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by supplier name" do + fill_in "quick_filter", with: li1.product.supplier.name + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by email" do + fill_in "quick_filter", with: o1.email + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by order number" do + fill_in "quick_filter", with: o1.number + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by phone number" do + fill_in "quick_filter", with: o1.bill_address.phone + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by distributor name" do + fill_in "quick_filter", with: o1.distributor.name + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + + it "by customer name" do + fill_in "quick_filter", with: o1.bill_address.firstname + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + + fill_in "quick_filter", with: o1.bill_address.lastname + page.find('.filter-actions .button.icon-search').click + + expect_line_items_results [li1], [li2, li3] + end + end + context "displaying individual columns" do let!(:o1) { create(:order_with_distributor, state: 'complete', shipment_state: 'ready', completed_at: Time.zone.now, @@ -1004,4 +1079,14 @@ describe ' expect(page).to have_selector "tr#li_#{li1.id}" expect(page).to have_selector "tr#li_#{li2.id}" end + + def expect_line_items_results(line_items, excluded_line_items) + expect(page).to have_text "Loading orders" + line_items.each do |li| + expect(page).to have_selector "tr#li_#{li.id}" + end + excluded_line_items.each do |li| + expect(page).to have_no_selector "tr#li_#{li.id}" + end + end end From ac739108a24218f60d001048cd788624905c8814 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Mon, 6 Mar 2023 11:31:36 +0100 Subject: [PATCH 05/14] Improve readability by generating search string for ransack --- .../controllers/line_items_controller.js.coffee | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee index 1157e571b1..3bf5c469d5 100644 --- a/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee +++ b/app/assets/javascripts/admin/line_items/controllers/line_items_controller.js.coffee @@ -17,7 +17,14 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, ] $scope.page = 1 $scope.per_page = $scope.per_page_options[0].id - + searchThrough = ["order_distributor_name", + "order_bill_address_phone", + "order_bill_address_firstname", + "order_bill_address_lastname", + "variant_product_supplier_name", + "order_email", + "order_number", + "product_name"].join("_or_") + "_cont" $scope.confirmRefresh = -> LineItems.allSaved() || confirm(t("unsaved_changes_warning")) @@ -60,7 +67,7 @@ angular.module("admin.lineItems").controller 'LineItemsCtrl', ($scope, $timeout, [formattedStartDate, formattedEndDate] = $scope.formatDates($scope.startDate, $scope.endDate) RequestMonitor.load LineItems.index( - "q[order_distributor_name_or_order_bill_address_phone_or_order_bill_address_firstname_or_order_bill_address_lastname_or_variant_product_supplier_name_or_order_email_or_order_number_or_product_name_cont]": $scope.query, + "q[#{searchThrough}]": $scope.query, "q[order_state_not_eq]": "canceled", "q[order_shipment_state_not_eq]": "shipped", "q[order_completed_at_not_null]": "true", From 3dc3ebe5845dd8e6c368dd1721c975cef6179b05 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 7 Mar 2023 08:38:30 +1100 Subject: [PATCH 06/14] Correctly include order id in return auth spec The route to update a return authorization must include the order number as id: /admin/orders/:order_id/return_authorizations/:id(.:format) The spec only worked because the controller's ivars were not reset between requests and the order was already set. But Rails 7 will reset the ivars and it failed finding the order without a given id. --- .../spree/admin/return_authorizations_controller_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb index 7c19cfc7d3..cad5697347 100644 --- a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +++ b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb @@ -27,7 +27,8 @@ module Spree reset_controller_environment # Update return authorization - spree_put :update, id: return_authorization.id, + spree_put :update, order_id: order.number, + id: return_authorization.id, return_authorization: { amount: "10.2", reason: "half broken" } expect(response).to redirect_to spree.admin_order_return_authorizations_url(order.number) From 797b98d68684f4b4be7fa1e61e63811da61d2ae4 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Tue, 7 Mar 2023 08:45:10 +1100 Subject: [PATCH 07/14] Remove Rails 5.0 controller spec workaround We added a method to work around a bug. But that's not needed any more. --- spec/controllers/admin/schedules_controller_spec.rb | 2 -- .../spree/admin/return_authorizations_controller_spec.rb | 3 --- spec/support/controller_helper.rb | 8 -------- 3 files changed, 13 deletions(-) diff --git a/spec/controllers/admin/schedules_controller_spec.rb b/spec/controllers/admin/schedules_controller_spec.rb index 75fb5eea72..97a0fbcce8 100644 --- a/spec/controllers/admin/schedules_controller_spec.rb +++ b/spec/controllers/admin/schedules_controller_spec.rb @@ -122,10 +122,8 @@ describe Admin::SchedulesController, type: :controller do spree_put :update, format: :json, id: coordinated_schedule.id, order_cycle_ids: [coordinated_order_cycle.id, coordinated_order_cycle2.id] - reset_controller_environment spree_put :update, format: :json, id: coordinated_schedule.id, order_cycle_ids: [coordinated_order_cycle.id] - reset_controller_environment spree_put :update, format: :json, id: coordinated_schedule.id, order_cycle_ids: [coordinated_order_cycle.id] end diff --git a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb index cad5697347..aaf7bc81d6 100644 --- a/spec/controllers/spree/admin/return_authorizations_controller_spec.rb +++ b/spec/controllers/spree/admin/return_authorizations_controller_spec.rb @@ -23,9 +23,6 @@ module Spree expect(return_authorization.amount.to_s).to eq "20.2" expect(return_authorization.reason.to_s).to eq "broken" - # Reset the test controller between requests - reset_controller_environment - # Update return authorization spree_put :update, order_id: order.number, id: return_authorization.id, diff --git a/spec/support/controller_helper.rb b/spec/support/controller_helper.rb index df64e2a438..622afe37f6 100644 --- a/spec/support/controller_helper.rb +++ b/spec/support/controller_helper.rb @@ -24,13 +24,5 @@ module OpenFoodNetwork allow(controller).to receive_messages(spree_current_user: @enterprise_user) end - - def reset_controller_environment - # Rails 5.0 introduced a bug in controller tests (fixed in 5.2) where the controller's - # environment is essentially cached if multiple requests are made in the same `it` block, - # meaning subsequent requests will not be handled well. This resets the environment. - # This edge case is quite rare though; normally we only do one request per test. - @request.env.delete("RAW_POST_DATA") - end end end From 729bcdf29197413367e98ef5009d8f6d0ea483aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 09:58:49 +0000 Subject: [PATCH 08/14] Bump @floating-ui/dom from 1.2.3 to 1.2.4 Bumps [@floating-ui/dom](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/dom) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/floating-ui/floating-ui/releases) - [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/dom@1.2.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 | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 30dacb0336..978fd2c3ba 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@babel/preset-env": "^7.18.2", - "@floating-ui/dom": "^1.2.3", + "@floating-ui/dom": "^1.2.4", "@hotwired/turbo": "^7.3.0", "@rails/webpacker": "5.4.4", "babel-loader": "^8.2.3", diff --git a/yarn.lock b/yarn.lock index 19187ab282..28a7a129b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1397,17 +1397,17 @@ resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== -"@floating-ui/core@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.2.tgz#66f62cf1b7de2ed23a09c101808536e68caffaec" - integrity sha512-FaO9KVLFnxknZaGWGmNtjD2CVFuc0u4yeGEofoyXO2wgRA7fLtkngT6UB0vtWQWuhH3iMTZZ/Y89CMeyGfn8pA== - -"@floating-ui/dom@^1.2.3": +"@floating-ui/core@^1.2.3": version "1.2.3" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.3.tgz#8dc6fbf799fbb5c29f705b54bdd51f3ab0ee03a2" - integrity sha512-lK9cZUrHSJLMVAdCvDqs6Ug8gr0wmqksYiaoj/bxj2gweRQkSuhg2/V6Jswz2KiQ0RAULbqw1oQDJIMpQ5GfGA== + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.2.3.tgz#327a2c11e6570b7d64368ad74a3ac12786c9f751" + integrity sha512-upVRtrNZuYNsw+EoxkiBFRPROnU8UTy/u/dZ9U0W14BlemPYODwhhxYXSR2Y9xOnvr1XtptJRWx7gL8Te1qaog== + +"@floating-ui/dom@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.2.4.tgz#e2eb2674f57fc182c425587e48ea43e336f4b8f8" + integrity sha512-4+k+BLhtWj+peCU60gp0+rHeR8+Ohqx6kjJf/lHMnJ8JD5Qj6jytcq1+SZzRwD7rvHKRhR7TDiWWddrNrfwQLg== dependencies: - "@floating-ui/core" "^1.2.2" + "@floating-ui/core" "^1.2.3" "@hotwired/stimulus-webpack-helpers@^1.0.0": version "1.0.1" From f23de206d9c69e5a070c0e795e852fecea51712b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 10:03:01 +0000 Subject: [PATCH 09/14] Bump ddtrace from 1.10.0 to 1.10.1 Bumps [ddtrace](https://github.com/DataDog/dd-trace-rb) from 1.10.0 to 1.10.1. - [Release notes](https://github.com/DataDog/dd-trace-rb/releases) - [Changelog](https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md) - [Commits](https://github.com/DataDog/dd-trace-rb/compare/v1.10.0...v1.10.1) --- updated-dependencies: - dependency-name: ddtrace 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 35076d518e..0767ba6878 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -231,7 +231,7 @@ GEM database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) date (3.3.3) - ddtrace (1.10.0) + ddtrace (1.10.1) debase-ruby_core_source (>= 0.10.16, <= 3.2.0) libdatadog (~> 2.0.0.1.0) libddwaf (~> 1.6.2.0.0) From e5f5d42d5920985c481cb6bedb622c896a92de0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 10:05:22 +0000 Subject: [PATCH 10/14] Bump rubocop from 1.48.0 to 1.48.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.48.0 to 1.48.1. - [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.48.0...v1.48.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development 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 35076d518e..b2dc991a82 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -459,7 +459,7 @@ GEM parallel (1.22.1) paranoia (2.6.1) activerecord (>= 5.1, < 7.1) - parser (3.2.1.0) + parser (3.2.1.1) ast (~> 2.4.1) paypal-sdk-core (0.3.4) multi_json (~> 1.0) @@ -605,7 +605,7 @@ GEM rswag-ui (2.8.0) actionpack (>= 3.1, < 7.1) railties (>= 3.1, < 7.1) - rubocop (1.48.0) + rubocop (1.48.1) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) From b62f88512fdbcfbf3f1f24b79eced3b85d4521d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 15:24:41 +0000 Subject: [PATCH 11/14] Bump database_cleaner from 2.0.1 to 2.0.2 Bumps [database_cleaner](https://github.com/DatabaseCleaner/database_cleaner) from 2.0.1 to 2.0.2. - [Release notes](https://github.com/DatabaseCleaner/database_cleaner/releases) - [Changelog](https://github.com/DatabaseCleaner/database_cleaner/blob/main/History.rdoc) - [Commits](https://github.com/DatabaseCleaner/database_cleaner/compare/v2.0.1...v2.0.2) --- updated-dependencies: - dependency-name: database_cleaner dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index de40b4342c..301d233444 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -224,9 +224,9 @@ GEM cuprite (0.14.3) capybara (~> 3.0) ferrum (~> 0.13.0) - database_cleaner (2.0.1) - database_cleaner-active_record (~> 2.0.0) - database_cleaner-active_record (2.0.0) + database_cleaner (2.0.2) + database_cleaner-active_record (>= 2, < 3) + database_cleaner-active_record (2.1.0) activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) @@ -402,7 +402,7 @@ GEM mini_portile2 (2.8.1) mini_racer (0.6.3) libv8-node (~> 16.10.0.0) - minitest (5.17.0) + minitest (5.18.0) monetize (1.12.0) money (~> 6.12) money (6.16.0) From 1f08da207f01d1d2a38326e35bfe29ea98ea2339 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Mar 2023 09:59:50 +0000 Subject: [PATCH 12/14] Bump rails from 6.1.7.2 to 6.1.7.3 Bumps [rails](https://github.com/rails/rails) from 6.1.7.2 to 6.1.7.3. - [Release notes](https://github.com/rails/rails/releases) - [Commits](https://github.com/rails/rails/compare/v6.1.7.2...v6.1.7.3) --- updated-dependencies: - dependency-name: rails dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 108 +++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 301d233444..87355209f9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,42 +44,42 @@ GEM remote: https://rubygems.org/ specs: Ascii85 (1.1.0) - actioncable (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) + actioncable (6.1.7.3) + actionpack (= 6.1.7.3) + activesupport (= 6.1.7.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) - actionmailbox (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionmailbox (6.1.7.3) + actionpack (= 6.1.7.3) + activejob (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) mail (>= 2.7.1) - actionmailer (6.1.7.2) - actionpack (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionmailer (6.1.7.3) + actionpack (= 6.1.7.3) + actionview (= 6.1.7.3) + activejob (= 6.1.7.3) + activesupport (= 6.1.7.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (6.1.7.2) - actionview (= 6.1.7.2) - activesupport (= 6.1.7.2) + actionpack (6.1.7.3) + actionview (= 6.1.7.3) + activesupport (= 6.1.7.3) rack (~> 2.0, >= 2.0.9) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.2.0) actionpack-action_caching (1.2.2) actionpack (>= 4.0.0) - actiontext (6.1.7.2) - actionpack (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + actiontext (6.1.7.3) + actionpack (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) nokogiri (>= 1.8.5) - actionview (6.1.7.2) - activesupport (= 6.1.7.2) + actionview (6.1.7.3) + activesupport (= 6.1.7.3) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -91,19 +91,19 @@ GEM activemodel (>= 5.2.0) activestorage (>= 5.2.0) activesupport (>= 5.2.0) - activejob (6.1.7.2) - activesupport (= 6.1.7.2) + activejob (6.1.7.3) + activesupport (= 6.1.7.3) globalid (>= 0.3.6) activemerchant (1.123.0) activesupport (>= 4.2) builder (>= 2.1.2, < 4.0.0) i18n (>= 0.6.9) nokogiri (~> 1.4) - activemodel (6.1.7.2) - activesupport (= 6.1.7.2) - activerecord (6.1.7.2) - activemodel (= 6.1.7.2) - activesupport (= 6.1.7.2) + activemodel (6.1.7.3) + activesupport (= 6.1.7.3) + activerecord (6.1.7.3) + activemodel (= 6.1.7.3) + activesupport (= 6.1.7.3) activerecord-import (1.4.1) activerecord (>= 4.2) activerecord-postgresql-adapter (0.0.1) @@ -114,14 +114,14 @@ GEM multi_json (~> 1.11, >= 1.11.2) rack (>= 2.0.8, < 3) railties (>= 5.2.4.1) - activestorage (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activesupport (= 6.1.7.2) + activestorage (6.1.7.3) + actionpack (= 6.1.7.3) + activejob (= 6.1.7.3) + activerecord (= 6.1.7.3) + activesupport (= 6.1.7.3) marcel (~> 1.0) mini_mime (>= 1.1.0) - activesupport (6.1.7.2) + activesupport (6.1.7.3) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (>= 1.6, < 2) minitest (>= 5.1) @@ -482,7 +482,7 @@ GEM nio4r (~> 2.0) raabro (1.4.0) racc (1.6.2) - rack (2.2.6.3) + rack (2.2.6.4) rack-mini-profiler (2.3.4) rack (>= 1.2.0) rack-oauth2 (1.21.3) @@ -499,20 +499,20 @@ GEM rack-test (2.0.2) rack (>= 1.3) rack-timeout (0.6.3) - rails (6.1.7.2) - actioncable (= 6.1.7.2) - actionmailbox (= 6.1.7.2) - actionmailer (= 6.1.7.2) - actionpack (= 6.1.7.2) - actiontext (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activemodel (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) + rails (6.1.7.3) + actioncable (= 6.1.7.3) + actionmailbox (= 6.1.7.3) + actionmailer (= 6.1.7.3) + actionpack (= 6.1.7.3) + actiontext (= 6.1.7.3) + actionview (= 6.1.7.3) + activejob (= 6.1.7.3) + activemodel (= 6.1.7.3) + activerecord (= 6.1.7.3) + activestorage (= 6.1.7.3) + activesupport (= 6.1.7.3) bundler (>= 1.15.0) - railties (= 6.1.7.2) + railties (= 6.1.7.3) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) @@ -532,9 +532,9 @@ GEM i18n (>= 0.7, < 2) railties (>= 6.0.0, < 8) rails_safe_tasks (1.0.0) - railties (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) + railties (6.1.7.3) + actionpack (= 6.1.7.3) + activesupport (= 6.1.7.3) method_source rake (>= 12.2) thor (~> 1.0) From 584b013a49c76e8a46fb3ac1542368b5113c172a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Mar 2023 10:05:08 +0000 Subject: [PATCH 13/14] Bump sidekiq from 7.0.6 to 7.0.7 Bumps [sidekiq](https://github.com/sidekiq/sidekiq) from 7.0.6 to 7.0.7. - [Release notes](https://github.com/sidekiq/sidekiq/releases) - [Changelog](https://github.com/sidekiq/sidekiq/blob/main/Changes.md) - [Commits](https://github.com/sidekiq/sidekiq/compare/v7.0.6...v7.0.7) --- updated-dependencies: - dependency-name: sidekiq 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 87355209f9..55dcd00503 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -549,7 +549,7 @@ GEM ffi (~> 1.0) redcarpet (3.6.0) redis (4.8.1) - redis-client (0.13.0) + redis-client (0.14.0) connection_pool regexp_parser (2.7.0) reline (0.3.2) @@ -642,7 +642,7 @@ GEM semantic_range (3.0.0) shoulda-matchers (5.3.0) activesupport (>= 5.2.0) - sidekiq (7.0.6) + sidekiq (7.0.7) concurrent-ruby (< 2) connection_pool (>= 2.3.0) rack (>= 2.2.4) From 4757b82a80254f88dfb3b51e4ce452e18dc6fbb4 Mon Sep 17 00:00:00 2001 From: David Cook Date: Thu, 16 Mar 2023 14:15:04 +1100 Subject: [PATCH 14/14] Update all locales with the latest Transifex translations --- config/locales/en_CA.yml | 19 ++++++++++++++++ config/locales/fr_CA.yml | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/config/locales/en_CA.yml b/config/locales/en_CA.yml index 1d7eec2249..f4572e1529 100644 --- a/config/locales/en_CA.yml +++ b/config/locales/en_CA.yml @@ -6,12 +6,22 @@ en_CA: spree/shipping_method: Shipping/Pick-up Method attributes: spree/order/ship_address: + address1: "Shipping address (House number + Street)" address2: "Shipping address line 2" + city: "Shipping address city" country: "Shipping address country" phone: "Phone number" firstname: "First name" lastname: "Last name" zipcode: "Shipping address postal code" + spree/order/bill_address: + address1: "Billing address (House number & Street)" + zipcode: "Billing address Postal Code" + city: "Billing address City" + country: "Billing address country" + firstname: "Billing address first name" + lastname: "Billing address last name" + phone: Customer phone spree/user: password: "Password" password_confirmation: "Password confirmation" @@ -1313,6 +1323,7 @@ en_CA: total_by_customer: Total by Customer total_by_supplier: Total By Supplier supplier_totals: Order Cycle Supplier Totals + percentage: "%{value} %" supplier_totals_by_distributor: Order Cycle Supplier Totals by Distributor totals_by_supplier: Order Cycle Distributor Totals by Supplier customer_totals: Order Cycle Customer Totals @@ -1323,6 +1334,8 @@ en_CA: addresses: Addresses payment_methods: Payment Methods Report delivery: Delivery Report + sales_tax_totals_by_producer: Sales Tax Totals by Producer + sales_tax_totals_by_order: Sales Tax Totals by Order tax_types: Tax Types tax_rates: Tax Rates pack_by_customer: Pack By Customer @@ -2671,6 +2684,7 @@ en_CA: report_header_tax_on_delivery: "Tax on Delivery (%{currency_symbol})" report_header_tax_on_fees: "Tax on Fees (%{currency_symbol})" report_header_tax_category: "Tax Category" + report_header_tax_rate_name: "Tax Rate Name" report_header_tax_rate: "Tax Rate" report_header_total_tax: "Total Tax (%{currency_symbol})" report_header_total_excl_tax: "Total excl. tax (%{currency_symbol})" @@ -2694,6 +2708,7 @@ en_CA: report_header_supplier: Supplier report_header_producer: Producer report_header_producer_suburb: Producer City/Town + report_header_producer_tax_status: Producer Tax Status report_header_producer_charges_sales_tax?: Tax registered report_header_unit: Unit report_header_group_buy_unit_quantity: Group Buy Unit Quantity @@ -2710,6 +2725,7 @@ en_CA: report_header_distributor_address: Distributor address report_header_distributor_city: Distributor city report_header_distributor_postcode: Distributor postal code + report_header_distributor_tax_status: Distributor Tax Status report_header_delivery_address: Delivery Address report_header_delivery_postcode: Delivery Postal Code report_header_bulk_unit_size: Bulk Unit Size @@ -3083,6 +3099,9 @@ en_CA: cancel_the_order_send_cancelation_email: "Send a cancellation email to the customer." restock_item: "Restock Items: Return this item to stock" restock_items: "Restock Items: Return all items to stock" + delete_line_items_html: + one: "This will delete one line item from the order.
Are you sure you want to proceed?" + other: "This will delete %{count} line items from the order.
Are you sure you want to proceed?" resend_user_email_confirmation: resend: "Resend" sending: "Resend..." diff --git a/config/locales/fr_CA.yml b/config/locales/fr_CA.yml index d96d05b87a..6247fde01f 100644 --- a/config/locales/fr_CA.yml +++ b/config/locales/fr_CA.yml @@ -6,9 +6,22 @@ fr_CA: spree/shipping_method: Option d'expédition attributes: spree/order/ship_address: + address1: "Adresse de livraison (Numéro et Rue)" + address2: "Adresse (Numéro et rue)" + city: "Adresse de livraison - Ville" + country: "Pays" phone: "Numéro de téléphone" firstname: "Prénom" lastname: "Nom de famille" + zipcode: "Code postal" + spree/order/bill_address: + address1: "Adresse de facturation (Numéro et rue)" + zipcode: "Adresse de facturation - Code postal" + city: "Adresse de facturation - Ville" + country: "Adresse de facturation - Pays" + firstname: "Adresse de facturation - Prénom" + lastname: "Adresse de facturation - Nom" + phone: Téléphone spree/user: password: "Mot de passe" password_confirmation: "Confirmation du mot de passe" @@ -409,8 +422,11 @@ fr_CA: filters: categories: title: Conditions de transport + selected_categories: "%{count} catégories sélectionnées" producers: title: Producteurs + selected_producers: "%{count} producteurs sélectionnés" + per_page: "%{count} éléments par page" colums: Colonnes columns: name: Nom @@ -666,6 +682,7 @@ fr_CA: not_found: n'a pas été trouvé dans la base de donnée category_not_found: n'est pas conforme aux catégories utilisées. Merci de modifier les catégories en utilisant celles listées sur la page d'import ou vérifier qu'il n'y ait pas de faute de frappe ou d'espace à fin du mot. not_updatable: ne peut pas être mis à jour pour des produits existants via la fonctionnalité d'import de fichier produits + values_must_be_same: doit être identique pour les produits avec un nom identique blank: Champ obligatoire products_no_permission: vous n'avez pas les droits requis pour gérer les produits de cette entreprise inventory_no_permission: Vous n'avez pas la permission de créer un catalogue boutique pour ce producteur @@ -1309,6 +1326,7 @@ fr_CA: total_by_customer: Total par acheteur total_by_supplier: Total par producteur supplier_totals: Totaux Cycle de Vente par Producteur + percentage: "%{value}%" supplier_totals_by_distributor: Totaux Cycle de Vente par Producteur pour chaque Hub Distributeur totals_by_supplier: Totaux Cycle de Vente par Hub Distributeur pour chaque Producteur customer_totals: Totaux Cycle de Vente par Acheteur @@ -1319,6 +1337,8 @@ fr_CA: addresses: Adresses payment_methods: Rapport Méthodes de Paiement delivery: Rapport de Livraison + sales_tax_totals_by_producer: Détail des montants de taxes par producteur + sales_tax_totals_by_order: Détail des montants de taxes par commande tax_types: Type de taxe tax_rates: Taux de taxe pack_by_customer: Préparation des commandes par Acheteur @@ -1497,6 +1517,10 @@ fr_CA: stripe_connect_fail: Désolé, la connexion de votre compte Stripe a échoué :-( stripe_connect_settings: resource: Configuration de Stripe Connect + resend_confirmation_emails_feedback: + one: "Emails envoyés pour 1 commande." + many: "Emails envoyés pour %{count} commandes" + other: "Emails envoyés pour %{count} commandes." api: unknown_error: "Quelque chose n'a pas fonctionné. Notre équipe a été notifiée." invalid_api_key: " La clé API (%{key}) n'est pas valide." @@ -1807,6 +1831,7 @@ fr_CA: message_html: "Vous avez déjà passé une commande pour ce cycle de vente. Vérifiez votre %{cart} pour voir les produits commandés. Vous pouvez annuler ou modifier votre commande jusqu'à la fermeture du cycle de vente." step1: contact_information: + title: Contact email: label: Email phone: @@ -1860,10 +1885,13 @@ fr_CA: title: Détails de livraison edit: Modifier address: Adresse de livraison + instructions: Instructions payment_method: title: Méthode de paiement edit: Modifier + instructions: Instructions order: + title: Total commande edit: Modifier terms_and_conditions: message_html: "J'accepte les %{terms_and_conditions_link}" @@ -1876,6 +1904,7 @@ fr_CA: submit: Valider ma commande cancel: Retour à la méthode de paiement errors: + saving_failed: "La sauvegarde n'a pas fonctionné, veuillez mettre à jour les champs en rouge.%{messages}" terms_not_accepted: Merci d'accepter les CGU & CGV. required: Ce champ ne peut pas être vide invalid_number: "Merci de renseigner un numéro de téléphone valide" @@ -2576,6 +2605,7 @@ fr_CA: report_customers_cycle: "Cycle de vente" report_customers_type: "Type de rapport" report_customers_csv: "Télécharger en csv" + report_customers: Acheteur report_producers: "Producteurs" report_type: "Type de rapport" report_hubs: "Hubs" @@ -2657,6 +2687,7 @@ fr_CA: report_header_tax_on_delivery: "Taxe sur livraison (%{currency_symbol})" report_header_tax_on_fees: "Taxe sur commission hub (%{currency_symbol})" report_header_tax_category: "Type de taxe" + report_header_tax_rate_name: "Taxe" report_header_tax_rate: "Taxe applicable" report_header_total_tax: "Total Taxe (%{currency_symbol})" report_header_total_excl_tax: "Total HT (%{currency_symbol})" @@ -2667,6 +2698,7 @@ fr_CA: report_header_customer_code: Code acheteur report_header_product: Produit report_header_product_properties: Propriétés / labels Produits + report_header_product_tax_category: Taxe applicable report_header_quantity: Nb commandé report_header_max_quantity: Quantité Max report_header_variant: Variante @@ -2679,6 +2711,8 @@ fr_CA: report_header_supplier: Fournisseur report_header_producer: Producteur report_header_producer_suburb: Ville Producteur + report_header_producer_tax_status: Soumis à la taxe + report_header_producer_charges_sales_tax?: Soumis à la GST report_header_unit: Unité report_header_group_buy_unit_quantity: Nb d'unités achetées (vente par lots) report_header_cost: Coût @@ -2694,10 +2728,12 @@ fr_CA: report_header_distributor_address: Adresse Hub Distributeur report_header_distributor_city: Ville Distributeur report_header_distributor_postcode: Code Postal Distributeur + report_header_distributor_tax_status: Statut de la boutique report_header_delivery_address: Adresse Livraison report_header_delivery_postcode: Code Postal Livraison report_header_bulk_unit_size: Quantité totale du lot report_header_weight: Poids + report_header_final_weight_volume: Poids ou volume livré report_header_height: Hauteur report_header_width: Largeur report_header_depth: Profondeur @@ -2876,6 +2912,7 @@ fr_CA: deleting_item_will_cancel_order: "Cette opération va rendre une ou plusieurs commandes vides, sans aucun produit. Elles vont ainsi être annulées. Souhaitez-vous continuer ?" modals: got_it: "J'ai compris" + confirm: "Valider" close: "Fermer" continue: "Suivant" cancel: "Annuler" @@ -3432,6 +3469,8 @@ fr_CA: server_error: "Erreur serveur" shipping_method_names: UPS Ground: "UPS Ground" + pick_up: "Retrait" + delivery: "Signé, scellé, livré" start_date: "Date de début" successfully_removed: "Supprimé avec succès" taxonomy_edit: "Modifier la taxonomie" @@ -3516,6 +3555,7 @@ fr_CA: display_currency: "Afficher la devise" choose_currency: "Choisir la devise" mail_method_settings: "Paramètre méthode mail" + mail_settings_notice_html: "Les modifications apportées ici seront temporaireset peuvent changer à la prochaine mise à jour.
Si vous souhaitez réaliser des changements permanents, un administrateur système doit se charger de mettre à jour les informations et provisionner le serveur en utilisant ofn-install ." general: "Général" enable_mail_delivery: "Permettre distribution des mails" send_mails_as: "Envoyer les mails en tant que" @@ -3638,6 +3678,7 @@ fr_CA: messages: included_price_validation: "Ce cycle de vente a déjà été utilisé par un acheteur et ne peut être supprimé. Pour empêcher aux acheteurs d'y accéder, veuillez plutôt le fermer." blank: "Champ obligatoire" + invalid_instagram_url: "Uniquement le nom d'utilisateur / identifiant par ex. le_prof" layouts: admin: login_nav: @@ -3748,6 +3789,7 @@ fr_CA: print_invoices: "Imprimer les factures" cancel_orders: "Annuler les commandes" resend_confirmation: "Renvoyer la confirmation" + resend_confirmation_confirm_html: "Cette action va renvoyer l'email de confirmation de commande. Etes-vous sûr de vouloir continuer ?" selected: zero: "Aucune commande sélectionnée" one: "1 commande sélectionnée" @@ -3896,6 +3938,7 @@ fr_CA: title: "Nouveau Produit" new_product: "Nouveau Produit" supplier: "Fournisseur" + supplier_select_placeholder: "Sélectionner un producteur" product_name: "Nom du Produit" units: "Unité de mesure" value: "Nb unités" @@ -3941,6 +3984,9 @@ fr_CA: select_and_search: "Sélectionner les filtres et cliquez sur %{option} pour accéder aux données." customer_names_message: customer_names_tip: "Si les noms des acheteurs sont masqué, vous pouvez contacter le gestionnaire de la boutique. Il pourra vous donner accès à cette information." + products_and_inventory: + all_products: + message: "Attention les stocks correspondent aux stocks producteurs et non au stock du catalogue boutique." users: index: listing_users: "Liste des utilisateurs" @@ -4304,6 +4350,7 @@ fr_CA: search_input: placeholder: Chercher selector_with_filter: + selected_items: "%{count} sélectionné" search_placeholder: Chercher pagination: next: Suivant