diff --git a/models/baseModels/InvoiceItem/InvoiceItem.ts b/models/baseModels/InvoiceItem/InvoiceItem.ts index eb998b20..137c467d 100644 --- a/models/baseModels/InvoiceItem/InvoiceItem.ts +++ b/models/baseModels/InvoiceItem/InvoiceItem.ts @@ -659,8 +659,17 @@ export abstract class InvoiceItem extends Doc { ); const conversionUoms = conversionItems.map((i) => i.uom) as string[]; + const baseUnit = await doc.fyo.getValue( + ModelNameEnum.Item, + doc.item as string, + 'unit' + ); + const validUoms = [...conversionUoms, baseUnit].filter( + Boolean + ) as string[]; + return { - name: ['in', conversionUoms], + name: ['in', validUoms], }; }, }; diff --git a/models/inventory/StockMovementItem.ts b/models/inventory/StockMovementItem.ts index 6fdcbe05..6a501f8e 100644 --- a/models/inventory/StockMovementItem.ts +++ b/models/inventory/StockMovementItem.ts @@ -15,6 +15,7 @@ import { safeParseFloat } from 'utils/index'; import { StockMovement } from './StockMovement'; import { TransferItem } from './TransferItem'; import { MovementTypeEnum } from './types'; +import { Doc } from 'fyo/model/doc'; export class StockMovementItem extends TransferItem { name?: string; @@ -54,6 +55,39 @@ export class StockMovementItem extends TransferItem { static filters: FiltersMap = { item: () => ({ trackItem: true }), + transferUnit: async (doc: Doc) => { + const conversionItems = await doc.fyo.db.getAll( + ModelNameEnum.UOMConversionItem, + { + fields: ['uom'], + filters: { parent: doc.item as string }, + } + ); + const conversionUoms = conversionItems.map((i) => i.uom) as string[]; + + const baseUnit = await doc.fyo.getValue( + ModelNameEnum.Item, + doc.item as string, + 'unit' + ); + const validUoms = [...conversionUoms, baseUnit].filter( + Boolean + ) as string[]; + return { + name: ['in', validUoms], + }; + }, + batch: async (doc: Doc) => { + const batches = await doc.fyo.db.getAll(ModelNameEnum.Batch, { + fields: ['name'], + filters: { item: doc.item as string }, + }); + const batchName = batches.map((b) => b.name) as string[]; + + return { + name: ['in', batchName], + }; + }, }; async validate() { diff --git a/src/components/POS/Classic/SelectedItemRow.vue b/src/components/POS/Classic/SelectedItemRow.vue index 74282e88..becd22a9 100644 --- a/src/components/POS/Classic/SelectedItemRow.vue +++ b/src/components/POS/Classic/SelectedItemRow.vue @@ -486,7 +486,6 @@ export default defineComponent({ this.row.set('setItemDiscountAmount', false); this.row.set('itemDiscountPercent', 0); } - this.row.set('rate', this.fyo.pesa(0)); if (hasManualDiscount) { this.row.set('setItemDiscountAmount', true); diff --git a/src/pages/POS/ModernPOS.vue b/src/pages/POS/ModernPOS.vue index 2a542e23..43fc858e 100644 --- a/src/pages/POS/ModernPOS.vue +++ b/src/pages/POS/ModernPOS.vue @@ -102,6 +102,7 @@ :border="true" :value="sinvDoc?.party" :df="sinvDoc?.fieldMap.party" + :show-clear-button="true" @change="(value:string) => $emit('setCustomer',value)" /> @@ -309,6 +310,7 @@ }" :border="true" :value="itemSearchTerm" + :show-clear-button="true" @keyup.enter="(item) => emitEvent('handleItemSearch', item.target.value as string, true) " @@ -324,6 +326,7 @@ target: 'ItemGroup', }" :border="true" + :show-clear-button="true" :value="selectedItemGroup" @change="(group: string) => emitEvent('setItemGroup',group)" /> diff --git a/src/pages/POS/POSQuickActions.vue b/src/pages/POS/POSQuickActions.vue index 4b080085..51f118b7 100644 --- a/src/pages/POS/POSQuickActions.vue +++ b/src/pages/POS/POSQuickActions.vue @@ -304,13 +304,16 @@ >