diff --git a/resources/js/pages/admin/manage/stocks/table/StockPendingApprovalSection.vue b/resources/js/pages/admin/manage/stocks/table/StockPendingApprovalSection.vue index a1b3038..57e84ee 100644 --- a/resources/js/pages/admin/manage/stocks/table/StockPendingApprovalSection.vue +++ b/resources/js/pages/admin/manage/stocks/table/StockPendingApprovalSection.vue @@ -120,14 +120,13 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { Varian Foto - Pemakaian Hasil - + {{ group.rawMaterialName }} @@ -154,9 +153,6 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { - - {{ material.material_usage_formatted }} - {{ material.material_result }} pcs diff --git a/resources/js/pages/admin/manage/stocks/table/StockPendingSection.vue b/resources/js/pages/admin/manage/stocks/table/StockPendingSection.vue index 6ba6526..9efc90a 100644 --- a/resources/js/pages/admin/manage/stocks/table/StockPendingSection.vue +++ b/resources/js/pages/admin/manage/stocks/table/StockPendingSection.vue @@ -156,7 +156,6 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { Varian Foto - Pemakaian Hasil @@ -164,7 +163,7 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { - + {{ group.rawMaterialName }} @@ -192,9 +191,6 @@ function getGroupedMaterials(materials: any[]): GroupedCuttingMaterials[] { - - {{ material.material_usage_formatted }} - diff --git a/resources/js/pages/admin/manage/stocks/table/StockVerifyDialog.vue b/resources/js/pages/admin/manage/stocks/table/StockVerifyDialog.vue index 9fa4cd1..e545ffc 100644 --- a/resources/js/pages/admin/manage/stocks/table/StockVerifyDialog.vue +++ b/resources/js/pages/admin/manage/stocks/table/StockVerifyDialog.vue @@ -5,6 +5,7 @@ import { toast } from 'vue-sonner'; import { NumberInput } from '@/components/form/number-input'; import { RupiahInput } from '@/components/form/rupiah-input'; import MediaThumbnailCell from '@/components/media/MediaThumbnailCell.vue'; +import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Dialog, @@ -34,6 +35,48 @@ const props = defineProps<{ const open = defineModel('open', { required: true }); +type MaterialGroup = { + type: 'combination' | 'single'; + combinationId?: number; + items: CuttingListItem['materials']; +}; + +const materialGroups = computed(() => { + const materials = props.cutting.materials ?? []; + const combinationMap = new Map(); + const singleItems: CuttingListItem['materials'] = []; + + materials.forEach((item) => { + if (item.combination_id) { + if (!combinationMap.has(item.combination_id)) { + combinationMap.set(item.combination_id, []); + } + combinationMap.get(item.combination_id)!.push(item); + } else { + singleItems.push(item); + } + }); + + const groups: MaterialGroup[] = []; + + for (const [combinationId, items] of combinationMap) { + groups.push({ + type: 'combination', + combinationId, + items, + }); + } + + if (singleItems.length > 0) { + groups.push({ + type: 'single', + items: singleItems, + }); + } + + return groups; +}); + function buildEmptyPrices(): Record { return Object.fromEntries(PRICE_TYPES.map((type) => [type, ''])); } @@ -162,13 +205,13 @@ function submitVerify() { - + Verifikasi Hasil Cutting - - + + Verifikasi jumlah produk yang diterima dan tentukan harga jual. Stok akan ditambahkan setelah verifikasi. @@ -176,30 +219,32 @@ function submitVerify() { - - - + class="rounded-lg border p-3"> + + + + + + + {{ result.name }} + + {{ result.cutting_result }} pcs + ({{ result.original_sample }} Sample, {{ + result.original_outside_sample }} Diluar Sample) + + - - {{ result.name }} - - {{ result.cutting_result }} pcs - ({{ result.original_sample }} Sample, {{ - result.original_outside_sample }} Diluar Sample) - - - + Bagus + class="text-[10px] text-muted-foreground block mb-0.5">Bagus onGoodChange(result, val)" /> Reject + class="text-[10px] text-muted-foreground block mb-0.5">Reject onRejectChange(result, val)" /> @@ -214,24 +259,43 @@ function submitVerify() { - + Bahan Baku Terpakai - - - - + + + + + Kombinasi + + {{ group.items.length }} bahan + + + + + + {{ material.raw_material_name || material.raw_material_price?.raw_material?.name }} + + + {{ material.variant || material.raw_material_price?.variant }} + + + - - - {{ material.raw_material_name || material.raw_material_price?.raw_material?.name }} - {{ material.variant || material.raw_material_price?.variant }} - - - Pemakaian: {{ material.material_usage_formatted }} - Kombinasi - - - + + + + + {{ material.raw_material_name || material.raw_material_price?.raw_material?.name }} + + + {{ material.variant || material.raw_material_price?.variant }} + + + + @@ -239,7 +303,7 @@ function submitVerify() { Harga - + {{ PRICE_TYPE_LABELS[type] }} @@ -261,11 +325,11 @@ function submitVerify() { - - + + Batal - + {{ verifyForm.processing ? 'Menyimpan...' : 'Verifikasi & Tambah Stok' }}
Verifikasi jumlah produk yang diterima dan tentukan harga jual. Stok akan ditambahkan setelah verifikasi. @@ -176,30 +219,32 @@ function submitVerify() {
{{ result.name }}
+ {{ result.cutting_result }} pcs + ({{ result.original_sample }} Sample, {{ + result.original_outside_sample }} Diluar Sample) +
- {{ result.cutting_result }} pcs - ({{ result.original_sample }} Sample, {{ - result.original_outside_sample }} Diluar Sample) -
Bahan Baku Terpakai
+ {{ material.raw_material_name || material.raw_material_price?.raw_material?.name }} +
+ {{ material.variant || material.raw_material_price?.variant }} +
- {{ material.raw_material_name || material.raw_material_price?.raw_material?.name }} - {{ material.variant || material.raw_material_price?.variant }} -
- Pemakaian: {{ material.material_usage_formatted }} - Kombinasi -
Harga