From d661ea04a7d2c7d1afe30b52995c5ac1cbccdb48 Mon Sep 17 00:00:00 2001 From: Gadha2311 Date: Mon, 21 Jul 2025 09:56:34 +0530 Subject: [PATCH] feat : item enquiry --- .../AccountingSettings/AccountingSettings.ts | 1 + models/baseModels/ItemEnquiry/ItemEnquiry.ts | 22 ++ models/index.ts | 2 + models/types.ts | 1 + schemas/app/AccountingSettings.json | 7 + schemas/app/ItemEnquiry.json | 42 ++ schemas/schemas.ts | 2 + src/components/POS/types.ts | 1 + src/pages/POS/ClassicPOS.vue | 8 + src/pages/POS/ItemEnquiryModal.vue | 363 ++++++++++++++++++ src/pages/POS/POS.vue | 2 + src/pages/POS/POSQuickActions.vue | 47 +++ 12 files changed, 498 insertions(+) create mode 100644 models/baseModels/ItemEnquiry/ItemEnquiry.ts create mode 100644 schemas/app/ItemEnquiry.json create mode 100644 src/pages/POS/ItemEnquiryModal.vue diff --git a/models/baseModels/AccountingSettings/AccountingSettings.ts b/models/baseModels/AccountingSettings/AccountingSettings.ts index 05d570ba..6732f293 100644 --- a/models/baseModels/AccountingSettings/AccountingSettings.ts +++ b/models/baseModels/AccountingSettings/AccountingSettings.ts @@ -23,6 +23,7 @@ export class AccountingSettings extends Doc { enableInvoiceReturns?: boolean; enableLoyaltyProgram?: boolean; enablePricingRule?: boolean; + enaenableItemEnquiry?: boolean; enableERPNextSync?: boolean; enablePointOfSaleWithOutInventory?: boolean; enablePartialPayment?: boolean; diff --git a/models/baseModels/ItemEnquiry/ItemEnquiry.ts b/models/baseModels/ItemEnquiry/ItemEnquiry.ts new file mode 100644 index 00000000..d5d23c64 --- /dev/null +++ b/models/baseModels/ItemEnquiry/ItemEnquiry.ts @@ -0,0 +1,22 @@ +import { Doc } from 'fyo/model/doc'; +import { ListViewSettings } from 'fyo/model/types'; + +export class ItemEnquiry extends Doc { + itemName!: string; + customerName!: string; + contact?: string; + description?: string; + similarProduct?: string; + + static override getListViewSettings(): ListViewSettings { + return { + columns: [ + 'itemName', + 'customerName', + 'contact', + 'description', + 'similarProduct', + ], + }; + } +} diff --git a/models/index.ts b/models/index.ts index c7de9163..95aa4cf3 100644 --- a/models/index.ts +++ b/models/index.ts @@ -57,6 +57,7 @@ import { ERPNextSyncSettings } from './baseModels/ERPNextSyncSettings/ERPNextSyn import { ERPNextSyncQueue } from './baseModels/ERPNextSyncQueue/ERPNextSyncQueue'; import { FetchFromERPNextQueue } from './baseModels/FetchFromERPNextQueue/FetchFromERPNextQueue'; import { IntegrationErrorLog } from './baseModels/IntegrationErrorLog/IntegrationErrorLog'; +import { ItemEnquiry } from './baseModels/ItemEnquiry/ItemEnquiry'; export const models = { Account, @@ -67,6 +68,7 @@ export const models = { Defaults, Item, ItemGroup, + ItemEnquiry, JournalEntry, JournalEntryAccount, Misc, diff --git a/models/types.ts b/models/types.ts index 7ccada16..444cda89 100644 --- a/models/types.ts +++ b/models/types.ts @@ -21,6 +21,7 @@ export enum ModelNameEnum { Defaults = 'Defaults', Item = 'Item', ItemGroup = 'ItemGroup', + ItemEnquiry = 'ItemEnquiry', UOM = 'UOM', UOMConversionItem = 'UOMConversionItem', JournalEntry = 'JournalEntry', diff --git a/schemas/app/AccountingSettings.json b/schemas/app/AccountingSettings.json index f3cc1c8a..4c20b6a3 100644 --- a/schemas/app/AccountingSettings.json +++ b/schemas/app/AccountingSettings.json @@ -121,6 +121,13 @@ "default": false, "section": "Features" }, + { + "fieldname": "enableItemEnquiry", + "label": "Enable Item Enquiry", + "fieldtype": "Check", + "default": true, + "section": "Features" + }, { "fieldname": "enableLoyaltyProgram", "label": "Enable Loyalty Program", diff --git a/schemas/app/ItemEnquiry.json b/schemas/app/ItemEnquiry.json new file mode 100644 index 00000000..a7c891a4 --- /dev/null +++ b/schemas/app/ItemEnquiry.json @@ -0,0 +1,42 @@ +{ + "name": "ItemEnquiry", + "label": "Item Enquiry", + "create": false, + "isSingle": false, + "isChild": false, + "naming": "autoincrement", + "fields": [ + { + "fieldname": "itemName", + "label": "Item Name", + "fieldtype": "Data", + "required": true, + "section": "Default" + }, + { + "fieldname": "customerName", + "label": "Customer Name", + "fieldtype": "Data", + "section": "Default" + }, + { + "fieldname": "contact", + "label": "Contact", + "fieldtype": "Data", + "section": "Default" + }, + { + "fieldname": "description", + "label": "Description", + "fieldtype": "Text", + "section": "Default" + }, + { + "fieldname": "similarProduct", + "label": "Similar Product", + "fieldtype": "Data", + "readOnly": true, + "section": "Default" + } + ] +} diff --git a/schemas/schemas.ts b/schemas/schemas.ts index bb06ca15..364c3572 100644 --- a/schemas/schemas.ts +++ b/schemas/schemas.ts @@ -81,6 +81,7 @@ import FetchFromERPNextQueue from './app/FetchFromERPNextQueue.json'; import IntegrationErrorLog from './app/IntegrationErrorLog.json'; import ItemGroup from './app/ItemGroup.json'; import { Schema, SchemaStub } from './types'; +import ItemEnquiry from './app/ItemEnquiry.json'; export const coreSchemas: Schema[] = [ PatchRun as Schema, @@ -132,6 +133,7 @@ export const appSchemas: Schema[] | SchemaStub[] = [ JournalEntryAccount as Schema, Invoice as Schema, + ItemEnquiry as Schema, SalesInvoice as Schema, PurchaseInvoice as Schema, SalesQuote as Schema, diff --git a/src/components/POS/types.ts b/src/components/POS/types.ts index 5970c103..a511aa42 100644 --- a/src/components/POS/types.ts +++ b/src/components/POS/types.ts @@ -19,6 +19,7 @@ export const modalNames = [ 'Alert', 'CouponCode', 'PriceList', + 'ItemEnquiry', 'ReturnSalesInvoice', ] as const; diff --git a/src/pages/POS/ClassicPOS.vue b/src/pages/POS/ClassicPOS.vue index 19e1fcbc..c8190c9a 100644 --- a/src/pages/POS/ClassicPOS.vue +++ b/src/pages/POS/ClassicPOS.vue @@ -40,6 +40,11 @@ @toggle-modal="emitEvent('toggleModal', 'PriceList')" /> + + + +

{{ t`Item Enquiry` }}

+
+
+
+
+ + +
    +
  • + {{ item.name }} +
  • +
+
+ +
+ + +
    +
  • + {{ party.name }} +
  • +
+
+ +
+ + +
+ +
+ +