[WIP] Finish the order process

This commit is contained in:
Ludovic CANDELLIER
2022-08-18 18:20:44 +02:00
parent d423fce4f5
commit c22b10dd10
28 changed files with 375 additions and 245 deletions

View File

@@ -1,26 +1,73 @@
<div class="row">
<div class="col-md-8">
<div class="row mb-3">
<div class="col-6">
{{ Form::label('first_name', 'Prénom') }}
@include('components.form.input', ['name' => 'first_name', 'value' => $customer['first_name'] ?? null, 'required' => true])
</div>
<div class="col-6">
{{ Form::label('last_name', 'Nom') }}
@include('components.form.input', ['name' => 'last_name', 'value' => $customer['last_name'] ?? null, 'required' => true])
</div>
<div class="col-6">
{{ Form::label('first_name', 'Prénom') }}
@include('components.form.input', ['name' => 'first_name', 'value' => $customer['first_name'] ?? null, 'required' => true])
</div>
<div class="row mb-3">
<div class="col-12">
{{ Form::label('company', 'Société') }}
@include('components.form.input', ['name' => 'company', 'value' => $customer['company'] ?? null])
</div>
</div>
<div class="row mb-3">
<div class="col-12">
{{ Form::label('tva', 'TVA') }}
@include('components.form.input', ['name' => 'tva', 'value' => $customer['tva'] ?? null])
</div>
</div>
<div class="row mb-3">
<div class="col-6">
{{ Form::label('email', 'Email') }}
@include('components.form.inputs.email', ['name' => 'email', 'value' => $customer['email'] ?? null, 'required' => true])
@include('components.form.input', ['name' => 'email', 'value' => $customer['email'] ?? null, 'required' => true])
</div>
<div class="col-6">
{{ Form::label('phone', 'Téléphone') }}
@include('components.form.input', ['name' => 'phone', 'value' => $customer['phone'] ?? null])
</div>
</div>
<div class="row mb-3">
<div class="col-12">
{{ Form::label('address', 'Adresse') }}
@include('components.form.input', ['name' => 'address', 'value' => $customer['address'] ?? null, 'required' => true])
</div>
</div>
<div class="row">
<div class="col-12">
{{ Form::label('address2', 'Adresse complémentaire') }}
@include('components.form.input', ['name' => 'address2', 'value' => $customer['address2'] ?? null])
</div>
</div>
<div class="row mb-3">
<div class="col-4">
{{ Form::label('zipcode', 'Code postal') }}
@include('components.form.input', ['name' => 'zipcode', 'value' => $customer['zipcode'] ?? null, 'required' => true])
</div>
<div class="col-8">
{{ Form::label('city', 'Ville') }}
@include('components.form.input', ['name' => 'city', 'value' => $customer['city'] ?? null, 'required' => true])
</div>
</div>
<div class="row mb-3">
<div class="col-6">
{{ Form::label('sale_delivery_id', __('shop.deliveries.name')) }}
@include('components.form.select', ['name' => 'deliveries[]', 'list' => $deliveries ?? [], 'values' => $customer['deliveries'] ?? null, 'with_empty' => '', 'class' => 'select2', 'multiple' => true])
</div>
</div>
@include('components.address', ['with_country' => false, 'prefix' => 'addresses[0]', 'with_tab' => true, 'item' => $customer['addresses'][0]])
@if ($customer['addresses'])
@include('components.address', ['with_country' => false, 'prefix' => 'addresses[0]', 'with_tab' => true, 'item' => $customer['addresses'][0]])
@endif
</div>
</div>

View File

@@ -44,7 +44,7 @@
label: '{{ __('Commander') }}',
className: 'btn-success',
callback: function() {
// submitModal(form_id);
window.location = "{{ route('Shop.Orders.order') }}";
}
},
};

View File

@@ -6,11 +6,13 @@
Quantité : 1
</div>
@include('components.form.button', [
'class' => 'btn-green-dark basket semences mb-3 mt-2 shadow',
'txt' => 'Ajouter au panier',
'class' => 'btn-green-dark basket semences mb-3 mt-2 shadow',
'txt' => 'Ajouter au panier',
'data_id' => $article['semences']['offer_id'] ?? null,
])
</div>
@endif
@if ($article['plants'] ?? false)
<div class="w-100 mt-3 p-1 bg-yellow-light yellow-dark border border-warning text-center">
<span style="font-size: 1.4em; font-weight: bold;">{{ $article['plants']['price'] ?? null }}</span> <br>
@@ -19,8 +21,9 @@
Quantité : 1
</div>
@include('components.form.button', [
'class' => 'btn-success basket semences mb-3 mt-2 shadow',
'txt' => 'Ajouter au panier',
'class' => 'btn-success basket plants mb-3 mt-2 shadow',
'txt' => 'Ajouter au panier',
'data_id' => $article['plants']['offer_id'] ?? null,
])
</div>
@endif

View File

@@ -20,19 +20,22 @@
</x-layout.collapse>
@endif
{{ Form::open(['route' => 'Admin.Shop.Orders.store', 'id' => 'order-form', 'autocomplete' => 'off']) }}
{{ Form::open(['route' => 'Shop.Orders.store', 'id' => 'order-form', 'autocomplete' => 'off']) }}
<x-layout.collapse id="adresses" title="Adresses">
</x-layout.collapse>
<div id="registred" @if (!App\Repositories\Shop\Customers::isConnected()) class="d-none" @endif>
<x-layout.collapse id="adresses" title="Adresses">
@include('Shop.Orders.partials.addresses')
</x-layout.collapse>
<x-layout.collapse id="delivery_mode" title="Mode de livraison">
@include('Shop.Orders.partials.deliveries')
</x-layout.collapse>
<x-layout.collapse id="delivery_mode" title="Mode de livraison">
@include('Shop.Orders.partials.deliveries')
</x-layout.collapse>
<x-layout.collapse id="payment" title="Paiement">
@include('Shop.Orders.partials.payments')
</x-layout.collapse>
</div>
<x-layout.collapse id="payment" title="Paiement">
@include('Shop.Orders.partials.payments')
</x-layout.collapse>
{!! Form::close() !!}
</div>

View File

@@ -0,0 +1,10 @@
@foreach ($addresses ?? [] as $address)
<div class="row">
<div class="col-1">
<x-form.radios.icheck name="address_id" val="{{ $address['id'] }}" id="address_{{ $address['id'] }}"/>
</div>
<div class="col-11">
</div>
</div>
@endforeach

View File

@@ -1,6 +1,6 @@
<div class="row">
<div class="col-1">
<x-form.radios.icheck name="payment" val="card" id="payment_card"/>
<x-form.radios.icheck name="payment" val="1" id="payment_card"/>
</div>
<div class="col-11">
PAIEMENT PAR CARTE BANCAIRE
@@ -9,7 +9,7 @@
<div class="row">
<div class="col-1">
<x-form.radios.icheck name="payment" val="check" id="payment_check"/>
<x-form.radios.icheck name="payment" val="2" id="payment_check"/>
</div>
<div class="col-11">
PAIEMENT PAR CHEQUE
@@ -18,7 +18,7 @@
<div class="row">
<div class="col-1">
<x-form.radios.icheck name="payment" val="transfer" id="payment_transfer"/>
<x-form.radios.icheck name="payment" val="3" id="payment_transfer"/>
</div>
<div class="col-11">
PAIEMENT PAR VIREMENT BANCAIRE
@@ -27,7 +27,7 @@
<div class="row pt-5">
<div class="col-1">
<x-form.checkboxes.icheck name="agree" val="1"/>
<x-form.checkboxes.icheck name="agree" val="1" required=true/>
</div>
<div class="col-11">
J'ai lu les conditions générales de vente et j'y adhère sans réserve

View File

@@ -0,0 +1,8 @@
<div class="row">
<div class="col-4">
Livraison
</div>
<div class="col-8">
Mon nom
</div>
</div>

View File

@@ -2,4 +2,44 @@
@foreach ($articles as $product_name => $article)
@include('Shop.Articles.partials.article_rows')
@endforeach
@endif
@endif
@push('js')
<script>
$('.basket').click(function() {
var offer_id = $(this).data('id');
var quantity = 1;
var data = {
'offer_id': offer_id,
'quantity': quantity,
};
var buttons = {
cancel: {
label: '{{ __('Continuer mes achats') }}',
className: 'btn-secondary'
},
confirm: {
label: '{{ __('Commander') }}',
className: 'btn-success',
callback: function() {
// submitModal(form_id);
}
},
};
openModal(
'Ajout dans le panier',
'basket-form',
"{{ route('Shop.Basket.modalBasket') }}/" + offer_id + '/' + quantity,
"{{ route('Shop.Orders.order') }}",
"",
false,
true,
buttons,
"refreshBasketTop()",
);
});
</script>
@endpush

View File

@@ -38,3 +38,5 @@
</form>
@endsection
@include('load.layout.modal')

View File

@@ -1,117 +1,117 @@
{!! Form::open(['route' => 'Shop.register.post', 'method' => 'post', 'autocomplete'=> 'off']) !!}
<div class="row">
<div class="col-12">
<x-card title='Créez votre compte' class='mt-3 mb-3'>
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('first_name') ? 'has-error' : '' }}">
{{ Form::text('first_name', old('first_name'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.first_name'), 'required', 'autofocus']) }}
{!! $errors->first('first_name','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-12">
<x-card title='Créez votre compte' class='mt-3 mb-3'>
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('first_name') ? 'has-error' : '' }}">
{{ Form::text('first_name', old('first_name'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.first_name'), 'required', 'autofocus']) }}
{!! $errors->first('first_name','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('last_name') ? 'has-error' : '' }}">
{{ Form::text('last_name', old('last_name'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.last_name'), 'required']) }}
{!! $errors->first('last_name','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('last_name') ? 'has-error' : '' }}">
{{ Form::text('last_name', old('last_name'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.last_name'), 'required']) }}
{!! $errors->first('last_name','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('company') ? 'has-error' : '' }}">
{{ Form::text('company', old('company'), ['class' => 'form-control', 'placeholder' => __('Société'), 'autofocus']) }}
{!! $errors->first('company','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('company') ? 'has-error' : '' }}">
{{ Form::text('company', old('company'), ['class' => 'form-control', 'placeholder' => __('Société'), 'autofocus']) }}
{!! $errors->first('company','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('tva') ? 'has-error' : '' }}">
{{ Form::text('tva', old('tva'), ['class' => 'form-control', 'placeholder' => __('N° de TVA'), 'autofocus']) }}
{!! $errors->first('tva','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('tva') ? 'has-error' : '' }}">
{{ Form::text('tva', old('tva'), ['class' => 'form-control', 'placeholder' => __('N° de TVA'), 'autofocus']) }}
{!! $errors->first('tva','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
{{ Form::email('email', old('email'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.email'), 'required']) }}
{!! $errors->first('email','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('phone') ? 'has-error' : '' }}">
{{ Form::text('phone', old('phone'), ['class' => 'form-control', 'placeholder' => __('phone')]) }}
{!! $errors->first('phone','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
{{ Form::email('email', old('email'), ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.email'), 'required']) }}
{!! $errors->first('email','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('address') ? 'has-error' : '' }}">
{{ Form::text('address', old('address'), ['class' => 'form-control', 'placeholder' => __('Adresse de livraison'), 'required']) }}
{!! $errors->first('address','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('phone') ? 'has-error' : '' }}">
{{ Form::text('phone', old('phone'), ['class' => 'form-control', 'placeholder' => __('phone')]) }}
{!! $errors->first('phone','<p class="text-danger"><strong>:message</strong></p>') !!}
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('address2') ? 'has-error' : '' }}">
{{ Form::text('address2', old('address2'), ['class' => 'form-control', 'placeholder' => __('Complément d\'adresse'), 'required']) }}
{!! $errors->first('address2','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-4">
<div class="form-group {{ $errors->has('zipcode') ? 'has-error' : '' }}">
{{ Form::text('zipcode', old('zipcode'), ['class' => 'form-control', 'placeholder' => __('zipcode'), 'required']) }}
{!! $errors->first('zipcode','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-8">
<div class="form-group {{ $errors->has('city') ? 'has-error' : '' }}">
{{ Form::text('city', old('city'), ['class' => 'form-control', 'placeholder' => __('city'), 'required']) }}
{!! $errors->first('city','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
{{ Form::password('password', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }}
{!! $errors->first('password','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('password_confirmation') ? 'has-error' : '' }}">
{{ Form::password('password_confirmation', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password_confirm'), 'required']) }}
{!! $errors->first('password_confirmation','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-12">
@include('components.form.checkbox', ['name' => 'use_for_invoice', 'value' => false])
Utiliser aussi cette adresse pour la facturation
</div>
</div>
</x-card>
<div class="row mbm">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 text-center">
<button type="submit" class="btn btn-primary">
{{ __('boilerplate::auth.register.register_button') }}
</button>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('address') ? 'has-error' : '' }}">
{{ Form::text('address', old('address'), ['class' => 'form-control', 'placeholder' => __('Adresse de livraison'), 'required']) }}
{!! $errors->first('address','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="form-group {{ $errors->has('address2') ? 'has-error' : '' }}">
{{ Form::text('address2', old('address2'), ['class' => 'form-control', 'placeholder' => __('Complément d\'adresse'), 'required']) }}
{!! $errors->first('address2','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-4">
<div class="form-group {{ $errors->has('zipcode') ? 'has-error' : '' }}">
{{ Form::text('zipcode', old('zipcode'), ['class' => 'form-control', 'placeholder' => __('zipcode'), 'required']) }}
{!! $errors->first('zipcode','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-8">
<div class="form-group {{ $errors->has('city') ? 'has-error' : '' }}">
{{ Form::text('city', old('city'), ['class' => 'form-control', 'placeholder' => __('city'), 'required']) }}
{!! $errors->first('city','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-6">
<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
{{ Form::password('password', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password'), 'required']) }}
{!! $errors->first('password','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
<div class="col-6">
<div class="form-group {{ $errors->has('password_confirmation') ? 'has-error' : '' }}">
{{ Form::password('password_confirmation', ['class' => 'form-control', 'placeholder' => __('boilerplate::auth.fields.password_confirm'), 'required']) }}
{!! $errors->first('password_confirmation','<p class="text-danger"><strong>:message</strong></p>') !!}
</div>
</div>
</div>
<div class="row">
<div class="col-12">
@include('components.form.checkbox', ['name' => 'use_for_invoice', 'value' => false])
Utiliser aussi cette adresse pour la facturation
</div>
</div>
</x-card>
<div class="row mbm">
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12 text-center">
<button type="submit" class="btn btn-primary">
{{ __('boilerplate::auth.register.register_button') }}
</button>
</div>
</div>
</div>
</div>
{!! Form::close() !!}

View File

@@ -2,9 +2,9 @@
<div class="col-12 text-right p-2">
<button type="button" class="btn bg-green-dark light" data-toggle="dropdown">
@if (App\Repositories\Shop\Customers::isConnected())
<img src="{{ App\Repositories\Shop\Customers::getAvatar() }}" class="img-fluid">
<img src="{{ App\Repositories\Shop\Customers::getAvatar() }}" class="img-fluid" title="{{ App\Repositories\Shop\Customers::getName() }}">
@else
<i class="fa fa-2x fa-fw fa-user mr-2"></i>
<i class="fa fa-2x fa-fw fa-user"></i>
@endif
</button>

View File

@@ -1,6 +1,6 @@
<button type="{{ $type ?? 'button' }}" class="btn {{ $class ?? ''}}"
@if (isset($id)) id="{{ $id }}"@endif
@if (isset($data_id)) data-id="{{ $data_id }}"@endif
@isset($id) id="{{ $id }}" @endisset
@isset($data_id) data-id="{{ $data_id }}" @endisset
{{ $metadata ?? null }}
>
@if ($icon ?? false)<i class="fa fa-fw {{ $icon ?? '' }}"></i>@endif

View File

@@ -59,7 +59,7 @@
bootbox.setLocale('{{ App::getLocale() }}');
var bpRoutes = {
settings: "{{ route('boilerplate.settings', null, false) }}",
settings: "{{ route('boilerplate.user.settings', null, false) }}",
}
var session = {

View File

@@ -10,25 +10,20 @@
message: '<p><i class="fa fa-spin fa-spinner"></i> {{ __('loading') }} ...</p>',
size: size ? size : 'large',
scrollable: true,
onHide: function(e) {
console.log(status);
},
buttons: buildModalButtons(form_id, no_confirm, buttons)
});
dialog.init(function() {
$.get(url_open, function(data) {
console.log("OpenModal init");
dialog.find('.bootbox-body').html(data);
if (callback_after_loaded) {
eval(callback_after_loaded);
}
// if ( typeOf(url_save) !== 'undefined') {
if (typeof(url_save) !== 'undefined') {
handlePostModal(form_id,url_save, callback);
// }
}
});
});
}
function changeModalContent(dialog, url, callback) {
@@ -77,26 +72,15 @@
}
function submitModal(form_id) {
/*
var data = $(form_id).serialize();
$.post(url_save, data)
.done(function(data) {
if (callback) {
eval(callback);
}
});
*/
if (typeof(tinyMCE) != 'undefined') {
tinyMCE.triggerSave();
}
var oForm = 'form' + form_id;
$(oForm).submit();
$('form ' + form_id).submit();
status = 1;
}
function handlePostModal(form_id, url_save, callback) {
var oForm = 'form' + form_id;
$(oForm).submit(function(e) {
$('form ' + form_id).submit(function(e) {
e.preventDefault();
var formData = new FormData(this);
$.ajax({