2
0
mirror of https://github.com/frappe/books.git synced 2024-12-22 10:58:59 +00:00

fix: remove free item when quantity decreses

This commit is contained in:
AbleKSaju 2024-09-05 16:50:35 +05:30
parent 3126379d80
commit 720ab08ec4
2 changed files with 16 additions and 24 deletions

View File

@ -1121,18 +1121,14 @@ export abstract class Invoice extends Transactional {
return;
}
if (!this.pricingRuleDetail?.length || !this.pricingRuleDetail.length) {
return;
}
this.items = this.items.filter((item) => !item.isFreeItem);
for (const item of this.items) {
const pricingRuleDetailForItem = this.pricingRuleDetail.filter(
const pricingRuleDetailForItem = this.pricingRuleDetail?.filter(
(doc) => doc.referenceItem === item.item
);
if (!pricingRuleDetailForItem.length) {
if (!pricingRuleDetailForItem?.length) {
continue;
}

View File

@ -358,38 +358,34 @@ export default defineComponent({
this.row.setRate = rate;
this.$emit('runSinvFormulas');
},
setQuantity(quantity: number) {
this.row.setQuantity = quantity;
this.$emit('runSinvFormulas');
async setQuantity(quantity: number) {
this.row.set('quantity', quantity);
if (!this.row.isFreeItem) {
await this.updatePricingRuleItem();
this.$emit('runSinvFormulas');
}
},
setTransferUnit(unit: string) {
this.row.setTransferUnit = unit;
this.row._applyFormula('transferUnit');
},
setTransferQty(quantity: number) {
this.row.transferQuantity = quantity;
this.row._applyFormula('transferQuantity');
this.$emit('runSinvFormulas');
},
removeAddedItem(row: SalesInvoiceItem) {
async removeAddedItem(row: SalesInvoiceItem) {
this.row.parentdoc?.remove('items', row?.idx as number);
if (!row.isFreeItem) {
this.updatePricingRuleItem();
await this.updatePricingRuleItem();
}
},
async updatePricingRuleItem() {
const pricingRule = await this.row.parentdoc?.getPricingRule() as ApplicablePricingRules[];
const pricingRule =
(await this.row.parentdoc?.getPricingRule()) as ApplicablePricingRules[];
setTimeout(() => {
setTimeout(async () => {
const appliedPricingRuleCount = this.row.parentdoc?.items?.filter(
(val) => val.isFreeItem
).length;
if (appliedPricingRuleCount !== pricingRule?.length) {
this.row.parentdoc?.appendPricingRuleDetail(pricingRule);
await this.row.parentdoc?.appendPricingRuleDetail(pricingRule);
this.row.parentdoc?.applyProductDiscount();
await this.row.parentdoc?.applyProductDiscount();
}
}, 1);
},