feat(finance): implement project finance and rate card management features

- Added new controllers for managing project finance and rate cards, including CRUD operations for rate card roles and project finance tasks.
- Introduced API routes for project finance and rate card functionalities, enhancing the backend structure.
- Developed frontend components for displaying and managing project finance data, including a finance drawer and rate card settings.
- Enhanced localization files to support new UI elements and ensure consistency across multiple languages.
- Implemented utility functions for handling man-days and financial calculations, improving overall functionality.
This commit is contained in:
chamikaJ
2025-07-24 15:23:34 +05:30
parent 4b54f2cc17
commit 4ffc3465e3
51 changed files with 10202 additions and 169 deletions

View File

@@ -1,3 +1,4 @@
import RateCardSettings from '@/pages/settings/rate-card-settings/RateCardSettings';
import {
BankOutlined,
FileZipOutlined,
@@ -12,20 +13,33 @@ import {
UserOutlined,
UserSwitchOutlined,
BulbOutlined,
DollarCircleOutlined
} from '@/shared/antd-imports';
import React, { ReactNode, lazy } from 'react';
const ProfileSettings = lazy(() => import('../../pages/settings/profile/profile-settings'));
const NotificationsSettings = lazy(() => import('../../pages/settings/notifications/notifications-settings'));
const NotificationsSettings = lazy(
() => import('../../pages/settings/notifications/notifications-settings')
);
const ClientsSettings = lazy(() => import('../../pages/settings/clients/clients-settings'));
const JobTitlesSettings = lazy(() => import('@/pages/settings/job-titles/job-titles-settings'));
const LabelsSettings = lazy(() => import('../../pages/settings/labels/labels-settings'));
const CategoriesSettings = lazy(() => import('../../pages/settings/categories/categories-settings'));
const ProjectTemplatesSettings = lazy(() => import('@/pages/settings/project-templates/project-templates-settings'));
const TaskTemplatesSettings = lazy(() => import('@/pages/settings/task-templates/task-templates-settings'));
const TeamMembersSettings = lazy(() => import('@/pages/settings/team-members/team-members-settings'));
const CategoriesSettings = lazy(
() => import('../../pages/settings/categories/categories-settings')
);
const ProjectTemplatesSettings = lazy(
() => import('@/pages/settings/project-templates/project-templates-settings')
);
const TaskTemplatesSettings = lazy(
() => import('@/pages/settings/task-templates/task-templates-settings')
);
const TeamMembersSettings = lazy(
() => import('@/pages/settings/team-members/team-members-settings')
);
const TeamsSettings = lazy(() => import('../../pages/settings/teams/teams-settings'));
const ChangePassword = lazy(() => import('@/pages/settings/change-password/change-password'));
const LanguageAndRegionSettings = lazy(() => import('@/pages/settings/language-and-region/language-and-region-settings'));
const LanguageAndRegionSettings = lazy(
() => import('@/pages/settings/language-and-region/language-and-region-settings')
);
const AppearanceSettings = lazy(() => import('@/pages/settings/appearance/appearance-settings'));
// type of menu item in settings sidebar
@@ -132,6 +146,13 @@ export const settingsItems: SettingMenuItems[] = [
element: React.createElement(TeamMembersSettings),
adminOnly: true,
},
{
key: 'ratecard',
name: 'Rate Card',
endpoint: 'ratecard',
icon: React.createElement(DollarCircleOutlined),
element: React.createElement(RateCardSettings),
},
{
key: 'teams',
name: 'teams',