From 4002b755d195ce41067dfaa5007047e37cf43f60 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 13 Apr 2018 13:50:38 +0300 Subject: [PATCH] Added additional custom gateways #1858 --- app/Constants.php | 8 +++- .../Controllers/AccountGatewayController.php | 4 +- .../Controllers/ClientPortalController.php | 9 +--- app/Models/Account.php | 2 + app/Models/AccountGateway.php | 5 +++ app/Models/Gateway.php | 10 +++-- .../Datatables/AccountGatewayDatatable.php | 18 +++++--- .../PaymentDrivers/BasePaymentDriver.php | 10 ++++- .../PaymentDrivers/CustomPaymentDriver.php | 13 ------ ...18_03_30_115805_add_more_custom_fields.php | 2 + database/seeds/GatewayTypesSeeder.php | 4 +- database/seeds/PaymentLibrariesSeeder.php | 4 +- database/setup.sql | 16 +++---- resources/views/accounts/payments.blade.php | 5 ++- resources/views/invoices/view.blade.php | 44 +++++++++---------- 15 files changed, 83 insertions(+), 71 deletions(-) delete mode 100644 app/Ninja/PaymentDrivers/CustomPaymentDriver.php diff --git a/app/Constants.php b/app/Constants.php index c36f24965a..a305b7cc64 100644 --- a/app/Constants.php +++ b/app/Constants.php @@ -299,9 +299,11 @@ if (! defined('APP_NAME')) { define('GATEWAY_PAYTRACE', 56); define('GATEWAY_WEPAY', 60); define('GATEWAY_BRAINTREE', 61); - define('GATEWAY_CUSTOM', 62); + define('GATEWAY_CUSTOM1', 62); define('GATEWAY_GOCARDLESS', 64); define('GATEWAY_PAYMILL', 66); + define('GATEWAY_CUSTOM2', 67); + define('GATEWAY_CUSTOM3', 68); // The customer exists, but only as a local concept // The remote gateway doesn't understand the concept of customers @@ -451,12 +453,14 @@ if (! defined('APP_NAME')) { define('GATEWAY_TYPE_PAYPAL', 3); define('GATEWAY_TYPE_BITCOIN', 4); define('GATEWAY_TYPE_DWOLLA', 5); - define('GATEWAY_TYPE_CUSTOM', 6); + define('GATEWAY_TYPE_CUSTOM1', 6); define('GATEWAY_TYPE_ALIPAY', 7); define('GATEWAY_TYPE_SOFORT', 8); define('GATEWAY_TYPE_SEPA', 9); define('GATEWAY_TYPE_GOCARDLESS', 10); define('GATEWAY_TYPE_APPLE_PAY', 11); + define('GATEWAY_TYPE_CUSTOM2', 12); + define('GATEWAY_TYPE_CUSTOM3', 13); define('GATEWAY_TYPE_TOKEN', 'token'); define('TEMPLATE_INVOICE', 'invoice'); diff --git a/app/Http/Controllers/AccountGatewayController.php b/app/Http/Controllers/AccountGatewayController.php index 8c02282812..a824e9043a 100644 --- a/app/Http/Controllers/AccountGatewayController.php +++ b/app/Http/Controllers/AccountGatewayController.php @@ -52,7 +52,7 @@ class AccountGatewayController extends BaseController $accountGateway = AccountGateway::scope($publicId)->firstOrFail(); $config = $accountGateway->getConfig(); - if ($accountGateway->gateway_id != GATEWAY_CUSTOM) { + if (! $accountGateway->isCustom()) { foreach ($config as $field => $value) { $config->$field = str_repeat('*', strlen($value)); } @@ -257,8 +257,6 @@ class AccountGatewayController extends BaseController } if (! $value && in_array($field, ['testMode', 'developerMode', 'sandbox'])) { // do nothing - } elseif ($gatewayId == GATEWAY_CUSTOM) { - $config->$field = Utils::isNinjaProd() ? strip_tags($value) : $value; } else { $config->$field = $value; } diff --git a/app/Http/Controllers/ClientPortalController.php b/app/Http/Controllers/ClientPortalController.php index e15c802ea4..cec3026024 100644 --- a/app/Http/Controllers/ClientPortalController.php +++ b/app/Http/Controllers/ClientPortalController.php @@ -128,7 +128,7 @@ class ClientPortalController extends BaseController $paymentURL = ''; if (count($paymentTypes) == 1) { $paymentURL = $paymentTypes[0]['url']; - if ($paymentTypes[0]['gatewayTypeId'] == GATEWAY_TYPE_CUSTOM) { + if (in_array($paymentTypes[0]['gatewayTypeId'], [GATEWAY_TYPE_CUSTOM1, GATEWAY_TYPE_CUSTOM2, GATEWAY_TYPE_CUSTOM3])) { // do nothing } elseif (! $account->isGatewayConfigured(GATEWAY_PAYPAL_EXPRESS)) { $paymentURL = URL::to($paymentURL); @@ -170,13 +170,6 @@ class ClientPortalController extends BaseController 'accountGateway' => $paymentDriver->accountGateway, ]; } - - if ($accountGateway = $account->getGatewayByType(GATEWAY_TYPE_CUSTOM)) { - $data += [ - 'customGatewayName' => $accountGateway->getConfigField('name'), - 'customGatewayText' => $accountGateway->getConfigField('text'), - ]; - } } if ($account->hasFeature(FEATURE_DOCUMENTS) && $this->canCreateZip()) { diff --git a/app/Models/Account.php b/app/Models/Account.php index f53e0d32ec..4222fde64a 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -891,8 +891,10 @@ class Account extends Eloquent $gatewayTypes = []; $gatewayIds = []; + $usedGatewayIds = []; foreach ($this->account_gateways as $accountGateway) { + $usedGatewayIds[] = $accountGateway->gateway_id; $paymentDriver = $accountGateway->paymentDriver(); $gatewayTypes = array_unique(array_merge($gatewayTypes, $paymentDriver->gatewayTypes())); } diff --git a/app/Models/AccountGateway.php b/app/Models/AccountGateway.php index 07c5c80bfb..ceafdbc01c 100644 --- a/app/Models/AccountGateway.php +++ b/app/Models/AccountGateway.php @@ -107,6 +107,11 @@ class AccountGateway extends EntityModel } } + public function isCustom() + { + return in_array($this->gateway_id, [GATEWAY_CUSTOM1, GATEWAY_CUSTOM2, GATEWAY_CUSTOM3]); + } + /** * @param $config */ diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index 788061af66..9ce356aa37 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -48,7 +48,9 @@ class Gateway extends Eloquent GATEWAY_AUTHORIZE_NET, GATEWAY_MOLLIE, GATEWAY_GOCARDLESS, - GATEWAY_CUSTOM, + GATEWAY_CUSTOM1, + GATEWAY_CUSTOM2, + GATEWAY_CUSTOM3, ]; // allow adding these gateway if another gateway @@ -61,7 +63,9 @@ class Gateway extends Eloquent GATEWAY_GOCARDLESS, GATEWAY_BITPAY, GATEWAY_DWOLLA, - GATEWAY_CUSTOM, + GATEWAY_CUSTOM1, + GATEWAY_CUSTOM2, + GATEWAY_CUSTOM3, ]; /** @@ -209,6 +213,6 @@ class Gateway extends Eloquent public function isCustom() { - return $this->id === GATEWAY_CUSTOM; + return in_array($this->id, [GATEWAY_CUSTOM1, GATEWAY_CUSTOM2, GATEWAY_CUSTOM3]); } } diff --git a/app/Ninja/Datatables/AccountGatewayDatatable.php b/app/Ninja/Datatables/AccountGatewayDatatable.php index a97df299b8..00720c5c28 100644 --- a/app/Ninja/Datatables/AccountGatewayDatatable.php +++ b/app/Ninja/Datatables/AccountGatewayDatatable.php @@ -25,7 +25,7 @@ class AccountGatewayDatatable extends EntityDatatable $accountGateway = $this->getAccountGateway($model->id); if ($model->deleted_at) { return $model->name; - } elseif ($model->gateway_id == GATEWAY_CUSTOM) { + } elseif (in_array($model->gateway_id, [GATEWAY_CUSTOM1, GATEWAY_CUSTOM2, GATEWAY_CUSTOM3])) { $name = $accountGateway->getConfigField('name') . ' [' . trans('texts.custom') . ']'; return link_to("gateways/{$model->public_id}/edit", $name)->toHtml(); } elseif ($model->gateway_id != GATEWAY_WEPAY) { @@ -191,8 +191,12 @@ class AccountGatewayDatatable extends EntityDatatable }, function ($model) use ($gatewayType) { // Only show this action if the given gateway supports this gateway type - if ($model->gateway_id == GATEWAY_CUSTOM) { - return $gatewayType->id == GATEWAY_TYPE_CUSTOM; + if ($model->gateway_id == GATEWAY_CUSTOM1) { + return $gatewayType->id == GATEWAY_TYPE_CUSTOM1; + } elseif ($model->gateway_id == GATEWAY_CUSTOM2) { + return $gatewayType->id == GATEWAY_TYPE_CUSTOM2; + } elseif ($model->gateway_id == GATEWAY_CUSTOM3) { + return $gatewayType->id == GATEWAY_TYPE_CUSTOM3; } else { $accountGateway = $this->getAccountGateway($model->id); return $accountGateway->paymentDriver()->supportsGatewayType($gatewayType->id); @@ -229,8 +233,12 @@ class AccountGatewayDatatable extends EntityDatatable private function getGatewayTypes($id, $gatewayId) { - if ($gatewayId == GATEWAY_CUSTOM) { - $gatewayTypes = [GATEWAY_TYPE_CUSTOM]; + if ($gatewayId == GATEWAY_CUSTOM1) { + $gatewayTypes = [GATEWAY_TYPE_CUSTOM1]; + } elseif ($gatewayId == GATEWAY_CUSTOM2) { + $gatewayTypes = [GATEWAY_TYPE_CUSTOM2]; + } elseif ($gatewayId == GATEWAY_CUSTOM3) { + $gatewayTypes = [GATEWAY_TYPE_CUSTOM3]; } else { $accountGateway = $this->getAccountGateway($id); $paymentDriver = $accountGateway->paymentDriver(); diff --git a/app/Ninja/PaymentDrivers/BasePaymentDriver.php b/app/Ninja/PaymentDrivers/BasePaymentDriver.php index b45f257fc3..daa50f0ff4 100644 --- a/app/Ninja/PaymentDrivers/BasePaymentDriver.php +++ b/app/Ninja/PaymentDrivers/BasePaymentDriver.php @@ -977,8 +977,14 @@ class BasePaymentDriver $gatewayTypeAlias = GatewayType::getAliasFromId($gatewayTypeId); - if ($gatewayTypeId == GATEWAY_TYPE_CUSTOM) { - $url = 'javascript:showCustomModal();'; + if ($gatewayTypeId == GATEWAY_TYPE_CUSTOM1) { + $url = 'javascript:showCustom1Modal();'; + $label = e($this->accountGateway->getConfigField('name')); + } elseif ($gatewayTypeId == GATEWAY_TYPE_CUSTOM2) { + $url = 'javascript:showCustom2Modal();'; + $label = e($this->accountGateway->getConfigField('name')); + } elseif ($gatewayTypeId == GATEWAY_TYPE_CUSTOM3) { + $url = 'javascript:showCustom3Modal();'; $label = e($this->accountGateway->getConfigField('name')); } else { $url = $this->paymentUrl($gatewayTypeAlias); diff --git a/app/Ninja/PaymentDrivers/CustomPaymentDriver.php b/app/Ninja/PaymentDrivers/CustomPaymentDriver.php deleted file mode 100644 index a09d7e129f..0000000000 --- a/app/Ninja/PaymentDrivers/CustomPaymentDriver.php +++ /dev/null @@ -1,13 +0,0 @@ -string('ip')->nullable(); }); + DB::statement('UPDATE gateways SET provider = "Custom1" WHERE id = 62'); + DB::statement('UPDATE gateway_types SET alias = "custom1", name = "Custom 1" WHERE id = 6'); } /** diff --git a/database/seeds/GatewayTypesSeeder.php b/database/seeds/GatewayTypesSeeder.php index 7e4bbf6cb9..92624db717 100644 --- a/database/seeds/GatewayTypesSeeder.php +++ b/database/seeds/GatewayTypesSeeder.php @@ -14,12 +14,14 @@ class GatewayTypesSeeder extends Seeder ['alias' => 'paypal', 'name' => 'PayPal'], ['alias' => 'bitcoin', 'name' => 'Bitcoin'], ['alias' => 'dwolla', 'name' => 'Dwolla'], - ['alias' => 'custom', 'name' => 'Custom'], + ['alias' => 'custom1', 'name' => 'Custom 1'], ['alias' => 'alipay', 'name' => 'Alipay'], ['alias' => 'sofort', 'name' => 'Sofort'], ['alias' => 'sepa', 'name' => 'SEPA'], ['alias' => 'gocardless', 'name' => 'GoCardless'], ['alias' => 'apple_pay', 'name' => 'Apple Pay'], + ['alias' => 'custom2', 'name' => 'Custom 2'], + ['alias' => 'custom3', 'name' => 'Custom 3'], ]; foreach ($gateway_types as $gateway_type) { diff --git a/database/seeds/PaymentLibrariesSeeder.php b/database/seeds/PaymentLibrariesSeeder.php index 3dc53b9181..7ec8deca35 100644 --- a/database/seeds/PaymentLibrariesSeeder.php +++ b/database/seeds/PaymentLibrariesSeeder.php @@ -70,11 +70,13 @@ class PaymentLibrariesSeeder extends Seeder ['name' => 'WeChat Express', 'provider' => 'WeChat_Express', 'payment_library_id' => 2], ['name' => 'WePay', 'provider' => 'WePay', 'is_offsite' => false, 'sort_order' => 3], ['name' => 'Braintree', 'provider' => 'Braintree', 'sort_order' => 3], - ['name' => 'Custom', 'provider' => 'Custom', 'is_offsite' => true, 'sort_order' => 20], + ['name' => 'Custom', 'provider' => 'Custom1', 'is_offsite' => true, 'sort_order' => 20], ['name' => 'FirstData Payeezy', 'provider' => 'FirstData_Payeezy'], ['name' => 'GoCardless', 'provider' => 'GoCardlessV2\Redirect', 'sort_order' => 9, 'is_offsite' => true], ['name' => 'PagSeguro', 'provider' => 'PagSeguro'], ['name' => 'PAYMILL', 'provider' => 'Paymill'], + ['name' => 'Custom', 'provider' => 'Custom2', 'is_offsite' => true, 'sort_order' => 21], + ['name' => 'Custom', 'provider' => 'Custom3', 'is_offsite' => true, 'sort_order' => 22], ]; foreach ($gateways as $gateway) { diff --git a/database/setup.sql b/database/setup.sql index ff3c90377c..6eaa0a6bd9 100644 --- a/database/setup.sql +++ b/database/setup.sql @@ -1192,7 +1192,7 @@ CREATE TABLE `gateway_types` ( `alias` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1201,7 +1201,7 @@ CREATE TABLE `gateway_types` ( LOCK TABLES `gateway_types` WRITE; /*!40000 ALTER TABLE `gateway_types` DISABLE KEYS */; -INSERT INTO `gateway_types` VALUES (1,'credit_card','Credit Card'),(2,'bank_transfer','Bank Transfer'),(3,'paypal','PayPal'),(4,'bitcoin','Bitcoin'),(5,'dwolla','Dwolla'),(6,'custom','Custom'),(7,'alipay','Alipay'),(8,'sofort','Sofort'),(9,'sepa','SEPA'),(10,'gocardless','GoCardless'),(11,'apple_pay','Apple Pay'); +INSERT INTO `gateway_types` VALUES (1,'credit_card','Credit Card'),(2,'bank_transfer','Bank Transfer'),(3,'paypal','PayPal'),(4,'bitcoin','Bitcoin'),(5,'dwolla','Dwolla'),(6,'custom1','Custom 1'),(7,'alipay','Alipay'),(8,'sofort','Sofort'),(9,'sepa','SEPA'),(10,'gocardless','GoCardless'),(11,'apple_pay','Apple Pay'),(12,'custom2','Custom 2'),(13,'custom3','Custom 3'); /*!40000 ALTER TABLE `gateway_types` ENABLE KEYS */; UNLOCK TABLES; @@ -1227,7 +1227,7 @@ CREATE TABLE `gateways` ( PRIMARY KEY (`id`), KEY `gateways_payment_library_id_foreign` (`payment_library_id`), CONSTRAINT `gateways_payment_library_id_foreign` FOREIGN KEY (`payment_library_id`) REFERENCES `payment_libraries` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB AUTO_INCREMENT=67 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1236,7 +1236,7 @@ CREATE TABLE `gateways` ( LOCK TABLES `gateways` WRITE; /*!40000 ALTER TABLE `gateways` DISABLE KEYS */; -INSERT INTO `gateways` VALUES (1,'2018-04-12 14:10:46','2018-04-12 14:10:46','Authorize.Net AIM','AuthorizeNet_AIM',1,1,5,0,NULL,0,0),(2,'2018-04-12 14:10:46','2018-04-12 14:10:46','Authorize.Net SIM','AuthorizeNet_SIM',1,2,10000,0,NULL,0,0),(3,'2018-04-12 14:10:46','2018-04-12 14:10:46','CardSave','CardSave',1,1,10000,0,NULL,0,0),(4,'2018-04-12 14:10:46','2018-04-12 14:10:46','Eway Rapid','Eway_RapidShared',1,1,10000,0,NULL,1,0),(5,'2018-04-12 14:10:46','2018-04-12 14:10:46','FirstData Connect','FirstData_Connect',1,1,10000,0,NULL,0,0),(6,'2018-04-12 14:10:46','2018-04-12 14:10:46','GoCardless','GoCardless',1,2,10000,0,NULL,1,0),(7,'2018-04-12 14:10:46','2018-04-12 14:10:46','Migs ThreeParty','Migs_ThreeParty',1,1,10000,0,NULL,0,0),(8,'2018-04-12 14:10:46','2018-04-12 14:10:46','Migs TwoParty','Migs_TwoParty',1,1,10000,0,NULL,0,0),(9,'2018-04-12 14:10:46','2018-04-12 14:10:46','Mollie','Mollie',1,1,8,0,NULL,1,0),(10,'2018-04-12 14:10:46','2018-04-12 14:10:46','MultiSafepay','MultiSafepay',1,1,10000,0,NULL,0,0),(11,'2018-04-12 14:10:46','2018-04-12 14:10:46','Netaxept','Netaxept',1,1,10000,0,NULL,0,0),(12,'2018-04-12 14:10:46','2018-04-12 14:10:46','NetBanx','NetBanx',1,1,10000,0,NULL,0,0),(13,'2018-04-12 14:10:46','2018-04-12 14:10:46','PayFast','PayFast',1,1,10000,0,NULL,1,0),(14,'2018-04-12 14:10:46','2018-04-12 14:10:46','Payflow Pro','Payflow_Pro',1,1,10000,0,NULL,0,0),(15,'2018-04-12 14:10:46','2018-04-12 14:10:46','PaymentExpress PxPay','PaymentExpress_PxPay',1,1,10000,0,NULL,0,0),(16,'2018-04-12 14:10:46','2018-04-12 14:10:46','PaymentExpress PxPost','PaymentExpress_PxPost',1,1,10000,0,NULL,0,0),(17,'2018-04-12 14:10:46','2018-04-12 14:10:46','PayPal Express','PayPal_Express',1,1,4,0,NULL,1,0),(18,'2018-04-12 14:10:46','2018-04-12 14:10:46','PayPal Pro','PayPal_Pro',1,1,10000,0,NULL,0,0),(19,'2018-04-12 14:10:46','2018-04-12 14:10:46','Pin','Pin',1,1,10000,0,NULL,0,0),(20,'2018-04-12 14:10:46','2018-04-12 14:10:46','SagePay Direct','SagePay_Direct',1,1,10000,0,NULL,0,0),(21,'2018-04-12 14:10:46','2018-04-12 14:10:46','SagePay Server','SagePay_Server',1,1,10000,0,NULL,1,0),(22,'2018-04-12 14:10:46','2018-04-12 14:10:46','SecurePay DirectPost','SecurePay_DirectPost',1,1,10000,0,NULL,0,0),(23,'2018-04-12 14:10:46','2018-04-12 14:10:46','Stripe','Stripe',1,1,1,0,NULL,0,0),(24,'2018-04-12 14:10:46','2018-04-12 14:10:46','TargetPay Direct eBanking','TargetPay_Directebanking',1,1,10000,0,NULL,0,0),(25,'2018-04-12 14:10:46','2018-04-12 14:10:46','TargetPay Ideal','TargetPay_Ideal',1,1,10000,0,NULL,0,0),(26,'2018-04-12 14:10:46','2018-04-12 14:10:46','TargetPay Mr Cash','TargetPay_Mrcash',1,1,10000,0,NULL,0,0),(27,'2018-04-12 14:10:46','2018-04-12 14:10:46','TwoCheckout','TwoCheckout',1,1,10000,0,NULL,1,0),(28,'2018-04-12 14:10:46','2018-04-12 14:10:46','WorldPay','WorldPay',1,1,10000,0,NULL,0,0),(29,'2018-04-12 14:10:46','2018-04-12 14:10:46','BeanStream','BeanStream',1,2,10000,0,NULL,0,0),(30,'2018-04-12 14:10:46','2018-04-12 14:10:46','Psigate','Psigate',1,2,10000,0,NULL,0,0),(31,'2018-04-12 14:10:46','2018-04-12 14:10:46','moolah','AuthorizeNet_AIM',1,1,10000,0,NULL,0,0),(32,'2018-04-12 14:10:46','2018-04-12 14:10:46','Alipay','Alipay_Express',1,1,10000,0,NULL,0,0),(33,'2018-04-12 14:10:46','2018-04-12 14:10:46','Buckaroo','Buckaroo_CreditCard',1,1,10000,0,NULL,0,0),(34,'2018-04-12 14:10:46','2018-04-12 14:10:46','Coinbase','Coinbase',1,1,10000,0,NULL,0,0),(35,'2018-04-12 14:10:46','2018-04-12 14:10:46','DataCash','DataCash',1,1,10000,0,NULL,0,0),(36,'2018-04-12 14:10:46','2018-04-12 14:10:46','Neteller','Neteller',1,2,10000,0,NULL,0,0),(37,'2018-04-12 14:10:46','2018-04-12 14:10:46','Pacnet','Pacnet',1,1,10000,0,NULL,0,0),(38,'2018-04-12 14:10:46','2018-04-12 14:10:46','PaymentSense','PaymentSense',1,2,10000,0,NULL,0,0),(39,'2018-04-12 14:10:46','2018-04-12 14:10:46','Realex','Realex_Remote',1,1,10000,0,NULL,0,0),(40,'2018-04-12 14:10:46','2018-04-12 14:10:46','Sisow','Sisow',1,1,10000,0,NULL,0,0),(41,'2018-04-12 14:10:46','2018-04-12 14:10:46','Skrill','Skrill',1,1,10000,0,NULL,1,0),(42,'2018-04-12 14:10:46','2018-04-12 14:10:46','BitPay','BitPay',1,1,7,0,NULL,1,0),(43,'2018-04-12 14:10:46','2018-04-12 14:10:46','Dwolla','Dwolla',1,1,6,0,NULL,1,0),(44,'2018-04-12 14:10:46','2018-04-12 14:10:46','AGMS','Agms',1,1,10000,0,NULL,0,0),(45,'2018-04-12 14:10:46','2018-04-12 14:10:46','Barclays','BarclaysEpdq\\Essential',1,1,10000,0,NULL,0,0),(46,'2018-04-12 14:10:46','2018-04-12 14:10:46','Cardgate','Cardgate',1,1,10000,0,NULL,0,0),(47,'2018-04-12 14:10:46','2018-04-12 14:10:46','Checkout.com','CheckoutCom',1,1,10000,0,NULL,0,0),(48,'2018-04-12 14:10:46','2018-04-12 14:10:46','Creditcall','Creditcall',1,1,10000,0,NULL,0,0),(49,'2018-04-12 14:10:46','2018-04-12 14:10:46','Cybersource','Cybersource',1,1,10000,0,NULL,0,0),(50,'2018-04-12 14:10:46','2018-04-12 14:10:46','ecoPayz','Ecopayz',1,1,10000,0,NULL,0,0),(51,'2018-04-12 14:10:46','2018-04-12 14:10:46','Fasapay','Fasapay',1,1,10000,0,NULL,0,0),(52,'2018-04-12 14:10:46','2018-04-12 14:10:46','Komoju','Komoju',1,1,10000,0,NULL,0,0),(53,'2018-04-12 14:10:46','2018-04-12 14:10:46','Multicards','Multicards',1,2,10000,0,NULL,0,0),(54,'2018-04-12 14:10:46','2018-04-12 14:10:46','Pagar.Me','Pagarme',1,2,10000,0,NULL,0,0),(55,'2018-04-12 14:10:46','2018-04-12 14:10:46','Paysafecard','Paysafecard',1,1,10000,0,NULL,0,0),(56,'2018-04-12 14:10:46','2018-04-12 14:10:46','Paytrace','Paytrace_CreditCard',1,1,10000,0,NULL,0,0),(57,'2018-04-12 14:10:46','2018-04-12 14:10:46','Secure Trading','SecureTrading',1,1,10000,0,NULL,0,0),(58,'2018-04-12 14:10:46','2018-04-12 14:10:46','SecPay','SecPay',1,1,10000,0,NULL,0,0),(59,'2018-04-12 14:10:46','2018-04-12 14:10:46','WeChat Express','WeChat_Express',1,2,10000,0,NULL,0,0),(60,'2018-04-12 14:10:46','2018-04-12 14:10:46','WePay','WePay',1,1,3,0,NULL,0,0),(61,'2018-04-12 14:10:46','2018-04-12 14:10:46','Braintree','Braintree',1,1,3,0,NULL,0,0),(62,'2018-04-12 14:10:46','2018-04-12 14:10:46','Custom','Custom',1,1,20,0,NULL,1,0),(63,'2018-04-12 14:10:46','2018-04-12 14:10:46','FirstData Payeezy','FirstData_Payeezy',1,1,10000,0,NULL,0,0),(64,'2018-04-12 14:10:46','2018-04-12 14:10:46','GoCardless','GoCardlessV2\\Redirect',1,1,9,0,NULL,1,0),(65,'2018-04-12 14:10:46','2018-04-12 14:10:46','PagSeguro','PagSeguro',1,1,10000,0,NULL,0,0),(66,'2018-04-12 14:10:46','2018-04-12 14:10:46','PAYMILL','Paymill',1,1,10000,0,NULL,0,0); +INSERT INTO `gateways` VALUES (1,'2018-04-13 06:49:13','2018-04-13 06:49:13','Authorize.Net AIM','AuthorizeNet_AIM',1,1,5,0,NULL,0,0),(2,'2018-04-13 06:49:13','2018-04-13 06:49:13','Authorize.Net SIM','AuthorizeNet_SIM',1,2,10000,0,NULL,0,0),(3,'2018-04-13 06:49:13','2018-04-13 06:49:13','CardSave','CardSave',1,1,10000,0,NULL,0,0),(4,'2018-04-13 06:49:13','2018-04-13 06:49:13','Eway Rapid','Eway_RapidShared',1,1,10000,0,NULL,1,0),(5,'2018-04-13 06:49:13','2018-04-13 06:49:13','FirstData Connect','FirstData_Connect',1,1,10000,0,NULL,0,0),(6,'2018-04-13 06:49:13','2018-04-13 06:49:13','GoCardless','GoCardless',1,2,10000,0,NULL,1,0),(7,'2018-04-13 06:49:13','2018-04-13 06:49:13','Migs ThreeParty','Migs_ThreeParty',1,1,10000,0,NULL,0,0),(8,'2018-04-13 06:49:14','2018-04-13 06:49:14','Migs TwoParty','Migs_TwoParty',1,1,10000,0,NULL,0,0),(9,'2018-04-13 06:49:14','2018-04-13 06:49:14','Mollie','Mollie',1,1,8,0,NULL,1,0),(10,'2018-04-13 06:49:14','2018-04-13 06:49:14','MultiSafepay','MultiSafepay',1,1,10000,0,NULL,0,0),(11,'2018-04-13 06:49:14','2018-04-13 06:49:14','Netaxept','Netaxept',1,1,10000,0,NULL,0,0),(12,'2018-04-13 06:49:14','2018-04-13 06:49:14','NetBanx','NetBanx',1,1,10000,0,NULL,0,0),(13,'2018-04-13 06:49:14','2018-04-13 06:49:14','PayFast','PayFast',1,1,10000,0,NULL,1,0),(14,'2018-04-13 06:49:14','2018-04-13 06:49:14','Payflow Pro','Payflow_Pro',1,1,10000,0,NULL,0,0),(15,'2018-04-13 06:49:14','2018-04-13 06:49:14','PaymentExpress PxPay','PaymentExpress_PxPay',1,1,10000,0,NULL,0,0),(16,'2018-04-13 06:49:14','2018-04-13 06:49:14','PaymentExpress PxPost','PaymentExpress_PxPost',1,1,10000,0,NULL,0,0),(17,'2018-04-13 06:49:14','2018-04-13 06:49:14','PayPal Express','PayPal_Express',1,1,4,0,NULL,1,0),(18,'2018-04-13 06:49:14','2018-04-13 06:49:14','PayPal Pro','PayPal_Pro',1,1,10000,0,NULL,0,0),(19,'2018-04-13 06:49:14','2018-04-13 06:49:14','Pin','Pin',1,1,10000,0,NULL,0,0),(20,'2018-04-13 06:49:14','2018-04-13 06:49:14','SagePay Direct','SagePay_Direct',1,1,10000,0,NULL,0,0),(21,'2018-04-13 06:49:14','2018-04-13 06:49:14','SagePay Server','SagePay_Server',1,1,10000,0,NULL,1,0),(22,'2018-04-13 06:49:14','2018-04-13 06:49:14','SecurePay DirectPost','SecurePay_DirectPost',1,1,10000,0,NULL,0,0),(23,'2018-04-13 06:49:14','2018-04-13 06:49:14','Stripe','Stripe',1,1,1,0,NULL,0,0),(24,'2018-04-13 06:49:14','2018-04-13 06:49:14','TargetPay Direct eBanking','TargetPay_Directebanking',1,1,10000,0,NULL,0,0),(25,'2018-04-13 06:49:14','2018-04-13 06:49:14','TargetPay Ideal','TargetPay_Ideal',1,1,10000,0,NULL,0,0),(26,'2018-04-13 06:49:14','2018-04-13 06:49:14','TargetPay Mr Cash','TargetPay_Mrcash',1,1,10000,0,NULL,0,0),(27,'2018-04-13 06:49:14','2018-04-13 06:49:14','TwoCheckout','TwoCheckout',1,1,10000,0,NULL,1,0),(28,'2018-04-13 06:49:14','2018-04-13 06:49:14','WorldPay','WorldPay',1,1,10000,0,NULL,0,0),(29,'2018-04-13 06:49:14','2018-04-13 06:49:14','BeanStream','BeanStream',1,2,10000,0,NULL,0,0),(30,'2018-04-13 06:49:14','2018-04-13 06:49:14','Psigate','Psigate',1,2,10000,0,NULL,0,0),(31,'2018-04-13 06:49:14','2018-04-13 06:49:14','moolah','AuthorizeNet_AIM',1,1,10000,0,NULL,0,0),(32,'2018-04-13 06:49:14','2018-04-13 06:49:14','Alipay','Alipay_Express',1,1,10000,0,NULL,0,0),(33,'2018-04-13 06:49:14','2018-04-13 06:49:14','Buckaroo','Buckaroo_CreditCard',1,1,10000,0,NULL,0,0),(34,'2018-04-13 06:49:14','2018-04-13 06:49:14','Coinbase','Coinbase',1,1,10000,0,NULL,0,0),(35,'2018-04-13 06:49:14','2018-04-13 06:49:14','DataCash','DataCash',1,1,10000,0,NULL,0,0),(36,'2018-04-13 06:49:14','2018-04-13 06:49:14','Neteller','Neteller',1,2,10000,0,NULL,0,0),(37,'2018-04-13 06:49:14','2018-04-13 06:49:14','Pacnet','Pacnet',1,1,10000,0,NULL,0,0),(38,'2018-04-13 06:49:14','2018-04-13 06:49:14','PaymentSense','PaymentSense',1,2,10000,0,NULL,0,0),(39,'2018-04-13 06:49:14','2018-04-13 06:49:14','Realex','Realex_Remote',1,1,10000,0,NULL,0,0),(40,'2018-04-13 06:49:14','2018-04-13 06:49:14','Sisow','Sisow',1,1,10000,0,NULL,0,0),(41,'2018-04-13 06:49:14','2018-04-13 06:49:14','Skrill','Skrill',1,1,10000,0,NULL,1,0),(42,'2018-04-13 06:49:14','2018-04-13 06:49:14','BitPay','BitPay',1,1,7,0,NULL,1,0),(43,'2018-04-13 06:49:14','2018-04-13 06:49:14','Dwolla','Dwolla',1,1,6,0,NULL,1,0),(44,'2018-04-13 06:49:14','2018-04-13 06:49:14','AGMS','Agms',1,1,10000,0,NULL,0,0),(45,'2018-04-13 06:49:14','2018-04-13 06:49:14','Barclays','BarclaysEpdq\\Essential',1,1,10000,0,NULL,0,0),(46,'2018-04-13 06:49:14','2018-04-13 06:49:14','Cardgate','Cardgate',1,1,10000,0,NULL,0,0),(47,'2018-04-13 06:49:14','2018-04-13 06:49:14','Checkout.com','CheckoutCom',1,1,10000,0,NULL,0,0),(48,'2018-04-13 06:49:14','2018-04-13 06:49:14','Creditcall','Creditcall',1,1,10000,0,NULL,0,0),(49,'2018-04-13 06:49:14','2018-04-13 06:49:14','Cybersource','Cybersource',1,1,10000,0,NULL,0,0),(50,'2018-04-13 06:49:14','2018-04-13 06:49:14','ecoPayz','Ecopayz',1,1,10000,0,NULL,0,0),(51,'2018-04-13 06:49:14','2018-04-13 06:49:14','Fasapay','Fasapay',1,1,10000,0,NULL,0,0),(52,'2018-04-13 06:49:14','2018-04-13 06:49:14','Komoju','Komoju',1,1,10000,0,NULL,0,0),(53,'2018-04-13 06:49:14','2018-04-13 06:49:14','Multicards','Multicards',1,2,10000,0,NULL,0,0),(54,'2018-04-13 06:49:14','2018-04-13 06:49:14','Pagar.Me','Pagarme',1,2,10000,0,NULL,0,0),(55,'2018-04-13 06:49:14','2018-04-13 06:49:14','Paysafecard','Paysafecard',1,1,10000,0,NULL,0,0),(56,'2018-04-13 06:49:14','2018-04-13 06:49:14','Paytrace','Paytrace_CreditCard',1,1,10000,0,NULL,0,0),(57,'2018-04-13 06:49:14','2018-04-13 06:49:14','Secure Trading','SecureTrading',1,1,10000,0,NULL,0,0),(58,'2018-04-13 06:49:14','2018-04-13 06:49:14','SecPay','SecPay',1,1,10000,0,NULL,0,0),(59,'2018-04-13 06:49:14','2018-04-13 06:49:14','WeChat Express','WeChat_Express',1,2,10000,0,NULL,0,0),(60,'2018-04-13 06:49:14','2018-04-13 06:49:14','WePay','WePay',1,1,3,0,NULL,0,0),(61,'2018-04-13 06:49:14','2018-04-13 06:49:14','Braintree','Braintree',1,1,3,0,NULL,0,0),(62,'2018-04-13 06:49:14','2018-04-13 06:49:14','Custom','Custom1',1,1,20,0,NULL,1,0),(63,'2018-04-13 06:49:14','2018-04-13 06:49:14','FirstData Payeezy','FirstData_Payeezy',1,1,10000,0,NULL,0,0),(64,'2018-04-13 06:49:14','2018-04-13 06:49:14','GoCardless','GoCardlessV2\\Redirect',1,1,9,0,NULL,1,0),(65,'2018-04-13 06:49:14','2018-04-13 06:49:14','PagSeguro','PagSeguro',1,1,10000,0,NULL,0,0),(66,'2018-04-13 06:49:14','2018-04-13 06:49:14','PAYMILL','Paymill',1,1,10000,0,NULL,0,0),(67,'2018-04-13 06:49:14','2018-04-13 06:49:14','Custom','Custom2',1,1,21,0,NULL,1,0),(68,'2018-04-13 06:49:14','2018-04-13 06:49:14','Custom','Custom3',1,1,22,0,NULL,1,0); /*!40000 ALTER TABLE `gateways` ENABLE KEYS */; UNLOCK TABLES; @@ -1843,7 +1843,7 @@ CREATE TABLE `payment_libraries` ( LOCK TABLES `payment_libraries` WRITE; /*!40000 ALTER TABLE `payment_libraries` DISABLE KEYS */; -INSERT INTO `payment_libraries` VALUES (1,'2018-04-12 14:10:44','2018-04-12 14:10:44','Omnipay',1),(2,'2018-04-12 14:10:44','2018-04-12 14:10:44','PHP-Payments [Deprecated]',1); +INSERT INTO `payment_libraries` VALUES (1,'2018-04-13 06:49:12','2018-04-13 06:49:12','Omnipay',1),(2,'2018-04-13 06:49:12','2018-04-13 06:49:12','PHP-Payments [Deprecated]',1); /*!40000 ALTER TABLE `payment_libraries` ENABLE KEYS */; UNLOCK TABLES; @@ -1950,7 +1950,7 @@ CREATE TABLE `payment_terms` ( LOCK TABLES `payment_terms` WRITE; /*!40000 ALTER TABLE `payment_terms` DISABLE KEYS */; -INSERT INTO `payment_terms` VALUES (1,7,'Net 7','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,1),(2,10,'Net 10','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,2),(3,14,'Net 14','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,3),(4,15,'Net 15','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,4),(5,30,'Net 30','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,5),(6,60,'Net 60','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,6),(7,90,'Net 90','2018-04-12 14:10:44','2018-04-12 14:10:44',NULL,0,0,7),(8,-1,'Net 0','2018-04-12 14:10:48','2018-04-12 14:10:48',NULL,0,0,0); +INSERT INTO `payment_terms` VALUES (1,7,'Net 7','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,1),(2,10,'Net 10','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,2),(3,14,'Net 14','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,3),(4,15,'Net 15','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,4),(5,30,'Net 30','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,5),(6,60,'Net 60','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,6),(7,90,'Net 90','2018-04-13 06:49:12','2018-04-13 06:49:12',NULL,0,0,7),(8,-1,'Net 0','2018-04-13 06:49:16','2018-04-13 06:49:16',NULL,0,0,0); /*!40000 ALTER TABLE `payment_terms` ENABLE KEYS */; UNLOCK TABLES; @@ -2290,7 +2290,7 @@ CREATE TABLE `proposal_templates` ( LOCK TABLES `proposal_templates` WRITE; /*!40000 ALTER TABLE `proposal_templates` DISABLE KEYS */; -INSERT INTO `proposal_templates` VALUES (1,NULL,NULL,'2018-04-12 14:10:47','2018-04-12 14:10:47',NULL,0,'','Clean','\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n\n

Proposal #$quoteNumber

\n

New Business Proposal

\n

Valid Until $validUntil

\n
\n

Prepared for:

\n

$client.name

\n

\n $client.address1
\n $client.city, $client.state $client.postal_code

\n
\n

Prepared by:

\n

$account.name

\n

\n $account.address1
\n $account.city, $account.state $account.postal_code

\n
\n

Project Description:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.


\n
\n
\n
\n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n

Goal:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n \n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue auctor magna id sodales. Maecenas mollis justo sed tempor facilisis. Ut malesuada in nibh ultrices auctor. Proin id maximus ipsum. Sed eu magna ac nisl sollicitudin porta in non augue. Mauris feugiat interdum aliquam. Aliquam ultrices interdum dolor.

\n
\n \n \n \n \n \n \n \n \n \n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n
\n
\n
\n \n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n \n

Goal:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n','body {\n font-family: \'Open Sans\', Helvetica, arial, sans-serif;\n color: #161616;\n}\n\n.grey-upper {\n font-size: 11px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #9a9a9a;\n}\n\n.blue-upper {\n padding-bottom: 8px;\n font-size: 11px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #37a3c6;\n margin: 0;\n}\n\np span.client {\n margin:5px 0px 0px 0px;\n}\n\nh1.heading {\n font-size: 48px;\n line-height: 53px;\n text-transform: uppercase;\n font-weight: 100;\n letter-spacing: 3px;\n padding: 0 50px;\n}\n\nh3.client.name {\n padding: 0;\n margin: 0 0 -10px 0;\n font-size:18px;\n font-weight: 600;\n}\n\nspan.client.address1, span.client.city, span.client.state, span.client.postal-code {\n font-size: 14px;\n line-height: 18.5px;\n}\n\nh3.account.name {\n padding: 0;\n margin: 0 0 -10px 0;\n font-size:18px;\n font-weight: 600;\n}\n\nspan.account.address1, span.account.city, span.account.state, span.account.postal-code {\n font-size: 14px;\n line-height: 18.5px;\n}\n\n\n.card-title {\n font-size: 13px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #37a3c6;\n font-weight: 600;\n}\n\n.card-text {\n font-size: 15px;\n line-height: 21px;\n}\n\n\na.button {\n background: #37a3c6;\n padding: 12px 25px;\n border-radius: 2px;\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n text-decoration: none;\n letter-spacing: 3px;\n font-weight: 600;\n margin: 15px 0;\n}\n\na.button:hover {\n background: #161616;\n}\n\n/****** Table *****************************************/\n\n.grey-bg {\n background: #eeefef;\n}\n\ntable td {\n padding: 20px;\n}\n\ntr.top-header {\n height: 350px;\n}\n\ntr.top-header td {\n padding: 80px 0 0 0;\n border-bottom: 1px solid #dddcdc;\n}\n\ntr.top-header h1.heading {\n margin: 0;\n}\n\ntr.top-header p {\n margin: 5px 0 0 0;\n}\n\n.proposal-info {\n height: 350px;\n}\n\n.proposal-info td {\n padding: 0 0 120px 0;\n}\n\ntr.block-quote {\n margin: 50px 0 ;\n}\n\ntr.block-quote td {\n background: #fbfbfb;\n font-style: italic;\n padding: 0 75px;\n font-size: 17px;\n line-height: 24px;\n padding: 80px 120px;\n color: #686766;\n border-top: 1px solid #dddcdc;\n border-bottom: 1px solid #dddcdc;\n}\n\ntr.footer td {\n background: #f0efef;\n font-size: 12px;\n letter-spacing: 3px;\n color: #8c8b8a;\n padding: 50px 0;\n text-transform: uppercase;\n}\n\n/****** Misc *****************************************/\n\n\nhr {\n border: 0;\n height: 1px;\n background: #dddada;\n}\n\n.footer img {\n vertical-align: middle;\n}\n',1); +INSERT INTO `proposal_templates` VALUES (1,NULL,NULL,'2018-04-13 06:49:15','2018-04-13 06:49:15',NULL,0,'','Clean','\n\n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n\n

Proposal #$quoteNumber

\n

New Business Proposal

\n

Valid Until $validUntil

\n
\n

Prepared for:

\n

$client.name

\n

\n $client.address1
\n $client.city, $client.state $client.postal_code

\n
\n

Prepared by:

\n

$account.name

\n

\n $account.address1
\n $account.city, $account.state $account.postal_code

\n
\n

Project Description:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.


\n
\n
\n
\n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n

Goal:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n \n

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce congue auctor magna id sodales. Maecenas mollis justo sed tempor facilisis. Ut malesuada in nibh ultrices auctor. Proin id maximus ipsum. Sed eu magna ac nisl sollicitudin porta in non augue. Mauris feugiat interdum aliquam. Aliquam ultrices interdum dolor.

\n
\n \n \n \n \n \n \n \n \n \n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n
\n
\n
\n \n

Objective:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n \n

Goal:

\n

Koala Photography seeks a full review of their historical financial records and future accounting needs. At the start, our experts carefully review your past records and assess your financial services needs according to the nature of your company and suggest the services model best suited to your requirements. The work plan is finalized only after an initial (and possibly subsequent) extensive consultation with [Client.Company]. Periodic review of our services and client feedback is an essential feature of our work plan which ensures that we remain an efficient accounting partner for your business.

\n
\n','body {\n font-family: \'Open Sans\', Helvetica, arial, sans-serif;\n color: #161616;\n}\n\n.grey-upper {\n font-size: 11px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #9a9a9a;\n}\n\n.blue-upper {\n padding-bottom: 8px;\n font-size: 11px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #37a3c6;\n margin: 0;\n}\n\np span.client {\n margin:5px 0px 0px 0px;\n}\n\nh1.heading {\n font-size: 48px;\n line-height: 53px;\n text-transform: uppercase;\n font-weight: 100;\n letter-spacing: 3px;\n padding: 0 50px;\n}\n\nh3.client.name {\n padding: 0;\n margin: 0 0 -10px 0;\n font-size:18px;\n font-weight: 600;\n}\n\nspan.client.address1, span.client.city, span.client.state, span.client.postal-code {\n font-size: 14px;\n line-height: 18.5px;\n}\n\nh3.account.name {\n padding: 0;\n margin: 0 0 -10px 0;\n font-size:18px;\n font-weight: 600;\n}\n\nspan.account.address1, span.account.city, span.account.state, span.account.postal-code {\n font-size: 14px;\n line-height: 18.5px;\n}\n\n\n.card-title {\n font-size: 13px;\n letter-spacing: 3px;\n text-transform: uppercase;\n color: #37a3c6;\n font-weight: 600;\n}\n\n.card-text {\n font-size: 15px;\n line-height: 21px;\n}\n\n\na.button {\n background: #37a3c6;\n padding: 12px 25px;\n border-radius: 2px;\n color: #fff;\n text-transform: uppercase;\n font-size: 12px;\n text-decoration: none;\n letter-spacing: 3px;\n font-weight: 600;\n margin: 15px 0;\n}\n\na.button:hover {\n background: #161616;\n}\n\n/****** Table *****************************************/\n\n.grey-bg {\n background: #eeefef;\n}\n\ntable td {\n padding: 20px;\n}\n\ntr.top-header {\n height: 350px;\n}\n\ntr.top-header td {\n padding: 80px 0 0 0;\n border-bottom: 1px solid #dddcdc;\n}\n\ntr.top-header h1.heading {\n margin: 0;\n}\n\ntr.top-header p {\n margin: 5px 0 0 0;\n}\n\n.proposal-info {\n height: 350px;\n}\n\n.proposal-info td {\n padding: 0 0 120px 0;\n}\n\ntr.block-quote {\n margin: 50px 0 ;\n}\n\ntr.block-quote td {\n background: #fbfbfb;\n font-style: italic;\n padding: 0 75px;\n font-size: 17px;\n line-height: 24px;\n padding: 80px 120px;\n color: #686766;\n border-top: 1px solid #dddcdc;\n border-bottom: 1px solid #dddcdc;\n}\n\ntr.footer td {\n background: #f0efef;\n font-size: 12px;\n letter-spacing: 3px;\n color: #8c8b8a;\n padding: 50px 0;\n text-transform: uppercase;\n}\n\n/****** Misc *****************************************/\n\n\nhr {\n border: 0;\n height: 1px;\n background: #dddada;\n}\n\n.footer img {\n vertical-align: middle;\n}\n',1); /*!40000 ALTER TABLE `proposal_templates` ENABLE KEYS */; UNLOCK TABLES; @@ -2880,4 +2880,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2018-04-12 20:10:48 +-- Dump completed on 2018-04-13 12:49:16 diff --git a/resources/views/accounts/payments.blade.php b/resources/views/accounts/payments.blade.php index e9f2987989..05c056112e 100644 --- a/resources/views/accounts/payments.blade.php +++ b/resources/views/accounts/payments.blade.php @@ -263,7 +263,10 @@ updateFeeSample(); - if (gateway_type_id == {{ GATEWAY_TYPE_CUSTOM }} || {{ $account->gateway_fee_enabled ? '0' : '1' }}) { + if (gateway_type_id == {{ GATEWAY_TYPE_CUSTOM1 }} || + gateway_type_id == {{ GATEWAY_TYPE_CUSTOM2 }} || + gateway_type_id == {{ GATEWAY_TYPE_CUSTOM3 }} || + {{ $account->gateway_fee_enabled ? '0' : '1' }}) { $('#feesEnabled').hide(); $('#feesDisabled').show(); } else { diff --git a/resources/views/invoices/view.blade.php b/resources/views/invoices/view.blade.php index 28076a8756..38ef0a04bb 100644 --- a/resources/views/invoices/view.blade.php +++ b/resources/views/invoices/view.blade.php @@ -332,8 +332,16 @@ } } - function showCustomModal() { - $('#customGatewayModal').modal('show'); + function showCustom1Modal() { + $('#custom1GatewayModal').modal('show'); + } + + function showCustom2Modal() { + $('#custom2GatewayModal').modal('show'); + } + + function showCustom3Modal() { + $('#custom3GatewayModal').modal('show'); } function onModalPayNowClick() { @@ -394,30 +402,18 @@ - @if (isset($customGatewayName)) - - @endif @if ($account->requiresAuthorization($invoice))