mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 04:07:32 -05:00 
			
		
		
		
	Merge branch 'v5-develop' of https://github.com/turbo124/invoiceninja into v5-develop
This commit is contained in:
		
						commit
						810e00cb86
					
				@ -1 +1 @@
 | 
				
			|||||||
5.5.26
 | 
					5.5.29
 | 
				
			||||||
@ -59,6 +59,8 @@ class Account extends BaseModel
 | 
				
			|||||||
        'user_agent',
 | 
					        'user_agent',
 | 
				
			||||||
        'platform',
 | 
					        'platform',
 | 
				
			||||||
        'set_react_as_default_ap',
 | 
					        'set_react_as_default_ap',
 | 
				
			||||||
 | 
					        'inapp_transaction_id',
 | 
				
			||||||
 | 
					        'num_users',
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										86
									
								
								app/Notifications/Ninja/DomainRenewalFailureNotification.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								app/Notifications/Ninja/DomainRenewalFailureNotification.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,86 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Invoice Ninja (https://invoiceninja.com).
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @link https://github.com/invoiceninja/invoiceninja source repository
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @license https://www.elastic.co/licensing/elastic-license
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace App\Notifications\Ninja;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use App\Models\Account;
 | 
				
			||||||
 | 
					use App\Models\Client;
 | 
				
			||||||
 | 
					use Illuminate\Bus\Queueable;
 | 
				
			||||||
 | 
					use Illuminate\Contracts\Queue\ShouldQueue;
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Bus\Dispatchable;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\MailMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\SlackMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Notification;
 | 
				
			||||||
 | 
					use Illuminate\Queue\InteractsWithQueue;
 | 
				
			||||||
 | 
					use Illuminate\Queue\SerializesModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DomainRenewalFailureNotification extends Notification 
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Create a new notification instance.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected string $domain;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(string $domain)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $this->domain = $domain;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the notification's delivery channels.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param  mixed  $notifiable
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function via($notifiable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ['slack'];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the mail representation of the notification.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param  mixed  $notifiable
 | 
				
			||||||
 | 
					     * @return MailMessage
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toMail($notifiable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Get the array representation of the notification.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param  mixed  $notifiable
 | 
				
			||||||
 | 
					     * @return array
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toArray($notifiable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return [
 | 
				
			||||||
 | 
					            //
 | 
				
			||||||
 | 
					        ];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function toSlack($notifiable)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $content = "Domain Certificate _renewal_ failure:\n";
 | 
				
			||||||
 | 
					        $content .= "{$this->domain}\n";        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (new SlackMessage)
 | 
				
			||||||
 | 
					                ->success()
 | 
				
			||||||
 | 
					                ->from(ctrans('texts.notification_bot'))
 | 
				
			||||||
 | 
					                ->image('https://app.invoiceninja.com/favicon.png')
 | 
				
			||||||
 | 
					                ->content($content);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -89,7 +89,7 @@ class ACH
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function paymentResponse($request)
 | 
					    public function paymentResponse($request)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $payment_hash = PaymentHash::whereRaw('BINARY `hash`= ?', [$request->input('payment_hash')])->firstOrFail();
 | 
					        $payment_hash = PaymentHash::where('hash', $request->input('payment_hash'))->firstOrFail();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            $curl = curl_init();
 | 
					            $curl = curl_init();
 | 
				
			||||||
 | 
				
			|||||||
@ -54,6 +54,7 @@ class CreditCard
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function authorizeView(array $data)
 | 
					    public function authorizeView(array $data)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $data['gateway'] = $this->forte;
 | 
				
			||||||
        return render('gateways.forte.credit_card.authorize', $data);
 | 
					        return render('gateways.forte.credit_card.authorize', $data);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -53,6 +53,7 @@ class AccountTransformer extends EntityTransformer
 | 
				
			|||||||
    {
 | 
					    {
 | 
				
			||||||
        return [
 | 
					        return [
 | 
				
			||||||
            'id' => (string) $this->encodePrimaryKey($account->id),
 | 
					            'id' => (string) $this->encodePrimaryKey($account->id),
 | 
				
			||||||
 | 
					            'key' => (string) $account->key,
 | 
				
			||||||
            'default_url' => config('ninja.app_url'),
 | 
					            'default_url' => config('ninja.app_url'),
 | 
				
			||||||
            'plan' => $account->getPlan(),
 | 
					            'plan' => $account->getPlan(),
 | 
				
			||||||
            'plan_term' => (string) $account->plan_terms,
 | 
					            'plan_term' => (string) $account->plan_terms,
 | 
				
			||||||
 | 
				
			|||||||
@ -148,6 +148,7 @@ class HtmlEngine
 | 
				
			|||||||
        if ($this->entity_string == 'invoice' || $this->entity_string == 'recurring_invoice') {
 | 
					        if ($this->entity_string == 'invoice' || $this->entity_string == 'recurring_invoice') {
 | 
				
			||||||
            $data['$entity'] = ['value' => '', 'label' => ctrans('texts.invoice')];
 | 
					            $data['$entity'] = ['value' => '', 'label' => ctrans('texts.invoice')];
 | 
				
			||||||
            $data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
 | 
					            $data['$number'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
 | 
				
			||||||
 | 
					            $data['$invoice'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number')];
 | 
				
			||||||
            $data['$number_short'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number_short')];
 | 
					            $data['$number_short'] = ['value' => $this->entity->number ?: ' ', 'label' => ctrans('texts.invoice_number_short')];
 | 
				
			||||||
            $data['$entity.terms'] = ['value' => Helpers::processReservedKeywords(\nl2br($this->entity->terms), $this->client) ?: '', 'label' => ctrans('texts.invoice_terms')];
 | 
					            $data['$entity.terms'] = ['value' => Helpers::processReservedKeywords(\nl2br($this->entity->terms), $this->client) ?: '', 'label' => ctrans('texts.invoice_terms')];
 | 
				
			||||||
            $data['$terms'] = &$data['$entity.terms'];
 | 
					            $data['$terms'] = &$data['$entity.terms'];
 | 
				
			||||||
 | 
				
			|||||||
@ -301,9 +301,9 @@ trait MakesInvoiceValues
 | 
				
			|||||||
            $data[$key][$table_type.'.description'] = Helpers::processReservedKeywords($item->notes, $entity);
 | 
					            $data[$key][$table_type.'.description'] = Helpers::processReservedKeywords($item->notes, $entity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $data[$key][$table_type.".{$_table_type}1"] = strlen($item->custom_value1) > 1 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}1", $item->custom_value1, $entity) : '';
 | 
					            $data[$key][$table_type.".{$_table_type}1"] = strlen($item->custom_value1) > 1 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}1", $item->custom_value1, $entity) : '';
 | 
				
			||||||
            $data[$key][$table_type.".{$_table_type}2"] = strlen($item->custom_value1) > 2 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}2", $item->custom_value2, $entity) : '';
 | 
					            $data[$key][$table_type.".{$_table_type}2"] = strlen($item->custom_value2) > 2 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}2", $item->custom_value2, $entity) : '';
 | 
				
			||||||
            $data[$key][$table_type.".{$_table_type}3"] = strlen($item->custom_value1) > 3 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}3", $item->custom_value3, $entity) : '';
 | 
					            $data[$key][$table_type.".{$_table_type}3"] = strlen($item->custom_value3) > 3 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}3", $item->custom_value3, $entity) : '';
 | 
				
			||||||
            $data[$key][$table_type.".{$_table_type}4"] = strlen($item->custom_value1) > 4 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}4", $item->custom_value4, $entity) : '';
 | 
					            $data[$key][$table_type.".{$_table_type}4"] = strlen($item->custom_value4) > 4 ? $helpers->formatCustomFieldValue($this->company->custom_fields, "{$_table_type}4", $item->custom_value4, $entity) : '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ($item->quantity > 0 || $item->cost > 0) {
 | 
					            if ($item->quantity > 0 || $item->cost > 0) {
 | 
				
			||||||
                $data[$key][$table_type.'.quantity'] = Number::formatValueNoTrailingZeroes($item->quantity, $entity_currency);
 | 
					                $data[$key][$table_type.'.quantity'] = Number::formatValueNoTrailingZeroes($item->quantity, $entity_currency);
 | 
				
			||||||
 | 
				
			|||||||
@ -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.5.26',
 | 
					    'app_version' => '5.5.29',
 | 
				
			||||||
    'app_tag' => '5.5.26',
 | 
					    'app_tag' => '5.5.29',
 | 
				
			||||||
    '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', ''),
 | 
				
			||||||
 | 
				
			|||||||
@ -26,8 +26,8 @@ return new class extends Migration {
 | 
				
			|||||||
            $table->boolean('paused')->default(false);
 | 
					            $table->boolean('paused')->default(false);
 | 
				
			||||||
            $table->boolean('is_deleted')->default(false);
 | 
					            $table->boolean('is_deleted')->default(false);
 | 
				
			||||||
            $table->string('repeat_every');
 | 
					            $table->string('repeat_every');
 | 
				
			||||||
            $table->timestamp('start_from');
 | 
					            $table->timestamp('start_from')->nullable();
 | 
				
			||||||
            $table->timestamp('scheduled_run');
 | 
					            $table->timestamp('scheduled_run')->nullable();
 | 
				
			||||||
            $table->foreignIdFor(\App\Models\Company::class);
 | 
					            $table->foreignIdFor(\App\Models\Company::class);
 | 
				
			||||||
            $table->timestamps();
 | 
					            $table->timestamps();
 | 
				
			||||||
            $table->softDeletes();
 | 
					            $table->softDeletes();
 | 
				
			||||||
@ -41,6 +41,6 @@ return new class extends Migration {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public function down()
 | 
					    public function down()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Schema::dropIfExists('schedulers');
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -16,6 +16,17 @@ return new class extends Migration
 | 
				
			|||||||
        Schema::table('products', function (Blueprint $table) {
 | 
					        Schema::table('products', function (Blueprint $table) {
 | 
				
			||||||
            $table->index(['product_key', 'company_id']);
 | 
					            $table->index(['product_key', 'company_id']);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Schema::table('companies', function (Blueprint $table) {
 | 
				
			||||||
 | 
					            $table->index(['subdomain', 'portal_mode']);
 | 
				
			||||||
 | 
					            $table->index(['portal_domain', 'portal_mode']);
 | 
				
			||||||
 | 
					            $table->index('company_key');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Schema::table('accounts', function (Blueprint $table) {
 | 
				
			||||||
 | 
					            $table->index('key');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -25,8 +36,6 @@ return new class extends Migration
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public function down()
 | 
					    public function down()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        Schema::table('products', function (Blueprint $table) {
 | 
					
 | 
				
			||||||
            //
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Database\Migrations\Migration;
 | 
				
			||||||
 | 
					use Illuminate\Database\Schema\Blueprint;
 | 
				
			||||||
 | 
					use Illuminate\Support\Facades\Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					return new class extends Migration
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Run the migrations.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function up()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Schema::table('company_tokens', function (Blueprint $table) {
 | 
				
			||||||
 | 
					            $table->index('token');
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Reverse the migrations.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @return void
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function down()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -44,11 +44,12 @@ CREATE TABLE `accounts` (
 | 
				
			|||||||
  `set_react_as_default_ap` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `set_react_as_default_ap` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `is_flagged` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `is_flagged` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `is_verified_account` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `is_verified_account` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `account_sms_verification_code` text COLLATE utf8mb4_unicode_ci,
 | 
					  `account_sms_verification_code` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `account_sms_verification_number` text COLLATE utf8mb4_unicode_ci,
 | 
					  `account_sms_verification_number` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `account_sms_verified` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `account_sms_verified` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  KEY `accounts_payment_id_index` (`payment_id`)
 | 
					  KEY `accounts_payment_id_index` (`payment_id`),
 | 
				
			||||||
 | 
					  KEY `accounts_key_index` (`key`)
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
				
			||||||
/*!40101 SET character_set_client = @saved_cs_client */;
 | 
					/*!40101 SET character_set_client = @saved_cs_client */;
 | 
				
			||||||
DROP TABLE IF EXISTS `activities`;
 | 
					DROP TABLE IF EXISTS `activities`;
 | 
				
			||||||
@ -222,6 +223,8 @@ CREATE TABLE `client_contacts` (
 | 
				
			|||||||
  KEY `client_contacts_company_id_index` (`company_id`),
 | 
					  KEY `client_contacts_company_id_index` (`company_id`),
 | 
				
			||||||
  KEY `client_contacts_client_id_index` (`client_id`),
 | 
					  KEY `client_contacts_client_id_index` (`client_id`),
 | 
				
			||||||
  KEY `client_contacts_user_id_index` (`user_id`),
 | 
					  KEY `client_contacts_user_id_index` (`user_id`),
 | 
				
			||||||
 | 
					  KEY `client_contacts_contact_key(20)_index` (`contact_key`(20)),
 | 
				
			||||||
 | 
					  KEY `client_contacts_email_index` (`email`),
 | 
				
			||||||
  CONSTRAINT `client_contacts_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `client_contacts_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
				
			||||||
/*!40101 SET character_set_client = @saved_cs_client */;
 | 
					/*!40101 SET character_set_client = @saved_cs_client */;
 | 
				
			||||||
@ -333,6 +336,7 @@ CREATE TABLE `clients` (
 | 
				
			|||||||
  KEY `clients_size_id_foreign` (`size_id`),
 | 
					  KEY `clients_size_id_foreign` (`size_id`),
 | 
				
			||||||
  KEY `clients_company_id_index` (`company_id`),
 | 
					  KEY `clients_company_id_index` (`company_id`),
 | 
				
			||||||
  KEY `clients_user_id_index` (`user_id`),
 | 
					  KEY `clients_user_id_index` (`user_id`),
 | 
				
			||||||
 | 
					  KEY `clients_client_hash(20)_index` (`client_hash`(20)),
 | 
				
			||||||
  CONSTRAINT `clients_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `clients_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `clients_industry_id_foreign` FOREIGN KEY (`industry_id`) REFERENCES `industries` (`id`),
 | 
					  CONSTRAINT `clients_industry_id_foreign` FOREIGN KEY (`industry_id`) REFERENCES `industries` (`id`),
 | 
				
			||||||
  CONSTRAINT `clients_size_id_foreign` FOREIGN KEY (`size_id`) REFERENCES `sizes` (`id`)
 | 
					  CONSTRAINT `clients_size_id_foreign` FOREIGN KEY (`size_id`) REFERENCES `sizes` (`id`)
 | 
				
			||||||
@ -410,11 +414,16 @@ CREATE TABLE `companies` (
 | 
				
			|||||||
  `inventory_notification_threshold` int NOT NULL DEFAULT '0',
 | 
					  `inventory_notification_threshold` int NOT NULL DEFAULT '0',
 | 
				
			||||||
  `stock_notification` tinyint(1) NOT NULL DEFAULT '1',
 | 
					  `stock_notification` tinyint(1) NOT NULL DEFAULT '1',
 | 
				
			||||||
  `enabled_expense_tax_rates` int unsigned NOT NULL DEFAULT '0',
 | 
					  `enabled_expense_tax_rates` int unsigned NOT NULL DEFAULT '0',
 | 
				
			||||||
 | 
					  `invoice_task_project` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
 | 
					  `report_include_deleted` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  UNIQUE KEY `companies_company_key_unique` (`company_key`),
 | 
					  UNIQUE KEY `companies_company_key_unique` (`company_key`),
 | 
				
			||||||
  KEY `companies_industry_id_foreign` (`industry_id`),
 | 
					  KEY `companies_industry_id_foreign` (`industry_id`),
 | 
				
			||||||
  KEY `companies_size_id_foreign` (`size_id`),
 | 
					  KEY `companies_size_id_foreign` (`size_id`),
 | 
				
			||||||
  KEY `companies_account_id_index` (`account_id`),
 | 
					  KEY `companies_account_id_index` (`account_id`),
 | 
				
			||||||
 | 
					  KEY `companies_subdomain_portal_mode_index` (`subdomain`,`portal_mode`),
 | 
				
			||||||
 | 
					  KEY `companies_portal_domain_portal_mode_index` (`portal_domain`,`portal_mode`),
 | 
				
			||||||
 | 
					  KEY `companies_company_key_index` (`company_key`),
 | 
				
			||||||
  CONSTRAINT `companies_account_id_foreign` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `companies_account_id_foreign` FOREIGN KEY (`account_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `companies_industry_id_foreign` FOREIGN KEY (`industry_id`) REFERENCES `industries` (`id`),
 | 
					  CONSTRAINT `companies_industry_id_foreign` FOREIGN KEY (`industry_id`) REFERENCES `industries` (`id`),
 | 
				
			||||||
  CONSTRAINT `companies_size_id_foreign` FOREIGN KEY (`size_id`) REFERENCES `sizes` (`id`)
 | 
					  CONSTRAINT `companies_size_id_foreign` FOREIGN KEY (`size_id`) REFERENCES `sizes` (`id`)
 | 
				
			||||||
@ -848,7 +857,7 @@ DROP TABLE IF EXISTS `failed_jobs`;
 | 
				
			|||||||
/*!50503 SET character_set_client = utf8mb4 */;
 | 
					/*!50503 SET character_set_client = utf8mb4 */;
 | 
				
			||||||
CREATE TABLE `failed_jobs` (
 | 
					CREATE TABLE `failed_jobs` (
 | 
				
			||||||
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
 | 
					  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
 | 
				
			||||||
  `uuid` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `uuid` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
@ -1025,6 +1034,8 @@ CREATE TABLE `invoices` (
 | 
				
			|||||||
  KEY `invoices_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
					  KEY `invoices_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
				
			||||||
  KEY `invoices_client_id_index` (`client_id`),
 | 
					  KEY `invoices_client_id_index` (`client_id`),
 | 
				
			||||||
  KEY `invoices_company_id_index` (`company_id`),
 | 
					  KEY `invoices_company_id_index` (`company_id`),
 | 
				
			||||||
 | 
					  KEY `invoices_recurring_id_index` (`recurring_id`),
 | 
				
			||||||
 | 
					  KEY `invoices_status_id_balance_index` (`status_id`,`balance`),
 | 
				
			||||||
  CONSTRAINT `invoices_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `invoices_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `invoices_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `invoices_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `invoices_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `invoices_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
@ -1070,6 +1081,7 @@ CREATE TABLE `licenses` (
 | 
				
			|||||||
  `is_claimed` tinyint(1) DEFAULT NULL,
 | 
					  `is_claimed` tinyint(1) DEFAULT NULL,
 | 
				
			||||||
  `transaction_reference` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `transaction_reference` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `product_id` int unsigned DEFAULT NULL,
 | 
					  `product_id` int unsigned DEFAULT NULL,
 | 
				
			||||||
 | 
					  `recurring_invoice_id` bigint unsigned DEFAULT NULL,
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  UNIQUE KEY `licenses_license_key_unique` (`license_key`)
 | 
					  UNIQUE KEY `licenses_license_key_unique` (`license_key`)
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
				
			||||||
@ -1169,6 +1181,7 @@ CREATE TABLE `paymentables` (
 | 
				
			|||||||
  `deleted_at` timestamp(6) NULL DEFAULT NULL,
 | 
					  `deleted_at` timestamp(6) NULL DEFAULT NULL,
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  KEY `paymentables_payment_id_foreign` (`payment_id`),
 | 
					  KEY `paymentables_payment_id_foreign` (`payment_id`),
 | 
				
			||||||
 | 
					  KEY `paymentables_paymentable_id_index` (`paymentable_id`),
 | 
				
			||||||
  CONSTRAINT `paymentables_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `paymentables_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
				
			||||||
/*!40101 SET character_set_client = @saved_cs_client */;
 | 
					/*!40101 SET character_set_client = @saved_cs_client */;
 | 
				
			||||||
@ -1210,7 +1223,9 @@ CREATE TABLE `payments` (
 | 
				
			|||||||
  `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
 | 
					  `idempotency_key` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
 | 
					  UNIQUE KEY `payments_company_id_idempotency_key_unique` (`company_id`,`idempotency_key`),
 | 
				
			||||||
  KEY `payments_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
					  KEY `payments_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
				
			||||||
  KEY `payments_client_contact_id_foreign` (`client_contact_id`),
 | 
					  KEY `payments_client_contact_id_foreign` (`client_contact_id`),
 | 
				
			||||||
  KEY `payments_company_gateway_id_foreign` (`company_gateway_id`),
 | 
					  KEY `payments_company_gateway_id_foreign` (`company_gateway_id`),
 | 
				
			||||||
@ -1218,6 +1233,8 @@ CREATE TABLE `payments` (
 | 
				
			|||||||
  KEY `payments_company_id_index` (`company_id`),
 | 
					  KEY `payments_company_id_index` (`company_id`),
 | 
				
			||||||
  KEY `payments_client_id_index` (`client_id`),
 | 
					  KEY `payments_client_id_index` (`client_id`),
 | 
				
			||||||
  KEY `payments_status_id_index` (`status_id`),
 | 
					  KEY `payments_status_id_index` (`status_id`),
 | 
				
			||||||
 | 
					  KEY `payments_transaction_reference_index` (`transaction_reference`),
 | 
				
			||||||
 | 
					  KEY `payments_idempotency_key_index` (`idempotency_key`),
 | 
				
			||||||
  CONSTRAINT `payments_client_contact_id_foreign` FOREIGN KEY (`client_contact_id`) REFERENCES `client_contacts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `payments_client_contact_id_foreign` FOREIGN KEY (`client_contact_id`) REFERENCES `client_contacts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `payments_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `payments_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `payments_company_gateway_id_foreign` FOREIGN KEY (`company_gateway_id`) REFERENCES `company_gateways` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `payments_company_gateway_id_foreign` FOREIGN KEY (`company_gateway_id`) REFERENCES `company_gateways` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
@ -1262,6 +1279,7 @@ CREATE TABLE `products` (
 | 
				
			|||||||
  KEY `products_user_id_foreign` (`user_id`),
 | 
					  KEY `products_user_id_foreign` (`user_id`),
 | 
				
			||||||
  KEY `products_company_id_index` (`company_id`),
 | 
					  KEY `products_company_id_index` (`company_id`),
 | 
				
			||||||
  KEY `pro_co_us_up_index` (`company_id`,`user_id`,`assigned_user_id`,`updated_at`),
 | 
					  KEY `pro_co_us_up_index` (`company_id`,`user_id`,`assigned_user_id`,`updated_at`),
 | 
				
			||||||
 | 
					  KEY `products_product_key_company_id_index` (`product_key`,`company_id`),
 | 
				
			||||||
  CONSTRAINT `products_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `products_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `products_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `products_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
 | 
				
			||||||
@ -1308,11 +1326,11 @@ CREATE TABLE `purchase_order_invitations` (
 | 
				
			|||||||
  `user_id` int unsigned NOT NULL,
 | 
					  `user_id` int unsigned NOT NULL,
 | 
				
			||||||
  `vendor_contact_id` int unsigned NOT NULL,
 | 
					  `vendor_contact_id` int unsigned NOT NULL,
 | 
				
			||||||
  `purchase_order_id` bigint unsigned NOT NULL,
 | 
					  `purchase_order_id` bigint unsigned NOT NULL,
 | 
				
			||||||
  `key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `key` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `transaction_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `transaction_reference` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `message_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `message_id` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `email_error` mediumtext COLLATE utf8mb4_unicode_ci,
 | 
					  `email_error` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `signature_base64` text COLLATE utf8mb4_unicode_ci,
 | 
					  `signature_base64` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `signature_date` datetime DEFAULT NULL,
 | 
					  `signature_date` datetime DEFAULT NULL,
 | 
				
			||||||
  `sent_date` datetime DEFAULT NULL,
 | 
					  `sent_date` datetime DEFAULT NULL,
 | 
				
			||||||
  `viewed_date` datetime DEFAULT NULL,
 | 
					  `viewed_date` datetime DEFAULT NULL,
 | 
				
			||||||
@ -1320,6 +1338,7 @@ CREATE TABLE `purchase_order_invitations` (
 | 
				
			|||||||
  `created_at` timestamp(6) NULL DEFAULT NULL,
 | 
					  `created_at` timestamp(6) NULL DEFAULT NULL,
 | 
				
			||||||
  `updated_at` timestamp(6) NULL DEFAULT NULL,
 | 
					  `updated_at` timestamp(6) NULL DEFAULT NULL,
 | 
				
			||||||
  `deleted_at` timestamp(6) NULL DEFAULT NULL,
 | 
					  `deleted_at` timestamp(6) NULL DEFAULT NULL,
 | 
				
			||||||
 | 
					  `email_status` enum('delivered','bounced','spam') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  UNIQUE KEY `vendor_purchase_unique` (`vendor_contact_id`,`purchase_order_id`),
 | 
					  UNIQUE KEY `vendor_purchase_unique` (`vendor_contact_id`,`purchase_order_id`),
 | 
				
			||||||
  KEY `purchase_order_invitations_user_id_foreign` (`user_id`),
 | 
					  KEY `purchase_order_invitations_user_id_foreign` (`user_id`),
 | 
				
			||||||
@ -1349,25 +1368,25 @@ CREATE TABLE `purchase_orders` (
 | 
				
			|||||||
  `recurring_id` int unsigned DEFAULT NULL,
 | 
					  `recurring_id` int unsigned DEFAULT NULL,
 | 
				
			||||||
  `design_id` int unsigned DEFAULT NULL,
 | 
					  `design_id` int unsigned DEFAULT NULL,
 | 
				
			||||||
  `invoice_id` int unsigned DEFAULT NULL,
 | 
					  `invoice_id` int unsigned DEFAULT NULL,
 | 
				
			||||||
  `number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `discount` double(8,2) NOT NULL DEFAULT '0.00',
 | 
					  `discount` double(8,2) NOT NULL DEFAULT '0.00',
 | 
				
			||||||
  `is_amount_discount` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `is_amount_discount` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `po_number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `po_number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `date` date DEFAULT NULL,
 | 
					  `date` date DEFAULT NULL,
 | 
				
			||||||
  `last_sent_date` datetime DEFAULT NULL,
 | 
					  `last_sent_date` datetime DEFAULT NULL,
 | 
				
			||||||
  `due_date` date DEFAULT NULL,
 | 
					  `due_date` date DEFAULT NULL,
 | 
				
			||||||
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `line_items` mediumtext COLLATE utf8mb4_unicode_ci,
 | 
					  `line_items` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `backup` mediumtext COLLATE utf8mb4_unicode_ci,
 | 
					  `backup` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `footer` text COLLATE utf8mb4_unicode_ci,
 | 
					  `footer` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `public_notes` text COLLATE utf8mb4_unicode_ci,
 | 
					  `public_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `private_notes` text COLLATE utf8mb4_unicode_ci,
 | 
					  `private_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `terms` text COLLATE utf8mb4_unicode_ci,
 | 
					  `terms` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `tax_name1` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `tax_name1` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `tax_rate1` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
					  `tax_rate1` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
				
			||||||
  `tax_name2` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `tax_name2` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `tax_rate2` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
					  `tax_rate2` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
				
			||||||
  `tax_name3` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
					  `tax_name3` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
 | 
				
			||||||
  `tax_rate3` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
					  `tax_rate3` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
				
			||||||
  `total_taxes` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
					  `total_taxes` decimal(20,6) NOT NULL DEFAULT '0.000000',
 | 
				
			||||||
  `uses_inclusive_taxes` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `uses_inclusive_taxes` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
@ -1375,10 +1394,10 @@ CREATE TABLE `purchase_orders` (
 | 
				
			|||||||
  `reminder2_sent` date DEFAULT NULL,
 | 
					  `reminder2_sent` date DEFAULT NULL,
 | 
				
			||||||
  `reminder3_sent` date DEFAULT NULL,
 | 
					  `reminder3_sent` date DEFAULT NULL,
 | 
				
			||||||
  `reminder_last_sent` date DEFAULT NULL,
 | 
					  `reminder_last_sent` date DEFAULT NULL,
 | 
				
			||||||
  `custom_value1` text COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `custom_value2` text COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `custom_value3` text COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `custom_value4` text COLLATE utf8mb4_unicode_ci,
 | 
					  `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  `next_send_date` datetime DEFAULT NULL,
 | 
					  `next_send_date` datetime DEFAULT NULL,
 | 
				
			||||||
  `custom_surcharge1` decimal(20,6) DEFAULT NULL,
 | 
					  `custom_surcharge1` decimal(20,6) DEFAULT NULL,
 | 
				
			||||||
  `custom_surcharge2` decimal(20,6) DEFAULT NULL,
 | 
					  `custom_surcharge2` decimal(20,6) DEFAULT NULL,
 | 
				
			||||||
@ -1517,6 +1536,7 @@ CREATE TABLE `quotes` (
 | 
				
			|||||||
  KEY `quotes_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
					  KEY `quotes_company_id_deleted_at_index` (`company_id`,`deleted_at`),
 | 
				
			||||||
  KEY `quotes_client_id_index` (`client_id`),
 | 
					  KEY `quotes_client_id_index` (`client_id`),
 | 
				
			||||||
  KEY `quotes_company_id_index` (`company_id`),
 | 
					  KEY `quotes_company_id_index` (`company_id`),
 | 
				
			||||||
 | 
					  KEY `quotes_company_id_updated_at_index` (`company_id`,`updated_at`),
 | 
				
			||||||
  CONSTRAINT `quotes_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `quotes_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `quotes_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `quotes_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `quotes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `quotes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
@ -1813,16 +1833,16 @@ CREATE TABLE `schedulers` (
 | 
				
			|||||||
  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
 | 
					  `id` bigint unsigned NOT NULL AUTO_INCREMENT,
 | 
				
			||||||
  `paused` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `paused` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
 | 
					  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
 | 
				
			||||||
  `repeat_every` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `repeat_every` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `start_from` timestamp NOT NULL,
 | 
					  `start_from` timestamp NOT NULL,
 | 
				
			||||||
  `scheduled_run` timestamp NOT NULL,
 | 
					  `scheduled_run` timestamp NOT NULL,
 | 
				
			||||||
  `company_id` bigint unsigned NOT NULL,
 | 
					  `company_id` bigint unsigned NOT NULL,
 | 
				
			||||||
  `created_at` timestamp NULL DEFAULT NULL,
 | 
					  `created_at` timestamp NULL DEFAULT NULL,
 | 
				
			||||||
  `updated_at` timestamp NULL DEFAULT NULL,
 | 
					  `updated_at` timestamp NULL DEFAULT NULL,
 | 
				
			||||||
  `deleted_at` timestamp NULL DEFAULT NULL,
 | 
					  `deleted_at` timestamp NULL DEFAULT NULL,
 | 
				
			||||||
  `action_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `action_name` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `action_class` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
					  `action_class` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
 | 
				
			||||||
  `parameters` mediumtext COLLATE utf8mb4_unicode_ci,
 | 
					  `parameters` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
 | 
				
			||||||
  PRIMARY KEY (`id`),
 | 
					  PRIMARY KEY (`id`),
 | 
				
			||||||
  KEY `schedulers_action_name_index` (`action_name`)
 | 
					  KEY `schedulers_action_name_index` (`action_name`)
 | 
				
			||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
 | 
					) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
 | 
				
			||||||
@ -2123,6 +2143,8 @@ CREATE TABLE `vendor_contacts` (
 | 
				
			|||||||
  KEY `vendor_contacts_user_id_foreign` (`user_id`),
 | 
					  KEY `vendor_contacts_user_id_foreign` (`user_id`),
 | 
				
			||||||
  KEY `vendor_contacts_vendor_id_index` (`vendor_id`),
 | 
					  KEY `vendor_contacts_vendor_id_index` (`vendor_id`),
 | 
				
			||||||
  KEY `vendor_contacts_company_id_email_deleted_at_index` (`company_id`,`email`,`deleted_at`),
 | 
					  KEY `vendor_contacts_company_id_email_deleted_at_index` (`company_id`,`email`,`deleted_at`),
 | 
				
			||||||
 | 
					  KEY `vendor_contacts_contact_key(20)_index` (`contact_key`(20)),
 | 
				
			||||||
 | 
					  KEY `vendor_contacts_email_index` (`email`),
 | 
				
			||||||
  CONSTRAINT `vendor_contacts_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `vendor_contacts_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `vendor_contacts_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
					  CONSTRAINT `vendor_contacts_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
				
			||||||
  CONSTRAINT `vendor_contacts_vendor_id_foreign` FOREIGN KEY (`vendor_id`) REFERENCES `vendors` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
					  CONSTRAINT `vendor_contacts_vendor_id_foreign` FOREIGN KEY (`vendor_id`) REFERENCES `vendors` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 | 
				
			||||||
@ -2359,3 +2381,13 @@ INSERT INTO `migrations` VALUES (154,'2022_07_21_023805_add_hebrew_language',11)
 | 
				
			|||||||
INSERT INTO `migrations` VALUES (155,'2022_07_26_091216_add_sms_verification_to_hosted_account',11);
 | 
					INSERT INTO `migrations` VALUES (155,'2022_07_26_091216_add_sms_verification_to_hosted_account',11);
 | 
				
			||||||
INSERT INTO `migrations` VALUES (156,'2022_07_28_232340_enabled_expense_tax_rates_to_companies_table',11);
 | 
					INSERT INTO `migrations` VALUES (156,'2022_07_28_232340_enabled_expense_tax_rates_to_companies_table',11);
 | 
				
			||||||
INSERT INTO `migrations` VALUES (157,'2022_07_29_091235_correction_for_companies_table_types',11);
 | 
					INSERT INTO `migrations` VALUES (157,'2022_07_29_091235_correction_for_companies_table_types',11);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (158,'2022_08_11_011534_licenses_table_for_self_host',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (159,'2022_08_24_215917_invoice_task_project_companies_table',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (160,'2022_08_26_232500_add_email_status_column_to_purchase_order_invitations_table',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (161,'2022_08_28_210111_add_index_to_payments_table',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (162,'2022_09_05_024719_update_designs_for_tech_template',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (163,'2022_09_07_101731_add_reporting_option_to_companies_table',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (164,'2022_09_21_012417_add_threeds_to_braintree',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (165,'2022_09_30_235337_add_idempotency_key_to_payments',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (166,'2022_10_05_205645_add_indexes_to_client_hash',12);
 | 
				
			||||||
 | 
					INSERT INTO `migrations` VALUES (167,'2022_10_06_011344_add_key_to_products',12);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								public/flutter_service_worker.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								public/flutter_service_worker.js
									
									
									
									
										vendored
									
									
								
							@ -4,9 +4,9 @@ const TEMP = 'flutter-temp-cache';
 | 
				
			|||||||
const CACHE_NAME = 'flutter-app-cache';
 | 
					const CACHE_NAME = 'flutter-app-cache';
 | 
				
			||||||
const RESOURCES = {
 | 
					const RESOURCES = {
 | 
				
			||||||
  "favicon.png": "dca91c54388f52eded692718d5a98b8b",
 | 
					  "favicon.png": "dca91c54388f52eded692718d5a98b8b",
 | 
				
			||||||
"main.dart.js": "5b1a19e00c074ba73b725b51f90da896",
 | 
					"main.dart.js": "816eb6e0aa8c1f38ca5f0ddcd2e9a73b",
 | 
				
			||||||
"favicon.ico": "51636d3a390451561744c42188ccd628",
 | 
					"favicon.ico": "51636d3a390451561744c42188ccd628",
 | 
				
			||||||
"/": "eb40da80095b8fd3e80ef1eeb7fb0e22",
 | 
					"/": "0c9743ec646dd75ba43a367a96d6868d",
 | 
				
			||||||
"flutter.js": "f85e6fb278b0fd20c349186fb46ae36d",
 | 
					"flutter.js": "f85e6fb278b0fd20c349186fb46ae36d",
 | 
				
			||||||
"manifest.json": "ef43d90e57aa7682d7e2cfba2f484a40",
 | 
					"manifest.json": "ef43d90e57aa7682d7e2cfba2f484a40",
 | 
				
			||||||
"canvaskit/canvaskit.js": "2bc454a691c631b07a9307ac4ca47797",
 | 
					"canvaskit/canvaskit.js": "2bc454a691c631b07a9307ac4ca47797",
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										145774
									
								
								public/main.dart.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										145774
									
								
								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
											
										
									
								
							
							
								
								
									
										142253
									
								
								public/main.foss.dart.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										142253
									
								
								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
											
										
									
								
							
							
								
								
									
										19760
									
								
								public/main.profile.dart.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19760
									
								
								public/main.profile.dart.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user