diff --git a/app/Services/Manage/CuttingService.php b/app/Services/Manage/CuttingService.php index 67dd216..8aa3e2a 100644 --- a/app/Services/Manage/CuttingService.php +++ b/app/Services/Manage/CuttingService.php @@ -811,10 +811,15 @@ private function breakMaterialCircularReference(CuttingMaterial $material): void if ($price) { $rawMaterial = $price->rawMaterial; + $material->setAttribute('variant', $price->variant); + if ($rawMaterial) { $unitAbbreviation = $rawMaterial->unit->abbreviation(); $price->setAttribute('unit_abbreviation', $unitAbbreviation); $material->setAttribute('unit_abbreviation', $unitAbbreviation); + $material->setAttribute('raw_material_id', $rawMaterial->id); + $material->setAttribute('raw_material_name', $rawMaterial->name); + $material->setAttribute('raw_material_unit_label', $rawMaterial->unit->label()); } $price->unsetRelation('rawMaterial'); diff --git a/app/Services/Manage/PurchaseService.php b/app/Services/Manage/PurchaseService.php index 2e35fc9..e295b68 100644 --- a/app/Services/Manage/PurchaseService.php +++ b/app/Services/Manage/PurchaseService.php @@ -795,10 +795,15 @@ private function breakItemCircularReference(PurchaseItem $item): void if ($price) { $rawMaterial = $price->rawMaterial; + $item->setAttribute('variant', $price->variant); + if ($rawMaterial) { $unitAbbreviation = $rawMaterial->unit->abbreviation(); $price->setAttribute('unit_abbreviation', $unitAbbreviation); $item->setAttribute('unit_abbreviation', $unitAbbreviation); + $item->setAttribute('raw_material_id', $rawMaterial->id); + $item->setAttribute('raw_material_name', $rawMaterial->name); + $item->setAttribute('raw_material_unit_label', $rawMaterial->unit->label()); } $price->unsetRelation('rawMaterial'); diff --git a/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue b/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue index a2aa1e3..6fdc5d8 100644 --- a/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue +++ b/resources/js/pages/admin/manage/cuttings/table/CuttingCompletedSection.vue @@ -17,7 +17,7 @@ function formatMaterialUsage(mat: any): string { } function getMaterialUnit(mat: any): string { - return mat.raw_material_price?.raw_material?.unit_abbreviation ?? ''; + return mat.unit_abbreviation ?? ''; } interface MaterialUsageGroup { @@ -29,7 +29,7 @@ function getGroupedMaterialUsage(materials: any[]): MaterialUsageGroup[] { const groups: Record = {}; materials.forEach((mat) => { - const unit = mat.raw_material_price?.raw_material?.unit_abbreviation ?? ''; + const unit = mat.unit_abbreviation ?? ''; const usage = Number(mat.material_usage ?? 0); groups[unit] = (groups[unit] ?? 0) + usage; }); @@ -94,7 +94,7 @@ const totalCompleted = computed(() => props.cuttings.length); Bahan Baku: diff --git a/resources/js/pages/admin/manage/cuttings/table/CuttingGroupedTable.vue b/resources/js/pages/admin/manage/cuttings/table/CuttingGroupedTable.vue index 55548c7..38b2361 100644 --- a/resources/js/pages/admin/manage/cuttings/table/CuttingGroupedTable.vue +++ b/resources/js/pages/admin/manage/cuttings/table/CuttingGroupedTable.vue @@ -59,10 +59,9 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { const groups: Record = {}; materials.forEach((item) => { - const rawMaterial = item.raw_material_price?.raw_material; - const rawMaterialId = rawMaterial?.id ?? 0; - const rawMaterialName = rawMaterial?.name ?? 'Bahan Baku Tidak Diketahui'; - const unitLabel = rawMaterial?.unit_label; + 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]) { groups[rawMaterialId] = { @@ -176,7 +175,7 @@ function getGroupedResults(results: any[]): GroupedCuttingResults[] { - {{ material.raw_material_price?.variant }} + {{ material.variant }} {{ material.material_usage_formatted }} diff --git a/resources/js/pages/admin/manage/cuttings/table/CuttingInProgressSection.vue b/resources/js/pages/admin/manage/cuttings/table/CuttingInProgressSection.vue index 5f7a63d..ee93aca 100644 --- a/resources/js/pages/admin/manage/cuttings/table/CuttingInProgressSection.vue +++ b/resources/js/pages/admin/manage/cuttings/table/CuttingInProgressSection.vue @@ -8,7 +8,7 @@ function formatMaterialUsage(mat: any): string { } function getMaterialUnit(mat: any): string { - return mat.raw_material_price?.raw_material?.unit_abbreviation ?? ''; + return mat.unit_abbreviation ?? ''; } interface MaterialUsageGroup { @@ -20,7 +20,7 @@ function getGroupedMaterialUsage(materials: any[]): MaterialUsageGroup[] { const groups: Record = {}; materials.forEach((mat) => { - const unit = mat.raw_material_price?.raw_material?.unit_abbreviation ?? ''; + const unit = mat.unit_abbreviation ?? ''; const usage = Number(mat.material_usage ?? 0); groups[unit] = (groups[unit] ?? 0) + usage; }); @@ -66,8 +66,8 @@ defineProps<{ Bahan Baku:
  • - {{ mat.raw_material_price?.raw_material?.name }} ({{ - mat.raw_material_price?.variant }}) - {{ formatMaterialUsage(mat) }} {{ getMaterialUnit(mat) }} + {{ mat.raw_material_name }} ({{ + mat.variant }}) - {{ formatMaterialUsage(mat) }} {{ getMaterialUnit(mat) }}
  • Belum ada bahan baku
diff --git a/resources/js/pages/admin/manage/purchases/table/PurchaseGroupedTable.vue b/resources/js/pages/admin/manage/purchases/table/PurchaseGroupedTable.vue index 40ce0c2..d1b29fe 100644 --- a/resources/js/pages/admin/manage/purchases/table/PurchaseGroupedTable.vue +++ b/resources/js/pages/admin/manage/purchases/table/PurchaseGroupedTable.vue @@ -58,10 +58,9 @@ function getGroupedItems(items: PurchaseItemDetail[]): GroupedPurchaseItems[] { const groups: Record = {}; items.forEach((item) => { - const rawMaterial = item.raw_material_price?.raw_material; - const rawMaterialId = rawMaterial?.id ?? 0; - const rawMaterialName = rawMaterial?.name ?? 'Bahan Baku Tidak Diketahui'; - const unitLabel = rawMaterial?.unit_label; + 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]) { groups[rawMaterialId] = { @@ -150,7 +149,7 @@ function getGroupedItems(items: PurchaseItemDetail[]): GroupedPurchaseItems[] {
- {{ item.raw_material_price?.variant }} + {{ item.variant }} {{ item.quantity_formatted }} diff --git a/resources/js/types/cutting.ts b/resources/js/types/cutting.ts index ef67b6c..c7ee17b 100644 --- a/resources/js/types/cutting.ts +++ b/resources/js/types/cutting.ts @@ -14,6 +14,10 @@ export type CuttingStatusAction = { export type CuttingMaterialListItem = { id: number; material_usage_formatted: string; + variant?: string; + raw_material_id?: number; + raw_material_name?: string; + raw_material_unit_label?: string; raw_material_price?: { id: number; variant: string; diff --git a/resources/js/types/purchase.ts b/resources/js/types/purchase.ts index 7ec25fb..c93474d 100644 --- a/resources/js/types/purchase.ts +++ b/resources/js/types/purchase.ts @@ -8,12 +8,16 @@ export type PurchaseItemListItem = { id: number; raw_material_name: string; variant_name: string; + variant?: string; quantity_formatted: string; unit_price_formatted: string; subtotal_formatted: string; }; export type PurchaseItemDetail = PurchaseItemListItem & { + raw_material_id?: number; + raw_material_name?: string; + raw_material_unit_label?: string; raw_material_price?: { id: number; variant: string;