diff --git a/models/inventory/StockTransfer.ts b/models/inventory/StockTransfer.ts index 1d8bb97f..5678a47d 100644 --- a/models/inventory/StockTransfer.ts +++ b/models/inventory/StockTransfer.ts @@ -3,6 +3,7 @@ import { Attachment } from 'fyo/core/types'; import { Doc } from 'fyo/model/doc'; import { Action, + ChangeArg, DefaultMap, FiltersMap, FormulaMap, @@ -15,6 +16,7 @@ import { addItem, getLedgerLinkAction, getNumberSeries } from 'models/helpers'; import { LedgerPosting } from 'models/Transactional/LedgerPosting'; import { ModelNameEnum } from 'models/types'; import { Money } from 'pesa'; +import { TargetField } from 'schemas/types'; import { validateBatch } from './helpers'; import { StockTransferItem } from './StockTransferItem'; import { Transfer } from './Transfer'; @@ -66,6 +68,11 @@ export abstract class StockTransfer extends Transfer { role: ['in', [doc.isSales ? 'Customer' : 'Supplier', 'Both']], }), numberSeries: (doc: Doc) => ({ referenceType: doc.schemaName }), + backReference: () => ({ + stockNotTransferred: true, + submitted: true, + cancelled: false, + }), }; override _getTransferDetails() { @@ -257,4 +264,37 @@ export abstract class StockTransfer extends Transfer { async addItem(name: string) { return await addItem(name, this); } + + override async change({ doc, changed }: ChangeArg): Promise { + if (doc.name === this.name && changed === 'backReference') { + await this.setFieldsFromBackReference(); + } + } + + async setFieldsFromBackReference() { + const backReference = this.backReference; + const { target } = this.fyo.getField( + this.schemaName, + 'backReference' + ) as TargetField; + + if (!backReference || !target) { + return; + } + + const brDoc = await this.fyo.doc.getDoc(target, backReference); + if (!(brDoc instanceof Invoice)) { + return; + } + + const stDoc = await brDoc.getStockTransfer(); + if (!stDoc) { + return; + } + + await this.set('party', stDoc.party); + await this.set('terms', stDoc.terms); + await this.set('date', stDoc.date); + await this.set('items', stDoc.items); + } } diff --git a/schemas/app/inventory/PurchaseReceipt.json b/schemas/app/inventory/PurchaseReceipt.json index 7b051053..e145edb6 100644 --- a/schemas/app/inventory/PurchaseReceipt.json +++ b/schemas/app/inventory/PurchaseReceipt.json @@ -20,7 +20,6 @@ "label": "Back Reference", "fieldtype": "Link", "target": "PurchaseInvoice", - "readOnly": true, "section": "References" }, { diff --git a/schemas/app/inventory/Shipment.json b/schemas/app/inventory/Shipment.json index 242a0d64..b2265281 100644 --- a/schemas/app/inventory/Shipment.json +++ b/schemas/app/inventory/Shipment.json @@ -20,7 +20,6 @@ "label": "Back Reference", "fieldtype": "Link", "target": "SalesInvoice", - "readOnly": true, "section": "References" }, {