Fix product performance grouped JSON build

This commit is contained in:
M_Kececi
2026-08-18 21:07:52 +03:00
parent 03287d4850
commit dbb3f3f380
@@ -469,7 +469,7 @@
</span> </span>
</div> </div>
<div class="sub-right pcd-sub-right-clickable" @click="toggleGroup(grp, gi)"> <div class="sub-right pcd-sub-right-clickable" @click="toggleGroup(grp, gi)">
Grup Toplami TRY: {{ formatBarMoney(groupLiveTotals[gi]?.tryTotal) }} | USD: {{ formatBarMoney(groupLiveTotals[gi]?.usdTotal) }} Grup Toplami TRY: {{ formatBarMoney(resolveGroupTRYTutar(grp, groupTotalsRevision)) }} | USD: {{ formatBarMoney(resolveGroupUSDTutar(grp, groupTotalsRevision)) }}
<q-icon <q-icon
:name="isGroupOpen(grp, gi) ? 'expand_less' : 'expand_more'" :name="isGroupOpen(grp, gi) ? 'expand_less' : 'expand_more'"
size="18px" size="18px"
@@ -1578,21 +1578,6 @@ const toolbarSummary = computed(() => flatDetailRows.value.reduce((acc, row) =>
gbpTotal: 0 gbpTotal: 0
})) }))
const groupLiveTotals = computed(() => {
// Explicitly depend on inline-edit events as QTable can update a row without
// invalidating computations owned by the parent component.
void groupTotalsRevision.value
return detailGroups.value.map(group => (
(Array.isArray(group?.items) ? group.items : []).reduce((acc, row) => {
if (!shouldIncludeRowInGroupTotal(group, row)) return acc
acc.tryTotal += resolveRowTRYTutar(row)
acc.usdTotal += resolveRowUSDTutar(row)
acc.quantity += resolveNumericRowQuantity(row)
return acc
}, { tryTotal: 0, usdTotal: 0, quantity: 0 })
))
})
const summaryOpen = ref(false) const summaryOpen = ref(false)
function makeEmptySummaryRow (part) { function makeEmptySummaryRow (part) {
@@ -2899,12 +2884,26 @@ function shouldIncludeRowInGroupTotal (grp, row) {
// CM1/CM2 sub-headers always show their full group value. For every other // CM1/CM2 sub-headers always show their full group value. For every other
// group, the explicit "Maliyete Dahil" selection controls the subtotal. // group, the explicit "Maliyete Dahil" selection controls the subtotal.
if (isCMGroupName(grp?.sAciklama3 || row?.sAciklama3)) return true if (isCMGroupName(grp?.sAciklama3 || row?.sAciklama3)) return true
return normalizeBooleanFlag(row?.maliyeteDahil ?? row?.maliyete_dahil ?? row?.Maliyete_dahil) if (typeof row?.maliyeteDahil === 'boolean') return row.maliyeteDahil
return normalizeBooleanFlag(row?.maliyete_dahil ?? row?.Maliyete_dahil)
}
function resolveGroupTRYTutar (grp, _revision) {
return (Array.isArray(grp?.items) ? grp.items : []).reduce((total, row) => (
total + (shouldIncludeRowInGroupTotal(grp, row) ? resolveRowTRYTutar(row) : 0)
), 0)
}
function resolveGroupUSDTutar (grp, _revision) {
return (Array.isArray(grp?.items) ? grp.items : []).reduce((total, row) => (
total + (shouldIncludeRowInGroupTotal(grp, row) ? resolveRowUSDTutar(row) : 0)
), 0)
} }
function resolveGroupQuantity (grp) { function resolveGroupQuantity (grp) {
const groupIndex = detailGroups.value.indexOf(grp) return (Array.isArray(grp?.items) ? grp.items : []).reduce((total, row) => (
return groupIndex >= 0 ? parseMoneyInput(groupLiveTotals.value[groupIndex]?.quantity) : 0 total + resolveNumericRowQuantity(row)
), 0)
} }
function groupKey (grp, gi) { function groupKey (grp, gi) {
@@ -3397,6 +3396,9 @@ async function fetchBulkItemPrices () {
}) })
}) })
})) }))
// Update sub-headers immediately after the bulk response is applied. Do
// not wait for the optional previous-cost autofill request below.
triggerUIUpdate()
$q.notify({ $q.notify({
type: appliedCount > 0 ? 'positive' : 'warning', type: appliedCount > 0 ? 'positive' : 'warning',
@@ -3477,6 +3479,7 @@ async function fetchBulkItemPrices () {
}) })
}) })
})) }))
triggerUIUpdate()
if (filled > 0) { if (filled > 0) {
$q.notify({ $q.notify({