mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-23 20:00:33 -04:00
commit
b563115d7f
@ -1 +1 @@
|
|||||||
5.3.90
|
5.3.91
|
@ -31,9 +31,20 @@ class GenericReportRequest extends Request
|
|||||||
'start_date' => 'string|date',
|
'start_date' => 'string|date',
|
||||||
'end_date' => 'string|date',
|
'end_date' => 'string|date',
|
||||||
'date_key' => 'string',
|
'date_key' => 'string',
|
||||||
'date_range' => 'string',
|
'date_range' => 'required|string',
|
||||||
'report_keys' => 'present|array',
|
'report_keys' => 'present|array',
|
||||||
'send_email' => 'bool',
|
'send_email' => 'required|bool',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function prepareForValidation()
|
||||||
|
{
|
||||||
|
$input = $this->all();
|
||||||
|
|
||||||
|
|
||||||
|
if(!array_key_exists('report_keys', $input))
|
||||||
|
$input['report_keys'] = [];
|
||||||
|
|
||||||
|
$this->replace($input);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,6 +124,8 @@ class PaymentNotification implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
private function sendAnalytics($data)
|
private function sendAnalytics($data)
|
||||||
{
|
{
|
||||||
|
nlog($data);
|
||||||
|
|
||||||
$data = utf8_encode($data);
|
$data = utf8_encode($data);
|
||||||
$curl = curl_init();
|
$curl = curl_init();
|
||||||
|
|
||||||
|
@ -47,6 +47,28 @@ class MigrationCompleted extends Mailable
|
|||||||
$data['check_data'] = $this->check_data ?: '';
|
$data['check_data'] = $this->check_data ?: '';
|
||||||
$data['logo'] = $this->company->present()->logo();
|
$data['logo'] = $this->company->present()->logo();
|
||||||
|
|
||||||
|
$data = array_merge($data, [
|
||||||
|
'logo' => $this->company->present()->logo(),
|
||||||
|
'settings' => $this->company->settings,
|
||||||
|
'company' => $this->company,
|
||||||
|
'client_count' => $this->company->clients()->count(),
|
||||||
|
'product_count' => $this->company->products()->count(),
|
||||||
|
'invoice_count' => $this->company->invoices()->count(),
|
||||||
|
'quote_count' => $this->company->quotes()->count(),
|
||||||
|
'credit_count' => $this->company->credits()->count(),
|
||||||
|
'project_count' => $this->company->projects()->count(),
|
||||||
|
'task_count' => $this->company->tasks()->count(),
|
||||||
|
'vendor_count' => $this->company->vendors()->count(),
|
||||||
|
'payment_count' => $this->company->payments()->count(),
|
||||||
|
'recurring_invoice_count' => $this->company->recurring_invoices()->count(),
|
||||||
|
'expense_count' => $this->company->expenses()->count(),
|
||||||
|
'company_gateway_count' => $this->company->company_gateways()->count(),
|
||||||
|
'client_gateway_token_count' => $this->company->client_gateway_tokens()->count(),
|
||||||
|
'tax_rate_count' => $this->company->tax_rates()->count(),
|
||||||
|
'document_count' => $this->company->documents()->count(),
|
||||||
|
|
||||||
|
]);
|
||||||
|
|
||||||
$result = $this->from(config('mail.from.address'), config('mail.from.name'))
|
$result = $this->from(config('mail.from.address'), config('mail.from.name'))
|
||||||
->text('email.import.completed_text', $data)
|
->text('email.import.completed_text', $data)
|
||||||
->view('email.import.completed', $data);
|
->view('email.import.completed', $data);
|
||||||
|
@ -102,7 +102,6 @@ class Company extends BaseModel
|
|||||||
'markdown_email_enabled',
|
'markdown_email_enabled',
|
||||||
'stop_on_unpaid_recurring',
|
'stop_on_unpaid_recurring',
|
||||||
'use_quote_terms_on_conversion',
|
'use_quote_terms_on_conversion',
|
||||||
'show_production_description_dropdown',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $hidden = [
|
protected $hidden = [
|
||||||
|
@ -353,6 +353,10 @@ class MolliePaymentDriver extends BaseDriver
|
|||||||
$response = SystemLog::EVENT_GATEWAY_FAILURE;
|
$response = SystemLog::EVENT_GATEWAY_FAILURE;
|
||||||
|
|
||||||
if($record){
|
if($record){
|
||||||
|
|
||||||
|
if(in_array($payment->status, ['canceled','expired','failed']))
|
||||||
|
$record->service()->deletePayment();
|
||||||
|
|
||||||
$record->status_id = $codes[$payment->status];
|
$record->status_id = $codes[$payment->status];
|
||||||
$record->save();
|
$record->save();
|
||||||
$response = SystemLog::EVENT_GATEWAY_SUCCESS;
|
$response = SystemLog::EVENT_GATEWAY_SUCCESS;
|
||||||
|
@ -22,11 +22,119 @@ use Illuminate\Support\Facades\DB;
|
|||||||
trait ChartQueries
|
trait ChartQueries
|
||||||
{
|
{
|
||||||
|
|
||||||
// $currencies = Payment::withTrashed()
|
/**
|
||||||
// ->where('company_id', $this->company->id)
|
* Expenses
|
||||||
// ->where('is_deleted', 0)
|
*/
|
||||||
// ->distinct()
|
public function getExpenseQuery($start_date, $end_date)
|
||||||
// ->get(['currency_id']);
|
{
|
||||||
|
|
||||||
|
return DB::select( DB::raw("
|
||||||
|
SELECT sum(expenses.amount) as amount,
|
||||||
|
IFNULL(expenses.currency_id, :company_currency) as currency_id
|
||||||
|
FROM expenses
|
||||||
|
WHERE expenses.is_deleted = 0
|
||||||
|
AND expenses.company_id = :company_id
|
||||||
|
AND (expenses.date BETWEEN :start_date AND :end_date)
|
||||||
|
GROUP BY currency_id
|
||||||
|
"), ['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)
|
||||||
|
{
|
||||||
|
|
||||||
|
return DB::select( DB::raw("
|
||||||
|
SELECT
|
||||||
|
sum(expenses.amount) as total,
|
||||||
|
expenses.date,
|
||||||
|
IFNULL(expenses.currency_id, :company_currency) AS currency_id
|
||||||
|
FROM expenses
|
||||||
|
WHERE (expenses.date BETWEEN :start_date AND :end_date)
|
||||||
|
AND expenses.company_id = :company_id
|
||||||
|
AND expenses.is_deleted = 0
|
||||||
|
GROUP BY expenses.date
|
||||||
|
HAVING currency_id = :currency_id
|
||||||
|
"), [
|
||||||
|
'company_currency' => $this->company->settings->currency_id,
|
||||||
|
'currency_id' => $currency_id,
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'start_date' => $start_date,
|
||||||
|
'end_date' => $end_date
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payments
|
||||||
|
*/
|
||||||
|
public function getPaymentQuery($start_date, $end_date)
|
||||||
|
{
|
||||||
|
|
||||||
|
return DB::select( DB::raw("
|
||||||
|
SELECT sum(payments.amount) as amount,
|
||||||
|
IFNULL(payments.currency_id, :company_currency) as currency_id
|
||||||
|
FROM payments
|
||||||
|
WHERE payments.is_deleted = 0
|
||||||
|
AND payments.company_id = :company_id
|
||||||
|
AND (payments.date BETWEEN :start_date AND :end_date)
|
||||||
|
GROUP BY currency_id
|
||||||
|
"), [
|
||||||
|
'company_currency' => $this->company->settings->currency_id,
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'start_date' => $start_date,
|
||||||
|
'end_date' => $end_date
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPaymentChartQuery($start_date, $end_date, $currency_id)
|
||||||
|
{
|
||||||
|
|
||||||
|
return DB::select( DB::raw("
|
||||||
|
SELECT
|
||||||
|
sum(payments.amount - payments.refunded) as total,
|
||||||
|
payments.date,
|
||||||
|
IFNULL(payments.currency_id, :company_currency) AS currency_id
|
||||||
|
FROM payments
|
||||||
|
WHERE payments.status_id IN (4,5,6)
|
||||||
|
AND (payments.date BETWEEN :start_date AND :end_date)
|
||||||
|
AND payments.company_id = :company_id
|
||||||
|
AND payments.is_deleted = 0
|
||||||
|
GROUP BY payments.date
|
||||||
|
HAVING currency_id = :currency_id
|
||||||
|
"), [
|
||||||
|
'company_currency' => $this->company->settings->currency_id,
|
||||||
|
'currency_id' => $currency_id,
|
||||||
|
'company_id' => $this->company->id,
|
||||||
|
'start_date' => $start_date,
|
||||||
|
'end_date' => $end_date
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoices
|
||||||
|
*/
|
||||||
|
public function getOutstandingQuery($start_date, $end_date)
|
||||||
|
{
|
||||||
|
|
||||||
|
return DB::select( DB::raw("
|
||||||
|
SELECT
|
||||||
|
sum(invoices.balance) as amount,
|
||||||
|
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 (2,3)
|
||||||
|
AND invoices.company_id = :company_id
|
||||||
|
AND invoices.balance > 0
|
||||||
|
AND clients.is_deleted = 0
|
||||||
|
AND invoices.is_deleted = 0
|
||||||
|
AND (invoices.date BETWEEN :start_date AND :end_date)
|
||||||
|
GROUP BY currency_id
|
||||||
|
"), ['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)
|
||||||
{
|
{
|
||||||
@ -49,55 +157,6 @@ trait ChartQueries
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getOutstandingQuery($start_date, $end_date)
|
|
||||||
{
|
|
||||||
|
|
||||||
return DB::select( DB::raw("
|
|
||||||
SELECT
|
|
||||||
sum(invoices.balance) as balance,
|
|
||||||
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 (2,3)
|
|
||||||
AND invoices.company_id = :company_id
|
|
||||||
AND invoices.balance > 0
|
|
||||||
AND clients.is_deleted = 0
|
|
||||||
AND invoices.is_deleted = 0
|
|
||||||
AND (invoices.due_date BETWEEN :start_date AND :end_date)
|
|
||||||
GROUP BY currency_id
|
|
||||||
"), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date] );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getExpenseQuery($start_date, $end_date)
|
|
||||||
{
|
|
||||||
|
|
||||||
return DB::select( DB::raw("
|
|
||||||
SELECT sum(expenses.amount) as amount,
|
|
||||||
IFNULL(expenses.currency_id, :company_currency) as currency_id
|
|
||||||
FROM expenses
|
|
||||||
WHERE expenses.is_deleted = 0
|
|
||||||
AND expenses.company_id = :company_id
|
|
||||||
AND (expenses.date BETWEEN :start_date AND :end_date)
|
|
||||||
GROUP BY currency_id
|
|
||||||
"), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date] );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getPaymentQuery($start_date, $end_date)
|
|
||||||
{
|
|
||||||
return DB::select( DB::raw("
|
|
||||||
SELECT sum(expenses.amount) as amount,
|
|
||||||
IFNULL(expenses.currency_id, :company_currency) as currency_id
|
|
||||||
FROM expenses
|
|
||||||
WHERE expenses.is_deleted = 0
|
|
||||||
AND expenses.company_id = :company_id
|
|
||||||
AND (expenses.date BETWEEN :start_date AND :end_date)
|
|
||||||
GROUP BY currency_id
|
|
||||||
"), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date] );
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getInvoiceChartQuery($start_date, $end_date, $currency_id)
|
public function getInvoiceChartQuery($start_date, $end_date, $currency_id)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -123,118 +182,7 @@ trait ChartQueries
|
|||||||
'start_date' => $start_date,
|
'start_date' => $start_date,
|
||||||
'end_date' => $end_date
|
'end_date' => $end_date
|
||||||
]);
|
]);
|
||||||
}
|
|
||||||
|
|
||||||
public function getPaymentChartQuery($start_date, $end_date, $currency_id)
|
|
||||||
{
|
|
||||||
|
|
||||||
return DB::select( DB::raw("
|
|
||||||
SELECT
|
|
||||||
sum(payments.amount - payments.refunded) as total,
|
|
||||||
payments.date,
|
|
||||||
IFNULL(payments.currency_id, :company_currency) AS currency_id
|
|
||||||
FROM payments
|
|
||||||
WHERE payments.status_id IN (4,5,6)
|
|
||||||
AND (payments.date BETWEEN :start_date AND :end_date)
|
|
||||||
AND payments.company_id = :company_id
|
|
||||||
AND payments.is_deleted = 0
|
|
||||||
GROUP BY payments.date
|
|
||||||
HAVING currency_id = :currency_id
|
|
||||||
"), [
|
|
||||||
'company_currency' => $this->company->settings->currency_id,
|
|
||||||
'currency_id' => $currency_id,
|
|
||||||
'company_id' => $this->company->id,
|
|
||||||
'start_date' => $start_date,
|
|
||||||
'end_date' => $end_date
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getExpenseChartQuery($start_date, $end_date, $currency_id)
|
|
||||||
{
|
|
||||||
|
|
||||||
return DB::select( DB::raw("
|
|
||||||
SELECT
|
|
||||||
sum(expenses.amount) as total,
|
|
||||||
expenses.date,
|
|
||||||
IFNULL(expenses.currency_id, :company_currency) AS currency_id
|
|
||||||
FROM expenses
|
|
||||||
WHERE (expenses.date BETWEEN :start_date AND :end_date)
|
|
||||||
AND expenses.company_id = :company_id
|
|
||||||
AND expenses.is_deleted = 0
|
|
||||||
GROUP BY expenses.date
|
|
||||||
HAVING currency_id = :currency_id
|
|
||||||
"), [
|
|
||||||
'company_currency' => $this->company->settings->currency_id,
|
|
||||||
'currency_id' => $currency_id,
|
|
||||||
'company_id' => $this->company->id,
|
|
||||||
'start_date' => $start_date,
|
|
||||||
'end_date' => $end_date
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
public function payments($accountId, $userId, $viewAll)
|
|
||||||
{
|
|
||||||
$payments = DB::table('payments')
|
|
||||||
->leftJoin('clients', 'clients.id', '=', 'payments.client_id')
|
|
||||||
->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id')
|
|
||||||
->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id')
|
|
||||||
->where('payments.account_id', '=', $accountId)
|
|
||||||
->where('payments.is_deleted', '=', false)
|
|
||||||
->where('invoices.is_deleted', '=', false)
|
|
||||||
->where('clients.is_deleted', '=', false)
|
|
||||||
->where('contacts.deleted_at', '=', null)
|
|
||||||
->where('contacts.is_primary', '=', true)
|
|
||||||
->whereNotIn('payments.payment_status_id', [PAYMENT_STATUS_VOIDED, PAYMENT_STATUS_FAILED]);
|
|
||||||
|
|
||||||
if (! $viewAll) {
|
|
||||||
$payments = $payments->where('payments.user_id', '=', $userId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $payments->select(['payments.payment_date', DB::raw('(payments.amount - payments.refunded) as amount'), 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id'])
|
|
||||||
->orderBy('payments.payment_date', 'desc')
|
|
||||||
->take(100)
|
|
||||||
->get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function oustanding($start_date, $end_date)
|
|
||||||
{
|
|
||||||
|
|
||||||
$company_currency = (int) $this->company->settings->currency_id;
|
|
||||||
|
|
||||||
$results = \DB::select( \DB::raw("
|
|
||||||
SELECT
|
|
||||||
sum(invoices.balance) as balance,
|
|
||||||
JSON_EXTRACT( settings, '$.currency_id' ) AS currency_id
|
|
||||||
FROM clients
|
|
||||||
JOIN invoices
|
|
||||||
on invoices.client_id = clients.id
|
|
||||||
WHERE invoices.status_id IN (2,3)
|
|
||||||
AND invoices.company_id = :company_id
|
|
||||||
AND invoices.balance > 0
|
|
||||||
AND clients.is_deleted = 0
|
|
||||||
AND invoices.is_deleted = 0
|
|
||||||
AND (invoices.due_date BETWEEN :start_date AND :end_date)
|
|
||||||
GROUP BY currency_id
|
|
||||||
"), ['company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date] );
|
|
||||||
|
|
||||||
//return $results;
|
|
||||||
|
|
||||||
//the output here will most likely contain a currency_id = null value - we need to merge this value with the company currency
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
@ -169,7 +169,6 @@ class CompanyTransformer extends EntityTransformer
|
|||||||
'convert_rate_to_client' => (bool) $company->convert_rate_to_client,
|
'convert_rate_to_client' => (bool) $company->convert_rate_to_client,
|
||||||
'markdown_email_enabled' => (bool) $company->markdown_email_enabled,
|
'markdown_email_enabled' => (bool) $company->markdown_email_enabled,
|
||||||
'stop_on_unpaid_recurring' => (bool) $company->stop_on_unpaid_recurring,
|
'stop_on_unpaid_recurring' => (bool) $company->stop_on_unpaid_recurring,
|
||||||
'show_production_description_dropdown' => (bool)$company->show_production_description_dropdown,
|
|
||||||
'use_quote_terms_on_conversion' => (bool) $company->use_quote_terms_on_conversion,
|
'use_quote_terms_on_conversion' => (bool) $company->use_quote_terms_on_conversion,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -332,6 +332,10 @@ class HtmlEngine
|
|||||||
$data['$country'] = ['value' => isset($this->client->country->name) ? ctrans('texts.country_' . $this->client->country->name) : '', 'label' => ctrans('texts.country')];
|
$data['$country'] = ['value' => isset($this->client->country->name) ? ctrans('texts.country_' . $this->client->country->name) : '', 'label' => ctrans('texts.country')];
|
||||||
$data['$country_2'] = ['value' => isset($this->client->country) ? $this->client->country->iso_3166_2 : '', 'label' => ctrans('texts.country')];
|
$data['$country_2'] = ['value' => isset($this->client->country) ? $this->client->country->iso_3166_2 : '', 'label' => ctrans('texts.country')];
|
||||||
$data['$email'] = ['value' => isset($this->contact) ? $this->contact->email : 'no contact email on record', 'label' => ctrans('texts.email')];
|
$data['$email'] = ['value' => isset($this->contact) ? $this->contact->email : 'no contact email on record', 'label' => ctrans('texts.email')];
|
||||||
|
|
||||||
|
if(str_contains($data['$email']['value'], 'example.com'))
|
||||||
|
$data['$email'] = ['value' => '', 'label' => ctrans('texts.email')];
|
||||||
|
|
||||||
$data['$client_name'] = ['value' => $this->entity->present()->clientName() ?: ' ', 'label' => ctrans('texts.client_name')];
|
$data['$client_name'] = ['value' => $this->entity->present()->clientName() ?: ' ', 'label' => ctrans('texts.client_name')];
|
||||||
$data['$client.name'] = &$data['$client_name'];
|
$data['$client.name'] = &$data['$client_name'];
|
||||||
$data['$client'] = &$data['$client_name'];
|
$data['$client'] = &$data['$client_name'];
|
||||||
@ -382,7 +386,7 @@ class HtmlEngine
|
|||||||
$data['$contact.full_name'] = ['value' => $this->contact->present()->name(), 'label' => ctrans('texts.name')];
|
$data['$contact.full_name'] = ['value' => $this->contact->present()->name(), 'label' => ctrans('texts.name')];
|
||||||
$data['$contact'] = &$data['$contact.full_name'];
|
$data['$contact'] = &$data['$contact.full_name'];
|
||||||
|
|
||||||
$data['$contact.email'] = ['value' => $this->contact->email, 'label' => ctrans('texts.email')];
|
$data['$contact.email'] = &$data['$email'];
|
||||||
$data['$contact.phone'] = ['value' => $this->contact->phone, 'label' => ctrans('texts.phone')];
|
$data['$contact.phone'] = ['value' => $this->contact->phone, 'label' => ctrans('texts.phone')];
|
||||||
|
|
||||||
$data['$contact.name'] = ['value' => isset($this->contact) ? $this->contact->present()->name() : $this->client->present()->name(), 'label' => ctrans('texts.contact_name')];
|
$data['$contact.name'] = ['value' => isset($this->contact) ? $this->contact->present()->name() : $this->client->present()->name(), 'label' => ctrans('texts.contact_name')];
|
||||||
|
@ -14,8 +14,8 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||||
'app_version' => '5.3.90',
|
'app_version' => '5.3.91',
|
||||||
'app_tag' => '5.3.90',
|
'app_tag' => '5.3.91',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', ''),
|
'api_secret' => env('API_SECRET', ''),
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Utils\Traits\AppSetup;
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
class DropRedundantColumnShowProductionDescriptionDropdown extends Migration
|
||||||
|
{
|
||||||
|
use AppSetup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('companies', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('show_production_description_dropdown');
|
||||||
|
});
|
||||||
|
|
||||||
|
$this->buildCache(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
4
public/flutter_service_worker.js
vendored
4
public/flutter_service_worker.js
vendored
@ -3,13 +3,13 @@ const MANIFEST = 'flutter-app-manifest';
|
|||||||
const TEMP = 'flutter-temp-cache';
|
const TEMP = 'flutter-temp-cache';
|
||||||
const CACHE_NAME = 'flutter-app-cache';
|
const CACHE_NAME = 'flutter-app-cache';
|
||||||
const RESOURCES = {
|
const RESOURCES = {
|
||||||
"main.dart.js": "364188203aa14bd63e2bc6012e03dca0",
|
"main.dart.js": "01650cf247d1b2ef31e4bb84a76b28fd",
|
||||||
"canvaskit/canvaskit.wasm": "4b83d89d9fecbea8ca46f2f760c5a9ba",
|
"canvaskit/canvaskit.wasm": "4b83d89d9fecbea8ca46f2f760c5a9ba",
|
||||||
"canvaskit/profiling/canvaskit.wasm": "95e736ab31147d1b2c7b25f11d4c32cd",
|
"canvaskit/profiling/canvaskit.wasm": "95e736ab31147d1b2c7b25f11d4c32cd",
|
||||||
"canvaskit/profiling/canvaskit.js": "ae2949af4efc61d28a4a80fffa1db900",
|
"canvaskit/profiling/canvaskit.js": "ae2949af4efc61d28a4a80fffa1db900",
|
||||||
"canvaskit/canvaskit.js": "c2b4e5f3d7a3d82aed024e7249a78487",
|
"canvaskit/canvaskit.js": "c2b4e5f3d7a3d82aed024e7249a78487",
|
||||||
"flutter.js": "0816e65a103ba8ba51b174eeeeb2cb67",
|
"flutter.js": "0816e65a103ba8ba51b174eeeeb2cb67",
|
||||||
"/": "981a36b4c01bd0159f59c3f0b234ce5c",
|
"/": "eea3dd0db9e972492cf345e1d6676daf",
|
||||||
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
|
"favicon.png": "dca91c54388f52eded692718d5a98b8b",
|
||||||
"version.json": "3afb81924daf4f751571755436069115",
|
"version.json": "3afb81924daf4f751571755436069115",
|
||||||
"assets/AssetManifest.json": "38d9aea341601f3a5c6fa7b5a1216ea5",
|
"assets/AssetManifest.json": "38d9aea341601f3a5c6fa7b5a1216ea5",
|
||||||
|
188428
public/main.dart.js
vendored
188428
public/main.dart.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
230386
public/main.foss.dart.js
vendored
230386
public/main.foss.dart.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
184768
public/main.html.dart.js
vendored
184768
public/main.html.dart.js
vendored
File diff suppressed because one or more lines are too long
233712
public/main.next.dart.js
vendored
233712
public/main.next.dart.js
vendored
File diff suppressed because one or more lines are too long
12341
public/main.profile.dart.js
vendored
12341
public/main.profile.dart.js
vendored
File diff suppressed because one or more lines are too long
@ -3,7 +3,7 @@
|
|||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
@push('head')
|
@push('head')
|
||||||
<meta name="pdf-url" content="{{ $url ?? $entity->pdf_file_path(null, 'url', true) }}">
|
<meta name="pdf-url" content="{{ $url ?? $entity->pdf_file_path(null, 'url', true) }}?cache_buster={{time()}}">
|
||||||
<script src="{{ asset('js/vendor/pdf.js/pdf.min.js') }}"></script>
|
<script src="{{ asset('js/vendor/pdf.js/pdf.min.js') }}"></script>
|
||||||
@endpush
|
@endpush
|
||||||
|
|
||||||
@ -86,7 +86,7 @@
|
|||||||
<canvas id="pdf-placeholder" class="shadow rounded-lg bg-white"></canvas>
|
<canvas id="pdf-placeholder" class="shadow rounded-lg bg-white"></canvas>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<iframe id="pdf-iframe" src="{{ $url ?? $entity->pdf_file_path(null, 'url', true) }}" class="h-screen w-full border-0 mt-4"></iframe>
|
<iframe id="pdf-iframe" src="{{ $url ?? $entity->pdf_file_path(null, 'url', true) }}?cache_buster={{time()}}" class="h-screen w-full border-0 mt-4"></iframe>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ Route::group(['middleware' => ['throttle:100,1', 'api_db', 'token_auth', 'locale
|
|||||||
Route::post('recurring_quotes/bulk', 'RecurringQuoteController@bulk')->name('recurring_quotes.bulk');
|
Route::post('recurring_quotes/bulk', 'RecurringQuoteController@bulk')->name('recurring_quotes.bulk');
|
||||||
Route::put('recurring_quotes/{recurring_quote}/upload', 'RecurringQuoteController@upload');
|
Route::put('recurring_quotes/{recurring_quote}/upload', 'RecurringQuoteController@upload');
|
||||||
|
|
||||||
Route::post('refresh', 'Auth\LoginController@refresh')->middleware('throttle:30,1');
|
Route::post('refresh', 'Auth\LoginController@refresh')->middleware('throttle:50,1');
|
||||||
|
|
||||||
Route::post('reports/clients', 'Reports\ClientReportController');
|
Route::post('reports/clients', 'Reports\ClientReportController');
|
||||||
Route::post('reports/contacts', 'Reports\ClientContactReportController');
|
Route::post('reports/contacts', 'Reports\ClientContactReportController');
|
||||||
|
@ -45,6 +45,7 @@ class ClientCsvTest extends TestCase
|
|||||||
$data = [
|
$data = [
|
||||||
"date_range" => "this_year",
|
"date_range" => "this_year",
|
||||||
"report_keys" => [],
|
"report_keys" => [],
|
||||||
|
"send_email" => false
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->withHeaders([
|
$response = $this->withHeaders([
|
||||||
@ -62,6 +63,7 @@ class ClientCsvTest extends TestCase
|
|||||||
$data = [
|
$data = [
|
||||||
"date_range" => "this_year",
|
"date_range" => "this_year",
|
||||||
"report_keys" => [],
|
"report_keys" => [],
|
||||||
|
"send_email" => false
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = $this->withHeaders([
|
$response = $this->withHeaders([
|
||||||
|
Loading…
x
Reference in New Issue
Block a user