mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 14:04:31 -04:00
commit
16a6380e0d
@ -100,7 +100,7 @@ class NinjaMailerJob implements ShouldQueue
|
||||
$this->nmo->mailable->replyTo($this->company->owner()->email, $this->company->owner()->present()->name());
|
||||
}
|
||||
|
||||
$this->nmo->mailable->tag($this->company->company_key);
|
||||
// $this->nmo->mailable->tag($this->company->company_key);
|
||||
|
||||
//send email
|
||||
try {
|
||||
|
@ -162,4 +162,4 @@
|
||||
},
|
||||
"minimum-stability": "dev",
|
||||
"prefer-stable": true
|
||||
}
|
||||
}
|
||||
|
488
composer.lock
generated
488
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -41,6 +41,12 @@ CREATE TABLE `accounts` (
|
||||
`hosted_client_count` int unsigned DEFAULT NULL,
|
||||
`hosted_company_count` int unsigned DEFAULT NULL,
|
||||
`inapp_transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`set_react_as_default_ap` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`is_flagged` 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_number` text COLLATE utf8mb4_unicode_ci,
|
||||
`account_sms_verified` tinyint(1) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `accounts_payment_id_index` (`payment_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
@ -75,6 +81,8 @@ CREATE TABLE `activities` (
|
||||
`recurring_invoice_id` int unsigned DEFAULT NULL,
|
||||
`recurring_expense_id` int unsigned DEFAULT NULL,
|
||||
`recurring_quote_id` int unsigned DEFAULT NULL,
|
||||
`purchase_order_id` int unsigned DEFAULT NULL,
|
||||
`vendor_contact_id` int unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `activities_vendor_id_company_id_index` (`vendor_id`,`company_id`),
|
||||
KEY `activities_project_id_company_id_index` (`project_id`,`company_id`),
|
||||
@ -88,6 +96,10 @@ CREATE TABLE `activities` (
|
||||
KEY `activities_expense_id_company_id_index` (`expense_id`,`company_id`),
|
||||
KEY `activities_client_contact_id_company_id_index` (`client_contact_id`,`company_id`),
|
||||
KEY `activities_company_id_foreign` (`company_id`),
|
||||
KEY `activities_quote_id_company_id_index` (`quote_id`,`company_id`),
|
||||
KEY `activities_recurring_invoice_id_company_id_index` (`recurring_invoice_id`,`company_id`),
|
||||
KEY `activities_purchase_order_id_company_id_index` (`purchase_order_id`,`company_id`),
|
||||
KEY `activities_vendor_contact_id_company_id_index` (`vendor_contact_id`,`company_id`),
|
||||
CONSTRAINT `activities_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@ -178,7 +190,7 @@ CREATE TABLE `client_contacts` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`email_verified_at` timestamp NULL DEFAULT NULL,
|
||||
`confirmation_code` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
@ -298,7 +310,7 @@ CREATE TABLE `clients` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`shipping_address1` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`shipping_address2` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`shipping_city` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
@ -391,6 +403,13 @@ CREATE TABLE `companies` (
|
||||
`client_registration_fields` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`convert_rate_to_client` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`markdown_email_enabled` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`stop_on_unpaid_recurring` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`use_quote_terms_on_conversion` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`enable_applying_payments` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`track_inventory` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`inventory_notification_threshold` int NOT NULL DEFAULT '0',
|
||||
`stock_notification` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`enabled_expense_tax_rates` int unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `companies_company_key_unique` (`company_key`),
|
||||
KEY `companies_industry_id_foreign` (`industry_id`),
|
||||
@ -618,7 +637,7 @@ CREATE TABLE `credits` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`next_send_date` datetime DEFAULT NULL,
|
||||
`custom_surcharge1` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge2` decimal(20,6) DEFAULT NULL,
|
||||
@ -736,7 +755,7 @@ CREATE TABLE `documents` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`deleted_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`documentable_id` int unsigned NOT NULL,
|
||||
`documentable_type` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
@ -808,7 +827,7 @@ CREATE TABLE `expenses` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`project_id` int unsigned DEFAULT NULL,
|
||||
`tax_amount1` decimal(20,6) NOT NULL DEFAULT '1.000000',
|
||||
@ -829,12 +848,14 @@ DROP TABLE IF EXISTS `failed_jobs`;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `failed_jobs` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
`uuid` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`connection` 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,
|
||||
`exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `gateway_types`;
|
||||
@ -971,7 +992,7 @@ CREATE TABLE `invoices` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`next_send_date` datetime DEFAULT NULL,
|
||||
`custom_surcharge1` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge2` decimal(20,6) DEFAULT NULL,
|
||||
@ -997,6 +1018,7 @@ CREATE TABLE `invoices` (
|
||||
`auto_bill_enabled` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`subscription_id` int unsigned DEFAULT NULL,
|
||||
`auto_bill_tries` smallint NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `invoices_company_id_number_unique` (`company_id`,`number`),
|
||||
KEY `invoices_user_id_foreign` (`user_id`),
|
||||
@ -1086,6 +1108,7 @@ CREATE TABLE `payment_hashes` (
|
||||
`updated_at` timestamp(6) NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `payment_hashes_payment_id_foreign` (`payment_id`),
|
||||
KEY `payment_hashes_hash_index` (`hash`),
|
||||
CONSTRAINT `payment_hashes_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;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
@ -1186,7 +1209,7 @@ CREATE TABLE `payments` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `payments_company_id_deleted_at_index` (`company_id`,`deleted_at`),
|
||||
KEY `payments_client_contact_id_foreign` (`client_contact_id`),
|
||||
@ -1215,7 +1238,7 @@ CREATE TABLE `products` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`product_key` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`cost` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
@ -1231,10 +1254,14 @@ CREATE TABLE `products` (
|
||||
`created_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`updated_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`in_stock_quantity` int NOT NULL DEFAULT '0',
|
||||
`stock_notification` tinyint(1) NOT NULL DEFAULT '1',
|
||||
`stock_notification_threshold` int NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `products_company_id_deleted_at_index` (`company_id`,`deleted_at`),
|
||||
KEY `products_user_id_foreign` (`user_id`),
|
||||
KEY `products_company_id_index` (`company_id`),
|
||||
KEY `pro_co_us_up_index` (`company_id`,`user_id`,`assigned_user_id`,`updated_at`),
|
||||
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
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
@ -1272,6 +1299,117 @@ CREATE TABLE `projects` (
|
||||
CONSTRAINT `projects_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;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `purchase_order_invitations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `purchase_order_invitations` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
`company_id` int unsigned NOT NULL,
|
||||
`user_id` int unsigned NOT NULL,
|
||||
`vendor_contact_id` int unsigned NOT NULL,
|
||||
`purchase_order_id` bigint unsigned NOT NULL,
|
||||
`key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`transaction_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`message_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`email_error` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`signature_base64` text COLLATE utf8mb4_unicode_ci,
|
||||
`signature_date` datetime DEFAULT NULL,
|
||||
`sent_date` datetime DEFAULT NULL,
|
||||
`viewed_date` datetime DEFAULT NULL,
|
||||
`opened_date` datetime DEFAULT NULL,
|
||||
`created_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`updated_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp(6) NULL DEFAULT NULL,
|
||||
PRIMARY KEY (`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_company_id_foreign` (`company_id`),
|
||||
KEY `vendor_purchase_company_index` (`deleted_at`,`purchase_order_id`,`company_id`),
|
||||
KEY `purchase_order_invitations_purchase_order_id_index` (`purchase_order_id`),
|
||||
KEY `purchase_order_invitations_key_index` (`key`),
|
||||
KEY `purchase_order_invitations_message_id_index` (`message_id`),
|
||||
CONSTRAINT `purchase_order_invitations_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `purchase_order_invitations_purchase_order_id_foreign` FOREIGN KEY (`purchase_order_id`) REFERENCES `purchase_orders` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `purchase_order_invitations_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `purchase_order_invitations_vendor_contact_id_foreign` FOREIGN KEY (`vendor_contact_id`) REFERENCES `vendor_contacts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `purchase_orders`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `purchase_orders` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
`client_id` int unsigned DEFAULT NULL,
|
||||
`user_id` int unsigned NOT NULL,
|
||||
`assigned_user_id` int unsigned DEFAULT NULL,
|
||||
`company_id` int unsigned NOT NULL,
|
||||
`status_id` int unsigned NOT NULL,
|
||||
`project_id` int unsigned DEFAULT NULL,
|
||||
`vendor_id` int unsigned DEFAULT NULL,
|
||||
`recurring_id` int unsigned DEFAULT NULL,
|
||||
`design_id` int unsigned DEFAULT NULL,
|
||||
`invoice_id` int unsigned DEFAULT NULL,
|
||||
`number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`discount` double(8,2) NOT NULL DEFAULT '0.00',
|
||||
`is_amount_discount` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`po_number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`date` date DEFAULT NULL,
|
||||
`last_sent_date` datetime DEFAULT NULL,
|
||||
`due_date` date DEFAULT NULL,
|
||||
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`line_items` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`backup` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`footer` text COLLATE utf8mb4_unicode_ci,
|
||||
`public_notes` text COLLATE utf8mb4_unicode_ci,
|
||||
`private_notes` text COLLATE utf8mb4_unicode_ci,
|
||||
`terms` text COLLATE utf8mb4_unicode_ci,
|
||||
`tax_name1` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`tax_rate1` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`tax_name2` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`tax_rate2` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`tax_name3` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`tax_rate3` 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',
|
||||
`reminder1_sent` date DEFAULT NULL,
|
||||
`reminder2_sent` date DEFAULT NULL,
|
||||
`reminder3_sent` date DEFAULT NULL,
|
||||
`reminder_last_sent` date DEFAULT NULL,
|
||||
`custom_value1` text COLLATE utf8mb4_unicode_ci,
|
||||
`custom_value2` text COLLATE utf8mb4_unicode_ci,
|
||||
`custom_value3` text COLLATE utf8mb4_unicode_ci,
|
||||
`custom_value4` text COLLATE utf8mb4_unicode_ci,
|
||||
`next_send_date` datetime DEFAULT NULL,
|
||||
`custom_surcharge1` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge2` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge3` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge4` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge_tax1` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`custom_surcharge_tax2` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`custom_surcharge_tax3` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`custom_surcharge_tax4` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`exchange_rate` decimal(20,6) NOT NULL DEFAULT '1.000000',
|
||||
`balance` decimal(20,6) NOT NULL,
|
||||
`partial` decimal(20,6) DEFAULT NULL,
|
||||
`amount` decimal(20,6) NOT NULL,
|
||||
`paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`partial_due_date` datetime DEFAULT NULL,
|
||||
`last_viewed` datetime DEFAULT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
`expense_id` int unsigned DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `purchase_orders_user_id_foreign` (`user_id`),
|
||||
KEY `purchase_orders_company_id_deleted_at_index` (`company_id`,`deleted_at`),
|
||||
KEY `purchase_orders_client_id_index` (`client_id`),
|
||||
KEY `purchase_orders_company_id_index` (`company_id`),
|
||||
KEY `purchase_orders_expense_id_index` (`expense_id`),
|
||||
CONSTRAINT `purchase_orders_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `purchase_orders_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
|
||||
CONSTRAINT `purchase_orders_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=DYNAMIC;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `quote_invitations`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
@ -1349,7 +1487,7 @@ CREATE TABLE `quotes` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`custom_surcharge1` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge2` decimal(20,6) DEFAULT NULL,
|
||||
`custom_surcharge3` decimal(20,6) DEFAULT NULL,
|
||||
@ -1415,7 +1553,7 @@ CREATE TABLE `recurring_expenses` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`category_id` int unsigned DEFAULT NULL,
|
||||
`calculate_tax_by_amount` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`tax_amount1` decimal(20,6) DEFAULT NULL,
|
||||
@ -1438,6 +1576,7 @@ CREATE TABLE `recurring_expenses` (
|
||||
`last_sent_date` datetime DEFAULT NULL,
|
||||
`next_send_date` datetime DEFAULT NULL,
|
||||
`remaining_cycles` int DEFAULT NULL,
|
||||
`next_send_date_client` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `recurring_expenses_company_id_number_unique` (`company_id`,`number`),
|
||||
KEY `recurring_expenses_company_id_deleted_at_index` (`company_id`,`deleted_at`),
|
||||
@ -1517,7 +1656,7 @@ CREATE TABLE `recurring_invoices` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`amount` decimal(20,6) NOT NULL,
|
||||
`balance` decimal(20,6) NOT NULL,
|
||||
`partial` decimal(16,4) DEFAULT NULL,
|
||||
@ -1546,6 +1685,7 @@ CREATE TABLE `recurring_invoices` (
|
||||
`exchange_rate` decimal(13,6) NOT NULL DEFAULT '1.000000',
|
||||
`paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`subscription_id` int unsigned DEFAULT NULL,
|
||||
`next_send_date_client` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `recurring_invoices_company_id_deleted_at_index` (`company_id`,`deleted_at`),
|
||||
KEY `recurring_invoices_user_id_foreign` (`user_id`),
|
||||
@ -1627,7 +1767,7 @@ CREATE TABLE `recurring_quotes` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`amount` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`balance` decimal(20,6) NOT NULL DEFAULT '0.000000',
|
||||
`last_viewed` datetime DEFAULT NULL,
|
||||
@ -1666,6 +1806,27 @@ CREATE TABLE `recurring_quotes` (
|
||||
CONSTRAINT `recurring_quotes_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;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `schedulers`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
CREATE TABLE `schedulers` (
|
||||
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
|
||||
`paused` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`is_deleted` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`repeat_every` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`start_from` timestamp NOT NULL,
|
||||
`scheduled_run` timestamp NOT NULL,
|
||||
`company_id` bigint unsigned NOT NULL,
|
||||
`created_at` timestamp NULL DEFAULT NULL,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
`action_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`action_class` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
|
||||
`parameters` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `schedulers_action_name_index` (`action_name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
DROP TABLE IF EXISTS `sizes`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!50503 SET character_set_client = utf8mb4 */;
|
||||
@ -1855,11 +2016,11 @@ CREATE TABLE `transaction_events` (
|
||||
`payment_applied` decimal(16,4) NOT NULL DEFAULT '0.0000',
|
||||
`payment_refunded` decimal(16,4) NOT NULL DEFAULT '0.0000',
|
||||
`payment_status` int unsigned DEFAULT NULL,
|
||||
`paymentables` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`paymentables` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`event_id` int unsigned NOT NULL,
|
||||
`timestamp` int unsigned NOT NULL,
|
||||
`payment_request` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`metadata` mediumtext COLLATE utf8mb4_unicode_ci,
|
||||
`payment_request` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`metadata` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`credit_balance` decimal(16,4) NOT NULL DEFAULT '0.0000',
|
||||
`credit_amount` decimal(16,4) NOT NULL DEFAULT '0.0000',
|
||||
`credit_status` int unsigned DEFAULT NULL,
|
||||
@ -1902,13 +2063,14 @@ CREATE TABLE `users` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`created_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`updated_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp(6) NULL DEFAULT NULL,
|
||||
`oauth_user_refresh_token` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`oauth_user_refresh_token` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`last_confirmed_email_address` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`has_password` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`oauth_user_token_expiry` datetime DEFAULT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `users_email_unique` (`email`),
|
||||
UNIQUE KEY `users_oauth_user_id_oauth_provider_id_unique` (`oauth_user_id`,`oauth_provider_id`),
|
||||
@ -1935,7 +2097,7 @@ CREATE TABLE `vendor_contacts` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`send_email` tinyint(1) NOT NULL DEFAULT '0',
|
||||
`email_verified_at` timestamp NULL DEFAULT NULL,
|
||||
`confirmation_code` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
@ -1995,7 +2157,7 @@ CREATE TABLE `vendors` (
|
||||
`custom_value1` 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_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
`custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`vendor_hash` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`public_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
|
||||
`id_number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
|
||||
@ -2170,3 +2332,30 @@ INSERT INTO `migrations` VALUES (127,'2022_03_24_090728_markdown_email_enabled_w
|
||||
INSERT INTO `migrations` VALUES (128,'2022_03_29_014025_reverse_apple_domain_for_hosted',10);
|
||||
INSERT INTO `migrations` VALUES (129,'2022_04_22_115838_client_settings_parse_for_types',10);
|
||||
INSERT INTO `migrations` VALUES (130,'2022_04_26_032252_convert_custom_fields_column_from_varchar_to_text',10);
|
||||
INSERT INTO `migrations` VALUES (131,'2022_04_14_121548_forte_payment_gateway',11);
|
||||
INSERT INTO `migrations` VALUES (132,'2022_05_08_004937_heal_stripe_gateway_configuration',11);
|
||||
INSERT INTO `migrations` VALUES (133,'2022_05_16_224917_add_auto_bill_tries_to_invoices_table',11);
|
||||
INSERT INTO `migrations` VALUES (134,'2022_05_18_055442_update_custom_value_four_columns',11);
|
||||
INSERT INTO `migrations` VALUES (135,'2022_05_18_162152_create_scheduled_jobs_table',11);
|
||||
INSERT INTO `migrations` VALUES (136,'2022_05_18_162443_create_schedulers_table',11);
|
||||
INSERT INTO `migrations` VALUES (137,'2022_05_23_050754_drop_redundant_column_show_production_description_dropdown',11);
|
||||
INSERT INTO `migrations` VALUES (138,'2022_05_28_234651_create_purchase_orders_table',11);
|
||||
INSERT INTO `migrations` VALUES (139,'2022_05_30_181109_drop_scheduled_jobs_table',11);
|
||||
INSERT INTO `migrations` VALUES (140,'2022_05_30_184320_add_job_related_fields_to_schedulers_table',11);
|
||||
INSERT INTO `migrations` VALUES (141,'2022_05_31_101504_inventory_management_schema',11);
|
||||
INSERT INTO `migrations` VALUES (142,'2022_06_01_215859_set_recurring_client_timestamp',11);
|
||||
INSERT INTO `migrations` VALUES (143,'2022_06_01_224339_create_purchase_order_invitations_table',11);
|
||||
INSERT INTO `migrations` VALUES (144,'2022_06_10_030503_set_account_flag_for_react',11);
|
||||
INSERT INTO `migrations` VALUES (145,'2022_06_16_025156_add_react_switching_flag',11);
|
||||
INSERT INTO `migrations` VALUES (146,'2022_06_17_082627_change_refresh_token_column_size',11);
|
||||
INSERT INTO `migrations` VALUES (147,'2022_06_21_104350_fixes_for_description_in_pdf_designs',11);
|
||||
INSERT INTO `migrations` VALUES (148,'2022_06_22_090547_set_oauth_expiry_column',11);
|
||||
INSERT INTO `migrations` VALUES (149,'2022_06_24_141018_upgrade_failed_jobs_table',11);
|
||||
INSERT INTO `migrations` VALUES (150,'2022_06_30_000126_add_flag_to_accounts_table',11);
|
||||
INSERT INTO `migrations` VALUES (151,'2022_07_06_080127_add_purchase_order_to_expense',11);
|
||||
INSERT INTO `migrations` VALUES (152,'2022_07_09_235510_add_index_to_payment_hash',11);
|
||||
INSERT INTO `migrations` VALUES (153,'2022_07_18_033756_fixes_for_date_formats_table_react',11);
|
||||
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 (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);
|
||||
|
@ -70,7 +70,7 @@
|
||||
{{ App\Models\GatewayType::getAlias($payment_method->gateway_type_id) }}
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
{{ ucfirst($payment_method->meta?->brand) }}
|
||||
{{ property_exists($payment_method->meta, 'brand') ? ucfirst($payment_method->meta?->brand) : '' }}
|
||||
</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm leading-5 text-gray-500">
|
||||
@if(isset($payment_method->meta->exp_month) && isset($payment_method->meta->exp_year))
|
||||
|
246
routes/api.php
246
routes/api.php
@ -10,7 +10,6 @@
|
||||
| is assigned the "api" middleware group. Enjoy building your API!
|
||||
|
|
||||
*/
|
||||
|
||||
use App\Http\Controllers\AccountController;
|
||||
use App\Http\Controllers\ActivityController;
|
||||
use App\Http\Controllers\Auth\ForgotPasswordController;
|
||||
@ -94,7 +93,119 @@ use App\Http\Controllers\WebCronController;
|
||||
use App\Http\Controllers\WebhookController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::group(['middleware' => ['throttle:300,1', 'api_secret_check']], function () {
|
||||
Route::post('api/v1/signup', [AccountController::class, 'store'])->name('signup.submit');
|
||||
Route::post('api/v1/oauth_login', [LoginController::class, 'oauthApiLogin']);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['throttle:10,1','api_secret_check','email_db']], function () {
|
||||
Route::post('api/v1/login', [LoginController::class, 'apiLogin'])->name('login.submit')->middleware('throttle:20,1');
|
||||
Route::post('api/v1/reset_password', [ForgotPasswordController::class, 'sendResetLinkEmail']);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale'], 'prefix' => 'api/v1', 'as' => 'api.'], function () {
|
||||
Route::put('accounts/{account}', [AccountController::class, 'update'])->name('account.update');
|
||||
Route::post('check_subdomain', [SubdomainController::class, 'index'])->name('check_subdomain');
|
||||
Route::get('ping', [PingController::class, 'index'])->name('ping');
|
||||
Route::get('health_check', [PingController::class, 'health'])->name('health_check');
|
||||
|
||||
Route::get('activities', [ActivityController::class, 'index']);
|
||||
Route::get('activities/download_entity/{activity}', [ActivityController::class, 'downloadHistoricalEntity']);
|
||||
|
||||
|
||||
Route::post('charts/totals', [ChartController::class, 'totals'])->name('chart.totals');
|
||||
Route::post('charts/chart_summary', [ChartController::class, 'chart_summary'])->name('chart.chart_summary');
|
||||
|
||||
Route::post('claim_license', [LicenseController::class, 'index'])->name('license.index');
|
||||
|
||||
Route::resource('clients', ClientController::class); // name = (clients. index / create / show / update / destroy / edit
|
||||
Route::put('clients/{client}/adjust_ledger', [ClientController::class, 'adjustLedger'])->name('clients.adjust_ledger');
|
||||
Route::put('clients/{client}/upload', [ClientController::class, 'upload'])->name('clients.upload');
|
||||
Route::post('clients/{client}/purge', [ClientController::class, 'purge'])->name('clients.purge')->middleware('password_protected');
|
||||
Route::post('clients/{client}/{mergeable_client}/merge', [ClientController::class, 'merge'])->name('clients.merge')->middleware('password_protected');
|
||||
Route::post('clients/bulk', [ClientController::class, 'bulk'])->name('clients.bulk');
|
||||
|
||||
Route::post('filters/{entity}', [FilterController::class, 'index'])->name('filters');
|
||||
|
||||
Route::resource('client_gateway_tokens', ClientGatewayTokenController::class);
|
||||
|
||||
Route::post('connected_account', [ConnectedAccountController::class, 'index']);
|
||||
Route::post('connected_account/gmail', [ConnectedAccountController::class, 'handleGmailOauth']);
|
||||
|
||||
Route::post('client_statement', [ClientStatementController::class, 'statement'])->name('client.statement');
|
||||
|
||||
Route::post('companies/purge/{company}', [MigrationController::class, 'purgeCompany'])->middleware('password_protected');
|
||||
Route::post('companies/purge_save_settings/{company}', [MigrationController::class, 'purgeCompanySaveSettings'])->middleware('password_protected');
|
||||
|
||||
Route::resource('companies', CompanyController::class); // name = (companies. index / create / show / update / destroy / edit
|
||||
|
||||
Route::put('companies/{company}/upload', [CompanyController::class, 'upload']);
|
||||
Route::post('companies/{company}/default', [CompanyController::class, 'default']);
|
||||
|
||||
Route::get('company_ledger', [CompanyLedgerController::class, 'index'])->name('company_ledger.index');
|
||||
|
||||
Route::resource('company_gateways', CompanyGatewayController::class);
|
||||
Route::post('company_gateways/bulk', [CompanyGatewayController::class, 'bulk'])->name('company_gateways.bulk');
|
||||
|
||||
Route::put('company_users/{user}', [CompanyUserController::class, 'update']);
|
||||
|
||||
Route::resource('credits', CreditController::class); // name = (credits. index / create / show / update / destroy / edit
|
||||
Route::put('credits/{credit}/upload', [CreditController::class, 'upload'])->name('credits.upload');
|
||||
Route::get('credits/{credit}/{action}', [CreditController::class, 'action'])->name('credits.action');
|
||||
Route::post('credits/bulk', [CreditController::class, 'bulk'])->name('credits.bulk');
|
||||
|
||||
Route::resource('designs', DesignController::class); // name = (payments. index / create / show / update / destroy / edit
|
||||
Route::post('designs/bulk', [DesignController::class, 'bulk'])->name('designs.bulk');
|
||||
Route::post('designs/set/default', [DesignController::class, 'default'])->name('designs.default');
|
||||
|
||||
Route::resource('documents', DocumentController::class); // name = (documents. index / create / show / update / destroy / edit
|
||||
Route::get('documents/{document}/download', [DocumentController::class, 'download'])->name('documents.download');
|
||||
Route::post('documents/bulk', [DocumentController::class, 'bulk'])->name('documents.bulk');
|
||||
|
||||
Route::post('emails', [EmailController::class, 'send'])->name('email.send')->middleware('user_verified');
|
||||
|
||||
Route::resource('expenses', ExpenseController::class); // name = (expenses. index / create / show / update / destroy / edit
|
||||
Route::put('expenses/{expense}/upload', [ExpenseController::class, 'upload']);
|
||||
Route::post('expenses/bulk', [ExpenseController::class, 'bulk'])->name('expenses.bulk');
|
||||
|
||||
Route::post('export', [ExportController::class, 'index'])->name('export.index');
|
||||
|
||||
Route::resource('expense_categories', ExpenseCategoryController::class); // name = (expense_categories. index / create / show / update / destroy / edit
|
||||
Route::post('expense_categories/bulk', [ExpenseCategoryController::class, 'bulk'])->name('expense_categories.bulk');
|
||||
|
||||
Route::resource('group_settings', GroupSettingController::class);
|
||||
Route::post('group_settings/bulk', [GroupSettingController::class, 'bulk']);
|
||||
Route::put('group_settings/{group_setting}/upload', [GroupSettingController::class, 'upload'])->name('group_settings.upload');
|
||||
|
||||
Route::post('import', [ImportController::class, 'import'])->name('import.import');
|
||||
Route::post('import_json', [ImportJsonController::class, 'import'])->name('import.import_json');
|
||||
Route::post('preimport', [ImportController::class, 'preimport'])->name('import.preimport');
|
||||
|
||||
Route::resource('invoices', InvoiceController::class); // name = (invoices. index / create / show / update / destroy / edit
|
||||
Route::get('invoices/{invoice}/delivery_note', [InvoiceController::class, 'deliveryNote'])->name('invoices.delivery_note');
|
||||
Route::get('invoices/{invoice}/{action}', [InvoiceController::class, 'action'])->name('invoices.action');
|
||||
Route::put('invoices/{invoice}/upload', [InvoiceController::class, 'upload'])->name('invoices.upload');
|
||||
Route::get('invoice/{invitation_key}/download', [InvoiceController::class, 'downloadPdf'])->name('invoices.downloadPdf');
|
||||
Route::post('invoices/bulk', [InvoiceController::class, 'bulk'])->name('invoices.bulk');
|
||||
Route::post('invoices/update_reminders', [InvoiceController::class, 'update_reminders'])->name('invoices.update_reminders');
|
||||
|
||||
Route::post('logout', [LogoutController::class, 'index'])->name('logout');
|
||||
|
||||
Route::post('migrate', [MigrationController::class, 'index'])->name('migrate.start');
|
||||
|
||||
Route::post('migration/purge/{company}', [MigrationController::class, 'purgeCompany'])->middleware('password_protected');
|
||||
Route::post('migration/purge_save_settings/{company}', [MigrationController::class, 'purgeCompanySaveSettings'])->middleware('password_protected');
|
||||
Route::post('migration/start', [MigrationController::class, 'startMigration']);
|
||||
|
||||
Route::post('one_time_token', [OneTimeTokenController::class, 'create']);
|
||||
|
||||
Route::resource('payments', PaymentController::class); // name = (payments. index / create / show / update / destroy / edit
|
||||
Route::post('payments/refund', [PaymentController::class, 'refund'])->name('payments.refund');
|
||||
Route::post('payments/bulk', [PaymentController::class, 'bulk'])->name('payments.bulk');
|
||||
Route::put('payments/{payment}/upload', [PaymentController::class, 'upload']);
|
||||
|
||||
Route::resource('payment_terms', PaymentTermController::class); // name = (payments. index / create / show / update / destroy / edit
|
||||
Route::post('payment_terms/bulk', [PaymentTermController::class, 'bulk'])->name('payment_terms.bulk');
|
||||
|
||||
Route::post('preview', [PreviewController::class, 'show'])->name('preview.show');
|
||||
Route::post('live_preview', [PreviewController::class, 'live'])->name('preview.live');
|
||||
@ -102,6 +213,137 @@ Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale
|
||||
Route::post('preview/purchase_order', [PreviewPurchaseOrderController::class, 'show'])->name('preview_purchase_order.show');
|
||||
Route::post('live_preview/purchase_order', [PreviewPurchaseOrderController::class, 'live'])->name('preview_purchase_order.live');
|
||||
|
||||
Route::resource('products', ProductController::class); // name = (products. index / create / show / update / destroy / edit
|
||||
Route::post('products/bulk', [ProductController::class, 'bulk'])->name('products.bulk');
|
||||
Route::put('products/{product}/upload', [ProductController::class, 'upload']);
|
||||
|
||||
Route::resource('projects', ProjectController::class); // name = (projects. index / create / show / update / destroy / edit
|
||||
Route::post('projects/bulk', [ProjectController::class, 'bulk'])->name('projects.bulk');
|
||||
Route::put('projects/{project}/upload', [ProjectController::class, 'upload'])->name('projects.upload');
|
||||
|
||||
Route::resource('quotes', QuoteController::class); // name = (quotes. index / create / show / update / destroy / edit
|
||||
Route::get('quotes/{quote}/{action}', [QuoteController::class, 'action'])->name('quotes.action');
|
||||
Route::post('quotes/bulk', [QuoteController::class, 'bulk'])->name('quotes.bulk');
|
||||
Route::put('quotes/{quote}/upload', [QuoteController::class, 'upload']);
|
||||
|
||||
Route::resource('recurring_expenses', RecurringExpenseController::class);
|
||||
Route::post('recurring_expenses/bulk', [RecurringExpenseController::class, 'bulk'])->name('recurring_expenses.bulk');
|
||||
Route::put('recurring_expenses/{recurring_expense}/upload', [RecurringExpenseController::class, 'upload']);
|
||||
|
||||
|
||||
Route::resource('recurring_invoices', RecurringInvoiceController::class); // name = (recurring_invoices. index / create / show / update / destroy / edit
|
||||
Route::post('recurring_invoices/bulk', [RecurringInvoiceController::class, 'bulk'])->name('recurring_invoices.bulk');
|
||||
Route::put('recurring_invoices/{recurring_invoice}/upload', [RecurringInvoiceController::class, 'upload']);
|
||||
Route::resource('recurring_quotes', RecurringQuoteController::class); // name = (recurring_invoices. index / create / show / update / destroy / edit
|
||||
Route::post('recurring_quotes/bulk', [RecurringQuoteController::class, 'bulk'])->name('recurring_quotes.bulk');
|
||||
Route::put('recurring_quotes/{recurring_quote}/upload', [RecurringQuoteController::class, 'upload']);
|
||||
|
||||
Route::post('refresh', [LoginController::class, 'refresh'])->middleware('throttle:300,2');
|
||||
|
||||
Route::post('reports/clients', ClientReportController::class);
|
||||
Route::post('reports/contacts', ClientContactReportController::class);
|
||||
Route::post('reports/credits', CreditReportController::class);
|
||||
Route::post('reports/documents', DocumentReportController::class);
|
||||
Route::post('reports/expenses', ExpenseReportController::class);
|
||||
Route::post('reports/invoices', InvoiceReportController::class);
|
||||
Route::post('reports/invoice_items', InvoiceItemReportController::class);
|
||||
Route::post('reports/quotes', QuoteReportController::class);
|
||||
Route::post('reports/quote_items', QuoteItemReportController::class);
|
||||
Route::post('reports/recurring_invoices', RecurringInvoiceReportController::class);
|
||||
Route::post('reports/payments', PaymentReportController::class);
|
||||
Route::post('reports/products', ProductReportController::class);
|
||||
Route::post('reports/tasks', TaskReportController::class);
|
||||
Route::post('reports/profitloss', ProfitAndLossController::class);
|
||||
|
||||
Route::resource('task_scheduler', TaskSchedulerController::class)->except('edit')->parameters(['task_scheduler' => 'scheduler']);
|
||||
|
||||
Route::get('scheduler', [SchedulerController::class, 'index']);
|
||||
Route::post('support/messages/send', SendingController::class);
|
||||
|
||||
Route::post('self-update', [SelfUpdateController::class, 'update'])->middleware('password_protected');
|
||||
Route::post('self-update/check_version', [SelfUpdateController::class, 'checkVersion']);
|
||||
|
||||
Route::resource('system_logs', SystemLogController::class);
|
||||
|
||||
Route::resource('tasks', TaskController::class); // name = (tasks. index / create / show / update / destroy / edit
|
||||
Route::post('tasks/bulk', [TaskController::class, 'bulk'])->name('tasks.bulk');
|
||||
Route::put('tasks/{task}/upload', [TaskController::class, 'upload']);
|
||||
Route::post('tasks/sort', [TaskController::class, 'sort']);
|
||||
|
||||
Route::resource('task_statuses', TaskStatusController::class); // name = (task_statuses. index / create / show / update / destroy / edit
|
||||
Route::post('task_statuses/bulk', [TaskStatusController::class, 'bulk'])->name('task_statuses.bulk');
|
||||
|
||||
Route::resource('tax_rates', TaxRateController::class); // name = (tax_rates. index / create / show / update / destroy / edit
|
||||
Route::post('tax_rates/bulk', [TaxRateController::class, 'bulk'])->name('tax_rates.bulk');
|
||||
|
||||
Route::post('templates', [TemplateController::class, 'show'])->name('templates.show');
|
||||
|
||||
Route::resource('tokens', TokenController::class); // name = (tokens. index / create / show / update / destroy / edit
|
||||
Route::post('tokens/bulk', [TokenController::class, 'bulk'])->name('tokens.bulk');
|
||||
|
||||
Route::get('settings/enable_two_factor', [TwoFactorController::class, 'setupTwoFactor']);
|
||||
Route::post('settings/enable_two_factor', [TwoFactorController::class, 'enableTwoFactor']);
|
||||
Route::post('settings/disable_two_factor', [TwoFactorController::class, 'disableTwoFactor']);
|
||||
|
||||
|
||||
Route::post('verify', [TwilioController::class, 'generate'])->name('verify.generate')->middleware('throttle:100,1');
|
||||
Route::post('verify/confirm', [TwilioController::class, 'confirm'])->name('verify.confirm');
|
||||
|
||||
Route::resource('vendors', VendorController::class); // name = (vendors. index / create / show / update / destroy / edit
|
||||
Route::post('vendors/bulk', [VendorController::class, 'bulk'])->name('vendors.bulk');
|
||||
Route::put('vendors/{vendor}/upload', [VendorController::class, 'upload']);
|
||||
|
||||
Route::resource('purchase_orders', PurchaseOrderController::class);
|
||||
Route::post('purchase_orders/bulk', [PurchaseOrderController::class, 'bulk'])->name('purchase_orders.bulk');
|
||||
Route::put('purchase_orders/{purchase_order}/upload', [PurchaseOrderController::class, 'upload']);
|
||||
|
||||
Route::get('purchase_orders/{purchase_order}/{action}', [PurchaseOrderController::class, 'action'])->name('purchase_orders.action');
|
||||
|
||||
Route::get('users', [UserController::class, 'index']);
|
||||
Route::get('users/create', [UserController::class, 'create'])->middleware('password_protected');
|
||||
Route::get('users/{user}', [UserController::class, 'show'])->middleware('password_protected');
|
||||
Route::put('users/{user}', [UserController::class, 'update'])->middleware('password_protected');
|
||||
Route::post('users', [UserController::class, 'store'])->middleware('password_protected');
|
||||
//Route::post('users/{user}/attach_to_company', [UserController::class, 'attach')->middleware('password_protected');
|
||||
Route::delete('users/{user}/detach_from_company', [UserController::class, 'detach'])->middleware('password_protected');
|
||||
|
||||
Route::post('users/bulk', [UserController::class, 'bulk'])->name('users.bulk')->middleware('password_protected');
|
||||
Route::post('/users/{user}/invite', [UserController::class, 'invite'])->middleware('password_protected');
|
||||
Route::post('/user/{user}/reconfirm', [UserController::class, 'reconfirm']);
|
||||
|
||||
Route::resource('webhooks', WebhookController::class);
|
||||
Route::post('webhooks/bulk', [WebhookController::class, 'bulk'])->name('webhooks.bulk');
|
||||
|
||||
/*Subscription and Webhook routes */
|
||||
// Route::post('hooks', [SubscriptionController::class, 'subscribe'])->name('hooks.subscribe');
|
||||
// Route::delete('hooks/{subscription_id}', [SubscriptionController::class, 'unsubscribe'])->name('hooks.unsubscribe');
|
||||
|
||||
Route::post('stripe/update_payment_methods', [StripeController::class, 'update'])->middleware('password_protected')->name('stripe.update');
|
||||
Route::post('stripe/import_customers', [StripeController::class, 'import'])->middleware('password_protected')->name('stripe.import');
|
||||
|
||||
Route::post('stripe/verify', [StripeController::class, 'verify'])->middleware('password_protected')->name('stripe.verify');
|
||||
Route::post('stripe/disconnect/{company_gateway_id}', [StripeController::class, 'disconnect'])->middleware('password_protected')->name('stripe.disconnect');
|
||||
|
||||
Route::resource('subscriptions', SubscriptionController::class);
|
||||
Route::post('subscriptions/bulk', [SubscriptionController::class, 'bulk'])->name('subscriptions.bulk');
|
||||
Route::get('statics', StaticController::class);
|
||||
// Route::post('apple_pay/upload_file','ApplyPayController::class, 'upload');
|
||||
|
||||
});
|
||||
|
||||
Route::fallback([BaseController::class, 'notFound']);
|
||||
Route::match(['get', 'post'], 'payment_webhook/{company_key}/{company_gateway_id}', PaymentWebhookController::class)
|
||||
->middleware('throttle:1000,1')
|
||||
->name('payment_webhook');
|
||||
|
||||
Route::match(['get', 'post'], 'payment_notification_webhook/{company_key}/{company_gateway_id}/{client}', PaymentNotificationWebhookController::class)
|
||||
->middleware('throttle:1000,1')
|
||||
->name('payment_notification_webhook');
|
||||
|
||||
Route::post('api/v1/postmark_webhook', [PostMarkController::class, 'webhook'])->middleware('throttle:1000,1');
|
||||
Route::get('token_hash_router', [OneTimeTokenController::class, 'router'])->middleware('throttle:100,1');
|
||||
Route::get('webcron', [WebCronController::class, 'index'])->middleware('throttle:100,1');
|
||||
Route::post('api/v1/get_migration_account', [HostedMigrationController::class, 'getAccount'])->middleware('guest')->middleware('throttle:100,1');
|
||||
Route::post('api/v1/confirm_forwarding', [HostedMigrationController::class, 'confirmForwarding'])->middleware('guest')->middleware('throttle:100,1');
|
||||
Route::post('api/v1/process_webhook', [AppleController::class, 'process_webhook'])->middleware('throttle:1000,1');
|
||||
Route::post('api/v1/confirm_purchase', [AppleController::class, 'confirm_purchase'])->middleware('throttle:1000,1');
|
||||
Route::fallback([BaseController::class, 'notFound']);
|
@ -16,4 +16,123 @@ use App\Http\Controllers\RecurringInvoiceController;
|
||||
use App\Utils\PhantomJS\Phantom;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::fallback([BaseController::class, 'notFoundClient']);
|
||||
Route::get('client', [ContactLoginController::class, 'showLoginForm'])->name('client.catchall')->middleware(['domain_db', 'contact_account','locale']); //catch all
|
||||
|
||||
Route::get('client/login/{company_key?}', [ContactLoginController::class, 'showLoginForm'])->name('client.login')->middleware(['domain_db', 'contact_account','locale']);
|
||||
Route::post('client/login/{company_key?}', [ContactLoginController::class, 'login'])->name('client.login.submit');
|
||||
|
||||
Route::get('client/register/{company_key?}', [ContactRegisterController::class, 'showRegisterForm'])->name('client.register')->middleware(['domain_db', 'contact_account', 'contact_register','locale']);
|
||||
Route::post('client/register/{company_key?}', [ContactRegisterController::class, 'register'])->middleware(['domain_db', 'contact_account', 'contact_register', 'locale', 'throttle:10,1']);
|
||||
|
||||
Route::get('client/password/reset', [ContactForgotPasswordController::class, 'showLinkRequestForm'])->name('client.password.request')->middleware(['domain_db', 'contact_account','locale']);
|
||||
Route::post('client/password/email', [ContactForgotPasswordController::class, 'sendResetLinkEmail'])->name('client.password.email')->middleware('locale');
|
||||
Route::get('client/password/reset/{token}', [ContactResetPasswordController::class, 'showResetForm'])->name('client.password.reset')->middleware(['domain_db', 'contact_account','locale']);
|
||||
Route::post('client/password/reset', [ContactResetPasswordController::class, 'reset'])->name('client.password.update')->middleware(['domain_db', 'contact_account','locale']);
|
||||
|
||||
Route::get('view/{entity_type}/{invitation_key}', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'index'])->name('client.entity_view');
|
||||
Route::get('view/{entity_type}/{invitation_key}/password', [App\Http\Controllers\ClientPortal\EntityViewController::class ,'password'])->name('client.entity_view.password');
|
||||
Route::post('view/{entity_type}/{invitation_key}/password', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'handlePassword']);
|
||||
Route::post('set_password', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'handlePasswordSet'])->name('client.set_password')->middleware('domain_db');
|
||||
|
||||
Route::get('tmp_pdf/{hash}', [App\Http\Controllers\ClientPortal\TempRouteController::class, 'index'])->name('tmp_pdf');
|
||||
|
||||
Route::get('client/key_login/{contact_key}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'login'])->name('client.contact_login')->middleware(['domain_db','contact_key_login']);
|
||||
Route::get('client/magic_link/{magic_link}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'magicLink'])->name('client.contact_magic_link')->middleware(['domain_db','contact_key_login']);
|
||||
Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db']);
|
||||
Route::get('error', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'errorPage'])->name('client.error');
|
||||
Route::get('client/payment/{contact_key}/{payment_id}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'paymentRouter'])->middleware(['domain_db','contact_key_login']);
|
||||
Route::get('client/ninja/{contact_key}/{company_key}', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'index'])->name('client.ninja_contact_login')->middleware(['domain_db']);
|
||||
Route::post('client/ninja/trial_confirmation', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'trial_confirmation'])->name('client.trial.response')->middleware(['domain_db']);
|
||||
|
||||
Route::group(['middleware' => ['auth:contact', 'locale', 'domain_db','check_client_existence'], 'prefix' => 'client', 'as' => 'client.'], function () {
|
||||
|
||||
Route::get('dashboard', [App\Http\Controllers\ClientPortal\DashboardController::class, 'index'])->name('dashboard'); // name = (dashboard. index / create / show / update / destroy / edit
|
||||
|
||||
Route::get('plan', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'plan'])->name('plan'); // name = (dashboard. index / create / show / update / destroy / edit
|
||||
|
||||
Route::get('invoices', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'index'])->name('invoices.index')->middleware('portal_enabled');
|
||||
Route::post('invoices/payment', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'bulk'])->name('invoices.bulk');
|
||||
Route::get('invoices/payment', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'catch_bulk'])->name('invoices.catch_bulk');
|
||||
Route::post('invoices/download', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'download'])->name('invoices.download');
|
||||
Route::get('invoices/{invoice}', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'show'])->name('invoice.show');
|
||||
Route::get('invoices/{invoice_invitation}', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'show'])->name('invoice.show_invitation');
|
||||
|
||||
Route::get('recurring_invoices', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'index'])->name('recurring_invoices.index')->middleware('portal_enabled');
|
||||
Route::get('recurring_invoices/{recurring_invoice}', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'show'])->name('recurring_invoice.show');
|
||||
Route::get('recurring_invoices/{recurring_invoice}/request_cancellation', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'requestCancellation'])->name('recurring_invoices.request_cancellation');
|
||||
Route::post('payments/process', [App\Http\Controllers\ClientPortal\PaymentController::class, 'process'])->name('payments.process');
|
||||
Route::get('payments/process', [App\Http\Controllers\ClientPortal\PaymentController::class, 'catch_process'])->name('payments.catch_process');
|
||||
|
||||
Route::post('payments/credit_response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'credit_response'])->name('payments.credit_response');
|
||||
|
||||
Route::get('payments', [App\Http\Controllers\ClientPortal\PaymentController::class, 'index'])->name('payments.index')->middleware('portal_enabled');
|
||||
Route::get('payments/{payment}', [App\Http\Controllers\ClientPortal\PaymentController::class, 'show'])->name('payments.show');
|
||||
|
||||
Route::get('profile/{client_contact}/edit', [App\Http\Controllers\ClientPortal\ProfileController::class, 'edit'])->name('profile.edit');
|
||||
Route::put('profile/{client_contact}/edit', [App\Http\Controllers\ClientPortal\ProfileController::class, 'update'])->name('profile.update');
|
||||
Route::put('profile/{client_contact}/edit_client', [App\Http\Controllers\ClientPortal\ProfileController::class, 'updateClient'])->name('profile.edit_client');
|
||||
Route::put('profile/{client_contact}/localization', [App\Http\Controllers\ClientPortal\ProfileController::class, 'updateClientLocalization'])->name('profile.edit_localization');
|
||||
|
||||
Route::get('payment_methods/{payment_method}/verification', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'verify'])->name('payment_methods.verification');
|
||||
Route::post('payment_methods/{payment_method}/verification', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'processVerification'])->middleware(['throttle:10,1']);
|
||||
|
||||
Route::get('payment_methods/confirm', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'store'])->name('payment_methods.confirm');
|
||||
|
||||
Route::resource('payment_methods', PaymentMethodController::class)->except(['edit', 'update']);
|
||||
|
||||
Route::match(['GET', 'POST'], 'quotes/approve', [App\Http\Controllers\ClientPortal\QuoteController::class, 'bulk'])->name('quotes.bulk');
|
||||
Route::get('quotes', [App\Http\Controllers\ClientPortal\QuoteController::class, 'index'])->name('quotes.index')->middleware('portal_enabled');
|
||||
Route::get('quotes/{quote}', [App\Http\Controllers\ClientPortal\QuoteController::class, 'show'])->name('quote.show');
|
||||
Route::get('quotes/{quote_invitation}', [App\Http\Controllers\ClientPortal\QuoteController::class, 'show'])->name('quote.show_invitation');
|
||||
Route::post('quotes/download', [App\Http\Controllers\ClientPortal\QuoteController::class, 'download'])->name('quotes.download');
|
||||
|
||||
Route::get('credits', [App\Http\Controllers\ClientPortal\CreditController::class, 'index'])->name('credits.index');
|
||||
Route::get('credits/{credit}', [App\Http\Controllers\ClientPortal\CreditController::class, 'show'])->name('credit.show');
|
||||
|
||||
Route::get('credits/{credit_invitation}', [App\Http\Controllers\ClientPortal\CreditController::class,'show'])->name('credits.show_invitation');
|
||||
|
||||
Route::get('client/switch_company/{contact}', App\Http\Controllers\ClientPortal\SwitchCompanyController::class)->name('switch_company');
|
||||
|
||||
Route::post('documents/download_multiple', [App\Http\Controllers\ClientPortal\DocumentController::class, 'downloadMultiple'])->name('documents.download_multiple');
|
||||
Route::get('documents/{document}/download', [App\Http\Controllers\ClientPortal\DocumentController::class, 'download'])->name('documents.download');
|
||||
Route::resource('documents', App\Http\Controllers\ClientPortal\DocumentController::class)->only(['index', 'show']);
|
||||
|
||||
Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', [App\Http\Controllers\ClientPortal\SubscriptionPlanSwitchController::class, 'index'])->name('subscription.plan_switch');
|
||||
|
||||
Route::resource('subscriptions', SubscriptionController::class)->middleware('portal_enabled')->only(['index']);
|
||||
|
||||
Route::resource('tasks', TaskController::class)->only(['index']);
|
||||
|
||||
Route::get('statement', [App\Http\Controllers\ClientPortal\StatementController::class, 'index'])->name('statement');
|
||||
Route::get('statement/raw', [App\Http\Controllers\ClientPortal\StatementController::class, 'raw'])->name('statement.raw');
|
||||
|
||||
Route::post('upload', App\Http\Controllers\ClientPortal\UploadController::class)->name('upload.store');
|
||||
Route::get('logout', [ContactLoginController::class, 'logout'])->name('logout');
|
||||
|
||||
});
|
||||
|
||||
Route::post('payments/process/response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'response'])->name('client.payments.response')->middleware(['locale', 'domain_db', 'verify_hash']);
|
||||
Route::get('payments/process/response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'response'])->name('client.payments.response.get')->middleware(['locale', 'domain_db', 'verify_hash']);
|
||||
|
||||
Route::get('client/subscriptions/{subscription}/purchase', [App\Http\Controllers\ClientPortal\SubscriptionPurchaseController::class, 'index'])->name('client.subscription.purchase')->middleware('domain_db');
|
||||
|
||||
Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'client.'], function () {
|
||||
/*Invitation catches*/
|
||||
Route::get('recurring_invoice/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'recurringRouter']);
|
||||
Route::get('invoice/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'invoiceRouter']);
|
||||
Route::get('quote/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'quoteRouter']);
|
||||
Route::get('credit/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'creditRouter']);
|
||||
Route::get('recurring_invoice/{invitation_key}/download_pdf', [RecurringInvoiceController::class, 'downloadPdf'])->name('recurring_invoice.download_invitation_key');
|
||||
Route::get('invoice/{invitation_key}/download_pdf', [InvoiceController::class, 'downloadPdf'])->name('invoice.download_invitation_key');
|
||||
Route::get('quote/{invitation_key}/download_pdf', [QuoteController::class, 'downloadPdf'])->name('quote.download_invitation_key');
|
||||
Route::get('credit/{invitation_key}/download_pdf', [CreditController::class, 'downloadPdf'])->name('credit.download_invitation_key');
|
||||
Route::get('{entity}/{invitation_key}/download', [App\Http\Controllers\ClientPortal\InvitationController::class, 'routerForDownload']);
|
||||
Route::get('pay/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'payInvoice'])->name('pay.invoice');
|
||||
|
||||
Route::get('unsubscribe/{entity}/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'unsubscribe'])->name('unsubscribe');
|
||||
|
||||
});
|
||||
|
||||
Route::get('phantom/{entity}/{invitation_key}', [Phantom::class, 'displayInvitation'])->middleware(['invite_db', 'phantom_secret'])->name('phantom_view');
|
||||
|
||||
Route::fallback([BaseController::class, 'notFoundClient']);
|
@ -0,0 +1,54 @@
|
||||
<?php
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| API Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here is where you can register API routes for your application. These
|
||||
| routes are loaded by the RouteServiceProvider within a group which
|
||||
| is assigned the "api" middleware group. Enjoy building your API!
|
||||
|
|
||||
*/
|
||||
use App\Http\Controllers\Auth\VendorContactLoginController;
|
||||
use App\Http\Controllers\BaseController;
|
||||
use App\Http\Controllers\VendorPortal\InvitationController;
|
||||
use App\Http\Controllers\VendorPortal\PurchaseOrderController;
|
||||
use App\Http\Controllers\VendorPortal\UploadController;
|
||||
use App\Http\Controllers\VendorPortal\VendorContactController;
|
||||
use App\Http\Controllers\VendorPortal\VendorContactHashLoginController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('vendors', [VendorContactLoginController::class, 'catch'])->name('vendor.catchall')->middleware(['domain_db', 'contact_account','vendor_locale']); //catch all
|
||||
Route::get('vendor/key_login/{contact_key}', [VendorContactHashLoginController::class, 'login'])->name('contact_login')->middleware(['domain_db','vendor_contact_key_login']);
|
||||
|
||||
Route::group(['middleware' => ['invite_db'], 'prefix' => 'vendor', 'as' => 'vendor.'], function () {
|
||||
/*Invitation catches*/
|
||||
Route::get('purchase_order/{invitation_key}', [InvitationController::class, 'purchaseOrder']);
|
||||
Route::get('purchase_order/{invitation_key}/download', [InvitationController::class, 'download']);
|
||||
|
||||
// Route::get('purchase_order/{invitation_key}/download_pdf', 'PurchaseOrderController@downloadPdf')->name('recurring_invoice.download_invitation_key');
|
||||
// Route::get('purchase_order/{invitation_key}/download', 'ClientPortal\InvitationController@routerForDownload');
|
||||
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['auth:vendor', 'vendor_locale', 'domain_db'], 'prefix' => 'vendor', 'as' => 'vendor.'], function () {
|
||||
|
||||
Route::get('dashboard', [PurchaseOrderController::class, 'index'])->name('dashboard');
|
||||
Route::get('purchase_orders', [PurchaseOrderController::class, 'index'])->name('purchase_orders.index');
|
||||
Route::get('purchase_orders/{purchase_order}', [PurchaseOrderController::class, 'show'])->name('purchase_order.show');
|
||||
|
||||
Route::get('profile/{vendor_contact}/edit', [VendorContactController::class, 'edit'])->name('profile.edit');
|
||||
Route::put('profile/{vendor_contact}/edit', [VendorContactController::class, 'update'])->name('profile.update');
|
||||
|
||||
Route::post('purchase_orders/bulk', [PurchaseOrderController::class, 'bulk'])->name('purchase_orders.bulk');
|
||||
Route::get('logout', [VendorContactLoginController::class, 'logout'])->name('logout');
|
||||
Route::post('purchase_order/upload/{purchase_order}', [UploadController::class,'upload'])->name('upload.store');
|
||||
|
||||
Route::post('documents/download_multiple', [App\Http\Controllers\VendorPortal\DocumentController::class, 'downloadMultiple'])->name('documents.download_multiple');
|
||||
Route::get('documents/{document}/download', [App\Http\Controllers\VendorPortal\DocumentController::class, 'download'])->name('documents.download');
|
||||
Route::resource('documents', App\Http\Controllers\VendorPortal\DocumentController::class)->only(['index', 'show']);
|
||||
|
||||
});
|
||||
|
||||
|
||||
Route::fallback([BaseController::class, 'notFoundVendor']);
|
Loading…
x
Reference in New Issue
Block a user