1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
<?php
use App\Http\Controllers\Adjustment\AdjustmentController;
use App\Http\Controllers\Dashboard\DashboardController;
use App\Http\Controllers\expense\ExpenseCategoryController;
use App\Http\Controllers\expense\ExpenseController;
use App\Http\Controllers\hrm\OfficeShiftController;
use App\Http\Controllers\hrm\ClockController;
use App\Http\Controllers\hrm\MyAttendanceController;
use App\Http\Controllers\people\ClientController;
use App\Http\Controllers\people\ProviderController;
use App\Http\Controllers\Product\BrandController;
use App\Http\Controllers\Product\CategoryController;
use App\Http\Controllers\Product\ProductController;
use App\Http\Controllers\Product\UnitController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\purchase\PurchaseController;
use App\Http\Controllers\pos\PosController;
use App\Http\Controllers\Reports\ReportsController;
use App\Http\Controllers\Sale\SaleController;
use App\Http\Controllers\Sale\SaleReturnController;
use App\Http\Controllers\Sale\ShipmentController;
use App\Http\Controllers\Settings\CurrencyController;
use App\Http\Controllers\Settings\MembershipController;
use App\Http\Controllers\Settings\WarehousesController;
use App\Http\Controllers\Transfer\TransferController;
use App\Http\Controllers\UserController;
use App\Http\Controllers\LanguageController;
use App\Http\Controllers\Settings\CompanyController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/
// Route::get('/dashboard', function () {
// return view('dashboard');
// })->middleware(['auth', 'verified'])->name('dashboard');
// Route::middleware('auth')->group(function () {
// Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
// Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
// Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
// });
// Route::get('/', function () {
// return view('templates.auth.login');
// // return view('auth.login');
// });
Route::get('/', [DashboardController::class, 'index'])->middleware(['auth', 'verified'])->name('dashboard');
/*
|--------------------------------------------------------------------------
| Universal SmartClock has clock-in and clock-out functions
|--------------------------------------------------------------------------
*/
Route::get('webclock', [ClockController::class, 'index']);
Route::post('webclock/clocking', [ClockController::class, 'clocking'])->name('webclock.clocking');
Route::post('/update-alert-stock', [ProductController::class, 'updateAlertStock'])->name('updateAlertStock');
/*
|--------------------------------------------------------------------------
| Landing page from email
|--------------------------------------------------------------------------
*/
Route::get('purchases/receipt/edit/{Ref}', [PurchaseController::class, 'editSupplier'])->name('edit.supplier')->middleware('signed');
Route::patch('purchases/receipt/update/{id}', [PurchaseController::class, 'updateSupplier'])->name('update.supplier')->middleware('signed');
Route::prefix('/product')->middleware(['auth', 'verified'])->name('product.')->group(function () {
Route::get('/list', [ProductController::class, 'index'])->name('index');
Route::get('/detail/{id}', [ProductController::class, 'show'])->name('show');
Route::get('/create', [ProductController::class, 'create'])->name('create');
Route::post('/store', [ProductController::class, 'store'])->name('store');
Route::get('/edit/{id}', [ProductController::class, 'edit'])->name('edit');
Route::patch('/update/{id}', [ProductController::class, 'update'])->name('update');
Route::delete('/destroy/{id}', [ProductController::class, 'destroy'])->name('destroy');
Route::get('export', [ProductController::class, 'export'])->name('export');
Route::get('pdf', [ProductController::class, 'exportToPDF'])->name('pdf');
Route::post('import/csv', [ProductController::class, 'import_products'])->name('import');
// catgeory
Route::prefix('/category')->name('category.')->group(function () {
Route::get('/list', [CategoryController::class, 'index'])->name('index');
Route::post('/store', [CategoryController::class, 'store'])->name('store');
Route::delete('/destroy/{id}', [CategoryController::class, 'destroy'])->name('destroy');
Route::put('/update/{id}', [CategoryController::class, 'update'])->name('update');
});
// brand
Route::prefix('/brand')->name('brand.')->group(function () {
Route::get('/list', [BrandController::class, 'index'])->name('index');
Route::post('/store', [BrandController::class, 'store'])->name('store');
Route::delete('/destroy/{id}', [BrandController::class, 'destroy'])->name('destroy');
Route::put('/update/{id}', [BrandController::class, 'update'])->name('update');
});
// unit
Route::prefix('/unit')->name('unit.')->group(function () {
Route::get('/list', [UnitController::class, 'index'])->name('index');
Route::post('store', [UnitController::class, 'store'])->name('store');
Route::put('update/{id}', [UnitController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [UnitController::class, 'destroy'])->name('destroy');
});
});
Route::get('/product/get-units/{id}', [ProductController::class, 'getUnits'])->name('product.getUnits');
Route::prefix('adjustment')->middleware(['auth', 'verified'])->name('adjustment.')->group(function () {
Route::get('list', [AdjustmentController::class, 'index'])->name('index');
Route::get('detail/{id}', [AdjustmentController::class, 'show'])->name('show');
Route::get('create', [AdjustmentController::class, 'create'])->name('create');
Route::post('store', [AdjustmentController::class, 'store'])->name('store');
Route::get('edit/{id}', [AdjustmentController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [AdjustmentController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [AdjustmentController::class, 'destroy'])->name('destroy');
//
Route::get('get_Products_by_warehouse/{id}', [AdjustmentController::class, 'Products_by_Warehouse'])->name('get_Warehouses');
Route::get('get_Available_Products_by_warehouse/{id}', [AdjustmentController::class, 'Avilable_Products_by_Warehouse'])->name('get_Available_Warehouses');
Route::get('Sale_get_Available_Products_by_warehouse/{id}', [AdjustmentController::class, 'Sale_Avilable_Products_by_Warehouse'])->name('Sale_get_Available_Warehouses');
Route::get('show_product_data/{id}/{variant_id}/{warehouse_id}', [AdjustmentController::class, 'show_product_data']);
//
Route::get('export', [AdjustmentController::class, 'export'])->name('export');
Route::get('pdf', [AdjustmentController::class, 'exportToPDF'])->name('pdf');
});
Route::prefix('transfer')->middleware(['auth', 'verified'])->name('transfer.')->group(function () {
Route::get('list', [TransferController::class, 'index'])->name('index');
Route::get('detail/{id}', [TransferController::class, 'show'])->name('show');
Route::get('create', [TransferController::class, 'create'])->name('create');
Route::post('store', [TransferController::class, 'store'])->name('store');
Route::get('edit/{id}', [TransferController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [TransferController::class, 'update'])->name('update');
Route::patch('confirm/{id}', [TransferController::class, 'updateForStaff'])->name('confirm');
Route::delete('destroy/{id}', [TransferController::class, 'destroy'])->name('destroy');
Route::get('export', [TransferController::class, 'export'])->name('export');
Route::get('pdf', [TransferController::class, 'exportToPDF'])->name('pdf');
});
Route::get('/sale/payment/success/{transaction}', [SaleController::class, 'success'])->name('sale.payment.success');
Route::prefix('sale')->middleware(['auth', 'verified'])->name('sale.')->group(function () {
Route::get('print-invoice/{id}', [SaleController::class, 'printInvoice'])->name('print-invoice');
Route::get('list', [SaleController::class, 'index'])->name('index');
Route::get('shipments', [ShipmentController::class, 'index'])->name('shipments');
Route::get('detail/{id}', [SaleController::class, 'show'])->name('show');
Route::get('create', [SaleController::class, 'create'])->name('create');
Route::post('store', [SaleController::class, 'store'])->name('store');
Route::get('edit/{id}', [SaleController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [SaleController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [SaleController::class, 'destroy'])->name('destroy');
//
Route::get('get_Products_by_warehouse/{id}', [AdjustmentController::class, 'Products_by_Warehouse'])->name('get_Warehouses');
Route::get('show_product_data/{id}/{variant_id}/{warehouse_id}', [AdjustmentController::class, 'show_product_data']);
Route::get('get_payments_by_sale/{id}', [SaleController::class, 'Payments_Sale'])->name('get_payments_by_sale');
Route::get('export', [SaleController::class, 'export'])->name('export');
Route::get('pdf', [SaleController::class, 'exportToPDF'])->name('pdf');
//
Route::prefix('/shipment')->name('shipment.')->group(function () {
Route::post('store', [ShipmentController::class, 'store'])->name('store');
});
Route::prefix('/return')->name('return.')->group(function () {
Route::get('list', [SaleReturnController::class, 'index'])->name('index');
Route::get('create/{id}', [SaleReturnController::class, 'create_sell_return'])->name('create');
Route::post('store', [SaleReturnController::class, 'store'])->name('store');
Route::get('export', [SaleReturnController::class, 'export'])->name('export');
Route::get('detail/{id}', [SaleReturnController::class, 'show'])->name('show');
});
});
Route::prefix('reports')->middleware(['auth', 'verified'])->name('reports.')->group(function () {
Route::prefix('/payments')->name('payments.')->group(function () {
Route::get('sales', [ReportsController::class, 'payments'])->name('sales');
Route::get('sales/export', [ReportsController::class, 'exportPaymentSale'])->name('sales-export');
Route::get('sales-returns', [ReportsController::class, 'paymentSaleReturns'])->name('sales-returns');
Route::get('sales-returns/export', [ReportsController::class, 'exportPaymentReturnSale'])->name('sales-returns-export');
Route::get('purchases', [ReportsController::class, 'paymentPurchases'])->name('purchases');
Route::get('purchases/export', [ReportsController::class, 'exportPaymentPurchases'])->name('purchases-export');
Route::get('purchases-returns', [ReportsController::class, 'paymentPurchaseReturns'])->name('purchases-returns');
Route::get('purchases-returns/export', [ReportsController::class, 'exportPaymentPurchasesReturn'])->name('purchases-returns-export');
});
Route::get('profit-loss', [ReportsController::class, 'profitLoss'])->name('profit-loss');
Route::get('quantity-alerts', [ReportsController::class, 'quantityAlerts'])->name('quantity-alerts');
Route::prefix('/stock')->name('stock.')->group(function () {
Route::get('list', [ReportsController::class, 'stock'])->name('index');
Route::get('sales/{id}', [ReportsController::class, 'stockDetailSales'])->name('sales');
Route::get('sales-returns/{id}', [ReportsController::class, 'stockDetailSalesReturn'])->name('sales-returns');
Route::get('adjustment/{id}', [ReportsController::class, 'stockDetailAdjustment'])->name('adjustment');
Route::get('transfer/{id}', [ReportsController::class, 'stockDetailTransfer'])->name('transfer');
Route::get('purchases/{id}', [ReportsController::class, 'stockDetailPurchases'])->name('purchases');
Route::get('purchases-returns/{id}', [ReportsController::class, 'stockDetailPurchasesReturn'])->name('purchases-returns');
});
Route::get('stock/{id}', [ReportsController::class, 'stockDetail'])->name('stock-detail');
Route::prefix('/customers')->name('customers.')->group(function () {
Route::get('list', [ReportsController::class, 'customers'])->name('index');
Route::get('sales/{id}', [ReportsController::class, 'customersDetailSales'])->name('sales');
Route::get('sales/export/{id}', [ReportsController::class, 'customersDetailSalesExport'])->name('sales-export');
Route::get('returns/{id}', [ReportsController::class, 'customersDetailReturns'])->name('returns');
Route::get('returns/export/{id}', [ReportsController::class, 'customersDetailSalesReturnsExport'])->name('returns-export');
Route::get('payments/{id}', [ReportsController::class, 'customersDetailPayments'])->name('payments');
Route::get('payments/export/{id}', [ReportsController::class, 'customersDetailSalesPaymentExport'])->name('payments-export');
});
Route::prefix('/supplier')->name('supplier.')->group(function () {
Route::get('list', [ReportsController::class, 'supplier'])->name('index');
Route::get('purchases/{id}', [ReportsController::class, 'Purchases_Provider'])->name('purchases');
Route::get('purchases/export/{id}', [ReportsController::class, 'providerDetailPurchasesExport'])->name('purchases-export');
Route::get('returns/{id}', [ReportsController::class, 'Returns_Provider'])->name('returns');
Route::get('returns/export/{id}', [ReportsController::class, 'providerDetailPurchasesReturnsExport'])->name('returns-export');
Route::get('payments/{id}', [ReportsController::class, 'Payments_Provider'])->name('payments');
Route::get('payments/export/{id}', [ReportsController::class, 'providerDetailPaymentExport'])->name('payments-export');
});
Route::get('top-selling-product', [ReportsController::class, 'topSellingProduct'])->name('top-selling-product');
Route::get('top-selling-product/export', [ReportsController::class, 'topSellingProductExport'])->name('top-selling-product-export');
Route::prefix('/warehouse')->name('warehouse.')->group(function () {
Route::get('sales', [ReportsController::class, 'warehouseSales'])->name('sales');
Route::get('expenses', [ReportsController::class, 'warehouseExpenses'])->name('expenses');
Route::get('sales-returns', [ReportsController::class, 'warehouseSalesReturns'])->name('sales-returns');
Route::get('purchase', [ReportsController::class, 'warehousePurchase'])->name('purchase');
Route::get('purchase-returns', [ReportsController::class, 'warehousePurchaseReturns'])->name('purchase-returns');
});
Route::get('sale', [ReportsController::class, 'sale'])->name('sale');
Route::get('purchase', [ReportsController::class, 'purchase'])->name('purchase');
});
Route::prefix('settings')->middleware(['auth', 'verified'])->name('settings.')->group(function () {
Route::patch('company/update/{id}', [CompanyController::class, 'update'])->name('company.update');
Route::get('company/edit', [CompanyController::class, 'edit'])->name('company.edit');
Route::prefix('warehouses')->name('warehouses.')->group(function () {
Route::get('list', [WarehousesController::class, 'index'])->name('index');
Route::get('detail/{id}', [WarehousesController::class, 'show'])->name('show');
Route::get('create', [WarehousesController::class, 'create'])->name('create');
Route::post('store', [WarehousesController::class, 'store'])->name('store');
Route::get('edit/{id}', [WarehousesController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [WarehousesController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [WarehousesController::class, 'destroy'])->name('destroy');
});
Route::prefix('currency')->name('currency.')->group(function () {
Route::get('list', [CurrencyController::class, 'index'])->name('index');
Route::get('detail/{id}', [CurrencyController::class, 'show'])->name('show');
Route::get('create', [CurrencyController::class, 'create'])->name('create');
Route::post('store', [CurrencyController::class, 'store'])->name('store');
Route::get('edit/{id}', [CurrencyController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [CurrencyController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [CurrencyController::class, 'destroy'])->name('destroy');
});
Route::prefix('membership')->name('membership.')->group(function () {
Route::get('list', [MembershipController::class, 'index'])->name('index');
Route::patch('update/{id}', [MembershipController::class, 'update'])->name('update');
});
});
Route::prefix('people')->middleware(['auth', 'verified'])->name('people.')->group(function () {
Route::prefix('users')->name('users.')->group(function () {
Route::get('list', [UserController::class, 'index'])->name('index');
Route::get('create', [UserController::class, 'create'])->name('create');
Route::post('store', [UserController::class, 'store'])->name('store');
Route::get('detail/{id}', [UserController::class, 'show'])->name('show');
Route::patch('update/{id}', [UserController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [UserController::class, 'destroy'])->name('destroy');
});
Route::prefix('suppliers')->name('suppliers.')->group(function () {
Route::get('list', [ProviderController::class, 'index'])->name('index');
Route::get('create', [ProviderController::class, 'create'])->name('create');
Route::post('store', [ProviderController::class, 'store'])->name('store');
Route::get('detail/{id}', [ProviderController::class, 'show'])->name('show');
Route::patch('update/{id}', [ProviderController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [ProviderController::class, 'destroy'])->name('destroy');
});
Route::prefix('clients')->name('clients.')->group(function () {
Route::get('list', [ClientController::class, 'index'])->name('index');
Route::post('store', [ClientController::class, 'store'])->name('store');
Route::patch('update/{id}', [ClientController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [ClientController::class, 'destroy'])->name('destroy');
});
});
Route::prefix('expenses')->middleware(['auth', 'verified'])->name('expenses.')->group(function () {
Route::prefix('categories')->name('categories.')->group(function () {
Route::get('list', [ExpenseCategoryController::class, 'index'])->name('index');
Route::post('store', [ExpenseCategoryController::class, 'store'])->name('store');
Route::patch('update/{id}', [ExpenseCategoryController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [ExpenseCategoryController::class, 'destroy'])->name('destroy');
});
Route::get('list', [ExpenseController::class, 'index'])->name('index');
Route::get('detail/{id}', [ExpenseController::class, 'show'])->name('show');
Route::get('create', [ExpenseController::class, 'create'])->name('create');
Route::post('store', [ExpenseController::class, 'store'])->name('store');
Route::get('edit/{id}', [ExpenseController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [ExpenseController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [ExpenseController::class, 'destroy'])->name('destroy');
Route::get('file/download/{id}', [ExpenseController::class, 'download'])->name('file');
});
Route::prefix('hrm')->middleware(['auth', 'verified'])->name('hrm.')->group(function () {
Route::prefix('shifts')->name('shifts.')->group(function () {
Route::get('list', [OfficeShiftController::class, 'index'])->name('index');
Route::get('create', [OfficeShiftController::class, 'create'])->name('create');
Route::post('store', [OfficeShiftController::class, 'store'])->name('store');
Route::get('detail/{id}', [OfficeShiftController::class, 'show'])->name('show');
Route::patch('update/{id}', [OfficeShiftController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [OfficeShiftController::class, 'destroy'])->name('destroy');
});
Route::prefix('myattendances')->name('myattendances.')->group(function () {
Route::get('list', [MyAttendanceController::class, 'index'])->name('index');
Route::post('list', [MyAttendanceController::class, 'checkAttendance'])->name('check');
});
});
Route::prefix('purchases')->middleware(['auth', 'verified'])->name('purchases.')->group(function () {
Route::get('list', [PurchaseController::class, 'index'])->name('index');
Route::get('create', [PurchaseController::class, 'create'])->name('create');
Route::post('store', [PurchaseController::class, 'store'])->name('store');
Route::get('detail/{id}', [PurchaseController::class, 'show'])->name('show');
Route::get('edit/{id}', [PurchaseController::class, 'edit'])->name('edit');
Route::patch('update/{id}', [PurchaseController::class, 'update'])->name('update');
Route::delete('destroy/{id}', [PurchaseController::class, 'destroy'])->name('destroy');
Route::post('scanner/{code}', [PurchaseController::class, 'getFromScanner']);
Route::post('supplier/{id}', [PurchaseController::class, 'getSupplier']);
});
Route::get('cashier', [PosController::class, 'create'])->middleware(['auth', 'verified']);
Route::prefix('cashier')->middleware(['auth', 'verified'])->name('cashier.')->group(function () {
});
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
Route::middleware('auth')->group(function () {
Route::get('lang/{locale}', [LanguageController::class, 'lang']);
});
require __DIR__ . '/auth.php';