diff --git a/app/controllers/invoice_controller.rb b/app/controllers/invoice_controller.rb index 52edbc2..2291abc 100644 --- a/app/controllers/invoice_controller.rb +++ b/app/controllers/invoice_controller.rb @@ -26,10 +26,10 @@ class InvoiceController < ApplicationController service = Quickbooks::Service::Invoice.new(:company_id => qbo.realm_id, :access_token => access_token) # If multiple id's then pull each pdf & combine them - if params[:item_ids] - logger.info("Grabbing pdfs for " + params[:item_ids].join(', ')) + if params[:invoice_ids] + logger.info("Grabbing pdfs for " + params[:invoice_ids].join(', ')) ref = "" - params[:item_ids].each do |i| + params[:invoice_ids].each do |i| logger.info("processing " + i) invoice = service.fetch_by_id(i) ref += " #{invoice.doc_number}" diff --git a/app/views/invoices/_list.html.erb b/app/views/invoices/_list.html.erb index a38b3db..2332277 100644 --- a/app/views/invoices/_list.html.erb +++ b/app/views/invoices/_list.html.erb @@ -3,13 +3,15 @@ <%= form_with(url: invoice_path, method: :get) do |form| %>
- <%= check_box_tag "select_all", "1", false, id: "select-all-batches" %> - <%= label_tag "select-all-batches", "Select All Items" %> + <%= check_box_tag "select-all-invoices", "1", false, id: "select-all-invoices" %> + <%= label_tag "select-all-invoices", "Select All Invioces" %>
+
+ <% @customer.invoices.order(id: :desc).each do |invoice| %>
- <%= check_box_tag "item_ids[]", invoice.id, false,data: { checkbox_select_all_target: "checkbox", class: "item-checkbox" } %> + <%= check_box_tag "invoice_ids[]", invoice.id, false, class: "invoice-checkbox" %> <%= link_to "##{invoice.doc_number}", invoice_path(invoice), target: :_blank %> <%= invoice.txn_date %>
<% end %> diff --git a/assets/javascripts/checkbox_controller.js b/assets/javascripts/checkbox_controller.js index 9bccee3..f7d298c 100644 --- a/assets/javascripts/checkbox_controller.js +++ b/assets/javascripts/checkbox_controller.js @@ -1,23 +1,17 @@ -document.addEventListener("turbo:load", () => { - const selectAllBox = document.getElementById("select-all-batches"); - const checkboxes = document.querySelectorAll(".item-checkbox"); +document.addEventListener('DOMContentLoaded', () => { + const select_all_invoice = document.getElementById('select-all-invoices'); + const invoices = document.querySelectorAll('.invoice-checkbox'); - if (selectAllBox) { - selectAllBox.addEventListener("change", function() { - checkboxes.forEach((checkbox) => { - checkbox.checked = this.checked; - }); - }); - - // Optional: Uncheck "Select All" if an individual box is unchecked - checkboxes.forEach((checkbox) => { - checkbox.addEventListener("change", () => { - if (!checkbox.checked) { - selectAllBox.checked = false; - } else if (Array.from(checkboxes).every(c => c.checked)) { - selectAllBox.checked = true; - } - }); + if (select_all_invoice) { + select_all_invoice.addEventListener('change', (e) => { + invoices.forEach(item => item.checked = e.target.checked); }); } + + invoices.forEach(item => { + item.addEventListener('change', () => { + const allChecked = Array.from(invoices).every(i => i.checked); + select_all_invoice.checked = allChecked; + }); + }); }); \ No newline at end of file