ajax()) {
return $next($request);
}
Menu::create('admin-sidebar-menu', function ($menu) {
$enabled_modules = !empty(session('business.enabled_modules')) ? session('business.enabled_modules') : [];
$unified_warehousing_menu = (bool) config('menu_consolidation.unified_warehousing_menu', true);
$common_settings = !empty(session('business.common_settings')) ? session('business.common_settings') : [];
$pos_settings = !empty(session('business.pos_settings')) ? json_decode(session('business.pos_settings'), true) : [];
$is_admin = auth()->user()->hasRole('Admin#' . session('business.id')) ? true : false;
//Home
// $menu->url(action([\App\Http\Controllers\HomeController::class, 'index']), __('home.home'), ['icon' => '', 'active' => request()->segment(1) == 'home'])->order(5);
$menu->url(action([\App\Http\Controllers\HomeController::class, 'index']), __('home.home'), ['icon' => '', 'active' => request()->segment(1) == 'home'])->order(5);
//User management dropdown
if (auth()->user()->can('user.view') || auth()->user()->can('user.create') || auth()->user()->can('roles.view')) {
$menu->dropdown(
__('user.user_management'),
function ($sub) {
if (auth()->user()->can('user.view')) {
$sub->url(
action([\App\Http\Controllers\ManageUserController::class, 'index']),
__('user.users'),
['icon' => '', 'active' => request()->segment(1) == 'users']
);
}
if (auth()->user()->can('roles.view')) {
$sub->url(
action([\App\Http\Controllers\RoleController::class, 'index']),
__('user.roles'),
['icon' => '', 'active' => request()->segment(1) == 'roles']
);
}
if (auth()->user()->can('user.create')) {
$sub->url(
action([\App\Http\Controllers\SalesCommissionAgentController::class, 'index']),
__('lang_v1.sales_commission_agents'),
['icon' => '', 'active' => request()->segment(1) == 'sales-commission-agents']
);
}
},
['icon' => '', ]
)->order(10);
}
//Contacts dropdown
if (auth()->user()->can('supplier.view') || auth()->user()->can('customer.view') || auth()->user()->can('supplier.view_own') || auth()->user()->can('customer.view_own')) {
$menu->dropdown(
__('contact.contacts'),
function ($sub) {
if (auth()->user()->can('supplier.view') || auth()->user()->can('supplier.view_own')) {
$sub->url(
action([\App\Http\Controllers\ContactController::class, 'index'], ['type' => 'supplier']),
__('report.supplier'),
['icon' => '', 'active' => request()->input('type') == 'supplier']
);
}
if (auth()->user()->can('customer.view') || auth()->user()->can('customer.view_own')) {
$sub->url(
action([\App\Http\Controllers\ContactController::class, 'index'], ['type' => 'customer']),
__('report.customer'),
['icon' => '', 'active' => request()->input('type') == 'customer']
);
$sub->url(
action([\App\Http\Controllers\CustomerGroupController::class, 'index']),
__('lang_v1.customer_groups'),
['icon' => '', 'active' => request()->segment(1) == 'customer-group']
);
}
if (auth()->user()->can('supplier.create') || auth()->user()->can('customer.create')) {
$sub->url(
action([\App\Http\Controllers\ContactController::class, 'getImportContacts']),
__('lang_v1.import_contacts'),
['icon' => '', 'active' => request()->segment(1) == 'contacts' && request()->segment(2) == 'import']
);
}
if (!empty(env('GOOGLE_MAP_API_KEY'))) {
$sub->url(
action([\App\Http\Controllers\ContactController::class, 'contactMap']),
__('lang_v1.map'),
['icon' => 'fa fas fa-map-marker-alt', 'active' => request()->segment(1) == 'contacts' && request()->segment(2) == 'map']
);
}
},
['icon' => '', 'id' => 'tour_step4']
)->order(15);
}
//Products dropdown
if (auth()->user()->can('product.view') || auth()->user()->can('product.create') ||
auth()->user()->can('brand.view') || auth()->user()->can('unit.view') ||
auth()->user()->can('category.view') || auth()->user()->can('brand.create') ||
auth()->user()->can('unit.create') || auth()->user()->can('category.create')) {
$menu->dropdown(
__('sale.products'),
function ($sub) {
if (auth()->user()->can('product.view')) {
$sub->url(
action([\App\Http\Controllers\ProductController::class, 'index']),
__('lang_v1.list_products'),
['icon' => '', 'active' => request()->segment(1) == 'products' && request()->segment(2) == '']
);
}
if (auth()->user()->can('product.create')) {
$sub->url(
action([\App\Http\Controllers\ProductController::class, 'create']),
__('product.add_product'),
['icon' => '', 'active' => request()->segment(1) == 'products' && request()->segment(2) == 'create']
);
}
if (auth()->user()->can('product.create')) {
$sub->url(
action([\App\Http\Controllers\SellingPriceGroupController::class, 'updateProductPrice']),
__('lang_v1.update_product_price'),
['icon' => '', 'active' => request()->segment(1) == 'update-product-price']
);
}
if (auth()->user()->can('product.view')) {
$sub->url(
action([\App\Http\Controllers\LabelsController::class, 'show']),
__('barcode.print_labels'),
['icon' => '', 'active' => request()->segment(1) == 'labels' && request()->segment(2) == 'show']
);
}
if (auth()->user()->can('product.create')) {
$sub->url(
action([\App\Http\Controllers\VariationTemplateController::class, 'index']),
__('product.variations'),
['icon' => '', 'active' => request()->segment(1) == 'variation-templates']
);
$sub->url(
action([\App\Http\Controllers\ImportProductsController::class, 'index']),
__('product.import_products'),
['icon' => '', 'active' => request()->segment(1) == 'import-products']
);
}
if (auth()->user()->can('product.opening_stock')) {
$sub->url(
action([\App\Http\Controllers\ImportOpeningStockController::class, 'index']),
__('lang_v1.import_opening_stock'),
['icon' => '', 'active' => request()->segment(1) == 'import-opening-stock']
);
}
if (auth()->user()->can('product.create')) {
$sub->url(
action([\App\Http\Controllers\SellingPriceGroupController::class, 'index']),
__('lang_v1.selling_price_group'),
['icon' => '', 'active' => request()->segment(1) == 'selling-price-group']
);
}
if (auth()->user()->can('unit.view') || auth()->user()->can('unit.create')) {
$sub->url(
action([\App\Http\Controllers\UnitController::class, 'index']),
__('unit.units'),
['icon' => '', 'active' => request()->segment(1) == 'units']
);
}
if (auth()->user()->can('category.view') || auth()->user()->can('category.create')) {
$sub->url(
action([\App\Http\Controllers\TaxonomyController::class, 'index']) . '?type=product',
__('category.categories'),
['icon' => '', 'active' => request()->segment(1) == 'taxonomies' && request()->get('type') == 'product']
);
}
if (auth()->user()->can('brand.view') || auth()->user()->can('brand.create')) {
$sub->url(
action([\App\Http\Controllers\BrandController::class, 'index']),
__('brand.brands'),
['icon' => '', 'active' => request()->segment(1) == 'brands']
);
}
$sub->url(
action([\App\Http\Controllers\WarrantyController::class, 'index']),
__('lang_v1.warranties'),
['icon' => '', 'active' => request()->segment(1) == 'warranties']
);
},
['icon' => '', 'id' => 'tour_step5']
)->order(20);
}
// Warehousing dropdown (انبارداری)
$module_util_wh = new ModuleUtil();
$business_id_wh = session()->get('user.business_id');
$is_inventory_module = (bool) $module_util_wh->hasThePermissionInSubscription($business_id_wh, 'inventorymanagement_module');
$can_warehouse = auth()->user()->can('stock_transfer.view') || auth()->user()->can('stock_transfer.create') || auth()->user()->can('stock_transfer.view_own')
|| auth()->user()->can('stock_adjustment.view') || auth()->user()->can('stock_adjustment.create') || auth()->user()->can('view_own_stock_adjustment')
|| auth()->user()->can('stock_report.view')
|| ($is_inventory_module && auth()->user()->can('inventorymanagement.view'));
if ($can_warehouse) {
$menu->dropdown(
__('lang_v1.warehousing'),
function ($sub) use ($enabled_modules, $is_inventory_module) {
$is_inventory_module_enabled = \Module::has('InventoryManagement') && \Module::isEnabled('InventoryManagement');
if ($is_inventory_module_enabled && $is_inventory_module && auth()->user()->can('inventorymanagement.view')) {
$sub->url(
action([\Modules\InventoryManagement\Http\Controllers\InventoryManagementController::class, 'index']),
__('lang_v1.new_stocktake'),
['icon' => '', 'active' => request()->segment(1) == 'inventorymanagement' && request()->segment(2) == '']
);
$sub->url(
action([\Modules\InventoryManagement\Http\Controllers\InventoryManagementController::class, 'showInventoryList']),
__('lang_v1.stocktake_list'),
['icon' => '', 'active' => request()->segment(1) == 'inventorymanagement' && request()->segment(2) == 'showInventoryList']
);
if ($is_inventory_module_enabled) {
$sub->url(
url('inventorymanagement/wms'),
__('lang_v1.wms_advanced'),
['icon' => '', 'active' => request()->segment(1) == 'inventorymanagement' && request()->segment(2) == 'wms']
);
}
}
if (in_array('stock_transfers', $enabled_modules) && (auth()->user()->can('stock_transfer.view') || auth()->user()->can('stock_transfer.view_own'))) {
$sub->url(
action([\App\Http\Controllers\StockTransferController::class, 'index']),
__('lang_v1.list_stock_transfers'),
['icon' => '', 'active' => request()->segment(1) == 'stock-transfers']
);
}
if (in_array('stock_transfers', $enabled_modules) && auth()->user()->can('stock_transfer.create')) {
$sub->url(
action([\App\Http\Controllers\StockTransferController::class, 'create']),
__('lang_v1.add_stock_transfer'),
['icon' => '', 'active' => request()->segment(1) == 'stock-transfers' && request()->segment(2) == 'create']
);
}
if (in_array('stock_adjustment', $enabled_modules) && (auth()->user()->can('stock_adjustment.view') || auth()->user()->can('view_own_stock_adjustment'))) {
$sub->url(
action([\App\Http\Controllers\StockAdjustmentController::class, 'index']),
__('stock_adjustment.list'),
['icon' => '', 'active' => request()->segment(1) == 'stock-adjustments']
);
}
if (in_array('stock_adjustment', $enabled_modules) && auth()->user()->can('stock_adjustment.create')) {
$sub->url(
action([\App\Http\Controllers\StockAdjustmentController::class, 'create']),
__('stock_adjustment.add'),
['icon' => '', 'active' => request()->segment(1) == 'stock-adjustments' && request()->segment(2) == 'create']
);
}
if (auth()->user()->can('stock_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getStockAdjustmentReport']),
__('lang_v1.warehouse_reports'),
['icon' => '', 'active' => request()->segment(1) == 'reports' && request()->segment(2) == 'stock-adjustment-report']
);
}
},
['icon' => '']
)->order(22);
}
//Purchase dropdown
if (in_array('purchases', $enabled_modules) && (auth()->user()->can('purchase.view') || auth()->user()->can('purchase.create') || auth()->user()->can('purchase.update'))) {
$menu->dropdown(
__('purchase.purchases'),
function ($sub) use ($common_settings) {
if (!empty($common_settings['enable_purchase_requisition']) && (auth()->user()->can('purchase_requisition.view_all') || auth()->user()->can('purchase_requisition.view_own'))) {
$sub->url(
action([\App\Http\Controllers\PurchaseRequisitionController::class, 'index']),
__('lang_v1.purchase_requisition'),
['icon' => '', 'active' => request()->segment(1) == 'purchase-requisition']
);
}
if (!empty($common_settings['enable_purchase_order']) && (auth()->user()->can('purchase_order.view_all') || auth()->user()->can('purchase_order.view_own'))) {
$sub->url(
action([\App\Http\Controllers\PurchaseOrderController::class, 'index']),
__('lang_v1.purchase_order'),
['icon' => '', 'active' => request()->segment(1) == 'purchase-order']
);
}
if (auth()->user()->can('purchase.view') || auth()->user()->can('view_own_purchase')) {
$sub->url(
action([\App\Http\Controllers\PurchaseController::class, 'index']),
__('purchase.list_purchase'),
['icon' => '', 'active' => request()->segment(1) == 'purchases' && request()->segment(2) == null]
);
}
if (auth()->user()->can('purchase.create')) {
$sub->url(
action([\App\Http\Controllers\PurchaseController::class, 'create']),
__('purchase.add_purchase'),
['icon' => '', 'active' => request()->segment(1) == 'purchases' && request()->segment(2) == 'create']
);
}
if (auth()->user()->can('purchase.update')) {
$sub->url(
action([\App\Http\Controllers\PurchaseReturnController::class, 'index']),
__('lang_v1.list_purchase_return'),
['icon' => '', 'active' => request()->segment(1) == 'purchase-return']
);
}
},
['icon' => '', 'id' => 'tour_step6']
)->order(25);
}
//Sell dropdown
if ($is_admin || auth()->user()->hasAnyPermission(['sell.view', 'sell.create', 'direct_sell.access', 'view_own_sell_only', 'view_commission_agent_sell', 'access_shipping', 'access_own_shipping', 'access_commission_agent_shipping', 'access_sell_return', 'direct_sell.view', 'direct_sell.update', 'access_own_sell_return'])) {
$menu->dropdown(
__('sale.sale'),
function ($sub) use ($enabled_modules, $is_admin, $pos_settings) {
if (!empty($pos_settings['enable_sales_order']) && ($is_admin || auth()->user()->hasAnyPermission(['so.view_own', 'so.view_all', 'so.create']))) {
$sub->url(
action([\App\Http\Controllers\SalesOrderController::class, 'index']),
__('lang_v1.sales_order'),
['icon' => '', 'active' => request()->segment(1) == 'sales-order']
);
}
if ($is_admin || auth()->user()->hasAnyPermission(['sell.view', 'sell.create', 'direct_sell.access', 'direct_sell.view', 'view_own_sell_only', 'view_commission_agent_sell', 'access_shipping', 'access_own_shipping', 'access_commission_agent_shipping'])) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'index']),
__('lang_v1.all_sales'),
['icon' => '', 'active' => request()->segment(1) == 'sells' && request()->segment(2) == null]
);
}
if (in_array('add_sale', $enabled_modules) && auth()->user()->can('direct_sell.access')) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'create']),
__('sale.add_sale'),
['icon' => '', 'active' => request()->segment(1) == 'sells' && request()->segment(2) == 'create' && empty(request()->get('status'))]
);
}
if (auth()->user()->can('sell.create')) {
if (in_array('pos_sale', $enabled_modules)) {
if (auth()->user()->can('sell.view')) {
$sub->url(
action([\App\Http\Controllers\SellPosController::class, 'index']),
__('sale.list_pos'),
['icon' => '', 'active' => request()->segment(1) == 'pos' && request()->segment(2) == null]
);
}
$sub->url(
action([\App\Http\Controllers\SellPosController::class, 'create']),
__('sale.pos_sale'),
['icon' => '', 'active' => request()->segment(1) == 'pos' && request()->segment(2) == 'create']
);
}
}
if (in_array('add_sale', $enabled_modules) && auth()->user()->can('direct_sell.access')) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'create'], ['status' => 'draft']),
__('lang_v1.add_draft'),
['icon' => '', 'active' => request()->get('status') == 'draft']
);
}
if (in_array('add_sale', $enabled_modules) && ($is_admin || auth()->user()->hasAnyPermission(['draft.view_all', 'draft.view_own']))) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'getDrafts']),
__('lang_v1.list_drafts'),
['icon' => '', 'active' => request()->segment(1) == 'sells' && request()->segment(2) == 'drafts']
);
}
if (in_array('add_sale', $enabled_modules) && auth()->user()->can('direct_sell.access')) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'create'], ['status' => 'quotation']),
__('lang_v1.add_quotation'),
['icon' => '', 'active' => request()->get('status') == 'quotation']
);
}
if (in_array('add_sale', $enabled_modules) && ($is_admin || auth()->user()->hasAnyPermission(['quotation.view_all', 'quotation.view_own']))) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'getQuotations']),
__('lang_v1.list_quotations'),
['icon' => '', 'active' => request()->segment(1) == 'sells' && request()->segment(2) == 'quotations']
);
}
if (auth()->user()->can('access_sell_return') || auth()->user()->can('access_own_sell_return')) {
$sub->url(
action([\App\Http\Controllers\SellReturnController::class, 'index']),
__('lang_v1.list_sell_return'),
['icon' => '', 'active' => request()->segment(1) == 'sell-return' && request()->segment(2) == null]
);
}
if ($is_admin || auth()->user()->hasAnyPermission(['access_shipping', 'access_own_shipping', 'access_commission_agent_shipping'])) {
$sub->url(
action([\App\Http\Controllers\SellController::class, 'shipments']),
__('lang_v1.shipments'),
['icon' => '', 'active' => request()->segment(1) == 'shipments']
);
}
if (auth()->user()->can('discount.access')) {
$sub->url(
action([\App\Http\Controllers\DiscountController::class, 'index']),
__('lang_v1.discounts'),
['icon' => '', 'active' => request()->segment(1) == 'discount']
);
}
if (in_array('subscription', $enabled_modules) && auth()->user()->can('direct_sell.access')) {
$sub->url(
action([\App\Http\Controllers\SellPosController::class, 'listSubscriptions']),
__('lang_v1.subscriptions'),
['icon' => '', 'active' => request()->segment(1) == 'subscriptions']
);
}
if (auth()->user()->can('sell.create')) {
$sub->url(
action([\App\Http\Controllers\ImportSalesController::class, 'index']),
__('lang_v1.import_sales'),
['icon' => '', 'active' => request()->segment(1) == 'import-sales']
);
}
},
['icon' => '', 'id' => 'tour_step7']
)->order(30);
}
//Stock transfer dropdown (hidden when unified warehousing menu is active)
if (! $unified_warehousing_menu && in_array('stock_transfers', $enabled_modules) && (auth()->user()->can('stock_transfer.view') || auth()->user()->can('stock_transfer.create') || auth()->user()->can('stock_transfer.view_own'))) {
$menu->dropdown(
__('lang_v1.stock_transfers'),
function ($sub) {
if (auth()->user()->can('stock_transfer.view') || auth()->user()->can('stock_transfer.view_own')) {
$sub->url(
action([\App\Http\Controllers\StockTransferController::class, 'index']),
__('lang_v1.list_stock_transfers'),
['icon' => '', 'active' => request()->segment(1) == 'stock-transfers' && request()->segment(2) == null]
);
}
if (auth()->user()->can('stock_transfer.create')) {
$sub->url(
action([\App\Http\Controllers\StockTransferController::class, 'create']),
__('lang_v1.add_stock_transfer'),
['icon' => '', 'active' => request()->segment(1) == 'stock-transfers' && request()->segment(2) == 'create']
);
}
},
['icon' => '']
)->order(35);
}
//stock adjustment dropdown (hidden when unified warehousing menu is active)
if (! $unified_warehousing_menu && in_array('stock_adjustment', $enabled_modules) && (auth()->user()->can('stock_adjustment.view') || auth()->user()->can('stock_adjustment.create') || auth()->user()->can('view_own_stock_adjustment'))) {
$menu->dropdown(
__('stock_adjustment.stock_adjustment'),
function ($sub) {
if (auth()->user()->can('stock_adjustment.view') || auth()->user()->can('view_own_stock_adjustment')) {
$sub->url(
action([\App\Http\Controllers\StockAdjustmentController::class, 'index']),
__('stock_adjustment.list'),
['icon' => '', 'active' => request()->segment(1) == 'stock-adjustments' && request()->segment(2) == null]
);
}
if (auth()->user()->can('stock_adjustment.create')) {
$sub->url(
action([\App\Http\Controllers\StockAdjustmentController::class, 'create']),
__('stock_adjustment.add'),
['icon' => '', 'active' => request()->segment(1) == 'stock-adjustments' && request()->segment(2) == 'create']
);
}
},
['icon' => '']
)->order(40);
}
//Expense dropdown
if (in_array('expenses', $enabled_modules) && (auth()->user()->can('all_expense.access') || auth()->user()->can('view_own_expense'))) {
$menu->dropdown(
__('expense.expenses'),
function ($sub) {
$sub->url(
action([\App\Http\Controllers\ExpenseController::class, 'index']),
__('lang_v1.list_expenses'),
['icon' => '', 'active' => request()->segment(1) == 'expenses' || request()->segment(1) == 'import-expense' && request()->segment(2) == null]
);
if (auth()->user()->can('expense.add')) {
$sub->url(
action([\App\Http\Controllers\ExpenseController::class, 'create']),
__('expense.add_expense'),
['icon' => '', 'active' => request()->segment(1) == 'expenses' && request()->segment(2) == 'create']
);
}
if (auth()->user()->can('expense.add') || auth()->user()->can('expense.edit')) {
$sub->url(
action([\App\Http\Controllers\ExpenseCategoryController::class, 'index']),
__('expense.expense_categories'),
['icon' => '', 'active' => request()->segment(1) == 'expense-categories']
);
}
},
['icon' => ' ']
)->order(45);
}
//Accounts dropdown
if (auth()->user()->can('account.access') && in_array('account', $enabled_modules)) {
$menu->dropdown(
__('lang_v1.payment_accounts'),
function ($sub) {
$sub->url(
action([\App\Http\Controllers\AccountController::class, 'index']),
__('account.list_accounts'),
['icon' => '', 'active' => request()->segment(1) == 'account' && request()->segment(2) == 'account']
);
$sub->url(
action([\App\Http\Controllers\AccountReportsController::class, 'balanceSheet']),
__('account.balance_sheet'),
['icon' => '', 'active' => request()->segment(1) == 'account' && request()->segment(2) == 'balance-sheet']
);
$sub->url(
action([\App\Http\Controllers\AccountReportsController::class, 'trialBalance']),
__('account.trial_balance'),
['icon' => '', 'active' => request()->segment(1) == 'account' && request()->segment(2) == 'trial-balance']
);
$sub->url(
action([\App\Http\Controllers\AccountController::class, 'cashFlow']),
__('lang_v1.cash_flow'),
['icon' => '', 'active' => request()->segment(1) == 'account' && request()->segment(2) == 'cash-flow']
);
$sub->url(
action([\App\Http\Controllers\AccountReportsController::class, 'paymentAccountReport']),
__('account.payment_account_report'),
['icon' => '', 'active' => request()->segment(1) == 'account' && request()->segment(2) == 'payment-account-report']
);
},
['icon' => '']
)->order(50);
}
//Reports dropdown
if (auth()->user()->can('purchase_n_sell_report.view') || auth()->user()->can('contacts_report.view')
|| auth()->user()->can('stock_report.view') || auth()->user()->can('tax_report.view')
|| auth()->user()->can('trending_product_report.view') || auth()->user()->can('sales_representative.view') || auth()->user()->can('register_report.view')
|| auth()->user()->can('expense_report.view') || auth()->user()->can('accounting.view_reports')) {
$menu->dropdown(
__('report.reports'),
function ($sub) use ($enabled_modules, $is_admin) {
if (auth()->user()->can('profit_loss_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getProfitLoss']),
__('report.profit_loss'),
['icon' => '', 'active' => request()->segment(2) == 'profit-loss']
);
}
if (config('constants.show_report_606') == true) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'purchaseReport']),
'Report 606 (' . __('lang_v1.purchase') . ')',
['icon' => '', 'active' => request()->segment(2) == 'purchase-report']
);
}
if (config('constants.show_report_607') == true) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'saleReport']),
'Report 607 (' . __('business.sale') . ')',
['icon' => '', 'active' => request()->segment(2) == 'sale-report']
);
}
if ((in_array('purchases', $enabled_modules) || in_array('add_sale', $enabled_modules) || in_array('pos_sale', $enabled_modules)) && auth()->user()->can('purchase_n_sell_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getPurchaseSell']),
__('report.purchase_sell_report'),
['icon' => '', 'active' => request()->segment(2) == 'purchase-sell']
);
}
if (auth()->user()->can('tax_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getTaxReport']),
__('report.tax_report'),
['icon' => '', 'active' => request()->segment(2) == 'tax-report']
);
}
if (auth()->user()->can('contacts_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getCustomerSuppliers']),
__('report.contacts'),
['icon' => '', 'active' => request()->segment(2) == 'customer-supplier']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getCustomerGroup']),
__('lang_v1.customer_groups_report'),
['icon' => '', 'active' => request()->segment(2) == 'customer-group']
);
}
if (auth()->user()->can('stock_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getStockReport']),
__('report.stock_report'),
['icon' => '', 'active' => request()->segment(2) == 'stock-report']
);
if (session('business.enable_product_expiry') == 1) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getStockExpiryReport']),
__('report.stock_expiry_report'),
['icon' => '', 'active' => request()->segment(2) == 'stock-expiry']
);
}
if (session('business.enable_lot_number') == 1) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getLotReport']),
__('lang_v1.lot_report'),
['icon' => '', 'active' => request()->segment(2) == 'lot-report']
);
}
if (in_array('stock_adjustment', $enabled_modules)) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getStockAdjustmentReport']),
__('report.stock_adjustment_report'),
['icon' => '', 'active' => request()->segment(2) == 'stock-adjustment-report']
);
}
}
if (auth()->user()->can('trending_product_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getTrendingProducts']),
__('report.trending_products'),
['icon' => '', 'active' => request()->segment(2) == 'trending-products']
);
}
if (auth()->user()->can('purchase_n_sell_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'itemsReport']),
__('lang_v1.items_report'),
['icon' => '', 'active' => request()->segment(2) == 'items-report']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getproductPurchaseReport']),
__('lang_v1.product_purchase_report'),
['icon' => '', 'active' => request()->segment(2) == 'product-purchase-report']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getproductSellReport']),
__('lang_v1.product_sell_report'),
['icon' => '', 'active' => request()->segment(2) == 'product-sell-report']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'purchasePaymentReport']),
__('lang_v1.purchase_payment_report'),
['icon' => '', 'active' => request()->segment(2) == 'purchase-payment-report']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'sellPaymentReport']),
__('lang_v1.sell_payment_report'),
['icon' => '', 'active' => request()->segment(2) == 'sell-payment-report']
);
}
if (in_array('expenses', $enabled_modules) && auth()->user()->can('expense_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getExpenseReport']),
__('report.expense_report'),
['icon' => '', 'active' => request()->segment(2) == 'expense-report']
);
}
if (auth()->user()->can('register_report.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getRegisterReport']),
__('report.register_report'),
['icon' => '', 'active' => request()->segment(2) == 'register-report']
);
}
if (auth()->user()->can('sales_representative.view')) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getSalesRepresentativeReport']),
__('report.sales_representative'),
['icon' => '', 'active' => request()->segment(2) == 'sales-representative-report']
);
}
if (auth()->user()->can('purchase_n_sell_report.view') && in_array('tables', $enabled_modules)) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getTableReport']),
__('restaurant.table_report'),
['icon' => '', 'active' => request()->segment(2) == 'table-report']
);
}
if (auth()->user()->can('tax_report.view') && !empty(config('constants.enable_gst_report_india'))) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'gstSalesReport']),
__('lang_v1.gst_sales_report'),
['icon' => '', 'active' => request()->segment(2) == 'gst-sales-report']
);
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'gstPurchaseReport']),
__('lang_v1.gst_purchase_report'),
['icon' => '', 'active' => request()->segment(2) == 'gst-purchase-report']
);
}
if (auth()->user()->can('sales_representative.view') && in_array('service_staff', $enabled_modules)) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'getServiceStaffReport']),
__('restaurant.service_staff_report'),
['icon' => '', 'active' => request()->segment(2) == 'service-staff-report']
);
}
if ($is_admin) {
$sub->url(
action([\App\Http\Controllers\ReportController::class, 'activityLog']),
__('lang_v1.activity_log'),
['icon' => '', 'active' => request()->segment(2) == 'activity-log']
);
}
if (! config('menu_consolidation.unified_accounting_reports', true)
&& auth()->user()->can('accounting.view_reports')) {
$sub->url(
action([\Modules\Accounting\Http\Controllers\ReportController::class, 'index']),
__('accounting::lang.reports_hub'),
['icon' => '', 'active' => request()->segment(1) == 'accounting' && request()->segment(2) == 'reports' && empty(request()->segment(3))]
);
$sub->url(
route('accounting.chequeReport'),
__('accounting::lang.cheque_report'),
['icon' => '', 'active' => request()->segment(1) == 'accounting' && request()->segment(3) == 'cheques']
);
$sub->url(
route('accounting.trialBalance'),
__('accounting::lang.trial_balance'),
['icon' => '', 'active' => request()->segment(3) == 'trial-balance']
);
$sub->url(
route('accounting.profitAndLoss'),
__('accounting::lang.profit_and_loss'),
['icon' => '', 'active' => request()->segment(3) == 'profit-and-loss']
);
$sub->url(
route('accounting.account_receivable_ageing_report'),
__('accounting::lang.account_recievable_ageing_report'),
['icon' => '', 'active' => request()->segment(3) == 'account-receivable-ageing-report']
);
$sub->url(
route('accounting.account_payable_ageing_report'),
__('accounting::lang.account_payable_ageing_report'),
['icon' => '', 'active' => request()->segment(3) == 'account-payable-ageing-report']
);
$sub->url(
route('accounting.deferredDocuments'),
__('accounting::lang.deferred_documents'),
['icon' => '', 'active' => request()->segment(2) == 'deferred-documents']
);
}
},
['icon' => '', 'id' => 'tour_step8']
)->order(55);
}
//Backup menu
if (auth()->user()->can('backup')) {
$menu->url(action([\App\Http\Controllers\BackUpController::class, 'index']), __('lang_v1.backup'), ['icon' => '', 'active' => request()->segment(1) == 'backup'])->order(60);
}
//Modules menu
if (auth()->user()->can('manage_modules')) {
$menu->url(action([\App\Http\Controllers\Install\ModulesController::class, 'index']), __('lang_v1.modules'), ['icon' => '', 'active' => request()->segment(1) == 'manage-modules'])->order(60);
}
//Booking menu
if (in_array('booking', $enabled_modules) && (auth()->user()->can('crud_all_bookings') || auth()->user()->can('crud_own_bookings'))) {
$menu->url(action([\App\Http\Controllers\Restaurant\BookingController::class, 'index']), __('restaurant.bookings'), ['icon' => '', 'active' => request()->segment(1) == 'bookings'])->order(65);
}
//Kitchen menu
if (in_array('kitchen', $enabled_modules)) {
$menu->url(action([\App\Http\Controllers\Restaurant\KitchenController::class, 'index']), __('restaurant.kitchen'), ['icon' => '', 'active' => request()->segment(1) == 'modules' && request()->segment(2) == 'kitchen'])->order(70);
}
//Service Staff menu
if (in_array('service_staff', $enabled_modules)) {
$menu->url(action([\App\Http\Controllers\Restaurant\OrderController::class, 'index']), __('restaurant.orders'), ['icon' => '', 'active' => request()->segment(1) == 'modules' && request()->segment(2) == 'orders'])->order(75);
}
//Notification template menu
if (auth()->user()->can('send_notifications')) {
$menu->url(action([\App\Http\Controllers\NotificationTemplateController::class, 'index']), __('lang_v1.notification_templates'), ['icon' => '', 'active' => request()->segment(1) == 'notification-templates'])->order(80);
}
//Settings Dropdown
if (auth()->user()->can('business_settings.access') ||
auth()->user()->can('barcode_settings.access') ||
auth()->user()->can('invoice_settings.access') ||
auth()->user()->can('tax_rate.view') ||
auth()->user()->can('tax_rate.create') ||
auth()->user()->can('access_package_subscriptions')) {
$menu->dropdown(
__('business.settings'),
function ($sub) use ($enabled_modules) {
if (auth()->user()->can('business_settings.access')) {
$sub->url(
action([\App\Http\Controllers\BusinessController::class, 'getBusinessSettings']),
__('business.business_settings'),
['icon' => '', 'active' => request()->segment(1) == 'business', 'id' => 'tour_step2']
);
$sub->url(
action([\App\Http\Controllers\BusinessLocationController::class, 'index']),
__('business.business_locations'),
['icon' => '', 'active' => request()->segment(1) == 'business-location']
);
}
if (auth()->user()->can('invoice_settings.access')) {
$sub->url(
action([\App\Http\Controllers\InvoiceSchemeController::class, 'index']),
__('invoice.invoice_settings'),
['icon' => '', 'active' => in_array(request()->segment(1), ['invoice-schemes', 'invoice-layouts'])]
);
}
if (auth()->user()->can('barcode_settings.access')) {
$sub->url(
action([\App\Http\Controllers\BarcodeController::class, 'index']),
__('barcode.barcode_settings'),
['icon' => '', 'active' => request()->segment(1) == 'barcodes']
);
}
if (auth()->user()->can('access_printers')) {
$sub->url(
action([\App\Http\Controllers\PrinterController::class, 'index']),
__('printer.receipt_printers'),
['icon' => '', 'active' => request()->segment(1) == 'printers']
);
}
if (auth()->user()->can('tax_rate.view') || auth()->user()->can('tax_rate.create')) {
$sub->url(
action([\App\Http\Controllers\TaxRateController::class, 'index']),
__('tax_rate.tax_rates'),
['icon' => '', 'active' => request()->segment(1) == 'tax-rates']
);
}
if (in_array('tables', $enabled_modules) && auth()->user()->can('access_tables')) {
$sub->url(
action([\App\Http\Controllers\Restaurant\TableController::class, 'index']),
__('restaurant.tables'),
['icon' => '', 'active' => request()->segment(1) == 'modules' && request()->segment(2) == 'tables']
);
}
if (in_array('modifiers', $enabled_modules) && (auth()->user()->can('product.view') || auth()->user()->can('product.create'))) {
$sub->url(
action([\App\Http\Controllers\Restaurant\ModifierSetsController::class, 'index']),
__('restaurant.modifiers'),
['icon' => '', 'active' => request()->segment(1) == 'modules' && request()->segment(2) == 'modifiers']
);
}
if (in_array('types_of_service', $enabled_modules) && auth()->user()->can('access_types_of_service')) {
$sub->url(
action([\App\Http\Controllers\TypesOfServiceController::class, 'index']),
__('lang_v1.types_of_service'),
['icon' => '', 'active' => request()->segment(1) == 'types-of-service']
);
}
},
['icon' => '', 'id' => 'tour_step3']
)->order(85);
}
});
//Add menus from modules
$moduleUtil = new ModuleUtil;
$moduleUtil->getModuleData('modifyAdminMenu');
app(\App\Services\AdminMenuGroupingService::class)->apply('admin-sidebar-menu');
return $next($request);
}
}