feat: enhance grouping of purchase items by sorting variants and assigning item numbers
Some checks are pending
linter / quality (push) Waiting to run
tests / ci (8.3) (push) Waiting to run
tests / ci (8.4) (push) Waiting to run
tests / ci (8.5) (push) Waiting to run

This commit is contained in:
Yoga Pangestu 2026-07-31 01:34:16 +07:00
parent c14b32b5bb
commit ec59a87527

View File

@ -78,27 +78,33 @@ interface GroupedPurchaseItems {
function getGroupedItems(items: PurchaseItemDetail[]): GroupedPurchaseItems[] { function getGroupedItems(items: PurchaseItemDetail[]): GroupedPurchaseItems[] {
const groups: Record<number, GroupedPurchaseItems> = {}; const groups: Record<number, GroupedPurchaseItems> = {};
let itemCounter = 0;
items.forEach((item) => { items.forEach((item) => {
const rawMaterialId = item.raw_material_id ?? 0; const rawMaterialId = item.raw_material_id ?? 0;
const rawMaterialName = item.raw_material_name || 'Bahan Baku Tidak Diketahui';
const unitLabel = item.raw_material_unit_label;
if (!groups[rawMaterialId]) { if (!groups[rawMaterialId]) {
groups[rawMaterialId] = { groups[rawMaterialId] = {
rawMaterialId, rawMaterialId,
rawMaterialName, rawMaterialName: item.raw_material_name || 'Bahan Baku Tidak Diketahui',
unitLabel, unitLabel: item.raw_material_unit_label,
items: [], items: [],
}; };
} }
itemCounter++; groups[rawMaterialId].items.push({ ...item });
groups[rawMaterialId].items.push({ ...item, item_number: itemCounter });
}); });
return Object.values(groups); let itemCounter = 0;
return Object.values(groups).map((group) => {
group.items.sort((a, b) => (a.variant ?? '').localeCompare(b.variant ?? ''));
return {
...group,
items: group.items.map((item) => {
itemCounter++;
return { ...item, item_number: itemCounter };
}),
};
});
} }
const verificationModalOpen = ref(false); const verificationModalOpen = ref(false);