mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Merge pull request #3963 from luisramos0/hide_invoices
Hide invoices feature
This commit is contained in:
@@ -68,7 +68,6 @@ Metrics/LineLength:
|
||||
- app/helpers/shop_helper.rb
|
||||
- app/helpers/spree/admin/base_helper_decorator.rb
|
||||
- app/helpers/spree/admin/navigation_helper_decorator.rb
|
||||
- app/helpers/spree/admin/orders_helper_decorator.rb
|
||||
- app/helpers/spree/orders_helper.rb
|
||||
- app/jobs/subscription_confirm_job.rb
|
||||
- app/mailers/subscription_mailer.rb
|
||||
@@ -427,7 +426,6 @@ Metrics/AbcSize:
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/i18n_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/orders_helper_decorator.rb
|
||||
- app/helpers/spree/orders_helper.rb
|
||||
- app/jobs/subscription_placement_job.rb
|
||||
- app/mailers/producer_mailer.rb
|
||||
@@ -568,7 +566,6 @@ Metrics/CyclomaticComplexity:
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/i18n_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/orders_helper_decorator.rb
|
||||
- app/models/enterprise.rb
|
||||
- app/models/enterprise_relationship.rb
|
||||
- app/models/product_import/entry_processor.rb
|
||||
@@ -598,7 +595,6 @@ Metrics/PerceivedComplexity:
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/i18n_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/orders_helper_decorator.rb
|
||||
- app/models/enterprise_relationship.rb
|
||||
- app/models/product_import/entry_processor.rb
|
||||
- app/models/product_import/entry_validator.rb
|
||||
@@ -644,7 +640,6 @@ Metrics/MethodLength:
|
||||
- app/controllers/user_registrations_controller.rb
|
||||
- app/helpers/checkout_helper.rb
|
||||
- app/helpers/order_cycles_helper.rb
|
||||
- app/helpers/spree/admin/orders_helper_decorator.rb
|
||||
- app/jobs/subscription_placement_job.rb
|
||||
- app/mailers/producer_mailer.rb
|
||||
- app/models/column_preference.rb
|
||||
|
||||
@@ -2,27 +2,102 @@ module Spree
|
||||
module Admin
|
||||
module OrdersHelper
|
||||
def order_links(order)
|
||||
@order ||= order
|
||||
links = []
|
||||
links << { name: t(:edit_order), url: edit_admin_order_path(order), icon: 'icon-edit' } unless action_name == "edit"
|
||||
if @order.complete?
|
||||
links << { name: t(:resend_confirmation), url: resend_admin_order_path(order), icon: 'icon-email', method: 'post', confirm: t(:confirm_resend_order_confirmation) }
|
||||
if @order.distributor.can_invoice?
|
||||
links << { name: t(:send_invoice), url: invoice_admin_order_path(order), icon: 'icon-email', confirm: t(:confirm_send_invoice) }
|
||||
else
|
||||
links << { name: t(:send_invoice), url: "#", icon: 'icon-email', confirm: t(:must_have_valid_business_number, enterprise_name: order.distributor.name) }
|
||||
end
|
||||
links << { name: t(:print_invoice), url: print_admin_order_path(order), icon: 'icon-print', target: "_blank" }
|
||||
if Spree::Config.enable_receipt_printing?
|
||||
links << { name: t(:print_ticket), url: print_ticket_admin_order_path(order), icon: 'icon-print', target: "_blank" }
|
||||
links << { name: t(:select_ticket_printer), url: "#{print_ticket_admin_order_path(order)}#select-printer", icon: 'icon-print', target: "_blank" }
|
||||
end
|
||||
end
|
||||
if @order.ready_to_ship?
|
||||
links << { name: t(:ship_order), url: fire_admin_order_path(@order, e: 'ship'), method: 'put', icon: 'icon-truck', confirm: t(:are_you_sure) }
|
||||
end
|
||||
links << { name: t(:cancel_order), url: fire_admin_order_path(@order.number, e: 'cancel'), icon: 'icon-trash', confirm: t(:are_you_sure) } if order.can_cancel?
|
||||
links << edit_order_link unless action_name == "edit"
|
||||
links.concat(complete_order_links) if @order.complete?
|
||||
links << ship_order_link if @order.ready_to_ship?
|
||||
links << cancel_order_link if @order.can_cancel?
|
||||
links
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def complete_order_links
|
||||
[resend_confirmation_link] + invoice_links + ticket_links
|
||||
end
|
||||
|
||||
def invoice_links
|
||||
return [] unless Spree::Config[:enable_invoices?]
|
||||
[send_invoice_link, print_invoice_link]
|
||||
end
|
||||
|
||||
def send_invoice_link
|
||||
if @order.distributor.can_invoice?
|
||||
send_invoice_link_with_url
|
||||
else
|
||||
send_invoice_link_without_url
|
||||
end
|
||||
end
|
||||
|
||||
def ticket_links
|
||||
return [] unless Spree::Config[:enable_receipt_printing?]
|
||||
[print_ticket_link, select_ticket_printer_link]
|
||||
end
|
||||
|
||||
def edit_order_link
|
||||
{ name: t(:edit_order),
|
||||
url: edit_admin_order_path(@order),
|
||||
icon: 'icon-edit' }
|
||||
end
|
||||
|
||||
def resend_confirmation_link
|
||||
{ name: t(:resend_confirmation),
|
||||
url: resend_admin_order_path(@order),
|
||||
icon: 'icon-email',
|
||||
method: 'post',
|
||||
confirm: t(:confirm_resend_order_confirmation) }
|
||||
end
|
||||
|
||||
def send_invoice_link_with_url
|
||||
{ name: t(:send_invoice),
|
||||
url: invoice_admin_order_path(@order),
|
||||
icon: 'icon-email',
|
||||
confirm: t(:confirm_send_invoice) }
|
||||
end
|
||||
|
||||
def send_invoice_link_without_url
|
||||
{ name: t(:send_invoice),
|
||||
url: "#",
|
||||
icon: 'icon-email',
|
||||
confirm: t(:must_have_valid_business_number, enterprise_name: @order.distributor.name) }
|
||||
end
|
||||
|
||||
def print_invoice_link
|
||||
{ name: t(:print_invoice),
|
||||
url: print_admin_order_path(@order),
|
||||
icon: 'icon-print',
|
||||
target: "_blank" }
|
||||
end
|
||||
|
||||
def print_ticket_link
|
||||
{ name: t(:print_ticket),
|
||||
url: print_ticket_admin_order_path(@order),
|
||||
icon: 'icon-print',
|
||||
target: "_blank" }
|
||||
end
|
||||
|
||||
def select_ticket_printer_link
|
||||
{ name: t(:select_ticket_printer),
|
||||
url: "#{print_ticket_admin_order_path(@order)}#select-printer",
|
||||
icon: 'icon-print',
|
||||
target: "_blank" }
|
||||
end
|
||||
|
||||
def ship_order_link
|
||||
{ name: t(:ship_order),
|
||||
url: fire_admin_order_path(@order, e: 'ship'),
|
||||
method: 'put',
|
||||
icon: 'icon-truck',
|
||||
confirm: t(:are_you_sure) }
|
||||
end
|
||||
|
||||
def cancel_order_link
|
||||
{ name: t(:cancel_order),
|
||||
url: fire_admin_order_path(@order.number, e: 'cancel'),
|
||||
icon: 'icon-trash',
|
||||
confirm: t(:are_you_sure) }
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -29,6 +29,7 @@ Spree::AppConfiguration.class_eval do
|
||||
preference :matomo_site_id, :string, default: nil
|
||||
|
||||
# Invoices & Receipts
|
||||
preference :enable_invoices?, :boolean, default: true
|
||||
preference :invoice_style2?, :boolean, default: false
|
||||
preference :enable_receipt_printing?, :boolean, default: false
|
||||
|
||||
|
||||
@@ -5,6 +5,11 @@
|
||||
|
||||
= form_tag main_app.admin_invoice_settings_path, :method => :put do
|
||||
|
||||
.field.align-center
|
||||
= hidden_field_tag 'preferences[enable_invoices?]', '0'
|
||||
= check_box_tag 'preferences[enable_invoices?]', '1', Spree::Config[:enable_invoices?]
|
||||
= label_tag nil, t('.enable_invoices?')
|
||||
|
||||
.field.align-center
|
||||
= hidden_field_tag 'preferences[invoice_style2?]', '0'
|
||||
= check_box_tag 'preferences[invoice_style2?]', '1', Spree::Config[:invoice_style2?]
|
||||
|
||||
@@ -19,8 +19,9 @@
|
||||
.row.index-controls{'ng-show' => '!RequestMonitor.loading && orders.length > 0'}
|
||||
= render partial: 'per_page_controls'
|
||||
|
||||
%button.invoices-modal{'ng-controller' => 'bulkInvoiceCtrl', 'ng-click' => 'createBulkInvoice()', 'ng-disabled' => 'selected_orders.length == 0'}
|
||||
= t('.print_invoices')
|
||||
- if Spree::Config[:enable_invoices?]
|
||||
%button.invoices-modal{'ng-controller' => 'bulkInvoiceCtrl', 'ng-click' => 'createBulkInvoice()', 'ng-disabled' => 'selected_orders.length == 0'}
|
||||
= t('.print_invoices')
|
||||
|
||||
%table#listing_orders.index.responsive{width: "100%", 'ng-init' => 'initialise()', 'ng-show' => "!RequestMonitor.loading && orders.length > 0" }
|
||||
%colgroup
|
||||
|
||||
@@ -366,9 +366,10 @@ en:
|
||||
|
||||
invoice_settings:
|
||||
edit:
|
||||
title: Invoice Settings
|
||||
invoice_style2?: Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)
|
||||
enable_receipt_printing?: Show options for printing receipts using thermal printers in order dropdown?
|
||||
title: "Invoice Settings"
|
||||
enable_invoices?: "Enable Invoices?"
|
||||
invoice_style2?: "Use the alternative invoice model that includes total tax breakdown per rate and tax rate info per item (not yet suitable for countries displaying prices excluding tax)"
|
||||
enable_receipt_printing?: "Show options for printing receipts using thermal printers in order dropdown?"
|
||||
|
||||
stripe_connect_settings:
|
||||
edit:
|
||||
|
||||
102
spec/helpers/spree/admin/orders_helper_spec.rb
Normal file
102
spec/helpers/spree/admin/orders_helper_spec.rb
Normal file
@@ -0,0 +1,102 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Spree::Admin::OrdersHelper, type: :helper do
|
||||
describe "#orders_links" do
|
||||
let(:order) { double(:order) }
|
||||
let(:distributor) { double(:enterprise) }
|
||||
|
||||
around do |example|
|
||||
original_invoices_setting = Spree::Config[:enable_invoices?]
|
||||
original_tickets_setting = Spree::Config[:enable_receipt_printing?]
|
||||
example.run
|
||||
Spree::Config[:enable_invoices?] = original_invoices_setting
|
||||
Spree::Config[:enable_receipt_printing?] = original_tickets_setting
|
||||
end
|
||||
|
||||
before do
|
||||
allow(order).to receive(:complete?) { false }
|
||||
allow(order).to receive(:ready_to_ship?) { false }
|
||||
allow(order).to receive(:can_cancel?) { false }
|
||||
Spree::Config[:enable_invoices?] = false
|
||||
Spree::Config[:enable_receipt_printing?] = false
|
||||
end
|
||||
|
||||
it "returns only edit order link when all conditions are set to false" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 1
|
||||
expect(links.first[:name]).to eq "Edit Order"
|
||||
end
|
||||
|
||||
context "complete order" do
|
||||
before do
|
||||
allow(order).to receive(:complete?) { true }
|
||||
end
|
||||
|
||||
it "returns edit order and resend confirmation links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 2
|
||||
expect(links[0][:name]).to eq "Edit Order"
|
||||
expect(links[1][:name]).to eq "Resend Confirmation"
|
||||
end
|
||||
|
||||
context "that can be canceled" do
|
||||
before do
|
||||
allow(order).to receive(:can_cancel?) { true }
|
||||
allow(order).to receive(:number) { 111 }
|
||||
end
|
||||
|
||||
it "adds cancel order link" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 3
|
||||
expect(links[2][:name]).to eq "Cancel Order"
|
||||
end
|
||||
end
|
||||
|
||||
context "that can be shipped" do
|
||||
before do
|
||||
allow(order).to receive(:ready_to_ship?) { true }
|
||||
end
|
||||
|
||||
it "adds ship order link" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 3
|
||||
expect(links[2][:name]).to eq "Ship Order"
|
||||
end
|
||||
end
|
||||
|
||||
context "with invoices enabled" do
|
||||
before do
|
||||
Spree::Config[:enable_invoices?] = true
|
||||
allow(order).to receive(:distributor) { distributor }
|
||||
allow(distributor).to receive(:can_invoice?) { true }
|
||||
end
|
||||
|
||||
it "adds send and print invoice links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 4
|
||||
expect(links[2][:name]).to eq "Send Invoice"
|
||||
expect(links[3][:name]).to eq "Print Invoice"
|
||||
end
|
||||
end
|
||||
|
||||
context "with tickets enabled" do
|
||||
before do
|
||||
Spree::Config[:enable_receipt_printing?] = true
|
||||
end
|
||||
|
||||
it "adds print and select ticket links" do
|
||||
links = helper.order_links(order)
|
||||
|
||||
expect(links.size).to eq 4
|
||||
expect(links[2][:name]).to eq "Print Ticket"
|
||||
expect(links[3][:name]).to eq "Select printer for tickets"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user