Total
Rp {{ formatRupiah(total) }}
diff --git a/resources/js/pages/admin/manage/purchases/form/PurchasePosForm.vue b/resources/js/pages/admin/manage/purchases/form/PurchasePosForm.vue
index e3b907d..db4f735 100644
--- a/resources/js/pages/admin/manage/purchases/form/PurchasePosForm.vue
+++ b/resources/js/pages/admin/manage/purchases/form/PurchasePosForm.vue
@@ -64,6 +64,7 @@ const {
removeFromCart,
adjustQuantity,
syncCartItemQuantity,
+ setCartItemQuantity,
decreasePriceQty,
} = usePurchasePosCart({
catalog: () => props.catalog,
@@ -223,5 +224,20 @@ function submit() {
:cart="cart"
:line-subtotal="lineSubtotal"
:total="total"
+ @remove="removeFromCart"
+ @adjust-quantity="adjustQuantity"
+ @set-quantity="setCartItemQuantity"
/>
+
+
diff --git a/resources/js/pages/admin/manage/purchases/form/usePurchasePosCart.ts b/resources/js/pages/admin/manage/purchases/form/usePurchasePosCart.ts
index 60beecf..6df94e9 100644
--- a/resources/js/pages/admin/manage/purchases/form/usePurchasePosCart.ts
+++ b/resources/js/pages/admin/manage/purchases/form/usePurchasePosCart.ts
@@ -189,6 +189,31 @@ export function usePurchasePosCart(options: {
}
}
+ async function setCartItemQuantity(index: number, value: string) {
+ const item = cart.value[index];
+ const nextQty = Number.parseFloat(value.replace(',', '.'));
+
+ if (Number.isNaN(nextQty) || nextQty < 0) {
+ return;
+ }
+
+ if (nextQty <= 0) {
+ await removeFromCart(index);
+
+ return;
+ }
+
+ item.quantity = String(nextQty);
+
+ if (toValue(options.isCreateMode)) {
+ try {
+ await syncDraftItem(item.raw_material_price_id, nextQty);
+ } catch (error) {
+ toast.error(error instanceof Error ? error.message : 'Gagal memperbarui jumlah item.');
+ }
+ }
+ }
+
return {
search,
cart,
@@ -202,6 +227,7 @@ export function usePurchasePosCart(options: {
removeFromCart,
adjustQuantity,
syncCartItemQuantity,
+ setCartItemQuantity,
decreasePriceQty,
upsertCartItem,
};