Merge branch 'v5-develop' into v5-stable

This commit is contained in:
David Bomba 2021-05-06 15:39:51 +10:00
commit a9593867cc
27 changed files with 205539 additions and 205067 deletions

View File

@ -1 +1 @@
5.1.60 5.1.61

View File

@ -194,8 +194,15 @@ class LoginController extends BaseController
} }
$user->setCompany($user->account->default_company); $user->setCompany($user->account->default_company);
$timeout = auth()->user()->company()->default_password_timeout / 60000;
Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout); $timeout = $user->company()->default_password_timeout;
if($timeout == 0)
$timeout = 30*60*1000*1000;
else
$timeout = $timeout/1000;
Cache::put($user->hashed_id.'_logged_in', Str::random(64), $timeout);
$cu = CompanyUser::query() $cu = CompanyUser::query()
->where('user_id', auth()->user()->id); ->where('user_id', auth()->user()->id);
@ -333,7 +340,15 @@ class LoginController extends BaseController
Auth::login($existing_user, true); Auth::login($existing_user, true);
$existing_user->setCompany($existing_user->account->default_company); $existing_user->setCompany($existing_user->account->default_company);
$timeout = $existing_user->company()->default_password_timeout / 60000;
$timeout = $existing_user->company()->default_password_timeout;
if($timeout == 0)
$timeout = 30*60*1000*1000;
else
$timeout = $timeout/1000;
Cache::put($existing_user->hashed_id.'_logged_in', Str::random(64), $timeout); Cache::put($existing_user->hashed_id.'_logged_in', Str::random(64), $timeout);
$cu = CompanyUser::query() $cu = CompanyUser::query()
@ -375,7 +390,15 @@ class LoginController extends BaseController
auth()->user()->email_verified_at = now(); auth()->user()->email_verified_at = now();
auth()->user()->save(); auth()->user()->save();
$timeout = auth()->user()->company()->default_password_timeout / 60000;
$timeout = auth()->user()->company()->default_password_timeout;
if($timeout == 0)
$timeout = 30*60*1000*1000;
else
$timeout = $timeout/1000;
Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout); Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
$cu = CompanyUser::whereUserId(auth()->user()->id); $cu = CompanyUser::whereUserId(auth()->user()->id);

View File

@ -107,10 +107,11 @@ class BaseController extends Controller
'token', 'token',
'company.activities', 'company.activities',
'company.documents', 'company.documents',
//'company.users.company_user', 'company.users.company_user',
'company.tax_rates', 'company.tax_rates',
'company.groups', 'company.groups',
'company.payment_terms', 'company.payment_terms',
'company.designs.company',
]; ];
public function __construct() public function __construct()
@ -416,12 +417,12 @@ class BaseController extends Controller
$query->where('credits.user_id', $user->id)->orWhere('credits.assigned_user_id', $user->id); $query->where('credits.user_id', $user->id)->orWhere('credits.assigned_user_id', $user->id);
}, },
'company.designs'=> function ($query) use ($created_at, $user) { // 'company.designs'=> function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at)->with('company'); // $query->where('created_at', '>=', $created_at)->with('company');
if(!$user->isAdmin()) // if(!$user->isAdmin())
$query->where('designs.user_id', $user->id); // $query->where('designs.user_id', $user->id);
}, // },
'company.documents'=> function ($query) use ($created_at, $user) { 'company.documents'=> function ($query) use ($created_at, $user) {
$query->where('created_at', '>=', $created_at); $query->where('created_at', '>=', $created_at);
}, },

View File

@ -208,6 +208,9 @@ class PaymentController extends BaseController
{ {
$payment = $this->payment_repo->save($request->all(), PaymentFactory::create(auth()->user()->company()->id, auth()->user()->id)); $payment = $this->payment_repo->save($request->all(), PaymentFactory::create(auth()->user()->company()->id, auth()->user()->id));
if($request->has('email_receipt') && $request->input('email_receipt') == 'true' && !$payment->client->getSetting('client_manual_payment_notification'))
$payment->service()->sendEmail();
return $this->itemResponse($payment); return $this->itemResponse($payment);
} }

View File

@ -58,7 +58,7 @@ class SelfUpdateController extends BaseController
set_time_limit(0); set_time_limit(0);
define('STDIN', fopen('php://stdin', 'r')); define('STDIN', fopen('php://stdin', 'r'));
if (Ninja::isNinja()) { if (Ninja::isHosted()) {
return response()->json(['message' => ctrans('texts.self_update_not_available')], 403); return response()->json(['message' => ctrans('texts.self_update_not_available')], 403);
} }

View File

@ -40,14 +40,13 @@ class PasswordProtection
$timeout = auth()->user()->company()->default_password_timeout; $timeout = auth()->user()->company()->default_password_timeout;
if($timeout == 0) if($timeout == 0)
$timeout = null; $timeout = 30*60*1000*1000;
else else
$timeout = now()->addMinutes($timeout/60000); $timeout = $timeout/1000;
if (Cache::get(auth()->user()->hashed_id.'_logged_in')) { if (Cache::get(auth()->user()->hashed_id.'_logged_in')) {
Cache::pull(auth()->user()->hashed_id.'_logged_in'); Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
Cache::add(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
return $next($request); return $next($request);
@ -69,12 +68,12 @@ class PasswordProtection
//If OAuth and user also has a password set - check both //If OAuth and user also has a password set - check both
if ($existing_user = MultiDB::hasUser($query) && auth()->user()->has_password && Hash::check(auth()->user()->password, $request->header('X-API-PASSWORD'))) { if ($existing_user = MultiDB::hasUser($query) && auth()->user()->has_password && Hash::check(auth()->user()->password, $request->header('X-API-PASSWORD'))) {
Cache::add(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout); Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
return $next($request); return $next($request);
} }
elseif($existing_user = MultiDB::hasUser($query) && !auth()->user()->has_password){ elseif($existing_user = MultiDB::hasUser($query) && !auth()->user()->has_password){
Cache::add(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout); Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
return $next($request); return $next($request);
} }
} }
@ -84,7 +83,7 @@ class PasswordProtection
}elseif ($request->header('X-API-PASSWORD') && Hash::check($request->header('X-API-PASSWORD'), auth()->user()->password)) { }elseif ($request->header('X-API-PASSWORD') && Hash::check($request->header('X-API-PASSWORD'), auth()->user()->password)) {
Cache::add(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout); Cache::put(auth()->user()->hashed_id.'_logged_in', Str::random(64), $timeout);
return $next($request); return $next($request);

View File

@ -23,7 +23,7 @@ class UpdateUserRequest extends Request
*/ */
public function authorize() : bool public function authorize() : bool
{ {
return auth()->user()->id === $this->id || auth()->user()->isAdmin(); return auth()->user()->id == $this->user->id || auth()->user()->isAdmin();
} }
public function rules() public function rules()

View File

@ -459,6 +459,19 @@ class Import implements ShouldQueue
$user_repository = null; $user_repository = null;
} }
private function checkUniqueConstraint($model, $column, $value)
{
$model_query = (new $model())
->query()
->where($column, $value)
->exists();
if($model_query)
return $value.'_'. Str::random(5);
return $value;
}
/** /**
* @param array $data * @param array $data
* @throws Exception * @throws Exception
@ -476,6 +489,7 @@ class Import implements ShouldQueue
$modified['user_id'] = $this->processUserId($resource); $modified['user_id'] = $this->processUserId($resource);
$modified['balance'] = $modified['balance'] ?: 0; $modified['balance'] = $modified['balance'] ?: 0;
$modified['paid_to_date'] = $modified['paid_to_date'] ?: 0; $modified['paid_to_date'] = $modified['paid_to_date'] ?: 0;
$modified['number'] = $this->checkUniqueConstraint(Client::class, 'number', $modified['number']);
unset($modified['id']); unset($modified['id']);
unset($modified['contacts']); unset($modified['contacts']);
@ -488,6 +502,14 @@ class Import implements ShouldQueue
) )
); );
if(array_key_exists('created_at', $modified))
$client->created_at = $modified['created_at'];
if(array_key_exists('updated_at', $modified))
$client->updated_at = $modified['updated_at'];
$client->save(['timestamps' => false]);
$client->contacts()->forceDelete(); $client->contacts()->forceDelete();
if (array_key_exists('contacts', $resource)) { // need to remove after importing new migration.json if (array_key_exists('contacts', $resource)) { // need to remove after importing new migration.json
@ -891,6 +913,14 @@ class Import implements ShouldQueue
QuoteFactory::create($this->company->id, $modified['user_id']) QuoteFactory::create($this->company->id, $modified['user_id'])
); );
if(array_key_exists('created_at', $modified))
$quote->created_at = $modified['created_at'];
if(array_key_exists('updated_at', $modified))
$quote->updated_at = $modified['updated_at'];
$quote->save(['timestamps' => false]);
$old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id;
$key = "quotes_{$resource['id']}"; $key = "quotes_{$resource['id']}";
@ -957,6 +987,14 @@ class Import implements ShouldQueue
PaymentFactory::create($this->company->id, $modified['user_id']) PaymentFactory::create($this->company->id, $modified['user_id'])
); );
if(array_key_exists('created_at', $modified))
$payment->created_at = $modified['created_at'];
if(array_key_exists('updated_at', $modified))
$payment->updated_at = $modified['updated_at'];
$payment->save(['timestamps' => false]);
if (array_key_exists('company_gateway_id', $resource) && isset($resource['company_gateway_id']) && $resource['company_gateway_id'] != 'NULL') { if (array_key_exists('company_gateway_id', $resource) && isset($resource['company_gateway_id']) && $resource['company_gateway_id'] != 'NULL') {
$payment->company_gateway_id = $this->transformId('company_gateways', $resource['company_gateway_id']); $payment->company_gateway_id = $this->transformId('company_gateways', $resource['company_gateway_id']);
$payment->save(); $payment->save();
@ -1319,6 +1357,14 @@ class Import implements ShouldQueue
$task = Task::Create($modified); $task = Task::Create($modified);
if(array_key_exists('created_at', $modified))
$task->created_at = $modified['created_at'];
if(array_key_exists('updated_at', $modified))
$task->updated_at = $modified['updated_at'];
$task->save(['timestamps' => false]);
$old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id;
$this->ids['tasks'] = [ $this->ids['tasks'] = [
@ -1399,6 +1445,14 @@ class Import implements ShouldQueue
$expense = Expense::Create($modified); $expense = Expense::Create($modified);
if(array_key_exists('created_at', $modified))
$expense->created_at = $modified['created_at'];
if(array_key_exists('updated_at', $modified))
$expense->updated_at = $modified['updated_at'];
$expense->save(['timestamps' => false]);
$old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id; $old_user_key = array_key_exists('user_id', $resource) ?? $this->user->id;
$key = "expenses_{$resource['id']}"; $key = "expenses_{$resource['id']}";

View File

@ -49,7 +49,7 @@ class VersionCheck implements ShouldQueue
if(!$account) if(!$account)
return; return;
if($account->plan == 'white_label' && $account->plan_expires->lt(now())){ if($account->plan == 'white_label' && $account->plan_expires && $account->plan_expires->lt(now())){
$account->plan = null; $account->plan = null;
$account->plan_expires = null; $account->plan_expires = null;
$account->save(); $account->save();

View File

@ -47,6 +47,7 @@ class InvoiceEmailActivity implements ShouldQueue
$fields->user_id = $event->invitation->invoice->user_id; $fields->user_id = $event->invitation->invoice->user_id;
$fields->company_id = $event->invitation->invoice->company_id; $fields->company_id = $event->invitation->invoice->company_id;
$fields->client_contact_id = $event->invitation->invoice->client_contact_id; $fields->client_contact_id = $event->invitation->invoice->client_contact_id;
$fields->client_id = $event->invitation->invoice->client_id;
$fields->activity_type_id = Activity::EMAIL_INVOICE; $fields->activity_type_id = Activity::EMAIL_INVOICE;
$this->activity_repo->save($fields, $event->invitation->invoice, $event->event_vars); $this->activity_repo->save($fields, $event->invitation->invoice, $event->event_vars);

View File

@ -48,6 +48,7 @@ class QuoteEmailActivity implements ShouldQueue
$fields->user_id = $event->invitation->quote->user_id; $fields->user_id = $event->invitation->quote->user_id;
$fields->company_id = $event->invitation->quote->company_id; $fields->company_id = $event->invitation->quote->company_id;
$fields->client_contact_id = $event->invitation->quote->client_contact_id; $fields->client_contact_id = $event->invitation->quote->client_contact_id;
$fields->client_id = $event->invitation->quote->client_id;
$fields->activity_type_id = Activity::EMAIL_QUOTE; $fields->activity_type_id = Activity::EMAIL_QUOTE;
$this->activity_repo->save($fields, $event->invitation->quote, $event->event_vars); $this->activity_repo->save($fields, $event->invitation->quote, $event->event_vars);

View File

@ -47,7 +47,6 @@ class CompanyUser extends Pivot
'is_locked', 'is_locked',
'slack_webhook_url', 'slack_webhook_url',
'shop_restricted', 'shop_restricted',
'number_years_active',
]; ];
protected $touches = ['user']; protected $touches = ['user'];

View File

@ -157,6 +157,7 @@ class CompanyTransformer extends EntityTransformer
'oauth_password_required' => (bool)$company->oauth_password_required, 'oauth_password_required' => (bool)$company->oauth_password_required,
'session_timeout' => (int)$company->session_timeout, 'session_timeout' => (int)$company->session_timeout,
'default_password_timeout' => (int) $company->default_password_timeout, 'default_password_timeout' => (int) $company->default_password_timeout,
'invoice_task_datelog' => (bool) $company->invoice_task_datelog,
]; ];
} }

View File

@ -51,7 +51,7 @@ class CompanyUserTransformer extends EntityTransformer
'archived_at' => (int) $company_user->deleted_at, 'archived_at' => (int) $company_user->deleted_at,
'created_at' => (int) $company_user->created_at, 'created_at' => (int) $company_user->created_at,
'permissions_updated_at' => (int) $company_user->permissions_updated_at, 'permissions_updated_at' => (int) $company_user->permissions_updated_at,
'number_years_active' => (int) $company_user->number_years_active, //'number_years_active' => (int) $company_user->number_years_active,
]; ];
} }

View File

@ -154,7 +154,7 @@ class HtmlEngine
} }
$data['$portal_url'] = ['value' => $this->invitation->getPortalLink(), 'label' =>'']; $data['$portal_url'] = ['value' => $this->invitation->getPortalLink(), 'label' =>''];
$data['$entity_number'] = &$data['$number']; $data['$entity_number'] = &$data['$number'];
$data['$invoice.discount'] = ['value' => Number::formatMoney($this->entity_calc->getTotalDiscount(), $this->client) ?: ' ', 'label' => ctrans('texts.discount')]; $data['$invoice.discount'] = ['value' => Number::formatMoney($this->entity_calc->getTotalDiscount(), $this->client) ?: ' ', 'label' => ctrans('texts.discount')];
$data['$discount'] = &$data['$invoice.discount']; $data['$discount'] = &$data['$invoice.discount'];
@ -238,7 +238,7 @@ class HtmlEngine
$data['$vat_number'] = ['value' => $this->client->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')]; $data['$vat_number'] = ['value' => $this->client->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')];
$data['$website'] = ['value' => $this->client->present()->website() ?: ' ', 'label' => ctrans('texts.website')]; $data['$website'] = ['value' => $this->client->present()->website() ?: ' ', 'label' => ctrans('texts.website')];
$data['$phone'] = ['value' => $this->client->present()->phone() ?: ' ', 'label' => ctrans('texts.phone')]; $data['$phone'] = ['value' => $this->client->present()->phone() ?: ' ', 'label' => ctrans('texts.phone')];
$data['$country'] = ['value' => isset($this->client->country->name) ? $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['$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')];
$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'];

View File

@ -431,54 +431,55 @@ trait GeneratesCounter
$reset_date = Carbon::parse($client->getSetting('reset_counter_date'), $timezone->name); $reset_date = Carbon::parse($client->getSetting('reset_counter_date'), $timezone->name);
if (! $reset_date->isToday() || ! $client->getSetting('reset_counter_date')) { if (! $reset_date->lte(now()) || ! $client->getSetting('reset_counter_date')) {
return false; return false;
} }
switch ($reset_counter_frequency) { switch ($reset_counter_frequency) {
case RecurringInvoice::FREQUENCY_DAILY: case RecurringInvoice::FREQUENCY_DAILY:
$reset_date->addDay(); now()->addDay();
break; break;
case RecurringInvoice::FREQUENCY_WEEKLY: case RecurringInvoice::FREQUENCY_WEEKLY:
$reset_date->addWeek(); now()->addWeek();
break; break;
case RecurringInvoice::FREQUENCY_TWO_WEEKS: case RecurringInvoice::FREQUENCY_TWO_WEEKS:
$reset_date->addWeeks(2); now()->addWeeks(2);
break; break;
case RecurringInvoice::FREQUENCY_FOUR_WEEKS: case RecurringInvoice::FREQUENCY_FOUR_WEEKS:
$reset_date->addWeeks(4); now()->addWeeks(4);
break; break;
case RecurringInvoice::FREQUENCY_MONTHLY: case RecurringInvoice::FREQUENCY_MONTHLY:
$reset_date->addMonth(); now()->addMonth();
break; break;
case RecurringInvoice::FREQUENCY_TWO_MONTHS: case RecurringInvoice::FREQUENCY_TWO_MONTHS:
$reset_date->addMonths(2); now()->addMonths(2);
break; break;
case RecurringInvoice::FREQUENCY_THREE_MONTHS: case RecurringInvoice::FREQUENCY_THREE_MONTHS:
$reset_date->addMonths(3); now()->addMonths(3);
break; break;
case RecurringInvoice::FREQUENCY_FOUR_MONTHS: case RecurringInvoice::FREQUENCY_FOUR_MONTHS:
$reset_date->addMonths(4); now()->addMonths(4);
break; break;
case RecurringInvoice::FREQUENCY_SIX_MONTHS: case RecurringInvoice::FREQUENCY_SIX_MONTHS:
$reset_date->addMonths(6); now()->addMonths(6);
break; break;
case RecurringInvoice::FREQUENCY_ANNUALLY: case RecurringInvoice::FREQUENCY_ANNUALLY:
$reset_date->addYear(); now()->addYear();
break; break;
case RecurringInvoice::FREQUENCY_TWO_YEARS: case RecurringInvoice::FREQUENCY_TWO_YEARS:
$reset_date->addYears(2); now()->addYears(2);
break; break;
} }
$settings = $client->company->settings; $settings = $client->company->settings;
$settings->reset_counter_date = $reset_date->format($client->date_format()); $settings->reset_counter_date = $reset_date->format('Y-m-d');
$settings->invoice_number_counter = 1; $settings->invoice_number_counter = 1;
$settings->quote_number_counter = 1; $settings->quote_number_counter = 1;
$settings->credit_number_counter = 1; $settings->credit_number_counter = 1;
$client->company->settings = $settings; $client->company->settings = $settings;
$client->company->save(); $client->company->save();
} }
private function resetCompanyCounters($company) private function resetCompanyCounters($company)
@ -487,7 +488,7 @@ trait GeneratesCounter
$reset_date = Carbon::parse($company->settings->reset_counter_date, $timezone->name); $reset_date = Carbon::parse($company->settings->reset_counter_date, $timezone->name);
if (! $reset_date->isToday() || ! $company->settings->reset_counter_date) { if (! $reset_date->lte(now()) || ! $company->settings->reset_counter_date) {
return false; return false;
} }

View File

@ -30,6 +30,7 @@
"ext-dom": "*", "ext-dom": "*",
"ext-json": "*", "ext-json": "*",
"ext-libxml": "*", "ext-libxml": "*",
"asm/php-ansible": "dev-master",
"authorizenet/authorizenet": "^2.0", "authorizenet/authorizenet": "^2.0",
"bacon/bacon-qr-code": "^2.0", "bacon/bacon-qr-code": "^2.0",
"beganovich/snappdf": "^1.0", "beganovich/snappdf": "^1.0",

152
composer.lock generated
View File

@ -4,8 +4,60 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "f01381d3d00f0bd84acbda078ad1b99e", "content-hash": "38a79899673526624db4d62a76dd9a5e",
"packages": [ "packages": [
{
"name": "asm/php-ansible",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/maschmann/php-ansible.git",
"reference": "4f2145cad264fd9f800baf6d3a79dd43fd8009db"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/maschmann/php-ansible/zipball/4f2145cad264fd9f800baf6d3a79dd43fd8009db",
"reference": "4f2145cad264fd9f800baf6d3a79dd43fd8009db",
"shasum": ""
},
"require": {
"php": "^7.1.0|>8.0.0",
"psr/log": "^1.1",
"symfony/process": "^4.0|^5.0"
},
"require-dev": {
"mikey179/vfsstream": "^1.6",
"phpunit/phpunit": "^9.0"
},
"default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
"Asm\\": "Asm"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Marc Aschmann",
"email": "maschmann@gmail.com"
}
],
"description": "A PHP wrapper for Ansible.",
"homepage": "https://github.com/maschmann/php-ansible",
"keywords": [
"ansible",
"php"
],
"support": {
"issues": "https://github.com/maschmann/php-ansible/issues",
"source": "https://github.com/maschmann/php-ansible/tree/master"
},
"time": "2021-03-02T18:27:29+00:00"
},
{ {
"name": "authorizenet/authorizenet", "name": "authorizenet/authorizenet",
"version": "2.0.2", "version": "2.0.2",
@ -51,16 +103,16 @@
}, },
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.179.2", "version": "3.180.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "7d3490e35878d0884905fa0c1ab43ecf178c8d9b" "reference": "7801112fd8be227954a6ecfbfd85b01ee4a7cae4"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7d3490e35878d0884905fa0c1ab43ecf178c8d9b", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/7801112fd8be227954a6ecfbfd85b01ee4a7cae4",
"reference": "7d3490e35878d0884905fa0c1ab43ecf178c8d9b", "reference": "7801112fd8be227954a6ecfbfd85b01ee4a7cae4",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -135,9 +187,9 @@
"support": { "support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues", "issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.179.2" "source": "https://github.com/aws/aws-sdk-php/tree/3.180.1"
}, },
"time": "2021-04-30T19:46:52+00:00" "time": "2021-05-04T18:14:38+00:00"
}, },
{ {
"name": "bacon/bacon-qr-code", "name": "bacon/bacon-qr-code",
@ -2054,16 +2106,16 @@
}, },
{ {
"name": "google/apiclient-services", "name": "google/apiclient-services",
"version": "v0.172.0", "version": "v0.173.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/googleapis/google-api-php-client-services.git", "url": "https://github.com/googleapis/google-api-php-client-services.git",
"reference": "85e8a9f0062a9e1aba3cdc0f499968bc8de78b7d" "reference": "9034b5ba3e25c9ad8e49b6457b9cad21fd9d9847"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/85e8a9f0062a9e1aba3cdc0f499968bc8de78b7d", "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/9034b5ba3e25c9ad8e49b6457b9cad21fd9d9847",
"reference": "85e8a9f0062a9e1aba3cdc0f499968bc8de78b7d", "reference": "9034b5ba3e25c9ad8e49b6457b9cad21fd9d9847",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -2089,9 +2141,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/googleapis/google-api-php-client-services/issues", "issues": "https://github.com/googleapis/google-api-php-client-services/issues",
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.172.0" "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.173.0"
}, },
"time": "2021-04-27T16:21:24+00:00" "time": "2021-05-02T11:20:02+00:00"
}, },
{ {
"name": "google/auth", "name": "google/auth",
@ -3836,12 +3888,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/thephpleague/omnipay.git", "url": "https://github.com/thephpleague/omnipay.git",
"reference": "e9439db0633ba988e6f6cdd029fad38aad73f9f6" "reference": "d090c000030fc759e32f6f747873b5d630103030"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/thephpleague/omnipay/zipball/e9439db0633ba988e6f6cdd029fad38aad73f9f6", "url": "https://api.github.com/repos/thephpleague/omnipay/zipball/d090c000030fc759e32f6f747873b5d630103030",
"reference": "e9439db0633ba988e6f6cdd029fad38aad73f9f6", "reference": "d090c000030fc759e32f6f747873b5d630103030",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3886,7 +3938,7 @@
"issues": "https://github.com/thephpleague/omnipay/issues", "issues": "https://github.com/thephpleague/omnipay/issues",
"source": "https://github.com/thephpleague/omnipay/tree/master" "source": "https://github.com/thephpleague/omnipay/tree/master"
}, },
"time": "2021-03-12T09:17:59+00:00" "time": "2021-05-02T15:02:18+00:00"
}, },
{ {
"name": "livewire/livewire", "name": "livewire/livewire",
@ -4330,16 +4382,16 @@
}, },
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "2.46.0", "version": "2.47.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/briannesbitt/Carbon.git", "url": "https://github.com/briannesbitt/Carbon.git",
"reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4" "reference": "606262fd8888b75317ba9461825a24fc34001e1e"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/606262fd8888b75317ba9461825a24fc34001e1e",
"reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", "reference": "606262fd8888b75317ba9461825a24fc34001e1e",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4419,20 +4471,20 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2021-02-24T17:30:44+00:00" "time": "2021-04-13T21:54:02+00:00"
}, },
{ {
"name": "nikic/php-parser", "name": "nikic/php-parser",
"version": "v4.10.4", "version": "v4.10.5",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/nikic/PHP-Parser.git", "url": "https://github.com/nikic/PHP-Parser.git",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4432ba399e47c66624bc73c8c0f811e5c109576f",
"reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -4473,9 +4525,9 @@
], ],
"support": { "support": {
"issues": "https://github.com/nikic/PHP-Parser/issues", "issues": "https://github.com/nikic/PHP-Parser/issues",
"source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.5"
}, },
"time": "2020-12-20T10:01:03+00:00" "time": "2021-05-03T19:11:20+00:00"
}, },
{ {
"name": "nwidart/laravel-modules", "name": "nwidart/laravel-modules",
@ -6028,16 +6080,16 @@
}, },
{ {
"name": "psr/log", "name": "psr/log",
"version": "1.1.3", "version": "1.1.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/php-fig/log.git", "url": "https://github.com/php-fig/log.git",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -6061,7 +6113,7 @@
"authors": [ "authors": [
{ {
"name": "PHP-FIG", "name": "PHP-FIG",
"homepage": "http://www.php-fig.org/" "homepage": "https://www.php-fig.org/"
} }
], ],
"description": "Common interface for logging libraries", "description": "Common interface for logging libraries",
@ -6072,9 +6124,9 @@
"psr-3" "psr-3"
], ],
"support": { "support": {
"source": "https://github.com/php-fig/log/tree/1.1.3" "source": "https://github.com/php-fig/log/tree/1.1.4"
}, },
"time": "2020-03-23T09:12:05+00:00" "time": "2021-05-03T11:20:27+00:00"
}, },
{ {
"name": "psr/simple-cache", "name": "psr/simple-cache",
@ -9694,16 +9746,16 @@
}, },
{ {
"name": "turbo124/beacon", "name": "turbo124/beacon",
"version": "1.0.10", "version": "1.0.16",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/turbo124/beacon.git", "url": "https://github.com/turbo124/beacon.git",
"reference": "91d9b06848f45ef9ed933ef3b99b77fcc107c9df" "reference": "17b6fc4370422a935ff7f2038c5167945905533f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/turbo124/beacon/zipball/91d9b06848f45ef9ed933ef3b99b77fcc107c9df", "url": "https://api.github.com/repos/turbo124/beacon/zipball/17b6fc4370422a935ff7f2038c5167945905533f",
"reference": "91d9b06848f45ef9ed933ef3b99b77fcc107c9df", "reference": "17b6fc4370422a935ff7f2038c5167945905533f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -9751,9 +9803,9 @@
"turbo124" "turbo124"
], ],
"support": { "support": {
"source": "https://github.com/turbo124/beacon/tree/1.0.10" "source": "https://github.com/turbo124/beacon/tree/1.0.16"
}, },
"time": "2021-04-25T01:37:06+00:00" "time": "2021-05-05T01:09:24+00:00"
}, },
{ {
"name": "turbo124/laravel-gmail", "name": "turbo124/laravel-gmail",
@ -11311,16 +11363,16 @@
}, },
{ {
"name": "friendsofphp/php-cs-fixer", "name": "friendsofphp/php-cs-fixer",
"version": "v2.18.6", "version": "v2.19.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
"reference": "5fed214993e7863cef88a08f214344891299b9e4" "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/5fed214993e7863cef88a08f214344891299b9e4", "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d5b8a9d852b292c2f8a035200fa6844b1f82300b",
"reference": "5fed214993e7863cef88a08f214344891299b9e4", "reference": "d5b8a9d852b292c2f8a035200fa6844b1f82300b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -11368,6 +11420,11 @@
"php-cs-fixer" "php-cs-fixer"
], ],
"type": "application", "type": "application",
"extra": {
"branch-alias": {
"dev-master": "2.19-dev"
}
},
"autoload": { "autoload": {
"psr-4": { "psr-4": {
"PhpCsFixer\\": "src/" "PhpCsFixer\\": "src/"
@ -11403,7 +11460,7 @@
"description": "A tool to automatically fix PHP code style", "description": "A tool to automatically fix PHP code style",
"support": { "support": {
"issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
"source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.18.6" "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.0"
}, },
"funding": [ "funding": [
{ {
@ -11411,7 +11468,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2021-04-19T19:45:11+00:00" "time": "2021-05-03T21:43:24+00:00"
}, },
{ {
"name": "hamcrest/hamcrest-php", "name": "hamcrest/hamcrest-php",
@ -14242,6 +14299,7 @@
"aliases": [], "aliases": [],
"minimum-stability": "dev", "minimum-stability": "dev",
"stability-flags": { "stability-flags": {
"asm/php-ansible": 20,
"webpatser/laravel-countries": 20 "webpatser/laravel-countries": 20
}, },
"prefer-stable": true, "prefer-stable": true,

View File

@ -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.1.60', 'app_version' => '5.1.61',
'app_tag' => '5.1.60-release', 'app_tag' => '5.1.61-release',
'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', false), 'api_secret' => env('API_SECRET', false),

View File

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddTaskPropertyToCompaniesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('company_user', function (Blueprint $table) {
$table->dropColumn('number_years_active');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@ -62,7 +62,7 @@ class PaymentLibrariesSeeder extends Seeder
['id' => 36, 'name' => 'AGMS', 'provider' => 'Agms', 'key' => '1b3c6f3ccfea4f5e7eadeae188cccd7f', 'fields' => '{"username":"","password":"","apiKey":"","accountNumber":""}'], ['id' => 36, 'name' => 'AGMS', 'provider' => 'Agms', 'key' => '1b3c6f3ccfea4f5e7eadeae188cccd7f', 'fields' => '{"username":"","password":"","apiKey":"","accountNumber":""}'],
['id' => 37, 'name' => 'Barclays', 'provider' => 'BarclaysEpdq\Essential', 'key' => '7cba6ce5c125f9cb47ea8443ae671b68', 'fields' => '{"clientId":"","testMode":false,"language":"en_US","callbackMethod":"POST"}'], ['id' => 37, 'name' => 'Barclays', 'provider' => 'BarclaysEpdq\Essential', 'key' => '7cba6ce5c125f9cb47ea8443ae671b68', 'fields' => '{"clientId":"","testMode":false,"language":"en_US","callbackMethod":"POST"}'],
['id' => 38, 'name' => 'Cardgate', 'provider' => 'Cardgate', 'key' => 'b98cfa5f750e16cee3524b7b7e78fbf6', 'fields' => '{"merchantId":"","language":"nl","apiKey":"","siteId":"","notifyUrl":"","returnUrl":"","cancelUrl":"","testMode":false}'], ['id' => 38, 'name' => 'Cardgate', 'provider' => 'Cardgate', 'key' => 'b98cfa5f750e16cee3524b7b7e78fbf6', 'fields' => '{"merchantId":"","language":"nl","apiKey":"","siteId":"","notifyUrl":"","returnUrl":"","cancelUrl":"","testMode":false}'],
['id' => 39, 'name' => 'Checkout.com', 'provider' => 'CheckoutCom', 'key' => '3758e7f7c6f4cecf0f4f348b9a00f456', 'fields' => '{"secretApiKey":"","publicApiKey":"","testMode":false,"threeds:false"}'], ['id' => 39, 'name' => 'Checkout.com', 'provider' => 'CheckoutCom', 'key' => '3758e7f7c6f4cecf0f4f348b9a00f456', 'fields' => '{"secretApiKey":"","publicApiKey":"","testMode":false,"threeds":false}'],
['id' => 40, 'name' => 'Creditcall', 'provider' => 'Creditcall', 'key' => 'cbc7ef7c99d31ec05492fbcb37208263', 'fields' => '{"terminalId":"","transactionKey":"","testMode":false,"verifyCvv":true,"verifyAddress":false,"verifyZip":false}'], ['id' => 40, 'name' => 'Creditcall', 'provider' => 'Creditcall', 'key' => 'cbc7ef7c99d31ec05492fbcb37208263', 'fields' => '{"terminalId":"","transactionKey":"","testMode":false,"verifyCvv":true,"verifyAddress":false,"verifyZip":false}'],
['id' => 41, 'name' => 'Cybersource', 'provider' => 'Cybersource', 'key' => 'e186a98d3b079028a73390bdc11bdb82', 'fields' => '{"profileId":"","secretKey":"","accessKey":"","testMode":false}'], ['id' => 41, 'name' => 'Cybersource', 'provider' => 'Cybersource', 'key' => 'e186a98d3b079028a73390bdc11bdb82', 'fields' => '{"profileId":"","secretKey":"","accessKey":"","testMode":false}'],
['id' => 42, 'name' => 'ecoPayz', 'provider' => 'Ecopayz', 'key' => '761040aca40f685d1ab55e2084b30670', 'fields' => '{"merchantId":"","merchantPassword":"","merchantAccountNumber":"","testMode":false}'], ['id' => 42, 'name' => 'ecoPayz', 'provider' => 'Ecopayz', 'key' => '761040aca40f685d1ab55e2084b30670', 'fields' => '{"merchantId":"","merchantPassword":"","merchantAccountNumber":"","testMode":false}'],

View File

@ -5037,6 +5037,7 @@ pedantic
platform platform
process process
stream_transform stream_transform
sync_http
term_glyph term_glyph
Copyright 2017, the Dart project authors. All rights reserved. Copyright 2017, the Dart project authors. All rights reserved.
@ -5420,6 +5421,7 @@ charts_flutter
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
clock clock
coverage coverage
fake_async
quiver quiver
@ -7161,6 +7163,7 @@ SOFTWARE.
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
flutter_styled_toast flutter_styled_toast
webdriver
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004

View File

@ -9,8 +9,8 @@ const RESOURCES = {
"icons/Icon-192.png": "bb1cf5f6982006952211c7c8404ffbed", "icons/Icon-192.png": "bb1cf5f6982006952211c7c8404ffbed",
"icons/Icon-512.png": "0f9aff01367f0a0c69773d25ca16ef35", "icons/Icon-512.png": "0f9aff01367f0a0c69773d25ca16ef35",
"manifest.json": "ce1b79950eb917ea619a0a30da27c6a3", "manifest.json": "ce1b79950eb917ea619a0a30da27c6a3",
"main.dart.js": "1611483da0db927703a9fdff4a860b7f", "main.dart.js": "ebae742cbdb100acc50ff9790d1c3496",
"assets/NOTICES": "dcba058006722202a4906fb433998480", "assets/NOTICES": "687b68d41e137cfbdee105c0b9be3e9d",
"assets/fonts/MaterialIcons-Regular.otf": "1288c9e28052e028aba623321f7826ac", "assets/fonts/MaterialIcons-Regular.otf": "1288c9e28052e028aba623321f7826ac",
"assets/AssetManifest.json": "659dcf9d1baf3aed3ab1b9c42112bf8f", "assets/AssetManifest.json": "659dcf9d1baf3aed3ab1b9c42112bf8f",
"assets/packages/material_design_icons_flutter/lib/fonts/materialdesignicons-webfont.ttf": "174c02fc4609e8fc4389f5d21f16a296", "assets/packages/material_design_icons_flutter/lib/fonts/materialdesignicons-webfont.ttf": "174c02fc4609e8fc4389f5d21f16a296",

206344
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

203876
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