namespace App\Http\Controllers;
+use App\Models\ECommerceCommon;
use App\Models\Order;
use App\Models\Cart;
use Cubist\Backpack\Facades\App;
class AjaxController extends CubistFrontController
{
- protected static $_labels = ['firstname' => 'Prénom',
+ protected static $_labels = [
+ 'company' => 'Société',
+ "tva" => "N° TVA",
+ "siren" => "SIREN",
+ 'firstname' => 'Prénom',
'name' => 'Nom',
'lastname' => 'Nom',
- 'company' => 'Société',
'sku' => 'Numéro de série',
'ref' => 'Reference',
'phone' => 'Téléphone',
protected function _sendMail($validatedData, $page, $appendContents = [], $subject_ = "", $recipient = "")
{
$contents = [];
+
+ $validatedData['tva'] = Client::getClientConnected()->vat;
+ $validatedData['siren'] = Client::getClientConnected()->siren;
+
foreach (self::$_labels as $key => $label) {
if (isset($validatedData[$key])) {
$contents[] = $label . ' : ' . $validatedData[$key];
$data['status'] = 'new';
$data['locale'] = 'fr';
$data['products'] = [];
- $productsMessage = ["Produits : \n----"];
+ $productsMessage = ["\n\nProduits : \n"];
$index = 0;
$indexMessage = 0;
+ $prices = [];
foreach ($cartData as $id => $_data) {
$indexMessage++;
$optionsPrices = Product::optionPrice($id, $cartData_[$index]['ref'], $productsArray, true);
$basicSellingPrice = $products[$id]['basic_selling_price'];
+ if($basicSellingPrice) {
+ $categoryProduct = $products[$id]['category'];
+ $discount = intval(Client::getDiscount($categoryProduct));
+ $price = ECommerceCommon::priceWithDiscount($basicSellingPrice, $discount);
+
+ if ($optionsPrices) {
+ $totalOptionPrice = Product::totalOptionPrice($optionsPrices[0], $cartData_[$index]['ref']);
+ $price = intval($price) + $totalOptionPrice;
+ }
+ $prices[] = floatval(($price * $_data));
+ }
+
$data['products'][] = [
'id' => $id,
'reference' => $cartData_[$index]['ref'],
'name' => $products[$id]['name'],
'quantity' => $_data,
- 'price' => floatval($basicSellingPrice)." €" ?? 0
+ 'price' => $price."€" ?? 0
];
$productsMessage[] = 'Référence : ' . $cartData_[$index]['ref'] . "\n";
- $productsMessage[$indexMessage] .= 'Qté : ' . $_data . "\n";
+ $productsMessage[$indexMessage] .= url("/{$products[$id]['slug']}")."\n";
$labelPrice = 'Prix unitaire HT : ';
if($optionsPrices) {
- foreach ($optionsPrices[1] as $v) {
- $productsMessage[$indexMessage] .= $v . "\n";
+ $productsMessage[$indexMessage] .= 'Prix de base : ' . $cartData_[$index]['basic_selling_price'] . "€ HT\n";
+ foreach ($optionsPrices[1] as $key => $v) {
+ $productsMessage[$indexMessage] .= $v . " (+".array_values($optionsPrices[0])[0][$key]."€ HT)\n";
}
- $totalOptionPrice = Product::totalOptionPrice($optionsPrices[0],$cartData_[$index]['ref']);
- $data['products'][$index]['price'] = floatval($basicSellingPrice + $totalOptionPrice);
$labelPrice = 'Prix unitaire HT (avec options) : ';
}
- $productsMessage[$indexMessage] .= $labelPrice.$data['products'][$index]['price'] . "€ \n";
- $productsMessage[$indexMessage] .= url("/{$products[$id]['slug']}")."\n";
- $productsMessage[$indexMessage] .= "----";
+ $productsMessage[$indexMessage] .= $labelPrice.$price . "€ \n";
+ $productsMessage[$indexMessage] .= 'Qté : ' . $_data . "\n\n";
+ $productsMessage[$indexMessage] .= "----\n\n";
+ //Information for order
$index++;
}
+ if($action === "order") {
+ $totalHT = array_reduce($prices, function($carry, $item) { return $carry + $item; });
+ $totalHT += ($totalHT > 1000) ? 20 : 0;
+ $tva = ECommerceCommon::tva($totalHT);
+ $totalTTC = ECommerceCommon::totalTTC($totalHT);
+
+ $productsMessage[$indexMessage] .= "Frais de ports : ".($totalHT > 1000 ? 20 : 0)."€\n";
+ $productsMessage[$indexMessage] .= "Total HT : $totalHT"."€\n";
+ $productsMessage[$indexMessage] .= "Montant TVA : $tva"."€\n";
+ $productsMessage[$indexMessage] .= "Total TTC : $totalTTC"."€\n";
+ $productsMessage[$indexMessage] .= "\n----\n\n";
+
+ $productsMessage[$indexMessage] .= "Adresse de facturation : \n";
+ foreach (Client::getAddressByType("billing_address")[0] as $key => $info) {
+ $productsMessage[$indexMessage] .= $info;
+ $productsMessage[$indexMessage] .= !in_array($key, ["firstname","zipcode"]) ? "\n" : " ";
+ }
+ $productsMessage[$indexMessage] .= "\n----\n\n";
+ $productsMessage[$indexMessage] .= "Adresse de livraison : \n";
+ foreach (Client::getAddressByType("delivery_address")[0] as $key => $info) {
+ $productsMessage[$indexMessage] .= $info;
+ $productsMessage[$indexMessage] .= !in_array($key, ["firstname","zipcode"]) ? "\n" : " ";
+ }
+ $productsMessage[$indexMessage] .= "\n----\n";
+ }
+
$data['products'] = json_encode($data['products']);
unset($data['page']);
unset($data['cart_data']);
$linkTo = 'Voir la demande en ligne : ' . url('/admin/quotes/' . $quote->id . '/edit');
}else {
- $linkTo = 'Voir la commande en ligne : ' . url('/admin/order/' . $save->id . '/edit');
+ $linkTo = 'Voir la commande en ligne : ' . url('/admin/order/' . $save->id . "/edit \n");
}
$this->_sendMail($validatedData, $page, [implode("\r\n", $productsMessage), '', $linkTo], "Nouvelle commande");