fix:add fields in posSettings

This commit is contained in:
Gadha Venu
2025-05-27 09:57:34 +05:30
parent c1ed7437d4
commit f769f63702
4 changed files with 49 additions and 4 deletions
@@ -17,6 +17,8 @@ export class POSSettings extends Doc {
defaultAccount?: string;
itemVisibility?: string;
posUI?: 'Classic' | 'Modern';
canChangeRate?: boolean;
canEditDiscount?: boolean;
static filters: FiltersMap = {
cashAccount: () => ({
@@ -111,6 +111,34 @@
"default": "Inventory Items",
"required": true,
"section": "Default"
},
{
"fieldname": "canChangeRate",
"label": "Can Change Rate",
"fieldtype": "Check",
"default": false,
"section": "Default"
},
{
"fieldname": "hideUnavailableItems",
"label": "Hide Unavailable Items",
"fieldtype": "Check",
"default": false,
"section": "Default"
},
{
"fieldname": "canEditDiscount",
"label": "Can Edit Discount",
"fieldtype": "Check",
"default": false,
"section": "Default"
},
{
"fieldname": "ignorePricingRule",
"label": "Ignore Pricing Rule",
"fieldtype": "Check",
"section": "Default",
"default": false
}
]
}
+10 -3
View File
@@ -159,13 +159,14 @@
:show-label="true"
:border="true"
:value="row.rate"
:read-only="isReadOnly"
:read-only="isReadOnly || !posSettings?.canChangeRate"
@change="(value:Money) => setRate((row.rate = value))"
/>
<feather-icon
name="refresh-ccw"
class="w-3.5 ml-2 mt-5 text-blue-500 flex-none"
@click="row.rate= (defaultRate as Money)"
:disabled="isReadOnly || !posSettings?.canChangeRate"
/>
</div>
<div class="px-6 pt-6 col-span-2">
@@ -181,7 +182,7 @@
:show-label="true"
:border="true"
:value="row.itemDiscountAmount"
:read-only="row.itemDiscountPercent as number > 0 || isReadOnly"
:read-only="row.itemDiscountPercent as number > 0 || isReadOnly || !posSettings?.canEditDiscount"
@change="(value:number) => setItemDiscount('amount', value)"
/>
</div>
@@ -198,7 +199,11 @@
:show-label="true"
:border="true"
:value="row.itemDiscountPercent"
:read-only="!row.itemDiscountAmount?.isZero() || isReadOnly"
:read-only="
!row.itemDiscountAmount?.isZero() ||
isReadOnly ||
!posSettings?.canEditDiscount
"
@change="(value:number) => setItemDiscount('percent', value)"
/>
</div>
@@ -276,6 +281,7 @@ import { validateQty } from 'models/helpers';
import { InvoiceItem } from 'models/baseModels/InvoiceItem/InvoiceItem';
import { SalesInvoice } from 'models/baseModels/SalesInvoice/SalesInvoice';
import { showToast } from 'src/utils/interactive';
import { POSSettings } from 'models/inventory/Point of Sale/POSSettings';
export default defineComponent({
name: 'SelectedItemRow',
@@ -290,6 +296,7 @@ export default defineComponent({
itemSerialNumbers: inject('itemSerialNumbers') as {
[item: string]: string;
},
posSettings: inject('posSettings') as any,
};
},
data() {
+9 -1
View File
@@ -170,6 +170,7 @@ export default defineComponent({
itemSerialNumbers: computed(() => this.itemSerialNumbers),
isDiscountingEnabled: computed(() => this.isDiscountingEnabled),
transferClearanceDate: computed(() => this.transferClearanceDate),
posSettings: computed(() => fyo.singles.POSSettings),
};
},
setup() {
@@ -375,6 +376,8 @@ export default defineComponent({
async setItems() {
const filters: Record<string, boolean> = {};
const itemVisibility = this.fyo.singles.POSSettings?.itemVisibility;
const hideUnavailable =
this.fyo.singles.POSSettings?.hideUnavailableItems;
if (itemVisibility === 'Inventory Items') {
filters.trackItem = true;
@@ -398,6 +401,9 @@ export default defineComponent({
if (!item.name) {
return;
}
if (hideUnavailable && filters.trackItem && availableQty <= 0) {
continue;
}
this.items.push({
availableQty,
@@ -618,7 +624,8 @@ export default defineComponent({
const currentQty = existingItems[0].quantity ?? 0;
const addQty = quantity ?? 1;
if (isInventoryItem) {
const availableQty = this.itemQtyMap[item.name]?.availableQty ?? 0;
const availableQty =
this.itemQtyMap[item.name as string]?.availableQty ?? 0;
if (currentQty + addQty > availableQty) {
throw new ValidationError(
'Cannot add more than the available quantity'
@@ -659,6 +666,7 @@ export default defineComponent({
}
await this.applyPricingRule();
await this.sinvDoc.runFormulas();
} catch (error) {
return showToast({