PluginProbe
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce / 1.3.13
ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce v1.3.13
1.17.9 1.17.8 1.17.7 1.17.6 1.17.5 1.17.4 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.3.0 1.3.1 1.3.11 1.3.12 1.3.13 1.3.14 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 All 143 releases
erp / modules / accounting / includes / function-capabilities.php

function-capabilities.php in ERP: Complete HR, Accounting & CRM Suite Built for WooCommerce 1.3.13, at modules/accounting/includes/function-capabilities.php

382 lines 11.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! function_exists( 'erp_ac_get_manager_role' ) ) {
3
4
5 /**
6 * The manager role for HR employees
7 *
8 * @return string
9 */
10 function erp_ac_get_manager_role() {
11 return apply_filters( 'erp_ac_get_manager_role', 'erp_ac_manager' );
12 }
13
14 function erp_ac_get_agency_role() {
15 return apply_filters( 'erp_ac_get_agency_role', 'erp_ac_agency' );
16 }
17
18 /**
19 * When a new administrator is created, make him HR Manager by default
20 *
21 * @param int $user_id
22 *
23 * @return void
24 */
25 function erp_ac_new_admin_as_manager( $user_id ) {
26 $user = get_user_by( 'id', $user_id );
27
28 if ( $user && in_array('administrator', $user->roles) ) {
29 $user->add_role( erp_ac_get_manager_role() );
30 }
31 }
32
33 /**
34 * Return a user's HR role
35 *
36 * @param int $user_id
37 *
38 * @return string
39 */
40 function erp_ac_get_user_role( $user_id = 0 ) {
41
42 // Validate user id
43 $user = get_userdata( $user_id );
44 $role = false;
45
46 // User has roles so look for a HR one
47 if ( ! empty( $user->roles ) ) {
48
49 // Look for a ac role
50 $roles = array_intersect(
51 array_values( $user->roles ),
52 array_keys( erp_ac_get_roles() )
53 );
54
55 // If there's a role in the array, use the first one. This isn't very
56 // smart, but since roles aren't exactly hierarchical, and HR
57 // does not yet have a UI for multiple user roles, it's fine for now.
58 if ( !empty( $roles ) ) {
59 $role = array_shift( $roles );
60 }
61 }
62
63 return apply_filters( 'erp_ac_get_user_role', $role, $user_id, $user );
64 }
65
66 /**
67 * Get dynamic roles for HR
68 *
69 * @return array
70 */
71 function erp_ac_get_roles() {
72 $roles = [
73 erp_ac_get_manager_role() => [
74 'name' => __( 'Accounting Manager', 'erp' ),
75 'public' => false,
76 'capabilities' => erp_ac_get_caps_for_role( erp_ac_get_manager_role() )
77 ],
78
79 // erp_ac_get_agency_role() => [
80 // 'name' => __( 'Accounting Agency', 'erp' ),
81 // 'public' => false,
82 // 'capabilities' => erp_ac_get_caps_for_role( erp_ac_get_agency_role() )
83 // ]
84 ];
85
86 return apply_filters( 'erp_ac_get_roles', $roles );
87 }
88
89 function erp_ac_get_caps_for_role( $role = '' ) {
90 $caps = [];
91
92 // Which role are we looking for?
93 switch ( $role ) {
94
95 case erp_ac_get_manager_role():
96
97 $caps = [
98 'read' => true,
99 'erp_ac_view_dashboard' => true,
100 'erp_ac_view_customer' => true,
101 'erp_ac_view_single_customer' => true,
102 'erp_ac_view_other_customers' => true,
103 'erp_ac_create_customer' => true,
104 'erp_ac_edit_customer' => true,
105 'erp_ac_edit_other_customers' => true,
106 'erp_ac_delete_customer' => true,
107 'erp_ac_delete_other_customers' => true,
108 'erp_ac_view_vendor' => true,
109 'erp_ac_view_other_vendors' => true,
110 'erp_ac_create_vendor' => true,
111 'erp_ac_edit_vendor' => true,
112 'erp_ac_edit_other_vendors' => true,
113 'erp_ac_delete_vendor' => true,
114 'erp_ac_delete_other_vendors' => true,
115 'erp_ac_view_sale' => true,
116 'erp_ac_view_single_vendor' => true,
117 'erp_ac_view_other_sales' => true,
118 'erp_ac_view_sales_summary' => true,
119 'erp_ac_create_sales_payment' => true,
120 'erp_ac_publish_sales_payment' => true,
121 'erp_ac_create_sales_invoice' => true,
122 'erp_ac_publish_sales_invoice' => true,
123 'erp_ac_view_expense' => true,
124 'erp_ac_view_other_expenses' => true,
125 'erp_ac_view_expenses_summary' => true,
126 'erp_ac_create_expenses_voucher' => true,
127 'erp_ac_publish_expenses_voucher' => true,
128 'erp_ac_create_expenses_credit' => true,
129 'erp_ac_publish_expenses_credit' => true,
130 'erp_ac_view_account_lists' => true,
131 'erp_ac_view_single_account' => true,
132 'erp_ac_create_account' => true,
133 'erp_ac_edit_account' => true,
134 'erp_ac_delete_account' => true,
135 'erp_ac_view_bank_accounts' => true,
136 'erp_ac_create_bank_transfer' => true,
137 'erp_ac_view_journal' => true,
138 'erp_ac_view_other_journals' => true,
139 'erp_ac_create_journal' => true,
140 'erp_ac_view_reports' => true
141
142 ];
143
144 break;
145 }
146
147 return apply_filters( 'erp_ac_get_caps_for_role', $caps, $role );
148 }
149
150 function erp_ac_is_hr_current_user_manager() {
151 $current_user_hr_role = erp_hr_get_user_role( get_current_user_id() );
152
153 if ( erp_hr_get_manager_role() != $current_user_hr_role ) {
154 return false;
155 }
156
157 return true;
158 }
159
160 function erp_ac_permission_management_field( $employee ) {
161
162 if ( ! erp_ac_is_hr_current_user_manager() ) {
163 return;
164 }
165
166 $is_manager = user_can( $employee->id, erp_ac_get_manager_role() ) ? 'on' : 'off';
167
168 erp_html_form_input( array(
169 'label' => __( 'Accounting Manager', 'erp' ),
170 'name' => 'ac_manager',
171 'type' => 'checkbox',
172 'tag' => 'div',
173 'value' => $is_manager,
174 'help' => __( 'This Employee is Accounting Manager', 'erp' )
175 ) );
176 }
177
178
179 //Customer
180 function erp_ac_create_customer() {
181 return current_user_can( 'erp_ac_create_customer' );
182 }
183
184 function erp_ac_current_user_can_edit_customer( $created_by = false ) {
185 if( ! current_user_can( 'erp_ac_edit_customer' ) ) {
186 return false;
187 };
188
189 if ( ! $created_by ) {
190 return false;
191 }
192
193 $user_id = get_current_user_id();
194
195 if ( $created_by == $user_id ) {
196 return true;
197 }
198
199 if( current_user_can( 'erp_ac_edit_other_customers' ) ) {
200 return true;
201 };
202
203 return false;
204 }
205
206 function erp_ac_current_user_can_view_single_customer() {
207 return current_user_can( 'erp_ac_view_single_customer' );
208 }
209
210 function erp_ac_view_other_customers() {
211 return current_user_can( 'erp_ac_view_other_customers' );
212 }
213
214 function erp_ac_current_user_can_delete_customer( $created_by = false ) {
215 if( ! current_user_can( 'erp_ac_delete_customer' ) ) {
216 return false;
217 };
218
219 if ( ! $created_by ) {
220 return false;
221 }
222
223 $user_id = get_current_user_id();
224
225 if ( $created_by == $user_id ) {
226 return true;
227 }
228
229 if( current_user_can( 'erp_ac_delete_other_customers' ) ) {
230 return true;
231 };
232
233 return false;
234 }
235
236 //vendor
237 function erp_ac_create_vendor() {
238 return current_user_can( 'erp_ac_create_vendor' );
239 }
240
241 function erp_ac_current_user_can_edit_vendor( $created_by = false ) {
242 if( ! current_user_can( 'erp_ac_edit_vendor' ) ) {
243 return false;
244 };
245
246 if ( ! $created_by ) {
247 return false;
248 }
249
250 $user_id = get_current_user_id();
251
252 if ( $created_by == $user_id ) {
253 return true;
254 }
255
256 if( current_user_can( 'erp_ac_edit_other_vendors' ) ) {
257 return true;
258 };
259
260 return false;
261 }
262
263 function erp_ac_current_user_can_view_single_vendor() {
264 return current_user_can( 'erp_ac_view_single_vendor' );
265 }
266
267 function erp_ac_view_other_vendors() {
268 return current_user_can( 'erp_ac_view_other_vendors' );
269 }
270
271 function erp_ac_current_user_can_delete_vendor( $created_by = false ) {
272 if( ! current_user_can( 'erp_ac_delete_vendor' ) ) {
273 return false;
274 };
275
276 if ( ! $created_by ) {
277 return false;
278 }
279
280 $user_id = get_current_user_id();
281
282 if ( $created_by == $user_id ) {
283 return true;
284 }
285
286 if( current_user_can( 'erp_ac_delete_other_vendors' ) ) {
287 return true;
288 };
289
290 return false;
291 }
292
293 //sale
294 function erp_ac_view_other_sales() {
295 return current_user_can( 'erp_ac_view_other_sales' );
296 }
297
298 function erp_ac_view_sales_summary() {
299 return current_user_can( 'erp_ac_view_sales_summary' );
300 }
301
302 function erp_ac_create_sales_payment() {
303 return current_user_can( 'erp_ac_create_sales_payment' );
304 }
305
306 function erp_ac_publish_sales_payment() {
307 return current_user_can( 'erp_ac_publish_sales_payment' );
308 }
309
310 function erp_ac_create_sales_invoice() {
311 return current_user_can( 'erp_ac_create_sales_invoice' );
312 }
313
314 function erp_ac_publish_sales_invoice() {
315 return current_user_can( 'erp_ac_publish_sales_invoice' );
316 }
317
318 /**
319 * Check capability to view expenses created by other managers
320 *
321 * @since 1.0.0
322 * @since 1.2.0 Fix capability spelling
323 *
324 * @return boolean
325 */
326 function erp_ac_view_other_expenses() {
327 return current_user_can( 'erp_ac_view_other_expenses' );
328 }
329
330 function erp_ac_view_expenses_summary() {
331 return current_user_can( 'erp_ac_view_expenses_summary' );
332 }
333
334 function erp_ac_create_expenses_voucher() {
335 return current_user_can( 'erp_ac_create_expenses_voucher' );
336 }
337
338 function erp_ac_publish_expenses_voucher() {
339 return current_user_can( 'erp_ac_publish_expenses_voucher' );
340 }
341
342 function erp_ac_create_expenses_credit() {
343 return current_user_can( 'erp_ac_create_expenses_credit' );
344 }
345
346 function erp_ac_publish_expenses_credit() {
347 return current_user_can( 'erp_ac_publish_expenses_credit' );
348 }
349
350 //accounts
351 function erp_ac_view_single_account() {
352 return current_user_can( 'erp_ac_view_single_account' );
353 }
354
355 function erp_ac_create_account() {
356 return current_user_can( 'erp_ac_create_account' );
357 }
358
359 function erp_ac_edit_account() {
360 return current_user_can( 'erp_ac_edit_account' );
361 }
362
363 function erp_ac_delete_account() {
364 return current_user_can( 'erp_ac_delete_account' );
365 }
366
367 //bank accounts
368 function erp_ac_create_bank_transfer() {
369 return current_user_can( 'erp_ac_create_bank_transfer' );
370 }
371 //journal
372 function erp_ac_create_journal() {
373 return current_user_can( 'erp_ac_create_journal' );
374 }
375
376 function erp_ac_view_other_journals() {
377 return current_user_can( 'erp_ac_view_other_journals' );
378 }
379
380
381 }
382