diff --git a/app/Enums/Role.php b/app/Enums/Role.php index b772636..0463da9 100644 --- a/app/Enums/Role.php +++ b/app/Enums/Role.php @@ -92,6 +92,8 @@ public function permissions(): array self::ADMIN_TOKO => [ Permission::DASHBOARD_VIEW, + Permission::CUTTINGS_VERIFY, + Permission::ATTENDANCES_VIEW, Permission::ATTENDANCES_CREATE, Permission::ATTENDANCES_DELETE, diff --git a/app/Services/Manage/CuttingService.php b/app/Services/Manage/CuttingService.php index 660e068..9a6ecb6 100644 --- a/app/Services/Manage/CuttingService.php +++ b/app/Services/Manage/CuttingService.php @@ -98,6 +98,7 @@ public function getInProgressCuttings(User $user): Collection $cutting->setAttribute('available_actions', $actions); $cutting->setAttribute('is_editable', $cutting->status->isEditable()); + $this->appendCostPreview($cutting); }); } @@ -678,6 +679,9 @@ private function applySorting(Builder $query, string $sort, string $direction): private function appendCostPreview(Cutting $cutting): void { + $cutting->setAttribute('total_result_pieces', (int) $cutting->results->sum('cutting_result')); + $cutting->setAttribute('total_material_usage', (float) $cutting->materials->sum('material_usage')); + if (! in_array($cutting->status, [CuttingStatus::COMPLETED, CuttingStatus::VERIFIED], true)) { return; } @@ -698,7 +702,6 @@ private function appendCostPreview(Cutting $cutting): void $cutting->setAttribute('total_production_cost_formatted', 'Rp '.number_format($totalProductionCost, 0, ',', '.')); $cutting->setAttribute('estimated_cost_per_unit', $costPerUnit); $cutting->setAttribute('estimated_cost_per_unit_formatted', 'Rp '.number_format($costPerUnit, 0, ',', '.')); - $cutting->setAttribute('total_result_pieces', (int) $cutting->results->sum('cutting_result')); } public function calculateTotalMaterialCost(Cutting $cutting): int diff --git a/resources/js/components/admin/manage/cuttings/CuttingCompletedSection.vue b/resources/js/components/admin/manage/cuttings/CuttingCompletedSection.vue index a22f5fc..4583ef0 100644 --- a/resources/js/components/admin/manage/cuttings/CuttingCompletedSection.vue +++ b/resources/js/components/admin/manage/cuttings/CuttingCompletedSection.vue @@ -93,6 +93,21 @@ const totalCompleted = computed(() => props.cuttings.length); +
+
+ Total Hasil Cutting: + {{ cutting.total_result_pieces ?? 0 }} pcs +
+
+ Total Pemakaian Bahan: + {{ cutting.total_material_usage ?? 0 }} +
+
+ Harga Modal: + {{ cutting.estimated_cost_per_unit_formatted }}/pcs +
+
+
Pembuat: diff --git a/resources/js/components/admin/manage/cuttings/CuttingGroupedTable.vue b/resources/js/components/admin/manage/cuttings/CuttingGroupedTable.vue index 4a0ca59..db24820 100644 --- a/resources/js/components/admin/manage/cuttings/CuttingGroupedTable.vue +++ b/resources/js/components/admin/manage/cuttings/CuttingGroupedTable.vue @@ -132,6 +132,11 @@ function getGroupedResults(results: any[]): GroupedCuttingResults[] { return Object.values(groups); } + +function getMaterialUnit(materials: any[]): string | undefined { + return materials[0]?.raw_material_price?.raw_material?.unit_abbreviation; +} +