diff --git a/Modules/Branch/Database/Migrations/2024_03_21_create_branches_table.php b/Modules/Branch/Database/Migrations/2024_03_21_create_branches_table.php
new file mode 100644
index 00000000..05f635d4
--- /dev/null
+++ b/Modules/Branch/Database/Migrations/2024_03_21_create_branches_table.php
@@ -0,0 +1,36 @@
+id();
+ $table->string('name');
+ $table->text('address');
+ $table->string('phone', 20);
+ $table->string('email');
+ $table->boolean('status')->default(true);
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('branches');
+ }
+}
\ No newline at end of file
diff --git a/Modules/Branch/Database/Migrations/2025_05_20_074559_create_branch_managers_table.php b/Modules/Branch/Database/Migrations/2025_05_20_074559_create_branch_managers_table.php
new file mode 100644
index 00000000..8c9f18dc
--- /dev/null
+++ b/Modules/Branch/Database/Migrations/2025_05_20_074559_create_branch_managers_table.php
@@ -0,0 +1,94 @@
+id();
+ $table->string('name');
+ $table->string('city')->nullable();
+ $table->string('address')->nullable();
+ $table->string('phone')->nullable();
+ $table->string('email')->nullable();
+ $table->boolean('is_active')->default(true);
+ $table->timestamps();
+ });
+
+ // Insert default branch
+ DB::table('branches')->insert([
+ 'name' => 'Toko Al Fatih Pusar',
+ 'city' => 'Lumajang',
+ 'address' => 'Toko Pusat',
+ 'phone' => '1234567890',
+ 'email' => 'alfatih@test.com',
+ 'is_active' => true,
+ 'created_at' => now(),
+ 'updated_at' => now()
+ ]);
+ }
+
+ // Add branch_id to related tables
+ $tables = [
+ 'sales',
+ 'purchases',
+ 'purchase_returns',
+ 'expenses',
+ 'sale_payments',
+ 'purchase_payments',
+ 'purchase_return_payments'
+ ];
+
+ foreach ($tables as $tableName) {
+ if (Schema::hasTable($tableName)) {
+ Schema::table($tableName, function (Blueprint $table) use ($tableName) {
+ if (!Schema::hasColumn($tableName, 'branch_id')) {
+ $table->unsignedBigInteger('branch_id')->default(1)->after('id');
+ $table->foreign('branch_id')->references('id')->on('branches');
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ // Drop branch_id from related tables
+ $tables = [
+ 'sales',
+ 'purchases',
+ 'purchase_returns',
+ 'expenses',
+ 'sale_payments',
+ 'purchase_payments',
+ 'purchase_return_payments'
+ ];
+
+ foreach ($tables as $tableName) {
+ if (Schema::hasTable($tableName)) {
+ Schema::table($tableName, function (Blueprint $table) use ($tableName) {
+ if (Schema::hasColumn($tableName, 'branch_id')) {
+ $table->dropForeign(['branch_id']);
+ $table->dropColumn('branch_id');
+ }
+ });
+ }
+ }
+
+ // Drop branches table
+ Schema::dropIfExists('branches');
+ }
+};
diff --git a/Modules/Branch/Entities/Branch.php b/Modules/Branch/Entities/Branch.php
new file mode 100644
index 00000000..258a6af6
--- /dev/null
+++ b/Modules/Branch/Entities/Branch.php
@@ -0,0 +1,23 @@
+ 'boolean'
+ ];
+}
\ No newline at end of file
diff --git a/Modules/Branch/Http/Controllers/BranchController.php b/Modules/Branch/Http/Controllers/BranchController.php
new file mode 100644
index 00000000..f8d9b122
--- /dev/null
+++ b/Modules/Branch/Http/Controllers/BranchController.php
@@ -0,0 +1,92 @@
+paginate(10);
+ return view('branch::index', compact('branches'));
+ }
+
+ /**
+ * Show the form for creating a new resource.
+ */
+ public function create()
+ {
+ return view('branch::create');
+ }
+
+ /**
+ * Store a newly created resource in storage.
+ */
+ public function store(Request $request)
+ {
+ $request->validate([
+ 'name' => 'required|string|max:255',
+ 'address' => 'required|string',
+ 'phone' => 'required|string|max:20',
+ 'email' => 'required|email|max:255',
+ 'status' => 'required|boolean'
+ ]);
+
+ Branch::create($request->all());
+
+ return redirect()->route('branch.index')
+ ->with('success', 'Branch created successfully.');
+ }
+
+ /**
+ * Display the specified resource.
+ */
+ public function show(Branch $branch)
+ {
+ return view('branch::show', compact('branch'));
+ }
+
+ /**
+ * Show the form for editing the specified resource.
+ */
+ public function edit(Branch $branch)
+ {
+ return view('branch::edit', compact('branch'));
+ }
+
+ /**
+ * Update the specified resource in storage.
+ */
+ public function update(Request $request, Branch $branch)
+ {
+ $request->validate([
+ 'name' => 'required|string|max:255',
+ 'address' => 'required|string',
+ 'phone' => 'required|string|max:20',
+ 'email' => 'required|email|max:255',
+ 'status' => 'required|boolean'
+ ]);
+
+ $branch->update($request->all());
+
+ return redirect()->route('branch.index')
+ ->with('success', 'Branch updated successfully.');
+ }
+
+ /**
+ * Remove the specified resource from storage.
+ */
+ public function destroy(Branch $branch)
+ {
+ $branch->delete();
+
+ return redirect()->route('branch.index')
+ ->with('success', 'Branch deleted successfully.');
+ }
+}
\ No newline at end of file
diff --git a/Modules/Branch/Providers/BranchServiceProvider.php b/Modules/Branch/Providers/BranchServiceProvider.php
new file mode 100644
index 00000000..b7e45a08
--- /dev/null
+++ b/Modules/Branch/Providers/BranchServiceProvider.php
@@ -0,0 +1,30 @@
+app->register(RouteServiceProvider::class);
+ }
+
+ /**
+ * Bootstrap services.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->loadMigrationsFrom(module_path('Branch', 'Database/Migrations'));
+ $this->loadViewsFrom(module_path('Branch', 'Resources/views'), 'branch');
+ }
+}
\ No newline at end of file
diff --git a/Modules/Branch/Providers/RouteServiceProvider.php b/Modules/Branch/Providers/RouteServiceProvider.php
new file mode 100644
index 00000000..897ae6af
--- /dev/null
+++ b/Modules/Branch/Providers/RouteServiceProvider.php
@@ -0,0 +1,42 @@
+mapWebRoutes();
+ }
+
+ /**
+ * Define the "web" routes for the application.
+ *
+ * These routes all receive session state, CSRF protection, etc.
+ *
+ * @return void
+ */
+ protected function mapWebRoutes()
+ {
+ Route::middleware('web')
+ ->namespace($this->namespace)
+ ->group(module_path('Branch', 'Routes/web.php'));
+ }
+}
\ No newline at end of file
diff --git a/Modules/Branch/Resources/views/create.blade.php b/Modules/Branch/Resources/views/create.blade.php
new file mode 100644
index 00000000..3a37dc30
--- /dev/null
+++ b/Modules/Branch/Resources/views/create.blade.php
@@ -0,0 +1,69 @@
+@extends('core::layouts.master')
+
+@section('title')
+ Create Branch
+@endsection
+
+@section('content')
+
+@endsection
\ No newline at end of file
diff --git a/Modules/Branch/Resources/views/edit.blade.php b/Modules/Branch/Resources/views/edit.blade.php
new file mode 100644
index 00000000..17133eff
--- /dev/null
+++ b/Modules/Branch/Resources/views/edit.blade.php
@@ -0,0 +1,70 @@
+@extends('core::layouts.master')
+
+@section('title')
+ Edit Branch
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/Modules/Branch/Resources/views/index.blade.php b/Modules/Branch/Resources/views/index.blade.php
new file mode 100644
index 00000000..c6a91c13
--- /dev/null
+++ b/Modules/Branch/Resources/views/index.blade.php
@@ -0,0 +1,83 @@
+@extends('core::layouts.master')
+
+@section('title')
+ Branches
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+ Name |
+ Address |
+ Phone |
+ Email |
+ Status |
+ Actions |
+
+
+
+ @forelse($branches as $branch)
+
+ {{ $branch->name }} |
+ {{ $branch->address }} |
+ {{ $branch->phone }} |
+ {{ $branch->email }} |
+
+ @if($branch->status)
+ Active
+ @else
+ Inactive
+ @endif
+ |
+
+
+
+
+ @can('edit_branches')
+
+
+
+ @endcan
+ @can('delete_branches')
+
+ @endcan
+ |
+
+ @empty
+
+ No branches found. |
+
+ @endforelse
+
+
+
+
+ {{ $branches->links() }}
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/Modules/Branch/Resources/views/show.blade.php b/Modules/Branch/Resources/views/show.blade.php
new file mode 100644
index 00000000..531e602b
--- /dev/null
+++ b/Modules/Branch/Resources/views/show.blade.php
@@ -0,0 +1,67 @@
+@extends('core::layouts.master')
+
+@section('title')
+ Branch Details
+@endsection
+
+@section('content')
+
+
+
+
+
+
+
+
+
+ Branch Name |
+ {{ $branch->name }} |
+
+
+ Address |
+ {{ $branch->address }} |
+
+
+ Phone |
+ {{ $branch->phone }} |
+
+
+ Email |
+ {{ $branch->email }} |
+
+
+ Status |
+
+ @if($branch->status)
+ Active
+ @else
+ Inactive
+ @endif
+ |
+
+
+ Created At |
+ {{ $branch->created_at->format('d M Y H:i') }} |
+
+
+ Last Updated |
+ {{ $branch->updated_at->format('d M Y H:i') }} |
+
+
+
+
+
+
+
+
+@endsection
\ No newline at end of file
diff --git a/Modules/Branch/Routes/web.php b/Modules/Branch/Routes/web.php
new file mode 100644
index 00000000..cd6c6b24
--- /dev/null
+++ b/Modules/Branch/Routes/web.php
@@ -0,0 +1,8 @@
+group(function () {
+ Route::resource('branch', BranchController::class);
+});
\ No newline at end of file
diff --git a/Modules/Branch/module.json b/Modules/Branch/module.json
new file mode 100644
index 00000000..e84c3b16
--- /dev/null
+++ b/Modules/Branch/module.json
@@ -0,0 +1,11 @@
+{
+ "name": "Branch",
+ "alias": "branch",
+ "description": "Branch management module",
+ "keywords": [],
+ "priority": 0,
+ "providers": [
+ "Modules\\Branch\\Providers\\BranchServiceProvider"
+ ],
+ "files": []
+}
\ No newline at end of file
diff --git a/Modules/SalesReturn/Config/.gitkeep b/Modules/SalesReturn/Config/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Config/config.php b/Modules/SalesReturn/Config/config.php
deleted file mode 100644
index bb1b255d..00000000
--- a/Modules/SalesReturn/Config/config.php
+++ /dev/null
@@ -1,5 +0,0 @@
- 'SalesReturn'
-];
diff --git a/Modules/SalesReturn/Console/.gitkeep b/Modules/SalesReturn/Console/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php b/Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php
deleted file mode 100644
index 3a4871eb..00000000
--- a/Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php
+++ /dev/null
@@ -1,78 +0,0 @@
-eloquent($query)
- ->addColumn('amount', function ($data) {
- return format_currency($data->amount);
- })
- ->addColumn('action', function ($data) {
- return view('salesreturn::payments.partials.actions', compact('data'));
- });
- }
-
- public function query(SaleReturnPayment $model) {
- return $model->newQuery()->bySaleReturn()->with('saleReturn');
- }
-
- public function html() {
- return $this->builder()
- ->setTableId('sale-payments-table')
- ->columns($this->getColumns())
- ->minifiedAjax()
- ->dom("<'row'<'col-md-3'l><'col-md-5 mb-2'B><'col-md-4'f>> .
- 'tr' .
- <'row'<'col-md-5'i><'col-md-7 mt-2'p>>")
- ->orderBy(5)
- ->buttons(
- Button::make('excel')
- ->text(' Excel'),
- Button::make('print')
- ->text(' Print'),
- Button::make('reset')
- ->text(' Reset'),
- Button::make('reload')
- ->text(' Reload')
- );
- }
-
- protected function getColumns() {
- return [
- Column::make('date')
- ->className('align-middle text-center'),
-
- Column::make('reference')
- ->className('align-middle text-center'),
-
- Column::computed('amount')
- ->className('align-middle text-center'),
-
- Column::make('payment_method')
- ->className('align-middle text-center'),
-
- Column::computed('action')
- ->exportable(false)
- ->printable(false)
- ->className('align-middle text-center'),
-
- Column::make('created_at')
- ->visible(false),
- ];
- }
-
- protected function filename(): string {
- return 'SaleReturnPayments_' . date('YmdHis');
- }
-}
diff --git a/Modules/SalesReturn/DataTables/SaleReturnsDataTable.php b/Modules/SalesReturn/DataTables/SaleReturnsDataTable.php
deleted file mode 100644
index cd7bf4d8..00000000
--- a/Modules/SalesReturn/DataTables/SaleReturnsDataTable.php
+++ /dev/null
@@ -1,100 +0,0 @@
-eloquent($query)
- ->addColumn('total_amount', function ($data) {
- return format_currency($data->total_amount);
- })
- ->addColumn('paid_amount', function ($data) {
- return format_currency($data->paid_amount);
- })
- ->addColumn('due_amount', function ($data) {
- return format_currency($data->due_amount);
- })
- ->addColumn('status', function ($data) {
- return view('salesreturn::partials.status', compact('data'));
- })
- ->addColumn('payment_status', function ($data) {
- return view('salesreturn::partials.payment-status', compact('data'));
- })
- ->addColumn('action', function ($data) {
- return view('salesreturn::partials.actions', compact('data'));
- });
- }
-
- public function query(SaleReturn $model) {
- return $model->newQuery();
- }
-
- public function html() {
- return $this->builder()
- ->setTableId('sale-returns-table')
- ->columns($this->getColumns())
- ->minifiedAjax()
- ->dom("<'row'<'col-md-3'l><'col-md-5 mb-2'B><'col-md-4'f>> .
- 'tr' .
- <'row'<'col-md-5'i><'col-md-7 mt-2'p>>")
- ->orderBy(8)
- ->buttons(
- Button::make('excel')
- ->text(' Excel'),
- Button::make('print')
- ->text(' Print'),
- Button::make('reset')
- ->text(' Reset'),
- Button::make('reload')
- ->text(' Reload')
- );
- }
-
- protected function getColumns() {
- return [
- Column::make('reference')
- ->className('text-center align-middle'),
-
- Column::make('customer_name')
- ->title('Customer')
- ->className('text-center align-middle'),
-
- Column::computed('status')
- ->className('text-center align-middle'),
-
- Column::computed('total_amount')
- ->className('text-center align-middle'),
-
- Column::computed('paid_amount')
- ->className('text-center align-middle'),
-
- Column::computed('due_amount')
- ->className('text-center align-middle'),
-
- Column::computed('payment_status')
- ->className('text-center align-middle'),
-
- Column::computed('action')
- ->exportable(false)
- ->printable(false)
- ->className('text-center align-middle'),
-
- Column::make('created_at')
- ->visible(false)
- ];
- }
-
- protected function filename(): string {
- return 'SaleReturns_' . date('YmdHis');
- }
-}
diff --git a/Modules/SalesReturn/Database/Migrations/.gitkeep b/Modules/SalesReturn/Database/Migrations/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Database/Migrations/2021_08_08_175345_create_sale_returns_table.php b/Modules/SalesReturn/Database/Migrations/2021_08_08_175345_create_sale_returns_table.php
deleted file mode 100644
index a42661af..00000000
--- a/Modules/SalesReturn/Database/Migrations/2021_08_08_175345_create_sale_returns_table.php
+++ /dev/null
@@ -1,48 +0,0 @@
-id();
- $table->date('date');
- $table->string('reference');
- $table->unsignedBigInteger('customer_id')->nullable();
- $table->string('customer_name');
- $table->integer('tax_percentage')->default(0);
- $table->integer('tax_amount')->default(0);
- $table->integer('discount_percentage')->default(0);
- $table->integer('discount_amount')->default(0);
- $table->integer('shipping_amount')->default(0);
- $table->integer('total_amount');
- $table->integer('paid_amount');
- $table->integer('due_amount');
- $table->string('status');
- $table->string('payment_status');
- $table->string('payment_method');
- $table->text('note')->nullable();
- $table->foreign('customer_id')->references('id')->on('customers')->nullOnDelete();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('sale_returns');
- }
-}
diff --git a/Modules/SalesReturn/Database/Migrations/2021_08_08_175358_create_sale_return_details_table.php b/Modules/SalesReturn/Database/Migrations/2021_08_08_175358_create_sale_return_details_table.php
deleted file mode 100644
index b2ab2cfa..00000000
--- a/Modules/SalesReturn/Database/Migrations/2021_08_08_175358_create_sale_return_details_table.php
+++ /dev/null
@@ -1,46 +0,0 @@
-id();
- $table->unsignedBigInteger('sale_return_id');
- $table->unsignedBigInteger('product_id')->nullable();
- $table->string('product_name');
- $table->string('product_code');
- $table->integer('quantity');
- $table->integer('price');
- $table->integer('unit_price');
- $table->integer('sub_total');
- $table->integer('product_discount_amount');
- $table->string('product_discount_type')->default('fixed');
- $table->integer('product_tax_amount');
- $table->foreign('sale_return_id')->references('id')
- ->on('sale_returns')->cascadeOnDelete();
- $table->foreign('product_id')->references('id')
- ->on('products')->nullOnDelete();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('sale_return_details');
- }
-}
diff --git a/Modules/SalesReturn/Database/Migrations/2021_08_08_175406_create_sale_return_payments_table.php b/Modules/SalesReturn/Database/Migrations/2021_08_08_175406_create_sale_return_payments_table.php
deleted file mode 100644
index 0a020875..00000000
--- a/Modules/SalesReturn/Database/Migrations/2021_08_08_175406_create_sale_return_payments_table.php
+++ /dev/null
@@ -1,38 +0,0 @@
-id();
- $table->unsignedBigInteger('sale_return_id');
- $table->integer('amount');
- $table->date('date');
- $table->string('reference');
- $table->string('payment_method');
- $table->text('note')->nullable();
- $table->foreign('sale_return_id')->references('id')->on('sale_returns')->cascadeOnDelete();
- $table->timestamps();
- });
- }
-
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists('sale_return_payments');
- }
-}
diff --git a/Modules/SalesReturn/Database/Seeders/.gitkeep b/Modules/SalesReturn/Database/Seeders/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Database/Seeders/SalesReturnDatabaseSeeder.php b/Modules/SalesReturn/Database/Seeders/SalesReturnDatabaseSeeder.php
deleted file mode 100644
index bdf64a6e..00000000
--- a/Modules/SalesReturn/Database/Seeders/SalesReturnDatabaseSeeder.php
+++ /dev/null
@@ -1,21 +0,0 @@
-call("OthersTableSeeder");
- }
-}
diff --git a/Modules/SalesReturn/Database/factories/.gitkeep b/Modules/SalesReturn/Database/factories/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Entities/.gitkeep b/Modules/SalesReturn/Entities/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Entities/SaleReturn.php b/Modules/SalesReturn/Entities/SaleReturn.php
deleted file mode 100644
index 7a98dad5..00000000
--- a/Modules/SalesReturn/Entities/SaleReturn.php
+++ /dev/null
@@ -1,58 +0,0 @@
-hasMany(SaleReturnDetail::class, 'sale_return_id', 'id');
- }
-
- public function saleReturnPayments() {
- return $this->hasMany(SaleReturnPayment::class, 'sale_return_id', 'id');
- }
-
- public static function boot() {
- parent::boot();
-
- static::creating(function ($model) {
- $number = SaleReturn::max('id') + 1;
- $model->reference = make_reference_id('SLRN', $number);;
- });
- }
-
- public function scopeCompleted($query) {
- return $query->where('status', 'Completed');
- }
-
- public function getShippingAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getPaidAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getTotalAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getDueAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getTaxAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getDiscountAmountAttribute($value) {
- return $value / 100;
- }
-}
diff --git a/Modules/SalesReturn/Entities/SaleReturnDetail.php b/Modules/SalesReturn/Entities/SaleReturnDetail.php
deleted file mode 100644
index 9f7b5000..00000000
--- a/Modules/SalesReturn/Entities/SaleReturnDetail.php
+++ /dev/null
@@ -1,44 +0,0 @@
-belongsTo(Product::class, 'product_id', 'id');
- }
-
- public function saleReturn() {
- return $this->belongsTo(SaleReturnPayment::class, 'sale_return_id', 'id');
- }
-
- public function getPriceAttribute($value) {
- return $value / 100;
- }
-
- public function getUnitPriceAttribute($value) {
- return $value / 100;
- }
-
- public function getSubTotalAttribute($value) {
- return $value / 100;
- }
-
- public function getProductDiscountAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getProductTaxAmountAttribute($value) {
- return $value / 100;
- }
-}
diff --git a/Modules/SalesReturn/Entities/SaleReturnPayment.php b/Modules/SalesReturn/Entities/SaleReturnPayment.php
deleted file mode 100644
index eda96ee8..00000000
--- a/Modules/SalesReturn/Entities/SaleReturnPayment.php
+++ /dev/null
@@ -1,34 +0,0 @@
-belongsTo(SaleReturn::class, 'sale_return_id', 'id');
- }
-
- public function setAmountAttribute($value) {
- $this->attributes['amount'] = $value * 100;
- }
-
- public function getAmountAttribute($value) {
- return $value / 100;
- }
-
- public function getDateAttribute($value) {
- return Carbon::parse($value)->format('d M, Y');
- }
-
- public function scopeBySaleReturn($query) {
- return $query->where('sale_return_id', request()->route('sale_return_id'));
- }
-}
diff --git a/Modules/SalesReturn/Http/Controllers/.gitkeep b/Modules/SalesReturn/Http/Controllers/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php b/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php
deleted file mode 100644
index 95954cbe..00000000
--- a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php
+++ /dev/null
@@ -1,146 +0,0 @@
-render('salesreturn::payments.index', compact('sale_return'));
- }
-
-
- public function create($sale_return_id) {
- abort_if(Gate::denies('access_sale_return_payments'), 403);
-
- $sale_return = SaleReturn::findOrFail($sale_return_id);
-
- return view('salesreturn::payments.create', compact('sale_return'));
- }
-
-
- public function store(Request $request) {
- abort_if(Gate::denies('access_sale_return_payments'), 403);
-
- $request->validate([
- 'date' => 'required|date',
- 'reference' => 'required|string|max:255',
- 'amount' => 'required|numeric',
- 'note' => 'nullable|string|max:1000',
- 'sale_return_id' => 'required',
- 'payment_method' => 'required|string|max:255'
- ]);
-
- DB::transaction(function () use ($request) {
- SaleReturnPayment::create([
- 'date' => $request->date,
- 'reference' => $request->reference,
- 'amount' => $request->amount,
- 'note' => $request->note,
- 'sale_return_id' => $request->sale_return_id,
- 'payment_method' => $request->payment_method
- ]);
-
- $sale_return = SaleReturn::findOrFail($request->sale_return_id);
-
- $due_amount = $sale_return->due_amount - $request->amount;
-
- if ($due_amount == $sale_return->total_amount) {
- $payment_status = 'Unpaid';
- } elseif ($due_amount > 0) {
- $payment_status = 'Partial';
- } else {
- $payment_status = 'Paid';
- }
-
- $sale_return->update([
- 'paid_amount' => ($sale_return->paid_amount + $request->amount) * 100,
- 'due_amount' => $due_amount * 100,
- 'payment_status' => $payment_status
- ]);
- });
-
- toast('Sale Return Payment Created!', 'success');
-
- return redirect()->route('sale-returns.index');
- }
-
-
- public function edit($sale_return_id, SaleReturnPayment $saleReturnPayment) {
- abort_if(Gate::denies('access_sale_return_payments'), 403);
-
- $sale_return = SaleReturn::findOrFail($sale_return_id);
-
- return view('salesreturn::payments.edit', compact('saleReturnPayment', 'sale_return'));
- }
-
-
- public function update(Request $request, SaleReturnPayment $saleReturnPayment) {
- abort_if(Gate::denies('access_sale_return_payments'), 403);
-
- $request->validate([
- 'date' => 'required|date',
- 'reference' => 'required|string|max:255',
- 'amount' => 'required|numeric',
- 'note' => 'nullable|string|max:1000',
- 'sale_return_id' => 'required',
- 'payment_method' => 'required|string|max:255'
- ]);
-
- DB::transaction(function () use ($request, $saleReturnPayment) {
- $sale_return = $saleReturnPayment->saleReturn;
-
- $due_amount = ($sale_return->due_amount + $saleReturnPayment->amount) - $request->amount;
-
- if ($due_amount == $sale_return->total_amount) {
- $payment_status = 'Unpaid';
- } elseif ($due_amount > 0) {
- $payment_status = 'Partial';
- } else {
- $payment_status = 'Paid';
- }
-
- $sale_return->update([
- 'paid_amount' => (($sale_return->paid_amount - $saleReturnPayment->amount) + $request->amount) * 100,
- 'due_amount' => $due_amount * 100,
- 'payment_status' => $payment_status
- ]);
-
- $saleReturnPayment->update([
- 'date' => $request->date,
- 'reference' => $request->reference,
- 'amount' => $request->amount,
- 'note' => $request->note,
- 'sale_return_id' => $request->sale_return_id,
- 'payment_method' => $request->payment_method
- ]);
- });
-
- toast('Sale Return Payment Updated!', 'info');
-
- return redirect()->route('sale-returns.index');
- }
-
-
- public function destroy(SaleReturnPayment $saleReturnPayment) {
- abort_if(Gate::denies('access_sale_return_payments'), 403);
-
- $saleReturnPayment->delete();
-
- toast('Sale Return Payment Deleted!', 'warning');
-
- return redirect()->route('sale-returns.index');
- }
-}
diff --git a/Modules/SalesReturn/Http/Controllers/SalesReturnController.php b/Modules/SalesReturn/Http/Controllers/SalesReturnController.php
deleted file mode 100644
index cccea4ee..00000000
--- a/Modules/SalesReturn/Http/Controllers/SalesReturnController.php
+++ /dev/null
@@ -1,232 +0,0 @@
-render('salesreturn::index');
- }
-
-
- public function create() {
- abort_if(Gate::denies('create_sale_returns'), 403);
-
- Cart::instance('sale_return')->destroy();
-
- return view('salesreturn::create');
- }
-
-
- public function store(StoreSaleReturnRequest $request) {
- DB::transaction(function () use ($request) {
- $due_amount = $request->total_amount - $request->paid_amount;
-
- if ($due_amount == $request->total_amount) {
- $payment_status = 'Unpaid';
- } elseif ($due_amount > 0) {
- $payment_status = 'Partial';
- } else {
- $payment_status = 'Paid';
- }
-
- $sale_return = SaleReturn::create([
- 'date' => $request->date,
- 'customer_id' => $request->customer_id,
- 'customer_name' => Customer::findOrFail($request->customer_id)->customer_name,
- 'tax_percentage' => $request->tax_percentage,
- 'discount_percentage' => $request->discount_percentage,
- 'shipping_amount' => $request->shipping_amount * 100,
- 'paid_amount' => $request->paid_amount * 100,
- 'total_amount' => $request->total_amount * 100,
- 'due_amount' => $due_amount * 100,
- 'status' => $request->status,
- 'payment_status' => $payment_status,
- 'payment_method' => $request->payment_method,
- 'note' => $request->note,
- 'tax_amount' => Cart::instance('sale_return')->tax() * 100,
- 'discount_amount' => Cart::instance('sale_return')->discount() * 100,
- ]);
-
- foreach (Cart::instance('sale_return')->content() as $cart_item) {
- SaleReturnDetail::create([
- 'sale_return_id' => $sale_return->id,
- 'product_id' => $cart_item->id,
- 'product_name' => $cart_item->name,
- 'product_code' => $cart_item->options->code,
- 'quantity' => $cart_item->qty,
- 'price' => $cart_item->price * 100,
- 'unit_price' => $cart_item->options->unit_price * 100,
- 'sub_total' => $cart_item->options->sub_total * 100,
- 'product_discount_amount' => $cart_item->options->product_discount * 100,
- 'product_discount_type' => $cart_item->options->product_discount_type,
- 'product_tax_amount' => $cart_item->options->product_tax * 100,
- ]);
-
- if ($request->status == 'Completed') {
- $product = Product::findOrFail($cart_item->id);
- $product->update([
- 'product_quantity' => $product->product_quantity + $cart_item->qty
- ]);
- }
- }
-
- Cart::instance('sale_return')->destroy();
-
- if ($sale_return->paid_amount > 0) {
- SaleReturnPayment::create([
- 'date' => $request->date,
- 'reference' => 'INV/'.$sale_return->reference,
- 'amount' => $sale_return->paid_amount,
- 'sale_return_id' => $sale_return->id,
- 'payment_method' => $request->payment_method
- ]);
- }
- });
-
- toast('Sale Return Created!', 'success');
-
- return redirect()->route('sale-returns.index');
- }
-
-
- public function show(SaleReturn $sale_return) {
- abort_if(Gate::denies('show_sale_returns'), 403);
-
- $customer = Customer::findOrFail($sale_return->customer_id);
-
- return view('salesreturn::show', compact('sale_return', 'customer'));
- }
-
-
- public function edit(SaleReturn $sale_return) {
- abort_if(Gate::denies('edit_sale_returns'), 403);
-
- $sale_return_details = $sale_return->saleReturnDetails;
-
- Cart::instance('sale_return')->destroy();
-
- $cart = Cart::instance('sale_return');
-
- foreach ($sale_return_details as $sale_return_detail) {
- $cart->add([
- 'id' => $sale_return_detail->product_id,
- 'name' => $sale_return_detail->product_name,
- 'qty' => $sale_return_detail->quantity,
- 'price' => $sale_return_detail->price,
- 'weight' => 1,
- 'options' => [
- 'product_discount' => $sale_return_detail->product_discount_amount,
- 'product_discount_type' => $sale_return_detail->product_discount_type,
- 'sub_total' => $sale_return_detail->sub_total,
- 'code' => $sale_return_detail->product_code,
- 'stock' => Product::findOrFail($sale_return_detail->product_id)->product_quantity,
- 'product_tax' => $sale_return_detail->product_tax_amount,
- 'unit_price' => $sale_return_detail->unit_price
- ]
- ]);
- }
-
- return view('salesreturn::edit', compact('sale_return'));
- }
-
-
- public function update(UpdateSaleReturnRequest $request, SaleReturn $sale_return) {
- DB::transaction(function () use ($request, $sale_return) {
- $due_amount = $request->total_amount - $request->paid_amount;
-
- if ($due_amount == $request->total_amount) {
- $payment_status = 'Unpaid';
- } elseif ($due_amount > 0) {
- $payment_status = 'Partial';
- } else {
- $payment_status = 'Paid';
- }
-
- foreach ($sale_return->saleReturnDetails as $sale_return_detail) {
- if ($sale_return->status == 'Completed') {
- $product = Product::findOrFail($sale_return_detail->product_id);
- $product->update([
- 'product_quantity' => $product->product_quantity - $sale_return_detail->quantity
- ]);
- }
- $sale_return_detail->delete();
- }
-
- $sale_return->update([
- 'date' => $request->date,
- 'reference' => $request->reference,
- 'customer_id' => $request->customer_id,
- 'customer_name' => Customer::findOrFail($request->customer_id)->customer_name,
- 'tax_percentage' => $request->tax_percentage,
- 'discount_percentage' => $request->discount_percentage,
- 'shipping_amount' => $request->shipping_amount * 100,
- 'paid_amount' => $request->paid_amount * 100,
- 'total_amount' => $request->total_amount * 100,
- 'due_amount' => $due_amount * 100,
- 'status' => $request->status,
- 'payment_status' => $payment_status,
- 'payment_method' => $request->payment_method,
- 'note' => $request->note,
- 'tax_amount' => Cart::instance('sale_return')->tax() * 100,
- 'discount_amount' => Cart::instance('sale_return')->discount() * 100,
- ]);
-
- foreach (Cart::instance('sale_return')->content() as $cart_item) {
- SaleReturnDetail::create([
- 'sale_return_id' => $sale_return->id,
- 'product_id' => $cart_item->id,
- 'product_name' => $cart_item->name,
- 'product_code' => $cart_item->options->code,
- 'quantity' => $cart_item->qty,
- 'price' => $cart_item->price * 100,
- 'unit_price' => $cart_item->options->unit_price * 100,
- 'sub_total' => $cart_item->options->sub_total * 100,
- 'product_discount_amount' => $cart_item->options->product_discount * 100,
- 'product_discount_type' => $cart_item->options->product_discount_type,
- 'product_tax_amount' => $cart_item->options->product_tax * 100,
- ]);
-
- if ($request->status == 'Completed') {
- $product = Product::findOrFail($cart_item->id);
- $product->update([
- 'product_quantity' => $product->product_quantity + $cart_item->qty
- ]);
- }
- }
-
- Cart::instance('sale_return')->destroy();
- });
-
- toast('Sale Return Updated!', 'info');
-
- return redirect()->route('sale-returns.index');
- }
-
-
- public function destroy(SaleReturn $sale_return) {
- abort_if(Gate::denies('delete_sale_returns'), 403);
-
- $sale_return->delete();
-
- toast('Sale Return Deleted!', 'warning');
-
- return redirect()->route('sale-returns.index');
- }
-}
diff --git a/Modules/SalesReturn/Http/Middleware/.gitkeep b/Modules/SalesReturn/Http/Middleware/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Http/Requests/.gitkeep b/Modules/SalesReturn/Http/Requests/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Http/Requests/StoreSaleReturnRequest.php b/Modules/SalesReturn/Http/Requests/StoreSaleReturnRequest.php
deleted file mode 100644
index 15e292c1..00000000
--- a/Modules/SalesReturn/Http/Requests/StoreSaleReturnRequest.php
+++ /dev/null
@@ -1,40 +0,0 @@
- 'required|numeric',
- 'reference' => 'required|string|max:255',
- 'tax_percentage' => 'required|integer|min:0|max:100',
- 'discount_percentage' => 'required|integer|min:0|max:100',
- 'shipping_amount' => 'required|numeric',
- 'total_amount' => 'required|numeric',
- 'paid_amount' => 'required|numeric',
- 'status' => 'required|string|max:255',
- 'payment_method' => 'required|string|max:255',
- 'note' => 'nullable|string|max:1000'
- ];
- }
-
- /**
- * Determine if the user is authorized to make this request.
- *
- * @return bool
- */
- public function authorize()
- {
- return Gate::allows('create_sale_returns');
- }
-}
diff --git a/Modules/SalesReturn/Http/Requests/UpdateSaleReturnRequest.php b/Modules/SalesReturn/Http/Requests/UpdateSaleReturnRequest.php
deleted file mode 100644
index 50004f6a..00000000
--- a/Modules/SalesReturn/Http/Requests/UpdateSaleReturnRequest.php
+++ /dev/null
@@ -1,40 +0,0 @@
- 'required|numeric',
- 'reference' => 'required|string|max:255',
- 'tax_percentage' => 'required|integer|min:0|max:100',
- 'discount_percentage' => 'required|integer|min:0|max:100',
- 'shipping_amount' => 'required|numeric',
- 'total_amount' => 'required|numeric',
- 'paid_amount' => 'required|numeric|max:' . $this->sale_return->total_amount,
- 'status' => 'required|string|max:255',
- 'payment_method' => 'required|string|max:255',
- 'note' => 'nullable|string|max:1000'
- ];
- }
-
- /**
- * Determine if the user is authorized to make this request.
- *
- * @return bool
- */
- public function authorize()
- {
- return Gate::allows('edit_sale_returns');
- }
-}
diff --git a/Modules/SalesReturn/Providers/.gitkeep b/Modules/SalesReturn/Providers/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Providers/RouteServiceProvider.php b/Modules/SalesReturn/Providers/RouteServiceProvider.php
deleted file mode 100644
index e4864eb1..00000000
--- a/Modules/SalesReturn/Providers/RouteServiceProvider.php
+++ /dev/null
@@ -1,69 +0,0 @@
-mapApiRoutes();
-
- $this->mapWebRoutes();
- }
-
- /**
- * Define the "web" routes for the application.
- *
- * These routes all receive session state, CSRF protection, etc.
- *
- * @return void
- */
- protected function mapWebRoutes()
- {
- Route::middleware('web')
- ->namespace($this->moduleNamespace)
- ->group(module_path('SalesReturn', '/Routes/web.php'));
- }
-
- /**
- * Define the "api" routes for the application.
- *
- * These routes are typically stateless.
- *
- * @return void
- */
- protected function mapApiRoutes()
- {
- Route::prefix('api')
- ->middleware('api')
- ->namespace($this->moduleNamespace)
- ->group(module_path('SalesReturn', '/Routes/api.php'));
- }
-}
diff --git a/Modules/SalesReturn/Providers/SalesReturnServiceProvider.php b/Modules/SalesReturn/Providers/SalesReturnServiceProvider.php
deleted file mode 100644
index 288795cd..00000000
--- a/Modules/SalesReturn/Providers/SalesReturnServiceProvider.php
+++ /dev/null
@@ -1,112 +0,0 @@
-registerTranslations();
- $this->registerConfig();
- $this->registerViews();
- $this->loadMigrationsFrom(module_path($this->moduleName, 'Database/Migrations'));
- }
-
- /**
- * Register the service provider.
- *
- * @return void
- */
- public function register()
- {
- $this->app->register(RouteServiceProvider::class);
- }
-
- /**
- * Register config.
- *
- * @return void
- */
- protected function registerConfig()
- {
- $this->publishes([
- module_path($this->moduleName, 'Config/config.php') => config_path($this->moduleNameLower . '.php'),
- ], 'config');
- $this->mergeConfigFrom(
- module_path($this->moduleName, 'Config/config.php'), $this->moduleNameLower
- );
- }
-
- /**
- * Register views.
- *
- * @return void
- */
- public function registerViews()
- {
- $viewPath = resource_path('views/modules/' . $this->moduleNameLower);
-
- $sourcePath = module_path($this->moduleName, 'Resources/views');
-
- $this->publishes([
- $sourcePath => $viewPath
- ], ['views', $this->moduleNameLower . '-module-views']);
-
- $this->loadViewsFrom(array_merge($this->getPublishableViewPaths(), [$sourcePath]), $this->moduleNameLower);
- }
-
- /**
- * Register translations.
- *
- * @return void
- */
- public function registerTranslations()
- {
- $langPath = resource_path('lang/modules/' . $this->moduleNameLower);
-
- if (is_dir($langPath)) {
- $this->loadTranslationsFrom($langPath, $this->moduleNameLower);
- } else {
- $this->loadTranslationsFrom(module_path($this->moduleName, 'Resources/lang'), $this->moduleNameLower);
- }
- }
-
- /**
- * Get the services provided by the provider.
- *
- * @return array
- */
- public function provides()
- {
- return [];
- }
-
- private function getPublishableViewPaths(): array
- {
- $paths = [];
- foreach (\Config::get('view.paths') as $path) {
- if (is_dir($path . '/modules/' . $this->moduleNameLower)) {
- $paths[] = $path . '/modules/' . $this->moduleNameLower;
- }
- }
- return $paths;
- }
-}
diff --git a/Modules/SalesReturn/Resources/assets/.gitkeep b/Modules/SalesReturn/Resources/assets/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Resources/assets/js/app.js b/Modules/SalesReturn/Resources/assets/js/app.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Resources/assets/sass/app.scss b/Modules/SalesReturn/Resources/assets/sass/app.scss
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Resources/lang/.gitkeep b/Modules/SalesReturn/Resources/lang/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Resources/views/.gitkeep b/Modules/SalesReturn/Resources/views/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Resources/views/create.blade.php b/Modules/SalesReturn/Resources/views/create.blade.php
deleted file mode 100644
index 0a16503a..00000000
--- a/Modules/SalesReturn/Resources/views/create.blade.php
+++ /dev/null
@@ -1,139 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Create Sale Return')
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - Add
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
- @include('utils.alerts')
-
-
-
-
-
-
-@endsection
-
-@push('page_scripts')
-
-
-@endpush
diff --git a/Modules/SalesReturn/Resources/views/edit.blade.php b/Modules/SalesReturn/Resources/views/edit.blade.php
deleted file mode 100644
index 658777a2..00000000
--- a/Modules/SalesReturn/Resources/views/edit.blade.php
+++ /dev/null
@@ -1,124 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Edit Sale Return')
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - Edit
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
- @include('utils.alerts')
-
-
-
-
-
-
-@endsection
-
-@push('page_scripts')
-
-
-@endpush
diff --git a/Modules/SalesReturn/Resources/views/index.blade.php b/Modules/SalesReturn/Resources/views/index.blade.php
deleted file mode 100644
index 20cb496c..00000000
--- a/Modules/SalesReturn/Resources/views/index.blade.php
+++ /dev/null
@@ -1,40 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Sale Returns')
-
-@section('third_party_stylesheets')
-
-@endsection
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
-
-@endsection
-
-@section('content')
-
-@endsection
-
-@push('page_scripts')
- {!! $dataTable->scripts() !!}
-@endpush
diff --git a/Modules/SalesReturn/Resources/views/partials/actions.blade.php b/Modules/SalesReturn/Resources/views/partials/actions.blade.php
deleted file mode 100644
index c401b726..00000000
--- a/Modules/SalesReturn/Resources/views/partials/actions.blade.php
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
diff --git a/Modules/SalesReturn/Resources/views/partials/payment-status.blade.php b/Modules/SalesReturn/Resources/views/partials/payment-status.blade.php
deleted file mode 100644
index 7ac6bf4c..00000000
--- a/Modules/SalesReturn/Resources/views/partials/payment-status.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-@if ($data->payment_status == 'Partial')
-
- {{ $data->payment_status }}
-
-@elseif ($data->payment_status == 'Paid')
-
- {{ $data->payment_status }}
-
-@else
-
- {{ $data->payment_status }}
-
-@endif
diff --git a/Modules/SalesReturn/Resources/views/partials/status.blade.php b/Modules/SalesReturn/Resources/views/partials/status.blade.php
deleted file mode 100644
index e6f2dfe7..00000000
--- a/Modules/SalesReturn/Resources/views/partials/status.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-@if ($data->status == 'Pending')
-
- {{ $data->status }}
-
-@elseif ($data->status == 'Shipped')
-
- {{ $data->status }}
-
-@else
-
- {{ $data->status }}
-
-@endif
diff --git a/Modules/SalesReturn/Resources/views/payments/create.blade.php b/Modules/SalesReturn/Resources/views/payments/create.blade.php
deleted file mode 100644
index fca8985e..00000000
--- a/Modules/SalesReturn/Resources/views/payments/create.blade.php
+++ /dev/null
@@ -1,114 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Create Payment')
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - {{ $sale_return->reference }}
- - Add Payment
-
-@endsection
-
-@section('content')
-
-
-
-@endsection
-
-@push('page_scripts')
-
-
-@endpush
-
diff --git a/Modules/SalesReturn/Resources/views/payments/edit.blade.php b/Modules/SalesReturn/Resources/views/payments/edit.blade.php
deleted file mode 100644
index 43f8e723..00000000
--- a/Modules/SalesReturn/Resources/views/payments/edit.blade.php
+++ /dev/null
@@ -1,117 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Edit Payment')
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - {{ $sale_return->reference }}
- - Edit Payment
-
-@endsection
-
-@section('content')
-
-
-
-@endsection
-
-@push('page_scripts')
-
-
-@endpush
-
diff --git a/Modules/SalesReturn/Resources/views/payments/index.blade.php b/Modules/SalesReturn/Resources/views/payments/index.blade.php
deleted file mode 100644
index a92f0ebc..00000000
--- a/Modules/SalesReturn/Resources/views/payments/index.blade.php
+++ /dev/null
@@ -1,37 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Sale Payments')
-
-@section('third_party_stylesheets')
-
-@endsection
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - {{ $sale_return->reference }}
- - Payments
-
-@endsection
-
-@section('content')
-
-
-
- @include('utils.alerts')
-
-
-
- {!! $dataTable->table() !!}
-
-
-
-
-
-
-@endsection
-
-@push('page_scripts')
- {!! $dataTable->scripts() !!}
-@endpush
diff --git a/Modules/SalesReturn/Resources/views/payments/partials/actions.blade.php b/Modules/SalesReturn/Resources/views/payments/partials/actions.blade.php
deleted file mode 100644
index 5532260d..00000000
--- a/Modules/SalesReturn/Resources/views/payments/partials/actions.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-@can('access_sale_return_payments')
-
-
-
-@endcan
-@can('access_sale_return_payments')
-
-@endcan
diff --git a/Modules/SalesReturn/Resources/views/print.blade.php b/Modules/SalesReturn/Resources/views/print.blade.php
deleted file mode 100644
index ee5eb6e6..00000000
--- a/Modules/SalesReturn/Resources/views/print.blade.php
+++ /dev/null
@@ -1,133 +0,0 @@
-
-
-
-
-
-
- Sale Return Details
-
-
-
-
-
-
-
-
 }})
-
- Reference:: {{ $sale_return->reference }}
-
-
-
-
-
-
-
Company Info:
-
{{ settings()->company_name }}
-
{{ settings()->company_address }}
-
Email: {{ settings()->company_email }}
-
Phone: {{ settings()->company_phone }}
-
-
-
-
Customer Info:
-
{{ $customer->customer_name }}
-
{{ $customer->address }}
-
Email: {{ $customer->customer_email }}
-
Phone: {{ $customer->customer_phone }}
-
-
-
-
Invoice Info:
-
Invoice: INV/{{ $sale_return->reference }}
-
Date: {{ \Carbon\Carbon::parse($sale_return->date)->format('d M, Y') }}
-
- Status: {{ $sale_return->status }}
-
-
- Payment Status: {{ $sale_return->payment_status }}
-
-
-
-
-
-
-
-
-
- Product |
- Net Unit Price |
- Quantity |
- Discount |
- Tax |
- Sub Total |
-
-
-
- @foreach($sale_return->saleReturnDetails as $item)
-
-
- {{ $item->product_name }}
-
- {{ $item->product_code }}
-
- |
-
- {{ format_currency($item->unit_price) }} |
-
-
- {{ $item->quantity }}
- |
-
-
- {{ format_currency($item->product_discount_amount) }}
- |
-
-
- {{ format_currency($item->product_tax_amount) }}
- |
-
-
- {{ format_currency($item->sub_total) }}
- |
-
- @endforeach
-
-
-
-
-
-
-
-
- Discount ({{ $sale_return->discount_percentage }}%) |
- {{ format_currency($sale_return->discount_amount) }} |
-
-
- Tax ({{ $sale_return->tax_percentage }}%) |
- {{ format_currency($sale_return->tax_amount) }} |
-
-
- Shipping) |
- {{ format_currency($sale_return->shipping_amount) }} |
-
-
- Grand Total |
- {{ format_currency($sale_return->total_amount) }} |
-
-
-
-
-
-
-
-
{{ settings()->company_name }} © {{ date('Y') }}.
-
-
-
-
-
-
-
-
-
diff --git a/Modules/SalesReturn/Resources/views/show.blade.php b/Modules/SalesReturn/Resources/views/show.blade.php
deleted file mode 100644
index a918556e..00000000
--- a/Modules/SalesReturn/Resources/views/show.blade.php
+++ /dev/null
@@ -1,135 +0,0 @@
-@extends('layouts.app')
-
-@section('title', 'Sales Details')
-
-@section('breadcrumb')
-
- - Home
- - Sale Returns
- - Details
-
-@endsection
-
-@section('content')
-
-
-
-
-
-
-
-
-
Company Info:
-
{{ settings()->company_name }}
-
{{ settings()->company_address }}
-
Email: {{ settings()->company_email }}
-
Phone: {{ settings()->company_phone }}
-
-
-
-
Customer Info:
-
{{ $customer->customer_name }}
-
{{ $customer->address }}
-
Email: {{ $customer->customer_email }}
-
Phone: {{ $customer->customer_phone }}
-
-
-
-
Invoice Info:
-
Invoice: INV/{{ $sale_return->reference }}
-
Date: {{ \Carbon\Carbon::parse($sale_return->date)->format('d M, Y') }}
-
- Status: {{ $sale_return->status }}
-
-
- Payment Status: {{ $sale_return->payment_status }}
-
-
-
-
-
-
-
-
-
- Product |
- Net Unit Price |
- Quantity |
- Discount |
- Tax |
- Sub Total |
-
-
-
- @foreach($sale_return->saleReturnDetails as $item)
-
-
- {{ $item->product_name }}
-
- {{ $item->product_code }}
-
- |
-
- {{ format_currency($item->unit_price) }} |
-
-
- {{ $item->quantity }}
- |
-
-
- {{ format_currency($item->product_discount_amount) }}
- |
-
-
- {{ format_currency($item->product_tax_amount) }}
- |
-
-
- {{ format_currency($item->sub_total) }}
- |
-
- @endforeach
-
-
-
-
-
-
-
-
- Discount ({{ $sale_return->discount_percentage }}%) |
- {{ format_currency($sale_return->discount_amount) }} |
-
-
- Tax ({{ $sale_return->tax_percentage }}%) |
- {{ format_currency($sale_return->tax_amount) }} |
-
-
- Shipping) |
- {{ format_currency($sale_return->shipping_amount) }} |
-
-
- Grand Total |
- {{ format_currency($sale_return->total_amount) }} |
-
-
-
-
-
-
-
-
-
-
-@endsection
-
diff --git a/Modules/SalesReturn/Routes/.gitkeep b/Modules/SalesReturn/Routes/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Routes/api.php b/Modules/SalesReturn/Routes/api.php
deleted file mode 100644
index 6d64ca74..00000000
--- a/Modules/SalesReturn/Routes/api.php
+++ /dev/null
@@ -1,18 +0,0 @@
-get('/salesreturn', function (Request $request) {
- return $request->user();
-});
\ No newline at end of file
diff --git a/Modules/SalesReturn/Routes/web.php b/Modules/SalesReturn/Routes/web.php
deleted file mode 100644
index f6f759b0..00000000
--- a/Modules/SalesReturn/Routes/web.php
+++ /dev/null
@@ -1,44 +0,0 @@
- 'auth'], function () {
- //Generate PDF
- Route::get('/sale-returns/pdf/{id}', function ($id) {
- $saleReturn = \Modules\SalesReturn\Entities\SaleReturn::findOrFail($id);
- $customer = \Modules\People\Entities\Customer::findOrFail($saleReturn->customer_id);
-
- $pdf = \PDF::loadView('salesreturn::print', [
- 'sale_return' => $saleReturn,
- 'customer' => $customer,
- ])->setPaper('a4');
-
- return $pdf->stream('sale-return-'. $saleReturn->reference .'.pdf');
- })->name('sale-returns.pdf');
-
- //Sale Returns
- Route::resource('sale-returns', 'SalesReturnController');
-
- //Payments
- Route::get('/sale-return-payments/{sale_return_id}', 'SaleReturnPaymentsController@index')
- ->name('sale-return-payments.index');
- Route::get('/sale-return-payments/{sale_return_id}/create', 'SaleReturnPaymentsController@create')
- ->name('sale-return-payments.create');
- Route::post('/sale-return-payments/store', 'SaleReturnPaymentsController@store')
- ->name('sale-return-payments.store');
- Route::get('/sale-return-payments/{sale_return_id}/edit/{saleReturnPayment}', 'SaleReturnPaymentsController@edit')
- ->name('sale-return-payments.edit');
- Route::patch('/sale-return-payments/update/{saleReturnPayment}', 'SaleReturnPaymentsController@update')
- ->name('sale-return-payments.update');
- Route::delete('/sale-return-payments/destroy/{saleReturnPayment}', 'SaleReturnPaymentsController@destroy')
- ->name('sale-return-payments.destroy');
-});
diff --git a/Modules/SalesReturn/Tests/Feature/.gitkeep b/Modules/SalesReturn/Tests/Feature/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/Tests/Unit/.gitkeep b/Modules/SalesReturn/Tests/Unit/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/Modules/SalesReturn/composer.json b/Modules/SalesReturn/composer.json
deleted file mode 100644
index 44f24558..00000000
--- a/Modules/SalesReturn/composer.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "nwidart/salesreturn",
- "description": "",
- "authors": [
- {
- "name": "Nicolas Widart",
- "email": "n.widart@gmail.com"
- }
- ],
- "extra": {
- "laravel": {
- "providers": [],
- "aliases": {
-
- }
- }
- },
- "autoload": {
- "psr-4": {
- "Modules\\SalesReturn\\": ""
- }
- }
-}
diff --git a/Modules/SalesReturn/module.json b/Modules/SalesReturn/module.json
deleted file mode 100644
index 39a39a48..00000000
--- a/Modules/SalesReturn/module.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "name": "SalesReturn",
- "alias": "salesreturn",
- "description": "",
- "keywords": [],
- "priority": 0,
- "providers": [
- "Modules\\SalesReturn\\Providers\\SalesReturnServiceProvider"
- ],
- "aliases": {},
- "files": [],
- "requires": []
-}
diff --git a/Modules/SalesReturn/package.json b/Modules/SalesReturn/package.json
deleted file mode 100644
index 4599509f..00000000
--- a/Modules/SalesReturn/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "private": true,
- "scripts": {
- "dev": "npm run development",
- "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
- "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
- "watch-poll": "npm run watch -- --watch-poll",
- "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
- "prod": "npm run production",
- "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
- },
- "devDependencies": {
- "cross-env": "^7.0",
- "laravel-mix": "^5.0.1",
- "laravel-mix-merge-manifest": "^0.1.2"
- }
-}
diff --git a/Modules/SalesReturn/webpack.mix.js b/Modules/SalesReturn/webpack.mix.js
deleted file mode 100644
index 97a5c6a9..00000000
--- a/Modules/SalesReturn/webpack.mix.js
+++ /dev/null
@@ -1,14 +0,0 @@
-const dotenvExpand = require('dotenv-expand');
-dotenvExpand(require('dotenv').config({ path: '../../.env'/*, debug: true*/}));
-
-const mix = require('laravel-mix');
-require('laravel-mix-merge-manifest');
-
-mix.setPublicPath('../../public').mergeManifest();
-
-mix.js(__dirname + '/Resources/assets/js/app.js', 'js/salesreturn.js')
- .sass( __dirname + '/Resources/assets/sass/app.scss', 'css/salesreturn.css');
-
-if (mix.inProduction()) {
- mix.version();
-}
diff --git a/Modules/Setting/Database/Seeders/SettingDatabaseSeeder.php b/Modules/Setting/Database/Seeders/SettingDatabaseSeeder.php
index 4e436e39..283a2818 100644
--- a/Modules/Setting/Database/Seeders/SettingDatabaseSeeder.php
+++ b/Modules/Setting/Database/Seeders/SettingDatabaseSeeder.php
@@ -5,6 +5,7 @@ namespace Modules\Setting\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Modules\Setting\Entities\Setting;
+use Modules\Currency\Entities\Currency;
class SettingDatabaseSeeder extends Seeder
{
@@ -15,15 +16,19 @@ class SettingDatabaseSeeder extends Seeder
*/
public function run()
{
+ // Get default currency (IDR)
+ $currency = Currency::where('code', 'IDR')->first();
+
Setting::create([
- 'company_name' => 'Triangle POS',
- 'company_email' => 'company@test.com',
- 'company_phone' => '012345678901',
- 'notification_email' => 'notification@test.com',
- 'default_currency_id' => 1,
- 'default_currency_position' => 'prefix',
- 'footer_text' => 'Triangle Pos © 2021 || Developed by Fahim Anzam',
- 'company_address' => 'Tangail, Bangladesh'
+ 'company_name' => 'Toko Al Fatih',
+ 'company_email' => 'info@al-fatih.com',
+ 'company_phone' => '1234567890',
+ 'notification_email' => 'notification@al-fatih.com',
+ 'default_currency_id' => $currency->id,
+ 'default_currency_position' => 'left',
+ 'footer_text' => 'Toko Al Fatih © 2024',
+ 'company_address' => 'Jl. Example No. 123',
+
]);
}
}
diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php
index 55c59348..f1e96a35 100644
--- a/app/Http/Controllers/HomeController.php
+++ b/app/Http/Controllers/HomeController.php
@@ -11,19 +11,39 @@ use Modules\PurchasesReturn\Entities\PurchaseReturn;
use Modules\PurchasesReturn\Entities\PurchaseReturnPayment;
use Modules\Sale\Entities\Sale;
use Modules\Sale\Entities\SalePayment;
-use Modules\SalesReturn\Entities\SaleReturn;
-use Modules\SalesReturn\Entities\SaleReturnPayment;
class HomeController extends Controller
{
public function index() {
- $sales = Sale::completed()->sum('total_amount');
- $sale_returns = SaleReturn::completed()->sum('total_amount');
- $purchase_returns = PurchaseReturn::completed()->sum('total_amount');
+ // Cek session dulu
+ $activeBranchId = session('active_branch_id');
+
+ // Jika tidak ada di session, coba ambil dari user
+ if (!$activeBranchId) {
+ $user = auth()->user();
+ if ($user && $user->active_branch) {
+ $activeBranchId = $user->active_branch->id;
+ } else {
+ // Default ke branch ID 1 jika tidak ada
+ $activeBranchId = 1;
+ session(['active_branch_id' => $activeBranchId]);
+ }
+ }
+
+ $sales = Sale::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
+ ->sum('total_amount');
+
+ $purchase_returns = PurchaseReturn::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
+ ->sum('total_amount');
+
$product_costs = 0;
- foreach (Sale::completed()->with('saleDetails')->get() as $sale) {
+ foreach (Sale::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
+ ->with('saleDetails')->get() as $sale) {
foreach ($sale->saleDetails as $saleDetail) {
if (!is_null($saleDetail->product)) {
$product_costs += $saleDetail->product->product_cost * $saleDetail->quantity;
@@ -31,12 +51,11 @@ class HomeController extends Controller
}
}
- $revenue = ($sales - $sale_returns) / 100;
+ $revenue = $sales / 100;
$profit = $revenue - $product_costs;
return view('home', [
'revenue' => $revenue,
- 'sale_returns' => $sale_returns / 100,
'purchase_returns' => $purchase_returns / 100,
'profit' => $profit
]);
@@ -46,15 +65,24 @@ class HomeController extends Controller
public function currentMonthChart() {
abort_if(!request()->ajax(), 404);
- $currentMonthSales = Sale::where('status', 'Completed')->whereMonth('date', date('m'))
- ->whereYear('date', date('Y'))
- ->sum('total_amount') / 100;
- $currentMonthPurchases = Purchase::where('status', 'Completed')->whereMonth('date', date('m'))
- ->whereYear('date', date('Y'))
- ->sum('total_amount') / 100;
- $currentMonthExpenses = Expense::whereMonth('date', date('m'))
- ->whereYear('date', date('Y'))
- ->sum('amount') / 100;
+ $activeBranchId = session('active_branch_id') ?? 1;
+
+ $currentMonthSales = Sale::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
+ ->whereMonth('date', date('m'))
+ ->whereYear('date', date('Y'))
+ ->sum('total_amount') / 100;
+
+ $currentMonthPurchases = Purchase::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
+ ->whereMonth('date', date('m'))
+ ->whereYear('date', date('Y'))
+ ->sum('total_amount') / 100;
+
+ $currentMonthExpenses = Expense::where('branch_id', $activeBranchId)
+ ->whereMonth('date', date('m'))
+ ->whereYear('date', date('Y'))
+ ->sum('amount') / 100;
return response()->json([
'sales' => $currentMonthSales,
@@ -67,6 +95,8 @@ class HomeController extends Controller
public function salesPurchasesChart() {
abort_if(!request()->ajax(), 404);
+ $activeBranchId = session('active_branch_id') ?? 1;
+
$sales = $this->salesChartData();
$purchases = $this->purchasesChartData();
@@ -77,6 +107,8 @@ class HomeController extends Controller
public function paymentChart() {
abort_if(!request()->ajax(), 404);
+ $activeBranchId = session('active_branch_id') ?? 1;
+
$dates = collect();
foreach (range(-11, 0) as $i) {
$date = Carbon::now()->addMonths($i)->format('m-Y');
@@ -86,14 +118,7 @@ class HomeController extends Controller
$date_range = Carbon::today()->subYear()->format('Y-m-d');
$sale_payments = SalePayment::where('date', '>=', $date_range)
- ->select([
- DB::raw("DATE_FORMAT(date, '%m-%Y') as month"),
- DB::raw("SUM(amount) as amount")
- ])
- ->groupBy('month')->orderBy('month')
- ->get()->pluck('amount', 'month');
-
- $sale_return_payments = SaleReturnPayment::where('date', '>=', $date_range)
+ ->where('branch_id', $activeBranchId)
->select([
DB::raw("DATE_FORMAT(date, '%m-%Y') as month"),
DB::raw("SUM(amount) as amount")
@@ -102,6 +127,7 @@ class HomeController extends Controller
->get()->pluck('amount', 'month');
$purchase_payments = PurchasePayment::where('date', '>=', $date_range)
+ ->where('branch_id', $activeBranchId)
->select([
DB::raw("DATE_FORMAT(date, '%m-%Y') as month"),
DB::raw("SUM(amount) as amount")
@@ -110,6 +136,7 @@ class HomeController extends Controller
->get()->pluck('amount', 'month');
$purchase_return_payments = PurchaseReturnPayment::where('date', '>=', $date_range)
+ ->where('branch_id', $activeBranchId)
->select([
DB::raw("DATE_FORMAT(date, '%m-%Y') as month"),
DB::raw("SUM(amount) as amount")
@@ -118,6 +145,7 @@ class HomeController extends Controller
->get()->pluck('amount', 'month');
$expenses = Expense::where('date', '>=', $date_range)
+ ->where('branch_id', $activeBranchId)
->select([
DB::raw("DATE_FORMAT(date, '%m-%Y') as month"),
DB::raw("SUM(amount) as amount")
@@ -125,8 +153,8 @@ class HomeController extends Controller
->groupBy('month')->orderBy('month')
->get()->pluck('amount', 'month');
- $payment_received = array_merge_numeric_values($sale_payments, $purchase_return_payments);
- $payment_sent = array_merge_numeric_values($purchase_payments, $sale_return_payments, $expenses);
+ $payment_received = $sale_payments;
+ $payment_sent = array_merge_numeric_values($purchase_payments, $expenses);
$dates_received = $dates->merge($payment_received);
$dates_sent = $dates->merge($payment_sent);
@@ -152,6 +180,8 @@ class HomeController extends Controller
}
public function salesChartData() {
+ $activeBranchId = session('active_branch_id') ?? 1;
+
$dates = collect();
foreach (range(-6, 0) as $i) {
$date = Carbon::now()->addDays($i)->format('d-m-y');
@@ -160,7 +190,8 @@ class HomeController extends Controller
$date_range = Carbon::today()->subDays(6);
- $sales = Sale::where('status', 'Completed')
+ $sales = Sale::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
->where('date', '>=', $date_range)
->groupBy(DB::raw("DATE_FORMAT(date,'%d-%m-%y')"))
->orderBy('date')
@@ -184,6 +215,8 @@ class HomeController extends Controller
public function purchasesChartData() {
+ $activeBranchId = session('active_branch_id') ?? 1;
+
$dates = collect();
foreach (range(-6, 0) as $i) {
$date = Carbon::now()->addDays($i)->format('d-m-y');
@@ -192,7 +225,8 @@ class HomeController extends Controller
$date_range = Carbon::today()->subDays(6);
- $purchases = Purchase::where('status', 'Completed')
+ $purchases = Purchase::where('payment_status', 'Completed')
+ ->where('branch_id', $activeBranchId)
->where('date', '>=', $date_range)
->groupBy(DB::raw("DATE_FORMAT(date,'%d-%m-%y')"))
->orderBy('date')
diff --git a/app/Models/Branch.php b/app/Models/Branch.php
new file mode 100644
index 00000000..04d0aafb
--- /dev/null
+++ b/app/Models/Branch.php
@@ -0,0 +1,25 @@
+ 'boolean',
+ ];
+
+ public function users()
+ {
+ return $this->belongsToMany(User::class, 'branch_user')->withTimestamps();
+ }
+}
\ No newline at end of file
diff --git a/app/Models/User.php b/app/Models/User.php
index b5afdfed..7ce54f15 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -58,4 +58,9 @@ class User extends Authenticatable implements HasMedia
public function scopeIsActive(Builder $builder) {
return $builder->where('is_active', 1);
}
+
+ public function branches()
+ {
+ return $this->belongsToMany(Branch::class, 'branch_user')->withTimestamps();
+ }
}
diff --git a/database/migrations/2024_03_21_create_branch_user_table.php b/database/migrations/2024_03_21_create_branch_user_table.php
new file mode 100644
index 00000000..a6eca5cf
--- /dev/null
+++ b/database/migrations/2024_03_21_create_branch_user_table.php
@@ -0,0 +1,31 @@
+id();
+ $table->foreignId('branch_id')->constrained('branches')->onDelete('cascade');
+ $table->foreignId('user_id')->constrained('users')->onDelete('cascade');
+ $table->timestamps();
+
+ // Prevent duplicate entries
+ $table->unique(['branch_id', 'user_id']);
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('branch_user');
+ }
+};
\ No newline at end of file
diff --git a/database/seeders/SettingDatabaseSeeder.php b/database/seeders/SettingDatabaseSeeder.php
new file mode 100644
index 00000000..1ccc700b
--- /dev/null
+++ b/database/seeders/SettingDatabaseSeeder.php
@@ -0,0 +1,41 @@
+first();
+
+ // Create default settings if not exists
+ if (!Setting::first()) {
+ Setting::create([
+ 'default_currency_id' => $currency->id,
+ 'company_name' => 'Toko Al Fatih',
+ 'company_email' => 'info@al-fatih.com',
+ 'company_phone' => '1234567890',
+ 'company_address' => 'Jl. Example No. 123',
+ 'company_logo' => null,
+ 'company_favicon' => null,
+ 'company_currency_position' => 'prefix',
+ 'company_timezone' => 'Asia/Jakarta',
+ 'company_date_format' => 'd-m-Y',
+ 'company_time_format' => 'H:i:s',
+ 'company_fiscal_year' => '1-12',
+ 'company_tax_number' => '1234567890',
+ 'company_vat_number' => '1234567890'
+ ]);
+ }
+ }
+}
\ No newline at end of file
diff --git a/database/seeders/SuperUserSeeder.php b/database/seeders/SuperUserSeeder.php
index 0838b919..f93a8484 100644
--- a/database/seeders/SuperUserSeeder.php
+++ b/database/seeders/SuperUserSeeder.php
@@ -3,6 +3,7 @@
namespace Database\Seeders;
use App\Models\User;
+use App\Models\Branch;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Role;
@@ -16,6 +17,10 @@ class SuperUserSeeder extends Seeder
*/
public function run()
{
+ // Get default branch
+ $branch = Branch::where('name', 'Toko Al Fatih Pusat')->first();
+
+ // Create super admin user
$user = User::create([
'name' => 'Administrator',
'email' => 'super.admin@test.com',
@@ -23,10 +28,14 @@ class SuperUserSeeder extends Seeder
'is_active' => 1
]);
+ // Create and assign Super Admin role
$superAdmin = Role::create([
'name' => 'Super Admin'
]);
$user->assignRole($superAdmin);
+
+ // Attach user to branch
+ $user->branches()->attach($branch->id);
}
}
diff --git a/modules_statuses.json b/modules_statuses.json
index ee5b40b7..9d61270a 100644
--- a/modules_statuses.json
+++ b/modules_statuses.json
@@ -13,5 +13,6 @@
"SalesReturn": true,
"PurchasesReturn": true,
"Quotation": true,
- "Reports": true
+ "Reports": true,
+ "Branch": true
}
\ No newline at end of file
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
index 82692cd3..12263b69 100644
--- a/resources/views/home.blade.php
+++ b/resources/views/home.blade.php
@@ -26,20 +26,6 @@
-
-
-
-
-
-
-
-
{{ format_currency($sale_returns) }}
-
Sales Return
-
-
-
-
-
diff --git a/resources/views/layouts/menu.blade.php b/resources/views/layouts/menu.blade.php
index cd1ffae8..5233a108 100644
--- a/resources/views/layouts/menu.blade.php
+++ b/resources/views/layouts/menu.blade.php
@@ -4,6 +4,28 @@
+@can('access_branches')
+
+@endcan
+
@can('access_products')
@endcan
-@can('access_sale_returns')
-
-@endcan
-
@can('access_expenses')