diff --git a/app/DataTables/AdjustmentsDataTable.php b/Modules/Adjustment/DataTables/AdjustmentsDataTable.php similarity index 98% rename from app/DataTables/AdjustmentsDataTable.php rename to Modules/Adjustment/DataTables/AdjustmentsDataTable.php index 42981f67..65f7aed3 100644 --- a/app/DataTables/AdjustmentsDataTable.php +++ b/Modules/Adjustment/DataTables/AdjustmentsDataTable.php @@ -1,6 +1,6 @@ hasMany(AdjustedProduct::class, 'adjustment_id', 'id'); } - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT ); + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = Adjustment::max('id') + 1; + $model->reference = make_reference_id('ADJ', $number); + }); } } diff --git a/Modules/Adjustment/Http/Controllers/AdjustmentController.php b/Modules/Adjustment/Http/Controllers/AdjustmentController.php index 91cc75c8..5a1cc1d2 100644 --- a/Modules/Adjustment/Http/Controllers/AdjustmentController.php +++ b/Modules/Adjustment/Http/Controllers/AdjustmentController.php @@ -2,7 +2,7 @@ namespace Modules\Adjustment\Http\Controllers; -use App\DataTables\AdjustmentsDataTable; +use Modules\Adjustment\DataTables\AdjustmentsDataTable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; @@ -11,6 +11,7 @@ use Illuminate\Support\Facades\Gate; use Modules\Adjustment\Entities\AdjustedProduct; use Modules\Adjustment\Entities\Adjustment; use Modules\Product\Entities\Product; +use Modules\Product\Notifications\NotifyQuantityAlert; class AdjustmentController extends Controller { @@ -43,9 +44,8 @@ class AdjustmentController extends Controller DB::transaction(function () use ($request) { $adjustment = Adjustment::create([ - 'reference' => $request->reference, - 'date' => $request->date, - 'note' => $request->note + 'date' => $request->date, + 'note' => $request->note ]); foreach ($request->product_ids as $key => $id) { @@ -128,15 +128,14 @@ class AdjustmentController extends Controller foreach ($request->product_ids as $key => $id) { AdjustedProduct::create([ 'adjustment_id' => $adjustment->id, - 'product_id' => $id, + 'product_id' => $id, 'quantity' => $request->quantities[$key], 'type' => $request->types[$key] ]); $product = Product::findOrFail($id); - if ($request->types[$key] == 'add') - { + if ($request->types[$key] == 'add') { $product->update([ 'product_quantity' => $product->product_quantity + $request->quantities[$key] ]); diff --git a/app/DataTables/CurrencyDataTable.php b/Modules/Currency/DataTables/CurrencyDataTable.php similarity index 98% rename from app/DataTables/CurrencyDataTable.php rename to Modules/Currency/DataTables/CurrencyDataTable.php index 92cd8c21..6714590d 100644 --- a/app/DataTables/CurrencyDataTable.php +++ b/Modules/Currency/DataTables/CurrencyDataTable.php @@ -1,6 +1,6 @@ belongsTo(ExpenseCategory::class, 'category_id', 'id'); } + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = Expense::max('id') + 1; + $model->reference = make_reference_id('EXP', $number); + }); + } + public function getDateAttribute($value) { return Carbon::parse($value)->format('d M, Y'); } @@ -27,8 +36,4 @@ class Expense extends Model public function getAmountAttribute($value) { return ($value / 100); } - - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT ); - } } diff --git a/Modules/Expense/Http/Controllers/ExpenseCategoriesController.php b/Modules/Expense/Http/Controllers/ExpenseCategoriesController.php index ac3fd135..96b05b70 100644 --- a/Modules/Expense/Http/Controllers/ExpenseCategoriesController.php +++ b/Modules/Expense/Http/Controllers/ExpenseCategoriesController.php @@ -2,7 +2,7 @@ namespace Modules\Expense\Http\Controllers; -use App\DataTables\ExpenseCategoriesDataTable; +use Modules\Expense\DataTables\ExpenseCategoriesDataTable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; diff --git a/Modules/Expense/Http/Controllers/ExpenseController.php b/Modules/Expense/Http/Controllers/ExpenseController.php index 945cafb7..b9ea2d45 100644 --- a/Modules/Expense/Http/Controllers/ExpenseController.php +++ b/Modules/Expense/Http/Controllers/ExpenseController.php @@ -2,7 +2,7 @@ namespace Modules\Expense\Http\Controllers; -use App\DataTables\ExpensesDataTable; +use Modules\Expense\DataTables\ExpensesDataTable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; @@ -40,7 +40,6 @@ class ExpenseController extends Controller Expense::create([ 'date' => $request->date, - 'reference' => $request->reference, 'category_id' => $request->category_id, 'amount' => $request->amount, 'details' => $request->details diff --git a/Modules/Expense/Resources/views/expenses/edit.blade.php b/Modules/Expense/Resources/views/expenses/edit.blade.php index 700497d3..22368b89 100644 --- a/Modules/Expense/Resources/views/expenses/edit.blade.php +++ b/Modules/Expense/Resources/views/expenses/edit.blade.php @@ -29,7 +29,7 @@
- +
diff --git a/app/DataTables/CustomersDataTable.php b/Modules/People/DataTables/CustomersDataTable.php similarity index 98% rename from app/DataTables/CustomersDataTable.php rename to Modules/People/DataTables/CustomersDataTable.php index be651594..54f287e9 100644 --- a/app/DataTables/CustomersDataTable.php +++ b/Modules/People/DataTables/CustomersDataTable.php @@ -1,6 +1,6 @@ hasMany(PurchasePayment::class, 'purchase_id', 'id'); } - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT); + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = Purchase::max('id') + 1; + $model->reference = make_reference_id('PR', $number); + }); } public function getShippingAmountAttribute($value) { diff --git a/Modules/Purchase/Http/Controllers/PurchaseController.php b/Modules/Purchase/Http/Controllers/PurchaseController.php index fdaaad35..287b2a39 100644 --- a/Modules/Purchase/Http/Controllers/PurchaseController.php +++ b/Modules/Purchase/Http/Controllers/PurchaseController.php @@ -2,10 +2,8 @@ namespace Modules\Purchase\Http\Controllers; -use App\DataTables\PurchaseDataTable; +use Modules\Purchase\DataTables\PurchaseDataTable; use Gloudemans\Shoppingcart\Facades\Cart; -use Illuminate\Contracts\Support\Renderable; -use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; @@ -49,7 +47,6 @@ class PurchaseController extends Controller $purchase = Purchase::create([ 'date' => $request->date, - 'reference' => $request->reference, 'supplier_id' => $request->supplier_id, 'supplier_name' => Supplier::findOrFail($request->supplier_id)->supplier_name, 'tax_percentage' => $request->tax_percentage, diff --git a/Modules/Purchase/Http/Controllers/PurchasePaymentsController.php b/Modules/Purchase/Http/Controllers/PurchasePaymentsController.php index 6d17c15f..f320bfd5 100644 --- a/Modules/Purchase/Http/Controllers/PurchasePaymentsController.php +++ b/Modules/Purchase/Http/Controllers/PurchasePaymentsController.php @@ -2,8 +2,7 @@ namespace Modules\Purchase\Http\Controllers; -use App\DataTables\PurchasePaymentsDataTable; -use Illuminate\Contracts\Support\Renderable; +use Modules\Purchase\DataTables\PurchasePaymentsDataTable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; diff --git a/Modules/Purchase/Resources/views/edit.blade.php b/Modules/Purchase/Resources/views/edit.blade.php index d3dc3dd3..b59e175c 100644 --- a/Modules/Purchase/Resources/views/edit.blade.php +++ b/Modules/Purchase/Resources/views/edit.blade.php @@ -30,7 +30,7 @@
- +
diff --git a/app/DataTables/PurchaseReturnPaymentsDataTable.php b/Modules/PurchasesReturn/DataTables/PurchaseReturnPaymentsDataTable.php similarity index 98% rename from app/DataTables/PurchaseReturnPaymentsDataTable.php rename to Modules/PurchasesReturn/DataTables/PurchaseReturnPaymentsDataTable.php index 36d9f70e..841284d7 100644 --- a/app/DataTables/PurchaseReturnPaymentsDataTable.php +++ b/Modules/PurchasesReturn/DataTables/PurchaseReturnPaymentsDataTable.php @@ -1,6 +1,6 @@ hasMany(PurchaseReturnPayment::class, 'purchase_return_id', 'id'); } - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT); + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = PurchaseReturn::max('id') + 1; + $model->reference = make_reference_id('PRRN', $number); + }); } public function getShippingAmountAttribute($value) { diff --git a/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php b/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php index 8281cd9b..6f55a119 100644 --- a/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php +++ b/Modules/PurchasesReturn/Http/Controllers/PurchaseReturnPaymentsController.php @@ -2,8 +2,7 @@ namespace Modules\PurchasesReturn\Http\Controllers; -use App\DataTables\PurchaseReturnPaymentsDataTable; -use Illuminate\Contracts\Support\Renderable; +use Modules\PurchasesReturn\DataTables\PurchaseReturnPaymentsDataTable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; diff --git a/Modules/PurchasesReturn/Http/Controllers/PurchasesReturnController.php b/Modules/PurchasesReturn/Http/Controllers/PurchasesReturnController.php index 3e58c3f6..e8eb175a 100644 --- a/Modules/PurchasesReturn/Http/Controllers/PurchasesReturnController.php +++ b/Modules/PurchasesReturn/Http/Controllers/PurchasesReturnController.php @@ -2,10 +2,8 @@ namespace Modules\PurchasesReturn\Http\Controllers; -use App\DataTables\PurchaseReturnsDataTable; +use Modules\PurchasesReturn\DataTables\PurchaseReturnsDataTable; use Gloudemans\Shoppingcart\Facades\Cart; -use Illuminate\Contracts\Support\Renderable; -use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; @@ -50,7 +48,6 @@ class PurchasesReturnController extends Controller $purchase_return = PurchaseReturn::create([ 'date' => $request->date, - 'reference' => $request->reference, 'supplier_id' => $request->supplier_id, 'supplier_name' => Supplier::findOrFail($request->supplier_id)->supplier_name, 'tax_percentage' => $request->tax_percentage, diff --git a/Modules/PurchasesReturn/Resources/views/edit.blade.php b/Modules/PurchasesReturn/Resources/views/edit.blade.php index d8f927cb..cc6398d9 100644 --- a/Modules/PurchasesReturn/Resources/views/edit.blade.php +++ b/Modules/PurchasesReturn/Resources/views/edit.blade.php @@ -30,7 +30,7 @@
- +
diff --git a/app/DataTables/SalePaymentsDataTable.php b/Modules/Sale/DataTables/SalePaymentsDataTable.php similarity index 98% rename from app/DataTables/SalePaymentsDataTable.php rename to Modules/Sale/DataTables/SalePaymentsDataTable.php index b2f8433f..12931070 100644 --- a/app/DataTables/SalePaymentsDataTable.php +++ b/Modules/Sale/DataTables/SalePaymentsDataTable.php @@ -1,6 +1,6 @@ hasMany(SalePayment::class, 'sale_id', 'id'); } - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT); + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = Sale::max('id') + 1; + $model->reference = make_reference_id('SL', $number); + }); } public function getShippingAmountAttribute($value) { diff --git a/Modules/Sale/Http/Controllers/SaleController.php b/Modules/Sale/Http/Controllers/SaleController.php index c22fdfa5..20aef6fd 100644 --- a/Modules/Sale/Http/Controllers/SaleController.php +++ b/Modules/Sale/Http/Controllers/SaleController.php @@ -2,10 +2,8 @@ namespace Modules\Sale\Http\Controllers; -use App\DataTables\SalesDataTable; +use Modules\Sale\DataTables\SalesDataTable; use Gloudemans\Shoppingcart\Facades\Cart; -use Illuminate\Contracts\Support\Renderable; -use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; @@ -50,7 +48,6 @@ class SaleController extends Controller $sale = Sale::create([ '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, diff --git a/Modules/Sale/Http/Controllers/SalePaymentsController.php b/Modules/Sale/Http/Controllers/SalePaymentsController.php index 91ad1d9b..a0fc034f 100644 --- a/Modules/Sale/Http/Controllers/SalePaymentsController.php +++ b/Modules/Sale/Http/Controllers/SalePaymentsController.php @@ -2,7 +2,7 @@ namespace Modules\Sale\Http\Controllers; -use App\DataTables\SalePaymentsDataTable; +use Modules\Sale\DataTables\SalePaymentsDataTable; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; diff --git a/Modules/Sale/Resources/views/edit.blade.php b/Modules/Sale/Resources/views/edit.blade.php index f8373f28..74f32135 100644 --- a/Modules/Sale/Resources/views/edit.blade.php +++ b/Modules/Sale/Resources/views/edit.blade.php @@ -30,7 +30,7 @@
- +
diff --git a/app/DataTables/SaleReturnPaymentsDataTable.php b/Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php similarity index 98% rename from app/DataTables/SaleReturnPaymentsDataTable.php rename to Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php index b71eb7ab..581144d9 100644 --- a/app/DataTables/SaleReturnPaymentsDataTable.php +++ b/Modules/SalesReturn/DataTables/SaleReturnPaymentsDataTable.php @@ -1,6 +1,6 @@ hasMany(SaleReturnPayment::class, 'sale_return_id', 'id'); } - public function getReferenceAttribute($value) { - return strtoupper($value) . '_' . str_pad($this->attributes['id'], 6, '0', STR_PAD_LEFT); + public static function boot() { + parent::boot(); + + static::creating(function ($model) { + $number = SaleReturn::max('id') + 1; + $model->reference = make_reference_id('SLRN', $number);; + }); } public function getShippingAmountAttribute($value) { diff --git a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php b/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php index 89a3ba17..95954cbe 100644 --- a/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php +++ b/Modules/SalesReturn/Http/Controllers/SaleReturnPaymentsController.php @@ -2,8 +2,7 @@ namespace Modules\SalesReturn\Http\Controllers; -use App\DataTables\SaleReturnPaymentsDataTable; -use Illuminate\Contracts\Support\Renderable; +use Modules\SalesReturn\DataTables\SaleReturnPaymentsDataTable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; diff --git a/Modules/SalesReturn/Http/Controllers/SalesReturnController.php b/Modules/SalesReturn/Http/Controllers/SalesReturnController.php index de5b6dcf..cccea4ee 100644 --- a/Modules/SalesReturn/Http/Controllers/SalesReturnController.php +++ b/Modules/SalesReturn/Http/Controllers/SalesReturnController.php @@ -2,10 +2,8 @@ namespace Modules\SalesReturn\Http\Controllers; -use App\DataTables\SaleReturnsDataTable; +use Modules\SalesReturn\DataTables\SaleReturnsDataTable; use Gloudemans\Shoppingcart\Facades\Cart; -use Illuminate\Contracts\Support\Renderable; -use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Gate; @@ -50,7 +48,6 @@ class SalesReturnController extends Controller $sale_return = SaleReturn::create([ '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, diff --git a/Modules/SalesReturn/Resources/views/edit.blade.php b/Modules/SalesReturn/Resources/views/edit.blade.php index afde797d7..658777a2 100644 --- a/Modules/SalesReturn/Resources/views/edit.blade.php +++ b/Modules/SalesReturn/Resources/views/edit.blade.php @@ -30,7 +30,7 @@
- +
diff --git a/app/DataTables/RolesDataTable.php b/Modules/User/DataTables/RolesDataTable.php similarity index 98% rename from app/DataTables/RolesDataTable.php rename to Modules/User/DataTables/RolesDataTable.php index 545a0557..4f8f4851 100644 --- a/app/DataTables/RolesDataTable.php +++ b/Modules/User/DataTables/RolesDataTable.php @@ -1,6 +1,6 @@
- diff --git a/Modules/User/Routes/web.php b/Modules/User/Routes/web.php index cd176486..99e7fac0 100644 --- a/Modules/User/Routes/web.php +++ b/Modules/User/Routes/web.php @@ -12,8 +12,10 @@ Route::group(['middleware' => 'auth'], function () { Route::get('/user/profile', 'ProfileController@edit')->name('profile.edit'); Route::patch('/user/profile', 'ProfileController@update')->name('profile.update'); Route::patch('/user/password', 'ProfileController@updatePassword')->name('profile.update.password'); + //Users Route::resource('users', 'UsersController')->except('show'); + //Roles Route::resource('roles', 'RolesController')->except('show'); diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index 6a142283..eeb96142 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -32,6 +32,14 @@ if (!function_exists('format_currency')) { } } +if (!function_exists('make_reference_id')) { + function make_reference_id($prefix, $number) { + $padded_text = $prefix . '-' . str_pad($number, 5, 0, STR_PAD_LEFT); + + return $padded_text; + } +} + if (!function_exists('array_merge_numeric_values')) { function array_merge_numeric_values() { $arrays = func_get_args(); diff --git a/app/Http/Livewire/SearchProduct.php b/app/Http/Livewire/SearchProduct.php index 54b54877..76281a6d 100644 --- a/app/Http/Livewire/SearchProduct.php +++ b/app/Http/Livewire/SearchProduct.php @@ -10,11 +10,13 @@ class SearchProduct extends Component { public $query; - public $searchResults; + public $search_results; + public $how_many; public function mount() { $this->query = ''; - $this->searchResults = Collection::empty(); + $this->how_many = 5; + $this->search_results = Collection::empty(); } public function render() { @@ -22,14 +24,20 @@ class SearchProduct extends Component } public function updatedQuery() { - $this->searchResults = Product::where('product_name', 'like', '%' . $this->query . '%') + $this->search_results = Product::where('product_name', 'like', '%' . $this->query . '%') ->orWhere('product_code', 'like', '%' . $this->query . '%') - ->take(6)->get(); + ->take($this->how_many)->get(); + } + + public function loadMore() { + $this->how_many += 5; + $this->updatedQuery(); } public function resetQuery() { $this->query = ''; - $this->searchResults = Collection::empty(); + $this->how_many = 5; + $this->search_results = Collection::empty(); } public function selectProduct($product) { diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index a9f10a63..44b54476 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -6,6 +6,8 @@ use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; +use Modules\Product\Entities\Product; +use Modules\Product\Observers\ProductObserver; class EventServiceProvider extends ServiceProvider { diff --git a/database/migrations/2021_08_15_161053_create_notifications_table.php b/database/migrations/2021_08_15_161053_create_notifications_table.php new file mode 100644 index 00000000..9797596d --- /dev/null +++ b/database/migrations/2021_08_15_161053_create_notifications_table.php @@ -0,0 +1,35 @@ +uuid('id')->primary(); + $table->string('type'); + $table->morphs('notifiable'); + $table->text('data'); + $table->timestamp('read_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('notifications'); + } +} diff --git a/resources/views/layouts/header.blade.php b/resources/views/layouts/header.blade.php index ce4ec3e7..05def684 100644 --- a/resources/views/layouts/header.blade.php +++ b/resources/views/layouts/header.blade.php @@ -19,13 +19,26 @@ diff --git a/resources/views/livewire/search-product.blade.php b/resources/views/livewire/search-product.blade.php index df6666eb..15b6d9d1 100644 --- a/resources/views/livewire/search-product.blade.php +++ b/resources/views/livewire/search-product.blade.php @@ -5,7 +5,7 @@
- +
@@ -14,7 +14,7 @@
-
+
@@ -26,17 +26,24 @@ @if(!empty($query))
- @if($searchResults->isNotEmpty()) + @if($search_results->isNotEmpty())