Skip to content

Commit

Permalink
notify if any distributors doesn't have an abn
Browse files Browse the repository at this point in the history
  • Loading branch information
abdellani committed May 13, 2024
1 parent 4a3f413 commit 3e86db5
Showing 1 changed file with 33 additions and 18 deletions.
51 changes: 33 additions & 18 deletions app/reflexes/admin/orders_reflex.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,9 @@ def ship
end

def bulk_invoice(params)
visible_orders = editable_orders.invoiceable.where(id: params[:bulk_ids])
visible_orders = bulk_load_orders

if Spree::Config.enterprise_number_required_on_invoices?
distributors_without_abn = Enterprise.where(
id: visible_orders.select(:distributor_id),
abn: nil,
)

if distributors_without_abn.exists?
render_business_number_required_error(distributors_without_abn)
return
end
end
return if notify_if_abn_related_issue(visible_orders)

cable_ready.append(
selector: "#orders-index",
Expand Down Expand Up @@ -92,16 +82,16 @@ def resend_confirmation_emails(params)
success("admin.resend_confirmation_emails_feedback", params[:bulk_ids].count)
end

def send_invoices(params)
count = 0
editable_orders.invoiceable.where(id: params[:bulk_ids]).find_each do |o|
next unless o.distributor.can_invoice?
def send_invoices(_params)
orders = bulk_load_orders

return if notify_if_abn_related_issue(orders)

orders.each do |o|
Spree::OrderMailer.invoice_email(o.id, current_user_id: current_user.id).deliver_later
count += 1
end

success("admin.send_invoice_feedback", count)
success("admin.send_invoice_feedback", orders.size)
end

private
Expand Down Expand Up @@ -133,5 +123,30 @@ def render_business_number_required_error(distributors)
enterprise_name: distributor_names.join(", "))
morph_admin_flashes
end

def bulk_load_orders
editable_orders.invoiceable.where(id: params[:bulk_ids])
end

def notify_if_abn_related_issue(orders)
return false unless abn_required?

distributors = distributors_without_abn(orders)
return false if distributors.empty?

render_business_number_required_error(distributors_without_abn)
true
end

def abn_required?
Spree::Config.enterprise_number_required_on_invoices?
end

def distributors_without_abn(orders)
Enterprise.where(
id: orders.select(:distributor_id),
abn: nil,
)
end
end
end

0 comments on commit 3e86db5

Please sign in to comment.