5 Commits

6 changed files with 22 additions and 7 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 |
| --- | --- | --- |
| 2026.3.3+ | 6.1.x | 3.2+ |
| 2026.3.5+ | 6.1.x | 3.2+ |
---

View File

@@ -15,6 +15,12 @@ class Item < ApplicationRecord
validates :unit_price, numericality: { greater_than_or_equal_to: 0 }
self.primary_key = :id
# Returns the last sync time formatted for display. If no sync has occurred, returns a default message.
def self.last_sync
return I18n.t(:label_qbo_never_synced) unless maximum(:updated_at)
format_time(maximum(:updated_at))
end
# Sync all items, typically triggered by a scheduled task or manual sync request
def self.sync
ItemSyncJob.perform_later(full_sync: true)

View File

@@ -10,8 +10,6 @@
class ItemSyncService < SyncServiceBase
PAGE_SIZE = 10
private
# Specify the local model this service syncs
@@ -19,6 +17,11 @@ class ItemSyncService < SyncServiceBase
Item
end
# Specify a page size of 20, as the API only returns 20 items at a time.
def self.page_size
20
end
# Map relevant attributes from the QBO Employee to the local Employee model
def process_attributes(local, remote)
log "Processing Item ##{remote.id}"

View File

@@ -0,0 +1,5 @@
<div>
<b><%=t(:label_item_count)%></b> <%= Item.count %> @ <%= Item.last_sync %>
<br/>
<%=t(:label_last_sync)%> </b> <%= Qbo.last_sync if Qbo.exists? %>
</div>

View File

@@ -13,6 +13,7 @@
en:
label_description: "Description"
label_item: "Item"
label_item_count: "Item Count:"
label_line_items: "Line Items"
label_price: "Unit Price"
label_qty: "Quantity"

View File

@@ -14,21 +14,21 @@ Redmine::Plugin.register :redmine_qbo_lineitems do
name 'Redmine QBO Line Items plugin'
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'
version '2026.3.3'
url 'https://github.com/rickbarrette/redmine_qbo'
version '2026.3.4'
url 'https://github.com/rickbarrette/redmine_qbo_lineitems'
author_url 'https://barrettefabrication.com'
requires_redmine version_or_higher: '6.1.0'
settings partial: 'line_items/settings'
# Ensure redmine_qbo is installed
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
raise 'Please install the redmine_qbo plugin (https://github.com/rickbarrette/redmine_qbo)'
end
# Add safe attributes for core models
Issue.safe_attributes :line_items_attributes
end
# Dynamically load all Hooks & Patches recursively