From 47adaa4f92e9c36d8120f607b6544530c395054d Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:02:48 +0700 Subject: [PATCH 1/6] fix: return total_peti, weight_per_convertion, and price_per_convertion in DeliveryProductToFieldValues function --- .../marketing/form/MarketingForm.schema.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/components/pages/marketing/form/MarketingForm.schema.ts b/src/components/pages/marketing/form/MarketingForm.schema.ts index 08e2ced5..0bc40627 100644 --- a/src/components/pages/marketing/form/MarketingForm.schema.ts +++ b/src/components/pages/marketing/form/MarketingForm.schema.ts @@ -151,6 +151,25 @@ export const DeliveryProductToFieldValues = ( value: item.product_warehouse.warehouse.id, label: item.product_warehouse.warehouse.name, }; + + const initialSisaBerat = + item?.total_weight && + salesOrder?.weight_per_convertion && + salesOrder?.total_peti + ? Number(item.total_weight) - + Number(salesOrder.weight_per_convertion) * + Number(salesOrder.total_peti) + : 0; + + const initialPricePerConvertion = + item?.total_price && + salesOrder?.total_peti && + Number(salesOrder.total_peti) !== 0 + ? (Number(item.total_price) - + initialSisaBerat * Number(item.unit_price || 0)) / + Number(salesOrder.total_peti) + : Number(item?.unit_price || 0); + return { id: salesOrder?.id, unit_price: item.unit_price, @@ -193,6 +212,9 @@ export const DeliveryProductToFieldValues = ( avg_weight: item.avg_weight, total_price: item.total_price, }, + total_peti: salesOrder?.total_peti, + weight_per_convertion: salesOrder?.weight_per_convertion, + price_per_convertion: initialPricePerConvertion, } as DeliveryOrderProductFormValues; }); From 03a6aabf1fdf4dc85b5b9c396af83abcdd787be2 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:06:06 +0700 Subject: [PATCH 2/6] fix: adjust initialPricePerConvertion value --- .../delivery-order/DeliverOrderProduct.tsx | 25 +++++++++---------- .../sales-order/SalesOrderProductForm.tsx | 25 +++++++++---------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/components/pages/marketing/form/repeater/delivery-order/DeliverOrderProduct.tsx b/src/components/pages/marketing/form/repeater/delivery-order/DeliverOrderProduct.tsx index 781ebf26..6793018b 100644 --- a/src/components/pages/marketing/form/repeater/delivery-order/DeliverOrderProduct.tsx +++ b/src/components/pages/marketing/form/repeater/delivery-order/DeliverOrderProduct.tsx @@ -126,18 +126,14 @@ const DeliveryOrderProductForm = ({ Number(initialValues.total_peti) : 0; - // const initialPricePerConvertion = - // initialValues?.total_price && - // initialValues?.total_peti && - // Number(initialValues.total_peti) !== 0 - // ? (Number(initialValues.total_price) - - // initialSisaBerat * Number(initialValues.unit_price || 0)) / - // Number(initialValues.total_peti) - // : 0; - - const initialPricePerConvertion = initialValues?.unit_price - ? Number(initialValues?.unit_price) - : 0; + const initialPricePerConvertion = + initialValues?.total_price && + initialValues?.total_peti && + Number(initialValues.total_peti) !== 0 + ? (Number(initialValues.total_price) - + initialSisaBerat * Number(initialValues.unit_price || 0)) / + Number(initialValues.total_peti) + : Number(initialValues?.unit_price || 0); const initialPriceSisaBerat = initialValues?.total_price && initialValues?.total_peti @@ -728,7 +724,7 @@ const DeliveryOrderProductForm = ({ placeholder='Masukan Total Peti' endAdornment={
- Kg + Peti
} bottomLabel={`1 ${formik.values.convertion_unit?.value.toLowerCase()} = ${formik.values.weight_per_convertion ?? 0} Kg`} @@ -778,6 +774,9 @@ const DeliveryOrderProductForm = ({ } errorMessage={formik.errors.total_weight} placeholder='Masukan Total Bobot' + disabled={ + formik.values.convertion_unit?.value.toLowerCase() === 'peti' + } /> )} 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 a7f2c73e..5f0031f8 100644 --- a/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx +++ b/src/components/pages/marketing/form/repeater/sales-order/SalesOrderProductForm.tsx @@ -61,18 +61,14 @@ const SalesOrderProductForm = ({ Number(initialValues.total_peti) : 0; - // const initialPricePerConvertion = - // initialValues?.total_price && - // initialValues?.total_peti && - // Number(initialValues.total_peti) !== 0 - // ? (Number(initialValues.total_price) - - // initialSisaBerat * Number(initialValues.unit_price || 0)) / - // Number(initialValues.total_peti) - // : 0; - - const initialPricePerConvertion = initialValues?.unit_price - ? Number(initialValues?.unit_price) - : 0; + const initialPricePerConvertion = + initialValues?.total_price && + initialValues?.total_peti && + Number(initialValues.total_peti) !== 0 + ? (Number(initialValues.total_price) - + initialSisaBerat * Number(initialValues.unit_price || 0)) / + Number(initialValues.total_peti) + : Number(initialValues?.unit_price || 0); const isInitialTelurQty = initialValues?.marketing_type?.value?.toLowerCase() === 'telur' && @@ -624,7 +620,7 @@ const SalesOrderProductForm = ({ placeholder='Masukan Total Peti' endAdornment={
- Kg + Peti
} bottomLabel={`1 ${formik.values.convertion_unit?.value.toLowerCase()} = ${formik.values.weight_per_convertion ?? 0} Kg`} @@ -674,6 +670,9 @@ const SalesOrderProductForm = ({ } errorMessage={formik.errors.total_weight} placeholder='Masukan Total Bobot' + disabled={ + formik.values.convertion_unit?.value.toLowerCase() === 'peti' + } /> )} From bcb1e0b5b6369810f00ea20bf659dc1f169cf439 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:06:38 +0700 Subject: [PATCH 3/6] fix: add (Kg) label to Total Harga Satuan --- .../form/table-view/DeliveryOrderProductTable.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx b/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx index 3f400ff2..9c7337ec 100644 --- a/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx +++ b/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx @@ -141,12 +141,15 @@ const DeliveryOrderProductTable = ({ Total Bobot - {formatNumber(Number(item.total_weight))} + {formatNumber(Number(item.total_weight))} Kg )} - Total Harga Satuan + + Total Harga Satuan + {item.convertion_unit?.label.toLowerCase() === 'peti' && ' (Kg)'} + {formatCurrency(parseFloat(item.unit_price as string))} From 00434002a755feb05f1dcf0b3cc7155f4507cbd6 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:06:57 +0700 Subject: [PATCH 4/6] fix: add harga satuan per peti --- .../form/table-view/SalesOrderProductTable.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/pages/marketing/form/table-view/SalesOrderProductTable.tsx b/src/components/pages/marketing/form/table-view/SalesOrderProductTable.tsx index f40f9151..d8e906cf 100644 --- a/src/components/pages/marketing/form/table-view/SalesOrderProductTable.tsx +++ b/src/components/pages/marketing/form/table-view/SalesOrderProductTable.tsx @@ -137,8 +137,22 @@ const SalesOrderProductTable = ({ {`${formatNumber(parseFloat(item.qty as string))} ${item.uom || ''}`} + {item.convertion_unit?.value.toLowerCase() === 'peti' && ( + + Harga Satuan Per Peti + + {formatCurrency( + parseFloat(item.unit_price as string) * + parseFloat(String(item.weight_per_convertion)) + )} + + + )} - Harga Satuan + + Harga Satuan + {item.convertion_unit?.value.toLowerCase() === 'peti' && ' (Kg)'} + {formatCurrency(parseFloat(item.unit_price as string))} From 70556d04ba700af8382c4645524523367546f6fa Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:07:39 +0700 Subject: [PATCH 5/6] fix: calculate unit price by weight --- src/lib/marketing-calculation.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/lib/marketing-calculation.ts b/src/lib/marketing-calculation.ts index 3d4930c5..e957d64f 100644 --- a/src/lib/marketing-calculation.ts +++ b/src/lib/marketing-calculation.ts @@ -235,10 +235,8 @@ export const calculateTelurPeti = ( const totalPrice = pricePerConvertion * totalPeti + priceSisaBerat; setFieldValue('total_price', totalPrice); // Recalculate unit_price = total_price / total_weight - - // TODO: consider sisa berat later const totalWeight = weightPerConvertion * totalPeti + sisaBerat; - updateUnitPrice(totalPrice, totalPeti); + updateUnitPrice(totalPrice, totalWeight); } break; } @@ -257,8 +255,8 @@ export const calculateTelurPeti = ( if (pricePerConvertion > 0 && totalPeti > 0) { const totalPrice = pricePerConvertion * totalPeti + priceSisaBerat; setFieldValue('total_price', totalPrice); - // Recalculate unit_price = total_price / total_peti - updateUnitPrice(totalPrice, totalPeti); + // Recalculate unit_price = total_price / totalWeight + updateUnitPrice(totalPrice, totalWeight); } break; } @@ -317,6 +315,15 @@ export const calculateTelurPeti = ( updateUnitPrice(totalPrice, totalWeight); break; } + case 'qty': + // Recalculate avg_weight = total_weight / qty + if (qty > 0 && values.total_weight) { + setFieldValue( + 'avg_weight', + preciseWeight(Number(values.total_weight) / qty) + ); + } + break; } }; From 570024c2e6fe430583ac55ef3131bf44529bfd1d Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Fri, 10 Apr 2026 15:08:13 +0700 Subject: [PATCH 6/6] chore: prettier format --- .husky/pre-commit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index ac8a41c7..f799d12f 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1,3 @@ npm run format npm run lint -npm run typecheck +npm run typecheck \ No newline at end of file