mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Merge branch 'fix-master-issues-v5' into 'master'
fix: profit loss report issue See merge request mohit.panjvani/crater-web!1325
This commit is contained in:
@ -7,7 +7,7 @@ use Crater\Http\Controllers\Controller;
|
||||
use Crater\Models\Company;
|
||||
use Crater\Models\CompanySetting;
|
||||
use Crater\Models\Expense;
|
||||
use Crater\Models\Invoice;
|
||||
use Crater\Models\Payment;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use PDF;
|
||||
@ -31,10 +31,9 @@ class ProfitLossReportController extends Controller
|
||||
|
||||
App::setLocale($locale);
|
||||
|
||||
$invoicesAmount = Invoice::whereCompanyId($company->id)
|
||||
$paymentsAmount = Payment::whereCompanyId($company->id)
|
||||
->applyFilters($request->only(['from_date', 'to_date']))
|
||||
->wherePaidStatus(Invoice::STATUS_PAID)
|
||||
->sum('base_total');
|
||||
->sum('base_amount');
|
||||
|
||||
$expenseCategories = Expense::with('category')
|
||||
->whereCompanyId($company->id)
|
||||
@ -68,7 +67,7 @@ class ProfitLossReportController extends Controller
|
||||
|
||||
view()->share([
|
||||
'company' => $company,
|
||||
'income' => $invoicesAmount,
|
||||
'income' => $paymentsAmount,
|
||||
'expenseCategories' => $expenseCategories,
|
||||
'totalExpense' => $totalAmount,
|
||||
'colorSettings' => $colorSettings,
|
||||
|
||||
@ -312,6 +312,12 @@ class Payment extends Model implements HasMedia
|
||||
$query->whereCustomer($filters->get('customer_id'));
|
||||
}
|
||||
|
||||
if ($filters->get('from_date') && $filters->get('to_date')) {
|
||||
$start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date'));
|
||||
$end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date'));
|
||||
$query->paymentsBetween($start, $end);
|
||||
}
|
||||
|
||||
if ($filters->get('orderByField') || $filters->get('orderBy')) {
|
||||
$field = $filters->get('orderByField') ? $filters->get('orderByField') : 'sequence_number';
|
||||
$orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'desc';
|
||||
@ -319,6 +325,14 @@ class Payment extends Model implements HasMedia
|
||||
}
|
||||
}
|
||||
|
||||
public function scopePaymentsBetween($query, $start, $end)
|
||||
{
|
||||
return $query->whereBetween(
|
||||
'payments.payment_date',
|
||||
[$start->format('Y-m-d'), $end->format('Y-m-d')]
|
||||
);
|
||||
}
|
||||
|
||||
public function scopeWhereOrder($query, $orderByField, $orderBy)
|
||||
{
|
||||
$query->orderBy($orderByField, $orderBy);
|
||||
|
||||
@ -38,7 +38,7 @@ class UpdateCraterVersion400 extends Migration
|
||||
// Update user's addresses
|
||||
if ($user->addresses()->exists()) {
|
||||
foreach ($user->addresses as $address) {
|
||||
$address->company_id = $user->companies()->first()->id;
|
||||
$address->company_id = $user->company_id;
|
||||
$address->user_id = null;
|
||||
$address->save();
|
||||
}
|
||||
|
||||
@ -15,24 +15,24 @@ class CreateBouncerTables extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
if (Schema::hasTable('roles')) {
|
||||
Schema::drop(Models::table('roles'));
|
||||
}
|
||||
|
||||
if (Schema::hasTable('permissions')) {
|
||||
Schema::drop(Models::table('permissions'));
|
||||
}
|
||||
|
||||
if (Schema::hasTable('model_has_permissions')) {
|
||||
Schema::drop(Models::table('model_has_permissions'));
|
||||
if (Schema::hasTable('role_has_permissions')) {
|
||||
Schema::drop('role_has_permissions');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('model_has_roles')) {
|
||||
Schema::drop(Models::table('model_has_roles'));
|
||||
Schema::drop('model_has_roles');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('role_has_permissions')) {
|
||||
Schema::drop(Models::table('role_has_permissions'));
|
||||
if (Schema::hasTable('model_has_permissions')) {
|
||||
Schema::drop('model_has_permissions');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('permissions')) {
|
||||
Schema::drop('permissions');
|
||||
}
|
||||
|
||||
if (Schema::hasTable('roles')) {
|
||||
Schema::drop('roles');
|
||||
}
|
||||
|
||||
Schema::create(Models::table('abilities'), function (Blueprint $table) {
|
||||
|
||||
@ -14,6 +14,7 @@ class AddCustomerIdToPaymentsTable extends Migration
|
||||
public function up()
|
||||
{
|
||||
Schema::table('payments', function (Blueprint $table) {
|
||||
$table->unsignedBigInteger('user_id')->nullable();
|
||||
$table->unsignedBigInteger('customer_id')->nullable();
|
||||
$table->foreign('customer_id')->references('id')->on('customers');
|
||||
});
|
||||
|
||||
@ -1,7 +1,13 @@
|
||||
<?php
|
||||
|
||||
use Crater\Models\Address;
|
||||
use Crater\Models\Customer;
|
||||
use Crater\Models\CustomField;
|
||||
use Crater\Models\CustomFieldValue;
|
||||
use Crater\Models\Estimate;
|
||||
use Crater\Models\Expense;
|
||||
use Crater\Models\Invoice;
|
||||
use Crater\Models\Payment;
|
||||
use Crater\Models\User;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
@ -26,68 +32,46 @@ class UpdateCustomerIdInAllTables extends Migration
|
||||
foreach ($users as $user) {
|
||||
$newCustomer = Customer::create($user->toArray());
|
||||
|
||||
$customFields = CustomField::where('model_type', 'User')->get();
|
||||
Address::where('user_id', $user->id)->update([
|
||||
'customer_id' => $newCustomer->id,
|
||||
'user_id' => null
|
||||
]);
|
||||
|
||||
if ($customFields) {
|
||||
$user->fields->map(function ($customFieldValue) use ($newCustomer) {
|
||||
$customFieldValue->custom_field_valuable_type = "Crater\Models\Customer";
|
||||
$customFieldValue->custom_field_valuable_id = $newCustomer->id;
|
||||
$customFieldValue->save();
|
||||
Expense::where('user_id', $user->id)->update([
|
||||
'customer_id' => $newCustomer->id,
|
||||
'user_id' => null
|
||||
]);
|
||||
|
||||
$customField = $customFieldValue->customField;
|
||||
$customField->model_type = "Customer";
|
||||
$customField->slug = Str::upper('CUSTOM_'.$customField->model_type.'_'.Str::slug($customField->label, '_'));
|
||||
$customField->save();
|
||||
});
|
||||
}
|
||||
Estimate::where('user_id', $user->id)->update([
|
||||
'customer_id' => $newCustomer->id,
|
||||
'user_id' => null
|
||||
]);
|
||||
|
||||
if ($user->addresses()->exists()) {
|
||||
$user->addresses->map(function ($address) use ($newCustomer) {
|
||||
if ($address) {
|
||||
$address->customer_id = $newCustomer->id;
|
||||
$address->user_id = null;
|
||||
$address->save();
|
||||
}
|
||||
});
|
||||
}
|
||||
Invoice::where('user_id', $user->id)->update([
|
||||
'customer_id' => $newCustomer->id,
|
||||
'user_id' => null
|
||||
]);
|
||||
|
||||
if ($user->expenses()->exists()) {
|
||||
$user->expenses->map(function ($expense) use ($newCustomer) {
|
||||
if ($expense) {
|
||||
$expense->customer_id = $newCustomer->id;
|
||||
$expense->user_id = null;
|
||||
$expense->save();
|
||||
}
|
||||
});
|
||||
}
|
||||
Payment::where('user_id', $user->id)->update([
|
||||
'customer_id' => $newCustomer->id,
|
||||
'user_id' => null
|
||||
]);
|
||||
|
||||
if ($user->estimates()->exists()) {
|
||||
$user->estimates->map(function ($estimate) use ($newCustomer) {
|
||||
if ($estimate) {
|
||||
$estimate->customer_id = $newCustomer->id;
|
||||
$estimate->user_id = null;
|
||||
$estimate->save();
|
||||
}
|
||||
});
|
||||
}
|
||||
CustomFieldValue::where('custom_field_valuable_id', $user->id)
|
||||
->where('custom_field_valuable_type', 'Crater\Models\User')
|
||||
->update([
|
||||
'custom_field_valuable_type' => 'Crater\Models\Customer',
|
||||
'custom_field_valuable_id' => $newCustomer->id
|
||||
]);
|
||||
}
|
||||
|
||||
if ($user->invoices()->exists()) {
|
||||
$user->invoices->map(function ($invoice) use ($newCustomer) {
|
||||
if ($invoice) {
|
||||
$invoice->customer_id = $newCustomer->id;
|
||||
$invoice->user_id = null;
|
||||
$invoice->save();
|
||||
}
|
||||
});
|
||||
}
|
||||
$customFields = CustomField::where('model_type', 'User')->get();
|
||||
|
||||
if ($user->payments()->exists()) {
|
||||
$user->payments->map(function ($payment) use ($newCustomer) {
|
||||
if ($payment) {
|
||||
$payment->customer_id = $newCustomer->id;
|
||||
$payment->save();
|
||||
}
|
||||
});
|
||||
if ($customFields) {
|
||||
foreach ($customFields as $customField) {
|
||||
$customField->model_type = "Customer";
|
||||
$customField->slug = Str::upper('CUSTOM_'.$customField->model_type.'_'.Str::slug($customField->label, '_'));
|
||||
$customField->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user