2
0
mirror of https://github.com/frappe/books.git synced 2024-12-23 11:29:03 +00:00
books/models/baseModels/AccountingSettings/AccountingSettings.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

85 lines
2.1 KiB
TypeScript
Raw Normal View History

import { Doc } from 'fyo/model/doc';
import {
2022-07-14 12:33:31 +00:00
ChangeArg,
FiltersMap,
HiddenMap,
ListsMap,
ReadOnlyMap,
2022-11-30 05:54:05 +00:00
ValidationMap,
} from 'fyo/model/types';
2022-04-22 11:02:03 +00:00
import { validateEmail } from 'fyo/model/validationFunction';
2022-07-14 12:33:31 +00:00
import { createDiscountAccount } from 'src/setup/setupInstance';
import { getCountryInfo } from 'utils/misc';
export class AccountingSettings extends Doc {
2022-07-14 12:33:31 +00:00
enableDiscounting?: boolean;
2022-11-30 05:54:05 +00:00
enableInventory?: boolean;
2023-06-06 08:59:08 +00:00
enablePriceList?: boolean;
2024-08-09 05:11:54 +00:00
enableLead?: boolean;
2024-08-21 05:41:43 +00:00
enableCouponCode?: boolean;
enableFormCustomization?: boolean;
enableInvoiceReturns?: boolean;
enableLoyaltyProgram?: boolean;
2024-01-30 12:55:50 +00:00
enablePricingRule?: boolean;
2022-11-30 05:54:05 +00:00
static filters: FiltersMap = {
writeOffAccount: () => ({
isGroup: false,
rootType: 'Expense',
}),
roundOffAccount: () => ({
isGroup: false,
rootType: 'Expense',
}),
2022-07-14 12:33:31 +00:00
discountAccount: () => ({
isGroup: false,
rootType: 'Income',
}),
};
2022-04-22 11:02:03 +00:00
validations: ValidationMap = {
email: validateEmail,
};
static lists: ListsMap = {
country: () => Object.keys(getCountryInfo()),
};
readOnly: ReadOnlyMap = {
enableDiscounting: () => {
return !!this.enableDiscounting;
},
2022-11-30 05:54:05 +00:00
enableInventory: () => {
return !!this.enableInventory;
},
2024-08-09 05:11:54 +00:00
enableLead: () => {
return !!this.enableLead;
},
enableInvoiceReturns: () => {
return !!this.enableInvoiceReturns;
},
enableLoyaltyProgram: () => {
return !!this.enableLoyaltyProgram;
},
};
2022-07-14 12:33:31 +00:00
override hidden: HiddenMap = {
discountAccount: () => !this.enableDiscounting,
gstin: () => this.fyo.singles.SystemSettings?.countryCode !== 'in',
2024-01-30 12:55:50 +00:00
enablePricingRule: () =>
!this.fyo.singles.AccountingSettings?.enableDiscounting,
2024-08-21 05:41:43 +00:00
enableCouponCode: () =>
!this.fyo.singles.AccountingSettings?.enablePricingRule,
};
2022-07-14 12:33:31 +00:00
async change(ch: ChangeArg) {
const discountingEnabled =
ch.changed === 'enableDiscounting' && this.enableDiscounting;
const discountAccountNotSet = !this.discountAccount;
if (discountingEnabled && discountAccountNotSet) {
await createDiscountAccount(this.fyo);
}
}
}