Module LivraisonParSecteurs : On finalise le montant mini du panier nécessaire

This commit is contained in:
2021-02-25 18:04:33 +01:00
parent 4780bf1ff6
commit a077697e70
5 changed files with 33 additions and 13 deletions

View File

@@ -16,6 +16,7 @@ return array(
'Delivery beginning time' => 'Début de la tournée',
'Delivery day' => 'Jour de livraison',
'Delivery days' => 'Jours de livraison',
'Delivery delay' => 'Délai de livraison',
'Delivery ending time' => 'Fin de la tournée',
'Delivery price' => 'Frais de livraison',
'Do you really want to remove this city ?' => 'Voulez-vous réellement retirer cette commune de ce secteur de livraison ?',
@@ -24,7 +25,7 @@ return array(
'Format to respect' => 'Merci de respecter le format 50.255612 ou -3.121146 (le séparateur est un point et le nombre peut être négatif)',
'General' => 'Général',
'Home delivery cost' => 'Frais de livraison à domicile',
'Message info minimum de commande' => 'La livraison à domicile est soumise à un montant minimum de commande sur votre secteur : il est possible que vous n\'ayez pas atteint ce minimum.',
'Message info minimum de commande' => 'Un panier d\'un montant minimum de %montant € est nécessaire pour pouvoir bénéficier de la livraison à domicile.',
'Minimum amount' => 'Montant minimum de commande',
'Modify a delivery day' => 'Modifier un jour de livraison',
'Module name' => 'Livraison à domicile',

View File

@@ -32,6 +32,7 @@ class LivraisonParSecteurs extends AbstractDeliveryModule
const FORMAT_DATES = 'd/m/Y';
const FORMAT_HEURES = 'H:i';
const FORMAT_DATE_COMPLETE = 'Y-m-d H:i:s';
const SECTEUR_ACTIF = 1;
/**
@@ -67,16 +68,21 @@ class LivraisonParSecteurs extends AbstractDeliveryModule
// Condition 1 : le client doit être situé dans un secteur couvert par la livraison à domicile.
if (null !== $areaId = LpsAreaCityQuery::create()->filterByZipcode($zipcode)->findOne($con))
{
$area = LpsAreaQuery::create()->findOneById($areaId);
// Condition 2 : il doit avoir atteint le minimum de commande.
// Condition 2 : le secteur doit être actif à date.
if ($area->getActive() === self::SECTEUR_ACTIF)
{
// Condition 3 : le panier doit avoir atteint le minimum de commande pour ce secteur.
$montantPanier = $this->getRequest()->getSession()->getSessionCart($this->getDispatcher())->getTaxedAmount($country);
$montantMinimum = LpsAreaQuery::create()->findOneById($areaId)->getMinimumAmount();
$montantMinimum = $area->getMinimumAmount();
if ($montantPanier >= $montantMinimum)
$isValid = true;
}
}
}
$isValid = true;
return $isValid;
}

View File

@@ -20,8 +20,10 @@
<div class="scheduled-deliveries-list">
<table class="table table-striped">
<thead>
<th>&nbsp;</th>
<th>{intl l="Order number" d="livraisonparsecteurs"}</th>
<th>{intl l="Scheduled date" d="livraisonparsecteurs"}</th>
<th>{intl l="Delivery delay" d="livraisonparsecteurs"}</th>
<th>{intl l="City" d="livraisonparsecteurs"}</th>
<th>{intl l="Area" d="livraisonparsecteurs"}</th>
</thead>
@@ -51,11 +53,12 @@
{/loop}
<tr>
<td><img src={$path} alt="{$alt}" title="{$title}" style="margin-left: 30px; width:25px"></td>
<td><a href="/admin/order/update/{$ORDER_ID}" target="_blank" title="Client : {$client}">{$ORDER_ID}</a></td>
<td>
{format_date date=$START_DATE format="d/m"} entre {format_date date=$START_DATE format="H:i"} et {format_date date=$END_DATE format="H:i"}, soit dans <strong>{$DELTA}</strong> jour(s)
<img src={$path} alt="{$alt}" title="{$title}" style="margin-left: 30px; width:25px">
{format_date date=$START_DATE format="d/m/Y"} entre {format_date date=$START_DATE format="H\hi"} et {format_date date=$END_DATE format="H\hi"}
</td>
<td>{$DELTA} jour(s)</td>
<td>{$commune}</td>
<td>{loop name="area-schedule-loop" type="lps_area_schedule" id={$SCHEDULE_ID}}
{loop name="area-loop" type="lps_area" id={$AREA_ID}}

View File

@@ -1,6 +1,18 @@
<script type="text/html" id="lps_ui">
<td colspan="3">
{loop type="lps_area" name="area-loop" id={$area_id}}
{assign var=livraison value=$PRICE}
{assign var=minimum value=$MINIMUM_AMOUNT}
{/loop}
{if {cart attr='total_taxed_price_without_discount'} < $minimum}
<div class="row">
<div class="alert alert-danger">{intl l="Message info minimum de commande" d="livraisonparsecteurs" montant=$minimum}</div>
</div>
{/if}
<div class="row">
<div class="col-sm-4">
{form name="thelia.order.delivery"}
@@ -16,7 +28,7 @@
<div class="col-sm-4">
<div class="price text-right">
{loop type="lps_area" name="area-price" id={$area_id}}
{format_money number=$PRICE symbol={currency attr='symbol'}}
{format_money number=$livraison symbol={currency attr='symbol'}}
{/loop}
</div>
</div>
@@ -38,7 +50,7 @@
<tr>
<td style="padding:10px; text-align: center">{$DAY_LABEL} {$CALCULATED_DAY}</td>
<td style="padding:10px; text-align: center">{format_date date=$BEGIN format="H\hi"} à {format_date date=$END format="H\hi"}</td>
<td style="padding:10px; text-align: center"><input type="radio" name="lps-choosen-day" value="{$ID}" /></td>
<td style="padding:10px; text-align: center"><input type="radio" name="lps-choosen-day" value="{$ID}"{if {cart attr='total_taxed_price_without_discount'} < $minimum} disabled{/if} /></td>
</tr>
{/loop}
</tbody>

View File

@@ -122,8 +122,6 @@
</div>
{/form_field}
<div class="alert alert-danger">{intl l="Message info minimum de commande" d="livraisonparsecteurs" }</div>
{form_field field='delivery-module'}
<div id="delivery-method" class="panel panel-default">
<div class="panel-heading">