v5.0.0 update

This commit is contained in:
Mohit Panjwani
2021-11-30 18:58:19 +05:30
parent d332712c22
commit 082d5cacf2
1253 changed files with 88309 additions and 71741 deletions

View File

@@ -6,7 +6,6 @@ use Carbon\Carbon;
use Crater\Traits\HasCustomFieldsTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
@@ -23,6 +22,12 @@ class Expense extends Model implements HasMedia
'formattedExpenseDate',
'formattedCreatedAt',
'receipt',
'receiptMeta'
];
protected $casts = [
'notes' => 'string',
'exchange_rate' => 'float'
];
public function setExpenseDateAttribute($value)
@@ -37,9 +42,24 @@ class Expense extends Model implements HasMedia
return $this->belongsTo(ExpenseCategory::class, 'expense_category_id');
}
public function user()
public function customer()
{
return $this->belongsTo(User::class, 'user_id');
return $this->belongsTo(Customer::class, 'customer_id');
}
public function company()
{
return $this->belongsTo(Company::class, 'company_id');
}
public function paymentMethod()
{
return $this->belongsTo(PaymentMethod::class);
}
public function currency()
{
return $this->belongsTo(Currency::class, 'currency_id');
}
public function creator()
@@ -61,9 +81,24 @@ class Expense extends Model implements HasMedia
return Carbon::parse($this->created_at)->format($dateFormat);
}
public function getReceiptUrlAttribute($value)
{
$media = $this->getFirstMedia('receipts');
if ($media) {
return [
'url' => $media->getFullUrl(),
'type' => $media->type
];
}
return null;
}
public function getReceiptAttribute($value)
{
$media = $this->getFirstMedia('receipts');
if ($media) {
return $media->getPath();
}
@@ -71,6 +106,17 @@ class Expense extends Model implements HasMedia
return null;
}
public function getReceiptMetaAttribute($value)
{
$media = $this->getFirstMedia('receipts');
if ($media) {
return $media;
}
return null;
}
public function scopeExpensesBetween($query, $start, $end)
{
return $query->whereBetween(
@@ -98,9 +144,9 @@ class Expense extends Model implements HasMedia
return $query->where('expenses.expense_category_id', $categoryId);
}
public function scopeWhereUser($query, $user_id)
public function scopeWhereUser($query, $customer_id)
{
return $query->where('expenses.user_id', $user_id);
return $query->where('expenses.customer_id', $customer_id);
}
public function scopeApplyFilters($query, array $filters)
@@ -111,8 +157,8 @@ 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('customer_id')) {
$query->whereUser($filters->get('customer_id'));
}
if ($filters->get('expense_id')) {
@@ -156,15 +202,20 @@ class Expense extends Model implements HasMedia
$query->orderBy($orderByField, $orderBy);
}
public function scopeWhereCompany($query, $company_id)
public function scopeWhereCompany($query)
{
$query->where('expenses.company_id', $company_id);
$query->where('expenses.company_id', request()->header('company'));
}
public function scopeWhereCompanyId($query, $company)
{
$query->where('expenses.company_id', $company);
}
public function scopePaginateData($query, $limit)
{
if ($limit == 'all') {
return collect(['data' => $query->get()]);
return $query->get();
}
return $query->paginate($limit);
@@ -183,20 +234,20 @@ class Expense extends Model implements HasMedia
public static function createExpense($request)
{
$data = $request->validated();
$data['creator_id'] = Auth::id();
$data['company_id'] = $request->header('company');
$expense = self::create($request->getExpensePayload());
$expense = self::create($data);
$company_currency = CompanySetting::getSetting('currency', $request->header('company'));
if ($request->hasFile('attachment_receipt')) {
$expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local');
if ((string)$expense['currency_id'] !== $company_currency) {
ExchangeRateLog::addExchangeRateLog($expense);
}
$customFields = json_decode($request->customFields, true);
if ($request->hasFile('attachment_receipt')) {
$expense->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts');
}
if ($customFields) {
$expense->addCustomFields($customFields);
if ($request->customFields && empty($request->customFields)) {
$expense->addCustomFields($request->customFields);
}
return $expense;
@@ -204,17 +255,23 @@ class Expense extends Model implements HasMedia
public function updateExpense($request)
{
$this->update($request->validated());
$data = $request->getExpensePayload();
$this->update($data);
$company_currency = CompanySetting::getSetting('currency', $request->header('company'));
if ((string)$data['currency_id'] !== $company_currency) {
ExchangeRateLog::addExchangeRateLog($this);
}
if ($request->hasFile('attachment_receipt')) {
$this->clearMediaCollection('receipts');
$this->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts', 'local');
$this->addMediaFromRequest('attachment_receipt')->toMediaCollection('receipts');
}
$customFields = json_decode($request->customFields, true);
if ($customFields) {
$this->updateCustomFields($customFields);
if ($request->customFields && empty($request->customFields)) {
$this->updateCustomFields($request->customFields);
}
return true;