From 719302b241b11946206bd03688c97804dbc97dd4 Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Tue, 23 Nov 2021 22:15:02 +0200
Subject: [PATCH] feat: add expense ability.
---
src/common/abilityOption.js | 59 +++++++++++++++----
src/components/Can.js | 21 ++++---
.../ExpenseDrawer/ExpenseDrawerActionBar.js | 39 +++++++-----
.../ExpensesLanding/ExpenseActionsBar.js | 20 ++++---
.../Expenses/ExpensesLanding/components.js | 46 +++++++++------
5 files changed, 123 insertions(+), 62 deletions(-)
diff --git a/src/common/abilityOption.js b/src/common/abilityOption.js
index 757e36c1f..44771dfb2 100644
--- a/src/common/abilityOption.js
+++ b/src/common/abilityOption.js
@@ -1,14 +1,19 @@
export const AbilitySubject = {
Item: 'Item',
- Inventory_Adjustment: 'Inventory_Adjustment',
- Estimate: 'Estimate',
- Invoice: 'Invoice',
- Receipt: 'Receipt',
+ Inventory_Adjustment: 'InventoryAdjustment',
+ Estimate: 'SaleEstimate',
+ Invoice: 'SaleInvoice',
+ Receipt: 'SaleReceipt',
PaymentReceive: 'PaymentReceive',
Bill: 'Bill',
PaymentMade: 'PaymentMade',
Customer: 'Customer',
Vendor: 'Vendor',
+ Account: 'Account',
+ ManualJournal: 'ManualJournal',
+ Expense: 'Expense',
+ Cashflow: 'Cashflow',
+ Report: 'Report',
};
export const Item_Abilities = {
@@ -24,14 +29,14 @@ export const Inventory_Adjustment_Abilities = {
Delete: 'delete',
};
-export const SaleEstimate = {
+export const Estimate_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const SaleInvoice = {
+export const Invoice_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
@@ -39,42 +44,72 @@ export const SaleInvoice = {
BadDebt: 'bad-debt',
};
-export const SaleReceipt = {
+export const Receipt_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const PaymentReceive = {
+export const Payment_Receive_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const Bill = {
+export const Bill_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const PaymentMade = {
+export const Payment_Made_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const CustomerAbilities = {
+
+export const Customer_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
-export const VendorAbilities = {
+
+export const Vendor_Abilities = {
View: 'view',
Create: 'create',
Edit: 'edit',
Delete: 'delete',
};
+
+export const Account_Abilities = {
+ View: 'view',
+ Create: 'create',
+ Edit: 'edit',
+ Delete: 'delete',
+ TransactionsLocking: 'TransactionsLocking',
+};
+
+export const Manual_Journal_Abilities = {
+ View: 'view',
+ Create: 'create',
+ Edit: 'edit',
+ Delete: 'delete',
+};
+
+export const Expense_Abilities = {
+ View: 'view',
+ Create: 'create',
+ Edit: 'edit',
+ Delete: 'delete',
+};
+
+export const Cashflow__Abilities = {
+ View: 'view',
+ Create: 'create',
+ Delete: 'delete',
+};
diff --git a/src/components/Can.js b/src/components/Can.js
index 355e1610e..a24a8d1f4 100644
--- a/src/components/Can.js
+++ b/src/components/Can.js
@@ -6,12 +6,15 @@ import {
Item_Abilities,
AbilitySubject,
Inventory_Adjustment_Abilities,
- SaleEstimate,
- SaleInvoice,
- SaleReceipt,
+ Estimate_Abilities,
+ Invoice_Abilities,
+ Receipt_Abilities,
PaymentReceive,
- Bill,
- PaymentMade,
+ Bill_Abilities,
+ Payment_Made_Abilities,
+ Customer_Abilities,
+ Vendor_Abilities,
+ Account_Abilities,
} from '../common/abilityOption';
export const AbilityContext = React.createContext();
@@ -20,12 +23,12 @@ export const Can = createContextualCan(AbilityContext.Consumer);
const AbilityContextProvider = (props) => {
const ability = new Ability([
{
- subject: [AbilitySubject.PaymentMade],
- action: [PaymentMade.Edit],
+ subject: [AbilitySubject.Account],
+ action: [Account_Abilities.Create],
},
{
- subject: [AbilitySubject.Bill],
- action: [Bill.Create],
+ subject: [AbilitySubject.Invoice],
+ action: [],
},
]);
diff --git a/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js
index f4472c86c..caea9001d 100644
--- a/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js
+++ b/src/containers/Drawers/ExpenseDrawer/ExpenseDrawerActionBar.js
@@ -8,8 +8,11 @@ import {
Intent,
NavbarDivider,
} from '@blueprintjs/core';
-import { FormattedMessage as T } from 'components';
-
+import { Can, FormattedMessage as T } from 'components';
+import {
+ Expense_Abilities,
+ AbilitySubject,
+} from '../../../common/abilityOption';
import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar';
import withAlertsActions from 'containers/Alert/withAlertActions';
import withDrawerActions from 'containers/Drawer/withDrawerActions';
@@ -44,20 +47,24 @@ function ExpenseDrawerActionBar({
return (
- }
- text={}
- onClick={handleEditExpense}
- />
-
- }
- text={}
- intent={Intent.DANGER}
- onClick={handleDeleteExpense}
- />
+
+ }
+ text={}
+ onClick={handleEditExpense}
+ />
+
+
+
+ }
+ text={}
+ intent={Intent.DANGER}
+ onClick={handleDeleteExpense}
+ />
+
);
diff --git a/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js b/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js
index 6b4e59ec5..6f564a22b 100644
--- a/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js
+++ b/src/containers/Expenses/ExpensesLanding/ExpenseActionsBar.js
@@ -15,6 +15,7 @@ import withDialogActions from 'containers/Dialog/withDialogActions';
import {
If,
+ Can,
DashboardRowsHeightButton,
DashboardActionViewsList,
DashboardFilterButton,
@@ -22,6 +23,10 @@ import {
FormattedMessage as T,
} from 'components';
+import {
+ Expense_Abilities,
+ AbilitySubject,
+} from '../../../common/abilityOption';
import { useRefreshExpenses } from 'hooks/query/expenses';
import { useExpensesListContext } from './ExpensesListProvider';
@@ -92,13 +97,14 @@ function ExpensesActionsBar({
onChange={handleTabChange}
/>
-
- }
- text={}
- onClick={onClickNewExpense}
- />
+
+ }
+ text={}
+ onClick={onClickNewExpense}
+ />
+
-
-
+
+
+
+ }
+ text={intl.get('publish_expense')}
+ onClick={safeCallback(onPublish, original)}
+ />
+
+
+
}
- text={intl.get('publish_expense')}
- onClick={safeCallback(onPublish, original)}
+ icon={}
+ text={intl.get('edit_expense')}
+ onClick={safeCallback(onEdit, original)}
/>
-
- }
- text={intl.get('edit_expense')}
- onClick={safeCallback(onEdit, original)}
- />
- }
- text={intl.get('delete_expense')}
- intent={Intent.DANGER}
- onClick={safeCallback(onDelete, original)}
- />
+
+
+ }
+ text={intl.get('delete_expense')}
+ intent={Intent.DANGER}
+ onClick={safeCallback(onDelete, original)}
+ />
+
);
}