"use strict";
function _72eab514_defineProperty(e, r, t) { return (r = _72eab514_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _72eab514_toPropertyKey(t) { var i = _72eab514_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _72eab514_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
/**
* Frontend_Invoices_Add Component
*
* Handles dynamic line items and invoice calculations
*/
class Frontend_Invoices_Add {
static async on_app_ready() {
if (!$(".Frontend_Invoices_Add").exists()) return;
// Add line item button
$('#addLineItem').on('click', () => {
Frontend_Invoices_Add.add_line_item();
});
// Initial calculation
Frontend_Invoices_Add.calculate_totals();
// Attach event handlers to existing line items
Frontend_Invoices_Add.attach_line_item_handlers();
// Tax rate change
$('#tax_rate').on('input', () => {
Frontend_Invoices_Add.calculate_totals();
});
}
static attach_line_item_handlers() {
// Quantity and rate changes
$('.item-quantity, .item-rate').off('input').on('input', function () {
Frontend_Invoices_Add.update_line_item_amount($(this).closest('tr'));
Frontend_Invoices_Add.calculate_totals();
});
// Remove item buttons
$('.remove-item').off('click').on('click', function () {
const $row = $(this).closest('tr');
if ($('#lineItemsBody tr').length > 1) {
$row.remove();
Frontend_Invoices_Add.calculate_totals();
} else {
alert('Invoice must have at least one line item');
}
});
}
static add_line_item() {
const index = Frontend_Invoices_Add.line_item_count++;
const $row = $(`
|
|
|
$
|
$0.00
|
|
`);
$('#lineItemsBody').append($row);
Frontend_Invoices_Add.attach_line_item_handlers();
}
static update_line_item_amount(row) {
const quantity = float(row.find('.item-quantity').val()) || 0;
const rate = float(row.find('.item-rate').val()) || 0;
const amount = quantity * rate;
row.find('.item-amount').text(`$${amount.toFixed(2)}`);
}
static calculate_totals() {
let subtotal = 0;
// Calculate subtotal from all line items
$('#lineItemsBody tr').each(function () {
const quantity = float($(this).find('.item-quantity').val()) || 0;
const rate = float($(this).find('.item-rate').val()) || 0;
subtotal += quantity * rate;
});
// Calculate tax
const tax_rate = float($('#tax_rate').val()) || 0;
const tax_amount = subtotal * (tax_rate / 100);
const total = subtotal + tax_amount;
// Update displays
$('#subtotalDisplay').text(`$${subtotal.toFixed(2)}`);
$('#taxDisplay').text(`$${tax_amount.toFixed(2)}`);
$('#totalDisplay').text(`$${total.toFixed(2)}`);
}
}
_72eab514_defineProperty(Frontend_Invoices_Add, "line_item_count", 1);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGcm9udGVuZF9JbnZvaWNlc19BZGQiLCJvbl9hcHBfcmVhZHkiLCIkIiwiZXhpc3RzIiwib24iLCJhZGRfbGluZV9pdGVtIiwiY2FsY3VsYXRlX3RvdGFscyIsImF0dGFjaF9saW5lX2l0ZW1faGFuZGxlcnMiLCJvZmYiLCJ1cGRhdGVfbGluZV9pdGVtX2Ftb3VudCIsImNsb3Nlc3QiLCIkcm93IiwibGVuZ3RoIiwicmVtb3ZlIiwiYWxlcnQiLCJpbmRleCIsImxpbmVfaXRlbV9jb3VudCIsImFwcGVuZCIsInJvdyIsInF1YW50aXR5IiwiZmxvYXQiLCJmaW5kIiwidmFsIiwicmF0ZSIsImFtb3VudCIsInRleHQiLCJ0b0ZpeGVkIiwic3VidG90YWwiLCJlYWNoIiwidGF4X3JhdGUiLCJ0YXhfYW1vdW50IiwidG90YWwiLCJfNzJlYWI1MTRfZGVmaW5lUHJvcGVydHkiXSwic291cmNlcyI6WyJyc3gvYXBwL2Zyb250ZW5kL2ludm9pY2VzL2Zyb250ZW5kX2ludm9pY2VzX2FkZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZyb250ZW5kX0ludm9pY2VzX0FkZCBDb21wb25lbnRcbiAqXG4gKiBIYW5kbGVzIGR5bmFtaWMgbGluZSBpdGVtcyBhbmQgaW52b2ljZSBjYWxjdWxhdGlvbnNcbiAqL1xuY2xhc3MgRnJvbnRlbmRfSW52b2ljZXNfQWRkIHtcbiAgICBzdGF0aWMgbGluZV9pdGVtX2NvdW50ID0gMTtcblxuICAgIHN0YXRpYyBhc3luYyBvbl9hcHBfcmVhZHkoKSB7XG4gICAgICAgIGlmICghJChcIi5Gcm9udGVuZF9JbnZvaWNlc19BZGRcIikuZXhpc3RzKCkpIHJldHVybjtcblxuICAgICAgICAvLyBBZGQgbGluZSBpdGVtIGJ1dHRvblxuICAgICAgICAkKCcjYWRkTGluZUl0ZW0nKS5vbignY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgICBGcm9udGVuZF9JbnZvaWNlc19BZGQuYWRkX2xpbmVfaXRlbSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbml0aWFsIGNhbGN1bGF0aW9uXG4gICAgICAgIEZyb250ZW5kX0ludm9pY2VzX0FkZC5jYWxjdWxhdGVfdG90YWxzKCk7XG5cbiAgICAgICAgLy8gQXR0YWNoIGV2ZW50IGhhbmRsZXJzIHRvIGV4aXN0aW5nIGxpbmUgaXRlbXNcbiAgICAgICAgRnJvbnRlbmRfSW52b2ljZXNfQWRkLmF0dGFjaF9saW5lX2l0ZW1faGFuZGxlcnMoKTtcblxuICAgICAgICAvLyBUYXggcmF0ZSBjaGFuZ2VcbiAgICAgICAgJCgnI3RheF9yYXRlJykub24oJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICAgICAgRnJvbnRlbmRfSW52b2ljZXNfQWRkLmNhbGN1bGF0ZV90b3RhbHMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGF0dGFjaF9saW5lX2l0ZW1faGFuZGxlcnMoKSB7XG4gICAgICAgIC8vIFF1YW50aXR5IGFuZCByYXRlIGNoYW5nZXNcbiAgICAgICAgJCgnLml0ZW0tcXVhbnRpdHksIC5pdGVtLXJhdGUnKS5vZmYoJ2lucHV0Jykub24oJ2lucHV0JywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBGcm9udGVuZF9JbnZvaWNlc19BZGQudXBkYXRlX2xpbmVfaXRlbV9hbW91bnQoJCh0aGlzKS5jbG9zZXN0KCd0cicpKTtcbiAgICAgICAgICAgIEZyb250ZW5kX0ludm9pY2VzX0FkZC5jYWxjdWxhdGVfdG90YWxzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFJlbW92ZSBpdGVtIGJ1dHRvbnNcbiAgICAgICAgJCgnLnJlbW92ZS1pdGVtJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgJHJvdyA9ICQodGhpcykuY2xvc2VzdCgndHInKTtcbiAgICAgICAgICAgIGlmICgkKCcjbGluZUl0ZW1zQm9keSB0cicpLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAkcm93LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIEZyb250ZW5kX0ludm9pY2VzX0FkZC5jYWxjdWxhdGVfdG90YWxzKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFsZXJ0KCdJbnZvaWNlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgbGluZSBpdGVtJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHN0YXRpYyBhZGRfbGluZV9pdGVtKCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IEZyb250ZW5kX0ludm9pY2VzX0FkZC5saW5lX2l0ZW1fY291bnQrKztcbiAgICAgICAgY29uc3QgJHJvdyA9ICQoYFxuICAgICAgICAgICAgPHRyIGNsYXNzPVwibGluZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiBuYW1lPVwiaXRlbXNbJHtpbmRleH1dW2Rlc2NyaXB0aW9uXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkl0ZW0gZGVzY3JpcHRpb25cIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gdGV4dC1lbmQgaXRlbS1xdWFudGl0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiaXRlbXNbJHtpbmRleH1dW3F1YW50aXR5XVwiIHZhbHVlPVwiMVwiIG1pbj1cIjBcIiBzdGVwPVwiMC4wMVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtc21cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5wdXQtZ3JvdXAtdGV4dFwiPiQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHRleHQtZW5kIGl0ZW0tcmF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIml0ZW1zWyR7aW5kZXh9XVtyYXRlXVwiIHZhbHVlPVwiMC4wMFwiIG1pbj1cIjBcIiBzdGVwPVwiMC4wMVwiIHJlcXVpcmVkPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGl0ZW0tYW1vdW50XCI+JDAuMDA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tZGFuZ2VyIHJlbW92ZS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLXRyYXNoXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgYCk7XG5cbiAgICAgICAgJCgnI2xpbmVJdGVtc0JvZHknKS5hcHBlbmQoJHJvdyk7XG4gICAgICAgIEZyb250ZW5kX0ludm9pY2VzX0FkZC5hdHRhY2hfbGluZV9pdGVtX2hhbmRsZXJzKCk7XG4gICAgfVxuXG4gICAgc3RhdGljIHVwZGF0ZV9saW5lX2l0ZW1fYW1vdW50KHJvdykge1xuICAgICAgICBjb25zdCBxdWFudGl0eSA9IGZsb2F0KHJvdy5maW5kKCcuaXRlbS1xdWFudGl0eScpLnZhbCgpKSB8fCAwO1xuICAgICAgICBjb25zdCByYXRlID0gZmxvYXQocm93LmZpbmQoJy5pdGVtLXJhdGUnKS52YWwoKSkgfHwgMDtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gcXVhbnRpdHkgKiByYXRlO1xuXG4gICAgICAgIHJvdy5maW5kKCcuaXRlbS1hbW91bnQnKS50ZXh0KGAkJHthbW91bnQudG9GaXhlZCgyKX1gKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY2FsY3VsYXRlX3RvdGFscygpIHtcbiAgICAgICAgbGV0IHN1YnRvdGFsID0gMDtcblxuICAgICAgICAvLyBDYWxjdWxhdGUgc3VidG90YWwgZnJvbSBhbGwgbGluZSBpdGVtc1xuICAgICAgICAkKCcjbGluZUl0ZW1zQm9keSB0cicpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCBxdWFudGl0eSA9IGZsb2F0KCQodGhpcykuZmluZCgnLml0ZW0tcXVhbnRpdHknKS52YWwoKSkgfHwgMDtcbiAgICAgICAgICAgIGNvbnN0IHJhdGUgPSBmbG9hdCgkKHRoaXMpLmZpbmQoJy5pdGVtLXJhdGUnKS52YWwoKSkgfHwgMDtcbiAgICAgICAgICAgIHN1YnRvdGFsICs9IHF1YW50aXR5ICogcmF0ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIHRheFxuICAgICAgICBjb25zdCB0YXhfcmF0ZSA9IGZsb2F0KCQoJyN0YXhfcmF0ZScpLnZhbCgpKSB8fCAwO1xuICAgICAgICBjb25zdCB0YXhfYW1vdW50ID0gc3VidG90YWwgKiAodGF4X3JhdGUgLyAxMDApO1xuICAgICAgICBjb25zdCB0b3RhbCA9IHN1YnRvdGFsICsgdGF4X2Ftb3VudDtcblxuICAgICAgICAvLyBVcGRhdGUgZGlzcGxheXNcbiAgICAgICAgJCgnI3N1YnRvdGFsRGlzcGxheScpLnRleHQoYCQke3N1YnRvdGFsLnRvRml4ZWQoMil9YCk7XG4gICAgICAgICQoJyN0YXhEaXNwbGF5JykudGV4dChgJCR7dGF4X2Ftb3VudC50b0ZpeGVkKDIpfWApO1xuICAgICAgICAkKCcjdG90YWxEaXNwbGF5JykudGV4dChgJCR7dG90YWwudG9GaXhlZCgyKX1gKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLHFCQUFxQixDQUFDO0VBR3hCLGFBQWFDLFlBQVlBLENBQUEsRUFBRztJQUN4QixJQUFJLENBQUNDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDQyxNQUFNLENBQUMsQ0FBQyxFQUFFOztJQUUzQztJQUNBRCxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUNFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUNoQ0oscUJBQXFCLENBQUNLLGFBQWEsQ0FBQyxDQUFDO0lBQ3pDLENBQUMsQ0FBQzs7SUFFRjtJQUNBTCxxQkFBcUIsQ0FBQ00sZ0JBQWdCLENBQUMsQ0FBQzs7SUFFeEM7SUFDQU4scUJBQXFCLENBQUNPLHlCQUF5QixDQUFDLENBQUM7O0lBRWpEO0lBQ0FMLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQ0UsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNO01BQzdCSixxQkFBcUIsQ0FBQ00sZ0JBQWdCLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUM7RUFDTjtFQUVBLE9BQU9DLHlCQUF5QkEsQ0FBQSxFQUFHO0lBQy9CO0lBQ0FMLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUNKLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztNQUNoRUoscUJBQXFCLENBQUNTLHVCQUF1QixDQUFDUCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUNRLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUNwRVYscUJBQXFCLENBQUNNLGdCQUFnQixDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDOztJQUVGO0lBQ0FKLENB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