unit cost

This commit is contained in:
2026-05-29 09:39:01 -05:00
parent 7de57cb35e
commit 7c76a0aabe
4 changed files with 22 additions and 9 deletions

View File

@@ -101,7 +101,11 @@ export function addItem(containerId, { item = null, type = 'invoice', laborRate
<label class="block text-xs font-medium text-gray-700 mb-1">Rate</label>
<input type="text" data-item="${itemId}" data-field="rate" value="${item ? item.rate : ''}" class="${cssClass} w-full px-2 py-2 border border-gray-300 rounded-md text-sm">
</div>
<div class="col-span-3">
<div class="col-span-1 cost-field" style="${(item && item.qbo_item_id && item.qbo_item_id != '9') ? 'display:none' : ''}">
<label class="block text-xs font-medium text-gray-700 mb-1">Cost</label>
<input type="text" data-item="${itemId}" data-field="unit_cost" value="${item && item.qbo_item_id == '9' ? (item.unit_cost || '') : ''}" class="${cssClass} w-full px-2 py-2 border border-gray-300 rounded-md text-sm">
</div>
<div class="col-span-2">
<label class="block text-xs font-medium text-gray-700 mb-1">Amount</label>
<input type="text" data-item="${itemId}" data-field="amount" value="${item ? item.amount : ''}" class="${amountClass} w-full px-2 py-2 border border-gray-300 rounded-md text-sm">
</div>
@@ -209,7 +213,6 @@ export function handleTypeChange(selectEl, prefix, itemId) {
const rateInput = itemDiv.querySelector('[data-field="rate"]');
if (rateInput && (!rateInput.value || rateInput.value === '0')) {
rateInput.value = laborRate;
// Recalculate amount
const qtyInput = itemDiv.querySelector('[data-field="quantity"]');
const amountInput = itemDiv.querySelector('[data-field="amount"]');
if (qtyInput.value) {
@@ -219,6 +222,11 @@ export function handleTypeChange(selectEl, prefix, itemId) {
}
}
const costField = itemDiv.querySelector('.cost-field');
if (costField) {
costField.style.display = (selectEl.value === '9') ? '' : 'none';
}
updateItemPreview(itemDiv);
onUpdate();
}
@@ -236,11 +244,15 @@ export function getItems(containerId) {
? descEditor.quillInstance.root.innerHTML
: '';
const qboItemId = div.querySelector('[data-field="qbo_item_id"]').value;
const unitCostInput = div.querySelector('[data-field="unit_cost"]');
items.push({
quantity: div.querySelector('[data-field="quantity"]').value,
qbo_item_id: div.querySelector('[data-field="qbo_item_id"]').value,
qbo_item_id: qboItemId,
description: descriptionHTML,
rate: div.querySelector('[data-field="rate"]').value,
unit_cost: (qboItemId === '9' && unitCostInput) ? unitCostInput.value : '',
amount: div.querySelector('[data-field="amount"]').value
});
});