Working on shipping address

This commit is contained in:
Hillel Coren 2017-11-19 22:34:34 +02:00
parent 8ff7b7fd21
commit 444ffd64cf
9 changed files with 163 additions and 29 deletions

View File

@ -119,9 +119,9 @@ class AccountGatewayController extends BaseController
$creditCards = []; $creditCards = [];
foreach ($creditCardsArray as $card => $name) { foreach ($creditCardsArray as $card => $name) {
if ($selectedCards > 0 && ($selectedCards & $card) == $card) { if ($selectedCards > 0 && ($selectedCards & $card) == $card) {
$creditCards[$name['text']] = ['value' => $card, 'data-imageUrl' => asset($name['card']), 'checked' => 'checked']; $creditCards['<div>' . $name['text'] . '</div>'] = ['value' => $card, 'data-imageUrl' => asset($name['card']), 'checked' => 'checked'];
} else { } else {
$creditCards[$name['text']] = ['value' => $card, 'data-imageUrl' => asset($name['card'])]; $creditCards['<div>' . $name['text'] . '</div>'] = ['value' => $card, 'data-imageUrl' => asset($name['card'])];
} }
} }
@ -316,6 +316,7 @@ class AccountGatewayController extends BaseController
$accountGateway->accepted_credit_cards = $cardCount; $accountGateway->accepted_credit_cards = $cardCount;
$accountGateway->show_address = Input::get('show_address') ? true : false; $accountGateway->show_address = Input::get('show_address') ? true : false;
$accountGateway->show_shipping_address = Input::get('show_shipping_address') ? true : false;
$accountGateway->update_address = Input::get('update_address') ? true : false; $accountGateway->update_address = Input::get('update_address') ? true : false;
$accountGateway->setConfig($config); $accountGateway->setConfig($config);

View File

@ -173,7 +173,6 @@ class BasePaymentDriver
'accountGateway' => $this->accountGateway, 'accountGateway' => $this->accountGateway,
'acceptedCreditCardTypes' => $this->accountGateway->getCreditcardTypes(), 'acceptedCreditCardTypes' => $this->accountGateway->getCreditcardTypes(),
'gateway' => $gateway, 'gateway' => $gateway,
'showAddress' => $this->accountGateway->show_address,
'showBreadcrumbs' => false, 'showBreadcrumbs' => false,
'url' => $url, 'url' => $url,
'amount' => $this->invoice()->getRequestedAmount(), 'amount' => $this->invoice()->getRequestedAmount(),
@ -407,18 +406,32 @@ class BasePaymentDriver
$this->contact()->save(); $this->contact()->save();
} }
// update the address info
if ($this->accountGateway->update_address) {
$client = $this->client();
if ($this->accountGateway->show_address) {
$client->address1 = trim($this->input['address1']);
$client->address2 = trim($this->input['address2']);
$client->city = trim($this->input['city']);
$client->state = trim($this->input['state']);
$client->postal_code = trim($this->input['postal_code']);
$client->country_id = trim($this->input['country_id']);
}
if ($this->accountGateway->show_shipping_address) {
$client->shipping_address1 = trim($this->input['shipping_address1']);
$client->shipping_address2 = trim($this->input['shipping_address2']);
$client->shipping_city = trim($this->input['shipping_city']);
$client->shipping_state = trim($this->input['shipping_state']);
$client->shipping_postal_code = trim($this->input['shipping_postal_code']);
$client->shipping_country_id = trim($this->input['shipping_country_id']);
}
}
if (! $this->accountGateway->show_address || ! $this->accountGateway->update_address) { if (! $this->accountGateway->show_address || ! $this->accountGateway->update_address) {
return; return;
} }
// update the address info
$client = $this->client();
$client->address1 = trim($this->input['address1']);
$client->address2 = trim($this->input['address2']);
$client->city = trim($this->input['city']);
$client->state = trim($this->input['state']);
$client->postal_code = trim($this->input['postal_code']);
$client->country_id = trim($this->input['country_id']);
$client->save(); $client->save();
} }

View File

@ -36,7 +36,11 @@ class AddSubdomainToLookups extends Migration
}); });
Schema::table('clients', function ($table) { Schema::table('clients', function ($table) {
$table->foreign('shipping_country_id')->references('id')->on('currencies'); $table->foreign('shipping_country_id')->references('id')->on('countries');
});
Schema::table('account_gateways', function ($table) {
$table->boolean('show_shipping_address')->default(false)->nullable();
}); });
} }
@ -65,5 +69,9 @@ class AddSubdomainToLookups extends Migration
$table->dropColumn('shipping_postal_code'); $table->dropColumn('shipping_postal_code');
$table->dropColumn('shipping_country_id'); $table->dropColumn('shipping_country_id');
}); });
Schema::table('account_gateways', function ($table) {
$table->dropColumn('show_shipping_address');
});
} }
} }

View File

@ -2541,6 +2541,8 @@ $LANG = array(
'shipping_postal_code' => 'Shipping Postal Code', 'shipping_postal_code' => 'Shipping Postal Code',
'shipping_country' => 'Shipping Country', 'shipping_country' => 'Shipping Country',
'classify' => 'Classify', 'classify' => 'Classify',
'show_shipping_address_help' => 'Require client to provide their shipping address',
'ship_to_billing_address' => 'Ship to billing address',
); );

View File

@ -1,5 +1,20 @@
@extends('header') @extends('header')
@section('head')
@parent
<style type="text/css">
label.checkbox-inline {
padding-left: 0px;
}
label.checkbox-inline div {
padding-left: 20px;
}
</style>
@stop
@section('top-right') @section('top-right')
@if (env('WEPAY_CLIENT_ID') && isset($accountGatewaysIds) && ! count($accountGatewaysIds)) @if (env('WEPAY_CLIENT_ID') && isset($accountGatewaysIds) && ! count($accountGatewaysIds))
{!! Button::primary(trans('texts.sign_up_with_wepay')) {!! Button::primary(trans('texts.sign_up_with_wepay'))
@ -23,6 +38,7 @@
{!! Former::populateField('primary_gateway_id', $accountGateway->gateway_id) !!} {!! Former::populateField('primary_gateway_id', $accountGateway->gateway_id) !!}
{!! Former::populateField('recommendedGateway_id', $accountGateway->gateway_id) !!} {!! Former::populateField('recommendedGateway_id', $accountGateway->gateway_id) !!}
{!! Former::populateField('show_address', intval($accountGateway->show_address)) !!} {!! Former::populateField('show_address', intval($accountGateway->show_address)) !!}
{!! Former::populateField('show_shipping_address', intval($accountGateway->show_shipping_address)) !!}
{!! Former::populateField('update_address', intval($accountGateway->update_address)) !!} {!! Former::populateField('update_address', intval($accountGateway->update_address)) !!}
{!! Former::populateField('publishable_key', $accountGateway->getPublishableStripeKey() ? str_repeat('*', strlen($accountGateway->getPublishableStripeKey())) : '') !!} {!! Former::populateField('publishable_key', $accountGateway->getPublishableStripeKey() ? str_repeat('*', strlen($accountGateway->getPublishableStripeKey())) : '') !!}
{!! Former::populateField('enable_ach', $accountGateway->getAchEnabled() ? 1 : 0) !!} {!! Former::populateField('enable_ach', $accountGateway->getAchEnabled() ? 1 : 0) !!}
@ -142,6 +158,12 @@
->addGroupClass('gateway-option') ->addGroupClass('gateway-option')
->value(1) !!} ->value(1) !!}
{!! Former::checkbox('show_shipping_address')
->label(trans('texts.shipping_address'))
->text(trans('texts.show_shipping_address_help'))
->addGroupClass('gateway-option')
->value(1) !!}
{!! Former::checkbox('update_address') {!! Former::checkbox('update_address')
->label(' ') ->label(' ')
->text(trans('texts.update_address_help')) ->text(trans('texts.update_address_help'))
@ -153,8 +175,10 @@
->checkboxes($creditCardTypes) ->checkboxes($creditCardTypes)
->class('creditcard-types') ->class('creditcard-types')
->addGroupClass('gateway-option') ->addGroupClass('gateway-option')
->inline()
->value(1) ->value(1)
!!} !!}
<br/>
</div> </div>
@if (!$accountGateway || $accountGateway->gateway_id == GATEWAY_STRIPE) @if (!$accountGateway || $accountGateway->gateway_id == GATEWAY_STRIPE)
@ -279,14 +303,9 @@
} }
function enableUpdateAddress(event) { function enableUpdateAddress(event) {
var disabled = !$('#show_address').is(':checked'); var disabled = ! $('#show_address').is(':checked') && ! $('#show_shipping_address').is(':checked');
$('#update_address').prop('disabled', disabled); $('#update_address').prop('disabled', disabled);
$('label[for=update_address]').css('color', disabled ? '#888' : '#000'); $('label[for=update_address]').css('color', disabled ? '#888' : '#000');
if (disabled) {
$('#update_address').prop('checked', false);
} else if (event) {
$('#update_address').prop('checked', true);
}
} }
function updateWebhookShown() { function updateWebhookShown() {
@ -306,7 +325,7 @@
setFieldsShown(); setFieldsShown();
updateWebhookShown(); updateWebhookShown();
$('#show_address').change(enableUpdateAddress); $('#show_address, #show_shipping_address').change(enableUpdateAddress);
enableUpdateAddress(); enableUpdateAddress();
$('#enable_ach').change(updateWebhookShown); $('#enable_ach').change(updateWebhookShown);

View File

@ -39,7 +39,7 @@
<div class="panel panel-default" style="min-height: 380px"> <div class="panel panel-default" style="min-height: 380px">
<div class="panel-heading"> <div class="panel-heading">
<h3 class="panel-title">{!! trans('texts.organization') !!}</h3> <h3 class="panel-title">{!! trans('texts.details') !!}</h3>
</div> </div>
<div class="panel-body"> <div class="panel-body">

View File

@ -98,11 +98,6 @@
<p><i class="fa fa-vat-number" style="width: 20px"></i>{{ trans('texts.vat_number').': '.$client->vat_number }}</p> <p><i class="fa fa-vat-number" style="width: 20px"></i>{{ trans('texts.vat_number').': '.$client->vat_number }}</p>
@endif @endif
{!! $client->present()->address(ADDRESS_BILLING) !!}
{!! $client->present()->address(ADDRESS_SHIPPING) !!}
<br/>
@if ($client->account->custom_client_label1 && $client->custom_value1) @if ($client->account->custom_client_label1 && $client->custom_value1)
{{ $client->account->custom_client_label1 . ': ' . $client->custom_value1 }}<br/> {{ $client->account->custom_client_label1 . ': ' . $client->custom_value1 }}<br/>
@endif @endif
@ -144,6 +139,14 @@
<p>{{ $client->present()->paymentTerms }}</p> <p>{{ $client->present()->paymentTerms }}</p>
</div> </div>
<div class="col-md-3">
<h3>{{ trans('texts.address') }}</h3>
{!! $client->present()->address(ADDRESS_BILLING) !!}<br/>
{!! $client->present()->address(ADDRESS_SHIPPING) !!}
</div>
<div class="col-md-3"> <div class="col-md-3">
<h3>{{ trans('texts.contacts') }}</h3> <h3>{{ trans('texts.contacts') }}</h3>
@foreach ($client->contacts as $contact) @foreach ($client->contacts as $contact)
@ -173,7 +176,7 @@
@endforeach @endforeach
</div> </div>
<div class="col-md-4"> <div class="col-md-3">
<h3>{{ trans('texts.standing') }} <h3>{{ trans('texts.standing') }}
<table class="table" style="width:100%"> <table class="table" style="width:100%">
<tr> <tr>

View File

@ -24,6 +24,32 @@
return true; return true;
}); });
$('#shipToBillingAddress').click(function() {
var checked = $('#shipToBillingAddress').is(':checked');
var fields = [
'address1',
'address2',
'city',
'state',
'postal_code',
'country_id',
]
$.each(fields, function(i, field) {
if (checked) {
$('#shipping_' + field).val($('#' + field).val());
} else {
$('#shipping_' + field).val('');
}
})
if (checked) {
$('#shipping_country_id').combobox('refresh');
} else {
$('#shipping_country_id').combobox('toggle');
$('#shipping_address1').focus();
}
})
@if ($accountGateway->gateway_id != GATEWAY_BRAINTREE) @if ($accountGateway->gateway_id != GATEWAY_BRAINTREE)
var card = new Card({ var card = new Card({
form: 'form#payment-form', // *required* form: 'form#payment-form', // *required*
@ -91,6 +117,11 @@
'routing_number' => 'required', 'routing_number' => 'required',
'account_holder_name' => 'required', 'account_holder_name' => 'required',
'account_holder_type' => 'required', 'account_holder_type' => 'required',
'shipping_address1' => 'required',
'shipping_city' => 'required',
'shipping_state' => 'required',
'shipping_postal_code' => 'required',
'shipping_country_id' => 'required',
)) !!} )) !!}
@ -101,6 +132,7 @@
{{ Former::populateField('email', $contact->email) }} {{ Former::populateField('email', $contact->email) }}
@if (!$client->country_id && $client->account->country_id) @if (!$client->country_id && $client->account->country_id)
{{ Former::populateField('country_id', $client->account->country_id) }} {{ Former::populateField('country_id', $client->account->country_id) }}
{{ Former::populateField('shipping_country_id', $client->account->country_id) }}
@endif @endif
@if (!$client->currency_id && $client->account->currency_id) @if (!$client->currency_id && $client->account->currency_id)
{{ Former::populateField('currency_id', $client->account->currency_id) }} {{ Former::populateField('currency_id', $client->account->currency_id) }}
@ -153,8 +185,8 @@
<p>&nbsp;<br/>&nbsp;</p> <p>&nbsp;<br/>&nbsp;</p>
@if (!empty($showAddress)) @if (!empty($accountGateway->show_address))
<h3>{{ trans('texts.billing_address') }}&nbsp;<span class="help">{{ trans('texts.payment_footer1') }}</span></h3> <h3>{{ trans('texts.billing_address') }} &nbsp;&nbsp; <span class="help">{{ trans('texts.payment_footer1') }}</span></h3>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{!! Former::text('address1') {!! Former::text('address1')
@ -202,6 +234,62 @@
<p>&nbsp;<br/>&nbsp;</p> <p>&nbsp;<br/>&nbsp;</p>
@endif @endif
@if (!empty($accountGateway->show_shipping_address))
<h3>{{ trans('texts.shipping_address') }} &nbsp;&nbsp;
<span>
<label for="shipToBillingAddress" style="font-weight:normal">
<input id="shipToBillingAddress" type="checkbox"/>
{{ trans('texts.ship_to_billing_address') }}
</label>
</span>
</h3>
<div class="row">
<div class="col-md-6">
{!! Former::text('shipping_address1')
->autocomplete('shipping address-line1')
->placeholder(trans('texts.address1'))
->label('') !!}
</div>
<div class="col-md-6">
{!! Former::text('shipping_address2')
->autocomplete('shipping address-line2')
->placeholder(trans('texts.address2'))
->label('') !!}
</div>
</div>
<div class="row">
<div class="col-md-6">
{!! Former::text('shipping_city')
->autocomplete('shipping address-level2')
->placeholder(trans('texts.city'))
->label('') !!}
</div>
<div class="col-md-6">
{!! Former::text('shipping_state')
->autocomplete('shipping address-level1')
->placeholder(trans('texts.state'))
->label('') !!}
</div>
</div>
<div class="row">
<div class="col-md-6">
{!! Former::text('shipping_postal_code')
->autocomplete('shipping postal-code')
->placeholder(trans('texts.postal_code'))
->label('') !!}
</div>
<div class="col-md-6">
{!! Former::select('shipping_country_id')
->placeholder(trans('texts.country_id'))
->fromQuery($countries, 'name', 'id')
->addGroupClass('shipping-country-select')
->label('') !!}
</div>
</div>
<p>&nbsp;<br/>&nbsp;</p>
@endif
@if ($accountGateway->isGateway(GATEWAY_WEPAY) && $account->token_billing_type_id == TOKEN_BILLING_DISABLED) @if ($accountGateway->isGateway(GATEWAY_WEPAY) && $account->token_billing_type_id == TOKEN_BILLING_DISABLED)
{{--- do nothing ---}} {{--- do nothing ---}}
@else @else

View File

@ -67,7 +67,7 @@
$(this).css({color:'#444444'}); $(this).css({color:'#444444'});
}); });
$('#country_id').combobox(); $('#country_id, #shipping_country_id').combobox();
$('#currency_id').combobox(); $('#currency_id').combobox();
$('#first_name').focus(); $('#first_name').focus();
}); });