Création module PlanificationLivraison pour gérer le stockage en BDD du planning de livraison
This commit is contained in:
@@ -33,7 +33,6 @@
|
||||
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||
<column name="id_area" required="true" type="INTEGER" />
|
||||
<column name="day" required="true" type="INTEGER" />
|
||||
|
||||
<column name="begin_time" required="true" type="TIME" />
|
||||
<column name="end_time" required="true" type="TIME" />
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ return array(
|
||||
'Add a new city' => 'Rajouter une commune',
|
||||
'Add a new delivery day' => 'Ajouter un jour de livraison',
|
||||
'Area name' => 'Nom du secteur',
|
||||
'Choose this day' => 'Choisissez ce jour',
|
||||
'Cities' => 'Communes desservies',
|
||||
'City' => 'Commune',
|
||||
'Create a delivery day' => 'Créer un nouveau jour de livraison',
|
||||
@@ -25,12 +26,14 @@ return array(
|
||||
'Modify a delivery day' => 'Modifier un jour de livraison',
|
||||
'Module name' => 'Livraison à domicile',
|
||||
'My areas' => 'Mes secteurs de livraison',
|
||||
'Next delivery day' => 'Prochain jour de livraison',
|
||||
'Please select a delivery day' => 'Veuillez choisir un jour de livraison',
|
||||
'Remove this city' => 'Retirer cette commune',
|
||||
'Save' => 'Sauvegarder',
|
||||
'Schedule' => 'Horaires de livraison',
|
||||
'There is no city delivered in this area' => 'Aucune commune desservie dans ce secteur',
|
||||
'There is no schedule for this area' => 'Aucune livraison actuellement sur ce secteur',
|
||||
'Title of config view' => 'Module LivraisonParSecteurs - Configuration',
|
||||
'Title of config view' => 'Module LivraisonParSecteurs - Confiwguration',
|
||||
'Zipcode' => 'Code postal',
|
||||
'Monday' => 'Lundi',
|
||||
'Tuesday' => 'Mardi',
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace LivraisonParSecteurs;
|
||||
|
||||
use DateInterval;
|
||||
use LivraisonParSecteurs\Model\LpsAreaCityQuery;
|
||||
use LivraisonParSecteurs\Model\LpsAreaQuery;
|
||||
use Propel\Runtime\Connection\ConnectionInterface;
|
||||
@@ -9,6 +10,7 @@ use Propel\Runtime\Propel;
|
||||
use Thelia\Core\Translation\Translator;
|
||||
use Thelia\Install\Database;
|
||||
use Thelia\Model\AddressQuery;
|
||||
use Thelia\Model\ConfigQuery;
|
||||
use Thelia\Model\Country;
|
||||
use Thelia\Model\OrderPostage;
|
||||
use Thelia\Module\AbstractDeliveryModule;
|
||||
@@ -20,6 +22,7 @@ class LivraisonParSecteurs extends AbstractDeliveryModule
|
||||
/** @var string */
|
||||
const DOMAIN_NAME = 'livraisonparsecteurs';
|
||||
const MESSAGE_DOMAIN = "livraisonparsecteurs";
|
||||
const VARIABLE_MINIMUM_DELAY = 'minimum_delay_before_order';
|
||||
|
||||
|
||||
/**
|
||||
@@ -107,4 +110,37 @@ class LivraisonParSecteurs extends AbstractDeliveryModule
|
||||
else
|
||||
return $days[$int];
|
||||
}
|
||||
|
||||
static public function calculateRelativeDate($baseDay)
|
||||
{
|
||||
$minimumDelayBeforeOrder = ConfigQuery::read(LivraisonParSecteurs::VARIABLE_MINIMUM_DELAY);
|
||||
$date = new \DateTime();
|
||||
$date->add(new DateInterval('P'. $minimumDelayBeforeOrder . 'D'));
|
||||
|
||||
switch ($baseDay) {
|
||||
case 0 :
|
||||
$nextPossibleDay = $date->modify('next monday');
|
||||
break;
|
||||
case 1 :
|
||||
$nextPossibleDay = $date->modify('next tuesday');
|
||||
break;
|
||||
case 2 :
|
||||
$nextPossibleDay = $date->modify('next wednesday');
|
||||
break;
|
||||
case 3 :
|
||||
$nextPossibleDay = $date->modify('next thursday');
|
||||
break;
|
||||
case 4 :
|
||||
$nextPossibleDay = $date->modify('next friday');
|
||||
break;
|
||||
case 5 :
|
||||
$nextPossibleDay = $date->modify('next saturday');
|
||||
break;
|
||||
case 6 :
|
||||
$nextPossibleDay = $date->modify('next sunday');
|
||||
break;
|
||||
}
|
||||
|
||||
return $nextPossibleDay;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||
->set("DAY_LABEL", LivraisonParSecteurs::getDayLabel($lps_area_schedule->getDay()))
|
||||
->set("BEGIN", $lps_area_schedule->getBeginTime())
|
||||
->set("END", $lps_area_schedule->getEndTime())
|
||||
->set("CALCULATED_DAY", LivraisonParSecteurs::calculateRelativeDate($lps_area_schedule->getDay())->format("d/m"))
|
||||
;
|
||||
$loopResult->addRow($loopResultRow);
|
||||
}
|
||||
@@ -66,4 +67,5 @@ class AreaScheduleLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||
|
||||
return $area->orderByDay()->orderByBeginTime();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,17 +5,15 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<label for="livraisonparsecteurs">
|
||||
{form name="thelia.order.delivery"}
|
||||
{form_field field='delivery-module'}
|
||||
<label for="delivery-method_{$module_id}">
|
||||
<input type="radio" delivery-mode="lps" name="{$name}" id="delivery-method_{$module_id}" value="{$module_id}">
|
||||
<strong>{intl l="Module name" d="livraisonparsecteurs"}</strong>
|
||||
<br>
|
||||
</label>
|
||||
{/form_field}
|
||||
{/form}
|
||||
{form name="thelia.order.delivery"}
|
||||
{form_field field='delivery-module'}
|
||||
<label for="delivery-method_{$module_id}">
|
||||
<input type="radio" delivery-mode="lps" name="{$name}" id="delivery-method_{$module_id}" value="{$module_id}">
|
||||
<strong>{intl l="Module name" d="livraisonparsecteurs"}</strong>
|
||||
<br>
|
||||
</label>
|
||||
{/form_field}
|
||||
{/form}
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="price text-right">
|
||||
@@ -33,16 +31,16 @@
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-condensed">
|
||||
<thead>
|
||||
<th style="text-align: center">{intl l='Delivery day' d='livraisonparsecteurs'}</th>
|
||||
<th style="text-align: center">{intl l='Next delivery day' d='livraisonparsecteurs'}</th>
|
||||
<th style="text-align: center">{intl l='Schedule' d='livraisonparsecteurs'}</th>
|
||||
<th style="text-align: center">{intl l='Choose this day' d='livraisonparsecteurs'}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{loop type="lps_area_schedule" name="area-schedule" area_id={$area_id}}
|
||||
<tr>
|
||||
<td style="padding:10px; text-align: center">{$DAY_LABEL}</td>
|
||||
<td style="padding:10px; text-align: center">{format_date date=$BEGIN format="H:i"} / {format_date date=$END format="H:i"}</td>
|
||||
<td style="padding:10px; text-align: center"><input type="radio" id="choosen-day" name="checkbox-delivery-day"/></td>
|
||||
<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:i"} à {format_date date=$END format="H:i"}</td>
|
||||
<td style="padding:10px; text-align: center"><input type="radio" name="lps-choosen-day" value="{$ID}" /></td>
|
||||
</tr>
|
||||
{/loop}
|
||||
</tbody>
|
||||
@@ -59,11 +57,13 @@
|
||||
|
||||
<script>
|
||||
|
||||
// Masquer par défaut les options du mode LPS
|
||||
$(document).ready(function(){
|
||||
$("#delivery-module-38").html($('#lps_ui').html());
|
||||
$('#select-delivery-day').slideUp('fast');
|
||||
});
|
||||
|
||||
// Gestion du pliage/dépliage du mode LPS
|
||||
$('input[type=radio]').click(function() {
|
||||
if ($('[delivery-mode=lps]').is(':checked')) {
|
||||
$('#select-delivery-day').slideDown('fast');
|
||||
@@ -72,4 +72,15 @@
|
||||
}
|
||||
});
|
||||
|
||||
//
|
||||
$("#form-cart-delivery").off('submit').submit(function(ev) {
|
||||
if ($('[delivery-mode=lps]').is(':checked')
|
||||
&&
|
||||
$('input[name=lps-choosen-day]:checked').length === 0) {
|
||||
alert("{intl l='Please select a delivery day' d='livraisonparsecteurs' js=1}");
|
||||
ev.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user