From bf060e2ad4d86ade2f32dc4256d7d38c30a3453d Mon Sep 17 00:00:00 2001
From: Olivier Legat
Date: Tue, 13 Apr 2021 18:45:36 +0200
Subject: [PATCH] =?UTF-8?q?bo=20d=C3=A9tail=20commande?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/Http/Controllers/Bo/OrdersController.php | 13 ++-
public/b-o/css/app.css | 48 +++++++++
public/b-o/js/app.js | 11 +-
resources/js/bootstrap.js | 4 +-
resources/sass/_popup.scss | 50 +++++++++
.../views/bo/customer/info-card.blade.php | 3 +-
.../views/bo/customer/info-popup.blade.php | 15 +++
resources/views/bo/order/detail.blade.php | 100 ++++++++++++++++++
resources/views/bo/orders.blade.php | 1 +
.../views/bo/products/product-card.blade.php | 10 ++
routes/web.php | 3 +-
11 files changed, 248 insertions(+), 10 deletions(-)
create mode 100644 resources/views/bo/customer/info-popup.blade.php
create mode 100644 resources/views/bo/order/detail.blade.php
create mode 100644 resources/views/bo/products/product-card.blade.php
diff --git a/app/Http/Controllers/Bo/OrdersController.php b/app/Http/Controllers/Bo/OrdersController.php
index 2c77893..f01dd8b 100644
--- a/app/Http/Controllers/Bo/OrdersController.php
+++ b/app/Http/Controllers/Bo/OrdersController.php
@@ -32,7 +32,8 @@ class OrdersController extends Controller
$order->status_id = $order->status_id + 1;
$order->save();
- return redirect()->route('bo.orders')->with('success', "Changement de status enregistré pour la commande " . $order->reference . ".");
+ //return redirect()->route('bo.orders')->with('success', "Changement de status enregistré pour la commande " . $order->reference . ".");
+ return back()->with('success', "Changement de status enregistré pour la commande " . $order->reference . ".");
}
public function cancelOrder($reference) {
@@ -40,7 +41,8 @@ class OrdersController extends Controller
$order->status_id = 7;
$order->save();
- return redirect()->route('bo.orders')->with('success', "La commande à été annulée.");
+ //return redirect()->route('bo.orders')->with('success', "La commande à été annulée.");
+ return back()->with('success', "La commande " . $order->reference . " à été annulée.");
}
public function addProduct($orderReference, $productId, $quantity) {
@@ -240,6 +242,11 @@ class OrdersController extends Controller
public function getCustomerInfo($id) {
$cust = Customers::findOrFail($id);
- return view('bo.customer.info-card', compact('cust'));
+ return view('bo.customer.info-popup', compact('cust'));
+ }
+
+ public function orderDetail($reference) {
+ $order = Order::where('reference', '=', $reference)->firstOrFail();
+ return view('bo.order.detail', compact('order'));
}
}
diff --git a/public/b-o/css/app.css b/public/b-o/css/app.css
index d8fa34b..1e84b7c 100644
--- a/public/b-o/css/app.css
+++ b/public/b-o/css/app.css
@@ -6998,6 +6998,54 @@ p:first-child {
margin-top: 0;
}
+.tooltip {
+ background: #333;
+ color: white;
+ font-weight: bold;
+ padding: 4px 8px;
+ font-size: 13px;
+ border-radius: 4px;
+}
+
+.tooltip[data-show] {
+ display: block;
+ opacity: 1;
+}
+
+.arrow,
+.arrow::before {
+ position: absolute;
+ width: 8px;
+ height: 8px;
+ background: inherit;
+}
+
+.arrow {
+ visibility: hidden;
+}
+
+.arrow::before {
+ visibility: visible;
+ content: "";
+ transform: rotate(45deg);
+}
+
+.tooltip[x-placement^=top] > .arrow {
+ bottom: -4px;
+}
+
+.tooltip[x-placement^=bottom] > .arrow {
+ top: -4px;
+}
+
+.tooltip[x-placement^=left] > .arrow {
+ right: -4px;
+}
+
+.tooltip[x-placement^=right] > .arrow {
+ left: -4px;
+}
+
/*!
* Bootstrap v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
diff --git a/public/b-o/js/app.js b/public/b-o/js/app.js
index f3f23fe..a566bdf 100644
--- a/public/b-o/js/app.js
+++ b/public/b-o/js/app.js
@@ -62903,9 +62903,12 @@ var app = new Vue({
/*!***********************************!*\
!*** ./resources/js/bootstrap.js ***!
\***********************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
+/*! no exports provided */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js");
window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
/**
* We'll load the axios HTTP library which allows us to easily issue requests
@@ -62914,13 +62917,15 @@ window._ = __webpack_require__(/*! lodash */ "./node_modules/lodash/lodash.js");
*/
window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
-window.Popper = __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")["default"];
+ //window.Popper = require('popper.js').default;
+
window.$ = window.jQuery = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
__webpack_require__(/*! @fortawesome/fontawesome-free/js/all */ "./node_modules/@fortawesome/fontawesome-free/js/all.js");
__webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js");
+window.Popper = popper_js__WEBPACK_IMPORTED_MODULE_0__["default"];
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
/**
* Echo exposes an expressive API for subscribing to channels and listening
diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js
index bde503c..cb26710 100644
--- a/resources/js/bootstrap.js
+++ b/resources/js/bootstrap.js
@@ -7,10 +7,12 @@ window._ = require('lodash');
*/
window.axios = require('axios');
-window.Popper = require('popper.js').default;
+import Popper from 'popper.js'
+//window.Popper = require('popper.js').default;
window.$ = window.jQuery = require('jquery');
require('@fortawesome/fontawesome-free/js/all');
require('bootstrap');
+window.Popper = Popper;
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
diff --git a/resources/sass/_popup.scss b/resources/sass/_popup.scss
index 20dbbf5..a1afcb0 100644
--- a/resources/sass/_popup.scss
+++ b/resources/sass/_popup.scss
@@ -30,3 +30,53 @@
margin-top: 0;
}
+
+ //tooltips
+ .tooltip {
+ background: #333;
+ color: white;
+ font-weight: bold;
+ padding: 4px 8px;
+ font-size: 13px;
+ border-radius: 4px;
+ //display: none;
+ }
+
+ .tooltip[data-show] {
+ display: block;
+ opacity: 1;
+ }
+
+.arrow,
+.arrow::before {
+ position: absolute;
+ width: 8px;
+ height: 8px;
+ background: inherit;
+}
+
+.arrow {
+ visibility: hidden;
+}
+
+.arrow::before {
+ visibility: visible;
+ content: '';
+ transform: rotate(45deg);
+}
+
+.tooltip[x-placement^='top'] > .arrow {
+ bottom: -4px;
+}
+
+.tooltip[x-placement^='bottom'] > .arrow {
+ top: -4px;
+}
+
+.tooltip[x-placement^='left'] > .arrow {
+ right: -4px;
+}
+
+.tooltip[x-placement^='right'] > .arrow {
+ left: -4px;
+}
diff --git a/resources/views/bo/customer/info-card.blade.php b/resources/views/bo/customer/info-card.blade.php
index d6582a6..208adf4 100644
--- a/resources/views/bo/customer/info-card.blade.php
+++ b/resources/views/bo/customer/info-card.blade.php
@@ -10,5 +10,4 @@
{{$cust->apiData->postcode}}
-
-
+
diff --git a/resources/views/bo/customer/info-popup.blade.php b/resources/views/bo/customer/info-popup.blade.php
new file mode 100644
index 0000000..c6f50d2
--- /dev/null
+++ b/resources/views/bo/customer/info-popup.blade.php
@@ -0,0 +1,15 @@
+
+
{{$cust->apiData->firstname}} {{$cust->apiData->lastname}}
+
+
+ {{$cust->apiData->email}} {{$cust->apiData->phone}}
+
+
+ {{$cust->apiData->address}}
+ {{$cust->apiData->city}}
+ {{$cust->apiData->postcode}}
+
+
+
+
+
diff --git a/resources/views/bo/order/detail.blade.php b/resources/views/bo/order/detail.blade.php
new file mode 100644
index 0000000..dfc8c3f
--- /dev/null
+++ b/resources/views/bo/order/detail.blade.php
@@ -0,0 +1,100 @@
+@extends('layouts.bo-layout')
+
+@section('content')
+
+
< Commande - {{ $order->reference }}
+ @if (session('success'))
+
{{ session('success') }}
+ @endif
+
+
+
+ @include('bo.customer.info-card', ['cust' => $order->customer])
+
+
Total de la commande : {{number_format($order->total, 2, ',', ' ')}}€
+
+
+ Créneau de collecte : {{$order->timeslot->day}} {{$order->timeslot->time}}
+
+
+ Statut de la commande : {{$order->status->label}}
+
+
+
+
+
+
+
+
+ Produit
+ Quantité
+ Prix unitaire HT
+ Prix Total HT
+ TVA
+ Total TTC
+
+
+
+ @foreach ($order->lines as $line)
+
+
+ @include('bo.products.product-card', ['product' => $line->product])
+
+ {{$line->quantity}}
+ {{number_format($line->unit_price - $line->discount, 2, ',', ' ')}}€
+ {{number_format($line->total_ht - $line->total_discount, 2, ',', ' ')}}€
+ {{number_format($line->total_tax, 2, ',', ' ')}}€
+ {{number_format($line->total_ttc, 2, ',', ' ')}}€
+
+ @endforeach
+
+
+@endsection
+
+@section('scripts')
+
+@endsection
diff --git a/resources/views/bo/orders.blade.php b/resources/views/bo/orders.blade.php
index 05ce0ba..cd13b3d 100644
--- a/resources/views/bo/orders.blade.php
+++ b/resources/views/bo/orders.blade.php
@@ -30,6 +30,7 @@
{{$order->status->label}}
{{-- L'id du status 6 est le status "Retirée", la dernière étape d'une commande --}}
+
@if ($order->status_id < 6)
diff --git a/resources/views/bo/products/product-card.blade.php b/resources/views/bo/products/product-card.blade.php
new file mode 100644
index 0000000..eeed7c4
--- /dev/null
+++ b/resources/views/bo/products/product-card.blade.php
@@ -0,0 +1,10 @@
+
+
+
+
+
Prix HT avant promo : {{$product->price}}
+
+ {!! $product->description !!}
+
+
+
diff --git a/routes/web.php b/routes/web.php
index 83f00bb..6b79fc0 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -90,7 +90,8 @@ Route::namespace('App\Http\Controllers\Bo')
// Commandes
Route::get('/orders', [OrdersController::class, 'index'])->name('orders');
- Route::get('/orders/{reference}', [OrdersController::class, 'changeStatus'])->name('change-order-status');
+ Route::get('/orders/{reference}', [OrdersController::class, 'orderDetail'])->name('order-detail');
+ Route::get('/orders/{reference}/advance', [OrdersController::class, 'changeStatus'])->name('change-order-status');
Route::get('/orders/{reference}/cancel', [OrdersController::class, 'cancelOrder'])->name('cancel-order');
Route::post('/orders/add', [OrdersController::class, 'addProduct'])->name('order-add-product');
});