mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 05:02:36 +01:00
Add custom fields to required client info at checkout
This commit is contained in:
parent
5b0c63cb39
commit
4c76107526
@ -36,6 +36,10 @@ class RequiredClientInfo extends Component
|
||||
*/
|
||||
public $invoice;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $terms_accepted = true;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
@ -82,6 +86,11 @@ class RequiredClientInfo extends Component
|
||||
'client_shipping_postal_code' => 'shipping_postal_code',
|
||||
'client_shipping_country_id' => 'shipping_country_id',
|
||||
|
||||
'client_custom_value1' => 'custom_value1',
|
||||
'client_custom_value2' => 'custom_value2',
|
||||
'client_custom_value3' => 'custom_value3',
|
||||
'client_custom_value4' => 'custom_value4',
|
||||
|
||||
'contact_first_name' => 'first_name',
|
||||
'contact_last_name' => 'last_name',
|
||||
'contact_email' => 'email',
|
||||
@ -122,6 +131,10 @@ class RequiredClientInfo extends Component
|
||||
'client.name' => '',
|
||||
'client.website' => '',
|
||||
'client.phone' => '',
|
||||
'client.custom_value1' => '',
|
||||
'client.custom_value2' => '',
|
||||
'client.custom_value3' => '',
|
||||
'client.custom_value4' => '',
|
||||
];
|
||||
|
||||
public $show_form = false;
|
||||
@ -136,13 +149,11 @@ class RequiredClientInfo extends Component
|
||||
|
||||
$this->client = $this->contact->client;
|
||||
|
||||
count($this->fields) > 0
|
||||
? $this->checkFields()
|
||||
: $this->show_form = false;
|
||||
|
||||
if($this->company->settings->show_accept_invoice_terms && request()->has('hash'))
|
||||
if($this->company->settings->show_accept_invoice_terms && request()->query('hash'))
|
||||
{
|
||||
$this->show_terms = true;
|
||||
$this->terms_accepted = false;
|
||||
$this->show_form = true;
|
||||
|
||||
$hash = Cache::get(request()->input('hash'));
|
||||
|
||||
@ -150,6 +161,15 @@ class RequiredClientInfo extends Component
|
||||
|
||||
}
|
||||
|
||||
count($this->fields) > 0 || $this->show_terms
|
||||
? $this->checkFields()
|
||||
: $this->show_form = false;
|
||||
|
||||
}
|
||||
|
||||
public function toggleTermsAccepted()
|
||||
{
|
||||
$this->terms_accepted = !$this->terms_accepted;
|
||||
|
||||
}
|
||||
|
||||
@ -189,7 +209,7 @@ class RequiredClientInfo extends Component
|
||||
|
||||
private function updateClientDetails(array $data): bool
|
||||
{
|
||||
nlog($this->company->id);
|
||||
|
||||
$client = [];
|
||||
$contact = [];
|
||||
|
||||
@ -249,9 +269,6 @@ class RequiredClientInfo extends Component
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($this->show_terms)
|
||||
$this->show_form = true;
|
||||
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,10 @@ class CompanyGateway extends BaseModel
|
||||
'require_client_phone',
|
||||
'require_contact_name',
|
||||
'require_contact_email',
|
||||
'require_custom_value1',
|
||||
'require_custom_value2',
|
||||
'require_custom_value3',
|
||||
'require_custom_value4',
|
||||
'update_details',
|
||||
'config',
|
||||
'fees_and_limits',
|
||||
|
@ -67,17 +67,6 @@ class AuthorizePaymentDriver extends BaseDriver
|
||||
public function getClientRequiredFields(): array
|
||||
{
|
||||
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
['name' => 'client_name', 'label' => ctrans('texts.name'), 'type' => 'text', 'validation' => 'required|min:2'],
|
||||
['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required|email:rfc'],
|
||||
@ -88,7 +77,43 @@ class AuthorizePaymentDriver extends BaseDriver
|
||||
['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'select', 'validation' => 'required'],
|
||||
];
|
||||
|
||||
return array_merge($fields, $data);
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value1) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value1', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value2) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value2', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client2'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value3) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value3', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client3'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value4) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value4', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client4'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
return array_merge($data, $fields);
|
||||
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ use App\Models\PaymentType;
|
||||
use App\Models\SystemLog;
|
||||
use App\Models\TransactionEvent;
|
||||
use App\Services\Subscription\SubscriptionService;
|
||||
use App\Utils\Helpers;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\Traits\MakesHash;
|
||||
use App\Utils\Traits\SystemLogTrait;
|
||||
@ -76,6 +77,8 @@ class BaseDriver extends AbstractPaymentDriver
|
||||
/* PaymentHash */
|
||||
public $payment_hash;
|
||||
|
||||
public $helpers;
|
||||
|
||||
/* Array of payment methods */
|
||||
public static $methods = [];
|
||||
|
||||
@ -87,6 +90,7 @@ class BaseDriver extends AbstractPaymentDriver
|
||||
$this->company_gateway = $company_gateway;
|
||||
$this->invitation = $invitation;
|
||||
$this->client = $client;
|
||||
$this->helpers = new Helpers();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -94,9 +98,75 @@ class BaseDriver extends AbstractPaymentDriver
|
||||
*
|
||||
* @return array[]
|
||||
*/
|
||||
|
||||
public function getClientRequiredFields(): array
|
||||
{
|
||||
return [];
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_client_name) {
|
||||
$fields[] = ['name' => 'client_name', 'label' => ctrans('texts.client_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_name) {
|
||||
$fields[] = ['name' => 'contact_first_name', 'label' => ctrans('texts.first_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'contact_last_name', 'label' => ctrans('texts.last_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_email) {
|
||||
$fields[] = ['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required,email:rfc'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_client_phone) {
|
||||
$fields[] = ['name' => 'client_phone', 'label' => ctrans('texts.client_phone'), 'type' => 'tel', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_billing_address) {
|
||||
$fields[] = ['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_state', 'label' => ctrans('texts.state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_postal_code) {
|
||||
$fields[] = ['name' => 'client_postal_code', 'label' => ctrans('texts.postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value1) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value1', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value2) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value2', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client2'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value3) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value3', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client3'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value4) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value4', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client4'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
return $fields;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -592,22 +662,7 @@ class BaseDriver extends AbstractPaymentDriver
|
||||
$this->required_fields[] = 'phone';
|
||||
}
|
||||
}
|
||||
|
||||
// if ($this->company_gateway->require_contact_email) {
|
||||
// if ($this->checkRequiredResource($this->email)) {
|
||||
// $this->required_fields[] = 'contact_email';
|
||||
// }
|
||||
// }
|
||||
|
||||
// if ($this->company_gateway->require_contact_name) {
|
||||
// if ($this->checkRequiredResource($this->first_name)) {
|
||||
// $this->required_fields[] = 'contact_first_name';
|
||||
// }
|
||||
|
||||
// if ($this->checkRequiredResource($this->last_name)) {
|
||||
// $this->required_fields[] = 'contact_last_name';
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
if ($this->company_gateway->require_postal_code) {
|
||||
// In case "require_postal_code" is true, we don't need billing address.
|
||||
|
@ -155,49 +155,6 @@ class CheckoutComPaymentDriver extends BaseDriver
|
||||
return 'gateways.checkout.credit_card.pay';
|
||||
}
|
||||
|
||||
public function getClientRequiredFields(): array
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_client_name) {
|
||||
$fields[] = ['name' => 'client_name', 'label' => ctrans('texts.client_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_name) {
|
||||
$fields[] = ['name' => 'contact_first_name', 'label' => ctrans('texts.first_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'contact_last_name', 'label' => ctrans('texts.last_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_email) {
|
||||
$fields[] = ['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required,email:rfc'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_client_phone) {
|
||||
$fields[] = ['name' => 'client_phone', 'label' => ctrans('texts.client_phone'), 'type' => 'tel', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_billing_address) {
|
||||
$fields[] = ['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_state', 'label' => ctrans('texts.state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_postal_code) {
|
||||
$fields[] = ['name' => 'client_postal_code', 'label' => ctrans('texts.postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
public function authorizeView($data)
|
||||
{
|
||||
return $this->payment_method->authorizeView($data);
|
||||
|
@ -191,6 +191,32 @@ class EwayPaymentDriver extends BaseDriver
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value1) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value1', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value2) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value2', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client2'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value3) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value3', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client3'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value4) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value4', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client4'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
return $fields;
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@
|
||||
namespace App\PaymentDrivers;
|
||||
|
||||
use App\Exceptions\SystemError;
|
||||
use App\Http\Requests\Payments\PaymentWebhookRequest;
|
||||
use App\Jobs\Util\SystemLogger;
|
||||
use App\Models\ClientGatewayToken;
|
||||
use App\Models\GatewayType;
|
||||
@ -166,51 +167,6 @@ class PaytracePaymentDriver extends BaseDriver
|
||||
$this->processUnsuccessfulTransaction($data, false);
|
||||
}
|
||||
|
||||
public function getClientRequiredFields(): array
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_client_name) {
|
||||
$fields[] = ['name' => 'client_name', 'label' => ctrans('texts.client_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_name) {
|
||||
$fields[] = ['name' => 'contact_first_name', 'label' => ctrans('texts.first_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'contact_last_name', 'label' => ctrans('texts.last_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_email) {
|
||||
$fields[] = ['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required,email:rfc'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_client_phone) {
|
||||
$fields[] = ['name' => 'client_phone', 'label' => ctrans('texts.client_phone'), 'type' => 'tel', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
$fields[] = ['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
if ($this->company_gateway->require_billing_address) {
|
||||
$fields[] = ['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_state', 'label' => ctrans('texts.state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
// if ($this->company_gateway->require_postal_code) {
|
||||
$fields[] = ['name' => 'client_postal_code', 'label' => ctrans('texts.postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
// }
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
public function processWebhookRequest(PaymentWebhookRequest $request, Payment $payment = null)
|
||||
{
|
||||
}
|
||||
|
@ -182,48 +182,6 @@ class SquarePaymentDriver extends BaseDriver
|
||||
{
|
||||
}
|
||||
|
||||
public function getClientRequiredFields(): array
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
if ($this->company_gateway->require_client_name) {
|
||||
$fields[] = ['name' => 'client_name', 'label' => ctrans('texts.client_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_name) {
|
||||
$fields[] = ['name' => 'contact_first_name', 'label' => ctrans('texts.first_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'contact_last_name', 'label' => ctrans('texts.last_name'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_contact_email) {
|
||||
$fields[] = ['name' => 'contact_email', 'label' => ctrans('texts.email'), 'type' => 'text', 'validation' => 'required,email:rfc'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_client_phone) {
|
||||
$fields[] = ['name' => 'client_phone', 'label' => ctrans('texts.client_phone'), 'type' => 'tel', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_billing_address) {
|
||||
$fields[] = ['name' => 'client_address_line_1', 'label' => ctrans('texts.address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
// $fields[] = ['name' => 'client_address_line_2', 'label' => ctrans('texts.address2'), 'type' => 'text', 'validation' => 'nullable'];
|
||||
$fields[] = ['name' => 'client_postal_code', 'label' => ctrans('texts.postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_city', 'label' => ctrans('texts.city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_state', 'label' => ctrans('texts.state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_country_id', 'label' => ctrans('texts.country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_shipping_address) {
|
||||
$fields[] = ['name' => 'client_shipping_address_line_1', 'label' => ctrans('texts.shipping_address1'), 'type' => 'text', 'validation' => 'required'];
|
||||
// $fields[] = ['name' => 'client_shipping_address_line_2', 'label' => ctrans('texts.shipping_address2'), 'type' => 'text', 'validation' => 'sometimes'];
|
||||
$fields[] = ['name' => 'client_shipping_city', 'label' => ctrans('texts.shipping_city'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_state', 'label' => ctrans('texts.shipping_state'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_postal_code', 'label' => ctrans('texts.shipping_postal_code'), 'type' => 'text', 'validation' => 'required'];
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
public function convertAmount($amount)
|
||||
{
|
||||
$precision = $this->client->currency()->precision;
|
||||
|
@ -354,6 +354,34 @@ class StripePaymentDriver extends BaseDriver
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value1) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value1', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value2) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value2', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client2'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value3) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value3', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client3'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value4) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value4', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client4'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
|
@ -342,6 +342,36 @@ class WePayPaymentDriver extends BaseDriver
|
||||
$fields[] = ['name' => 'client_shipping_country_id', 'label' => ctrans('texts.shipping_country'), 'type' => 'text', 'validation' => 'required'];
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value1) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value1', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client1'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
if ($this->company_gateway->require_custom_value2) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value2', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client2'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value3) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value3', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client3'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($this->company_gateway->require_custom_value4) {
|
||||
|
||||
$fields[] = ['name' => 'client_custom_value4', 'label' => $this->helpers->makeCustomField($this->client->company->custom_fields, 'client4'), 'type' => 'text', 'validation' => 'required'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return $fields;
|
||||
}
|
||||
}
|
||||
|
@ -60,6 +60,10 @@ class CompanyGatewayTransformer extends EntityTransformer
|
||||
'require_client_phone' => (bool) $company_gateway->require_client_phone,
|
||||
'require_contact_name' => (bool) $company_gateway->require_contact_name,
|
||||
'require_contact_email' => (bool) $company_gateway->require_contact_email,
|
||||
'require_custom_value1' => (bool) $company_gateway->require_custom_value1,
|
||||
'require_custom_value2' => (bool) $company_gateway->require_custom_value2,
|
||||
'require_custom_value3' => (bool) $company_gateway->require_custom_value3,
|
||||
'require_custom_value4' => (bool) $company_gateway->require_custom_value4,
|
||||
'show_billing_address' => (bool) $company_gateway->show_billing_address, //@deprecated
|
||||
'show_shipping_address' => (bool) $company_gateway->show_shipping_address, //@deprecated
|
||||
'update_details' => (bool) $company_gateway->update_details,
|
||||
|
@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('company_gateways', function (Blueprint $table)
|
||||
{
|
||||
|
||||
$table->boolean('require_custom_value1')->default(false);
|
||||
$table->boolean('require_custom_value2')->default(false);
|
||||
$table->boolean('require_custom_value3')->default(false);
|
||||
$table->boolean('require_custom_value4')->default(false);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
@ -48,20 +48,70 @@
|
||||
@if($show_terms)
|
||||
|
||||
@component('portal.ninja2020.components.general.card-element', ['title' => ctrans('texts.terms_of_service') ])
|
||||
|
||||
<div x-data="{ open: false }">
|
||||
<input
|
||||
wire:click="toggleTermsAccepted()"
|
||||
id="terms"
|
||||
name="terms"
|
||||
name="terms_accepted"
|
||||
type="checkbox"
|
||||
class="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500"
|
||||
/>
|
||||
/>
|
||||
<a href="#" class="group relative inline-block ml-4 text-blue-500 hover:text-red-500 duration-300 no-underline" @click="open = true">{{ ctrans('texts.terms')}}</a>
|
||||
|
||||
|
||||
|
||||
<div x-show="open" class="fixed bottom-0 inset-x-0 px-4 pb-4 sm:inset-0 sm:flex sm:items-center sm:justify-center z-50"
|
||||
style="display:none; background: rgba(0,0,0); background: transparent; z-index: 100;">
|
||||
<div x-show="open" x-transition:enter="ease-out duration-300" x-transition:enter-start="opacity-0"
|
||||
x-transition:enter-end="opacity-100" x-transition:leave="ease-in duration-200"
|
||||
x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"
|
||||
class="fixed inset-0 transition-opacity" style="display:none;">
|
||||
<div class="absolute inset-0 bg-gray-500 opacity-75"></div>
|
||||
</div>
|
||||
|
||||
<div x-show="open"
|
||||
class="bg-white rounded-lg px-4 pt-5 pb-4 overflow-hidden shadow-xl transform transition-all sm:max-w-lg sm:w-full sm:p-6">
|
||||
<div class="sm:flex sm:items-start">
|
||||
<div
|
||||
class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10">
|
||||
<svg class="h-6 w-6 text-red-600" stroke="currentColor" fill="none" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
|
||||
<h3 class="text-lg leading-6 font-medium text-gray-900" translate>
|
||||
{{ ctrans('texts.terms_of_service' )}}
|
||||
</h3>
|
||||
<div class="mt-2">
|
||||
<p class="text-sm leading-5 text-gray-500 bg-opacity-100">
|
||||
{!! nl2br($invoice->terms) !!}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-5 sm:mt-4 sm:flex sm:flex-row-reverse">
|
||||
<div class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto">
|
||||
<button @click="open = false" type="button" class="button button-secondary button-block">
|
||||
{{ ctrans('texts.close') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
@endcomponent
|
||||
|
||||
|
||||
@endif
|
||||
|
||||
@component('portal.ninja2020.components.general.card-element-single')
|
||||
<div class="flex flex-col items-end">
|
||||
<button class="button button-primary bg-primary">
|
||||
<button class="button button-primary bg-primary" {{ $terms_accepted ? '' : 'disabled' }}>
|
||||
{{ trans('texts.continue') }}
|
||||
</button>
|
||||
<small class="mt-1 text-gray-800">{{ ctrans('texts.required_client_info_save_label') }}</small>
|
||||
@ -79,4 +129,5 @@
|
||||
});
|
||||
</script>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
<input type="hidden" name="action" value="approve">
|
||||
<input type="hidden" name="process" value="true">
|
||||
<input type="hidden" name="user_input" value="">
|
||||
<input type="hidden" name="quotes[]" value="{{ $quote->hashed_id }}">
|
||||
<input type="hidden" name="signature">
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user