5 Commits

Author SHA1 Message Date
1febdc3e04 2026.3.5 2026-03-09 20:52:38 -04:00
d1f8f027c0 Allow doing math in price field for each markups 2026-03-09 20:45:26 -04:00
c5dd50a369 Minium required Redmine QBO version bump for breaking changes 2026-03-09 08:26:48 -04:00
92ecf171b9 2026.3.4 2026-03-09 08:20:45 -04:00
70dc594cb2 Fixed url for plugin 2026-03-09 08:20:05 -04:00
5 changed files with 41 additions and 6 deletions

View File

@@ -21,7 +21,7 @@ This plugin allows **billable line items** to be attached to a Redmine issue. Wh
| Plugin Version | Redmine Version | Ruby Version | | Plugin Version | Redmine Version | Ruby Version |
| --- | --- | --- | | --- | --- | --- |
| 2026.3.3+ | 6.1.x | 3.2+ | | 2026.3.5+ | 6.1.x | 3.2+ |
--- ---

View File

@@ -23,9 +23,10 @@
</td> </td>
<td data-label="<%= t :label_price %>"> <td data-label="<%= t :label_price %>">
<%= f.number_field :unit_price, <%= f.text_field :unit_price,
step: 0.01,
class: "price-field", class: "price-field",
inputmode: "decimal",
autocomplete: "off",
no_label: true, no_label: true,
disabled: readonly %> disabled: readonly %>
</td> </td>

View File

@@ -0,0 +1,33 @@
function evaluateMathExpression(expr) {
if (!expr) return null;
// allow only digits, decimal, operators, parentheses, spaces
if (!/^[0-9+\-*/().\s]+$/.test(expr)) {
return null;
}
try {
return Function('"use strict"; return (' + expr + ')')();
} catch {
return null;
}
}
document.addEventListener("blur", function(e) {
if (!e.target.classList.contains("price-field")) return;
const field = e.target;
const value = field.value.trim();
const result = evaluateMathExpression(value);
if (result !== null && !isNaN(result)) {
field.value = Number(result).toFixed(2);
}
if (typeof updateLineItemTotals === "function") {
updateLineItemTotals();
}
}, true);

View File

@@ -14,15 +14,15 @@ Redmine::Plugin.register :redmine_qbo_lineitems do
name 'Redmine QBO Line Items plugin' name 'Redmine QBO Line Items plugin'
author 'Rick Barrette' author 'Rick Barrette'
description 'A plugin for Redmine to extend the capabilitys of the Redmine QuickBooks Online plugin to attach billable line items to an isuue' description 'A plugin for Redmine to extend the capabilitys of the Redmine QuickBooks Online plugin to attach billable line items to an isuue'
version '2026.3.3' version '2026.3.5'
url 'https://github.com/rickbarrette/redmine_qbo' url 'https://github.com/rickbarrette/redmine_qbo_lineitems'
author_url 'https://barrettefabrication.com' author_url 'https://barrettefabrication.com'
requires_redmine version_or_higher: '6.1.0' requires_redmine version_or_higher: '6.1.0'
settings partial: 'line_items/settings' settings partial: 'line_items/settings'
# Ensure redmine_qbo is installed # Ensure redmine_qbo is installed
begin begin
requires_redmine_plugin :redmine_qbo, version_or_higher: '2026.3.3' requires_redmine_plugin :redmine_qbo, version_or_higher: '2026.3.5'
rescue Redmine::PluginNotFound rescue Redmine::PluginNotFound
raise 'Please install the redmine_qbo plugin (https://github.com/rickbarrette/redmine_qbo)' raise 'Please install the redmine_qbo plugin (https://github.com/rickbarrette/redmine_qbo)'
end end

View File

@@ -19,6 +19,7 @@ module RedmineQboLineItems
javascript_include_tag( 'nested_form_controller', plugin: :redmine_qbo_lineitems), javascript_include_tag( 'nested_form_controller', plugin: :redmine_qbo_lineitems),
javascript_include_tag("line_items", plugin: :redmine_qbo_lineitems), javascript_include_tag("line_items", plugin: :redmine_qbo_lineitems),
javascript_include_tag("autocomplete", plugin: :redmine_qbo_lineitems), javascript_include_tag("autocomplete", plugin: :redmine_qbo_lineitems),
javascript_include_tag("blur", plugin: :redmine_qbo_lineitems),
stylesheet_link_tag("line_items", plugin: :redmine_qbo_lineitems) stylesheet_link_tag("line_items", plugin: :redmine_qbo_lineitems)
]) ])
end end