diff --git a/models/baseModels/Invoice/Invoice.ts b/models/baseModels/Invoice/Invoice.ts index 840fb283..8d010cae 100644 --- a/models/baseModels/Invoice/Invoice.ts +++ b/models/baseModels/Invoice/Invoice.ts @@ -50,6 +50,7 @@ import { CouponCode } from '../CouponCode/CouponCode'; import { SalesInvoice } from '../SalesInvoice/SalesInvoice'; import { SalesInvoiceItem } from '../SalesInvoiceItem/SalesInvoiceItem'; import { PricingRuleItem } from '../PricingRuleItem/PricingRuleItem'; +import { getLinkedEntries } from 'src/utils/doc'; export type TaxDetail = { account: string; @@ -982,6 +983,17 @@ export abstract class Invoice extends Transactional { return null; } + let linkedEntries; + + if (this.returnAgainst) { + const someDOC = (await this.fyo.doc.getDoc( + ModelNameEnum.SalesInvoice, + this.returnAgainst + )) as SalesInvoice; + + linkedEntries = await getLinkedEntries(someDOC); + } + if (!this.stockNotTransferred) { return null; } @@ -1005,6 +1017,7 @@ export abstract class Invoice extends Transactional { terms, numberSeries, backReference: this.name, + returnAgainst: linkedEntries ? linkedEntries.Shipment![0] : '', }; let location = this.autoStockTransferLocation; diff --git a/src/pages/POS/ClassicPOS.vue b/src/pages/POS/ClassicPOS.vue index 707ad1d3..fae4e18a 100644 --- a/src/pages/POS/ClassicPOS.vue +++ b/src/pages/POS/ClassicPOS.vue @@ -339,6 +339,7 @@ import LoyaltyProgramModal from './LoyaltyProgramModal.vue'; import { POSItem, ItemQtyMap } from 'src/components/POS/types'; import ItemsGrid from 'src/components/POS/Classic/ItemsGrid.vue'; import ItemsTable from 'src/components/POS/Classic/ItemsTable.vue'; +import ReturnSalesInvoiceModal from './ReturnSalesInvoiceModal.vue'; import MultiLabelLink from 'src/components/Controls/MultiLabelLink.vue'; import { SalesInvoice } from 'models/baseModels/SalesInvoice/SalesInvoice'; import SelectedItemTable from 'src/components/POS/Classic/SelectedItemTable.vue'; @@ -346,7 +347,6 @@ import WeightEnabledBarcode from 'src/components/Controls/WeightEnabledBarcode.v import FloatingLabelFloatInput from 'src/components/POS/FloatingLabelFloatInput.vue'; import FloatingLabelCurrencyInput from 'src/components/POS/FloatingLabelCurrencyInput.vue'; import { AppliedCouponCodes } from 'models/baseModels/AppliedCouponCodes/AppliedCouponCodes'; -import ReturnSalesInvoiceModal from './ReturnSalesInvoiceModal.vue'; export default defineComponent({ name: 'ClassicPOS', @@ -451,6 +451,9 @@ export default defineComponent({ eventName: PosEmits, ...args: (string | boolean | Item | number | Money)[] ) { + console.log(eventName, 'eventName'); + console.log(...args, '...args'); + this.$emit(eventName, ...args); }, getItem, diff --git a/src/pages/POS/POS.vue b/src/pages/POS/POS.vue index e352734e..7abbdfaf 100644 --- a/src/pages/POS/POS.vue +++ b/src/pages/POS/POS.vue @@ -50,6 +50,7 @@ @save-invoice-action="saveInvoiceAction" @set-transfer-amount="setTransferAmount" @selected-invoice-name="selectedInvoiceName" + @selected-return-invoice="selectedReturnInvoice" @set-transfer-clearance-date="setTransferClearanceDate" /> @@ -398,6 +400,20 @@ export default defineComponent({ }); } }, + async selectedReturnInvoice(invoiceName: string) { + const salesInvoiceDoc = (await this.fyo.doc.getDoc( + ModelNameEnum.SalesInvoice, + invoiceName + )) as SalesInvoice; + + let returnDoc = (await salesInvoiceDoc.getReturnDoc()) as SalesInvoice; + + if (!returnDoc || !returnDoc.name) { + return; + } + + this.sinvDoc = returnDoc; + }, toggleView() { this.tableView = !this.tableView; }, diff --git a/src/pages/POS/ReturnSalesInvoiceModal.vue b/src/pages/POS/ReturnSalesInvoiceModal.vue index 2f47a6c8..ef896021 100644 --- a/src/pages/POS/ReturnSalesInvoiceModal.vue +++ b/src/pages/POS/ReturnSalesInvoiceModal.vue @@ -20,13 +20,14 @@
@@ -36,7 +37,7 @@