Merge branch 'expense-refactor' into 'master'

add customer in expense

See merge request mohit.panjvani/crater-web!172
This commit is contained in:
Mohit Panjwani
2020-03-20 07:12:39 +00:00
12 changed files with 107 additions and 13 deletions

View File

@@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use Crater\ExpenseCategory;
use Crater\User;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
@@ -16,6 +17,7 @@ class Expense extends Model implements HasMedia
'expense_category_id',
'amount',
'company_id',
'user_id',
'expense_date',
'notes',
'attachment_receipt'
@@ -32,6 +34,11 @@ class Expense extends Model implements HasMedia
return $this->belongsTo(ExpenseCategory::class, 'expense_category_id');
}
public function user()
{
return $this->belongsTo(User::class);
}
public function getFormattedExpenseDateAttribute($value)
{
$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);
}
public function scopeWhereUser($query, $user_id)
{
return $query->where('expenses.user_id', $user_id);
}
public function scopeApplyFilters($query, array $filters)
{
$filters = collect($filters);
@@ -89,6 +101,10 @@ class Expense extends Model implements HasMedia
$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')) {
$start = Carbon::createFromFormat('d/m/Y', $filters->get('from_date'));
$end = Carbon::createFromFormat('d/m/Y', $filters->get('to_date'));

View File

@@ -24,9 +24,11 @@ class ExpensesController extends Controller
$limit = $request->has('limit') ? $request->limit : 10;
$expenses = Expense::with('category')
->leftJoin('users', 'users.id', '=', 'expenses.user_id')
->join('expense_categories', 'expense_categories.id', '=', 'expenses.expense_category_id')
->applyFilters($request->only([
'expense_category_id',
'user_id',
'search',
'from_date',
'to_date',
@@ -34,11 +36,16 @@ class ExpensesController extends Controller
'orderBy'
]))
->whereCompany($request->header('company'))
->select('expenses.*', 'expense_categories.name')
->select('expenses.*', 'expense_categories.name', 'users.name as user_name')
->paginate($limit);
$customers = User::customer()
->whereCompany($request->header('company'))
->get();
return response()->json([
'expenses' => $expenses,
'customers' => $customers,
'currency' => Currency::findOrFail(
CompanySetting::getSetting('currency', $request->header('company'))
)
@@ -53,9 +60,13 @@ class ExpensesController extends Controller
public function create(Request $request)
{
$categories = ExpenseCategory::whereCompany($request->header('company'))->get();
$customers = User::customer()
->whereCompany($request->header('company'))
->get();
return response()->json([
'categories' => $categories
'categories' => $categories,
'customers' => $customers
]);
}
@@ -72,6 +83,7 @@ class ExpensesController extends Controller
$expense = new Expense();
$expense->notes = $request->notes;
$expense->expense_category_id = $request->expense_category_id;
$expense->user_id = $request->user_id;
$expense->amount = $request->amount;
$expense->company_id = $request->header('company');
$expense->expense_date = $expense_date;
@@ -107,7 +119,9 @@ class ExpensesController extends Controller
public function edit(Request $request,$id)
{
$categories = ExpenseCategory::whereCompany($request->header('company'))->get();
$customers = User::where('role', 'customer')->whereCompany($request->header('company'))->get();
$customers = User::customer()
->whereCompany($request->header('company'))
->get();
$expense = Expense::with('category')->where('id', $id)->first();
return response()->json([
@@ -132,6 +146,7 @@ class ExpensesController extends Controller
$expense->notes = $request->notes;
$expense->expense_category_id = $request->expense_category_id;
$expense->amount = $request->amount;
$expense->user_id = $request->user_id;
$expense->expense_date = $expense_date;
$expense->save();
@@ -205,7 +220,7 @@ class ExpensesController extends Controller
* Retrive details of an expense receipt from storage.
* @param int $id
* @return \Illuminate\Http\JsonResponse
*/
*/
public function showReceipt($id)
{
$expense = Expense::find($id);
@@ -239,7 +254,7 @@ class ExpensesController extends Controller
* @param int $id
* @param strig $hash
* @return \Symfony\Component\HttpFoundation\BinaryFileResponse | \Illuminate\Http\JsonResponse
*/
*/
public function downloadReceipt($id, $hash)
{
$company = Company::where('unique_hash', $hash)->first();

View File

@@ -9,6 +9,7 @@ use carbon\carbon;
use Crater\MemberLoan;
use Crater\Address;
use Crater\Payment;
use Crater\Expense;
use Crater\Company;
use Crater\Notifications\MailResetPasswordNotification;
use Spatie\MediaLibrary\HasMedia\HasMedia;
@@ -105,6 +106,11 @@ class User extends Authenticatable implements HasMedia
return $this->hasMany(Address::class);
}
public function expenses()
{
return $this->hasMany(Expense::class);
}
public function billingAddress()
{
return $this->hasOne(Address::class)->where('type', Address::BILLING_TYPE);