From 0d2108f8a8ce0d73b0ff98720343d7c7172d8717 Mon Sep 17 00:00:00 2001
From: AbleKSaju <126228406+AbleKSaju@users.noreply.github.com>
Date: Wed, 4 Sep 2024 17:46:38 +0530
Subject: [PATCH] fix: remove free item when its pricing rule item is removed
---
src/components/POS/SelectedItemRow.vue | 26 ++++++++++++++++++++++--
src/components/POS/SelectedItemTable.vue | 4 ----
2 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/components/POS/SelectedItemRow.vue b/src/components/POS/SelectedItemRow.vue
index 84833ea8..45fde7f2 100644
--- a/src/components/POS/SelectedItemRow.vue
+++ b/src/components/POS/SelectedItemRow.vue
@@ -69,7 +69,7 @@
@@ -273,7 +273,7 @@ export default defineComponent({
props: {
row: { type: SalesInvoiceItem, required: true },
},
- emits: ['removeItem', 'runSinvFormulas', 'setItemSerialNumbers'],
+ emits: ['runSinvFormulas', 'setItemSerialNumbers', 'addItem'],
setup() {
return {
isDiscountingEnabled: inject('isDiscountingEnabled') as boolean,
@@ -362,6 +362,28 @@ export default defineComponent({
this.row._applyFormula('transferQuantity');
this.$emit('runSinvFormulas');
},
+ removeAddedItem(row: SalesInvoiceItem) {
+ this.row.parentdoc?.remove('items', row?.idx as number);
+
+ if (!row.isFreeItem) {
+ this.updatePricingRuleItem();
+ }
+ },
+ async updatePricingRuleItem() {
+ const pricingRule = await this.row.parentdoc?.getPricingRule() as ApplicablePricingRules[];
+
+ setTimeout(() => {
+ const appliedPricingRuleCount = this.row.parentdoc?.items?.filter(
+ (val) => val.isFreeItem
+ ).length;
+
+ if (appliedPricingRuleCount !== pricingRule?.length) {
+ this.row.parentdoc?.appendPricingRuleDetail(pricingRule);
+
+ this.row.parentdoc?.applyProductDiscount();
+ }
+ }, 1);
+ },
},
});
diff --git a/src/components/POS/SelectedItemTable.vue b/src/components/POS/SelectedItemTable.vue
index 9c7ab31f..6822adfc 100644
--- a/src/components/POS/SelectedItemTable.vue
+++ b/src/components/POS/SelectedItemTable.vue
@@ -37,7 +37,6 @@
>
@@ -138,9 +137,6 @@ export default defineComponent({
},
},
methods: {
- removeItem(idx: number) {
- this.sinvDoc.remove('items', idx);
- },
async runSinvFormulas() {
await this.sinvDoc.runFormulas();
},