diff --git a/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx b/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx index 688f592c..767cd9b3 100644 --- a/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx +++ b/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx @@ -163,6 +163,11 @@ const SalesOrderProductForm = ({ if (qty <= 0) return; + // Cek apakah produk memiliki flag OVK atau PAKAN + const productFlags = selectedProductWarehouse?.product?.flags || []; + const isOvkOrPakan = + productFlags.includes('OVK') || productFlags.includes('PAKAN'); + switch (field) { // ===== SOURCE FIELDS ===== case 'qty': { @@ -170,9 +175,15 @@ const SalesOrderProductForm = ({ const tw = roundWeight(qty * avgWeight); formik.setFieldValue('total_weight', tw); - // Hitung total_price berdasarkan unit_price × total_weight + // Hitung total_price berdasarkan flag produk if (unitPrice > 0) { - formik.setFieldValue('total_price', roundPrice(unitPrice * tw)); + if (isOvkOrPakan) { + // Untuk OVK/PAKAN: total_price = qty × unit_price + formik.setFieldValue('total_price', roundPrice(qty * unitPrice)); + } else { + // Untuk produk lain: total_price = unit_price × total_weight + formik.setFieldValue('total_price', roundPrice(unitPrice * tw)); + } } } break; @@ -183,32 +194,27 @@ const SalesOrderProductForm = ({ const tw = roundWeight(qty * avgWeight); formik.setFieldValue('total_weight', tw); - // Hitung total_price berdasarkan unit_price × total_weight + // Hitung total_price berdasarkan flag produk if (unitPrice > 0) { - formik.setFieldValue('total_price', roundPrice(unitPrice * tw)); + if (isOvkOrPakan) { + // Untuk OVK/PAKAN: total_price = qty × unit_price + formik.setFieldValue('total_price', roundPrice(qty * unitPrice)); + } else { + // Untuk produk lain: total_price = unit_price × total_weight + formik.setFieldValue('total_price', roundPrice(unitPrice * tw)); + } } } break; } case 'unit_price': { - if (unitPrice > 0 && totalWeight > 0) { - // Hitung total_price berdasarkan unit_price × total_weight - formik.setFieldValue( - 'total_price', - roundPrice(unitPrice * totalWeight) - ); - } - break; - } - - // ===== TOTAL EDITABLE ===== - case 'total_weight': { - if (totalWeight > 0) { - formik.setFieldValue('avg_weight', roundWeight(totalWeight / qty)); - - // Hitung ulang total_price berdasarkan unit_price × total_weight - if (unitPrice > 0) { + if (unitPrice > 0) { + if (isOvkOrPakan) { + // Untuk OVK/PAKAN: total_price = qty × unit_price + formik.setFieldValue('total_price', roundPrice(qty * unitPrice)); + } else if (totalWeight > 0) { + // Untuk produk lain: total_price = unit_price × total_weight formik.setFieldValue( 'total_price', roundPrice(unitPrice * totalWeight) @@ -218,13 +224,40 @@ const SalesOrderProductForm = ({ break; } + // ===== TOTAL EDITABLE ===== + case 'total_weight': { + if (totalWeight > 0) { + formik.setFieldValue('avg_weight', roundWeight(totalWeight / qty)); + + // Hitung ulang total_price berdasarkan flag produk + if (unitPrice > 0) { + if (isOvkOrPakan) { + // Untuk OVK/PAKAN: total_price = qty × unit_price + formik.setFieldValue('total_price', roundPrice(qty * unitPrice)); + } else { + // Untuk produk lain: total_price = unit_price × total_weight + formik.setFieldValue( + 'total_price', + roundPrice(unitPrice * totalWeight) + ); + } + } + } + break; + } + case 'total_price': { - if (totalPrice > 0 && totalWeight > 0) { - // Hitung unit_price berdasarkan total_price / total_weight - formik.setFieldValue( - 'unit_price', - roundPrice(totalPrice / totalWeight) - ); + if (totalPrice > 0) { + if (isOvkOrPakan && qty > 0) { + // Untuk OVK/PAKAN: unit_price = total_price / qty + formik.setFieldValue('unit_price', roundPrice(totalPrice / qty)); + } else if (totalWeight > 0) { + // Untuk produk lain: unit_price = total_price / total_weight + formik.setFieldValue( + 'unit_price', + roundPrice(totalPrice / totalWeight) + ); + } } break; }