Init des modules PaiementALivraison et LivraisonParSecteurs
This commit is contained in:
@@ -16,15 +16,15 @@ D_LOGO!/atos/logo/!
|
|||||||
#
|
#
|
||||||
# certificat du commercant
|
# certificat du commercant
|
||||||
#
|
#
|
||||||
F_CERTIFICATE!/home/pala4545/public_html/web/local/modules/Atos/Config/certif!
|
F_CERTIFICATE!/Volumes/Dev/Sources/Clients/AuxBieauxLegumes/web/local/modules/Atos/Config/certif!
|
||||||
#
|
#
|
||||||
# fichier paramètre commercant
|
# fichier paramètre commercant
|
||||||
#
|
#
|
||||||
F_PARAM!/home/pala4545/public_html/web/local/modules/Atos/Config/parmcom!
|
F_PARAM!/Volumes/Dev/Sources/Clients/AuxBieauxLegumes/web/local/modules/Atos/Config/parmcom!
|
||||||
#
|
#
|
||||||
# fichier des paramètres ATOS
|
# fichier des paramètres ATOS
|
||||||
#
|
#
|
||||||
F_DEFAULT!/home/pala4545/public_html/web/local/modules/Atos/Config/parmcom.atos!
|
F_DEFAULT!/Volumes/Dev/Sources/Clients/AuxBieauxLegumes/web/local/modules/Atos/Config/parmcom.atos!
|
||||||
#
|
#
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# end of file
|
# end of file
|
||||||
|
|||||||
0
local/modules/Atos/bin/request
Normal file → Executable file
0
local/modules/Atos/bin/request
Normal file → Executable file
0
local/modules/Atos/bin/response
Normal file → Executable file
0
local/modules/Atos/bin/response
Normal file → Executable file
34
local/modules/DeliveryRound/Config/config.xml
Normal file
34
local/modules/DeliveryRound/Config/config.xml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<config xmlns="http://thelia.net/schema/dic/config"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
||||||
|
|
||||||
|
<loops>
|
||||||
|
<loop name="deliveryround" class="DeliveryRound\Loop\DeliveryRoundLoop" />
|
||||||
|
</loops>
|
||||||
|
|
||||||
|
<forms>
|
||||||
|
<form name="deliveryround_config_form" class="DeliveryRound\Form\DeliveryRoundConfigForm" />
|
||||||
|
<form name="deliveryround_form" class="DeliveryRound\Form\DeliveryRoundForm" />
|
||||||
|
<form name="deliveryround_delete_form" class="DeliveryRound\Form\DeliveryRoundDeleteForm" />
|
||||||
|
<form name="deliveryround_update_form" class="DeliveryRound\Form\DeliveryRoundUpdateForm" />
|
||||||
|
</forms>
|
||||||
|
|
||||||
|
<hooks>
|
||||||
|
<hook id="deliveryround.hook" class="DeliveryRound\Hook\DeliveryRoundHook" scope="request">
|
||||||
|
<tag name="hook.event_listener" event="module.configuration" type="back" method="onModuleConfig" />
|
||||||
|
<tag name="hook.event_listener" event="module.config-js" type="back" method="onModuleConfigJs" />
|
||||||
|
<tag name="hook.event_listener" event="order-delivery.extra" type="front" method="onOrderDeliveryExtra"/>
|
||||||
|
</hook>
|
||||||
|
</hooks>
|
||||||
|
|
||||||
|
<services>
|
||||||
|
<service id="send.deliveryround.mail" class="DeliveryRound\EventListeners\SendEMail" scope="request">
|
||||||
|
<argument type="service" id="thelia.parser" />
|
||||||
|
<argument type="service" id="mailer"/>
|
||||||
|
<tag name="kernel.event_subscriber"/>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
|
||||||
|
</config>
|
||||||
22
local/modules/DeliveryRound/Config/insert.sql
Normal file
22
local/modules/DeliveryRound/Config/insert.sql
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
|
||||||
|
# This is a fix for InnoDB in MySQL >= 4.1.x
|
||||||
|
# It "suspends judgement" for fkey relationships until are tables are set.
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- delivery_round
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `delivery_round`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`zip_code` VARCHAR(20) NOT NULL,
|
||||||
|
`city` VARCHAR(255) NOT NULL,
|
||||||
|
`address` TEXT,
|
||||||
|
`day` TINYINT NOT NULL,
|
||||||
|
`delivery_period` TEXT,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
26
local/modules/DeliveryRound/Config/module.xml
Normal file
26
local/modules/DeliveryRound/Config/module.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module xmlns="http://thelia.net/schema/dic/module"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_2.xsd">
|
||||||
|
<fullnamespace>DeliveryRound\DeliveryRound</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>Round management</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>Gestion des tournées</title>
|
||||||
|
</descriptive>
|
||||||
|
<languages>
|
||||||
|
<language>en_US</language>
|
||||||
|
<language>fr_FR</language>
|
||||||
|
</languages>
|
||||||
|
<version>1.2.2</version>
|
||||||
|
<authors>
|
||||||
|
<author>
|
||||||
|
<name>Etienne Perriere</name>
|
||||||
|
<email>eperriere@openstudio.fr</email>
|
||||||
|
</author>
|
||||||
|
</authors>
|
||||||
|
<type>delivery</type>
|
||||||
|
<thelia>2.2.0</thelia>
|
||||||
|
<stability>beta</stability>
|
||||||
|
</module>
|
||||||
23
local/modules/DeliveryRound/Config/routing.xml
Normal file
23
local/modules/DeliveryRound/Config/routing.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<routes xmlns="http://symfony.com/schema/routing"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
|
||||||
|
|
||||||
|
<route id="deliveryround.config" path="/admin/module/DeliveryRound/config">
|
||||||
|
<default key="_controller">DeliveryRound:DeliveryRound:configure</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="deliveryround.addlocation" path="/admin/module/DeliveryRound/addLocation">
|
||||||
|
<default key="_controller">DeliveryRound:DeliveryRound:addLocation</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="deliveryround.delete" path="/admin/module/DeliveryRound/delete">
|
||||||
|
<default key="_controller">DeliveryRound:DeliveryRound:delete</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="deliveryround.update" path="/admin/module/DeliveryRound/update">
|
||||||
|
<default key="_controller">DeliveryRound:DeliveryRound:update</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
</routes>
|
||||||
16
local/modules/DeliveryRound/Config/schema.xml
Normal file
16
local/modules/DeliveryRound/Config/schema.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<database defaultIdMethod="native" name="thelia"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="../../../../core/vendor/propel/propel/resources/xsd/database.xsd" >
|
||||||
|
|
||||||
|
<table name="delivery_round" namespace="DeliveryRound\Model">
|
||||||
|
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
<column name="zip_code" required="true" type="VARCHAR" size="20" />
|
||||||
|
<column name="city" required="true" type="VARCHAR" size="255" />
|
||||||
|
<column name="address" type="LONGVARCHAR" />
|
||||||
|
<column name="day" required="true" type="ENUM" valueSet="monday, tuesday, wednesday, thursday, friday, saturday, sunday" />
|
||||||
|
<column name="delivery_period" type="LONGVARCHAR" />
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||||
|
</database>
|
||||||
2
local/modules/DeliveryRound/Config/sqldb.map
Normal file
2
local/modules/DeliveryRound/Config/sqldb.map
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Sqlfile -> Database map
|
||||||
|
thelia.sql=thelia
|
||||||
24
local/modules/DeliveryRound/Config/thelia.sql
Normal file
24
local/modules/DeliveryRound/Config/thelia.sql
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
|
||||||
|
# This is a fix for InnoDB in MySQL >= 4.1.x
|
||||||
|
# It "suspends judgement" for fkey relationships until are tables are set.
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- delivery_round
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `delivery_round`;
|
||||||
|
|
||||||
|
CREATE TABLE `delivery_round`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`zip_code` VARCHAR(20) NOT NULL,
|
||||||
|
`city` VARCHAR(255) NOT NULL,
|
||||||
|
`address` TEXT,
|
||||||
|
`day` TINYINT NOT NULL,
|
||||||
|
`delivery_period` TEXT,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -0,0 +1,181 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Controller;
|
||||||
|
|
||||||
|
use DeliveryRound\DeliveryRound;
|
||||||
|
use DeliveryRound\Model\DeliveryRound as DeliveryRoundModel;
|
||||||
|
use DeliveryRound\Model\DeliveryRoundQuery;
|
||||||
|
use Propel\Runtime\Map\TableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundController
|
||||||
|
* @package DeliveryRound\Controller
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundController extends BaseAdminController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return mixed|\Thelia\Core\HttpFoundation\Response
|
||||||
|
*/
|
||||||
|
public function configureAction()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth([AdminResources::MODULE], ["DeliveryRound"], AccessManager::CREATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = $this->createForm('deliveryround_config_form');
|
||||||
|
$error = null;
|
||||||
|
$ex = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$vForm = $this->validateForm($form);
|
||||||
|
|
||||||
|
// Configure price
|
||||||
|
DeliveryRound::setConfigValue('price', $vForm->get('price')->getData());
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$error = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$error = $ex->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error !== null) {
|
||||||
|
$this->setupFormErrorContext(
|
||||||
|
$this->getTranslator()->trans("DeliveryRound configuration", [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
$error,
|
||||||
|
$form,
|
||||||
|
$ex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('module-configure', array('module_code' => 'DeliveryRound'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed|\Thelia\Core\HttpFoundation\Response
|
||||||
|
*/
|
||||||
|
public function addLocationAction()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth([AdminResources::MODULE], ["DeliveryRound"], AccessManager::CREATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = $this->createForm('deliveryround_form');
|
||||||
|
$error = null;
|
||||||
|
$ex = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$vForm = $this->validateForm($form);
|
||||||
|
|
||||||
|
// Create new entry
|
||||||
|
(new DeliveryRoundModel())
|
||||||
|
->setZipCode($vForm->get('zipcode')->getData())
|
||||||
|
->setCity($vForm->get('city')->getData())
|
||||||
|
->setAddress($vForm->get('address')->getData())
|
||||||
|
->setDay($vForm->get('day')->getData())
|
||||||
|
->setDeliveryPeriod($vForm->get('delivery_period')->getData())
|
||||||
|
->save();
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$error = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$error = $ex->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error !== null) {
|
||||||
|
$this->setupFormErrorContext(
|
||||||
|
$this->getTranslator()->trans("DeliveryRound configuration", [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
$error,
|
||||||
|
$form,
|
||||||
|
$ex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('module-configure', array('module_code' => 'DeliveryRound'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed|\Thelia\Core\HttpFoundation\Response
|
||||||
|
*/
|
||||||
|
public function deleteAction()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth([AdminResources::MODULE], ["DeliveryRound"], AccessManager::DELETE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = $this->createForm('deliveryround_delete_form');
|
||||||
|
$error = null;
|
||||||
|
$ex = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$vForm = $this->validateForm($form);
|
||||||
|
|
||||||
|
// Remove entry
|
||||||
|
DeliveryRoundQuery::create()->filterById($vForm->get('id')->getData())->delete();
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$error = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$error = $ex->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error !== null) {
|
||||||
|
$this->setupFormErrorContext(
|
||||||
|
$this->getTranslator()->trans("DeliveryRound configuration", [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
$error,
|
||||||
|
$form,
|
||||||
|
$ex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('module-configure', array('module_code' => 'DeliveryRound'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed|\Thelia\Core\HttpFoundation\Response
|
||||||
|
*/
|
||||||
|
public function updateAction()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth([AdminResources::MODULE], ["DeliveryRound"], AccessManager::UPDATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$con = Propel::getConnection();
|
||||||
|
$con->beginTransaction();
|
||||||
|
|
||||||
|
$form = $this->createForm('deliveryround_update_form');
|
||||||
|
$error = null;
|
||||||
|
$ex = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$vForm = $this->validateForm($form);
|
||||||
|
$data = $vForm->getData();
|
||||||
|
|
||||||
|
$model = DeliveryRoundQuery::create()->findOneById($data['id']);
|
||||||
|
|
||||||
|
$model->fromArray($data, TableMap::TYPE_FIELDNAME);
|
||||||
|
$model->save();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$error = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
$con->rollBack();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$error = $ex->getMessage();
|
||||||
|
$con->rollBack();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($error !== null) {
|
||||||
|
$this->setupFormErrorContext(
|
||||||
|
$this->getTranslator()->trans("DeliveryRound configuration", [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
$error,
|
||||||
|
$form,
|
||||||
|
$ex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('module-configure', array('module_code' => 'DeliveryRound'));
|
||||||
|
}
|
||||||
|
}
|
||||||
119
local/modules/DeliveryRound/DeliveryRound.php
Normal file
119
local/modules/DeliveryRound/DeliveryRound.php
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* This file is part of the Thelia package. */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : dev@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE.txt */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace DeliveryRound;
|
||||||
|
|
||||||
|
use DeliveryRound\Model\DeliveryRoundQuery;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
use Thelia\Install\Database;
|
||||||
|
use Thelia\Model\AddressQuery;
|
||||||
|
use Thelia\Model\Country;
|
||||||
|
use Thelia\Model\OrderPostage;
|
||||||
|
use Thelia\Module\AbstractDeliveryModule;
|
||||||
|
use Thelia\Module\Exception\DeliveryException;
|
||||||
|
|
||||||
|
class DeliveryRound extends AbstractDeliveryModule
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
const DOMAIN_NAME = 'deliveryround';
|
||||||
|
const STATUS_SENT = 'sent';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ConnectionInterface|null $con
|
||||||
|
*/
|
||||||
|
public function postActivation(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
$database = new Database($con->getWrappedConnection());
|
||||||
|
|
||||||
|
$database->insertSql(null, array(__DIR__ . '/Config/insert.sql'));
|
||||||
|
|
||||||
|
DeliveryRound::setConfigValue('price', 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called by the Delivery loop, to check if the current module has to be displayed to the customer.
|
||||||
|
* Override it to implements your delivery rules/
|
||||||
|
*
|
||||||
|
* If you return true, the delivery method will de displayed to the customer
|
||||||
|
* If you return false, the delivery method will not be displayed
|
||||||
|
*
|
||||||
|
* @param Country $country the country to deliver to.
|
||||||
|
*
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function isValidDelivery(Country $country)
|
||||||
|
{
|
||||||
|
// Get current addressId
|
||||||
|
$currentAddressId = $this->getRequest()->request->get('address_id');
|
||||||
|
|
||||||
|
if (empty($currentAddressId)) {
|
||||||
|
if (null !== $customer = $this->getRequest()->getSession()->getCustomerUser()) {
|
||||||
|
$currentAddressId = AddressQuery::create()
|
||||||
|
->filterByCustomer($customer)
|
||||||
|
->filterByIsDefault(1)
|
||||||
|
->select('ID')
|
||||||
|
->findOne();
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get delivered zipcodes
|
||||||
|
$deliveryRounds = DeliveryRoundQuery::create()->find();
|
||||||
|
$deliveryRoundZipcode = [];
|
||||||
|
|
||||||
|
/** @var \DeliveryRound\Model\DeliveryRound $deliveryRound */
|
||||||
|
foreach ($deliveryRounds as $deliveryRound) {
|
||||||
|
$deliveryRoundZipcode[] = $deliveryRound->getZipCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the customer's current address is in delivered zipcodes
|
||||||
|
if (null !== AddressQuery::create()->filterByZipcode($deliveryRoundZipcode)->findOneById($currentAddressId)) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $request
|
||||||
|
* @return mixed
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
protected function getCurrentlySelectedAddress($request)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return $currentAddressId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate and return delivery price in the shop's default currency
|
||||||
|
*
|
||||||
|
* @param Country $country the country to deliver to.
|
||||||
|
*
|
||||||
|
* @return OrderPostage|float the delivery price
|
||||||
|
* @throws DeliveryException if the postage price cannot be calculated.
|
||||||
|
*/
|
||||||
|
public function getPostage(Country $country)
|
||||||
|
{
|
||||||
|
if (! $this->isValidDelivery($country)) {
|
||||||
|
throw new DeliveryException(
|
||||||
|
Translator::getInstance()->trans("This module cannot be used on the current cart.")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->getConfigValue('price', 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
136
local/modules/DeliveryRound/EventListeners/SendEMail.php
Normal file
136
local/modules/DeliveryRound/EventListeners/SendEMail.php
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* */
|
||||||
|
/* Thelia */
|
||||||
|
/* */
|
||||||
|
/* Copyright (c) OpenStudio */
|
||||||
|
/* email : info@thelia.net */
|
||||||
|
/* web : http://www.thelia.net */
|
||||||
|
/* */
|
||||||
|
/* This program is free software; you can redistribute it and/or modify */
|
||||||
|
/* it under the terms of the GNU General Public License as published by */
|
||||||
|
/* the Free Software Foundation; either version 3 of the License */
|
||||||
|
/* */
|
||||||
|
/* This program is distributed in the hope that it will be useful, */
|
||||||
|
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||||
|
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
|
||||||
|
/* GNU General Public License for more details. */
|
||||||
|
/* */
|
||||||
|
/* You should have received a copy of the GNU General Public License */
|
||||||
|
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||||
|
/* */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
namespace DeliveryRound\EventListeners;
|
||||||
|
|
||||||
|
use DeliveryRound\DeliveryRound;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Thelia\Action\BaseAction;
|
||||||
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
|
use Thelia\Mailer\MailerFactory;
|
||||||
|
use Thelia\Core\Template\ParserInterface;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Thelia\Model\MessageQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SendEMail
|
||||||
|
* @package DeliveryRound\EventListeners
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class SendEMail extends BaseAction implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var MailerFactory
|
||||||
|
*/
|
||||||
|
protected $mailer;
|
||||||
|
/**
|
||||||
|
* @var ParserInterface
|
||||||
|
*/
|
||||||
|
protected $parser;
|
||||||
|
|
||||||
|
public function __construct(ParserInterface $parser, MailerFactory $mailer)
|
||||||
|
{
|
||||||
|
$this->parser = $parser;
|
||||||
|
$this->mailer = $mailer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Thelia\Mailer\MailerFactory
|
||||||
|
*/
|
||||||
|
public function getMailer()
|
||||||
|
{
|
||||||
|
return $this->mailer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @params OrderEvent $order
|
||||||
|
* Checks if order delivery module is DeliveryRound and if order new status is sent, send an email to the customer.
|
||||||
|
*/
|
||||||
|
public function update_status(OrderEvent $event)
|
||||||
|
{
|
||||||
|
if ($event->getOrder()->getDeliveryModuleId() === DeliveryRound::getModuleId()) {
|
||||||
|
if ($event->getOrder()->getStatusId() === DeliveryRound::STATUS_SENT) {
|
||||||
|
$contact_email = ConfigQuery::read('store_email');
|
||||||
|
|
||||||
|
if ($contact_email) {
|
||||||
|
$message = MessageQuery::create()
|
||||||
|
->filterByName('order_confirmation_deliveryround')
|
||||||
|
->findOne();
|
||||||
|
|
||||||
|
if (false === $message) {
|
||||||
|
throw new \Exception("Failed to load message 'order_confirmation_deliveryround'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$order = $event->getOrder();
|
||||||
|
$customer = $order->getCustomer();
|
||||||
|
|
||||||
|
$this->parser->assign('order_id', $order->getId());
|
||||||
|
$this->parser->assign('order_ref', $order->getRef());
|
||||||
|
$this->parser->assign('order_date', $order->getCreatedAt());
|
||||||
|
$this->parser->assign('update_date', $order->getUpdatedAt());
|
||||||
|
|
||||||
|
$message
|
||||||
|
->setLocale($order->getLang()->getLocale());
|
||||||
|
|
||||||
|
$instance = \Swift_Message::newInstance()
|
||||||
|
->addTo($customer->getEmail(), $customer->getFirstname()." ".$customer->getLastname())
|
||||||
|
->addFrom($contact_email, ConfigQuery::read('store_name'))
|
||||||
|
;
|
||||||
|
|
||||||
|
// Build subject and body
|
||||||
|
$message->buildMessage($this->parser, $instance);
|
||||||
|
|
||||||
|
$this->getMailer()->send($instance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array of event names this subscriber wants to listen to.
|
||||||
|
*
|
||||||
|
* The array keys are event names and the value can be:
|
||||||
|
*
|
||||||
|
* * The method name to call (priority defaults to 0)
|
||||||
|
* * An array composed of the method name to call and the priority
|
||||||
|
* * An array of arrays composed of the method names to call and respective
|
||||||
|
* priorities, or 0 if unset
|
||||||
|
*
|
||||||
|
* For instance:
|
||||||
|
*
|
||||||
|
* * array('eventName' => 'methodName')
|
||||||
|
* * array('eventName' => array('methodName', $priority))
|
||||||
|
* * array('eventName' => array(array('methodName1', $priority), array('methodName2'))
|
||||||
|
*
|
||||||
|
* @return array The event names to listen to
|
||||||
|
*
|
||||||
|
* @api
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
TheliaEvents::ORDER_UPDATE_STATUS => array("update_status", 128)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
36
local/modules/DeliveryRound/Form/DeliveryRoundConfigForm.php
Normal file
36
local/modules/DeliveryRound/Form/DeliveryRoundConfigForm.php
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Form;
|
||||||
|
|
||||||
|
use DeliveryRound\DeliveryRound;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
use Symfony\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundConfigForm
|
||||||
|
* @package DeliveryRound\Form
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundConfigForm extends BaseForm
|
||||||
|
{
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
'price',
|
||||||
|
'number',
|
||||||
|
[
|
||||||
|
'constraints' => [new Constraints\NotBlank()],
|
||||||
|
'required' => true,
|
||||||
|
'label' => $this->translator->trans('Price', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => ['for' => 'price'],
|
||||||
|
'data' => DeliveryRound::getConfigValue('price', 0)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'deliveryround_config_form';
|
||||||
|
}
|
||||||
|
}
|
||||||
32
local/modules/DeliveryRound/Form/DeliveryRoundDeleteForm.php
Normal file
32
local/modules/DeliveryRound/Form/DeliveryRoundDeleteForm.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Form;
|
||||||
|
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
use Symfony\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundDeleteForm
|
||||||
|
* @package DeliveryRound\Form
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundDeleteForm extends BaseForm
|
||||||
|
{
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
'id',
|
||||||
|
'integer',
|
||||||
|
[
|
||||||
|
'constraints' => [new Constraints\NotBlank()],
|
||||||
|
'required' => true,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'deliveryround_delete_form';
|
||||||
|
}
|
||||||
|
}
|
||||||
77
local/modules/DeliveryRound/Form/DeliveryRoundForm.php
Normal file
77
local/modules/DeliveryRound/Form/DeliveryRoundForm.php
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Form;
|
||||||
|
|
||||||
|
use DeliveryRound\DeliveryRound;
|
||||||
|
use DeliveryRound\Model\Map\DeliveryRoundTableMap;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
use Symfony\Component\Validator\Constraints;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundForm
|
||||||
|
* @package DeliveryRound\Form
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundForm extends BaseForm
|
||||||
|
{
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
'zipcode',
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [new Constraints\NotBlank()],
|
||||||
|
'required' => true,
|
||||||
|
'label' => $this->translator->trans('ZipCode', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => ['for' => 'delivery-round-zipcode'],
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'city',
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [new Constraints\NotBlank()],
|
||||||
|
'required' => true,
|
||||||
|
'label' => $this->translator->trans('City', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => ['for' => 'delivery-round-city'],
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'address',
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'label' => $this->translator->trans('Address', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => ['for' => 'delivery-round-address'],
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'day',
|
||||||
|
'choice',
|
||||||
|
[
|
||||||
|
'choices' => DeliveryRoundTableMap::getValueSet(DeliveryRoundTableMap::DAY),
|
||||||
|
'constraints' => [new Constraints\NotBlank()],
|
||||||
|
'required' => true,
|
||||||
|
'label' => $this->translator->trans('Day', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => ['for' => 'delivery-round-day'],
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'delivery_period',
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'label' => $this->translator->trans('Delivery period', [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'for' => 'delivery-round-delivery_period'
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return 'deliveryround_form';
|
||||||
|
}
|
||||||
|
}
|
||||||
46
local/modules/DeliveryRound/Form/DeliveryRoundUpdateForm.php
Normal file
46
local/modules/DeliveryRound/Form/DeliveryRoundUpdateForm.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: apenalver
|
||||||
|
* Date: 28/06/2016
|
||||||
|
* Time: 10:30
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace DeliveryRound\Form;
|
||||||
|
|
||||||
|
use DeliveryRound\DeliveryRound;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundUpdateForm
|
||||||
|
* @package DeliveryRound/Form
|
||||||
|
*/
|
||||||
|
class DeliveryRoundUpdateForm extends DeliveryRoundForm
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
parent::buildForm();
|
||||||
|
|
||||||
|
$this->formBuilder
|
||||||
|
->add('id', 'integer', array(
|
||||||
|
"label" => $this->translator->trans("Id", [], DeliveryRound::DOMAIN_NAME),
|
||||||
|
"label_attr" => ["for" => "delivery-round-id"],
|
||||||
|
"required" => true,
|
||||||
|
"constraints" => [
|
||||||
|
new NotBlank()
|
||||||
|
],
|
||||||
|
"attr" => array()
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return "deliveryround_update_form";
|
||||||
|
}
|
||||||
|
}
|
||||||
29
local/modules/DeliveryRound/Hook/DeliveryRoundHook.php
Normal file
29
local/modules/DeliveryRound/Hook/DeliveryRoundHook.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Hook;
|
||||||
|
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundHook
|
||||||
|
* @package DeliveryRound\Hook
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundHook extends BaseHook
|
||||||
|
{
|
||||||
|
public function onModuleConfig(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add($this->render('delivery-round-config.html'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onModuleConfigJs(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add($this->render('script/delivery-round-update-js.html'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onOrderDeliveryExtra(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add($this->render('show-round-list.html'));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Address' => 'Adresse',
|
||||||
|
'City' => 'Ville',
|
||||||
|
'Day' => 'Jour',
|
||||||
|
'Delivery period' => 'Heures de livraison',
|
||||||
|
'Remove' => 'Supprimer',
|
||||||
|
'Save' => 'Enregistrer',
|
||||||
|
'ZipCode' => 'Code postal',
|
||||||
|
'configure delivery round price' => 'Configurer le prix des tournées de livraison',
|
||||||
|
'configure delivery rounds' => 'Configurer les tournées de livraison',
|
||||||
|
);
|
||||||
4
local/modules/DeliveryRound/I18n/en_US.php
Normal file
4
local/modules/DeliveryRound/I18n/en_US.php
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
// 'an english string' => 'The displayed english string',
|
||||||
|
);
|
||||||
12
local/modules/DeliveryRound/I18n/fr_FR.php
Normal file
12
local/modules/DeliveryRound/I18n/fr_FR.php
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Address' => 'Adresse',
|
||||||
|
'City' => 'Ville',
|
||||||
|
'Day' => 'Jour',
|
||||||
|
'Delivery period' => 'Heures de livraison',
|
||||||
|
'DeliveryRound configuration' => 'Configuration de DeliveryRound',
|
||||||
|
'Price' => 'Prix',
|
||||||
|
'This module cannot be used on the current cart.' => 'Ce module ne peut être utilisé avec le panier actuel.',
|
||||||
|
'ZipCode' => 'Code postal',
|
||||||
|
);
|
||||||
118
local/modules/DeliveryRound/Loop/DeliveryRoundLoop.php
Normal file
118
local/modules/DeliveryRound/Loop/DeliveryRoundLoop.php
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Loop;
|
||||||
|
|
||||||
|
use DeliveryRound\Model\DeliveryRoundQuery;
|
||||||
|
use DeliveryRound\Model\Map\DeliveryRoundTableMap;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Thelia\Core\Template\Element\BaseLoop;
|
||||||
|
use Thelia\Core\Template\Element\LoopResult;
|
||||||
|
use Thelia\Core\Template\Element\LoopResultRow;
|
||||||
|
use Thelia\Core\Template\Element\PropelSearchLoopInterface;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class DeliveryRoundLoop
|
||||||
|
* @package DeliveryRound\Loop
|
||||||
|
* @author Etienne Perriere <eperriere@openstudio.fr>
|
||||||
|
*/
|
||||||
|
class DeliveryRoundLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Definition of loop arguments
|
||||||
|
*
|
||||||
|
* @return \Thelia\Core\Template\Loop\Argument\ArgumentCollection
|
||||||
|
*/
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntListTypeArgument('id'),
|
||||||
|
Argument::createAnyListTypeArgument('zipcode'),
|
||||||
|
Argument::createAnyListTypeArgument('city'),
|
||||||
|
Argument::createEnumListTypeArgument('day', DeliveryRoundTableMap::getValueSet(DeliveryRoundTableMap::DAY)),
|
||||||
|
Argument::createEnumListTypeArgument('order', [
|
||||||
|
'day',
|
||||||
|
'day-reverse',
|
||||||
|
'city',
|
||||||
|
'city-reverse',
|
||||||
|
'zipcode',
|
||||||
|
'zipcode-reverse'
|
||||||
|
], 'day')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this method returns a Propel ModelCriteria
|
||||||
|
*
|
||||||
|
* @return \Propel\Runtime\ActiveQuery\ModelCriteria
|
||||||
|
*/
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
$search = DeliveryRoundQuery::create();
|
||||||
|
|
||||||
|
if ($this->getId() !== null) {
|
||||||
|
$search->filterById($this->getId(), Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->getZipcode() !== null) {
|
||||||
|
$search->filterByZipCode($this->getZipcode(), Criteria::IN);
|
||||||
|
}
|
||||||
|
if ($this->getCity() !== null) {
|
||||||
|
$search->filterByCity($this->getCity(), Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->getDay() !== null) {
|
||||||
|
$search->filterByDay($this->getDay(), Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->getOrder() as $order) {
|
||||||
|
switch ($order) {
|
||||||
|
case 'day':
|
||||||
|
$search->orderByDay();
|
||||||
|
break;
|
||||||
|
case 'day-reverse':
|
||||||
|
$search->orderByDay(Criteria::DESC);
|
||||||
|
break;
|
||||||
|
case 'city':
|
||||||
|
$search->orderByCity();
|
||||||
|
break;
|
||||||
|
case 'city-reverse':
|
||||||
|
$search->orderByCity(Criteria::DESC);
|
||||||
|
break;
|
||||||
|
case 'zipcode':
|
||||||
|
$search->orderByZipCode();
|
||||||
|
break;
|
||||||
|
case 'zipcode-reverse':
|
||||||
|
$search->orderByZipCode(Criteria::DESC);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $search;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoopResult $loopResult
|
||||||
|
*
|
||||||
|
* @return LoopResult
|
||||||
|
*/
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
/** @var \DeliveryRound\Model\DeliveryRound $deliveryRound */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $deliveryRound) {
|
||||||
|
$loopResultRow = new LoopResultRow($deliveryRound);
|
||||||
|
|
||||||
|
$loopResultRow->set('ID', $deliveryRound->getId());
|
||||||
|
$loopResultRow->set('ZIPCODE', $deliveryRound->getZipCode());
|
||||||
|
$loopResultRow->set('CITY', $deliveryRound->getCity());
|
||||||
|
$loopResultRow->set('ADDRESS', $deliveryRound->getAddress());
|
||||||
|
$loopResultRow->set('DAY', $deliveryRound->getDay());
|
||||||
|
$loopResultRow->set('DELIVERY_PERIOD', $deliveryRound->getDeliveryPeriod());
|
||||||
|
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
1357
local/modules/DeliveryRound/Model/Base/DeliveryRound.php
Normal file
1357
local/modules/DeliveryRound/Model/Base/DeliveryRound.php
Normal file
File diff suppressed because it is too large
Load Diff
513
local/modules/DeliveryRound/Model/Base/DeliveryRoundQuery.php
Normal file
513
local/modules/DeliveryRound/Model/Base/DeliveryRoundQuery.php
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use DeliveryRound\Model\DeliveryRound as ChildDeliveryRound;
|
||||||
|
use DeliveryRound\Model\DeliveryRoundQuery as ChildDeliveryRoundQuery;
|
||||||
|
use DeliveryRound\Model\Map\DeliveryRoundTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'delivery_round' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildDeliveryRoundQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildDeliveryRoundQuery orderByZipCode($order = Criteria::ASC) Order by the zip_code column
|
||||||
|
* @method ChildDeliveryRoundQuery orderByCity($order = Criteria::ASC) Order by the city column
|
||||||
|
* @method ChildDeliveryRoundQuery orderByAddress($order = Criteria::ASC) Order by the address column
|
||||||
|
* @method ChildDeliveryRoundQuery orderByDay($order = Criteria::ASC) Order by the day column
|
||||||
|
* @method ChildDeliveryRoundQuery orderByDeliveryPeriod($order = Criteria::ASC) Order by the delivery_period column
|
||||||
|
*
|
||||||
|
* @method ChildDeliveryRoundQuery groupById() Group by the id column
|
||||||
|
* @method ChildDeliveryRoundQuery groupByZipCode() Group by the zip_code column
|
||||||
|
* @method ChildDeliveryRoundQuery groupByCity() Group by the city column
|
||||||
|
* @method ChildDeliveryRoundQuery groupByAddress() Group by the address column
|
||||||
|
* @method ChildDeliveryRoundQuery groupByDay() Group by the day column
|
||||||
|
* @method ChildDeliveryRoundQuery groupByDeliveryPeriod() Group by the delivery_period column
|
||||||
|
*
|
||||||
|
* @method ChildDeliveryRoundQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildDeliveryRoundQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildDeliveryRoundQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildDeliveryRound findOne(ConnectionInterface $con = null) Return the first ChildDeliveryRound matching the query
|
||||||
|
* @method ChildDeliveryRound findOneOrCreate(ConnectionInterface $con = null) Return the first ChildDeliveryRound matching the query, or a new ChildDeliveryRound object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildDeliveryRound findOneById(int $id) Return the first ChildDeliveryRound filtered by the id column
|
||||||
|
* @method ChildDeliveryRound findOneByZipCode(string $zip_code) Return the first ChildDeliveryRound filtered by the zip_code column
|
||||||
|
* @method ChildDeliveryRound findOneByCity(string $city) Return the first ChildDeliveryRound filtered by the city column
|
||||||
|
* @method ChildDeliveryRound findOneByAddress(string $address) Return the first ChildDeliveryRound filtered by the address column
|
||||||
|
* @method ChildDeliveryRound findOneByDay(int $day) Return the first ChildDeliveryRound filtered by the day column
|
||||||
|
* @method ChildDeliveryRound findOneByDeliveryPeriod(string $delivery_period) Return the first ChildDeliveryRound filtered by the delivery_period column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildDeliveryRound objects filtered by the id column
|
||||||
|
* @method array findByZipCode(string $zip_code) Return ChildDeliveryRound objects filtered by the zip_code column
|
||||||
|
* @method array findByCity(string $city) Return ChildDeliveryRound objects filtered by the city column
|
||||||
|
* @method array findByAddress(string $address) Return ChildDeliveryRound objects filtered by the address column
|
||||||
|
* @method array findByDay(int $day) Return ChildDeliveryRound objects filtered by the day column
|
||||||
|
* @method array findByDeliveryPeriod(string $delivery_period) Return ChildDeliveryRound objects filtered by the delivery_period column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class DeliveryRoundQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \DeliveryRound\Model\Base\DeliveryRoundQuery object.
|
||||||
|
*
|
||||||
|
* @param string $dbName The database name
|
||||||
|
* @param string $modelName The phpName of a model, e.g. 'Book'
|
||||||
|
* @param string $modelAlias The alias for the model in this query, e.g. 'b'
|
||||||
|
*/
|
||||||
|
public function __construct($dbName = 'thelia', $modelName = '\\DeliveryRound\\Model\\DeliveryRound', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildDeliveryRoundQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \DeliveryRound\Model\DeliveryRoundQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \DeliveryRound\Model\DeliveryRoundQuery();
|
||||||
|
if (null !== $modelAlias) {
|
||||||
|
$query->setModelAlias($modelAlias);
|
||||||
|
}
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$query->mergeWith($criteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
* Propel uses the instance pool to skip the database if the object exists.
|
||||||
|
* Go fast if the query is untouched.
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* $obj = $c->findPk(12, $con);
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRound|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = DeliveryRoundTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
if ($this->formatter || $this->modelAlias || $this->with || $this->select
|
||||||
|
|| $this->selectColumns || $this->asColumns || $this->selectModifiers
|
||||||
|
|| $this->map || $this->having || $this->joins) {
|
||||||
|
return $this->findPkComplex($key, $con);
|
||||||
|
} else {
|
||||||
|
return $this->findPkSimple($key, $con);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key using raw SQL to go fast.
|
||||||
|
* Bypass doSelect() and the object formatter by using generated code.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRound A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, ZIP_CODE, CITY, ADDRESS, DAY, DELIVERY_PERIOD FROM delivery_round WHERE ID = :p0';
|
||||||
|
try {
|
||||||
|
$stmt = $con->prepare($sql);
|
||||||
|
$stmt->bindValue(':p0', $key, PDO::PARAM_INT);
|
||||||
|
$stmt->execute();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
Propel::log($e->getMessage(), Propel::LOG_ERR);
|
||||||
|
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
|
||||||
|
}
|
||||||
|
$obj = null;
|
||||||
|
if ($row = $stmt->fetch(\PDO::FETCH_NUM)) {
|
||||||
|
$obj = new ChildDeliveryRound();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
DeliveryRoundTableMap::addInstanceToPool($obj, (string) $key);
|
||||||
|
}
|
||||||
|
$stmt->closeCursor();
|
||||||
|
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find object by primary key.
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
* @param ConnectionInterface $con A connection object
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRound|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
protected function findPkComplex($key, $con)
|
||||||
|
{
|
||||||
|
// As the query uses a PK condition, no limit(1) is necessary.
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKey($key)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->formatOne($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find objects by primary key
|
||||||
|
* <code>
|
||||||
|
* $objs = $c->findPks(array(12, 56, 832), $con);
|
||||||
|
* </code>
|
||||||
|
* @param array $keys Primary keys to use for the query
|
||||||
|
* @param ConnectionInterface $con an optional connection object
|
||||||
|
*
|
||||||
|
* @return ObjectCollection|array|mixed the list of results, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPks($keys, $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection($this->getDbName());
|
||||||
|
}
|
||||||
|
$this->basePreSelect($con);
|
||||||
|
$criteria = $this->isKeepQuery() ? clone $this : $this;
|
||||||
|
$dataFetcher = $criteria
|
||||||
|
->filterByPrimaryKeys($keys)
|
||||||
|
->doSelect($con);
|
||||||
|
|
||||||
|
return $criteria->getFormatter()->init($criteria)->format($dataFetcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by primary key
|
||||||
|
*
|
||||||
|
* @param mixed $key Primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::ID, $key, Criteria::EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a list of primary keys
|
||||||
|
*
|
||||||
|
* @param array $keys The list of primary key to use for the query
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::ID, $keys, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterById(1234); // WHERE id = 1234
|
||||||
|
* $query->filterById(array(12, 34)); // WHERE id IN (12, 34)
|
||||||
|
* $query->filterById(array('min' => 12)); // WHERE id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $id The value to use as filter.
|
||||||
|
* Use scalar values for equality.
|
||||||
|
* Use array values for in_array() equivalent.
|
||||||
|
* Use associative array('min' => $minValue, 'max' => $maxValue) for intervals.
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterById($id = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($id)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($id['min'])) {
|
||||||
|
$this->addUsingAlias(DeliveryRoundTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(DeliveryRoundTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the zip_code column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByZipCode('fooValue'); // WHERE zip_code = 'fooValue'
|
||||||
|
* $query->filterByZipCode('%fooValue%'); // WHERE zip_code LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $zipCode The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByZipCode($zipCode = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($zipCode)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $zipCode)) {
|
||||||
|
$zipCode = str_replace('*', '%', $zipCode);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::ZIP_CODE, $zipCode, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the city column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByCity('fooValue'); // WHERE city = 'fooValue'
|
||||||
|
* $query->filterByCity('%fooValue%'); // WHERE city LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $city The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByCity($city = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($city)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $city)) {
|
||||||
|
$city = str_replace('*', '%', $city);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::CITY, $city, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the address column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByAddress('fooValue'); // WHERE address = 'fooValue'
|
||||||
|
* $query->filterByAddress('%fooValue%'); // WHERE address LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $address The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByAddress($address = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($address)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $address)) {
|
||||||
|
$address = str_replace('*', '%', $address);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::ADDRESS, $address, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the day column
|
||||||
|
*
|
||||||
|
* @param mixed $day The value to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByDay($day = null, $comparison = null)
|
||||||
|
{
|
||||||
|
$valueSet = DeliveryRoundTableMap::getValueSet(DeliveryRoundTableMap::DAY);
|
||||||
|
if (is_scalar($day)) {
|
||||||
|
if (!in_array($day, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $day));
|
||||||
|
}
|
||||||
|
$day = array_search($day, $valueSet);
|
||||||
|
} elseif (is_array($day)) {
|
||||||
|
$convertedValues = array();
|
||||||
|
foreach ($day as $value) {
|
||||||
|
if (!in_array($value, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $value));
|
||||||
|
}
|
||||||
|
$convertedValues []= array_search($value, $valueSet);
|
||||||
|
}
|
||||||
|
$day = $convertedValues;
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::DAY, $day, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the delivery_period column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByDeliveryPeriod('fooValue'); // WHERE delivery_period = 'fooValue'
|
||||||
|
* $query->filterByDeliveryPeriod('%fooValue%'); // WHERE delivery_period LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $deliveryPeriod The value to use as filter.
|
||||||
|
* Accepts wildcards (* and % trigger a LIKE)
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByDeliveryPeriod($deliveryPeriod = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($deliveryPeriod)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $deliveryPeriod)) {
|
||||||
|
$deliveryPeriod = str_replace('*', '%', $deliveryPeriod);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(DeliveryRoundTableMap::DELIVERY_PERIOD, $deliveryPeriod, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildDeliveryRound $deliveryRound Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildDeliveryRoundQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($deliveryRound = null)
|
||||||
|
{
|
||||||
|
if ($deliveryRound) {
|
||||||
|
$this->addUsingAlias(DeliveryRoundTableMap::ID, $deliveryRound->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the delivery_round table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
$con->beginTransaction();
|
||||||
|
$affectedRows += parent::doDeleteAll($con);
|
||||||
|
// Because this db requires some delete cascade/set null emulation, we have to
|
||||||
|
// clear the cached instance *after* the emulation has happened (since
|
||||||
|
// instances get re-added by the select statement contained therein).
|
||||||
|
DeliveryRoundTableMap::clearInstancePool();
|
||||||
|
DeliveryRoundTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildDeliveryRound or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildDeliveryRound object or primary key or array of primary keys
|
||||||
|
* which is used to create the DELETE statement
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public function delete(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
|
||||||
|
$affectedRows = 0; // initialize var to track total num of affected rows
|
||||||
|
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table or we could emulating ON DELETE CASCADE, etc.
|
||||||
|
$con->beginTransaction();
|
||||||
|
|
||||||
|
|
||||||
|
DeliveryRoundTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
DeliveryRoundTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // DeliveryRoundQuery
|
||||||
35
local/modules/DeliveryRound/Model/DeliveryRound.php
Normal file
35
local/modules/DeliveryRound/Model/DeliveryRound.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Model;
|
||||||
|
|
||||||
|
use DeliveryRound\Model\Base\DeliveryRound as BaseDeliveryRound;
|
||||||
|
use DeliveryRound\Model\Map\DeliveryRoundTableMap;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
|
||||||
|
class DeliveryRound extends BaseDeliveryRound
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set the value of [day] column.
|
||||||
|
*
|
||||||
|
* @param int $v new value
|
||||||
|
* @return \DeliveryRound\Model\DeliveryRound The current object (for fluent API support)
|
||||||
|
* @throws PropelException
|
||||||
|
*/
|
||||||
|
public function setDay($v)
|
||||||
|
{
|
||||||
|
if ($v !== null && !is_numeric($v)) {
|
||||||
|
$valueSet = DeliveryRoundTableMap::getValueSet(DeliveryRoundTableMap::DAY);
|
||||||
|
if (!in_array($v, $valueSet)) {
|
||||||
|
throw new PropelException(sprintf('Value "%s" is not accepted in this enumerated column', $v));
|
||||||
|
}
|
||||||
|
$v = array_search($v, $valueSet);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->day !== $v) {
|
||||||
|
$this->day = $v;
|
||||||
|
$this->modifiedColumns[DeliveryRoundTableMap::DAY] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
} // setDay()
|
||||||
|
}
|
||||||
21
local/modules/DeliveryRound/Model/DeliveryRoundQuery.php
Normal file
21
local/modules/DeliveryRound/Model/DeliveryRoundQuery.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Model;
|
||||||
|
|
||||||
|
use DeliveryRound\Model\Base\DeliveryRoundQuery as BaseDeliveryRoundQuery;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'delivery_round' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* You should add additional methods to this class to meet the
|
||||||
|
* application requirements. This class will only be generated as
|
||||||
|
* long as it does not already exist in the output directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class DeliveryRoundQuery extends BaseDeliveryRoundQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
} // DeliveryRoundQuery
|
||||||
494
local/modules/DeliveryRound/Model/Map/DeliveryRoundTableMap.php
Normal file
494
local/modules/DeliveryRound/Model/Map/DeliveryRoundTableMap.php
Normal file
@@ -0,0 +1,494 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace DeliveryRound\Model\Map;
|
||||||
|
|
||||||
|
use DeliveryRound\Model\DeliveryRound;
|
||||||
|
use DeliveryRound\Model\DeliveryRoundQuery;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\InstancePoolTrait;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\DataFetcher\DataFetcherInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Propel\Runtime\Map\RelationMap;
|
||||||
|
use Propel\Runtime\Map\TableMap;
|
||||||
|
use Propel\Runtime\Map\TableMapTrait;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class defines the structure of the 'delivery_round' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This map class is used by Propel to do runtime db structure discovery.
|
||||||
|
* For example, the createSelectSql() method checks the type of a given column used in an
|
||||||
|
* ORDER BY clause to know whether it needs to apply SQL to make the ORDER BY case-insensitive
|
||||||
|
* (i.e. if it's a text column type).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class DeliveryRoundTableMap extends TableMap
|
||||||
|
{
|
||||||
|
use InstancePoolTrait;
|
||||||
|
use TableMapTrait;
|
||||||
|
/**
|
||||||
|
* The (dot-path) name of this class
|
||||||
|
*/
|
||||||
|
const CLASS_NAME = 'DeliveryRound.Model.Map.DeliveryRoundTableMap';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default database name for this class
|
||||||
|
*/
|
||||||
|
const DATABASE_NAME = 'thelia';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table name for this class
|
||||||
|
*/
|
||||||
|
const TABLE_NAME = 'delivery_round';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The related Propel class for this table
|
||||||
|
*/
|
||||||
|
const OM_CLASS = '\\DeliveryRound\\Model\\DeliveryRound';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that can be returned by this tableMap
|
||||||
|
*/
|
||||||
|
const CLASS_DEFAULT = 'DeliveryRound.Model.DeliveryRound';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The total number of columns
|
||||||
|
*/
|
||||||
|
const NUM_COLUMNS = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of lazy-loaded columns
|
||||||
|
*/
|
||||||
|
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
|
||||||
|
*/
|
||||||
|
const NUM_HYDRATE_COLUMNS = 6;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ID field
|
||||||
|
*/
|
||||||
|
const ID = 'delivery_round.ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ZIP_CODE field
|
||||||
|
*/
|
||||||
|
const ZIP_CODE = 'delivery_round.ZIP_CODE';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the CITY field
|
||||||
|
*/
|
||||||
|
const CITY = 'delivery_round.CITY';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ADDRESS field
|
||||||
|
*/
|
||||||
|
const ADDRESS = 'delivery_round.ADDRESS';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the DAY field
|
||||||
|
*/
|
||||||
|
const DAY = 'delivery_round.DAY';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the DELIVERY_PERIOD field
|
||||||
|
*/
|
||||||
|
const DELIVERY_PERIOD = 'delivery_round.DELIVERY_PERIOD';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default string format for model objects of the related table
|
||||||
|
*/
|
||||||
|
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||||
|
|
||||||
|
/** The enumerated values for the DAY field */
|
||||||
|
const DAY_MONDAY = 'monday';
|
||||||
|
const DAY_TUESDAY = 'tuesday';
|
||||||
|
const DAY_WEDNESDAY = 'wednesday';
|
||||||
|
const DAY_THURSDAY = 'thursday';
|
||||||
|
const DAY_FRIDAY = 'friday';
|
||||||
|
const DAY_SATURDAY = 'saturday';
|
||||||
|
const DAY_SUNDAY = 'sunday';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of fieldnames
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||||
|
*/
|
||||||
|
protected static $fieldNames = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id', 'ZipCode', 'City', 'Address', 'Day', 'DeliveryPeriod', ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id', 'zipCode', 'city', 'address', 'day', 'deliveryPeriod', ),
|
||||||
|
self::TYPE_COLNAME => array(DeliveryRoundTableMap::ID, DeliveryRoundTableMap::ZIP_CODE, DeliveryRoundTableMap::CITY, DeliveryRoundTableMap::ADDRESS, DeliveryRoundTableMap::DAY, DeliveryRoundTableMap::DELIVERY_PERIOD, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID', 'ZIP_CODE', 'CITY', 'ADDRESS', 'DAY', 'DELIVERY_PERIOD', ),
|
||||||
|
self::TYPE_FIELDNAME => array('id', 'zip_code', 'city', 'address', 'day', 'delivery_period', ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* holds an array of keys for quick access to the fieldnames array
|
||||||
|
*
|
||||||
|
* first dimension keys are the type constants
|
||||||
|
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
|
||||||
|
*/
|
||||||
|
protected static $fieldKeys = array (
|
||||||
|
self::TYPE_PHPNAME => array('Id' => 0, 'ZipCode' => 1, 'City' => 2, 'Address' => 3, 'Day' => 4, 'DeliveryPeriod' => 5, ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'zipCode' => 1, 'city' => 2, 'address' => 3, 'day' => 4, 'deliveryPeriod' => 5, ),
|
||||||
|
self::TYPE_COLNAME => array(DeliveryRoundTableMap::ID => 0, DeliveryRoundTableMap::ZIP_CODE => 1, DeliveryRoundTableMap::CITY => 2, DeliveryRoundTableMap::ADDRESS => 3, DeliveryRoundTableMap::DAY => 4, DeliveryRoundTableMap::DELIVERY_PERIOD => 5, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ZIP_CODE' => 1, 'CITY' => 2, 'ADDRESS' => 3, 'DAY' => 4, 'DELIVERY_PERIOD' => 5, ),
|
||||||
|
self::TYPE_FIELDNAME => array('id' => 0, 'zip_code' => 1, 'city' => 2, 'address' => 3, 'day' => 4, 'delivery_period' => 5, ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/** The enumerated values for this table */
|
||||||
|
protected static $enumValueSets = array(
|
||||||
|
DeliveryRoundTableMap::DAY => array(
|
||||||
|
self::DAY_MONDAY,
|
||||||
|
self::DAY_TUESDAY,
|
||||||
|
self::DAY_WEDNESDAY,
|
||||||
|
self::DAY_THURSDAY,
|
||||||
|
self::DAY_FRIDAY,
|
||||||
|
self::DAY_SATURDAY,
|
||||||
|
self::DAY_SUNDAY,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of values for all ENUM columns
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public static function getValueSets()
|
||||||
|
{
|
||||||
|
return static::$enumValueSets;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of values for an ENUM column
|
||||||
|
* @param string $colname
|
||||||
|
* @return array list of possible values for the column
|
||||||
|
*/
|
||||||
|
public static function getValueSet($colname)
|
||||||
|
{
|
||||||
|
$valueSets = self::getValueSets();
|
||||||
|
|
||||||
|
return $valueSets[$colname];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the table attributes and columns
|
||||||
|
* Relations are not initialized by this method since they are lazy loaded
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws PropelException
|
||||||
|
*/
|
||||||
|
public function initialize()
|
||||||
|
{
|
||||||
|
// attributes
|
||||||
|
$this->setName('delivery_round');
|
||||||
|
$this->setPhpName('DeliveryRound');
|
||||||
|
$this->setClassName('\\DeliveryRound\\Model\\DeliveryRound');
|
||||||
|
$this->setPackage('DeliveryRound.Model');
|
||||||
|
$this->setUseIdGenerator(true);
|
||||||
|
// columns
|
||||||
|
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||||
|
$this->addColumn('ZIP_CODE', 'ZipCode', 'VARCHAR', true, 20, null);
|
||||||
|
$this->addColumn('CITY', 'City', 'VARCHAR', true, 255, null);
|
||||||
|
$this->addColumn('ADDRESS', 'Address', 'LONGVARCHAR', false, null, null);
|
||||||
|
$this->addColumn('DAY', 'Day', 'ENUM', true, null, null);
|
||||||
|
$this->getColumn('DAY', false)->setValueSet(array (
|
||||||
|
0 => 'monday',
|
||||||
|
1 => 'tuesday',
|
||||||
|
2 => 'wednesday',
|
||||||
|
3 => 'thursday',
|
||||||
|
4 => 'friday',
|
||||||
|
5 => 'saturday',
|
||||||
|
6 => 'sunday',
|
||||||
|
));
|
||||||
|
$this->addColumn('DELIVERY_PERIOD', 'DeliveryPeriod', 'LONGVARCHAR', false, null, null);
|
||||||
|
} // initialize()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the RelationMap objects for this table relationships
|
||||||
|
*/
|
||||||
|
public function buildRelations()
|
||||||
|
{
|
||||||
|
} // buildRelations()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a string version of the primary key from the DB resultset row that can be used to uniquely identify a row in this table.
|
||||||
|
*
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, a serialize()d version of the primary key will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyHashFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
// If the PK cannot be derived from the row, return NULL.
|
||||||
|
if ($row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)] === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (string) $row[TableMap::TYPE_NUM == $indexType ? 0 + $offset : static::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the primary key from the DB resultset row
|
||||||
|
* For tables with a single-column primary key, that simple pkey value will be returned. For tables with
|
||||||
|
* a multi-column primary key, an array of the primary key columns will be returned.
|
||||||
|
*
|
||||||
|
* @param array $row resultset row.
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM
|
||||||
|
*
|
||||||
|
* @return mixed The primary key of the row
|
||||||
|
*/
|
||||||
|
public static function getPrimaryKeyFromRow($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
|
||||||
|
return (int) $row[
|
||||||
|
$indexType == TableMap::TYPE_NUM
|
||||||
|
? 0 + $offset
|
||||||
|
: self::translateFieldName('Id', TableMap::TYPE_PHPNAME, $indexType)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The class that the tableMap will make instances of.
|
||||||
|
*
|
||||||
|
* If $withPrefix is true, the returned path
|
||||||
|
* uses a dot-path notation which is translated into a path
|
||||||
|
* relative to a location on the PHP include_path.
|
||||||
|
* (e.g. path.to.MyClass -> 'path/to/MyClass.php')
|
||||||
|
*
|
||||||
|
* @param boolean $withPrefix Whether or not to return the path with the class name
|
||||||
|
* @return string path.to.ClassName
|
||||||
|
*/
|
||||||
|
public static function getOMClass($withPrefix = true)
|
||||||
|
{
|
||||||
|
return $withPrefix ? DeliveryRoundTableMap::CLASS_DEFAULT : DeliveryRoundTableMap::OM_CLASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Populates an object of the default type or an object that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param array $row row returned by DataFetcher->fetch().
|
||||||
|
* @param int $offset The 0-based offset for reading from the resultset row.
|
||||||
|
* @param string $indexType The index type of $row. Mostly DataFetcher->getIndexType().
|
||||||
|
One of the class type constants TableMap::TYPE_PHPNAME, TableMap::TYPE_STUDLYPHPNAME
|
||||||
|
* TableMap::TYPE_COLNAME, TableMap::TYPE_FIELDNAME, TableMap::TYPE_NUM.
|
||||||
|
*
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
* @return array (DeliveryRound object, last column rank)
|
||||||
|
*/
|
||||||
|
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
$key = DeliveryRoundTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||||
|
if (null !== ($obj = DeliveryRoundTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, $offset, true); // rehydrate
|
||||||
|
$col = $offset + DeliveryRoundTableMap::NUM_HYDRATE_COLUMNS;
|
||||||
|
} else {
|
||||||
|
$cls = DeliveryRoundTableMap::OM_CLASS;
|
||||||
|
$obj = new $cls();
|
||||||
|
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||||
|
DeliveryRoundTableMap::addInstanceToPool($obj, $key);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array($obj, $col);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The returned array will contain objects of the default type or
|
||||||
|
* objects that inherit from the default.
|
||||||
|
*
|
||||||
|
* @param DataFetcherInterface $dataFetcher
|
||||||
|
* @return array
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function populateObjects(DataFetcherInterface $dataFetcher)
|
||||||
|
{
|
||||||
|
$results = array();
|
||||||
|
|
||||||
|
// set the class once to avoid overhead in the loop
|
||||||
|
$cls = static::getOMClass(false);
|
||||||
|
// populate the object(s)
|
||||||
|
while ($row = $dataFetcher->fetch()) {
|
||||||
|
$key = DeliveryRoundTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||||
|
if (null !== ($obj = DeliveryRoundTableMap::getInstanceFromPool($key))) {
|
||||||
|
// We no longer rehydrate the object, since this can cause data loss.
|
||||||
|
// See http://www.propelorm.org/ticket/509
|
||||||
|
// $obj->hydrate($row, 0, true); // rehydrate
|
||||||
|
$results[] = $obj;
|
||||||
|
} else {
|
||||||
|
$obj = new $cls();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
$results[] = $obj;
|
||||||
|
DeliveryRoundTableMap::addInstanceToPool($obj, $key);
|
||||||
|
} // if key exists
|
||||||
|
}
|
||||||
|
|
||||||
|
return $results;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Add all the columns needed to create a new object.
|
||||||
|
*
|
||||||
|
* Note: any columns that were marked with lazyLoad="true" in the
|
||||||
|
* XML schema will not be added to the select list and only loaded
|
||||||
|
* on demand.
|
||||||
|
*
|
||||||
|
* @param Criteria $criteria object containing the columns to add.
|
||||||
|
* @param string $alias optional table alias
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function addSelectColumns(Criteria $criteria, $alias = null)
|
||||||
|
{
|
||||||
|
if (null === $alias) {
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::ID);
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::ZIP_CODE);
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::CITY);
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::ADDRESS);
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::DAY);
|
||||||
|
$criteria->addSelectColumn(DeliveryRoundTableMap::DELIVERY_PERIOD);
|
||||||
|
} else {
|
||||||
|
$criteria->addSelectColumn($alias . '.ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.ZIP_CODE');
|
||||||
|
$criteria->addSelectColumn($alias . '.CITY');
|
||||||
|
$criteria->addSelectColumn($alias . '.ADDRESS');
|
||||||
|
$criteria->addSelectColumn($alias . '.DAY');
|
||||||
|
$criteria->addSelectColumn($alias . '.DELIVERY_PERIOD');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the TableMap related to this object.
|
||||||
|
* This method is not needed for general use but a specific application could have a need.
|
||||||
|
* @return TableMap
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function getTableMap()
|
||||||
|
{
|
||||||
|
return Propel::getServiceContainer()->getDatabaseMap(DeliveryRoundTableMap::DATABASE_NAME)->getTable(DeliveryRoundTableMap::TABLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a TableMap instance to the database for this tableMap class.
|
||||||
|
*/
|
||||||
|
public static function buildTableMap()
|
||||||
|
{
|
||||||
|
$dbMap = Propel::getServiceContainer()->getDatabaseMap(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
if (!$dbMap->hasTable(DeliveryRoundTableMap::TABLE_NAME)) {
|
||||||
|
$dbMap->addTableObject(new DeliveryRoundTableMap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a DeliveryRound or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or DeliveryRound object or primary key or array of primary keys
|
||||||
|
* which is used to create the DELETE statement
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver). This includes CASCADE-related rows
|
||||||
|
* if supported by native driver or if emulated using Propel.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doDelete($values, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) {
|
||||||
|
// rename for clarity
|
||||||
|
$criteria = $values;
|
||||||
|
} elseif ($values instanceof \DeliveryRound\Model\DeliveryRound) { // it's a model object
|
||||||
|
// create criteria based on pk values
|
||||||
|
$criteria = $values->buildPkeyCriteria();
|
||||||
|
} else { // it's a primary key, or an array of pks
|
||||||
|
$criteria = new Criteria(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
$criteria->add(DeliveryRoundTableMap::ID, (array) $values, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = DeliveryRoundQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) { DeliveryRoundTableMap::clearInstancePool();
|
||||||
|
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||||
|
foreach ((array) $values as $singleval) { DeliveryRoundTableMap::removeInstanceFromPool($singleval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query->delete($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the delivery_round table.
|
||||||
|
*
|
||||||
|
* @param ConnectionInterface $con the connection to use
|
||||||
|
* @return int The number of affected rows (if supported by underlying database driver).
|
||||||
|
*/
|
||||||
|
public static function doDeleteAll(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
return DeliveryRoundQuery::create()->doDeleteAll($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs an INSERT on the database, given a DeliveryRound or Criteria object.
|
||||||
|
*
|
||||||
|
* @param mixed $criteria Criteria or DeliveryRound object containing data that is used to create the INSERT statement.
|
||||||
|
* @param ConnectionInterface $con the ConnectionInterface connection to use
|
||||||
|
* @return mixed The new primary key.
|
||||||
|
* @throws PropelException Any exceptions caught during processing will be
|
||||||
|
* rethrown wrapped into a PropelException.
|
||||||
|
*/
|
||||||
|
public static function doInsert($criteria, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
if (null === $con) {
|
||||||
|
$con = Propel::getServiceContainer()->getWriteConnection(DeliveryRoundTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$criteria = clone $criteria; // rename for clarity
|
||||||
|
} else {
|
||||||
|
$criteria = $criteria->buildCriteria(); // build Criteria from DeliveryRound object
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria->containsKey(DeliveryRoundTableMap::ID) && $criteria->keyContainsValue(DeliveryRoundTableMap::ID) ) {
|
||||||
|
throw new PropelException('Cannot insert a value for auto-increment primary key ('.DeliveryRoundTableMap::ID.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$query = DeliveryRoundQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// use transaction because $criteria could contain info
|
||||||
|
// for more than one table (I guess, conceivably)
|
||||||
|
$con->beginTransaction();
|
||||||
|
$pk = $query->doInsert($con);
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $pk;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // DeliveryRoundTableMap
|
||||||
|
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||||
|
//
|
||||||
|
DeliveryRoundTableMap::buildTableMap();
|
||||||
64
local/modules/DeliveryRound/Readme.md
Normal file
64
local/modules/DeliveryRound/Readme.md
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
# Delivery Round
|
||||||
|
|
||||||
|
Handle rounds to inform customer you will be present into a given city to dispatch orders.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Manually
|
||||||
|
|
||||||
|
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the module is DeliveryRound.
|
||||||
|
* Activate it in your thelia administration panel
|
||||||
|
|
||||||
|
### Composer
|
||||||
|
|
||||||
|
Add it in your main thelia composer.json file
|
||||||
|
|
||||||
|
```
|
||||||
|
composer require thelia/delivery-round-module:~1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
In the module configuration page, add information about the price of this delivery method and about where and when you'll be dispatching orders:
|
||||||
|
- zip code *
|
||||||
|
- city *
|
||||||
|
- address
|
||||||
|
- day *
|
||||||
|
- period
|
||||||
|
|
||||||
|
You can use the *address* input to inform your customers where you will be dispatching their orders, or leave it blank if you deliver at home.
|
||||||
|
|
||||||
|
To display a message about your round or the time you need to prepare an order for example, use the description in the module edition.
|
||||||
|
|
||||||
|
This delivery method will be proposed to customer who have at least one address with the same zipcode as one of the ones you entered in the configuration.
|
||||||
|
|
||||||
|
## Loop
|
||||||
|
|
||||||
|
[deliveryround]
|
||||||
|
|
||||||
|
### Input arguments
|
||||||
|
|
||||||
|
|Argument |Description |
|
||||||
|
|--- |--- |
|
||||||
|
|**id** | ID of a specific delivery round entry |
|
||||||
|
|**zipcode** | Used to sort delivery round entries by zipcode |
|
||||||
|
|**day** | Used to sort delivery round entries by day. Values: *monday*, *tuesday*, *wednesday*, *thursday*, *friday*, *saturday*, *sunday*. |
|
||||||
|
|
||||||
|
### Output arguments
|
||||||
|
|
||||||
|
|Variable |Description |
|
||||||
|
|--- |--- |
|
||||||
|
|$ID | ID of the returned delivery round entry |
|
||||||
|
|$ZIPCODE | Zipcode |
|
||||||
|
|$CITY | City |
|
||||||
|
|$ADDRESS | Address from where you dispatch your orders |
|
||||||
|
|$DAY | Day of the week |
|
||||||
|
|$DELIVERY_PERIOD | Period during which one you'll be dispatching orders |
|
||||||
|
|
||||||
|
### Exemple
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
{loop type='deliveryround' name='deliveryround-loop'}
|
||||||
|
<li>{$DAY|date_format:"%A"} : {$ZIPCODE} {$CITY}{if $ADDRESS}, {$ADDRESS}{/if}{if $DELIVERY_PERIOD}, {$DELIVERY_PERIOD}{/if}</li>
|
||||||
|
{/loop}
|
||||||
|
</ul>
|
||||||
11
local/modules/DeliveryRound/composer.json
Normal file
11
local/modules/DeliveryRound/composer.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "thelia/delivery-round-module",
|
||||||
|
"license": "LGPL-3.0+",
|
||||||
|
"type": "thelia-module",
|
||||||
|
"require": {
|
||||||
|
"thelia/installer": "~1.1"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"installer-name": "DeliveryRound"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,234 @@
|
|||||||
|
{assign "order" value=$smarty.get.order|default:'day'}
|
||||||
|
<div class="general-block-decorator">
|
||||||
|
<div class="title title-without-tabs">
|
||||||
|
{intl l="configure delivery round price" d='deliveryround.bo.default'}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{form name='deliveryround_config_form'}
|
||||||
|
<form action="{url path='/admin/module/DeliveryRound/config'}" method="post" class="form-inline">
|
||||||
|
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{if $form_error}
|
||||||
|
<div class="alert alert-danger">{$form_error_message}</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{form_field form=$form field="price"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}" value="{$value}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<button class="btn btn-info"
|
||||||
|
type="submit">{intl l='Save' d='deliveryround.bo.default'}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{/form}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="general-block-decorator">
|
||||||
|
<div class="title title-without-tabs">
|
||||||
|
{intl l="configure delivery rounds" d='deliveryround.bo.default'}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{form name='deliveryround_form'}
|
||||||
|
<form action="{url path='/admin/module/DeliveryRound/addLocation'}" method="post">
|
||||||
|
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{if $form_error}
|
||||||
|
<div class="alert alert-danger">{$form_error_message}</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-md-1">
|
||||||
|
{form_field form=$form field="zipcode"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
{form_field form=$form field="city"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-3">
|
||||||
|
{form_field form=$form field="address"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
{form_field form=$form field="day"}
|
||||||
|
<div class="form-group {if $error}has-error{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
{form_error form=$form field="day"}
|
||||||
|
<br/>
|
||||||
|
<span class="error">{$message}</span>
|
||||||
|
{/form_error}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select id="{$label_attr.for}" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} >
|
||||||
|
{foreach $choices as $choice}
|
||||||
|
<option value="{$choice->value}">{$choice->label|date_format:"%A"}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-2">
|
||||||
|
{form_field form=$form field="delivery_period"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} placeholder="{$label_attr.placeholder}"/>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-1">
|
||||||
|
<label class="control-label"></label>
|
||||||
|
<button class="btn btn-info form-control"
|
||||||
|
type="submit">{intl l='Save' d='deliveryround.bo.default'}</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{/form}
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<table id="delivery-round-table" class="table table-striped">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{admin_sortable_header
|
||||||
|
current_order=$order
|
||||||
|
order='zipcode'
|
||||||
|
reverse_order='zipcode-reverse'
|
||||||
|
path={url path='/admin/module/DeliveryRound/config' target='delivery-round-table'}
|
||||||
|
label="{intl l='Zipcode' d='deliveryround.bo.default'}"
|
||||||
|
}
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
{admin_sortable_header
|
||||||
|
current_order=$order
|
||||||
|
order='city'
|
||||||
|
reverse_order='city-reverse'
|
||||||
|
path={url path='/admin/module/DeliveryRound/config' target='delivery-round-table'}
|
||||||
|
label="{intl l='City' d='deliveryround.bo.default'}"
|
||||||
|
}
|
||||||
|
</th>
|
||||||
|
<th>{intl l='Address' d='deliveryround.bo.default'}</th>
|
||||||
|
<th>
|
||||||
|
{admin_sortable_header
|
||||||
|
current_order=$order
|
||||||
|
order='day'
|
||||||
|
reverse_order='day-reverse'
|
||||||
|
path={url path='/admin/module/DeliveryRound/config' target='delivery-round-table'}
|
||||||
|
label="{intl l='Day' d='deliveryround.bo.default'}"
|
||||||
|
}
|
||||||
|
</th>
|
||||||
|
<th>{intl l='Delivery period' d='deliveryround.bo.default'}</th>
|
||||||
|
<th>{intl l='Remove' d='deliveryround.bo.default'}</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{loop type='deliveryround' name='deliveryround-loop' order=$order}
|
||||||
|
<tr>
|
||||||
|
<td>{$ZIPCODE}</td>
|
||||||
|
<td>{$CITY}</td>
|
||||||
|
<td>{$ADDRESS}</td>
|
||||||
|
<td>{$DAY|date_format:"%A"}</td>
|
||||||
|
<td>{$DELIVERY_PERIOD}</td>
|
||||||
|
<td>
|
||||||
|
{loop name="auth-edit" type="auth" role="ADMIN" access="UPDATE" module="Dealer"}
|
||||||
|
<a class="btn btn-default btn-xs update-delivery-round" title="{intl l='Update'}" href="#"
|
||||||
|
data-target="#deliveryround-update" data-toggle="modal"
|
||||||
|
data-id="{$ID}"
|
||||||
|
data-zipcode="{$ZIPCODE}"
|
||||||
|
data-city="{$CITY}"
|
||||||
|
data-address="{$ADDRESS}"
|
||||||
|
data-day="{$DAY|date_format:"%A"}"
|
||||||
|
data-period="{$DELIVERY_PERIOD}"
|
||||||
|
>
|
||||||
|
<i class="glyphicon glyphicon-edit"></i>
|
||||||
|
</a>
|
||||||
|
{/loop}
|
||||||
|
{form name='deliveryround_delete_form'}
|
||||||
|
<form action="{url path='/admin/module/DeliveryRound/delete'}" method="post">
|
||||||
|
|
||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{form_field form=$form field="id"}
|
||||||
|
<input type="hidden" name="{$name}" value="{$ID}" {if $required}required{/if} />
|
||||||
|
{/form_field}
|
||||||
|
|
||||||
|
<button class="btn btn-default" type="submit">
|
||||||
|
<span class="glyphicon glyphicon-trash"></span>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
{/form}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/loop}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{form name="deliveryround_update_form"}
|
||||||
|
{capture "deliveryround_update"}
|
||||||
|
{include file="form/delivery-round-update-form.html" form=$form}
|
||||||
|
{/capture}
|
||||||
|
|
||||||
|
{include file="includes/generic-create-dialog.html"
|
||||||
|
dialog_id = "deliveryround-update"
|
||||||
|
dialog_title = {intl l="Update"}
|
||||||
|
dialog_body = {$smarty.capture.deliveryround_update nofilter}
|
||||||
|
dialog_ok_label = {intl l="Create"}
|
||||||
|
dialog_cancel_label = {intl l="Cancel"}
|
||||||
|
|
||||||
|
form_action = {url path="/admin/module/DeliveryRound/update"}
|
||||||
|
form_enctype = {form_enctype form=$form}
|
||||||
|
}
|
||||||
|
{/form}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
{form_hidden_fields form=$form}
|
||||||
|
|
||||||
|
{if $form_error}
|
||||||
|
<div class="alert alert-danger">{$form_error_message}</div>
|
||||||
|
{/if}
|
||||||
|
{form_field form=$form field="id"}
|
||||||
|
<input type="hidden" id="{$label_attr.for}" name="{$name}"/>
|
||||||
|
{/form_field}
|
||||||
|
{form_field form=$form field="zipcode"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}-update">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}-update" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} value="{$value}"/>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
{form_field form=$form field="city"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}-update">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}-update" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
{form_field form=$form field="address"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}-update">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}-update" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} />
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
{form_field form=$form field="day"}
|
||||||
|
<div class="form-group {if $error}has-error{/if}">
|
||||||
|
<label class="control-label" for="{$label_attr.for}-update">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
{form_error form=$form field="day"}
|
||||||
|
<br/>
|
||||||
|
<span class="error">{$message}</span>
|
||||||
|
{/form_error}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<select id="{$label_attr.for}-update" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} >
|
||||||
|
{foreach $choices as $choice}
|
||||||
|
<option value="{$choice->value}">{$choice->label|date_format:"%A"}</option>
|
||||||
|
{/foreach}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
|
{form_field form=$form field="delivery_period"}
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="control-label" for="{$label_attr.for}-update">
|
||||||
|
{$label} {if $required}*{/if}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<input type="text" id="{$label_attr.for}-update" class="form-control" name="{$name}"
|
||||||
|
{if $required}required{/if} placeholder="{$label_attr.placeholder}"/>
|
||||||
|
</div>
|
||||||
|
{/form_field}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$(".update-delivery-round").on('click', function () {
|
||||||
|
var $this = $(this);
|
||||||
|
$('#delivery-round-id').val($this.data('id'));
|
||||||
|
$('#delivery-round-zipcode-update').val($this.data('zipcode'));
|
||||||
|
$('#delivery-round-city-update').val($this.data('city'));
|
||||||
|
$('#delivery-round-address-update').val($this.data('address'));
|
||||||
|
$('#delivery-round-delivery_period-update').val($this.data('period'));
|
||||||
|
$('#delivery-round-day-update').find('option').each(function () {
|
||||||
|
var option = $(this);
|
||||||
|
if (option.html() == $this.data('day')) {
|
||||||
|
option.prop('selected', true);
|
||||||
|
} else {
|
||||||
|
option.prop('selected', false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<ul>
|
||||||
|
{loop type='deliveryround' name='deliveryround-loop'}
|
||||||
|
<li>{$DAY|date_format:"%A"} : {$ZIPCODE} {$CITY}{if $ADDRESS}, {$ADDRESS}{/if}{if $DELIVERY_PERIOD}, {$DELIVERY_PERIOD}{/if}</li>
|
||||||
|
{/loop}
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
99
local/modules/LivraisonParSecteurs/Config/thelia.sql
Normal file
99
local/modules/LivraisonParSecteurs/Config/thelia.sql
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
# This is a fix for InnoDB in MySQL >= 4.1.x
|
||||||
|
# It "suspends judgement" for fkey relationships until are tables are set.
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- secteur
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
DROP TABLE IF EXISTS `lps_secteur`;
|
||||||
|
|
||||||
|
CREATE TABLE `lps_secteur`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`nom` VARCHAR(50) NOT NULL
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- secteur_commune
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
DROP TABLE IF EXISTS `lps_secteur_commune`;
|
||||||
|
|
||||||
|
CREATE TABLE `lps_secteur_commune`
|
||||||
|
(
|
||||||
|
`id_secteur` INTEGER NOT NULL,
|
||||||
|
`zipcode` VARCHAR(10) NOT NULL
|
||||||
|
PRIMARY KEY (`id_secteur`,`zipcode`)
|
||||||
|
CONSTRAINT `fk_id_secteur`
|
||||||
|
FOREIGN KEY (`id_secteur`)
|
||||||
|
REFERENCES `lps_secteur` (`id`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE CASCADE,
|
||||||
|
CONSTRAINT `fk_zipcode`
|
||||||
|
FOREIGN KEY (`zipcode`)
|
||||||
|
REFERENCES `address` (`zipcode`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- secteur_horaires
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
DROP TABLE IF EXISTS `lps_secteur_horaires`;
|
||||||
|
|
||||||
|
CREATE TABLE `lps_secteur_horaires`
|
||||||
|
(
|
||||||
|
`id_secteur` INTEGER NOT NULL,
|
||||||
|
`jour` TINYINT NOT NULL,
|
||||||
|
`heure_debut` TIME NOT NULL,
|
||||||
|
`heure_fin` TIME NOT NULL
|
||||||
|
PRIMARY KEY (`id_secteur`,`jour`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- Insertion des données
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
INSERT INTO `secteur`(`id`,`nom`) VALUES
|
||||||
|
(1, 'Capso'),
|
||||||
|
(2, 'Pays de Lumbres'),
|
||||||
|
(3, 'Haut des Flanders'),
|
||||||
|
(4, 'Flandres intérieur')
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO `secteur_commune`(`id_secteur`,`zipcode`) VALUES
|
||||||
|
(1,'62120'),
|
||||||
|
(1,'62129'),
|
||||||
|
(1,'62219'),
|
||||||
|
(1,'62500'),
|
||||||
|
(1,'62510'),
|
||||||
|
(1,'62570'),
|
||||||
|
(1,'62575'),
|
||||||
|
(1,'62910'),
|
||||||
|
(2,'62010'),
|
||||||
|
(2,'62024'),
|
||||||
|
(2,'62088'),
|
||||||
|
(2,'62229'),
|
||||||
|
(2,'62292'),
|
||||||
|
(2,'62309'),
|
||||||
|
(2,'62504'),
|
||||||
|
(2,'62534'),
|
||||||
|
(2,'62613'),
|
||||||
|
(2,'62656'),
|
||||||
|
(2,'62674'),
|
||||||
|
(2,'62702'),
|
||||||
|
(2,'62788'),
|
||||||
|
(2,'62794'),
|
||||||
|
(2,'62803'),
|
||||||
|
(2,'62882'),
|
||||||
|
(2,'62897'),
|
||||||
|
(2,'62898'),
|
||||||
|
(2,'62905')
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -4,7 +4,12 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
|
||||||
|
|
||||||
<services>
|
<loops>
|
||||||
</services>
|
</loops>
|
||||||
|
|
||||||
|
<forms>
|
||||||
|
</forms>
|
||||||
|
|
||||||
|
<commands>
|
||||||
|
</commands>
|
||||||
</config>
|
</config>
|
||||||
|
|||||||
Reference in New Issue
Block a user