mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 17:27:33 -04:00 
			
		
		
		
	Fixes for DB:raw()
This commit is contained in:
		
							parent
							
								
									62853c1dcb
								
							
						
					
					
						commit
						f7f4804e34
					
				| @ -549,7 +549,7 @@ class CheckData extends Command | |||||||
| 
 | 
 | ||||||
|     private function clientPaidToDateQuery() |     private function clientPaidToDateQuery() | ||||||
|     { |     { | ||||||
|         $results = \DB::select(\DB::raw(" |         $results = \DB::select(" | ||||||
|          SELECT  |          SELECT  | ||||||
|          clients.id as client_id,  |          clients.id as client_id,  | ||||||
|          clients.paid_to_date as client_paid_to_date, |          clients.paid_to_date as client_paid_to_date, | ||||||
| @ -564,14 +564,14 @@ class CheckData extends Command | |||||||
|          GROUP BY clients.id |          GROUP BY clients.id | ||||||
|          HAVING payments_applied != client_paid_to_date |          HAVING payments_applied != client_paid_to_date | ||||||
|          ORDER BY clients.id; |          ORDER BY clients.id; | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()));
 |         ");
 | ||||||
|      |      | ||||||
|         return $results; |         return $results; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function clientCreditPaymentables($client) |     private function clientCreditPaymentables($client) | ||||||
|     { |     { | ||||||
|         $results = \DB::select(\DB::raw(" |         $results = \DB::select(" | ||||||
|         SELECT  |         SELECT  | ||||||
|         SUM(paymentables.amount - paymentables.refunded) as credit_payment |         SUM(paymentables.amount - paymentables.refunded) as credit_payment | ||||||
|         FROM payments |         FROM payments | ||||||
| @ -583,7 +583,7 @@ class CheckData extends Command | |||||||
|         AND paymentables.amount > 0 |         AND paymentables.amount > 0 | ||||||
|         AND payments.is_deleted = 0 |         AND payments.is_deleted = 0 | ||||||
|         AND payments.client_id = ?; |         AND payments.client_id = ?; | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [App\Models\Credit::class, $client->id]);
 |         ", [App\Models\Credit::class, $client->id]);
 | ||||||
|      |      | ||||||
|         return $results; |         return $results; | ||||||
|     } |     } | ||||||
| @ -619,110 +619,11 @@ class CheckData extends Command | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $this->logMessage("{$this->wrong_paid_to_dates} clients with incorrect paid to dates"); |         $this->logMessage("{$this->wrong_paid_to_dates} clients with incorrect paid to dates"); | ||||||
|     } |    } | ||||||
| 
 |  | ||||||
|     private function checkPaidToDates() |  | ||||||
|     { |  | ||||||
|         $this->wrong_paid_to_dates = 0; |  | ||||||
|         $credit_total_applied = 0; |  | ||||||
| 
 |  | ||||||
|         $clients = DB::table('clients') |  | ||||||
|                     ->leftJoin('payments', function ($join) { |  | ||||||
|                         $join->on('payments.client_id', '=', 'clients.id') |  | ||||||
|                             ->where('payments.is_deleted', 0) |  | ||||||
|                             ->whereIn('payments.status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]); |  | ||||||
|                     }) |  | ||||||
|                     ->where('clients.is_deleted', 0) |  | ||||||
|                     ->where('clients.updated_at', '>', now()->subDays(2)) |  | ||||||
|                     ->groupBy('clients.id') |  | ||||||
|                     ->havingRaw('clients.paid_to_date != sum(coalesce(payments.amount - payments.refunded, 0))') |  | ||||||
|                     ->get(['clients.id', 'clients.paid_to_date', DB::raw('sum(coalesce(payments.amount - payments.refunded, 0)) as amount')->getValue(DB::connection()->getQueryGrammar())]); |  | ||||||
| 
 |  | ||||||
|         /* Due to accounting differences we need to perform a second loop here to ensure there actually is an issue */ |  | ||||||
|         $clients->each(function ($client_record) use ($credit_total_applied) { |  | ||||||
|             $client = Client::withTrashed()->find($client_record->id); |  | ||||||
| 
 |  | ||||||
|             $total_invoice_payments = 0; |  | ||||||
| 
 |  | ||||||
|             foreach ($client->invoices()->where('is_deleted', false)->where('status_id', '>', 1)->get() as $invoice) { |  | ||||||
|                 $total_invoice_payments += $invoice->payments() |  | ||||||
|                                                     ->where('is_deleted', false)->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) |  | ||||||
|                                                     ->selectRaw('sum(paymentables.amount - paymentables.refunded) as p') |  | ||||||
|                                                     ->pluck('p') |  | ||||||
|                                                     ->first(); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             //commented IN 27/06/2021 - sums ALL client payments AND the unapplied amounts to match the client paid to date
 |  | ||||||
|             $p = Payment::where('client_id', $client->id) |  | ||||||
|             ->where('is_deleted', 0) |  | ||||||
|             ->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) |  | ||||||
|             // ->sum(DB::Raw('amount - applied')->getValue(DB::connection()->getQueryGrammar()));
 |  | ||||||
|             ->selectRaw('SUM(payments.amount - payments.applied) as amount')->first()->amount ?? 0; |  | ||||||
|             $total_invoice_payments += $p; |  | ||||||
| 
 |  | ||||||
|             // 10/02/21
 |  | ||||||
|             foreach ($client->payments as $payment) { |  | ||||||
|                 $credit_total_applied += $payment->paymentables() |  | ||||||
|                                                 ->where('paymentable_type', App\Models\Credit::class) |  | ||||||
|                                                 ->selectRaw('sum(paymentables.amount - paymentables.refunded) as p') |  | ||||||
|                                                 ->pluck('p') |  | ||||||
|                                                 ->first(); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if ($credit_total_applied < 0) { |  | ||||||
|                 $total_invoice_payments += $credit_total_applied; |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             if (round($total_invoice_payments, 2) != round($client->paid_to_date, 2)) { |  | ||||||
|                 $this->wrong_paid_to_dates++; |  | ||||||
| 
 |  | ||||||
|                 $this->logMessage($client->present()->name().' id = # '.$client->id." - Paid to date does not match Client Paid To Date = {$client->paid_to_date} - Invoice Payments = {$total_invoice_payments}"); |  | ||||||
| 
 |  | ||||||
|                 $this->isValid = false; |  | ||||||
| 
 |  | ||||||
|                 if ($this->option('paid_to_date')) { |  | ||||||
|                     $this->logMessage("# {$client->id} " . $client->present()->name().' - '.$client->number." Fixing {$client->paid_to_date} to {$total_invoice_payments}"); |  | ||||||
|                     $client->paid_to_date = $total_invoice_payments; |  | ||||||
|                     $client->save(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         $this->logMessage("{$this->wrong_paid_to_dates} clients with incorrect paid to dates"); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     private function checkInvoicePayments() |  | ||||||
|     { |  | ||||||
|         $this->wrong_balances = 0; |  | ||||||
| 
 |  | ||||||
|         Client::query()->cursor()->where('is_deleted', 0)->where('clients.updated_at', '>', now()->subDays(2))->each(function ($client) { |  | ||||||
|             $client->invoices->where('is_deleted', false)->whereIn('status_id', '!=', Invoice::STATUS_DRAFT)->each(function ($invoice) use ($client) { |  | ||||||
|                 $total_paid = $invoice->payments() |  | ||||||
|                                     ->where('is_deleted', false)->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PENDING, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) |  | ||||||
|                                     ->selectRaw('sum(paymentables.amount - paymentables.refunded) as p') |  | ||||||
|                                     ->pluck('p') |  | ||||||
|                                     ->first(); |  | ||||||
| 
 |  | ||||||
|                 $total_credit = $invoice->credits()->get()->sum('amount'); |  | ||||||
| 
 |  | ||||||
|                 $calculated_paid_amount = $invoice->amount - $invoice->balance - $total_credit; |  | ||||||
| 
 |  | ||||||
|                 if ((string)$total_paid != (string)($invoice->amount - $invoice->balance - $total_credit)) { |  | ||||||
|                     $this->wrong_balances++; |  | ||||||
| 
 |  | ||||||
|                     $this->logMessage($client->present()->name().' - '.$client->id." - Total Paid = {$total_paid} != Calculated Total = {$calculated_paid_amount}"); |  | ||||||
| 
 |  | ||||||
|                     $this->isValid = false; |  | ||||||
|                 } |  | ||||||
|             }); |  | ||||||
|         }); |  | ||||||
| 
 |  | ||||||
|         $this->logMessage("{$this->wrong_balances} clients with incorrect invoice balances"); |  | ||||||
|     } |  | ||||||
| 
 | 
 | ||||||
|     private function clientBalanceQuery() |     private function clientBalanceQuery() | ||||||
|     { |     { | ||||||
|         $results = \DB::select(\DB::raw(" |         $results = \DB::select(" | ||||||
|         SELECT          |         SELECT          | ||||||
|         SUM(invoices.balance) as invoice_balance,  |         SUM(invoices.balance) as invoice_balance,  | ||||||
|         clients.id as client_id,  |         clients.id as client_id,  | ||||||
| @ -736,7 +637,7 @@ class CheckData extends Command | |||||||
|         GROUP BY clients.id |         GROUP BY clients.id | ||||||
|         HAVING invoice_balance != clients.balance |         HAVING invoice_balance != clients.balance | ||||||
|         ORDER BY clients.id; |         ORDER BY clients.id; | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()));
 |         ");
 | ||||||
|      |      | ||||||
|         return $results; |         return $results; | ||||||
|     } |     } | ||||||
| @ -813,7 +714,7 @@ class CheckData extends Command | |||||||
| 
 | 
 | ||||||
|     private function invoiceBalanceQuery() |     private function invoiceBalanceQuery() | ||||||
|     { |     { | ||||||
|         $results = \DB::select(\DB::raw(" |         $results = \DB::select(" | ||||||
|         SELECT  |         SELECT  | ||||||
|         clients.id, |         clients.id, | ||||||
|         clients.balance, |         clients.balance, | ||||||
| @ -827,7 +728,7 @@ class CheckData extends Command | |||||||
|         GROUP BY clients.id |         GROUP BY clients.id | ||||||
|         HAVING(invoices_balance != clients.balance) |         HAVING(invoices_balance != clients.balance) | ||||||
|         ORDER BY clients.id; |         ORDER BY clients.id; | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()));
 |         ");
 | ||||||
|      |      | ||||||
|         return $results; |         return $results; | ||||||
|     } |     } | ||||||
| @ -961,7 +862,7 @@ class CheckData extends Command | |||||||
|                 } |                 } | ||||||
|                 $records = DB::table($table) |                 $records = DB::table($table) | ||||||
|                                 ->join($tableName, "{$tableName}.id", '=', "{$table}.{$field}_id") |                                 ->join($tableName, "{$tableName}.id", '=', "{$table}.{$field}_id") | ||||||
|                                 ->where("{$table}.{$company_id}", '!=', DB::raw("{$tableName}.company_id")) |                                 ->where("{$table}.{$company_id}", '!=', "{$tableName}.company_id") | ||||||
|                                 ->get(["{$table}.id"]); |                                 ->get(["{$table}.id"]); | ||||||
| 
 | 
 | ||||||
|                 if ($records->count()) { |                 if ($records->count()) { | ||||||
| @ -971,11 +872,6 @@ class CheckData extends Command | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // foreach(User::cursor() as $user) {
 |  | ||||||
| 
 |  | ||||||
|         //     $records = Company::where('account_id',)
 |  | ||||||
| 
 |  | ||||||
|         // }
 |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function pluralizeEntityType($type) |     public function pluralizeEntityType($type) | ||||||
|  | |||||||
| @ -746,12 +746,7 @@ class BaseImport | |||||||
|         if($user) |         if($user) | ||||||
|             return $user->id; |             return $user->id; | ||||||
| 
 | 
 | ||||||
|         $user = User::where('account_id', $this->company->account->id) |         $user = User::whereRaw("account_id = ? AND CONCAT_WS(' ', first_name, last_name) like ?", [$this->company->account_id, '%'.$user_hash.'%']) | ||||||
|             ->where( |  | ||||||
|                 \DB::raw('CONCAT_WS(" ", first_name, last_name)')->getValue(\DB::connection()->getQueryGrammar()), |  | ||||||
|                 'like', |  | ||||||
|                 '%'.$user_hash.'%' |  | ||||||
|             ) |  | ||||||
|             ->first(); |             ->first(); | ||||||
| 
 | 
 | ||||||
|         if ($user) { |         if ($user) { | ||||||
|  | |||||||
| @ -248,19 +248,6 @@ class CheckCompanyData implements ShouldQueue | |||||||
|             $this->is_valid = false; |             $this->is_valid = false; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // if ($this->option('fix') == 'true') {
 |  | ||||||
|         //     foreach ($clients as $client) {
 |  | ||||||
|         //         $contact = new ClientContact();
 |  | ||||||
|         //         $contact->company_id = $client->company_id;
 |  | ||||||
|         //         $contact->user_id = $client->user_id;
 |  | ||||||
|         //         $contact->client_id = $client->id;
 |  | ||||||
|         //         $contact->is_primary = true;
 |  | ||||||
|         //         $contact->send_invoice = true;
 |  | ||||||
|         //         $contact->contact_key = str_random(config('ninja.key_length'));
 |  | ||||||
|         //         $contact->save();
 |  | ||||||
|         //     }
 |  | ||||||
|         // }
 |  | ||||||
| 
 |  | ||||||
|         // check for more than one primary contact
 |         // check for more than one primary contact
 | ||||||
|         $clients = DB::table('clients') |         $clients = DB::table('clients') | ||||||
|                     ->where('clients.company_id', $this->company->id) |                     ->where('clients.company_id', $this->company->id) | ||||||
| @ -272,11 +259,7 @@ class CheckCompanyData implements ShouldQueue | |||||||
|                     ->groupBy('clients.id') |                     ->groupBy('clients.id') | ||||||
|                     ->havingRaw('count(client_contacts.id) != 1'); |                     ->havingRaw('count(client_contacts.id) != 1'); | ||||||
| 
 | 
 | ||||||
|         // if ($this->option('client_id')) {
 |         $clients = $clients->get(['clients.id', DB::raw('count(client_contacts.id)')]); | ||||||
|         //     $clients->where('clients.id', '=', $this->option('client_id'));
 |  | ||||||
|         // }
 |  | ||||||
| 
 |  | ||||||
|         $clients = $clients->get(['clients.id', DB::raw('count(client_contacts.id)')->getValue(DB::connection()->getQueryGrammar())]); |  | ||||||
|         $this->company_data[] = $clients->count().' clients without a single primary contact'; |         $this->company_data[] = $clients->count().' clients without a single primary contact'; | ||||||
| 
 | 
 | ||||||
|         if ($clients->count() > 0) { |         if ($clients->count() > 0) { | ||||||
| @ -315,7 +298,7 @@ class CheckCompanyData implements ShouldQueue | |||||||
|                 } |                 } | ||||||
|                 $records = DB::table($table) |                 $records = DB::table($table) | ||||||
|                                 ->join($tableName, "{$tableName}.id", '=', "{$table}.{$field}_id") |                                 ->join($tableName, "{$tableName}.id", '=', "{$table}.{$field}_id") | ||||||
|                                 ->where("{$table}.{$company_id}", '!=', DB::raw("{$tableName}.company_id")->getValue(DB::connection()->getQueryGrammar())) |                                 ->where("{$table}.{$company_id}", '!=', "{$tableName}.company_id") | ||||||
|                                 ->get(["{$table}.id"]); |                                 ->get(["{$table}.id"]); | ||||||
| 
 | 
 | ||||||
|                 if ($records->count()) { |                 if ($records->count()) { | ||||||
|  | |||||||
| @ -302,7 +302,7 @@ class Import implements ShouldQueue | |||||||
| 
 | 
 | ||||||
|             // 10/02/21
 |             // 10/02/21
 | ||||||
|             foreach ($client->payments as $payment) { |             foreach ($client->payments as $payment) { | ||||||
|                 $credit_total_applied += $payment->paymentables()->where('paymentable_type', \App\Models\Credit::class)->get()->sum(\DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                 $credit_total_applied += $payment->paymentables()->where('paymentable_type', \App\Models\Credit::class)->get()->sum('amount'); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if ($credit_total_applied < 0) { |             if ($credit_total_applied < 0) { | ||||||
|  | |||||||
| @ -25,7 +25,7 @@ trait ChartQueries | |||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND expenses.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND expenses.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT sum(expenses.amount) as amount, |             SELECT sum(expenses.amount) as amount, | ||||||
|             IFNULL(expenses.currency_id, :company_currency) as currency_id |             IFNULL(expenses.currency_id, :company_currency) as currency_id | ||||||
|             FROM expenses |             FROM expenses | ||||||
| @ -34,7 +34,7 @@ trait ChartQueries | |||||||
|             AND (expenses.date BETWEEN :start_date AND :end_date) |             AND (expenses.date BETWEEN :start_date AND :end_date) | ||||||
|             {$user_filter} |             {$user_filter} | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getExpenseChartQuery($start_date, $end_date, $currency_id) |     public function getExpenseChartQuery($start_date, $end_date, $currency_id) | ||||||
| @ -42,7 +42,7 @@ trait ChartQueries | |||||||
| 
 | 
 | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND expenses.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND expenses.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(expenses.amount) as total, |             sum(expenses.amount) as total, | ||||||
|             expenses.date, |             expenses.date, | ||||||
| @ -54,7 +54,7 @@ trait ChartQueries | |||||||
|             {$user_filter} |             {$user_filter} | ||||||
|             GROUP BY expenses.date |             GROUP BY expenses.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
| @ -71,7 +71,7 @@ trait ChartQueries | |||||||
|          |          | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT sum(payments.amount) as amount, |             SELECT sum(payments.amount) as amount, | ||||||
|             IFNULL(payments.currency_id, :company_currency) as currency_id |             IFNULL(payments.currency_id, :company_currency) as currency_id | ||||||
|             FROM payments |             FROM payments | ||||||
| @ -80,7 +80,7 @@ trait ChartQueries | |||||||
|             AND payments.company_id = :company_id |             AND payments.company_id = :company_id | ||||||
|             AND (payments.date BETWEEN :start_date AND :end_date) |             AND (payments.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
|             'start_date' => $start_date, |             'start_date' => $start_date, | ||||||
| @ -93,7 +93,7 @@ trait ChartQueries | |||||||
| 
 | 
 | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(payments.amount - payments.refunded) as total, |             sum(payments.amount - payments.refunded) as total, | ||||||
|             payments.date, |             payments.date, | ||||||
| @ -106,7 +106,7 @@ trait ChartQueries | |||||||
|             AND (payments.date BETWEEN :start_date AND :end_date) |             AND (payments.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY payments.date |             GROUP BY payments.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
| @ -123,7 +123,7 @@ trait ChartQueries | |||||||
|          |          | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.balance) as amount, |             sum(invoices.balance) as amount, | ||||||
|             COUNT(*) as outstanding_count,  |             COUNT(*) as outstanding_count,  | ||||||
| @ -139,14 +139,14 @@ trait ChartQueries | |||||||
|             AND invoices.balance > 0 |             AND invoices.balance > 0 | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getRevenueQueryX($start_date, $end_date) |     public function getRevenueQueryX($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.paid_to_date) as paid_to_date, |             sum(invoices.paid_to_date) as paid_to_date, | ||||||
|             IFNULL(CAST(JSON_UNQUOTE(JSON_EXTRACT( clients.settings, '$.currency_id' )) AS SIGNED), :company_currency) AS currency_id |             IFNULL(CAST(JSON_UNQUOTE(JSON_EXTRACT( clients.settings, '$.currency_id' )) AS SIGNED), :company_currency) AS currency_id | ||||||
| @ -161,14 +161,14 @@ trait ChartQueries | |||||||
|             AND invoices.status_id IN (3,4) |             AND invoices.status_id IN (3,4) | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getRevenueQuery($start_date, $end_date) |     public function getRevenueQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND payments.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select((" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(payments.amount - payments.refunded) as paid_to_date, |             sum(payments.amount - payments.refunded) as paid_to_date, | ||||||
|             payments.currency_id AS currency_id |             payments.currency_id AS currency_id | ||||||
| @ -179,14 +179,14 @@ trait ChartQueries | |||||||
|             AND payments.status_id IN (1,4,5,6) |             AND payments.status_id IN (1,4,5,6) | ||||||
|             AND (payments.date BETWEEN :start_date AND :end_date) |             AND (payments.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY payments.currency_id |             GROUP BY payments.currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getInvoicesQuery($start_date, $end_date) |     public function getInvoicesQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.amount) as invoiced_amount, |             sum(invoices.amount) as invoiced_amount, | ||||||
|             IFNULL(CAST(JSON_UNQUOTE(JSON_EXTRACT( clients.settings, '$.currency_id' )) AS SIGNED), :company_currency) AS currency_id |             IFNULL(CAST(JSON_UNQUOTE(JSON_EXTRACT( clients.settings, '$.currency_id' )) AS SIGNED), :company_currency) AS currency_id | ||||||
| @ -201,14 +201,14 @@ trait ChartQueries | |||||||
|             AND invoices.is_deleted = 0 |             AND invoices.is_deleted = 0 | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getOutstandingChartQuery($start_date, $end_date, $currency_id) |     public function getOutstandingChartQuery($start_date, $end_date, $currency_id) | ||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.balance) as total, |             sum(invoices.balance) as total, | ||||||
|             invoices.date, |             invoices.date, | ||||||
| @ -224,7 +224,7 @@ trait ChartQueries | |||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY invoices.date |             GROUP BY invoices.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => (int) $this->company->settings->currency_id, |             'company_currency' => (int) $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
| @ -238,7 +238,7 @@ trait ChartQueries | |||||||
|     { |     { | ||||||
|         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; |         $user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id; | ||||||
| 
 | 
 | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.amount) as total, |             sum(invoices.amount) as total, | ||||||
|             invoices.date, |             invoices.date, | ||||||
| @ -254,7 +254,7 @@ trait ChartQueries | |||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY invoices.date |             GROUP BY invoices.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => (int) $this->company->settings->currency_id, |             'company_currency' => (int) $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
|  | |||||||
| @ -24,7 +24,7 @@ trait ChartQueriesLegacy | |||||||
|     public function getExpenseQuery($start_date, $end_date) |     public function getExpenseQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|          |          | ||||||
|         return DB::select(DB::raw(' |         return DB::select(' | ||||||
|             SELECT sum(expenses.amount) as amount, |             SELECT sum(expenses.amount) as amount, | ||||||
|             IFNULL(expenses.currency_id, :company_currency) as currency_id |             IFNULL(expenses.currency_id, :company_currency) as currency_id | ||||||
|             FROM expenses |             FROM expenses | ||||||
| @ -32,12 +32,12 @@ trait ChartQueriesLegacy | |||||||
|             AND expenses.company_id = :company_id |             AND expenses.company_id = :company_id | ||||||
|             AND (expenses.date BETWEEN :start_date AND :end_date) |             AND (expenses.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ')->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]); |         ', ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getExpenseChartQuery($start_date, $end_date, $currency_id) |     public function getExpenseChartQuery($start_date, $end_date, $currency_id) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(' |         return DB::select(' | ||||||
|             SELECT |             SELECT | ||||||
|             sum(expenses.amount) as total, |             sum(expenses.amount) as total, | ||||||
|             expenses.date, |             expenses.date, | ||||||
| @ -48,7 +48,7 @@ trait ChartQueriesLegacy | |||||||
|             AND expenses.is_deleted = 0 |             AND expenses.is_deleted = 0 | ||||||
|             GROUP BY expenses.date |             GROUP BY expenses.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ')->getValue(DB::connection()->getQueryGrammar()), [ |         ', [ | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
| @ -62,7 +62,7 @@ trait ChartQueriesLegacy | |||||||
|      */ |      */ | ||||||
|     public function getPaymentQuery($start_date, $end_date) |     public function getPaymentQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(' |         return DB::select(' | ||||||
|             SELECT sum(payments.amount) as amount, |             SELECT sum(payments.amount) as amount, | ||||||
|             IFNULL(payments.currency_id, :company_currency) as currency_id |             IFNULL(payments.currency_id, :company_currency) as currency_id | ||||||
|             FROM payments |             FROM payments | ||||||
| @ -70,7 +70,7 @@ trait ChartQueriesLegacy | |||||||
|             AND payments.company_id = :company_id |             AND payments.company_id = :company_id | ||||||
|             AND (payments.date BETWEEN :start_date AND :end_date) |             AND (payments.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ')->getValue(DB::connection()->getQueryGrammar()), [ |         ', [ | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
|             'start_date' => $start_date, |             'start_date' => $start_date, | ||||||
| @ -80,7 +80,7 @@ trait ChartQueriesLegacy | |||||||
| 
 | 
 | ||||||
|     public function getPaymentChartQuery($start_date, $end_date, $currency_id) |     public function getPaymentChartQuery($start_date, $end_date, $currency_id) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(' |         return DB::select(' | ||||||
|             SELECT |             SELECT | ||||||
|             sum(payments.amount - payments.refunded) as total, |             sum(payments.amount - payments.refunded) as total, | ||||||
|             payments.date, |             payments.date, | ||||||
| @ -92,7 +92,7 @@ trait ChartQueriesLegacy | |||||||
|             AND payments.is_deleted = 0 |             AND payments.is_deleted = 0 | ||||||
|             GROUP BY payments.date |             GROUP BY payments.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ')->getValue(DB::connection()->getQueryGrammar()), [ |         ', [ | ||||||
|             'company_currency' => $this->company->settings->currency_id, |             'company_currency' => $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
| @ -106,7 +106,7 @@ trait ChartQueriesLegacy | |||||||
|      */ |      */ | ||||||
|     public function getOutstandingQuery($start_date, $end_date) |     public function getOutstandingQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.balance) as amount, |             sum(invoices.balance) as amount, | ||||||
|             IFNULL(JSON_EXTRACT( settings, '$.currency_id' ), :company_currency) AS currency_id |             IFNULL(JSON_EXTRACT( settings, '$.currency_id' ), :company_currency) AS currency_id | ||||||
| @ -120,12 +120,12 @@ trait ChartQueriesLegacy | |||||||
|             AND invoices.is_deleted = 0 |             AND invoices.is_deleted = 0 | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public function getRevenueQuery($start_date, $end_date) |     public function getRevenueQuery($start_date, $end_date) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.paid_to_date) as paid_to_date, |             sum(invoices.paid_to_date) as paid_to_date, | ||||||
|             IFNULL(JSON_EXTRACT( settings, '$.currency_id' ), :company_currency) AS currency_id |             IFNULL(JSON_EXTRACT( settings, '$.currency_id' ), :company_currency) AS currency_id | ||||||
| @ -144,7 +144,7 @@ trait ChartQueriesLegacy | |||||||
| 
 | 
 | ||||||
|     public function getInvoiceChartQuery($start_date, $end_date, $currency_id) |     public function getInvoiceChartQuery($start_date, $end_date, $currency_id) | ||||||
|     { |     { | ||||||
|         return DB::select(DB::raw(" |         return DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.amount) as total, |             sum(invoices.amount) as total, | ||||||
|             invoices.date, |             invoices.date, | ||||||
| @ -159,7 +159,7 @@ trait ChartQueriesLegacy | |||||||
|             AND invoices.is_deleted = 0 |             AND invoices.is_deleted = 0 | ||||||
|             GROUP BY invoices.date |             GROUP BY invoices.date | ||||||
|             HAVING currency_id = :currency_id |             HAVING currency_id = :currency_id | ||||||
|         ")->getValue(DB::connection()->getQueryGrammar()), [
 |         ", [
 | ||||||
|             'company_currency' => (int) $this->company->settings->currency_id, |             'company_currency' => (int) $this->company->settings->currency_id, | ||||||
|             'currency_id' => $currency_id, |             'currency_id' => $currency_id, | ||||||
|             'company_id' => $this->company->id, |             'company_id' => $this->company->id, | ||||||
|  | |||||||
| @ -96,22 +96,17 @@ class HandleRestore extends AbstractService | |||||||
|             $this->adjustment_amount += $payment->paymentables |             $this->adjustment_amount += $payment->paymentables | ||||||
|                                                 ->where('paymentable_type', '=', 'invoices') |                                                 ->where('paymentable_type', '=', 'invoices') | ||||||
|                                                 ->where('paymentable_id', $this->invoice->id) |                                                 ->where('paymentable_id', $this->invoice->id) | ||||||
|  | 
 | ||||||
|                                                 ->sum('amount'); |                                                 ->sum('amount'); | ||||||
|                                                 // ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar()));
 |  | ||||||
| nlog($this->adjustment_amount); |  | ||||||
|             $this->adjustment_amount += $payment->paymentables |             $this->adjustment_amount += $payment->paymentables | ||||||
|                                                 ->where('paymentable_type', '=', 'invoices') |                                                 ->where('paymentable_type', '=', 'invoices') | ||||||
|                                                 ->where('paymentable_id', $this->invoice->id) |                                                 ->where('paymentable_id', $this->invoice->id) | ||||||
|                                                 ->sum('amount'); |                                                 ->sum('amount'); | ||||||
|                                                 // ->sum(DB::raw('refunded')->getValue(DB::connection()->getQueryGrammar()));
 |  | ||||||
| nlog($this->adjustment_amount); |  | ||||||
| 
 | 
 | ||||||
|             //14/07/2023 - do not include credits in the payment amount
 |             //14/07/2023 - do not include credits in the payment amount
 | ||||||
|             $this->adjustment_amount -= $payment->paymentables |             $this->adjustment_amount -= $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'App\Models\Credit') |                                             ->where('paymentable_type', '=', 'App\Models\Credit') | ||||||
|                                             ->sum('amount'); |                                             ->sum('amount'); | ||||||
|                                             // ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar()));
 |  | ||||||
| nlog($this->adjustment_amount); |  | ||||||
| 
 | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -134,16 +129,16 @@ nlog($this->adjustment_amount); | |||||||
|             $payment_adjustment = $payment->paymentables |             $payment_adjustment = $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'invoices') |                                             ->where('paymentable_type', '=', 'invoices') | ||||||
|                                             ->where('paymentable_id', $this->invoice->id) |                                             ->where('paymentable_id', $this->invoice->id) | ||||||
|                                             ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                                             ->sum('amount'); | ||||||
| 
 | 
 | ||||||
|             $payment_adjustment -= $payment->paymentables |             $payment_adjustment -= $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'invoices') |                                             ->where('paymentable_type', '=', 'invoices') | ||||||
|                                             ->where('paymentable_id', $this->invoice->id) |                                             ->where('paymentable_id', $this->invoice->id) | ||||||
|                                             ->sum(DB::raw('refunded')->getValue(DB::connection()->getQueryGrammar())); |                                             ->sum('refunded'); | ||||||
| 
 | 
 | ||||||
|             $payment_adjustment -= $payment->paymentables |             $payment_adjustment -= $payment->paymentables | ||||||
|                         ->where('paymentable_type', '=', 'App\Models\Credit') |                         ->where('paymentable_type', '=', 'App\Models\Credit') | ||||||
|                         ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                         ->sum('amount'); | ||||||
|   |   | ||||||
|             $payment->amount += $payment_adjustment; |             $payment->amount += $payment_adjustment; | ||||||
|             $payment->applied += $payment_adjustment; |             $payment->applied += $payment_adjustment; | ||||||
|  | |||||||
| @ -88,17 +88,17 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|             $payment_adjustment = $payment->paymentables |             $payment_adjustment = $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'invoices') |                                             ->where('paymentable_type', '=', 'invoices') | ||||||
|                                             ->where('paymentable_id', $this->invoice->id) |                                             ->where('paymentable_id', $this->invoice->id) | ||||||
|                                             ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                                             ->sum('amount'); | ||||||
| 
 | 
 | ||||||
|             $payment_adjustment -= $payment->paymentables |             $payment_adjustment -= $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'invoices') |                                             ->where('paymentable_type', '=', 'invoices') | ||||||
|                                             ->where('paymentable_id', $this->invoice->id) |                                             ->where('paymentable_id', $this->invoice->id) | ||||||
|                                             ->sum(DB::raw('refunded')->getValue(DB::connection()->getQueryGrammar())); |                                             ->sum('refunded'); | ||||||
| 
 | 
 | ||||||
|             //14-07-2023 - Do not include credits in the payment adjustment.
 |             //14-07-2023 - Do not include credits in the payment adjustment.
 | ||||||
|             $payment_adjustment -= $payment->paymentables |             $payment_adjustment -= $payment->paymentables | ||||||
|                                             ->where('paymentable_type', '=', 'App\Models\Credit') |                                             ->where('paymentable_type', '=', 'App\Models\Credit') | ||||||
|                                             ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                                             ->sum('amount'); | ||||||
| 
 | 
 | ||||||
|             $payment->amount -= $payment_adjustment; |             $payment->amount -= $payment_adjustment; | ||||||
|             $payment->applied -= $payment_adjustment; |             $payment->applied -= $payment_adjustment; | ||||||
| @ -121,12 +121,12 @@ class MarkInvoiceDeleted extends AbstractService | |||||||
|             $this->adjustment_amount += $payment->paymentables |             $this->adjustment_amount += $payment->paymentables | ||||||
|                                                 ->where('paymentable_type', '=', 'invoices') |                                                 ->where('paymentable_type', '=', 'invoices') | ||||||
|                                                 ->where('paymentable_id', $this->invoice->id) |                                                 ->where('paymentable_id', $this->invoice->id) | ||||||
|                                                 ->sum(DB::raw('amount')->getValue(DB::connection()->getQueryGrammar())); |                                                 ->sum('amount'); | ||||||
| 
 | 
 | ||||||
|             $this->adjustment_amount -= $payment->paymentables |             $this->adjustment_amount -= $payment->paymentables | ||||||
|                                                 ->where('paymentable_type', '=', 'invoices') |                                                 ->where('paymentable_type', '=', 'invoices') | ||||||
|                                                 ->where('paymentable_id', $this->invoice->id) |                                                 ->where('paymentable_id', $this->invoice->id) | ||||||
|                                                 ->sum(DB::raw('refunded')->getValue(DB::connection()->getQueryGrammar())); |                                                 ->sum('refunded'); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $this->total_payments = $this->invoice->payments->sum('amount') - $this->invoice->payments->sum('refunded'); |         $this->total_payments = $this->invoice->payments->sum('amount') - $this->invoice->payments->sum('refunded'); | ||||||
|  | |||||||
| @ -178,17 +178,6 @@ class ProfitLoss | |||||||
|             $this->credit_taxes += $map->tax_amount_credit_converted; |             $this->credit_taxes += $map->tax_amount_credit_converted; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // $invoices = $this->invoicePaymentIncome();
 |  | ||||||
| 
 |  | ||||||
|         // $this->income = 0;
 |  | ||||||
|         // $this->income_taxes = 0;
 |  | ||||||
|         // $this->income_map = $invoices;
 |  | ||||||
| 
 |  | ||||||
|         // foreach($invoices as $invoice){
 |  | ||||||
|         //     $this->income += $invoice->net_converted_amount;
 |  | ||||||
|         //     $this->income_taxes += $invoice->net_converted_taxes;
 |  | ||||||
|         // }
 |  | ||||||
| 
 |  | ||||||
|         return $this; |         return $this; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -232,7 +221,7 @@ class ProfitLoss | |||||||
|    */ |    */ | ||||||
|     private function invoiceIncome() |     private function invoiceIncome() | ||||||
|     { |     { | ||||||
|         return \DB::select(\DB::raw(" |         return \DB::select(" | ||||||
|             SELECT |             SELECT | ||||||
|             sum(invoices.amount) as amount, |             sum(invoices.amount) as amount, | ||||||
|             sum(invoices.total_taxes) as total_taxes, |             sum(invoices.total_taxes) as total_taxes, | ||||||
| @ -250,7 +239,7 @@ class ProfitLoss | |||||||
|             AND invoices.is_deleted = 0 |             AND invoices.is_deleted = 0 | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |             AND (invoices.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ")->getValue(\DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]);
 |         ", ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]);
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -402,28 +391,6 @@ class ProfitLoss | |||||||
|         return  $csv->toString(); |         return  $csv->toString(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function invoicePaymentIncome() |  | ||||||
|     { |  | ||||||
|         return \DB::select(\DB::raw(" |  | ||||||
|             SELECT |  | ||||||
|             sum(invoices.amount - invoices.balance) as amount, |  | ||||||
|             sum(invoices.total_taxes) * ((sum(invoices.amount - invoices.balance)/invoices.amount)) as total_taxes, |  | ||||||
|             (sum(invoices.amount - invoices.balance) / IFNULL(invoices.exchange_rate, 1)) AS net_converted_amount, |  | ||||||
|             (sum(invoices.total_taxes) * ((sum(invoices.amount - invoices.balance)/invoices.amount)) / IFNULL(invoices.exchange_rate, 1)) AS net_converted_taxes, |  | ||||||
|             IFNULL(JSON_EXTRACT( settings, '$.currency_id' ), :company_currency) AS currency_id |  | ||||||
|             FROM clients |  | ||||||
|             JOIN invoices |  | ||||||
|             on invoices.client_id = clients.id |  | ||||||
|             WHERE invoices.status_id IN (3,4) |  | ||||||
|             AND invoices.company_id = :company_id |  | ||||||
|             AND invoices.amount > 0 |  | ||||||
|             AND clients.is_deleted = 0 |  | ||||||
|             AND invoices.is_deleted = 0 |  | ||||||
|             AND (invoices.date BETWEEN :start_date AND :end_date) |  | ||||||
|             GROUP BY currency_id |  | ||||||
|         ")->getValue(\DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]);
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |     /** | ||||||
|        +"payments": "12260.870000", |        +"payments": "12260.870000", | ||||||
|        +"payments_converted": "12260.870000000000", |        +"payments_converted": "12260.870000000000", | ||||||
| @ -431,7 +398,7 @@ class ProfitLoss | |||||||
|      */ |      */ | ||||||
|     private function paymentIncome() |     private function paymentIncome() | ||||||
|     { |     { | ||||||
|         return \DB::select(\DB::raw(' |         return \DB::select(' | ||||||
|              SELECT  |              SELECT  | ||||||
|              SUM(coalesce(payments.amount - payments.refunded,0)) as payments, |              SUM(coalesce(payments.amount - payments.refunded,0)) as payments, | ||||||
|              SUM(coalesce(payments.amount - payments.refunded,0)) * IFNULL(payments.exchange_rate ,1) as payments_converted, |              SUM(coalesce(payments.amount - payments.refunded,0)) * IFNULL(payments.exchange_rate ,1) as payments_converted, | ||||||
| @ -447,7 +414,7 @@ class ProfitLoss | |||||||
|              AND (payments.date BETWEEN :start_date AND :end_date) |              AND (payments.date BETWEEN :start_date AND :end_date) | ||||||
|              GROUP BY currency_id |              GROUP BY currency_id | ||||||
|              ORDER BY currency_id; |              ORDER BY currency_id; | ||||||
|         ')->getValue(\DB::connection()->getQueryGrammar()), ['company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]); |         ', ['company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function expenseData() |     private function expenseData() | ||||||
| @ -545,7 +512,7 @@ class ProfitLoss | |||||||
| 
 | 
 | ||||||
|     private function expenseCalcWithTax() |     private function expenseCalcWithTax() | ||||||
|     { |     { | ||||||
|         return \DB::select(\DB::raw(' |         return \DB::select(' | ||||||
|             SELECT sum(expenses.amount) as amount, |             SELECT sum(expenses.amount) as amount, | ||||||
|             IFNULL(expenses.currency_id, :company_currency) as currency_id |             IFNULL(expenses.currency_id, :company_currency) as currency_id | ||||||
|             FROM expenses |             FROM expenses | ||||||
| @ -553,7 +520,7 @@ class ProfitLoss | |||||||
|             AND expenses.company_id = :company_id |             AND expenses.company_id = :company_id | ||||||
|             AND (expenses.date BETWEEN :start_date AND :end_date) |             AND (expenses.date BETWEEN :start_date AND :end_date) | ||||||
|             GROUP BY currency_id |             GROUP BY currency_id | ||||||
|         ')->getValue(\DB::connection()->getQueryGrammar()), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]); |         ', ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $this->start_date, 'end_date' => $this->end_date]); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     private function setBillingReportType() |     private function setBillingReportType() | ||||||
|  | |||||||
| @ -43,7 +43,7 @@ class Ninja | |||||||
| 
 | 
 | ||||||
|     public static function getDebugInfo() |     public static function getDebugInfo() | ||||||
|     { |     { | ||||||
|         $mysql_version = DB::select(DB::raw('select version() as version')->getValue(DB::connection()->getQueryGrammar()))[0]->version; |         $mysql_version = DB::select('select version() as version')[0]->version; | ||||||
| 
 | 
 | ||||||
|         $version = request()->input('version', 'No Version Supplied.'); |         $version = request()->input('version', 'No Version Supplied.'); | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user