mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
add user to expense
This commit is contained in:
@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
use Spatie\MediaLibrary\HasMedia\HasMedia;
|
use Spatie\MediaLibrary\HasMedia\HasMedia;
|
||||||
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
|
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
|
||||||
use Crater\ExpenseCategory;
|
use Crater\ExpenseCategory;
|
||||||
|
use Crater\User;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
@ -16,6 +17,7 @@ class Expense extends Model implements HasMedia
|
|||||||
'expense_category_id',
|
'expense_category_id',
|
||||||
'amount',
|
'amount',
|
||||||
'company_id',
|
'company_id',
|
||||||
|
'user_id',
|
||||||
'expense_date',
|
'expense_date',
|
||||||
'notes',
|
'notes',
|
||||||
'attachment_receipt'
|
'attachment_receipt'
|
||||||
@ -32,6 +34,11 @@ class Expense extends Model implements HasMedia
|
|||||||
return $this->belongsTo(ExpenseCategory::class, 'expense_category_id');
|
return $this->belongsTo(ExpenseCategory::class, 'expense_category_id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class);
|
||||||
|
}
|
||||||
|
|
||||||
public function getFormattedExpenseDateAttribute($value)
|
public function getFormattedExpenseDateAttribute($value)
|
||||||
{
|
{
|
||||||
$dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id);
|
$dateFormat = CompanySetting::getSetting('carbon_date_format', $this->company_id);
|
||||||
@ -81,6 +88,11 @@ class Expense extends Model implements HasMedia
|
|||||||
return $query->where('expenses.expense_category_id', $categoryId);
|
return $query->where('expenses.expense_category_id', $categoryId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function scopeWhereUser($query, $user_id)
|
||||||
|
{
|
||||||
|
return $query->where('expenses.user_id', $user_id);
|
||||||
|
}
|
||||||
|
|
||||||
public function scopeApplyFilters($query, array $filters)
|
public function scopeApplyFilters($query, array $filters)
|
||||||
{
|
{
|
||||||
$filters = collect($filters);
|
$filters = collect($filters);
|
||||||
@ -89,6 +101,10 @@ class Expense extends Model implements HasMedia
|
|||||||
$query->whereCategory($filters->get('expense_category_id'));
|
$query->whereCategory($filters->get('expense_category_id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($filters->get('user_id')) {
|
||||||
|
$query->whereUser($filters->get('user_id'));
|
||||||
|
}
|
||||||
|
|
||||||
if ($filters->get('from_date') && $filters->get('to_date')) {
|
if ($filters->get('from_date') && $filters->get('to_date')) {
|
||||||
$start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date'));
|
$start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date'));
|
||||||
$end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date'));
|
$end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date'));
|
||||||
|
|||||||
@ -24,9 +24,11 @@ class ExpensesController extends Controller
|
|||||||
$limit = $request->has('limit') ? $request->limit : 10;
|
$limit = $request->has('limit') ? $request->limit : 10;
|
||||||
|
|
||||||
$expenses = Expense::with('category')
|
$expenses = Expense::with('category')
|
||||||
|
->join('users', 'users.id', '=', 'expenses.user_id')
|
||||||
->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id')
|
->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id')
|
||||||
->applyFilters($request->only([
|
->applyFilters($request->only([
|
||||||
'expense_category_id',
|
'expense_category_id',
|
||||||
|
'user_id',
|
||||||
'search',
|
'search',
|
||||||
'from_date',
|
'from_date',
|
||||||
'to_date',
|
'to_date',
|
||||||
@ -34,7 +36,7 @@ class ExpensesController extends Controller
|
|||||||
'orderBy'
|
'orderBy'
|
||||||
]))
|
]))
|
||||||
->whereCompany($request->header('company'))
|
->whereCompany($request->header('company'))
|
||||||
->select('expenses.*', 'expense_categories.name')
|
->select('expenses.*', 'expense_categories.name', 'users.name as user_name')
|
||||||
->paginate($limit);
|
->paginate($limit);
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
@ -76,6 +78,11 @@ class ExpensesController extends Controller
|
|||||||
$expense = new Expense();
|
$expense = new Expense();
|
||||||
$expense->notes = $request->notes;
|
$expense->notes = $request->notes;
|
||||||
$expense->expense_category_id = $request->expense_category_id;
|
$expense->expense_category_id = $request->expense_category_id;
|
||||||
|
|
||||||
|
if ($request->has('user_id') && $request->user_id != null) {
|
||||||
|
$expense->user_id = $request->user_id;
|
||||||
|
}
|
||||||
|
|
||||||
$expense->amount = $request->amount;
|
$expense->amount = $request->amount;
|
||||||
$expense->company_id = $request->header('company');
|
$expense->company_id = $request->header('company');
|
||||||
$expense->expense_date = $expense_date;
|
$expense->expense_date = $expense_date;
|
||||||
@ -138,6 +145,11 @@ class ExpensesController extends Controller
|
|||||||
$expense->notes = $request->notes;
|
$expense->notes = $request->notes;
|
||||||
$expense->expense_category_id = $request->expense_category_id;
|
$expense->expense_category_id = $request->expense_category_id;
|
||||||
$expense->amount = $request->amount;
|
$expense->amount = $request->amount;
|
||||||
|
|
||||||
|
if ($request->has('user_id') && $request->user_id != null) {
|
||||||
|
$expense->user_id = $request->user_id;
|
||||||
|
}
|
||||||
|
|
||||||
$expense->expense_date = $expense_date;
|
$expense->expense_date = $expense_date;
|
||||||
$expense->save();
|
$expense->save();
|
||||||
|
|
||||||
|
|||||||
@ -9,6 +9,7 @@ use carbon\carbon;
|
|||||||
use Crater\MemberLoan;
|
use Crater\MemberLoan;
|
||||||
use Crater\Address;
|
use Crater\Address;
|
||||||
use Crater\Payment;
|
use Crater\Payment;
|
||||||
|
use Crater\Expense;
|
||||||
use Crater\Company;
|
use Crater\Company;
|
||||||
use Crater\Notifications\MailResetPasswordNotification;
|
use Crater\Notifications\MailResetPasswordNotification;
|
||||||
use Spatie\MediaLibrary\HasMedia\HasMedia;
|
use Spatie\MediaLibrary\HasMedia\HasMedia;
|
||||||
@ -105,6 +106,11 @@ class User extends Authenticatable implements HasMedia
|
|||||||
return $this->hasMany(Address::class);
|
return $this->hasMany(Address::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function expenses()
|
||||||
|
{
|
||||||
|
return $this->hasMany(Expense::class);
|
||||||
|
}
|
||||||
|
|
||||||
public function billingAddress()
|
public function billingAddress()
|
||||||
{
|
{
|
||||||
return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE);
|
return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE);
|
||||||
|
|||||||
@ -23,6 +23,8 @@ class CreateExpensesTable extends Migration
|
|||||||
$table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade');
|
$table->foreign('expense_category_id')->references('id')->on('expense_categories')->onDelete('cascade');
|
||||||
$table->integer('company_id')->unsigned()->nullable();
|
$table->integer('company_id')->unsigned()->nullable();
|
||||||
$table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
|
$table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade');
|
||||||
|
$table->integer('user_id')->unsigned()->nullable();
|
||||||
|
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user