Ajout des modules ColissimoWs et ColissimoLabel.php
Ne pas oublier de vérifier si les tables nécessaires sont bien créées en BDD.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,3 +4,4 @@
|
|||||||
/.idea/
|
/.idea/
|
||||||
/web/revslider/application/config/config.php
|
/web/revslider/application/config/config.php
|
||||||
/templates/email/default.zip
|
/templates/email/default.zip
|
||||||
|
/core/vendor/wsdltophp.zip
|
||||||
|
|||||||
@@ -62,7 +62,9 @@
|
|||||||
"ramsey/array_column": "~1.1",
|
"ramsey/array_column": "~1.1",
|
||||||
"propel/propel": "dev-thelia-2.3",
|
"propel/propel": "dev-thelia-2.3",
|
||||||
"commerceguys/addressing": "0.8.*",
|
"commerceguys/addressing": "0.8.*",
|
||||||
"symfony/cache": "~3.1.0"
|
"symfony/cache": "~3.1.0",
|
||||||
|
"thelia/colissimows-module": "^1.1",
|
||||||
|
"thelia/colissimo-label-module": "~0.3.2"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fzaninotto/faker": "1.5.*",
|
"fzaninotto/faker": "1.5.*",
|
||||||
|
|||||||
540
composer.lock
generated
540
composer.lock
generated
File diff suppressed because it is too large
Load Diff
2
core/vendor/autoload.php
vendored
2
core/vendor/autoload.php
vendored
@@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
// autoload.php @generated by Composer
|
// autoload.php @generated by Composer
|
||||||
|
|
||||||
require_once __DIR__ . '/composer' . '/autoload_real.php';
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
return ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5::getLoader();
|
return ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5::getLoader();
|
||||||
|
|||||||
60
core/vendor/composer/ClassLoader.php
vendored
60
core/vendor/composer/ClassLoader.php
vendored
@@ -53,8 +53,9 @@ class ClassLoader
|
|||||||
|
|
||||||
private $useIncludePath = false;
|
private $useIncludePath = false;
|
||||||
private $classMap = array();
|
private $classMap = array();
|
||||||
|
|
||||||
private $classMapAuthoritative = false;
|
private $classMapAuthoritative = false;
|
||||||
|
private $missingClasses = array();
|
||||||
|
private $apcuPrefix;
|
||||||
|
|
||||||
public function getPrefixes()
|
public function getPrefixes()
|
||||||
{
|
{
|
||||||
@@ -271,6 +272,26 @@ class ClassLoader
|
|||||||
return $this->classMapAuthoritative;
|
return $this->classMapAuthoritative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
|
||||||
|
*
|
||||||
|
* @param string|null $apcuPrefix
|
||||||
|
*/
|
||||||
|
public function setApcuPrefix($apcuPrefix)
|
||||||
|
{
|
||||||
|
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The APCu prefix in use, or null if APCu caching is not enabled.
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
public function getApcuPrefix()
|
||||||
|
{
|
||||||
|
return $this->apcuPrefix;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers this instance as an autoloader.
|
* Registers this instance as an autoloader.
|
||||||
*
|
*
|
||||||
@@ -313,29 +334,34 @@ class ClassLoader
|
|||||||
*/
|
*/
|
||||||
public function findFile($class)
|
public function findFile($class)
|
||||||
{
|
{
|
||||||
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
|
|
||||||
if ('\\' == $class[0]) {
|
|
||||||
$class = substr($class, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// class map lookup
|
// class map lookup
|
||||||
if (isset($this->classMap[$class])) {
|
if (isset($this->classMap[$class])) {
|
||||||
return $this->classMap[$class];
|
return $this->classMap[$class];
|
||||||
}
|
}
|
||||||
if ($this->classMapAuthoritative) {
|
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (null !== $this->apcuPrefix) {
|
||||||
|
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
|
||||||
|
if ($hit) {
|
||||||
|
return $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$file = $this->findFileWithExtension($class, '.php');
|
$file = $this->findFileWithExtension($class, '.php');
|
||||||
|
|
||||||
// Search for Hack files if we are running on HHVM
|
// Search for Hack files if we are running on HHVM
|
||||||
if ($file === null && defined('HHVM_VERSION')) {
|
if (false === $file && defined('HHVM_VERSION')) {
|
||||||
$file = $this->findFileWithExtension($class, '.hh');
|
$file = $this->findFileWithExtension($class, '.hh');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($file === null) {
|
if (null !== $this->apcuPrefix) {
|
||||||
|
apcu_add($this->apcuPrefix.$class, $file);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (false === $file) {
|
||||||
// Remember that this class does not exist.
|
// Remember that this class does not exist.
|
||||||
return $this->classMap[$class] = false;
|
$this->missingClasses[$class] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $file;
|
return $file;
|
||||||
@@ -348,10 +374,14 @@ class ClassLoader
|
|||||||
|
|
||||||
$first = $class[0];
|
$first = $class[0];
|
||||||
if (isset($this->prefixLengthsPsr4[$first])) {
|
if (isset($this->prefixLengthsPsr4[$first])) {
|
||||||
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
|
$subPath = $class;
|
||||||
if (0 === strpos($class, $prefix)) {
|
while (false !== $lastPos = strrpos($subPath, '\\')) {
|
||||||
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
|
$subPath = substr($subPath, 0, $lastPos);
|
||||||
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
|
$search = $subPath . '\\';
|
||||||
|
if (isset($this->prefixDirsPsr4[$search])) {
|
||||||
|
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
|
||||||
|
foreach ($this->prefixDirsPsr4[$search] as $dir) {
|
||||||
|
if (file_exists($file = $dir . $pathEnd)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -399,6 +429,8 @@ class ClassLoader
|
|||||||
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
|
||||||
return $file;
|
return $file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
2
core/vendor/composer/LICENSE
vendored
2
core/vendor/composer/LICENSE
vendored
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
Copyright (c) 2016 Nils Adermann, Jordi Boggiano
|
Copyright (c) Nils Adermann, Jordi Boggiano
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
4595
core/vendor/composer/autoload_classmap.php
vendored
4595
core/vendor/composer/autoload_classmap.php
vendored
File diff suppressed because it is too large
Load Diff
2
core/vendor/composer/autoload_files.php
vendored
2
core/vendor/composer/autoload_files.php
vendored
@@ -10,8 +10,8 @@ return array(
|
|||||||
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
|
||||||
'e40631d46120a9c38ea139981f8dab26' => $vendorDir . '/ircmaxell/password-compat/lib/password.php',
|
'e40631d46120a9c38ea139981f8dab26' => $vendorDir . '/ircmaxell/password-compat/lib/password.php',
|
||||||
'edc6464955a37aa4d5fbf39d40fb6ee7' => $vendorDir . '/symfony/polyfill-php55/bootstrap.php',
|
'edc6464955a37aa4d5fbf39d40fb6ee7' => $vendorDir . '/symfony/polyfill-php55/bootstrap.php',
|
||||||
'6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php',
|
|
||||||
'5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
|
'5255c38a0faeba867671b61dfda6d864' => $vendorDir . '/paragonie/random_compat/lib/random.php',
|
||||||
|
'6a47392539ca2329373e0d33e1dba053' => $vendorDir . '/symfony/polyfill-intl-icu/bootstrap.php',
|
||||||
'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php',
|
'bd9634f2d41831496de0d3dfe4c94881' => $vendorDir . '/symfony/polyfill-php56/bootstrap.php',
|
||||||
'023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
|
'023d27dca8066ef29e6739335ea73bad' => $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
|
||||||
'ce89ac35a6c330c55f4710717db9ff78' => $vendorDir . '/kriswallsmith/assetic/src/functions.php',
|
'ce89ac35a6c330c55f4710717db9ff78' => $vendorDir . '/kriswallsmith/assetic/src/functions.php',
|
||||||
|
|||||||
6
core/vendor/composer/autoload_psr4.php
vendored
6
core/vendor/composer/autoload_psr4.php
vendored
@@ -6,6 +6,9 @@ $vendorDir = dirname(dirname(__FILE__));
|
|||||||
$baseDir = dirname(dirname($vendorDir));
|
$baseDir = dirname(dirname($vendorDir));
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
|
'libphonenumber\\' => array($vendorDir . '/giggsey/libphonenumber-for-php/src'),
|
||||||
|
'WsdlToPhp\\PackageBase\\Tests\\' => array($vendorDir . '/wsdltophp/packagebase/tests'),
|
||||||
|
'WsdlToPhp\\PackageBase\\' => array($vendorDir . '/wsdltophp/packagebase/src'),
|
||||||
'Thelia\\Tests\\' => array($baseDir . '/tests/phpunit/Thelia/Tests'),
|
'Thelia\\Tests\\' => array($baseDir . '/tests/phpunit/Thelia/Tests'),
|
||||||
'Thelia\\Math\\' => array($vendorDir . '/thelia/math-tools/src'),
|
'Thelia\\Math\\' => array($vendorDir . '/thelia/math-tools/src'),
|
||||||
'Thelia\\CurrencyConverter\\' => array($vendorDir . '/thelia/currency-converter/src'),
|
'Thelia\\CurrencyConverter\\' => array($vendorDir . '/thelia/currency-converter/src'),
|
||||||
@@ -43,10 +46,13 @@ return array(
|
|||||||
'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'),
|
'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'),
|
||||||
'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'),
|
'Symfony\\Component\\BrowserKit\\' => array($vendorDir . '/symfony/browser-kit'),
|
||||||
'Symfony\\Cmf\\Component\\Routing\\' => array($vendorDir . '/symfony-cmf/routing'),
|
'Symfony\\Cmf\\Component\\Routing\\' => array($vendorDir . '/symfony-cmf/routing'),
|
||||||
|
'SoapClient\\' => array($vendorDir . '/wsdltophp/package-colissimo-postage/SoapClient'),
|
||||||
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
|
||||||
|
'Giggsey\\Locale\\' => array($vendorDir . '/giggsey/locale/src'),
|
||||||
'Faker\\' => array($vendorDir . '/fzaninotto/faker/src/Faker'),
|
'Faker\\' => array($vendorDir . '/fzaninotto/faker/src/Faker'),
|
||||||
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
|
||||||
'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
|
'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
|
||||||
'CommerceGuys\\Enum\\' => array($vendorDir . '/commerceguys/enum/src'),
|
'CommerceGuys\\Enum\\' => array($vendorDir . '/commerceguys/enum/src'),
|
||||||
'CommerceGuys\\Addressing\\' => array($vendorDir . '/commerceguys/addressing/src'),
|
'CommerceGuys\\Addressing\\' => array($vendorDir . '/commerceguys/addressing/src'),
|
||||||
|
'ColissimoPostage\\' => array($vendorDir . '/wsdltophp/package-colissimo-postage/src'),
|
||||||
);
|
);
|
||||||
|
|||||||
14
core/vendor/composer/autoload_real.php
vendored
14
core/vendor/composer/autoload_real.php
vendored
@@ -13,6 +13,9 @@ class ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Composer\Autoload\ClassLoader
|
||||||
|
*/
|
||||||
public static function getLoader()
|
public static function getLoader()
|
||||||
{
|
{
|
||||||
if (null !== self::$loader) {
|
if (null !== self::$loader) {
|
||||||
@@ -23,6 +26,12 @@ class ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5
|
|||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5', 'loadClassLoader'));
|
||||||
|
|
||||||
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
|
if ($useStaticLoader) {
|
||||||
|
require_once __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
|
call_user_func(\Composer\Autoload\ComposerStaticInit60933c160e6e784f12d951b85ffd7bf5::getInitializer($loader));
|
||||||
|
} else {
|
||||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||||
foreach ($map as $namespace => $path) {
|
foreach ($map as $namespace => $path) {
|
||||||
$loader->set($namespace, $path);
|
$loader->set($namespace, $path);
|
||||||
@@ -37,10 +46,15 @@ class ComposerAutoloaderInit60933c160e6e784f12d951b85ffd7bf5
|
|||||||
if ($classMap) {
|
if ($classMap) {
|
||||||
$loader->addClassMap($classMap);
|
$loader->addClassMap($classMap);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
|
if ($useStaticLoader) {
|
||||||
|
$includeFiles = Composer\Autoload\ComposerStaticInit60933c160e6e784f12d951b85ffd7bf5::$files;
|
||||||
|
} else {
|
||||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||||
|
}
|
||||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||||
composerRequire60933c160e6e784f12d951b85ffd7bf5($fileIdentifier, $file);
|
composerRequire60933c160e6e784f12d951b85ffd7bf5($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|||||||
7406
core/vendor/composer/installed.json
vendored
7406
core/vendor/composer/installed.json
vendored
File diff suppressed because it is too large
Load Diff
170
local/modules/ColissimoLabel/ColissimoLabel.php
Normal file
170
local/modules/ColissimoLabel/ColissimoLabel.php
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<?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 ColissimoLabel;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\Helper\OutputFormat;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
use Thelia\Module\BaseModule;
|
||||||
|
use Thelia\Install\Database;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class ColissimoLabel extends BaseModule
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
const DOMAIN_NAME = 'colissimolabel';
|
||||||
|
|
||||||
|
const LABEL_FOLDER = THELIA_LOCAL_DIR . 'colissimo-label';
|
||||||
|
|
||||||
|
const BORDEREAU_FOLDER = self::LABEL_FOLDER . DIRECTORY_SEPARATOR . 'bordereau';
|
||||||
|
|
||||||
|
const CONFIG_KEY_DEFAULT_LABEL_FORMAT = 'default-label-format';
|
||||||
|
|
||||||
|
const CONFIG_KEY_CONTRACT_NUMBER = 'contract-number';
|
||||||
|
|
||||||
|
const CONFIG_KEY_PASSWORD = 'password';
|
||||||
|
|
||||||
|
const CONFIG_KEY_AUTO_SENT_STATUS = 'auto-sent-status';
|
||||||
|
|
||||||
|
const CONFIG_DEFAULT_AUTO_SENT_STATUS = 1;
|
||||||
|
|
||||||
|
const CONFIG_KEY_SENT_STATUS_ID = 'sent-status-id';
|
||||||
|
|
||||||
|
const CONFIG_DEFAULT_SENT_STATUS_ID = 4;
|
||||||
|
|
||||||
|
const CONFIG_KEY_PRE_FILL_INPUT_WEIGHT = 'pre-fill-input-weight';
|
||||||
|
|
||||||
|
const CONFIG_DEFAULT_PRE_FILL_INPUT_WEIGHT = 1;
|
||||||
|
|
||||||
|
const CONFIG_KEY_LAST_BORDEREAU_DATE = 'last-bordereau-date';
|
||||||
|
|
||||||
|
const CONFIG_DEFAULT_KEY_LAST_BORDEREAU_DATE = 1970;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ConnectionInterface $con
|
||||||
|
*/
|
||||||
|
public function postActivation(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
static::checkLabelFolder();
|
||||||
|
|
||||||
|
if (!$this->getConfigValue('is_initialized', false)) {
|
||||||
|
$database = new Database($con);
|
||||||
|
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
|
||||||
|
$this->setConfigValue('is_initialized', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->checkConfigurationsValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update($currentVersion, $newVersion, ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
parent::update($currentVersion, $newVersion, $con);
|
||||||
|
|
||||||
|
$this->checkConfigurationsValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkConfigurationsValues()
|
||||||
|
{
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_DEFAULT_LABEL_FORMAT)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_DEFAULT_LABEL_FORMAT,
|
||||||
|
OutputFormat::OUTPUT_PRINTING_TYPE_DEFAULT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_CONTRACT_NUMBER)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_CONTRACT_NUMBER,
|
||||||
|
""
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_PASSWORD)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_PASSWORD,
|
||||||
|
""
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_AUTO_SENT_STATUS)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_AUTO_SENT_STATUS,
|
||||||
|
self::CONFIG_DEFAULT_AUTO_SENT_STATUS
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_SENT_STATUS_ID)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_SENT_STATUS_ID,
|
||||||
|
self::CONFIG_DEFAULT_SENT_STATUS_ID
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_AUTO_SENT_STATUS)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_AUTO_SENT_STATUS,
|
||||||
|
self::CONFIG_DEFAULT_AUTO_SENT_STATUS
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_PRE_FILL_INPUT_WEIGHT)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_PRE_FILL_INPUT_WEIGHT,
|
||||||
|
self::CONFIG_DEFAULT_PRE_FILL_INPUT_WEIGHT
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === self::getConfigValue(self::CONFIG_KEY_LAST_BORDEREAU_DATE)) {
|
||||||
|
self::setConfigValue(
|
||||||
|
self::CONFIG_KEY_LAST_BORDEREAU_DATE,
|
||||||
|
self::CONFIG_DEFAULT_KEY_LAST_BORDEREAU_DATE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function checkLabelFolder()
|
||||||
|
{
|
||||||
|
$fileSystem = new Filesystem();
|
||||||
|
|
||||||
|
if (!$fileSystem->exists(self::LABEL_FOLDER)) {
|
||||||
|
$fileSystem->mkdir(self::LABEL_FOLDER);
|
||||||
|
}
|
||||||
|
if (!$fileSystem->exists(self::BORDEREAU_FOLDER)) {
|
||||||
|
$fileSystem->mkdir(self::BORDEREAU_FOLDER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLabelPath($number, $extension)
|
||||||
|
{
|
||||||
|
return self::LABEL_FOLDER . DIRECTORY_SEPARATOR . $number . '.' . $extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLabelCN23Path($number, $extension)
|
||||||
|
{
|
||||||
|
return self::LABEL_FOLDER . DIRECTORY_SEPARATOR . $number . '.' . $extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getBordereauPath($date)
|
||||||
|
{
|
||||||
|
return self::BORDEREAU_FOLDER . DIRECTORY_SEPARATOR . $date . '.pdf';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static function getExtensionFile()
|
||||||
|
{
|
||||||
|
return strtolower(substr(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_DEFAULT_LABEL_FORMAT), 0, 3));
|
||||||
|
}
|
||||||
|
}
|
||||||
49
local/modules/ColissimoLabel/Config/config.xml
Normal file
49
local/modules/ColissimoLabel/Config/config.xml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?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="colissimo-label" class="ColissimoLabel\Loop\ColissimoLabel" />
|
||||||
|
</loops>
|
||||||
|
|
||||||
|
<forms>
|
||||||
|
<!--
|
||||||
|
<form name="MyFormName" class="ColissimoLabel\Form\MySuperForm" />
|
||||||
|
-->
|
||||||
|
</forms>
|
||||||
|
|
||||||
|
<commands>
|
||||||
|
<!--
|
||||||
|
<command class="ColissimoLabel\Command\MySuperCommand" />
|
||||||
|
-->
|
||||||
|
</commands>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<services>
|
||||||
|
|
||||||
|
</services>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<hooks>
|
||||||
|
<hook id="colissimo.label.hook.back.order_edit" class="ColissimoLabel\Hook\Back\OrderEditHook">
|
||||||
|
<tag name="hook.event_listener" event="order.edit-js" type="back" method="onOrderEditJs" />
|
||||||
|
</hook>
|
||||||
|
<hook id="colissimo.label.hook.hook.main.in.top.menu.items" class="ColissimoLabel\Hook\Back\MenuHook">
|
||||||
|
<tag name="hook.event_listener" event="main.in-top-menu-items" type="back" />
|
||||||
|
</hook>
|
||||||
|
</hooks>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<exports>
|
||||||
|
|
||||||
|
</exports>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
<imports>
|
||||||
|
|
||||||
|
</imports>
|
||||||
|
-->
|
||||||
|
</config>
|
||||||
28
local/modules/ColissimoLabel/Config/module.xml
Normal file
28
local/modules/ColissimoLabel/Config/module.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?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>ColissimoLabel\ColissimoLabel</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>Generate the delivery labels for Colissimo</title>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>Genérer les étiquettes de livraison pour Colissimo</title>
|
||||||
|
</descriptive>
|
||||||
|
<languages>
|
||||||
|
<language>en_US</language>
|
||||||
|
<language>fr_FR</language>
|
||||||
|
</languages>
|
||||||
|
<version>0.3.4</version>
|
||||||
|
<authors>
|
||||||
|
<author>
|
||||||
|
<name>Gilles Bourgeat</name>
|
||||||
|
<email>gbourgeat@openstudio.fr</email>
|
||||||
|
</author>
|
||||||
|
</authors>
|
||||||
|
<type>classic</type>
|
||||||
|
<thelia>2.2.0</thelia>
|
||||||
|
<stability>beta</stability>
|
||||||
|
<mandatory>0</mandatory>
|
||||||
|
<hidden>0</hidden>
|
||||||
|
</module>
|
||||||
31
local/modules/ColissimoLabel/Config/routing.xml
Normal file
31
local/modules/ColissimoLabel/Config/routing.xml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?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="colissimolabel.admin.generate.label" path="/admin/module/colissimolabel/order/{orderId}/generate-label" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\OrderController::generateLabelAction</default>
|
||||||
|
<requirement key="id">[0-9]+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimolabel.admin.get.label" path="/admin/module/colissimolabel/label/{number}" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\OrderController::getLabelAction</default>
|
||||||
|
<requirement key="number">[0-9A-Z]+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimolabel.admin.get.list-labels" path="/admin/module/colissimolabel/order/{orderId}/ajax-get-labels" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\OrderController::getOrderLabelsAction</default>
|
||||||
|
<requirement key="id">[0-9]+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimolabel.admin.bordereau.list" path="/admin/module/colissimolabel/bordereau/list" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\BordereauController::listBordereauAction</default>
|
||||||
|
</route>
|
||||||
|
<route id="colissimolabel.admin.bordereau.generate" path="/admin/module/colissimolabel/bordereau/generate" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\BordereauController::generateBordereauAction</default>
|
||||||
|
</route>
|
||||||
|
<route id="colissimolabel.admin.bordereau.download" path="/admin/module/colissimolabel/bordereau/download" methods="get">
|
||||||
|
<default key="_controller">ColissimoLabel\Controller\Admin\BordereauController::downloadBordereauAction</default>
|
||||||
|
</route>
|
||||||
|
</routes>
|
||||||
21
local/modules/ColissimoLabel/Config/schema.xml
Normal file
21
local/modules/ColissimoLabel/Config/schema.xml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<database defaultIdMethod="native" name="thelia"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:noNamespaceSchemaLocation="../../../../vendor/propel/propel/resources/xsd/database.xsd" >
|
||||||
|
|
||||||
|
<table name="colissimo_label" namespace="ColissimoLabel\Model">
|
||||||
|
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
|
||||||
|
<column name="order_id" type="INTEGER" required="true" />
|
||||||
|
<column name="weight" type="DECIMAL" scale="2" size="6" defaultValue="0.00" />
|
||||||
|
<column name="number" type="VARCHAR" size="255" />
|
||||||
|
|
||||||
|
<foreign-key foreignTable="order" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
|
<reference local="order_id" foreign="id" />
|
||||||
|
</foreign-key>
|
||||||
|
|
||||||
|
<behavior name="timestampable" />
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||||
|
</database>
|
||||||
30
local/modules/ColissimoLabel/Config/thelia.sql
Normal file
30
local/modules/ColissimoLabel/Config/thelia.sql
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
|
||||||
|
# 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;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- colissimo_label
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `colissimo_label`;
|
||||||
|
|
||||||
|
CREATE TABLE `colissimo_label`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`order_id` INTEGER NOT NULL,
|
||||||
|
`weight` DECIMAL(6,2) DEFAULT 0.00,
|
||||||
|
`number` VARCHAR(255),
|
||||||
|
`created_at` DATETIME,
|
||||||
|
`updated_at` DATETIME,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
INDEX `colissimo_label_FI_1` (`order_id`),
|
||||||
|
CONSTRAINT `colissimo_label_FK_1`
|
||||||
|
FOREIGN KEY (`order_id`)
|
||||||
|
REFERENCES `order` (`id`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Controller\Admin;
|
||||||
|
|
||||||
|
use ColissimoLabel\ColissimoLabel;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabel as ColissimoLabelModel;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery;
|
||||||
|
use ColissimoLabel\Request\Helper\BordereauRequestAPIConfiguration;
|
||||||
|
use ColissimoLabel\Service\SOAPService;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
use Symfony\Component\Finder\Finder;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
use Thelia\Controller\Admin\AdminController;
|
||||||
|
|
||||||
|
class BordereauController extends AdminController
|
||||||
|
{
|
||||||
|
public function listBordereauAction()
|
||||||
|
{
|
||||||
|
ColissimoLabel::checkLabelFolder();
|
||||||
|
$lastBordereauDate = ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_LAST_BORDEREAU_DATE);
|
||||||
|
|
||||||
|
$finder = new Finder();
|
||||||
|
$finder->files()->in(ColissimoLabel::BORDEREAU_FOLDER);
|
||||||
|
|
||||||
|
|
||||||
|
$bordereaux = [];
|
||||||
|
foreach ($finder as $file) {
|
||||||
|
$bordereaux[] = [
|
||||||
|
"name" => $file->getRelativePathname(),
|
||||||
|
"path" => $file->getRealPath()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$bordereaux = array_reverse($bordereaux);
|
||||||
|
sort($bordereaux);
|
||||||
|
return $this->render('colissimo-label/bordereau-list', compact("lastBordereauDate", "bordereaux"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateBordereauAction()
|
||||||
|
{
|
||||||
|
ColissimoLabel::checkLabelFolder();
|
||||||
|
|
||||||
|
$lastBordereauDate = ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_LAST_BORDEREAU_DATE);
|
||||||
|
|
||||||
|
$labels = ColissimoLabelQuery::create()
|
||||||
|
->filterByCreatedAt($lastBordereauDate, Criteria::GREATER_THAN)
|
||||||
|
->find();
|
||||||
|
|
||||||
|
$parcelNumbers = [];
|
||||||
|
|
||||||
|
/** @var ColissimoLabelModel $label */
|
||||||
|
foreach ($labels as $label) {
|
||||||
|
$parcelNumbers[] = $label->getNumber();
|
||||||
|
}
|
||||||
|
|
||||||
|
$service = new SOAPService();
|
||||||
|
$APIConfiguration = new BordereauRequestAPIConfiguration();
|
||||||
|
$APIConfiguration->setContractNumber(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_CONTRACT_NUMBER));
|
||||||
|
$APIConfiguration->setPassword(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_PASSWORD));
|
||||||
|
|
||||||
|
$parseResponse = $service->callGenerateBordereauByParcelsNumbersAPI($APIConfiguration, $parcelNumbers);
|
||||||
|
$resultAttachment = $parseResponse->attachments;
|
||||||
|
if (!isset($resultAttachment[0])) {
|
||||||
|
throw new \Exception("No label found");
|
||||||
|
}
|
||||||
|
$bordereauContent = $resultAttachment[0];
|
||||||
|
$fileContent = $bordereauContent["data"];
|
||||||
|
|
||||||
|
if ("" == $fileContent) {
|
||||||
|
throw new \Exception("File is empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
$filePath = ColissimoLabel::getBordereauPath("bordereau_".(new \DateTime())->format("Y-m-d_H-i-s"));
|
||||||
|
|
||||||
|
$fileSystem = new Filesystem();
|
||||||
|
$fileSystem->dumpFile(
|
||||||
|
$filePath,
|
||||||
|
$fileContent
|
||||||
|
);
|
||||||
|
|
||||||
|
ColissimoLabel::setConfigValue(ColissimoLabel::CONFIG_KEY_LAST_BORDEREAU_DATE, (new \DateTime())->format("Y-m-d H:i:s"));
|
||||||
|
|
||||||
|
return $this->listBordereauAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function downloadBordereauAction()
|
||||||
|
{
|
||||||
|
$filePath = $this->getRequest()->get('filePath');
|
||||||
|
return new BinaryFileResponse($filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,173 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Controller\Admin;
|
||||||
|
|
||||||
|
use ColissimoLabel\ColissimoLabel;
|
||||||
|
use ColissimoLabel\Event\ColissimoLabelEvents;
|
||||||
|
use ColissimoLabel\Event\LabelRequestEvent;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabel as ColissimoLabelModel;
|
||||||
|
use ColissimoLabel\Service\SOAPService;
|
||||||
|
use ColissimoLabel\Request\Helper\LabelRequestAPIConfiguration;
|
||||||
|
use ColissimoLabel\Request\LabelRequest;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use SoColissimo\Model\OrderAddressSocolissimoQuery;
|
||||||
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\ResponseHeaderBag;
|
||||||
|
use Thelia\Controller\Admin\AdminController;
|
||||||
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
|
use Thelia\Core\HttpFoundation\JsonResponse;
|
||||||
|
use Thelia\Core\HttpFoundation\Request;
|
||||||
|
use Thelia\Core\HttpFoundation\Response;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Model\OrderQuery;
|
||||||
|
use Thelia\Model\OrderStatusQuery;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class OrderController extends AdminController
|
||||||
|
{
|
||||||
|
public function generateLabelAction(Request $request, $orderId)
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::ORDER, [], AccessManager::UPDATE)) {
|
||||||
|
return new JsonResponse([
|
||||||
|
'error' => $this->getTranslator()->trans("Sorry, you're not allowed to perform this action")
|
||||||
|
], 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
ColissimoLabel::checkLabelFolder();
|
||||||
|
|
||||||
|
$order = OrderQuery::create()->filterById((int) $orderId, Criteria::EQUAL)->findOne();
|
||||||
|
|
||||||
|
$APIConfiguration = new LabelRequestAPIConfiguration();
|
||||||
|
|
||||||
|
$APIConfiguration->setContractNumber(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_CONTRACT_NUMBER));
|
||||||
|
$APIConfiguration->setPassword(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_PASSWORD));
|
||||||
|
|
||||||
|
if ('SoColissimo' === $order->getModuleRelatedByDeliveryModuleId()->getCode()) {
|
||||||
|
if (null !== $addressSocolissimo = OrderAddressSocolissimoQuery::create()
|
||||||
|
->findOneById($order->getDeliveryOrderAddressId())) {
|
||||||
|
if ($addressSocolissimo) {
|
||||||
|
$colissimoRequest = new LabelRequest(
|
||||||
|
$order,
|
||||||
|
$addressSocolissimo->getCode() == '0' ? null : $addressSocolissimo->getCode(),
|
||||||
|
$addressSocolissimo->getType()
|
||||||
|
);
|
||||||
|
|
||||||
|
$colissimoRequest->getLetter()->getService()->setCommercialName(
|
||||||
|
$colissimoRequest->getLetter()->getSender()->getAddress()->getCompanyName()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($colissimoRequest)) {
|
||||||
|
$colissimoRequest = new LabelRequest($order);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $weight = $request->get('weight')) {
|
||||||
|
$colissimoRequest->getLetter()->getParcel()->setWeight($weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
$service = new SOAPService();
|
||||||
|
|
||||||
|
$this->getDispatcher()->dispatch(
|
||||||
|
ColissimoLabelEvents::LABEL_REQUEST,
|
||||||
|
new LabelRequestEvent($colissimoRequest)
|
||||||
|
);
|
||||||
|
|
||||||
|
$response = $service->callAPI($APIConfiguration, $colissimoRequest);
|
||||||
|
|
||||||
|
if ($response->isValid()) {
|
||||||
|
$fileSystem = new Filesystem();
|
||||||
|
|
||||||
|
$fileSystem->dumpFile(
|
||||||
|
ColissimoLabel::getLabelPath($response->getParcelNumber(), ColissimoLabel::getExtensionFile()),
|
||||||
|
$response->getFile()
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($response->hasFileCN23()) {
|
||||||
|
$fileSystem->dumpFile(
|
||||||
|
ColissimoLabel::getLabelCN23Path($response->getParcelNumber(), ColissimoLabel::getExtensionFile()),
|
||||||
|
$response->getFileCN23()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$colissimoLabelModel = (new ColissimoLabelModel())
|
||||||
|
->setOrderId($order->getId())
|
||||||
|
->setWeight($colissimoRequest->getLetter()->getParcel()->getWeight())
|
||||||
|
->setNumber($response->getParcelNumber());
|
||||||
|
|
||||||
|
$colissimoLabelModel->save();
|
||||||
|
|
||||||
|
$order->setDeliveryRef($response->getParcelNumber());
|
||||||
|
|
||||||
|
$order->save();
|
||||||
|
|
||||||
|
if ((int) ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_AUTO_SENT_STATUS)) {
|
||||||
|
$sentStatusId = (int) ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_SENT_STATUS_ID);
|
||||||
|
|
||||||
|
if ((int) $order->getOrderStatus()->getId() !== (int) $sentStatusId) {
|
||||||
|
$order->setOrderStatus(
|
||||||
|
OrderStatusQuery::create()->findOneById((int) $sentStatusId)
|
||||||
|
);
|
||||||
|
$this->getDispatcher()->dispatch(
|
||||||
|
TheliaEvents::ORDER_UPDATE_STATUS,
|
||||||
|
(new OrderEvent($order))->setStatus((int) $sentStatusId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new JsonResponse([
|
||||||
|
'id' => $colissimoLabelModel->getId(),
|
||||||
|
'url' => URL::getInstance()->absoluteUrl('/admin/module/colissimolabel/label/' . $response->getParcelNumber()),
|
||||||
|
'number' => $response->getParcelNumber(),
|
||||||
|
'order' => [
|
||||||
|
'id' => $order->getId(),
|
||||||
|
'status' => [
|
||||||
|
'id' => $order->getOrderStatus()->getId()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
return new JsonResponse([
|
||||||
|
'error' => $response->getError()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOrderLabelsAction($orderId)
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::ORDER, [], AccessManager::UPDATE)) {
|
||||||
|
return new Response($this->getTranslator()->trans("Sorry, you're not allowed to perform this action"), 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->render('colissimo-label/label-list', ['order_id' => $orderId]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabelAction(Request $request, $number)
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::ORDER, [], AccessManager::UPDATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$response = new BinaryFileResponse(
|
||||||
|
ColissimoLabel::getLabelPath($number, ColissimoLabel::getExtensionFile())
|
||||||
|
);
|
||||||
|
|
||||||
|
$ext = strtolower(substr(ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_DEFAULT_LABEL_FORMAT), 3));
|
||||||
|
|
||||||
|
if ($request->get('download')) {
|
||||||
|
$response->setContentDisposition(
|
||||||
|
ResponseHeaderBag::DISPOSITION_ATTACHMENT,
|
||||||
|
$number . '.' . ColissimoLabel::getExtensionFile()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
local/modules/ColissimoLabel/Event/ColissimoLabelEvents.php
Normal file
11
local/modules/ColissimoLabel/Event/ColissimoLabelEvents.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class ColissimoLabelEvents
|
||||||
|
{
|
||||||
|
const LABEL_REQUEST = 'ColissimoLabel.labelRequest';
|
||||||
|
}
|
||||||
24
local/modules/ColissimoLabel/Event/LabelRequestEvent.php
Normal file
24
local/modules/ColissimoLabel/Event/LabelRequestEvent.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Event;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\LabelRequest;
|
||||||
|
use Symfony\Component\EventDispatcher\Event;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class LabelRequestEvent extends Event
|
||||||
|
{
|
||||||
|
protected $labelRequest;
|
||||||
|
|
||||||
|
public function __construct(LabelRequest $labelRequest)
|
||||||
|
{
|
||||||
|
$this->labelRequest = $labelRequest;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getLabelRequest()
|
||||||
|
{
|
||||||
|
return $this->labelRequest;
|
||||||
|
}
|
||||||
|
}
|
||||||
9
local/modules/ColissimoLabel/Exception/Exception.php
Normal file
9
local/modules/ColissimoLabel/Exception/Exception.php
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
namespace ColissimoLabel\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Exception extends \Exception
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<?php
|
||||||
|
namespace ColissimoLabel\Exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class InvalidArgumentException extends \InvalidArgumentException
|
||||||
|
{
|
||||||
|
}
|
||||||
17
local/modules/ColissimoLabel/Hook/Back/MenuHook.php
Normal file
17
local/modules/ColissimoLabel/Hook/Back/MenuHook.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Hook\Back;
|
||||||
|
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
|
||||||
|
class MenuHook extends BaseHook
|
||||||
|
{
|
||||||
|
public function onMainInTopMenuItems(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add(
|
||||||
|
$this->render('colissimo-label/hook/main.in.top.menu.items.html', [])
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
26
local/modules/ColissimoLabel/Hook/Back/OrderEditHook.php
Normal file
26
local/modules/ColissimoLabel/Hook/Back/OrderEditHook.php
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Hook\Back;
|
||||||
|
|
||||||
|
use ColissimoLabel\ColissimoLabel;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class OrderEditHook extends BaseHook
|
||||||
|
{
|
||||||
|
public function onOrderEditJs(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add($this->render(
|
||||||
|
'colissimo-label/hook/order-edit-js.html',
|
||||||
|
array_merge(
|
||||||
|
$event->getArguments(),
|
||||||
|
[
|
||||||
|
'preFillWeightInput' => ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_PRE_FILL_INPUT_WEIGHT)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
);
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Cancel' => 'Annuler',
|
||||||
|
'Date' => 'Date',
|
||||||
|
'Download' => 'Télécharger',
|
||||||
|
'Generate bordereau for label since : %date' => 'Générer un bordereau pour les étiquettes créée depuis : %date',
|
||||||
|
'Generate new label' => 'Générer une étiquette',
|
||||||
|
'Labels Colissimo' => 'Étiquette Colissimo',
|
||||||
|
'No existing label for this order' => 'Aucune étiquette pour cette commande',
|
||||||
|
'Number' => 'Numéro',
|
||||||
|
'Please wait ...' => 'Veillez patienter ...',
|
||||||
|
'Print' => 'Imprimer',
|
||||||
|
'Shipping weight :' => 'Poids d\'expédition :',
|
||||||
|
'Tracking URL' => 'URL de tracking',
|
||||||
|
'View' => 'Voir',
|
||||||
|
'Weight' => 'Poids',
|
||||||
|
);
|
||||||
4
local/modules/ColissimoLabel/I18n/en_US.php
Normal file
4
local/modules/ColissimoLabel/I18n/en_US.php
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
// 'an english string' => 'The displayed english string',
|
||||||
|
);
|
||||||
4
local/modules/ColissimoLabel/I18n/fr_FR.php
Normal file
4
local/modules/ColissimoLabel/I18n/fr_FR.php
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
// 'an english string' => 'La traduction française de la chaine',
|
||||||
|
);
|
||||||
21
local/modules/ColissimoLabel/LICENSE
Normal file
21
local/modules/ColissimoLabel/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
67
local/modules/ColissimoLabel/Loop/ColissimoLabel.php
Normal file
67
local/modules/ColissimoLabel/Loop/ColissimoLabel.php
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Loop;
|
||||||
|
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery;
|
||||||
|
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 CreditNoteStatus
|
||||||
|
* @package CreditNote\Loop
|
||||||
|
* @author Gilles Bourgeat <gilles.bourgeat@gmail.com>
|
||||||
|
*
|
||||||
|
* @method int getOrderId()
|
||||||
|
*/
|
||||||
|
class ColissimoLabel extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
protected $timestampable = true;
|
||||||
|
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntTypeArgument('order_id', null, true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this method returns a Propel ModelCriteria
|
||||||
|
*
|
||||||
|
* @return \Propel\Runtime\ActiveQuery\ModelCriteria
|
||||||
|
*/
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
$query = new ColissimoLabelQuery();
|
||||||
|
|
||||||
|
$query->filterByOrderId($this->getOrderId());
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoopResult $loopResult
|
||||||
|
*
|
||||||
|
* @return LoopResult
|
||||||
|
*/
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
/** @var \ColissimoLabel\Model\ColissimoLabel $entry */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $entry) {
|
||||||
|
$row = new LoopResultRow($entry);
|
||||||
|
$row
|
||||||
|
->set('WEIGHT', $entry->getWeight())
|
||||||
|
->set("ID", $entry->getId())
|
||||||
|
->set("NUMBER", $entry->getNumber())
|
||||||
|
->set("ORDER_ID", $entry->getOrderId())
|
||||||
|
;
|
||||||
|
$this->addOutputFields($row, $entry);
|
||||||
|
$loopResult->addRow($row);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
1498
local/modules/ColissimoLabel/Model/Base/ColissimoLabel.php
Normal file
1498
local/modules/ColissimoLabel/Model/Base/ColissimoLabel.php
Normal file
File diff suppressed because it is too large
Load Diff
712
local/modules/ColissimoLabel/Model/Base/ColissimoLabelQuery.php
Normal file
712
local/modules/ColissimoLabel/Model/Base/ColissimoLabelQuery.php
Normal file
@@ -0,0 +1,712 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabel as ChildColissimoLabel;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery as ChildColissimoLabelQuery;
|
||||||
|
use ColissimoLabel\Model\Map\ColissimoLabelTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||||
|
use Propel\Runtime\Collection\Collection;
|
||||||
|
use Propel\Runtime\Collection\ObjectCollection;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Thelia\Model\Order;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'colissimo_label' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabelQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildColissimoLabelQuery orderByOrderId($order = Criteria::ASC) Order by the order_id column
|
||||||
|
* @method ChildColissimoLabelQuery orderByWeight($order = Criteria::ASC) Order by the weight column
|
||||||
|
* @method ChildColissimoLabelQuery orderByNumber($order = Criteria::ASC) Order by the number column
|
||||||
|
* @method ChildColissimoLabelQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||||
|
* @method ChildColissimoLabelQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabelQuery groupById() Group by the id column
|
||||||
|
* @method ChildColissimoLabelQuery groupByOrderId() Group by the order_id column
|
||||||
|
* @method ChildColissimoLabelQuery groupByWeight() Group by the weight column
|
||||||
|
* @method ChildColissimoLabelQuery groupByNumber() Group by the number column
|
||||||
|
* @method ChildColissimoLabelQuery groupByCreatedAt() Group by the created_at column
|
||||||
|
* @method ChildColissimoLabelQuery groupByUpdatedAt() Group by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabelQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildColissimoLabelQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildColissimoLabelQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabelQuery leftJoinOrder($relationAlias = null) Adds a LEFT JOIN clause to the query using the Order relation
|
||||||
|
* @method ChildColissimoLabelQuery rightJoinOrder($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Order relation
|
||||||
|
* @method ChildColissimoLabelQuery innerJoinOrder($relationAlias = null) Adds a INNER JOIN clause to the query using the Order relation
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabel findOne(ConnectionInterface $con = null) Return the first ChildColissimoLabel matching the query
|
||||||
|
* @method ChildColissimoLabel findOneOrCreate(ConnectionInterface $con = null) Return the first ChildColissimoLabel matching the query, or a new ChildColissimoLabel object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildColissimoLabel findOneById(int $id) Return the first ChildColissimoLabel filtered by the id column
|
||||||
|
* @method ChildColissimoLabel findOneByOrderId(int $order_id) Return the first ChildColissimoLabel filtered by the order_id column
|
||||||
|
* @method ChildColissimoLabel findOneByWeight(string $weight) Return the first ChildColissimoLabel filtered by the weight column
|
||||||
|
* @method ChildColissimoLabel findOneByNumber(string $number) Return the first ChildColissimoLabel filtered by the number column
|
||||||
|
* @method ChildColissimoLabel findOneByCreatedAt(string $created_at) Return the first ChildColissimoLabel filtered by the created_at column
|
||||||
|
* @method ChildColissimoLabel findOneByUpdatedAt(string $updated_at) Return the first ChildColissimoLabel filtered by the updated_at column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildColissimoLabel objects filtered by the id column
|
||||||
|
* @method array findByOrderId(int $order_id) Return ChildColissimoLabel objects filtered by the order_id column
|
||||||
|
* @method array findByWeight(string $weight) Return ChildColissimoLabel objects filtered by the weight column
|
||||||
|
* @method array findByNumber(string $number) Return ChildColissimoLabel objects filtered by the number column
|
||||||
|
* @method array findByCreatedAt(string $created_at) Return ChildColissimoLabel objects filtered by the created_at column
|
||||||
|
* @method array findByUpdatedAt(string $updated_at) Return ChildColissimoLabel objects filtered by the updated_at column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class ColissimoLabelQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \ColissimoLabel\Model\Base\ColissimoLabelQuery 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 = '\\ColissimoLabel\\Model\\ColissimoLabel', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildColissimoLabelQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \ColissimoLabel\Model\ColissimoLabelQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \ColissimoLabel\Model\ColissimoLabelQuery();
|
||||||
|
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 ChildColissimoLabel|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = ColissimoLabelTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(ColissimoLabelTableMap::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 ChildColissimoLabel A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, ORDER_ID, WEIGHT, NUMBER, CREATED_AT, UPDATED_AT FROM colissimo_label 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 ChildColissimoLabel();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
ColissimoLabelTableMap::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 ChildColissimoLabel|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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::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 ChildColissimoLabelQuery 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(ColissimoLabelTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the order_id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByOrderId(1234); // WHERE order_id = 1234
|
||||||
|
* $query->filterByOrderId(array(12, 34)); // WHERE order_id IN (12, 34)
|
||||||
|
* $query->filterByOrderId(array('min' => 12)); // WHERE order_id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @see filterByOrder()
|
||||||
|
*
|
||||||
|
* @param mixed $orderId 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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByOrderId($orderId = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($orderId)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($orderId['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::ORDER_ID, $orderId['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($orderId['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::ORDER_ID, $orderId['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::ORDER_ID, $orderId, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the weight column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByWeight(1234); // WHERE weight = 1234
|
||||||
|
* $query->filterByWeight(array(12, 34)); // WHERE weight IN (12, 34)
|
||||||
|
* $query->filterByWeight(array('min' => 12)); // WHERE weight > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $weight 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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByWeight($weight = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($weight)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($weight['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::WEIGHT, $weight['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($weight['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::WEIGHT, $weight['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::WEIGHT, $weight, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the number column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByNumber('fooValue'); // WHERE number = 'fooValue'
|
||||||
|
* $query->filterByNumber('%fooValue%'); // WHERE number LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $number 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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByNumber($number = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($number)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $number)) {
|
||||||
|
$number = str_replace('*', '%', $number);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::NUMBER, $number, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the created_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $createdAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* 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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByCreatedAt($createdAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($createdAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($createdAt['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($createdAt['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::CREATED_AT, $createdAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the updated_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $updatedAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* 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 ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByUpdatedAt($updatedAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($updatedAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($updatedAt['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($updatedAt['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::UPDATED_AT, $updatedAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a related \Thelia\Model\Order object
|
||||||
|
*
|
||||||
|
* @param \Thelia\Model\Order|ObjectCollection $order The related object(s) to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByOrder($order, $comparison = null)
|
||||||
|
{
|
||||||
|
if ($order instanceof \Thelia\Model\Order) {
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimoLabelTableMap::ORDER_ID, $order->getId(), $comparison);
|
||||||
|
} elseif ($order instanceof ObjectCollection) {
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimoLabelTableMap::ORDER_ID, $order->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||||
|
} else {
|
||||||
|
throw new PropelException('filterByOrder() only accepts arguments of type \Thelia\Model\Order or Collection');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a JOIN clause to the query using the Order relation
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function joinOrder($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
$tableMap = $this->getTableMap();
|
||||||
|
$relationMap = $tableMap->getRelation('Order');
|
||||||
|
|
||||||
|
// create a ModelJoin object for this join
|
||||||
|
$join = new ModelJoin();
|
||||||
|
$join->setJoinType($joinType);
|
||||||
|
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||||
|
if ($previousJoin = $this->getPreviousJoin()) {
|
||||||
|
$join->setPreviousJoin($previousJoin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the ModelJoin to the current object
|
||||||
|
if ($relationAlias) {
|
||||||
|
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||||
|
$this->addJoinObject($join, $relationAlias);
|
||||||
|
} else {
|
||||||
|
$this->addJoinObject($join, 'Order');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the Order relation Order object
|
||||||
|
*
|
||||||
|
* @see useQuery()
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation,
|
||||||
|
* to be used as main alias in the secondary query
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return \Thelia\Model\OrderQuery A secondary query class using the current class as primary query
|
||||||
|
*/
|
||||||
|
public function useOrderQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->joinOrder($relationAlias, $joinType)
|
||||||
|
->useQuery($relationAlias ? $relationAlias : 'Order', '\Thelia\Model\OrderQuery');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildColissimoLabel $colissimoLabel Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($colissimoLabel = null)
|
||||||
|
{
|
||||||
|
if ($colissimoLabel) {
|
||||||
|
$this->addUsingAlias(ColissimoLabelTableMap::ID, $colissimoLabel->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the colissimo_label 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(ColissimoLabelTableMap::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).
|
||||||
|
ColissimoLabelTableMap::clearInstancePool();
|
||||||
|
ColissimoLabelTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildColissimoLabel or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildColissimoLabel 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(ColissimoLabelTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(ColissimoLabelTableMap::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();
|
||||||
|
|
||||||
|
|
||||||
|
ColissimoLabelTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
ColissimoLabelTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// timestampable behavior
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest updated
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of the latest update in days
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyUpdated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest created
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of in days
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyCreated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(ColissimoLabelTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date desc
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(ColissimoLabelTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date asc
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(ColissimoLabelTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date desc
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(ColissimoLabelTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date asc
|
||||||
|
*
|
||||||
|
* @return ChildColissimoLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(ColissimoLabelTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ColissimoLabelQuery
|
||||||
10
local/modules/ColissimoLabel/Model/ColissimoLabel.php
Normal file
10
local/modules/ColissimoLabel/Model/ColissimoLabel.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Model;
|
||||||
|
|
||||||
|
use ColissimoLabel\Model\Base\ColissimoLabel as BaseColissimoLabel;
|
||||||
|
|
||||||
|
class ColissimoLabel extends BaseColissimoLabel
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
21
local/modules/ColissimoLabel/Model/ColissimoLabelQuery.php
Normal file
21
local/modules/ColissimoLabel/Model/ColissimoLabelQuery.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Model;
|
||||||
|
|
||||||
|
use ColissimoLabel\Model\Base\ColissimoLabelQuery as BaseColissimoLabelQuery;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'colissimo_label' 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 ColissimoLabelQuery extends BaseColissimoLabelQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
} // ColissimoLabelQuery
|
||||||
@@ -0,0 +1,456 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Model\Map;
|
||||||
|
|
||||||
|
use ColissimoLabel\Model\ColissimoLabel;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery;
|
||||||
|
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 'colissimo_label' 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 ColissimoLabelTableMap extends TableMap
|
||||||
|
{
|
||||||
|
use InstancePoolTrait;
|
||||||
|
use TableMapTrait;
|
||||||
|
/**
|
||||||
|
* The (dot-path) name of this class
|
||||||
|
*/
|
||||||
|
const CLASS_NAME = 'ColissimoLabel.Model.Map.ColissimoLabelTableMap';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default database name for this class
|
||||||
|
*/
|
||||||
|
const DATABASE_NAME = 'thelia';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table name for this class
|
||||||
|
*/
|
||||||
|
const TABLE_NAME = 'colissimo_label';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The related Propel class for this table
|
||||||
|
*/
|
||||||
|
const OM_CLASS = '\\ColissimoLabel\\Model\\ColissimoLabel';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class that can be returned by this tableMap
|
||||||
|
*/
|
||||||
|
const CLASS_DEFAULT = 'ColissimoLabel.Model.ColissimoLabel';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 = 'colissimo_label.ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the ORDER_ID field
|
||||||
|
*/
|
||||||
|
const ORDER_ID = 'colissimo_label.ORDER_ID';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the WEIGHT field
|
||||||
|
*/
|
||||||
|
const WEIGHT = 'colissimo_label.WEIGHT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the NUMBER field
|
||||||
|
*/
|
||||||
|
const NUMBER = 'colissimo_label.NUMBER';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the CREATED_AT field
|
||||||
|
*/
|
||||||
|
const CREATED_AT = 'colissimo_label.CREATED_AT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* the column name for the UPDATED_AT field
|
||||||
|
*/
|
||||||
|
const UPDATED_AT = 'colissimo_label.UPDATED_AT';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The default string format for model objects of the related table
|
||||||
|
*/
|
||||||
|
const DEFAULT_STRING_FORMAT = 'YAML';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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', 'OrderId', 'Weight', 'Number', 'CreatedAt', 'UpdatedAt', ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id', 'orderId', 'weight', 'number', 'createdAt', 'updatedAt', ),
|
||||||
|
self::TYPE_COLNAME => array(ColissimoLabelTableMap::ID, ColissimoLabelTableMap::ORDER_ID, ColissimoLabelTableMap::WEIGHT, ColissimoLabelTableMap::NUMBER, ColissimoLabelTableMap::CREATED_AT, ColissimoLabelTableMap::UPDATED_AT, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID', 'ORDER_ID', 'WEIGHT', 'NUMBER', 'CREATED_AT', 'UPDATED_AT', ),
|
||||||
|
self::TYPE_FIELDNAME => array('id', 'order_id', 'weight', 'number', 'created_at', 'updated_at', ),
|
||||||
|
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, 'OrderId' => 1, 'Weight' => 2, 'Number' => 3, 'CreatedAt' => 4, 'UpdatedAt' => 5, ),
|
||||||
|
self::TYPE_STUDLYPHPNAME => array('id' => 0, 'orderId' => 1, 'weight' => 2, 'number' => 3, 'createdAt' => 4, 'updatedAt' => 5, ),
|
||||||
|
self::TYPE_COLNAME => array(ColissimoLabelTableMap::ID => 0, ColissimoLabelTableMap::ORDER_ID => 1, ColissimoLabelTableMap::WEIGHT => 2, ColissimoLabelTableMap::NUMBER => 3, ColissimoLabelTableMap::CREATED_AT => 4, ColissimoLabelTableMap::UPDATED_AT => 5, ),
|
||||||
|
self::TYPE_RAW_COLNAME => array('ID' => 0, 'ORDER_ID' => 1, 'WEIGHT' => 2, 'NUMBER' => 3, 'CREATED_AT' => 4, 'UPDATED_AT' => 5, ),
|
||||||
|
self::TYPE_FIELDNAME => array('id' => 0, 'order_id' => 1, 'weight' => 2, 'number' => 3, 'created_at' => 4, 'updated_at' => 5, ),
|
||||||
|
self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, )
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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('colissimo_label');
|
||||||
|
$this->setPhpName('ColissimoLabel');
|
||||||
|
$this->setClassName('\\ColissimoLabel\\Model\\ColissimoLabel');
|
||||||
|
$this->setPackage('ColissimoLabel.Model');
|
||||||
|
$this->setUseIdGenerator(true);
|
||||||
|
// columns
|
||||||
|
$this->addPrimaryKey('ID', 'Id', 'INTEGER', true, null, null);
|
||||||
|
$this->addForeignKey('ORDER_ID', 'OrderId', 'INTEGER', 'order', 'ID', true, null, null);
|
||||||
|
$this->addColumn('WEIGHT', 'Weight', 'DECIMAL', false, 6, 0);
|
||||||
|
$this->addColumn('NUMBER', 'Number', 'VARCHAR', false, 255, null);
|
||||||
|
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
|
||||||
|
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
|
||||||
|
} // initialize()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the RelationMap objects for this table relationships
|
||||||
|
*/
|
||||||
|
public function buildRelations()
|
||||||
|
{
|
||||||
|
$this->addRelation('Order', '\\Thelia\\Model\\Order', RelationMap::MANY_TO_ONE, array('order_id' => 'id', ), 'CASCADE', 'RESTRICT');
|
||||||
|
} // buildRelations()
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Gets the list of behaviors registered for this table
|
||||||
|
*
|
||||||
|
* @return array Associative array (name => parameters) of behaviors
|
||||||
|
*/
|
||||||
|
public function getBehaviors()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'timestampable' => array('create_column' => 'created_at', 'update_column' => 'updated_at', ),
|
||||||
|
);
|
||||||
|
} // getBehaviors()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 ? ColissimoLabelTableMap::CLASS_DEFAULT : ColissimoLabelTableMap::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 (ColissimoLabel object, last column rank)
|
||||||
|
*/
|
||||||
|
public static function populateObject($row, $offset = 0, $indexType = TableMap::TYPE_NUM)
|
||||||
|
{
|
||||||
|
$key = ColissimoLabelTableMap::getPrimaryKeyHashFromRow($row, $offset, $indexType);
|
||||||
|
if (null !== ($obj = ColissimoLabelTableMap::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 + ColissimoLabelTableMap::NUM_HYDRATE_COLUMNS;
|
||||||
|
} else {
|
||||||
|
$cls = ColissimoLabelTableMap::OM_CLASS;
|
||||||
|
$obj = new $cls();
|
||||||
|
$col = $obj->hydrate($row, $offset, false, $indexType);
|
||||||
|
ColissimoLabelTableMap::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 = ColissimoLabelTableMap::getPrimaryKeyHashFromRow($row, 0, $dataFetcher->getIndexType());
|
||||||
|
if (null !== ($obj = ColissimoLabelTableMap::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;
|
||||||
|
ColissimoLabelTableMap::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(ColissimoLabelTableMap::ID);
|
||||||
|
$criteria->addSelectColumn(ColissimoLabelTableMap::ORDER_ID);
|
||||||
|
$criteria->addSelectColumn(ColissimoLabelTableMap::WEIGHT);
|
||||||
|
$criteria->addSelectColumn(ColissimoLabelTableMap::NUMBER);
|
||||||
|
$criteria->addSelectColumn(ColissimoLabelTableMap::CREATED_AT);
|
||||||
|
$criteria->addSelectColumn(ColissimoLabelTableMap::UPDATED_AT);
|
||||||
|
} else {
|
||||||
|
$criteria->addSelectColumn($alias . '.ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.ORDER_ID');
|
||||||
|
$criteria->addSelectColumn($alias . '.WEIGHT');
|
||||||
|
$criteria->addSelectColumn($alias . '.NUMBER');
|
||||||
|
$criteria->addSelectColumn($alias . '.CREATED_AT');
|
||||||
|
$criteria->addSelectColumn($alias . '.UPDATED_AT');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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(ColissimoLabelTableMap::DATABASE_NAME)->getTable(ColissimoLabelTableMap::TABLE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a TableMap instance to the database for this tableMap class.
|
||||||
|
*/
|
||||||
|
public static function buildTableMap()
|
||||||
|
{
|
||||||
|
$dbMap = Propel::getServiceContainer()->getDatabaseMap(ColissimoLabelTableMap::DATABASE_NAME);
|
||||||
|
if (!$dbMap->hasTable(ColissimoLabelTableMap::TABLE_NAME)) {
|
||||||
|
$dbMap->addTableObject(new ColissimoLabelTableMap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ColissimoLabel or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ColissimoLabel 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(ColissimoLabelTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) {
|
||||||
|
// rename for clarity
|
||||||
|
$criteria = $values;
|
||||||
|
} elseif ($values instanceof \ColissimoLabel\Model\ColissimoLabel) { // 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(ColissimoLabelTableMap::DATABASE_NAME);
|
||||||
|
$criteria->add(ColissimoLabelTableMap::ID, (array) $values, Criteria::IN);
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = ColissimoLabelQuery::create()->mergeWith($criteria);
|
||||||
|
|
||||||
|
if ($values instanceof Criteria) { ColissimoLabelTableMap::clearInstancePool();
|
||||||
|
} elseif (!is_object($values)) { // it's a primary key, or an array of pks
|
||||||
|
foreach ((array) $values as $singleval) { ColissimoLabelTableMap::removeInstanceFromPool($singleval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $query->delete($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the colissimo_label 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 ColissimoLabelQuery::create()->doDeleteAll($con);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs an INSERT on the database, given a ColissimoLabel or Criteria object.
|
||||||
|
*
|
||||||
|
* @param mixed $criteria Criteria or ColissimoLabel 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(ColissimoLabelTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria instanceof Criteria) {
|
||||||
|
$criteria = clone $criteria; // rename for clarity
|
||||||
|
} else {
|
||||||
|
$criteria = $criteria->buildCriteria(); // build Criteria from ColissimoLabel object
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($criteria->containsKey(ColissimoLabelTableMap::ID) && $criteria->keyContainsValue(ColissimoLabelTableMap::ID) ) {
|
||||||
|
throw new PropelException('Cannot insert a value for auto-increment primary key ('.ColissimoLabelTableMap::ID.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$query = ColissimoLabelQuery::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;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ColissimoLabelTableMap
|
||||||
|
// This is the static code needed to register the TableMap for this table with the main Propel class.
|
||||||
|
//
|
||||||
|
ColissimoLabelTableMap::buildTableMap();
|
||||||
22
local/modules/ColissimoLabel/Readme.md
Normal file
22
local/modules/ColissimoLabel/Readme.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Colissimo Label
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Manually
|
||||||
|
|
||||||
|
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the module is ColissimoLabel.
|
||||||
|
* Activate it in your thelia administration panel
|
||||||
|
|
||||||
|
### Composer
|
||||||
|
|
||||||
|
Add it in your main thelia composer.json file
|
||||||
|
|
||||||
|
```
|
||||||
|
composer require thelia/colissimo-label-module:~0.3.2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration
|
||||||
|
|
||||||
|
For the moment, this module does not have interface.
|
||||||
|
You can change the values `contract-number` `password` on your table `module_config`
|
||||||
|
|
||||||
118
local/modules/ColissimoLabel/Request/AbstractLabelRequest.php
Normal file
118
local/modules/ColissimoLabel/Request/AbstractLabelRequest.php
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\Helper\Letter;
|
||||||
|
use ColissimoLabel\Request\Helper\OutputFormat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
abstract class AbstractLabelRequest extends AbstractRequest
|
||||||
|
{
|
||||||
|
/** @var OutputFormat|null */
|
||||||
|
private $outputFormat;
|
||||||
|
|
||||||
|
/** @var Letter */
|
||||||
|
private $letter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return OutputFormat|null
|
||||||
|
*/
|
||||||
|
public function getOutputFormat()
|
||||||
|
{
|
||||||
|
return $this->outputFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param OutputFormat $outputFormat
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
protected function setOutputFormat(OutputFormat $outputFormat)
|
||||||
|
{
|
||||||
|
$this->outputFormat = $outputFormat;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Letter
|
||||||
|
*/
|
||||||
|
public function getLetter()
|
||||||
|
{
|
||||||
|
return $this->letter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Letter $letter
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
protected function setLetter(Letter $letter)
|
||||||
|
{
|
||||||
|
$this->letter = $letter;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public function generateArrayRequest()
|
||||||
|
{
|
||||||
|
return array_merge_recursive(parent::generateArrayRequest(), [
|
||||||
|
'outputFormat' => [
|
||||||
|
'x' => $this->getOutputFormat()->getX(),
|
||||||
|
'y' => $this->getOutputFormat()->getY(),
|
||||||
|
'outputPrintingType' => $this->getOutputFormat()->getOutputPrintingType()
|
||||||
|
],
|
||||||
|
'letter' => [
|
||||||
|
'service' => [
|
||||||
|
"productCode" => $this->getLetter()->getService()->getProductCode(),
|
||||||
|
"depositDate" => $this->getLetter()->getService()->getDepositDate()->format('Y-m-d'),
|
||||||
|
"orderNumber" => $this->getLetter()->getService()->getOrderNumber(),
|
||||||
|
'commercialName' => $this->getLetter()->getService()->getCommercialName()
|
||||||
|
],
|
||||||
|
'parcel' => [
|
||||||
|
'weight' => $this->getLetter()->getParcel()->getWeight(),
|
||||||
|
'pickupLocationId' => $this->getLetter()->getParcel()->getPickupLocationId()
|
||||||
|
],
|
||||||
|
'sender' => [
|
||||||
|
'senderParcelRef' => $this->getLetter()->getSender()->getSenderParcelRef(),
|
||||||
|
'address' => [
|
||||||
|
'companyName' => $this->getLetter()->getSender()->getAddress()->getCompanyName(),
|
||||||
|
'lastName' => $this->getLetter()->getSender()->getAddress()->getLastName(),
|
||||||
|
'firstName' => $this->getLetter()->getSender()->getAddress()->getFirstName(),
|
||||||
|
'line0' => $this->getLetter()->getSender()->getAddress()->getLine0(),
|
||||||
|
'line1' => $this->getLetter()->getSender()->getAddress()->getLine1(),
|
||||||
|
'line2' => $this->getLetter()->getSender()->getAddress()->getLine2(),
|
||||||
|
'line3' => $this->getLetter()->getSender()->getAddress()->getLine3(),
|
||||||
|
'countryCode' => $this->getLetter()->getSender()->getAddress()->getCountryCode(),
|
||||||
|
'city' => $this->getLetter()->getSender()->getAddress()->getCity(),
|
||||||
|
'zipCode' => $this->getLetter()->getSender()->getAddress()->getZipCode(),
|
||||||
|
'phoneNumber' => $this->getLetter()->getSender()->getAddress()->getPhoneNumber(),
|
||||||
|
'mobileNumber' => $this->getLetter()->getSender()->getAddress()->getMobileNumber(),
|
||||||
|
'email'=> $this->getLetter()->getSender()->getAddress()->getEmail(),
|
||||||
|
'language' => $this->getLetter()->getSender()->getAddress()->getLanguage()
|
||||||
|
]
|
||||||
|
],
|
||||||
|
'addressee' => [
|
||||||
|
'addresseeParcelRef' => $this->getLetter()->getAddressee()->getAddresseeParcelRef(),
|
||||||
|
'address' => [
|
||||||
|
'companyName' => $this->getLetter()->getAddressee()->getAddress()->getCompanyName(),
|
||||||
|
'lastName' => $this->getLetter()->getAddressee()->getAddress()->getLastName(),
|
||||||
|
'firstName' => $this->getLetter()->getAddressee()->getAddress()->getFirstName(),
|
||||||
|
'line0' => $this->getLetter()->getAddressee()->getAddress()->getLine0(),
|
||||||
|
'line1' => $this->getLetter()->getAddressee()->getAddress()->getLine1(),
|
||||||
|
'line2' => $this->getLetter()->getAddressee()->getAddress()->getLine2(),
|
||||||
|
'line3' => $this->getLetter()->getAddressee()->getAddress()->getLine3(),
|
||||||
|
'countryCode' => $this->getLetter()->getAddressee()->getAddress()->getCountryCode(),
|
||||||
|
'city' => $this->getLetter()->getAddressee()->getAddress()->getCity(),
|
||||||
|
'zipCode' => $this->getLetter()->getAddressee()->getAddress()->getZipCode(),
|
||||||
|
'phoneNumber' => $this->getLetter()->getAddressee()->getAddress()->getPhoneNumber(),
|
||||||
|
'mobileNumber' => $this->getLetter()->getAddressee()->getAddress()->getMobileNumber(),
|
||||||
|
'email'=> $this->getLetter()->getAddressee()->getAddress()->getEmail(),
|
||||||
|
'language' => $this->getLetter()->getAddressee()->getAddress()->getLanguage()
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
57
local/modules/ColissimoLabel/Request/AbstractRequest.php
Normal file
57
local/modules/ColissimoLabel/Request/AbstractRequest.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
abstract class AbstractRequest
|
||||||
|
{
|
||||||
|
protected $contractNumber = '';
|
||||||
|
|
||||||
|
protected $password = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContractNumber()
|
||||||
|
{
|
||||||
|
return $this->contractNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $contractNumber
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setContractNumber($contractNumber)
|
||||||
|
{
|
||||||
|
$this->contractNumber = $contractNumber;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPassword()
|
||||||
|
{
|
||||||
|
return $this->password;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $password
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setPassword($password)
|
||||||
|
{
|
||||||
|
$this->password = $password;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function generateArrayRequest()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'contractNumber' => $this->getContractNumber(),
|
||||||
|
'password' => $this->getPassword()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
118
local/modules/ColissimoLabel/Request/Helper/APIConfiguration.php
Normal file
118
local/modules/ColissimoLabel/Request/Helper/APIConfiguration.php
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
abstract class APIConfiguration
|
||||||
|
{
|
||||||
|
protected $contractNumber = '';
|
||||||
|
|
||||||
|
protected $password = '';
|
||||||
|
|
||||||
|
protected $version = '2.0';
|
||||||
|
|
||||||
|
protected $wsdl = '';
|
||||||
|
|
||||||
|
protected $method = '';
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->setContractNumber(ConfigQuery::read('colissimo.api.contract.number'));
|
||||||
|
$this->setPassword(ConfigQuery::read('colissimo.api.password'));
|
||||||
|
$this->setWsdl('https://ws.colissimo.fr/sls-ws/SlsServiceWS/2.0?wsdl');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getContractNumber()
|
||||||
|
{
|
||||||
|
return $this->contractNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $contractNumber
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setContractNumber($contractNumber)
|
||||||
|
{
|
||||||
|
$this->contractNumber = $contractNumber;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPassword()
|
||||||
|
{
|
||||||
|
return $this->password;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $password
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setPassword($password)
|
||||||
|
{
|
||||||
|
$this->password = $password;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getVersion()
|
||||||
|
{
|
||||||
|
return $this->version;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $version
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setVersion($version)
|
||||||
|
{
|
||||||
|
$this->version = $version;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getWsdl()
|
||||||
|
{
|
||||||
|
return $this->wsdl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $wsdl
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setWsdl($wsdl)
|
||||||
|
{
|
||||||
|
$this->wsdl = $wsdl;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMethod()
|
||||||
|
{
|
||||||
|
return $this->method;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $method
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setMethod($method)
|
||||||
|
{
|
||||||
|
$this->method = $method;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
289
local/modules/ColissimoLabel/Request/Helper/Address.php
Normal file
289
local/modules/ColissimoLabel/Request/Helper/Address.php
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Address
|
||||||
|
{
|
||||||
|
protected $companyName ='';
|
||||||
|
|
||||||
|
protected $lastName = '';
|
||||||
|
|
||||||
|
protected $firstName = '';
|
||||||
|
|
||||||
|
protected $line0 = '';
|
||||||
|
|
||||||
|
protected $line1 = '';
|
||||||
|
|
||||||
|
protected $line2 = '';
|
||||||
|
|
||||||
|
protected $line3 = '';
|
||||||
|
|
||||||
|
protected $countryCode = '';
|
||||||
|
|
||||||
|
protected $city = '';
|
||||||
|
|
||||||
|
protected $zipCode = '';
|
||||||
|
|
||||||
|
protected $phoneNumber = '';
|
||||||
|
|
||||||
|
protected $mobileNumber = '';
|
||||||
|
|
||||||
|
protected $email = '';
|
||||||
|
|
||||||
|
protected $language = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLanguage()
|
||||||
|
{
|
||||||
|
return $this->language;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $language
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function setLanguage($language)
|
||||||
|
{
|
||||||
|
$this->language = $language;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPhoneNumber()
|
||||||
|
{
|
||||||
|
return $this->phoneNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $phoneNumber
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function setPhoneNumber($phoneNumber)
|
||||||
|
{
|
||||||
|
$this->phoneNumber = $phoneNumber;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getMobileNumber()
|
||||||
|
{
|
||||||
|
return $this->mobileNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $mobileNumber
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function setMobileNumber($mobileNumber)
|
||||||
|
{
|
||||||
|
$this->mobileNumber = $mobileNumber;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getEmail()
|
||||||
|
{
|
||||||
|
return $this->email;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $email
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function setEmail($email)
|
||||||
|
{
|
||||||
|
$this->email = $email;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCompanyName()
|
||||||
|
{
|
||||||
|
return $this->companyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $companyName
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setCompanyName($companyName)
|
||||||
|
{
|
||||||
|
$this->companyName = $companyName;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLastName()
|
||||||
|
{
|
||||||
|
return $this->lastName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $lastName
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setLastName($lastName)
|
||||||
|
{
|
||||||
|
$this->lastName = $lastName;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getFirstName()
|
||||||
|
{
|
||||||
|
return $this->firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $firstName
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setFirstName($firstName)
|
||||||
|
{
|
||||||
|
$this->firstName = $firstName;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLine0()
|
||||||
|
{
|
||||||
|
return $this->line0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $line0
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setLine0($line0)
|
||||||
|
{
|
||||||
|
$this->line0 = $line0;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLine1()
|
||||||
|
{
|
||||||
|
return $this->line1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $line1
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setLine1($line1)
|
||||||
|
{
|
||||||
|
$this->line1 = $line1;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLine2()
|
||||||
|
{
|
||||||
|
return $this->line2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $line2
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setLine2($line2)
|
||||||
|
{
|
||||||
|
$this->line2 = $line2;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getLine3()
|
||||||
|
{
|
||||||
|
return $this->line3;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $line3
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setLine3($line3)
|
||||||
|
{
|
||||||
|
$this->line3 = $line3;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCountryCode()
|
||||||
|
{
|
||||||
|
return $this->countryCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $countryCode
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setCountryCode($countryCode)
|
||||||
|
{
|
||||||
|
$this->countryCode = $countryCode;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCity()
|
||||||
|
{
|
||||||
|
return $this->city;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $city
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setCity($city)
|
||||||
|
{
|
||||||
|
$this->city = $city;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getZipCode()
|
||||||
|
{
|
||||||
|
return $this->zipCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $zipCode
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setZipCode($zipCode)
|
||||||
|
{
|
||||||
|
$this->zipCode = $zipCode;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
44
local/modules/ColissimoLabel/Request/Helper/Addressee.php
Normal file
44
local/modules/ColissimoLabel/Request/Helper/Addressee.php
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Addressee
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
protected $addresseeParcelRef;
|
||||||
|
|
||||||
|
/** @var Address */
|
||||||
|
protected $address;
|
||||||
|
|
||||||
|
public function __construct(Address $address)
|
||||||
|
{
|
||||||
|
$this->address = $address;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getAddresseeParcelRef()
|
||||||
|
{
|
||||||
|
return $this->addresseeParcelRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $addresseeParcelRef
|
||||||
|
*/
|
||||||
|
public function setAddresseeParcelRef($addresseeParcelRef)
|
||||||
|
{
|
||||||
|
$this->addresseeParcelRef = $addresseeParcelRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function getAddress()
|
||||||
|
{
|
||||||
|
return $this->address;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class BordereauRequestAPIConfiguration extends APIConfiguration
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->setMethod('generateBordereauByParcelsNumbers');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class LabelRequestAPIConfiguration extends APIConfiguration
|
||||||
|
{
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->setMethod('generateLabel');
|
||||||
|
}
|
||||||
|
}
|
||||||
65
local/modules/ColissimoLabel/Request/Helper/Letter.php
Normal file
65
local/modules/ColissimoLabel/Request/Helper/Letter.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Letter
|
||||||
|
{
|
||||||
|
/** @var Sender */
|
||||||
|
protected $sender;
|
||||||
|
|
||||||
|
/** @var Addressee */
|
||||||
|
protected $addressee;
|
||||||
|
|
||||||
|
/** @var Parcel */
|
||||||
|
protected $parcel;
|
||||||
|
|
||||||
|
/** @var Service */
|
||||||
|
protected $service;
|
||||||
|
|
||||||
|
public function __construct(
|
||||||
|
Service $service,
|
||||||
|
Sender $sender,
|
||||||
|
Addressee $addressee,
|
||||||
|
Parcel $parcel
|
||||||
|
) {
|
||||||
|
$this->sender = $sender;
|
||||||
|
$this->addressee = $addressee;
|
||||||
|
$this->parcel = $parcel;
|
||||||
|
$this->service = $service;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Service
|
||||||
|
*/
|
||||||
|
public function getService()
|
||||||
|
{
|
||||||
|
return $this->service;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Sender
|
||||||
|
*/
|
||||||
|
public function getSender()
|
||||||
|
{
|
||||||
|
return $this->sender;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Addressee
|
||||||
|
*/
|
||||||
|
public function getAddressee()
|
||||||
|
{
|
||||||
|
return $this->addressee;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Parcel
|
||||||
|
*/
|
||||||
|
public function getParcel()
|
||||||
|
{
|
||||||
|
return $this->parcel;
|
||||||
|
}
|
||||||
|
}
|
||||||
86
local/modules/ColissimoLabel/Request/Helper/OutputFormat.php
Normal file
86
local/modules/ColissimoLabel/Request/Helper/OutputFormat.php
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
use ColissimoLabel\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class OutputFormat
|
||||||
|
{
|
||||||
|
const OUTPUT_PRINTING_TYPE = [
|
||||||
|
0 => 'ZPL_10x15_203dpi',
|
||||||
|
1 => 'ZPL_10x15_300dpi',
|
||||||
|
2 => 'DPL_10x15_203dpi',
|
||||||
|
3 => 'DPL_10x15_300dpi',
|
||||||
|
4 => 'PDF_10x15_300dpi',
|
||||||
|
5 => 'PDF_A4_300dpi'
|
||||||
|
];
|
||||||
|
|
||||||
|
const OUTPUT_PRINTING_TYPE_DEFAULT = self::OUTPUT_PRINTING_TYPE[4];
|
||||||
|
|
||||||
|
protected $x = 0;
|
||||||
|
|
||||||
|
protected $y = 0;
|
||||||
|
|
||||||
|
protected $outputPrintingType = self::OUTPUT_PRINTING_TYPE_DEFAULT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getX()
|
||||||
|
{
|
||||||
|
return $this->x;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $x
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setX($x)
|
||||||
|
{
|
||||||
|
$this->x = (int) $x;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getY()
|
||||||
|
{
|
||||||
|
return $this->y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $y
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setY($y)
|
||||||
|
{
|
||||||
|
$this->y = (int) $y;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string value of the list ColissimoAPI\Request\Helper\LabelOutputFormat::OUTPUT_PRINTING_TYPE
|
||||||
|
*/
|
||||||
|
public function getOutputPrintingType()
|
||||||
|
{
|
||||||
|
return $this->outputPrintingType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $outputPrintingType value of the list ColissimoAPI\Request\Helper\LabelOutputFormat::OUTPUT_PRINTING_TYPE
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setOutputPrintingType($outputPrintingType)
|
||||||
|
{
|
||||||
|
if (\in_array($outputPrintingType, self::OUTPUT_PRINTING_TYPE)) {
|
||||||
|
new InvalidArgumentException('Invalid value "' . $outputPrintingType . '" for argument $outputPrintingType');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->outputPrintingType = $outputPrintingType;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
local/modules/ColissimoLabel/Request/Helper/Parcel.php
Normal file
74
local/modules/ColissimoLabel/Request/Helper/Parcel.php
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Parcel
|
||||||
|
{
|
||||||
|
protected $weight = 0;
|
||||||
|
|
||||||
|
protected $instructions = '';
|
||||||
|
|
||||||
|
protected $pickupLocationId;
|
||||||
|
|
||||||
|
public function __construct($weight)
|
||||||
|
{
|
||||||
|
$this->weight = (float) $weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getWeight()
|
||||||
|
{
|
||||||
|
return $this->weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $weight
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setWeight($weight)
|
||||||
|
{
|
||||||
|
$this->weight = $weight;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getInstructions()
|
||||||
|
{
|
||||||
|
return $this->instructions;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $instructions
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setInstructions($instructions)
|
||||||
|
{
|
||||||
|
$this->instructions = $instructions;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getPickupLocationId()
|
||||||
|
{
|
||||||
|
return $this->pickupLocationId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $pickupLocationId
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setPickupLocationId($pickupLocationId)
|
||||||
|
{
|
||||||
|
$this->pickupLocationId = $pickupLocationId;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
46
local/modules/ColissimoLabel/Request/Helper/Sender.php
Normal file
46
local/modules/ColissimoLabel/Request/Helper/Sender.php
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Sender
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
protected $senderParcelRef;
|
||||||
|
|
||||||
|
/** @var Address */
|
||||||
|
protected $address;
|
||||||
|
|
||||||
|
public function __construct(Address $address)
|
||||||
|
{
|
||||||
|
$this->address = $address;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getSenderParcelRef()
|
||||||
|
{
|
||||||
|
return $this->senderParcelRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $senderParcelRef
|
||||||
|
* @return self
|
||||||
|
*/
|
||||||
|
public function setSenderParcelRef($senderParcelRef)
|
||||||
|
{
|
||||||
|
$this->senderParcelRef = $senderParcelRef;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Address
|
||||||
|
*/
|
||||||
|
public function getAddress()
|
||||||
|
{
|
||||||
|
return $this->address;
|
||||||
|
}
|
||||||
|
}
|
||||||
136
local/modules/ColissimoLabel/Request/Helper/Service.php
Normal file
136
local/modules/ColissimoLabel/Request/Helper/Service.php
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Helper;
|
||||||
|
|
||||||
|
use ColissimoLabel\Exception\InvalidArgumentException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class Service
|
||||||
|
{
|
||||||
|
const PRODUCT_CODE_LIST = [
|
||||||
|
0 => 'DOM',
|
||||||
|
1 => 'COLD',
|
||||||
|
2 => 'DOS',
|
||||||
|
3 => 'COL',
|
||||||
|
4 => 'BPR',
|
||||||
|
5 => 'A2P',
|
||||||
|
6 => 'CORE',
|
||||||
|
7 => 'COLR',
|
||||||
|
8 => 'J+1 ',
|
||||||
|
9 => 'CORI',
|
||||||
|
10 => 'COM',
|
||||||
|
11 => 'CDS',
|
||||||
|
12 => 'ECO',
|
||||||
|
13 => 'CORI',
|
||||||
|
14 => 'COLI',
|
||||||
|
15 => 'ACCI',
|
||||||
|
16 => 'CMT',
|
||||||
|
17 => 'PCS',
|
||||||
|
18 => 'DOM',
|
||||||
|
19 => 'DOS',
|
||||||
|
20 => 'BDP'
|
||||||
|
];
|
||||||
|
|
||||||
|
const PRODUCT_CODE_LIST_COMMERCIAL_NAME = [
|
||||||
|
0 => 'France Colissimo Domicile - sans signature',
|
||||||
|
1 => 'France Colissimo Domicile - sans signature',
|
||||||
|
2 => 'France Colissimo Domicile - avec signature',
|
||||||
|
3 => 'France Colissimo Domicile - avec signature',
|
||||||
|
4 => 'France Colissimo - Point Retrait – en Bureau de Poste ** ',
|
||||||
|
5 => 'France Colissimo - Point Retrait – en relais Pickup ou en consigne Pickup Station',
|
||||||
|
6 => 'France Colissimo Retour France',
|
||||||
|
7 => 'France Colissimo Flash - sans signature',
|
||||||
|
8 => 'Colissimo Flash – avec signature',
|
||||||
|
9 => 'Colissimo Retour International ',
|
||||||
|
10 => 'Outre-Mer Colissimo Domicile - sans signature ',
|
||||||
|
11 => 'Outre-Mer Colissimo Domicile - avec signature',
|
||||||
|
12 => 'Outre-Mer Colissimo Eco OM',
|
||||||
|
13 => 'Outre-Mer Colissimo Retour OM',
|
||||||
|
14 => 'International Colissimo Expert International',
|
||||||
|
15 => 'International Offre Economique Grand Export (offre en test pour la Chine pour un client Pilote)',
|
||||||
|
16 => 'International (Europe) Colissimo - Point Retrait – en relais ****',
|
||||||
|
17 => 'International (Europe) Colissimo - Point Retrait – Consigne Pickup Station – Sauf France et Belgique',
|
||||||
|
18 => 'International (Europe) Colissimo Domicile - sans signature ****',
|
||||||
|
19 => 'International (Europe) Colissimo Domicile - avec signature ****',
|
||||||
|
20 => 'International (Europe) Colissimo Point Retrait – en bureau de poste ****'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
protected $productCode = '';
|
||||||
|
|
||||||
|
/** @var \DateTime */
|
||||||
|
protected $depositDate;
|
||||||
|
|
||||||
|
protected $orderNumber = '';
|
||||||
|
|
||||||
|
protected $commercialName = '';
|
||||||
|
|
||||||
|
public function __construct($productCode, \DateTime $depositDate, $orderNumber)
|
||||||
|
{
|
||||||
|
if (empty($orderNumber)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument orderNumber');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($productCode)) {
|
||||||
|
throw new InvalidArgumentException('Invalid argument productCode');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->orderNumber = $orderNumber;
|
||||||
|
$this->depositDate = $depositDate;
|
||||||
|
$this->productCode = $productCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getProductCode()
|
||||||
|
{
|
||||||
|
return $this->productCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $productCode
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setProductCode($productCode)
|
||||||
|
{
|
||||||
|
$this->productCode = $productCode;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \DateTime
|
||||||
|
*/
|
||||||
|
public function getDepositDate()
|
||||||
|
{
|
||||||
|
return $this->depositDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getOrderNumber()
|
||||||
|
{
|
||||||
|
return $this->orderNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCommercialName()
|
||||||
|
{
|
||||||
|
return $this->commercialName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param string $commercialName
|
||||||
|
* @return Service
|
||||||
|
*/
|
||||||
|
public function setCommercialName($commercialName)
|
||||||
|
{
|
||||||
|
$this->commercialName = $commercialName;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
92
local/modules/ColissimoLabel/Request/LabelRequest.php
Normal file
92
local/modules/ColissimoLabel/Request/LabelRequest.php
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request;
|
||||||
|
|
||||||
|
use ColissimoLabel\ColissimoLabel;
|
||||||
|
use ColissimoLabel\Request\Helper\Addressee;
|
||||||
|
use ColissimoLabel\Request\Helper\Letter;
|
||||||
|
use ColissimoLabel\Request\Helper\OutputFormat;
|
||||||
|
use ColissimoLabel\Request\Helper\Parcel;
|
||||||
|
use ColissimoLabel\Request\Helper\Sender;
|
||||||
|
use ColissimoLabel\Request\Helper\Service;
|
||||||
|
use ColissimoLabel\Request\Traits\MethodCreateAddressFromOrderAddress;
|
||||||
|
use ColissimoLabel\Request\Traits\MethodCreateAddressFromStore;
|
||||||
|
use Thelia\Model\Order;
|
||||||
|
use Thelia\Model\OrderAddress;
|
||||||
|
use Thelia\Model\OrderAddressQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class LabelRequest extends AbstractLabelRequest
|
||||||
|
{
|
||||||
|
use MethodCreateAddressFromStore;
|
||||||
|
use MethodCreateAddressFromOrderAddress;
|
||||||
|
|
||||||
|
public function __construct(Order $order, $pickupCode = null, $pickupType = null)
|
||||||
|
{
|
||||||
|
$orderAddress = OrderAddressQuery::create()->findOneById($order->getDeliveryOrderAddressId());
|
||||||
|
|
||||||
|
$this->setLetter(new Letter(
|
||||||
|
new Service(
|
||||||
|
null !== $pickupType ? $pickupType : $this->getProductCode($order),
|
||||||
|
(new \DateTime()),
|
||||||
|
$order->getRef()
|
||||||
|
),
|
||||||
|
new Sender(
|
||||||
|
$this->createAddressFromStore()
|
||||||
|
),
|
||||||
|
new Addressee(
|
||||||
|
$this->createAddressFromOrderAddress(
|
||||||
|
$orderAddress,
|
||||||
|
$order->getCustomer()
|
||||||
|
)
|
||||||
|
),
|
||||||
|
new Parcel(
|
||||||
|
$order->getWeight()
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
if (null !== $pickupCode) {
|
||||||
|
$this->getLetter()->getParcel()->setPickupLocationId($pickupCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
//$this->getLetter()->getAddressee()->setAddresseeParcelRef($order->getRef());
|
||||||
|
$this->getLetter()->getSender()->setSenderParcelRef($order->getRef());
|
||||||
|
|
||||||
|
$this->setOutputFormat(new OutputFormat());
|
||||||
|
|
||||||
|
$this->getOutputFormat()->setOutputPrintingType(
|
||||||
|
ColissimoLabel::getConfigValue(ColissimoLabel::CONFIG_KEY_DEFAULT_LABEL_FORMAT)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getProductCode(Order $order)
|
||||||
|
{
|
||||||
|
/** @var OrderAddress $deliveryAddress */
|
||||||
|
$deliveryAddress = $order->getOrderAddressRelatedByDeliveryOrderAddressId();
|
||||||
|
|
||||||
|
$code = $deliveryAddress->getCountry()->getIsocode();
|
||||||
|
|
||||||
|
// france case
|
||||||
|
if ($code == '250') {
|
||||||
|
return Service::PRODUCT_CODE_LIST[0];
|
||||||
|
} elseif (in_array( // europe
|
||||||
|
$code,
|
||||||
|
[
|
||||||
|
"040", "056", "100", "191", "196", "203", "208", "233", "246", "250", "276", "300", "348", "372", "380", "428", "440", "442", "470", "528", "616", "620", "642", "705", "724", "752", "826"
|
||||||
|
]
|
||||||
|
)) {
|
||||||
|
return Service::PRODUCT_CODE_LIST[0];
|
||||||
|
} elseif (in_array( // europe
|
||||||
|
$code,
|
||||||
|
[
|
||||||
|
"312", "254", "666", "474", "638", "175"
|
||||||
|
]
|
||||||
|
)) { // outre mer
|
||||||
|
return Service::PRODUCT_CODE_LIST[10];
|
||||||
|
} else { // other
|
||||||
|
return Service::PRODUCT_CODE_LIST[14];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Traits;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\Helper\Address;
|
||||||
|
use Thelia\Model\Customer;
|
||||||
|
use Thelia\Model\LangQuery;
|
||||||
|
use Thelia\Model\OrderAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
trait MethodCreateAddressFromOrderAddress
|
||||||
|
{
|
||||||
|
public function createAddressFromOrderAddress(OrderAddress $orderAddress, Customer $customer)
|
||||||
|
{
|
||||||
|
return (new Address())
|
||||||
|
->setCompanyName($orderAddress->getCompany())
|
||||||
|
->setFirstName($orderAddress->getFirstname())
|
||||||
|
->setLastName($orderAddress->getLastname())
|
||||||
|
->setCity($orderAddress->getCity())
|
||||||
|
->setZipCode($orderAddress->getZipcode())
|
||||||
|
->setCountryCode($orderAddress->getCountry()->getIsoalpha2())
|
||||||
|
->setLine2($orderAddress->getAddress1())
|
||||||
|
->setLine3($orderAddress->getAddress2())
|
||||||
|
->setPhoneNumber(trim(str_replace(' ', '', $orderAddress->getPhone())))
|
||||||
|
->setMobileNumber(trim(str_replace(' ', '', $orderAddress->getCellphone())))
|
||||||
|
->setEmail($customer->getEmail())
|
||||||
|
->setLanguage(strtoupper(LangQuery::create()->filterByByDefault(true)->findOne()->getCode()))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Request\Traits;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\Helper\Address;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Thelia\Model\CountryQuery;
|
||||||
|
use Thelia\Model\LangQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
trait MethodCreateAddressFromStore
|
||||||
|
{
|
||||||
|
public function createAddressFromStore()
|
||||||
|
{
|
||||||
|
return (new Address())
|
||||||
|
->setCompanyName(ConfigQuery::read('store_name'))
|
||||||
|
->setCity(ConfigQuery::read('store_city'))
|
||||||
|
->setZipCode(ConfigQuery::read('store_zipcode'))
|
||||||
|
->setCountryCode(CountryQuery::create()->findOneById(ConfigQuery::read('store_country'))->getIsoalpha2())
|
||||||
|
->setLine2(ConfigQuery::read('store_address1'))
|
||||||
|
->setLine3(ConfigQuery::read('store_address2'))
|
||||||
|
->setEmail(trim(ConfigQuery::read('store_email')))
|
||||||
|
->setPhoneNumber(trim(str_replace(' ', '', ConfigQuery::read('store_phone'))))
|
||||||
|
->setLanguage(strtoupper(LangQuery::create()->filterByByDefault(true)->findOne()->getCode()))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
78
local/modules/ColissimoLabel/Response/BordereauResponse.php
Normal file
78
local/modules/ColissimoLabel/Response/BordereauResponse.php
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class BordereauResponse
|
||||||
|
{
|
||||||
|
const UUID = '/--uuid:/'; //This is the separator of each part of the response
|
||||||
|
const CONTENT = 'Content-';
|
||||||
|
|
||||||
|
public $soapResponse;
|
||||||
|
public $attachments = [];
|
||||||
|
public $uuid;
|
||||||
|
|
||||||
|
public function __construct($soapResponse)
|
||||||
|
{
|
||||||
|
$this->soapResponse = $soapResponse;
|
||||||
|
|
||||||
|
$this->parseResponse($soapResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function parseResponse($response)
|
||||||
|
{
|
||||||
|
$content = array ();
|
||||||
|
$matches = array ();
|
||||||
|
preg_match_all(self::UUID, $response, $matches, PREG_OFFSET_CAPTURE);
|
||||||
|
|
||||||
|
for($i = 0; $i < count ( $matches [0] ) -1; $i ++) {
|
||||||
|
if ($i + 1 < count ( $matches [0] )) {
|
||||||
|
$content [$i] = substr ( $response, $matches [0] [$i] [1], $matches [0] [$i + 1] [1] - $matches [0][$i] [1] );
|
||||||
|
} else {
|
||||||
|
$content [$i] = substr ( $response, $matches [0] [$i] [1], strlen ( $response ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( $content as $part ) {
|
||||||
|
if ($this->uuid == null) {
|
||||||
|
$uuidStart = 0;
|
||||||
|
$uuidEnd = 0;
|
||||||
|
$uuidStart = strpos($part, self::UUID, 0) + strlen(self::UUID);
|
||||||
|
$uuidEnd = strpos($part, "\r\n", $uuidStart);
|
||||||
|
$this->uuid = substr($part, $uuidStart, $uuidEnd - $uuidStart);
|
||||||
|
}
|
||||||
|
$header = $this->extractHeader($part);
|
||||||
|
if(count($header) > 0) {
|
||||||
|
if (strpos($header['Content-Type'], 'type="text/xml"') !== FALSE) {
|
||||||
|
$this->soapResponse['header'] = $header;
|
||||||
|
$this->soapResponse['data'] = trim(substr($part, $header['offsetEnd']));
|
||||||
|
} else {
|
||||||
|
$attachment['header'] = $header;
|
||||||
|
$attachment['data'] = trim(substr($part, $header['offsetEnd']));
|
||||||
|
array_push($this->attachments, $attachment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude the header from the Web Service response * @param string $part
|
||||||
|
* @return array $header
|
||||||
|
*/
|
||||||
|
private function extractHeader($part)
|
||||||
|
{
|
||||||
|
$header = array();
|
||||||
|
$headerLineStart = strpos($part, self::CONTENT, 0);
|
||||||
|
$endLine = 0;
|
||||||
|
while($headerLineStart !== FALSE) {
|
||||||
|
$header['offsetStart'] = $headerLineStart;
|
||||||
|
$endLine = strpos($part, "\r\n", $headerLineStart);
|
||||||
|
$headerLine = explode(': ', substr($part, $headerLineStart, $endLine-$headerLineStart)); $header[$headerLine[0]] = $headerLine[1];
|
||||||
|
$headerLineStart = strpos($part, self::CONTENT, $endLine);
|
||||||
|
}
|
||||||
|
$header['offsetEnd'] = $endLine;
|
||||||
|
return $header;
|
||||||
|
}
|
||||||
|
}
|
||||||
155
local/modules/ColissimoLabel/Response/LabelResponse.php
Normal file
155
local/modules/ColissimoLabel/Response/LabelResponse.php
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class LabelResponse
|
||||||
|
{
|
||||||
|
const UUID = '/--uuid:/'; //This is the separator of each part of the response
|
||||||
|
const CONTENT = 'Content-';
|
||||||
|
|
||||||
|
protected $soapResponse;
|
||||||
|
protected $cacheAttachments = [];
|
||||||
|
protected $cacheSoapResponse = [];
|
||||||
|
protected $uuid;
|
||||||
|
|
||||||
|
public function __construct($soapResponse)
|
||||||
|
{
|
||||||
|
$this->soapResponse = $soapResponse;
|
||||||
|
|
||||||
|
$this->parseResponse($soapResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFile()
|
||||||
|
{
|
||||||
|
if ($this->isValid()) {
|
||||||
|
return $this->cacheAttachments[0]["data"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getParcelNumber()
|
||||||
|
{
|
||||||
|
if ($this->isValid()) {
|
||||||
|
$pieces = explode("<parcelNumber>", $this->cacheSoapResponse["data"]);
|
||||||
|
$pieces = explode("</parcelNumber>", $pieces[1]);
|
||||||
|
|
||||||
|
return $pieces[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasFileCN23()
|
||||||
|
{
|
||||||
|
if ($this->isValid()) {
|
||||||
|
return isset($this->cacheAttachments[1]["data"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getFileCN23()
|
||||||
|
{
|
||||||
|
if ($this->isValid()) {
|
||||||
|
if (\count($this->cacheAttachments) > 1) {
|
||||||
|
$this->cacheAttachments[1]["data"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function isValid()
|
||||||
|
{
|
||||||
|
if (!isset($this->cacheSoapResponse["data"])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$soapResult = $this->cacheSoapResponse["data"];
|
||||||
|
$errorCode = explode("<id>", $soapResult);
|
||||||
|
$errorCode = explode("</id>", $errorCode[1]);
|
||||||
|
//- Parse Web Service Response
|
||||||
|
//+ Error handling and label saving
|
||||||
|
if ($errorCode[0] == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getError()
|
||||||
|
{
|
||||||
|
if (!isset($this->cacheSoapResponse["data"])) {
|
||||||
|
return [$this->soapResponse];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->isValid()) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$soapResult = $this->cacheSoapResponse["data"];
|
||||||
|
$errorCode = explode("<id>", $soapResult);
|
||||||
|
$errorCode = explode("</id>", $errorCode[1]);
|
||||||
|
|
||||||
|
$errorMessage = explode("<messageContent>", $this->cacheSoapResponse["data"]);
|
||||||
|
$errorMessage = explode("</messageContent>", $errorMessage[1]);
|
||||||
|
|
||||||
|
return [$errorCode[0] => $errorMessage];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function parseResponse($response)
|
||||||
|
{
|
||||||
|
$content = array ();
|
||||||
|
$matches = array ();
|
||||||
|
preg_match_all(self::UUID, $response, $matches, PREG_OFFSET_CAPTURE);
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($matches[0]) -1; $i++) {
|
||||||
|
if ($i + 1 < count($matches[0])) {
|
||||||
|
$content[$i] = substr($response, $matches[0][$i][1], $matches[0][$i + 1][1] - $matches[0][$i][1]);
|
||||||
|
} else {
|
||||||
|
$content[$i] = substr($response, $matches[0][$i][1], strlen($response));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($content as $part) {
|
||||||
|
if ($this->uuid == null) {
|
||||||
|
$uuidStart = strpos($part, self::UUID, 0)+strlen(self::UUID);
|
||||||
|
$uuidEnd = strpos($part, "\r\n", $uuidStart);
|
||||||
|
$this->uuid = substr($part, $uuidStart, $uuidEnd-$uuidStart);
|
||||||
|
}
|
||||||
|
$header = $this->extractHeader($part);
|
||||||
|
if (count($header) > 0) {
|
||||||
|
if (false !== strpos($header['Content-Type'], 'type="text/xml"')) {
|
||||||
|
$this->cacheSoapResponse['header'] = $header;
|
||||||
|
$this->cacheSoapResponse['data'] = trim(substr($part, $header['offsetEnd']));
|
||||||
|
} else {
|
||||||
|
$attachment['header'] = $header;
|
||||||
|
$attachment['data'] = trim(substr($part, $header['offsetEnd']));
|
||||||
|
array_push($this->cacheAttachments, $attachment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function extractHeader($part)
|
||||||
|
{
|
||||||
|
$header = array();
|
||||||
|
$headerLineStart = strpos($part, self::CONTENT, 0);
|
||||||
|
$endLine = 0;
|
||||||
|
while (false !== $headerLineStart) {
|
||||||
|
$header['offsetStart'] = $headerLineStart;
|
||||||
|
$endLine = strpos($part, "\r\n", $headerLineStart);
|
||||||
|
$headerLine = explode(': ', substr($part, $headerLineStart, $endLine-$headerLineStart));
|
||||||
|
$header[$headerLine[0]] = $headerLine[1];
|
||||||
|
$headerLineStart = strpos($part, self::CONTENT, $endLine);
|
||||||
|
}
|
||||||
|
$header['offsetEnd'] = $endLine;
|
||||||
|
return $header;
|
||||||
|
}
|
||||||
|
}
|
||||||
86
local/modules/ColissimoLabel/Service/SOAPService.php
Normal file
86
local/modules/ColissimoLabel/Service/SOAPService.php
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoLabel\Service;
|
||||||
|
|
||||||
|
use ColissimoLabel\Request\AbstractRequest;
|
||||||
|
use ColissimoLabel\Request\Helper\APIConfiguration;
|
||||||
|
use ColissimoLabel\Response\BordereauResponse;
|
||||||
|
use ColissimoLabel\Response\LabelResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Gilles Bourgeat >gilles.bourgeat@gmail.com>
|
||||||
|
*/
|
||||||
|
class SOAPService
|
||||||
|
{
|
||||||
|
public function callGenerateBordereauByParcelsNumbersAPI(APIConfiguration $APIConfiguration, $parcelNumbers = [])
|
||||||
|
{
|
||||||
|
//+ Generate SOAPRequest
|
||||||
|
$xml = new \SimpleXMLElement('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" />');
|
||||||
|
$xml->addChild("soapenv:Header");
|
||||||
|
$children = $xml->addChild("soapenv:Body");
|
||||||
|
$children = $children->addChild("sls:generateBordereauByParcelsNumbers", null, 'http://sls.ws.coliposte.fr');
|
||||||
|
$children->addChild("contractNumber", $APIConfiguration->getContractNumber(), "");
|
||||||
|
$children->addChild("password", $APIConfiguration->getPassword(), "");
|
||||||
|
$children = $children->addChild("generateBordereauParcelNumberList", null, "");
|
||||||
|
|
||||||
|
foreach ($parcelNumbers as $parcelNumber)
|
||||||
|
{
|
||||||
|
$children->addChild("parcelsNumbers", $parcelNumber, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
$soap = new \SoapClient($APIConfiguration->getWsdl());
|
||||||
|
|
||||||
|
return new BordereauResponse($soap->__doRequest(
|
||||||
|
$xml->asXML(),
|
||||||
|
$APIConfiguration->getWsdl(),
|
||||||
|
$APIConfiguration->getMethod(),
|
||||||
|
$APIConfiguration->getVersion(),
|
||||||
|
0
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function callAPI(APIConfiguration $APIConfiguration, AbstractRequest $request)
|
||||||
|
{
|
||||||
|
$request->setContractNumber($APIConfiguration->getContractNumber());
|
||||||
|
$request->setPassword($APIConfiguration->getPassword());
|
||||||
|
|
||||||
|
//+ Generate SOAPRequest
|
||||||
|
$xml = new \SimpleXMLElement('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" />');
|
||||||
|
$xml->addChild("soapenv:Header");
|
||||||
|
$children = $xml->addChild("soapenv:Body");
|
||||||
|
$children = $children->addChild("sls:generateLabel", null, 'http://sls.ws.coliposte.fr');
|
||||||
|
$children = $children->addChild("generateLabelRequest", null, "");
|
||||||
|
|
||||||
|
$this->arrayToXml($request->generateArrayRequest(), $children);
|
||||||
|
|
||||||
|
$soap = new \SoapClient($APIConfiguration->getWsdl());
|
||||||
|
|
||||||
|
return new LabelResponse($soap->__doRequest(
|
||||||
|
$xml->asXML(),
|
||||||
|
$APIConfiguration->getWsdl(),
|
||||||
|
$APIConfiguration->getMethod(),
|
||||||
|
$APIConfiguration->getVersion(),
|
||||||
|
0
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function arrayToXml(array $soapRequest, \SimpleXMLElement $soapRequestXml)
|
||||||
|
{
|
||||||
|
foreach ($soapRequest as $key => $value) {
|
||||||
|
if ($value === null || empty($value)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (is_array($value)) {
|
||||||
|
if (!is_numeric($key)) {
|
||||||
|
$subnode = $soapRequestXml->addChild($key);
|
||||||
|
$this->arrayToXml($value, $subnode);
|
||||||
|
} else {
|
||||||
|
$subnode = $soapRequestXml->addChild("item" . $key);
|
||||||
|
$this->arrayToXml($value, $subnode);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$soapRequestXml->addChild($key, htmlspecialchars($value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
local/modules/ColissimoLabel/composer.json
Normal file
11
local/modules/ColissimoLabel/composer.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "thelia/colissimo-label-module",
|
||||||
|
"license": "LGPL-3.0+",
|
||||||
|
"type": "thelia-module",
|
||||||
|
"require": {
|
||||||
|
"thelia/installer": "~1.1"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"installer-name": "ColissimoLabel"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{extends file="admin-layout.tpl"}
|
||||||
|
|
||||||
|
{block name="check-resource"}admin.order{/block}
|
||||||
|
{block name="check-access"}view{/block}
|
||||||
|
{block name="page-title"}Bordereaux Colissimo{/block}
|
||||||
|
|
||||||
|
{block name="after-admin-css"}
|
||||||
|
{/block}
|
||||||
|
|
||||||
|
{block name="main-content"}
|
||||||
|
<div id="wrapper" class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 general-block-decorator">
|
||||||
|
<div class="row">
|
||||||
|
<a href="{url path="/admin/module/colissimolabel/bordereau/generate"}" class="btn btn-block btn-info">
|
||||||
|
{intl l="Generate bordereau for label since : %date" date="{format_date date=$lastBordereauDate}" d="colissimolabel.bo.default"}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-12 general-block-decorator">
|
||||||
|
<div class="row">
|
||||||
|
<ul>
|
||||||
|
{foreach from=$bordereaux item=bordereau}
|
||||||
|
<li>
|
||||||
|
<a href="{url path="/admin/module/colissimolabel/bordereau/download" filePath="{$bordereau['path']}"}">
|
||||||
|
{$bordereau['name']}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{/foreach}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/block}
|
||||||
|
|
||||||
|
{block name="javascript-last-call"}
|
||||||
|
{/block}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<li class="" id="module_menu_colissimo_label">
|
||||||
|
<a title="Modules" href="{url path="/admin/module/colissimolabel/bordereau/list"}">
|
||||||
|
<span class="icon-orders"></span>
|
||||||
|
<span class="item-text">Bordereaux Colissimo</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
@@ -0,0 +1,201 @@
|
|||||||
|
{loop type="order" name="the-order" id=$order_id customer="*" backend_context=true}
|
||||||
|
{$enable = false}
|
||||||
|
{loop type="module" name="module-order" active="yes" backend_context=true id=$DELIVERY_MODULE_ID}
|
||||||
|
{if $CODE === "Colissimo" || $CODE === "SoColissimo"}
|
||||||
|
{$enable = true}
|
||||||
|
{/if}
|
||||||
|
{/loop}
|
||||||
|
|
||||||
|
{if $enable}
|
||||||
|
<div class="modal fade" id="modal-colissimo-label" tabindex="-1" role="dialog" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Fermer">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
<h4 class="modal-title" id="exampleModalLabel">{intl l="Labels Colissimo" d="colissimolabel.bo.default"}</h4>
|
||||||
|
</div>
|
||||||
|
<form action="{url path="/admin/module/colissimolabel/order/{$order_id}/generate-label"}">
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="form-inline">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="colissimo-input-weight">{intl l="Shipping weight :" d="colissimolabel.bo.default"}</label>
|
||||||
|
<div class="input-group">
|
||||||
|
{$weightValue = {$WEIGHT|round:2}}
|
||||||
|
{if !$preFillWeightInput || $weightValue == 0}
|
||||||
|
{$weightValue = ''}
|
||||||
|
{/if}
|
||||||
|
<input id="colissimo-input-weight" type="number" required class="form-control" name="weight" min="0" step="0.01" value="{$weightValue}" style="width: 150px;"/>
|
||||||
|
<div class="input-group-addon"> / kg</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-iframe hide">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="modal-loader hide text-center">
|
||||||
|
{intl l="Please wait ..." d="colissimolabel.bo.default"}
|
||||||
|
</div>
|
||||||
|
<div class="modal-error hide">
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">{intl l="Cancel" d="colissimolabel.bo.default"}</button>
|
||||||
|
<button type="submit" name="target" value="print" class="btn btn-primary">{intl l="Print" d="colissimolabel.bo.default"}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/html" id="colissimo-label-tpl">
|
||||||
|
<table class="table table-striped" id="colissimo-label-table" data-url="{url path="/admin/module/colissimolabel/order/{$order_id}/ajax-get-labels"}">
|
||||||
|
<caption>
|
||||||
|
{intl l="Labels Colissimo" d="colissimolabel.bo.default"}
|
||||||
|
<button class="btn btn-primary pull-right" name="target" data-toggle="modal" data-target="#modal-colissimo-label">
|
||||||
|
{intl l="Generate new label" d="colissimolabel.bo.default"}
|
||||||
|
</button>
|
||||||
|
</caption>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
{intl l="Number" d="colissimolabel.bo.default"}
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
{intl l="Weight" d="colissimolabel.bo.default"}
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
{intl l="Date" d="colissimolabel.bo.default"}
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
{intl l="Tracking URL" d="colissimolabel.bo.default"}
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{include file="colissimo-label/label-list.html"}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
(function(){
|
||||||
|
// ajout de bloque colissimo
|
||||||
|
$('#bill').prepend($('#colissimo-label-tpl').html());
|
||||||
|
|
||||||
|
var $modal = $('#modal-colissimo-label'),
|
||||||
|
$modalBody = $modal.find('.modal-body'),
|
||||||
|
$modalFooter = $modal.find('.modal-footer'),
|
||||||
|
$modalError = $modal.find('.modal-error'),
|
||||||
|
$modalLoader = $modal.find('.modal-loader'),
|
||||||
|
$modalErrorAlert = $modalError.find('.alert'),
|
||||||
|
$modalInputWeight = $modal.find("input[name='weight']"),
|
||||||
|
$table = $('#colissimo-label-table');
|
||||||
|
|
||||||
|
function print(url, number) {
|
||||||
|
var iframeName = 'iframe-colissimo-label-' + number;
|
||||||
|
|
||||||
|
if (typeof window.frames[iframeName] !== 'undefined') {
|
||||||
|
window.frames[iframeName].remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
var iframe = document.createElement('iframe');
|
||||||
|
iframe.src = url;
|
||||||
|
iframe.id = iframeName;
|
||||||
|
iframe.name = iframeName;
|
||||||
|
iframe.style.display = "none";
|
||||||
|
$('body').append(iframe);
|
||||||
|
window.frames[iframeName].onload = function() {
|
||||||
|
window.frames[iframeName].focus();
|
||||||
|
window.frames[iframeName].print();
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshTable() {
|
||||||
|
var request = $.ajax({
|
||||||
|
url: $table.data('url')
|
||||||
|
});
|
||||||
|
|
||||||
|
request.done(function(html) {
|
||||||
|
$table.find('tbody').html(html);
|
||||||
|
});
|
||||||
|
|
||||||
|
request.fail(function(jqXHR, textStatus) {
|
||||||
|
$table.find('tbody').html('<tr><td colspan="99">' + textStatus + '</td></tr>');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$modal.on('show.bs.modal', function (event) {
|
||||||
|
$modalInputWeight.focus();
|
||||||
|
$modalBody.removeClass('hide');
|
||||||
|
$modalFooter.removeClass('hide');
|
||||||
|
$modalLoader.addClass('hide');
|
||||||
|
$modalError.addClass('hide');
|
||||||
|
$modalErrorAlert.html('')
|
||||||
|
});
|
||||||
|
|
||||||
|
$modal.on('shown.bs.modal', function (event) {
|
||||||
|
$modalInputWeight.focus();
|
||||||
|
|
||||||
|
var elem = $modalInputWeight[0];
|
||||||
|
|
||||||
|
var val = elem.value; //store the value of the element
|
||||||
|
elem.value = ''; //clear the value of the element
|
||||||
|
elem.value = val;
|
||||||
|
});
|
||||||
|
|
||||||
|
// modal action print
|
||||||
|
$table.on('click', '.js-action-print', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
print($(this).attr('href'), this.dataset.number);
|
||||||
|
});
|
||||||
|
|
||||||
|
$modal.find('form').on('submit', function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
$modalBody.addClass('hide');
|
||||||
|
$modalFooter.addClass('hide');
|
||||||
|
$modalLoader.removeClass('hide');
|
||||||
|
|
||||||
|
var request = $.ajax({
|
||||||
|
url: $(this).attr('action'),
|
||||||
|
data: $(this).serialize(),
|
||||||
|
type: 'GET',
|
||||||
|
dataType: 'json'
|
||||||
|
});
|
||||||
|
|
||||||
|
request.done(function(json) {
|
||||||
|
$modalLoader.addClass('hide');
|
||||||
|
if (json.error) {
|
||||||
|
$modalError.removeClass('hide');
|
||||||
|
$modalErrorAlert.html('');
|
||||||
|
|
||||||
|
for (var i in json.error) {
|
||||||
|
$modalErrorAlert.html('Code : ' + i + ' : ' + ((Array.isArray(json.error[i])) ? json.error[i][0] : json.error[i]));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$('input[name="delivery_ref"]').val(json.number);
|
||||||
|
|
||||||
|
print(json.url, json.number);
|
||||||
|
refreshTable();
|
||||||
|
$modal.modal('hide');
|
||||||
|
|
||||||
|
$('select[name="status_id"]').val(json.order.status.id).selectpicker('refresh');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
request.fail(function(jqXHR, textStatus) {
|
||||||
|
$modalLoader.addClass('hide');
|
||||||
|
$modalError.removeClass('hide');
|
||||||
|
$modalErrorAlert.html(textStatus);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
{/if}
|
||||||
|
{/loop}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
{ifloop rel="colissimo-label"}
|
||||||
|
{loop type="colissimo-label" name="colissimo-label" order_id=$order_id}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{$NUMBER}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{$WEIGHT} / Kg
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{format_date date=$CREATE_DATE}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="https://www.laposte.fr/particulier/outils/suivre-vos-envois?code={$NUMBER}" target="_blank">https://www.laposte.fr/particulier/outils/suivre-vos-envois?code={$NUMBER}</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-primary pull-right" href="{url path="/admin/module/colissimolabel/label/{$NUMBER}" download=1}">{intl l="Download" d="colissimolabel.bo.default"}</a>
|
||||||
|
<a class="btn btn-info pull-right" target="_blank" href="{url path="/admin/module/colissimolabel/label/{$NUMBER}"}">{intl l="View" d="colissimolabel.bo.default"}</a>
|
||||||
|
<a class="btn btn-success pull-right js-action-print" data-number="{$NUMBER}" href="{url path="/admin/module/colissimolabel/label/{$NUMBER}"}">{intl l="Print" d="colissimolabel.bo.default"}</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/loop}
|
||||||
|
{/ifloop}
|
||||||
|
{elseloop rel="colissimo-label"}
|
||||||
|
<tr>
|
||||||
|
<td colspan="99">
|
||||||
|
{intl l="No existing label for this order" d="colissimolabel.bo.default"}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/elseloop}
|
||||||
26
local/modules/ColissimoWs/.gitignore
vendored
Normal file
26
local/modules/ColissimoWs/.gitignore
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
# General
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
337
local/modules/ColissimoWs/ColissimoWs.php
Normal file
337
local/modules/ColissimoWs/ColissimoWs.php
Normal file
@@ -0,0 +1,337 @@
|
|||||||
|
<?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 ColissimoWs;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshippingQuery;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlices;
|
||||||
|
use PDO;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlicesQuery;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use SoColissimo\Model\SocolissimoDeliveryModeQuery;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Thelia\Model\Country;
|
||||||
|
use Thelia\Model\Message;
|
||||||
|
use Thelia\Model\MessageQuery;
|
||||||
|
use Thelia\Model\ModuleQuery;
|
||||||
|
use Thelia\Model\Order;
|
||||||
|
use Thelia\Module\AbstractDeliveryModule;
|
||||||
|
use Thelia\Module\BaseModule;
|
||||||
|
use Thelia\Module\DeliveryModuleInterface;
|
||||||
|
use Thelia\Module\Exception\DeliveryException;
|
||||||
|
|
||||||
|
class ColissimoWs extends AbstractDeliveryModule
|
||||||
|
{
|
||||||
|
/** @var string */
|
||||||
|
const DOMAIN_NAME = 'colissimows';
|
||||||
|
|
||||||
|
// The shipping confirmation message identifier
|
||||||
|
const CONFIRMATION_MESSAGE_NAME = 'order_confirmation_colissimows';
|
||||||
|
|
||||||
|
// Events
|
||||||
|
const GENERATE_LABEL_EVENT = 'colissimows.generate_label_event';
|
||||||
|
const CLEAR_LABEL_EVENT = 'colissimows.clear_label_event';
|
||||||
|
|
||||||
|
// Configuration parameters
|
||||||
|
const COLISSIMO_USERNAME = 'colissimo_username';
|
||||||
|
const COLISSIMO_PASSWORD = 'colissimo_password';
|
||||||
|
const AFFRANCHISSEMENT_ENDPOINT_URL = 'affranchissement_endpoint_url';
|
||||||
|
const FORMAT_ETIQUETTE = 'format_etiquette';
|
||||||
|
const ACTIVATE_DETAILED_DEBUG = 'activate_detailed_debug';
|
||||||
|
|
||||||
|
const FROM_NAME = 'company_name';
|
||||||
|
const FROM_ADDRESS_1 = 'from_address_1';
|
||||||
|
const FROM_ADDRESS_2 = 'from_address_2';
|
||||||
|
const FROM_CITY = 'from_city';
|
||||||
|
const FROM_ZIPCODE = 'from_zipcode';
|
||||||
|
const FROM_COUNTRY = 'from_country';
|
||||||
|
const FROM_CONTACT_EMAIL = 'from_contact_email';
|
||||||
|
const FROM_PHONE = 'from_phone';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ConnectionInterface|null $con
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function postActivation(ConnectionInterface $con = null)
|
||||||
|
{
|
||||||
|
// Create table if required.
|
||||||
|
try {
|
||||||
|
ColissimowsLabelQuery::create()->findOne();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$database = new \Thelia\Install\Database($con->getWrappedConnection());
|
||||||
|
$database->insertSql(null, [__DIR__ . "/Config/thelia.sql"]);
|
||||||
|
|
||||||
|
self::setConfigValue(self::AFFRANCHISSEMENT_ENDPOINT_URL, 'https://ws.colissimo.fr/sls-ws/SlsServiceWS?wsdl');
|
||||||
|
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_NAME, ConfigQuery::getStoreName());
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_ADDRESS_1, ConfigQuery::read('store_address1'));
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_ADDRESS_2, ConfigQuery::read('store_address2'));
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_CITY, ConfigQuery::read('store_city'));
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_ZIPCODE, ConfigQuery::read('store_zipcode'));
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_CONTACT_EMAIL, ConfigQuery::read('store_email'));
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_COUNTRY, Country::getShopLocation()->getIsoalpha2());
|
||||||
|
self::setConfigValue(ColissimoWs::FROM_PHONE, ConfigQuery::read('store_phone'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === MessageQuery::create()->findOneByName(self::CONFIRMATION_MESSAGE_NAME)) {
|
||||||
|
$message = new Message();
|
||||||
|
|
||||||
|
$message
|
||||||
|
->setName(self::CONFIRMATION_MESSAGE_NAME)
|
||||||
|
->setHtmlLayoutFileName('order_shipped.html')
|
||||||
|
->setTextLayoutFileName('order_shipped.txt')
|
||||||
|
->setLocale('en_US')
|
||||||
|
->setTitle('Order send confirmation')
|
||||||
|
->setSubject('Order send confirmation')
|
||||||
|
|
||||||
|
->setLocale('fr_FR')
|
||||||
|
->setTitle('Confirmation d\'envoi de commande')
|
||||||
|
->setSubject('Confirmation d\'envoi de commande')
|
||||||
|
|
||||||
|
->save()
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getLabelFileType()
|
||||||
|
{
|
||||||
|
return strtolower(substr(ColissimoWs::getConfigValue(ColissimoWs::FORMAT_ETIQUETTE, 'PDF'), 0, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns ids of area containing this country and covers by this module
|
||||||
|
* @param Country $country
|
||||||
|
* @return array Area ids
|
||||||
|
*/
|
||||||
|
private function getAllAreasForCountry(Country $country)
|
||||||
|
{
|
||||||
|
$areaArray = [];
|
||||||
|
|
||||||
|
$sql = "SELECT ca.area_id as area_id FROM country_area ca
|
||||||
|
INNER JOIN area_delivery_module adm ON (ca.area_id = adm.area_id AND adm.delivery_module_id = :p0)
|
||||||
|
WHERE ca.country_id = :p1";
|
||||||
|
|
||||||
|
$con = Propel::getConnection();
|
||||||
|
|
||||||
|
$stmt = $con->prepare($sql);
|
||||||
|
$stmt->bindValue(':p0', $this->getModuleModel()->getId(), PDO::PARAM_INT);
|
||||||
|
$stmt->bindValue(':p1', $country->getId(), PDO::PARAM_INT);
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
while ($row = $stmt->fetch(\PDO::FETCH_ASSOC)) {
|
||||||
|
$areaArray[] = $row['area_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $areaArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $areaId
|
||||||
|
* @param $weight
|
||||||
|
* @param $cartAmount
|
||||||
|
* @param $deliverModeCode
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
* @throws DeliveryException
|
||||||
|
*/
|
||||||
|
public static function getPostageAmount($areaId, $weight, $cartAmount = 0)
|
||||||
|
{
|
||||||
|
//@TODO : Handle Freeshipping (button activation sets a variable in module config ?)
|
||||||
|
//$freeshipping = getFreeshippingActive();
|
||||||
|
$freeshipping = false;
|
||||||
|
|
||||||
|
//@TODO : Handle FreeshippingFrom
|
||||||
|
//$freeshippingFrom = getFreeshippingFrom();
|
||||||
|
$freeshippingFrom = null;
|
||||||
|
|
||||||
|
//@TODO : Handle FreeShippingByArea (needs a dedicated function and probably a dedicated table too)
|
||||||
|
|
||||||
|
|
||||||
|
$postage = 0;
|
||||||
|
|
||||||
|
if (!$freeshipping) {
|
||||||
|
$areaPrices = ColissimowsPriceSlicesQuery::create()
|
||||||
|
->filterByAreaId($areaId)
|
||||||
|
->filterByMaxWeight($weight, Criteria::GREATER_EQUAL)
|
||||||
|
->_or()
|
||||||
|
->filterByMaxWeight(null)
|
||||||
|
->filterByMaxPrice($cartAmount, Criteria::GREATER_EQUAL)
|
||||||
|
->_or()
|
||||||
|
->filterByMaxPrice(null)
|
||||||
|
->orderByMaxWeight()
|
||||||
|
->orderByMaxPrice()
|
||||||
|
;
|
||||||
|
|
||||||
|
/** @var ColissimowsPriceSlices $firstPrice */
|
||||||
|
$firstPrice = $areaPrices->find()
|
||||||
|
->getFirst();
|
||||||
|
|
||||||
|
if (null === $firstPrice) {
|
||||||
|
throw new DeliveryException("Colissimo delivery unavailable for your cart weight or delivery country");
|
||||||
|
}
|
||||||
|
|
||||||
|
//If a min price for freeshipping is defined and the cart amount reaches this value, return 0 (aka free shipping)
|
||||||
|
if (null !== $freeshippingFrom && $freeshippingFrom <= $cartAmount) {
|
||||||
|
$postage = 0;
|
||||||
|
return $postage;
|
||||||
|
}
|
||||||
|
|
||||||
|
$postage = $firstPrice->getShipping();
|
||||||
|
}
|
||||||
|
return $postage;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getMinPostage($areaIdArray, $cartWeight, $cartAmount)
|
||||||
|
{
|
||||||
|
$minPostage = null;
|
||||||
|
|
||||||
|
foreach ($areaIdArray as $areaId) {
|
||||||
|
try {
|
||||||
|
$postage = self::getPostageAmount($areaId, $cartWeight, $cartAmount);
|
||||||
|
if ($minPostage === null || $postage < $minPostage) {
|
||||||
|
$minPostage = $postage;
|
||||||
|
if ($minPostage == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $minPostage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate and return delivery price
|
||||||
|
*
|
||||||
|
* @param Country $country
|
||||||
|
* @return mixed
|
||||||
|
* @throws DeliveryException
|
||||||
|
*/
|
||||||
|
public function getPostage(Country $country)
|
||||||
|
{
|
||||||
|
$request = $this->getRequest();
|
||||||
|
|
||||||
|
$postage = 0;
|
||||||
|
|
||||||
|
$freeshippingIsActive = ColissimowsFreeshippingQuery::create()->findOneById(1)->getActive();
|
||||||
|
|
||||||
|
if (false === $freeshippingIsActive){
|
||||||
|
$cartWeight = $request->getSession()->getSessionCart($this->getDispatcher())->getWeight();
|
||||||
|
$cartAmount = $request->getSession()->getSessionCart($this->getDispatcher())->getTaxedAmount($country);
|
||||||
|
|
||||||
|
$areaIdArray = $this->getAllAreasForCountry($country);
|
||||||
|
if (empty($areaIdArray)) {
|
||||||
|
throw new DeliveryException("Your delivery country is not covered by Colissimo.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $postage = $this->getMinPostage($areaIdArray, $cartWeight, $cartAmount)) {
|
||||||
|
throw new DeliveryException("Colissimo delivery unavailable for your cart weight or delivery country");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $postage;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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)
|
||||||
|
{
|
||||||
|
$areaId = $country->getAreaId();
|
||||||
|
|
||||||
|
$prices = ColissimowsPriceSlicesQuery::create()
|
||||||
|
->filterByAreaId($areaId)
|
||||||
|
->findOne();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* check if Colissimo delivers the asked area*/
|
||||||
|
if (null !== $prices) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function canOrderBeNotSigned(Order $order)
|
||||||
|
{
|
||||||
|
$areas = $order->getOrderAddressRelatedByDeliveryOrderAddressId()->getCountry()->getAreas();
|
||||||
|
|
||||||
|
$areas_id = [];
|
||||||
|
|
||||||
|
foreach ($areas as $area){
|
||||||
|
$areas_id[] = $area->getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(4, $areas_id) || in_array(5, $areas_id)) // If order's country isn't in Europe or in DOM-TOM so order has to be signed
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Order $order
|
||||||
|
* @return string
|
||||||
|
* Get the area code for order (used to generate colissimoWs label with or without signature)
|
||||||
|
* Codes :
|
||||||
|
* - FR : France
|
||||||
|
* - DT : Dom-Tom
|
||||||
|
* - EU : Europe
|
||||||
|
* - WO : World
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public static function getOrderShippingArea(Order $order){
|
||||||
|
$areas = $order->getOrderAddressRelatedByDeliveryOrderAddressId()->getCountry()->getAreas();
|
||||||
|
|
||||||
|
$areas_id = [];
|
||||||
|
|
||||||
|
foreach ($areas as $area){
|
||||||
|
$areas_id[] = $area->getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(1, $areas_id)){
|
||||||
|
return 'FR';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(2, $areas_id) || in_array(3, $areas_id)){
|
||||||
|
return 'EU';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(4, $areas_id) || in_array(5, $areas_id)){
|
||||||
|
return 'WO';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(6, $areas_id)){
|
||||||
|
return 'DT';
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getModCode()
|
||||||
|
{
|
||||||
|
return ModuleQuery::create()->findOneByCode("ColissimoWs")->getId();
|
||||||
|
}
|
||||||
|
}
|
||||||
40
local/modules/ColissimoWs/Config/config.xml
Normal file
40
local/modules/ColissimoWs/Config/config.xml
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?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="colissimows.orders-not-sent" class="ColissimoWs\Loop\OrdersNotYetSentLoop" />
|
||||||
|
<loop name="colissimows.label-info" class="ColissimoWs\Loop\ColissimoWsLabelInfo" />
|
||||||
|
<loop name="colissimows.price-slices" class="ColissimoWs\Loop\PriceSlicesLoop" />
|
||||||
|
<loop name="colissimows.freeshipping" class="ColissimoWs\Loop\ColissimoWsFreeShippingLoop" />
|
||||||
|
</loops>
|
||||||
|
|
||||||
|
<forms>
|
||||||
|
<form name="colissimows_configuration_form" class="ColissimoWs\Form\ConfigurationForm" />
|
||||||
|
<form name="colissimows_export_form" class="ColissimoWs\Form\LabelGenerationForm" />
|
||||||
|
<form name="colissimows.freeshipping.form" class="ColissimoWs\Form\FreeShippingForm" />
|
||||||
|
</forms>
|
||||||
|
|
||||||
|
<services>
|
||||||
|
<service id="colissimows.label_generator" class="ColissimoWs\EventListeners\ShippingLabelGenerator">
|
||||||
|
<argument type="service" id="request_stack" />
|
||||||
|
<tag name="kernel.event_subscriber"/>
|
||||||
|
</service>
|
||||||
|
|
||||||
|
<service id="colissimows.notification_mail" class="ColissimoWs\EventListeners\ShippingNotificationSender">
|
||||||
|
<argument type="service" id="thelia.parser" />
|
||||||
|
<argument type="service" id="mailer"/>
|
||||||
|
<tag name="kernel.event_subscriber"/>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
|
||||||
|
<hooks>
|
||||||
|
<hook id="colissimows.hooks" class="ColissimoWs\Hook\HookManager">
|
||||||
|
<tag name="hook.event_listener" event="module.configuration" type="back" method="onModuleConfigure" />
|
||||||
|
<tag name="hook.event_listener" event="main.top-menu-tools" type="back" method="onMainTopMenuTools" />
|
||||||
|
<tag name="hook.event_listener" event="module.config-js" type="back" method="onModuleConfigJs" />
|
||||||
|
</hook>
|
||||||
|
</hooks>
|
||||||
|
</config>
|
||||||
32
local/modules/ColissimoWs/Config/module.xml
Normal file
32
local/modules/ColissimoWs/Config/module.xml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<?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>ColissimoWs\ColissimoWs</fullnamespace>
|
||||||
|
<descriptive locale="en_US">
|
||||||
|
<title>Home delivery with Colissimo</title>
|
||||||
|
<subtitle>Use Colissimo web services to get labels and tracking numbers</subtitle>
|
||||||
|
</descriptive>
|
||||||
|
<descriptive locale="fr_FR">
|
||||||
|
<title>Livraison à domicile avec Colissimo</title>
|
||||||
|
<subtitle>Utilisez les web services Colissimo pour obtenir les étiquettes d'affranchissement et les numéros de suivi.</subtitle>
|
||||||
|
</descriptive>
|
||||||
|
<languages>
|
||||||
|
<language>en_US</language>
|
||||||
|
<language>fr_FR</language>
|
||||||
|
</languages>
|
||||||
|
<version>1.1.6</version>
|
||||||
|
<authors>
|
||||||
|
<author>
|
||||||
|
<name>Franck Allimant</name>
|
||||||
|
<company>CQFDev</company>
|
||||||
|
<email>thelia@cqfdev.fr</email>
|
||||||
|
<website>www.cqfdev.fr</website>
|
||||||
|
</author>
|
||||||
|
</authors>
|
||||||
|
<type>delivery</type>
|
||||||
|
<thelia>2.3.4</thelia>
|
||||||
|
<stability>other</stability>
|
||||||
|
<mandatory>0</mandatory>
|
||||||
|
<hidden>0</hidden>
|
||||||
|
</module>
|
||||||
50
local/modules/ColissimoWs/Config/routing.xml
Normal file
50
local/modules/ColissimoWs/Config/routing.xml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?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="colissimows.config" path="/admin/module/colissimows/configure">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\ConfigurationController::configure</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.export" path="/admin/module/colissimows/export">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\LabelController::export</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.label" path="/admin/module/colissimows/label/{orderId}">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\LabelController::getLabel</default>
|
||||||
|
<requirement key="orderId">\d+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.customs-invoice" path="/admin/module/colissimows/customs-invoice/{orderId}">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\LabelController::getCustomsInvoice</default>
|
||||||
|
<requirement key="orderId">\d+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.clear_label" path="/admin/module/colissimows/label/clear/{orderId}">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\LabelController::clearLabel</default>
|
||||||
|
<requirement key="orderId">\d+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.get_zip" path="/admin/module/colissimows/labels-zip/{base64EncodedZipFilename}">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\LabelController::getLabelZip</default>
|
||||||
|
<requirement key="base64ZipFilePath">[A-Za-z0-9]+</requirement>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<!-- Price Slices -->
|
||||||
|
|
||||||
|
<route id="colissimows.toggle.freeshipping" path="/admin/module/colissimows/freeshipping" methods="post">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\FreeShippingController::toggleFreeShippingActivation</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.add.price-slice" path="/admin/module/colissimows/price-slice/save" methods="post">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\PriceSliceController::savePriceSliceAction</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
<route id="colissimows.update.price-slice" path="/admin/module/colissimows/price-slice/delete" methods="post">
|
||||||
|
<default key="_controller">ColissimoWs\Controller\PriceSliceController::deletePriceSliceAction</default>
|
||||||
|
</route>
|
||||||
|
|
||||||
|
|
||||||
|
</routes>
|
||||||
45
local/modules/ColissimoWs/Config/schema.xml
Normal file
45
local/modules/ColissimoWs/Config/schema.xml
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?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="colissimows_label" namespace="ColissimoWs\Model">
|
||||||
|
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
<column name="order_id" type="INTEGER" required="true"/>
|
||||||
|
<column name="order_ref" type="VARCHAR" size="255" required="true"/>
|
||||||
|
<column name="error" type="BOOLEAN" required="true" default="0" />
|
||||||
|
<column name="error_message" type="VARCHAR" size="255" default="" />
|
||||||
|
<column name="tracking_number" type="VARCHAR" size="64" default="" />
|
||||||
|
<column name="label_data" type="CLOB" />
|
||||||
|
<column name="label_type" type="VARCHAR" size="4" />
|
||||||
|
<column name="weight" type="float" required="true" />
|
||||||
|
<column name="signed" type="BOOLEAN" default="0"/>
|
||||||
|
<column name="with_customs_invoice" type="BOOLEAN" required="true" default="0" />
|
||||||
|
|
||||||
|
<foreign-key foreignTable="order" name="fk_colissimows_label_order" onDelete="CASCADE" onUpdate="RESTRICT">
|
||||||
|
<reference foreign="id" local="order_id" />
|
||||||
|
</foreign-key>
|
||||||
|
|
||||||
|
<behavior name="timestampable" />
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="colissimows_price_slices" namespace="ColissimoWs\Model">
|
||||||
|
<column autoIncrement="true" name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
<column name="area_id" type="INTEGER" required="true"/>
|
||||||
|
<column name="max_weight" type="FLOAT"/>
|
||||||
|
<column name="max_price" type="FLOAT"/>
|
||||||
|
<column name="shipping" type="FLOAT" required="true"/>
|
||||||
|
<column name="franco_min_price" type="FLOAT" />
|
||||||
|
|
||||||
|
<foreign-key foreignTable="area" name="fk_colissimows_price_slices_area_id" onDelete="RESTRICT" onUpdate="RESTRICT">
|
||||||
|
<reference foreign="id" local="area_id" />
|
||||||
|
</foreign-key>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table name="colissimows_freeshipping" namespace="ColissimoWs\Model">
|
||||||
|
<column name="id" primaryKey="true" required="true" type="INTEGER" />
|
||||||
|
<column name="active" type="BOOLEAN" default="0"/>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<external-schema filename="local/config/schema.xml" referenceOnly="true" />
|
||||||
|
</database>
|
||||||
2
local/modules/ColissimoWs/Config/sqldb.map
Normal file
2
local/modules/ColissimoWs/Config/sqldb.map
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# Sqlfile -> Database map
|
||||||
|
thelia.sql=thelia
|
||||||
73
local/modules/ColissimoWs/Config/thelia.sql
Normal file
73
local/modules/ColissimoWs/Config/thelia.sql
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
|
||||||
|
# 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;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- colissimows_label
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `colissimows_label`;
|
||||||
|
|
||||||
|
CREATE TABLE `colissimows_label`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`order_id` INTEGER NOT NULL,
|
||||||
|
`order_ref` VARCHAR(255) NOT NULL,
|
||||||
|
`error` TINYINT(1) DEFAULT 0 NOT NULL,
|
||||||
|
`error_message` VARCHAR(255) DEFAULT '',
|
||||||
|
`tracking_number` VARCHAR(64) DEFAULT '',
|
||||||
|
`label_data` LONGTEXT,
|
||||||
|
`label_type` VARCHAR(4),
|
||||||
|
`weight` FLOAT NOT NULL,
|
||||||
|
`signed` TINYINT(1) DEFAULT 0,
|
||||||
|
`with_customs_invoice` TINYINT(1) DEFAULT 0 NOT NULL,
|
||||||
|
`created_at` DATETIME,
|
||||||
|
`updated_at` DATETIME,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
INDEX `fi_colissimows_label_order` (`order_id`),
|
||||||
|
CONSTRAINT `fk_colissimows_label_order`
|
||||||
|
FOREIGN KEY (`order_id`)
|
||||||
|
REFERENCES `order` (`id`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- colissimows_price_slices
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `colissimows_price_slices`;
|
||||||
|
|
||||||
|
CREATE TABLE `colissimows_price_slices`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
||||||
|
`area_id` INTEGER NOT NULL,
|
||||||
|
`max_weight` FLOAT,
|
||||||
|
`max_price` FLOAT,
|
||||||
|
`shipping` FLOAT NOT NULL,
|
||||||
|
`franco_min_price` FLOAT,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
INDEX `fi_colissimows_price_slices_area_id` (`area_id`),
|
||||||
|
CONSTRAINT `fk_colissimows_price_slices_area_id`
|
||||||
|
FOREIGN KEY (`area_id`)
|
||||||
|
REFERENCES `area` (`id`)
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
ON DELETE RESTRICT
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
-- colissimows_freeshipping
|
||||||
|
-- ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `colissimows_freeshipping`;
|
||||||
|
|
||||||
|
CREATE TABLE `colissimows_freeshipping`
|
||||||
|
(
|
||||||
|
`id` INTEGER NOT NULL,
|
||||||
|
`active` TINYINT(1) DEFAULT 0,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
# This restores the fkey checks, after having unset them earlier
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 17/08/2019 12:26
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Controller;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Form\Exception\FormValidationException;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
|
class ConfigurationController extends BaseAdminController
|
||||||
|
{
|
||||||
|
public function configure()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this->checkAuth(AdminResources::MODULE, ColissimoWs::DOMAIN_NAME, AccessManager::UPDATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$configurationForm = $this->createForm('colissimows_configuration_form');
|
||||||
|
|
||||||
|
$message = false;
|
||||||
|
|
||||||
|
$url = '/admin/module/ColissimoWs';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$form = $this->validateForm($configurationForm);
|
||||||
|
|
||||||
|
// Get the form field values
|
||||||
|
$data = $form->getData();
|
||||||
|
|
||||||
|
foreach ($data as $name => $value) {
|
||||||
|
if (is_array($value)) {
|
||||||
|
$value = implode(';', $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
ColissimoWs::setConfigValue($name, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Log configuration modification
|
||||||
|
$this->adminLogAppend(
|
||||||
|
"colissimoWs.configuration.message",
|
||||||
|
AccessManager::UPDATE,
|
||||||
|
"ColissimoWs configuration updated"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Redirect to the success URL,
|
||||||
|
if (!$this->getRequest()->get('save_mode') == 'stay') {
|
||||||
|
$url = '/admin/modules';
|
||||||
|
}
|
||||||
|
} catch (FormValidationException $ex) {
|
||||||
|
$message = $this->createStandardFormValidationErrorMessage($ex);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$message = $ex->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($message !== false) {
|
||||||
|
$this->setupFormErrorContext(
|
||||||
|
$this->getTranslator()->trans("ColissimoWs configuration", [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
$message,
|
||||||
|
$configurationForm,
|
||||||
|
$ex
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->generateRedirect(URL::getInstance()->absoluteUrl($url, [ 'tab' => 'config', 'success' => $message === false ]));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
<?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 ColissimoWs\Controller;
|
||||||
|
|
||||||
|
use ColissimoWs\Form\FreeShippingForm;
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshipping;
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshippingQuery;
|
||||||
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
|
||||||
|
class FreeShippingController extends BaseAdminController
|
||||||
|
{
|
||||||
|
public function toggleFreeShippingActivation()
|
||||||
|
{
|
||||||
|
if (null !== $response = $this
|
||||||
|
->checkAuth(array(AdminResources::MODULE), array('ColissimoWs'), AccessManager::UPDATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$form = new FreeShippingForm($this->getRequest());
|
||||||
|
$response=null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$vform = $this->validateForm($form);
|
||||||
|
$freeshipping = $vform->get('freeshipping')->getData();
|
||||||
|
|
||||||
|
if (null === $isFreeShippingActive = ColissimowsFreeshippingQuery::create()->findOneById(1)){
|
||||||
|
$isFreeShippingActive = new ColissimowsFreeshipping();
|
||||||
|
}
|
||||||
|
|
||||||
|
$isFreeShippingActive->setActive($freeshipping);
|
||||||
|
|
||||||
|
$isFreeShippingActive->save();
|
||||||
|
|
||||||
|
$response = JsonResponse::create(array("success"=>"Freeshipping activated"), 200);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$response = JsonResponse::create(array("error"=>$e->getMessage()), 500);
|
||||||
|
}
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
}
|
||||||
370
local/modules/ColissimoWs/Controller/LabelController.php
Normal file
370
local/modules/ColissimoWs/Controller/LabelController.php
Normal file
@@ -0,0 +1,370 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 21:51
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Controller;
|
||||||
|
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery;
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use ColissimoWs\Event\LabelEvent;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabel;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery;
|
||||||
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
|
use Thelia\Core\Event\PdfEvent;
|
||||||
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
|
use Thelia\Core\HttpFoundation\Response;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
use Thelia\Core\Security\Resource\AdminResources;
|
||||||
|
use Thelia\Exception\TheliaProcessException;
|
||||||
|
use Thelia\Log\Tlog;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Thelia\Model\ModuleQuery;
|
||||||
|
use Thelia\Model\OrderQuery;
|
||||||
|
use Thelia\Model\OrderStatusQuery;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
|
class LabelController extends BaseAdminController
|
||||||
|
{
|
||||||
|
/** @TODO : Compatibility with colissimo_label module */
|
||||||
|
const LABEL_DIRECTORY = THELIA_LOCAL_DIR . 'colissimo-label';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return mixed|\Symfony\Component\HttpFoundation\Response|StreamedResponse
|
||||||
|
*/
|
||||||
|
public function export()
|
||||||
|
{
|
||||||
|
static $codesPaysEurope = [
|
||||||
|
'DE',
|
||||||
|
'AT',
|
||||||
|
'BE',
|
||||||
|
'BG',
|
||||||
|
'CY',
|
||||||
|
'HR',
|
||||||
|
'DK',
|
||||||
|
'ES',
|
||||||
|
'EE',
|
||||||
|
'FI',
|
||||||
|
'FR',
|
||||||
|
'GR',
|
||||||
|
'HU',
|
||||||
|
'IE',
|
||||||
|
'IT',
|
||||||
|
'LV',
|
||||||
|
'LT',
|
||||||
|
'MT',
|
||||||
|
'LU',
|
||||||
|
'NL',
|
||||||
|
'PL',
|
||||||
|
'PT',
|
||||||
|
'CZ',
|
||||||
|
'RO',
|
||||||
|
'GB',
|
||||||
|
'SK',
|
||||||
|
'SI',
|
||||||
|
'SE '
|
||||||
|
];
|
||||||
|
|
||||||
|
if (null !== $response = $this->checkAuth(array(AdminResources::MODULE), array('ColissimoWs'), AccessManager::UPDATE)) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$exportForm = $this->createForm('colissimows_export_form');
|
||||||
|
|
||||||
|
$files = $params = [];
|
||||||
|
|
||||||
|
if (!@mkdir(self::LABEL_DIRECTORY) && !is_dir(self::LABEL_DIRECTORY)) {
|
||||||
|
throw new TheliaProcessException("Failed to create directory " . self::LABEL_DIRECTORY);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$form = $this->validateForm($exportForm);
|
||||||
|
|
||||||
|
$data = $form->getData();
|
||||||
|
|
||||||
|
// Check status_id
|
||||||
|
$newStatus = OrderStatusQuery::create()->findOneByCode($data['new_status']);
|
||||||
|
|
||||||
|
ColissimoWs::setConfigValue("new_status", $data['new_status']);
|
||||||
|
|
||||||
|
$weight_array = $data['weight'];
|
||||||
|
$signed_array = $data['signed'];
|
||||||
|
|
||||||
|
foreach($data['order_id'] as $orderId) {
|
||||||
|
if (null !== $order = OrderQuery::create()->findPk($orderId)) {
|
||||||
|
if (! isset($weight_array[$orderId]) || 0 === (float)$weight_array[$orderId]) {
|
||||||
|
$weight = $order->getWeight();
|
||||||
|
} else {
|
||||||
|
$weight = (float) $weight_array[$orderId];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($weight === null) {
|
||||||
|
throw new \Exception($this->getTranslator()->trans("Please enter a weight for every selected order"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (array_key_exists ($orderId , $signed_array)){
|
||||||
|
$signed = $signed_array[$orderId];
|
||||||
|
} else {
|
||||||
|
$signed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$event = (new LabelEvent($orderId))
|
||||||
|
->setWeight($weight)
|
||||||
|
->setSigned($signed);
|
||||||
|
|
||||||
|
$this->getDispatcher()->dispatch(ColissimoWs::GENERATE_LABEL_EVENT, $event);
|
||||||
|
|
||||||
|
if ($event->hasLabel() && $event->getColissimoWsLabel()->getError() === false) {
|
||||||
|
$fileType = ColissimoWs::getLabelFileType();
|
||||||
|
|
||||||
|
$labelFileName = self::LABEL_DIRECTORY . DS . $order->getRef() . '.' . $fileType;
|
||||||
|
|
||||||
|
file_put_contents($labelFileName, $event->getColissimoWsLabel()->getLabelData());
|
||||||
|
|
||||||
|
$files[] = $labelFileName;
|
||||||
|
|
||||||
|
$destinationEurope =
|
||||||
|
in_array(
|
||||||
|
strtoupper($order->getOrderAddressRelatedByDeliveryOrderAddressId()->getCountry()->getIsoalpha2()),
|
||||||
|
$codesPaysEurope
|
||||||
|
)
|
||||||
|
;
|
||||||
|
|
||||||
|
/** Comment this to disable "no customs invoice template" error */
|
||||||
|
// Generate customs invoice for non-FR foreign shipping
|
||||||
|
if (!$destinationEurope) {
|
||||||
|
$files[] = $this->createCustomsInvoice($orderId, $order->getRef());
|
||||||
|
|
||||||
|
// We have a customs invoice !
|
||||||
|
$event
|
||||||
|
->getColissimoWsLabel()
|
||||||
|
->setWithCustomsInvoice(true)
|
||||||
|
->setSigned(true)
|
||||||
|
->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null !== $newStatus) {
|
||||||
|
$event = new OrderEvent($order);
|
||||||
|
$event->setStatus($newStatus->getId());
|
||||||
|
|
||||||
|
$this->dispatch(TheliaEvents::ORDER_UPDATE_STATUS, $event);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ajouter la facture au zip
|
||||||
|
$labelFileName = self::LABEL_DIRECTORY . DS . $order->getRef() . '-invoice.pdf';
|
||||||
|
|
||||||
|
$response = $this->generateOrderPdf($orderId, ConfigQuery::read('pdf_invoice_file', 'invoice'));
|
||||||
|
|
||||||
|
if (file_put_contents($labelFileName, $response->getContent())) {
|
||||||
|
$files[] = $labelFileName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($files) > 0) {
|
||||||
|
$zip = new \ZipArchive();
|
||||||
|
$zipFilename = sys_get_temp_dir() .DS. uniqid('colissimo-labels-', false);
|
||||||
|
|
||||||
|
if (true !== $zip->open($zipFilename, \ZipArchive::CREATE)) {
|
||||||
|
throw new TheliaProcessException("Cannot open zip file $zipFilename\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($files as $file) {
|
||||||
|
$zip->addFile($file, basename($file));
|
||||||
|
}
|
||||||
|
|
||||||
|
$zip->close();
|
||||||
|
|
||||||
|
// Perform cleanup
|
||||||
|
/*
|
||||||
|
foreach ($files as $file) {
|
||||||
|
@unlink($file);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$params = [ 'zip' => base64_encode($zipFilename) ];
|
||||||
|
}
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$this->setupFormErrorContext("Generation étiquettes Colissimo", $ex->getMessage(), $exportForm, $ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->generateRedirect(URL::getInstance()->absoluteUrl("admin/module/ColissimoWs", $params));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $orderId
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function getLabelZip($base64EncodedZipFilename)
|
||||||
|
{
|
||||||
|
$zipFilename = base64_decode($base64EncodedZipFilename);
|
||||||
|
|
||||||
|
if (file_exists($zipFilename)) {
|
||||||
|
return new StreamedResponse(
|
||||||
|
function () use ($zipFilename) {
|
||||||
|
readfile($zipFilename);
|
||||||
|
@unlink($zipFilename);
|
||||||
|
},
|
||||||
|
200,
|
||||||
|
[
|
||||||
|
'Content-Type' => 'application/zip',
|
||||||
|
"Content-disposition" => "attachement; filename=colissimo-labels.zip",
|
||||||
|
"Content-Length" => filesize($zipFilename)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new \Symfony\Component\HttpFoundation\Response("File no longer exists");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $orderId
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function getLabel($orderId)
|
||||||
|
{
|
||||||
|
if (null !== $labelInfo = ColissimowsLabelQuery::create()->findOneByOrderId($orderId)) {
|
||||||
|
return $this->generateResponseForLabel($labelInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->generateRedirect(URL::getInstance()->absoluteUrl("admin/module/ColissimoWs"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $orderId
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function getCustomsInvoice($orderId)
|
||||||
|
{
|
||||||
|
if (null !== $order = OrderQuery::create()->findPk($orderId)) {
|
||||||
|
$fileName = $this->createCustomsInvoice($orderId, $order->getRef());
|
||||||
|
|
||||||
|
return Response::create(
|
||||||
|
file_get_contents($fileName),
|
||||||
|
200,
|
||||||
|
[
|
||||||
|
"Content-Type" => "application/pdf",
|
||||||
|
"Content-disposition" => "Attachement;filename=" . basename($fileName)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->generateRedirect(URL::getInstance()->absoluteUrl("admin/module/ColissimoWs"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $orderId
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function clearLabel($orderId)
|
||||||
|
{
|
||||||
|
/** @var ColissimowsLabel $order */
|
||||||
|
$order = ColissimowsLabelQuery::create()->filterByOrderId($orderId)->findOne();
|
||||||
|
|
||||||
|
$orderRef = $order->getOrderRef();
|
||||||
|
$fileType = $order->getLabelType();
|
||||||
|
$order->delete();
|
||||||
|
|
||||||
|
$file = self::LABEL_DIRECTORY . DS . $orderRef;
|
||||||
|
$invoice = $file . '-invoice.pdf';
|
||||||
|
$file .= ".$fileType";
|
||||||
|
@unlink($file);
|
||||||
|
@unlink($invoice);
|
||||||
|
|
||||||
|
///** Compatibility with module SoColissimoLabel /!\ Do not use strict comparison */
|
||||||
|
//if (ModuleQuery::create()->findOneByCode('ColissimoLabel')->getActivate() == true)
|
||||||
|
//{
|
||||||
|
// ColissimoLabelQuery::create()->findOneByOrderId($orderId)->delete();
|
||||||
|
//}
|
||||||
|
|
||||||
|
return $this->generateRedirect(URL::getInstance()->absoluteUrl("admin/module/ColissimoWs") . '#order-' . $orderId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $orderId
|
||||||
|
* @param $orderRef
|
||||||
|
* @return string
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function createCustomsInvoice($orderId, $orderRef)
|
||||||
|
{
|
||||||
|
$html = $this->renderRaw(
|
||||||
|
"customs-invoice",
|
||||||
|
array(
|
||||||
|
'order_id' => $orderId
|
||||||
|
),
|
||||||
|
$this->getTemplateHelper()->getActivePdfTemplate()
|
||||||
|
);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$pdfEvent = new PdfEvent($html);
|
||||||
|
|
||||||
|
$this->dispatch(TheliaEvents::GENERATE_PDF, $pdfEvent);
|
||||||
|
|
||||||
|
$pdfFileName = self::LABEL_DIRECTORY . DS . $orderRef . '-customs-invoice.pdf';
|
||||||
|
|
||||||
|
file_put_contents($pdfFileName, $pdfEvent->getPdf());
|
||||||
|
|
||||||
|
return $pdfFileName;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Tlog::getInstance()->error(
|
||||||
|
sprintf(
|
||||||
|
'error during generating invoice pdf for order id : %d with message "%s"',
|
||||||
|
$orderId,
|
||||||
|
$e->getMessage()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ColissimowsLabel $labelInfo
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
protected function generateResponseForLabel($labelInfo)
|
||||||
|
{
|
||||||
|
$fileType = $labelInfo->getLabelType();
|
||||||
|
|
||||||
|
if ($fileType === 'pdf') {
|
||||||
|
return new BinaryFileResponse(
|
||||||
|
self::LABEL_DIRECTORY . DS . $labelInfo->getOrderRef() . ".$fileType",
|
||||||
|
200,
|
||||||
|
[
|
||||||
|
"Content-Type" => "application/pdf",
|
||||||
|
"Content-disposition" => "Attachement;filename=" . $labelInfo->getOrder()->getRef() . ".pdf"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new BinaryFileResponse(
|
||||||
|
self::LABEL_DIRECTORY . DS . $labelInfo->getOrderRef() . ".$fileType",
|
||||||
|
200,
|
||||||
|
[
|
||||||
|
"Content-Type" => "application/octet-stream",
|
||||||
|
"Content-disposition" => "Attachement;filename=" . $labelInfo->getOrder()->getRef() . ".$fileType"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
184
local/modules/ColissimoWs/Controller/PriceSliceController.php
Normal file
184
local/modules/ColissimoWs/Controller/PriceSliceController.php
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace ColissimoWs\Controller;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlices;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlicesQuery;
|
||||||
|
use Propel\Runtime\Map\TableMap;
|
||||||
|
use Thelia\Controller\Admin\BaseAdminController;
|
||||||
|
use Thelia\Core\Security\AccessManager;
|
||||||
|
|
||||||
|
class PriceSliceController extends BaseAdminController
|
||||||
|
{
|
||||||
|
protected function getFloatVal($val, $default = -1)
|
||||||
|
{
|
||||||
|
if (preg_match("#^([0-9\.,]+)$#", $val, $match)) {
|
||||||
|
$val = $match[0];
|
||||||
|
if (strstr($val, ",")) {
|
||||||
|
$val = str_replace(".", "", $val);
|
||||||
|
$val = str_replace(",", ".", $val);
|
||||||
|
}
|
||||||
|
$val = (float)$val;
|
||||||
|
|
||||||
|
return $val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function savePriceSliceAction()
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], ['colissimows'], AccessManager::UPDATE);
|
||||||
|
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->checkXmlHttpRequest();
|
||||||
|
|
||||||
|
$responseData = [
|
||||||
|
"success" => false,
|
||||||
|
"message" => '',
|
||||||
|
"slice" => null
|
||||||
|
];
|
||||||
|
|
||||||
|
$messages = [];
|
||||||
|
$response = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$requestData = $this->getRequest()->request;
|
||||||
|
|
||||||
|
if (0 !== $id = (int)$requestData->get('id', 0)) {
|
||||||
|
$slice = ColissimowsPriceSlicesQuery::create()->findPk($id);
|
||||||
|
} else {
|
||||||
|
$slice = new ColissimowsPriceSlices();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (0 !== $areaId = (int)$requestData->get('area', 0)) {
|
||||||
|
$slice->setAreaId($areaId);
|
||||||
|
} else {
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'The area is not valid',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$requestPriceMax = $requestData->get('maxPrice', null);
|
||||||
|
$requestmaxWeight = $requestData->get('maxWeight', null);
|
||||||
|
|
||||||
|
if (empty($requestPriceMax) && empty($requestmaxWeight)) {
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'You must specify at least a price max or a weight max value.',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (!empty($requestPriceMax)) {
|
||||||
|
$maxPrice = $this->getFloatVal($requestPriceMax);
|
||||||
|
if (0 < $maxPrice) {
|
||||||
|
$slice->setMaxPrice($maxPrice);
|
||||||
|
} else {
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'The price max value is not valid',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$slice->setMaxPrice(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!empty($requestmaxWeight)) {
|
||||||
|
$maxWeight = $this->getFloatVal($requestmaxWeight);
|
||||||
|
if (0 < $maxWeight) {
|
||||||
|
$slice->setMaxWeight($maxWeight);
|
||||||
|
} else {
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'The weight max value is not valid',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$slice->setMaxWeight(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$price = $this->getFloatVal($requestData->get('shipping', 0));
|
||||||
|
if (0 <= $price) {
|
||||||
|
$slice->setShipping($price);
|
||||||
|
} else {
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'The price value is not valid',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 === count($messages)) {
|
||||||
|
$slice->save();
|
||||||
|
$messages[] = $this->getTranslator()->trans(
|
||||||
|
'Your slice has been saved',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
|
||||||
|
$responseData['success'] = true;
|
||||||
|
$responseData['slice'] = $slice->toArray(TableMap::TYPE_STUDLYPHPNAME);
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$message[] = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
$responseData['message'] = $messages;
|
||||||
|
|
||||||
|
return $this->jsonResponse(json_encode($responseData));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deletePriceSliceAction()
|
||||||
|
{
|
||||||
|
$response = $this->checkAuth([], ['colissimows'], AccessManager::DELETE);
|
||||||
|
|
||||||
|
if (null !== $response) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->checkXmlHttpRequest();
|
||||||
|
|
||||||
|
$responseData = [
|
||||||
|
"success" => false,
|
||||||
|
"message" => '',
|
||||||
|
"slice" => null
|
||||||
|
];
|
||||||
|
|
||||||
|
$response = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$requestData = $this->getRequest()->request;
|
||||||
|
|
||||||
|
if (0 !== $id = (int)$requestData->get('id', 0)) {
|
||||||
|
$priceSlice = ColissimowsPriceSlicesQuery::create()->findPk($id);
|
||||||
|
$priceSlice->delete();
|
||||||
|
$responseData['success'] = true;
|
||||||
|
} else {
|
||||||
|
$responseData['message'] = $this->getTranslator()->trans(
|
||||||
|
'The slice has not been deleted',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$responseData['message'] = $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->jsonResponse(json_encode($responseData));
|
||||||
|
}
|
||||||
|
}
|
||||||
109
local/modules/ColissimoWs/Event/LabelEvent.php
Normal file
109
local/modules/ColissimoWs/Event/LabelEvent.php
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 15:23
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace ColissimoWs\Event;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\ColissimowsLabel;
|
||||||
|
use Thelia\Core\Event\ActionEvent;
|
||||||
|
|
||||||
|
class LabelEvent extends ActionEvent
|
||||||
|
{
|
||||||
|
/** @var int */
|
||||||
|
protected $orderId;
|
||||||
|
|
||||||
|
/** @var ColissimowsLabel */
|
||||||
|
protected $colissimoWsLabel = null;
|
||||||
|
|
||||||
|
/** @var float|null */
|
||||||
|
protected $weight = null;
|
||||||
|
|
||||||
|
/** @var bool|null */
|
||||||
|
protected $signed = null;
|
||||||
|
/**
|
||||||
|
* LabelEvent constructor.
|
||||||
|
* @param int $orderId
|
||||||
|
*/
|
||||||
|
public function __construct($orderId)
|
||||||
|
{
|
||||||
|
$this->orderId = $orderId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getOrderId()
|
||||||
|
{
|
||||||
|
return $this->orderId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ColissimowsLabel
|
||||||
|
*/
|
||||||
|
public function getColissimoWsLabel()
|
||||||
|
{
|
||||||
|
return $this->colissimoWsLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ColissimowsLabel $colissimoWsLabel
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setColissimoWsLabel($colissimoWsLabel)
|
||||||
|
{
|
||||||
|
$this->colissimoWsLabel = $colissimoWsLabel;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function hasLabel()
|
||||||
|
{
|
||||||
|
return null !== $this->colissimoWsLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return float|null
|
||||||
|
*/
|
||||||
|
public function getWeight()
|
||||||
|
{
|
||||||
|
return $this->weight;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param float|null $weight
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setWeight($weight)
|
||||||
|
{
|
||||||
|
$this->weight = $weight;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool|null
|
||||||
|
*/
|
||||||
|
public function getSigned()
|
||||||
|
{
|
||||||
|
return $this->signed;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param bool|null $signed
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setSigned($signed)
|
||||||
|
{
|
||||||
|
$this->signed = $signed;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,463 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 14:34
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace ColissimoWs\EventListeners;
|
||||||
|
|
||||||
|
use ColissimoLabel\ColissimoLabel;
|
||||||
|
use ColissimoLabel\Model\ColissimoLabelQuery;
|
||||||
|
use ColissimoPostage\ServiceType\Generate;
|
||||||
|
use ColissimoPostage\StructType\Address;
|
||||||
|
use ColissimoPostage\StructType\Addressee;
|
||||||
|
use ColissimoPostage\StructType\Article;
|
||||||
|
use ColissimoPostage\StructType\Category;
|
||||||
|
use ColissimoPostage\StructType\Contents;
|
||||||
|
use ColissimoPostage\StructType\CustomsDeclarations;
|
||||||
|
use ColissimoPostage\StructType\GenerateLabel;
|
||||||
|
use ColissimoPostage\StructType\GenerateLabelRequest;
|
||||||
|
use ColissimoPostage\StructType\Letter;
|
||||||
|
use ColissimoPostage\StructType\OutputFormat;
|
||||||
|
use ColissimoPostage\StructType\Parcel;
|
||||||
|
use ColissimoPostage\StructType\Sender;
|
||||||
|
use ColissimoPostage\StructType\Service;
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use ColissimoWs\Event\LabelEvent;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabel;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery;
|
||||||
|
use ColissimoWs\Soap\GenerateWithAttachments;
|
||||||
|
use ColissimoWs\Soap\SoapClientWithAttachements;
|
||||||
|
use libphonenumber\NumberParseException;
|
||||||
|
use libphonenumber\PhoneNumberUtil;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
use Thelia\Action\BaseAction;
|
||||||
|
use Thelia\Log\Tlog;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Thelia\Model\Country;
|
||||||
|
use Thelia\Model\ModuleQuery;
|
||||||
|
use Thelia\Model\OrderProduct;
|
||||||
|
use Thelia\Model\OrderQuery;
|
||||||
|
use Thelia\Tools\MoneyFormat;
|
||||||
|
use WsdlToPhp\PackageBase\AbstractSoapClientBase;
|
||||||
|
|
||||||
|
class ShippingLabelGenerator extends BaseAction implements EventSubscriberInterface
|
||||||
|
{
|
||||||
|
/** @var array */
|
||||||
|
protected $options;
|
||||||
|
|
||||||
|
/** @var Generate */
|
||||||
|
protected $generate;
|
||||||
|
|
||||||
|
/** @var RequestStack */
|
||||||
|
protected $requestStack;
|
||||||
|
|
||||||
|
/** @var bool */
|
||||||
|
protected $verbose;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ShippingLabelGenerator constructor.
|
||||||
|
*/
|
||||||
|
public function __construct(RequestStack $requestStack)
|
||||||
|
{
|
||||||
|
$this->options = [
|
||||||
|
AbstractSoapClientBase::WSDL_URL => ColissimoWs::getConfigValue(ColissimoWs::AFFRANCHISSEMENT_ENDPOINT_URL),
|
||||||
|
AbstractSoapClientBase::WSDL_CLASSMAP => \ColissimoPostage\ClassMap::get(),
|
||||||
|
];
|
||||||
|
|
||||||
|
// Générer les services
|
||||||
|
$this->generate = new GenerateWithAttachments($this->options);
|
||||||
|
|
||||||
|
$this->requestStack = $requestStack;
|
||||||
|
|
||||||
|
$this->verbose = 0 !== (int) ColissimoWs::getConfigValue(ColissimoWs::ACTIVATE_DETAILED_DEBUG, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritDoc
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
ColissimoWs::GENERATE_LABEL_EVENT => [ 'generateShippingLabel', 128 ],
|
||||||
|
ColissimoWs::CLEAR_LABEL_EVENT => [ 'clearShippingLabel', 128 ],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clear a label
|
||||||
|
*
|
||||||
|
* @param LabelEvent $event
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function clearShippingLabel(LabelEvent $event)
|
||||||
|
{
|
||||||
|
ColissimowsLabelQuery::create()
|
||||||
|
->filterByOrderId($event->getOrderId())
|
||||||
|
->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new label from the order
|
||||||
|
*
|
||||||
|
* @param LabelEvent $event
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function generateShippingLabel(LabelEvent $event)
|
||||||
|
{
|
||||||
|
$erreur = false;
|
||||||
|
|
||||||
|
$trackingNumber = $labelContent = $message = '';
|
||||||
|
|
||||||
|
$request = $this->requestStack->getCurrentRequest();
|
||||||
|
|
||||||
|
$customsDeclaration = null;
|
||||||
|
|
||||||
|
if (null !== $order = OrderQuery::create()->findPk($event->getOrderId())) {
|
||||||
|
$totalWeight = 0;
|
||||||
|
|
||||||
|
$signed = $event->getSigned();
|
||||||
|
|
||||||
|
$shopCountryCode = strtoupper(Country::getShopLocation()->getIsoalpha2());
|
||||||
|
|
||||||
|
$articles = [];
|
||||||
|
|
||||||
|
/** @var OrderProduct $orderProduct */
|
||||||
|
foreach ($order->getOrderProducts() as $orderProduct) {
|
||||||
|
$totalWeight += $orderProduct->getQuantity() * $orderProduct->getWeight();
|
||||||
|
|
||||||
|
$articles[] = new Article(
|
||||||
|
$orderProduct->getTitle(),
|
||||||
|
$orderProduct->getQuantity(),
|
||||||
|
$orderProduct->getWeight(),
|
||||||
|
MoneyFormat::getInstance($request)->formatStandardMoney($orderProduct->getPrice()),
|
||||||
|
'3303001000',
|
||||||
|
$shopCountryCode,
|
||||||
|
$order->getCurrency()->getCode(),
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
$customer = $order->getCustomer();
|
||||||
|
$defaultAddress = $customer->getDefaultAddress();
|
||||||
|
$deliveryAddress = $order->getOrderAddressRelatedByDeliveryOrderAddressId();
|
||||||
|
|
||||||
|
$mobilePhone = $this->formatterTelephone($defaultAddress->getCellphone(), $defaultAddress->getCountry()->getIsoalpha2());
|
||||||
|
$landPhone = $this->formatterTelephone($defaultAddress->getPhone(), $defaultAddress->getCountry()->getIsoalpha2());
|
||||||
|
|
||||||
|
$storePhone = $this->formatterTelephone(
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_PHONE, ConfigQuery::read('store_phone')),
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_COUNTRY, Country::getShopLocation()->getIsoalpha2())
|
||||||
|
);
|
||||||
|
|
||||||
|
switch(ColissimoWs::getOrderShippingArea($order)){
|
||||||
|
case 'FR':
|
||||||
|
if($signed) {
|
||||||
|
$colissimoProductCode = "DOS";
|
||||||
|
} else {
|
||||||
|
$colissimoProductCode = "DOM";
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'EU':
|
||||||
|
if($signed) {
|
||||||
|
$colissimoProductCode = "DOS";
|
||||||
|
} else {
|
||||||
|
$colissimoProductCode = "COLI";
|
||||||
|
}
|
||||||
|
$customsDeclaration = new CustomsDeclarations(
|
||||||
|
true,
|
||||||
|
new Contents(
|
||||||
|
$articles,
|
||||||
|
new Category(3)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'WO':
|
||||||
|
$colissimoProductCode = "COLI";
|
||||||
|
|
||||||
|
$customsDeclaration = new CustomsDeclarations(
|
||||||
|
true,
|
||||||
|
new Contents(
|
||||||
|
$articles,
|
||||||
|
new Category(3)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'DT':
|
||||||
|
if($signed) {
|
||||||
|
$colissimoProductCode = "CDS";
|
||||||
|
} else {
|
||||||
|
$colissimoProductCode = "COM";
|
||||||
|
}
|
||||||
|
|
||||||
|
$customsDeclaration = new CustomsDeclarations(
|
||||||
|
true,
|
||||||
|
new Contents(
|
||||||
|
$articles,
|
||||||
|
new Category(3)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new \InvalidArgumentException("Failed to find order area " . $event->getOrderId());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Use provided weight if any.
|
||||||
|
if (!empty($event->getWeight())) {
|
||||||
|
// The specified weight cannot be less than the total articles weight
|
||||||
|
if ($event->getWeight() > $totalWeight) {
|
||||||
|
$totalWeight = $event->getWeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Envoyer la requête
|
||||||
|
$success = $this->generate->generateLabel(
|
||||||
|
new GenerateLabel(
|
||||||
|
new GenerateLabelRequest(
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::COLISSIMO_USERNAME),
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::COLISSIMO_PASSWORD),
|
||||||
|
|
||||||
|
new OutputFormat(0, 0, ColissimoWs::getConfigValue(ColissimoWs::FORMAT_ETIQUETTE, 'PDF_10x15_300dpi'), true, ''),
|
||||||
|
new Letter(
|
||||||
|
new Service(
|
||||||
|
$colissimoProductCode,
|
||||||
|
date('Y-m-d', strtotime('tomorrow')),
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
round(100 * MoneyFormat::getInstance($request)->formatStandardMoney($order->getTotalAmount())),
|
||||||
|
$order->getRef(),
|
||||||
|
ConfigQuery::getStoreName(),
|
||||||
|
3 // Ne pas retourner
|
||||||
|
),
|
||||||
|
new Parcel(
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
$totalWeight,
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
),
|
||||||
|
$customsDeclaration,
|
||||||
|
new Sender(
|
||||||
|
$order->getRef(),
|
||||||
|
new Address(
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_NAME, ConfigQuery::getStoreName()),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_ADDRESS_1, ConfigQuery::read('store_address1')),
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_ADDRESS_2, ConfigQuery::read('store_address2')),
|
||||||
|
'FR',
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_CITY, ConfigQuery::read('store_city')),
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_ZIPCODE, ConfigQuery::read('store_zipcode')),
|
||||||
|
$storePhone,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
ColissimoWs::getConfigValue(ColissimoWs::FROM_CONTACT_EMAIL, ConfigQuery::read('store_email')),
|
||||||
|
null,
|
||||||
|
strtoupper(ColissimoWs::getConfigValue(ColissimoWs::FROM_COUNTRY, Country::getShopLocation()->getIsoalpha2()))
|
||||||
|
)
|
||||||
|
),
|
||||||
|
new Addressee(
|
||||||
|
$customer->getRef(),
|
||||||
|
false,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
new Address(
|
||||||
|
'',
|
||||||
|
$this->cleanUpAddresse($deliveryAddress->getFirstname()),
|
||||||
|
$this->cleanUpAddresse($deliveryAddress->getLastname()),
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
$this->cleanUpAddresse($deliveryAddress->getAddress1()),
|
||||||
|
$this->cleanUpAddresse($deliveryAddress->getAddress2()),
|
||||||
|
strtoupper($deliveryAddress->getCountry()->getIsoalpha2()),
|
||||||
|
$this->corrigerLocalite($deliveryAddress->getCity()),
|
||||||
|
preg_replace("/[\s]/", "", $deliveryAddress->getZipcode()),
|
||||||
|
$landPhone,
|
||||||
|
$mobilePhone,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
$customer->getEmail(),
|
||||||
|
null,
|
||||||
|
strtoupper($customer->getCustomerLang()->getCode()))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
Tlog::getInstance()->debug("Colissimo shipping label request: " . $this->generate->getLastRequest());
|
||||||
|
|
||||||
|
/*
|
||||||
|
echo "<pre>";
|
||||||
|
echo 'XML Request: ' . htmlspecialchars($this->generate->getLastRequest()) . "\r\n";
|
||||||
|
echo 'Headers Request: ' . htmlspecialchars($this->generate->getLastRequestHeaders()) . "\r\n";
|
||||||
|
echo 'XML Response: ' . htmlspecialchars($this->generate->getLastResponse()) . "\r\n";
|
||||||
|
echo 'Headers Response: ' . htmlspecialchars($this->generate->getLastResponseHeaders()) . "\r\n";
|
||||||
|
echo "</pre>";
|
||||||
|
*/
|
||||||
|
if ($this->generate->getLastResponse(true) instanceof \DOMDocument) {
|
||||||
|
$response = $this->generate->getLastResponse();
|
||||||
|
Tlog::getInstance()->debug("Colissimo shipping label response: " . $response);
|
||||||
|
|
||||||
|
echo $response;
|
||||||
|
|
||||||
|
$domDocument = $this->generate->getLastResponse(true);
|
||||||
|
|
||||||
|
$type = $domDocument->getElementsByTagName('type')->item(0)->nodeValue;
|
||||||
|
|
||||||
|
if ($type !== 'ERROR') {
|
||||||
|
$pdfUrlElement = $domDocument->getElementsByTagName('pdfUrl');
|
||||||
|
$includeElement = $domDocument->getElementsByTagName('Include');
|
||||||
|
|
||||||
|
if ($pdfUrlElement->length > 0) {
|
||||||
|
$urlPdf = $pdfUrlElement->item(0)->nodeValue;
|
||||||
|
|
||||||
|
if (!empty($urlPdf)) {
|
||||||
|
$labelContent = file_get_contents($urlPdf);
|
||||||
|
}
|
||||||
|
} elseif ($includeElement->length > 0) {
|
||||||
|
$href = str_replace('cid:', '', $includeElement->item(0)->attributes['href']->value);
|
||||||
|
|
||||||
|
$rawResponse = $this->generate->getRawResponse();
|
||||||
|
|
||||||
|
preg_match("/.*Content-ID: <$href>(.*)--uuid.*$/s", $rawResponse, $matches);
|
||||||
|
|
||||||
|
if (isset($matches[1])) {
|
||||||
|
$labelContent = trim($matches[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$trackingNumber = $domDocument->getElementsByTagName('parcelNumber')->item(0)->nodeValue;
|
||||||
|
|
||||||
|
// Update tracking number.
|
||||||
|
$order
|
||||||
|
->setDeliveryRef($trackingNumber)
|
||||||
|
->save();
|
||||||
|
|
||||||
|
$message = "L'étiquette a été générée correctement.";
|
||||||
|
} else {
|
||||||
|
$erreur = true;
|
||||||
|
$message = $domDocument->getElementsByTagName('messageContent')->item(0)->nodeValue;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$erreur = true;
|
||||||
|
$message = $this->generate->getLastErrorForMethod('ColissimoPostage\ServiceType\Generate::generateLabel')->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $label = ColissimowsLabelQuery::create()->findOneByOrderId($order->getId())) {
|
||||||
|
$label = (new ColissimowsLabel())
|
||||||
|
->setOrderId($order->getId())
|
||||||
|
->setOrderRef($order->getRef())
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
$label
|
||||||
|
->setError($erreur)
|
||||||
|
->setErrorMessage($message)
|
||||||
|
->setTrackingNumber($trackingNumber)
|
||||||
|
->setLabelData($labelContent)
|
||||||
|
->setLabelType(ColissimoWs::getLabelFileType())
|
||||||
|
->setWeight($totalWeight)
|
||||||
|
->setSigned($signed)
|
||||||
|
;
|
||||||
|
|
||||||
|
$label ->save();
|
||||||
|
|
||||||
|
///** Compatibility with module SoColissimoLabel /!\ Do not use strict comparison */
|
||||||
|
//if (ModuleQuery::create()->findOneByCode('ColissimoLabel')->getActivate() == true)
|
||||||
|
//{
|
||||||
|
// if (null === $labelCompat = ColissimoLabelQuery::create()->findOneByOrderId($order->getId())) {
|
||||||
|
// /** @var $labelCompat */
|
||||||
|
// $labelCompat = (new \ColissimoLabel\Model\ColissimoLabel())
|
||||||
|
// ->setOrderId($order->getId())
|
||||||
|
// ;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// $labelCompat
|
||||||
|
// ->setWeight($totalWeight)
|
||||||
|
// ->setSigned($signed)
|
||||||
|
// ->setNumber($trackingNumber)
|
||||||
|
// ;
|
||||||
|
//
|
||||||
|
// $labelCompat->save();
|
||||||
|
//}
|
||||||
|
|
||||||
|
$event->setColissimoWsLabel($label);
|
||||||
|
} else {
|
||||||
|
throw new \InvalidArgumentException("Failed to find order ID " . $event->getOrderId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function formatterTelephone($numero, $codePays)
|
||||||
|
{
|
||||||
|
$phoneUtil = PhoneNumberUtil::getInstance();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$normalizedNumber = $phoneUtil->parse($numero, strtoupper($codePays));
|
||||||
|
|
||||||
|
return $phoneUtil->format($normalizedNumber, \libphonenumber\PhoneNumberFormat::E164);
|
||||||
|
} catch (NumberParseException $e) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function corrigerLocalite($localite)
|
||||||
|
{
|
||||||
|
$localite = strtoupper($localite);
|
||||||
|
|
||||||
|
$localite = str_replace(['SAINTE', 'SAINT', '/'], array('STE', 'ST', ''), $localite);
|
||||||
|
|
||||||
|
return $localite;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function cleanUpAddresse($str)
|
||||||
|
{
|
||||||
|
return preg_replace("/[^A-Za-z0-9]/", ' ', $this->removeAccents($str));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function cleanupUserEnteredString($str)
|
||||||
|
{
|
||||||
|
$str = preg_replace("/&#[0-9]+;/", '', $str);
|
||||||
|
$str = preg_replace("/[^A-Za-z0-9]/", ' ', $this->removeAccents($str));
|
||||||
|
|
||||||
|
return $str;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function removeAccents($str)
|
||||||
|
{
|
||||||
|
return \Transliterator::create('NFD; [:Nonspacing Mark:] Remove; NFC')->transliterate($str);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 14:34
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\EventListeners;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Thelia\Action\BaseAction;
|
||||||
|
use Thelia\Core\Event\Order\OrderEvent;
|
||||||
|
use Thelia\Core\Event\TheliaEvents;
|
||||||
|
use Thelia\Core\Template\ParserInterface;
|
||||||
|
use Thelia\Mailer\MailerFactory;
|
||||||
|
use Thelia\Model\ConfigQuery;
|
||||||
|
|
||||||
|
class ShippingNotificationSender 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public static function getSubscribedEvents()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
TheliaEvents::ORDER_UPDATE_STATUS => ["sendShippingNotification", 128]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param OrderEvent $event
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function sendShippingNotification(OrderEvent $event)
|
||||||
|
{
|
||||||
|
if ($event->getOrder()->isSent()) {
|
||||||
|
$contact_email = ConfigQuery::getStoreEmail();
|
||||||
|
|
||||||
|
if ($contact_email) {
|
||||||
|
$order = $event->getOrder();
|
||||||
|
$customer = $order->getCustomer();
|
||||||
|
|
||||||
|
$this->mailer->sendEmailToCustomer(
|
||||||
|
ColissimoWs::CONFIRMATION_MESSAGE_NAME,
|
||||||
|
$order->getCustomer(),
|
||||||
|
[
|
||||||
|
'order_id' => $order->getId(),
|
||||||
|
'order_ref' => $order->getRef(),
|
||||||
|
'customer_id' => $customer->getId(),
|
||||||
|
'order_date' => $order->getCreatedAt(),
|
||||||
|
'update_date' => $order->getUpdatedAt(),
|
||||||
|
'package' => $order->getDeliveryRef()
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
182
local/modules/ColissimoWs/Form/ConfigurationForm.php
Normal file
182
local/modules/ColissimoWs/Form/ConfigurationForm.php
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 17/08/2019 12:26
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Form;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use SimpleDhl\SimpleDhl;
|
||||||
|
use Symfony\Component\Validator\Constraints\NotBlank;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
|
||||||
|
class ConfigurationForm extends BaseForm
|
||||||
|
{
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
ColissimoWs::COLISSIMO_USERNAME,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [
|
||||||
|
new NotBlank(),
|
||||||
|
],
|
||||||
|
'label' => $this->translator->trans('Colissimo username', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'help' => $this->translator->trans(
|
||||||
|
'Nom d\'utilisateur Colissimo. C\'est l\'identifiants qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::COLISSIMO_PASSWORD,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [
|
||||||
|
new NotBlank(),
|
||||||
|
],
|
||||||
|
'label' => $this->translator->trans('Colissimo password', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'help' => $this->translator->trans(
|
||||||
|
'Le mot de passe qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)->add(
|
||||||
|
ColissimoWs::AFFRANCHISSEMENT_ENDPOINT_URL,
|
||||||
|
'url',
|
||||||
|
[
|
||||||
|
'constraints' => [
|
||||||
|
new NotBlank(),
|
||||||
|
],
|
||||||
|
'label' => $this->translator->trans('Endpoint du web service d\'affranchissement', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'help' => $this->translator->trans(
|
||||||
|
'Indiquez le endpoint de base à utiliser, par exemple https://domain.tld/transactionaldata/api/v1',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)->add(
|
||||||
|
ColissimoWs::FORMAT_ETIQUETTE,
|
||||||
|
'choice',
|
||||||
|
[
|
||||||
|
'constraints' => [
|
||||||
|
new NotBlank(),
|
||||||
|
],
|
||||||
|
'choices' => [
|
||||||
|
'PDF_A4_300dpi' => 'Bureautique PDF, A4, résolution 300dpi',
|
||||||
|
'PDF_10x15_300dpi' => 'Bureautique PDF, 10cm par 15cm, résolution 300dpi',
|
||||||
|
'ZPL_10x15_203dpi' => 'Thermique en ZPL, de dimension 10cm par 15cm, et de résolution 203dpi',
|
||||||
|
'ZPL_10x15_300dpi' => 'Thermique ZPL, 10cm par 15cm, résolution 300dpi',
|
||||||
|
'DPL_10x15_203dpi' => 'Thermique DPL, 10cm par 15cm, résolution 203dpi',
|
||||||
|
'DPL_10x15_300dpi' => 'Thermique DPL, 10cm par 15cm, résolution 300dpi',
|
||||||
|
],
|
||||||
|
'label' => $this->translator->trans('Format des étiquettes', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'help' => $this->translator->trans(
|
||||||
|
'Indiquez le format des étiquettes à générer, en fonction de l\'imprimante dont vous disposez.',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)->add(
|
||||||
|
ColissimoWs::ACTIVATE_DETAILED_DEBUG,
|
||||||
|
'checkbox',
|
||||||
|
[
|
||||||
|
'required' => false,
|
||||||
|
'label' => $this->translator->trans('Activer les logs détaillés', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
'label_attr' => [
|
||||||
|
'help' => $this->translator->trans(
|
||||||
|
'Si cette case est cochée, le texte complet des requêtes et des réponses figurera dans le log Thelia',
|
||||||
|
[],
|
||||||
|
ColissimoWs::DOMAIN_NAME
|
||||||
|
)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_NAME,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [
|
||||||
|
new NotBlank(),
|
||||||
|
],
|
||||||
|
'label' => $this->translator->trans('Nom de société', [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_ADDRESS_1,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Adresse', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_ADDRESS_2,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ ],
|
||||||
|
'required' => false,
|
||||||
|
'label' => $this->translator->trans('Adresse (suite)', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_CITY,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Ville', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_ZIPCODE,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Code postal', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
ColissimoWs::FROM_COUNTRY,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Pays', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)->add(
|
||||||
|
ColissimoWs::FROM_CONTACT_EMAIL,
|
||||||
|
'email',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Adresse e-mail de contact pour les expéditions', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)->add(
|
||||||
|
ColissimoWs::FROM_PHONE,
|
||||||
|
'text',
|
||||||
|
[
|
||||||
|
'constraints' => [ new NotBlank() ],
|
||||||
|
'label' => $this->translator->trans('Téléphone', [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
69
local/modules/ColissimoWs/Form/FreeShippingForm.php
Normal file
69
local/modules/ColissimoWs/Form/FreeShippingForm.php
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<?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 ColissimoWs\Form;
|
||||||
|
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
|
||||||
|
class FreeShippingForm extends BaseForm
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* in this function you add all the fields you need for your Form.
|
||||||
|
* Form this you have to call add method on $this->formBuilder attribute :
|
||||||
|
*
|
||||||
|
* $this->formBuilder->add("name", "text")
|
||||||
|
* ->add("email", "email", array(
|
||||||
|
* "attr" => array(
|
||||||
|
* "class" => "field"
|
||||||
|
* ),
|
||||||
|
* "label" => "email",
|
||||||
|
* "constraints" => array(
|
||||||
|
* new \Symfony\Component\Validator\Constraints\NotBlank()
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* ->add('age', 'integer');
|
||||||
|
*
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add("delivery_mode", "integer")
|
||||||
|
->add("freeshipping", "checkbox", array(
|
||||||
|
'label'=>Translator::getInstance()->trans("Activate free shipping: ")
|
||||||
|
))
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string the name of you form. This name must be unique
|
||||||
|
*/
|
||||||
|
public function getName()
|
||||||
|
{
|
||||||
|
return "colissimowsfreeshipping";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
71
local/modules/ColissimoWs/Form/LabelGenerationForm.php
Normal file
71
local/modules/ColissimoWs/Form/LabelGenerationForm.php
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 17/08/2019 12:26
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Form;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use Thelia\Core\Translation\Translator;
|
||||||
|
use Thelia\Form\BaseForm;
|
||||||
|
|
||||||
|
class LabelGenerationForm extends BaseForm
|
||||||
|
{
|
||||||
|
protected function buildForm()
|
||||||
|
{
|
||||||
|
$this->formBuilder
|
||||||
|
->add(
|
||||||
|
'new_status',
|
||||||
|
'choice', [
|
||||||
|
'label' => Translator::getInstance()->trans('Order status after export'),
|
||||||
|
'choices' => [
|
||||||
|
"nochange" => Translator::getInstance()->trans("Do not change", [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
"processing" => Translator::getInstance()->trans("Set orders status as processing", [], ColissimoWs::DOMAIN_NAME),
|
||||||
|
"sent" => Translator::getInstance()->trans("Set orders status as sent", [], ColissimoWs::DOMAIN_NAME)
|
||||||
|
],
|
||||||
|
'required' => 'true',
|
||||||
|
'expanded' => true,
|
||||||
|
'multiple' => false,
|
||||||
|
'data' => ColissimoWs::getConfigValue("new_status", 'nochange')
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
'order_id',
|
||||||
|
'collection',
|
||||||
|
[
|
||||||
|
'type' => 'integer',
|
||||||
|
'allow_add' => true,
|
||||||
|
'allow_delete' => true,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"weight",
|
||||||
|
'collection',
|
||||||
|
[
|
||||||
|
'type' => 'number',
|
||||||
|
'allow_add' => true,
|
||||||
|
'allow_delete' => true,
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->add(
|
||||||
|
"signed",
|
||||||
|
"collection",
|
||||||
|
[
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'label' => 'Signature',
|
||||||
|
'allow_add' => true,
|
||||||
|
'allow_delete' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}
|
||||||
65
local/modules/ColissimoWs/Hook/HookManager.php
Normal file
65
local/modules/ColissimoWs/Hook/HookManager.php
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 17/08/2019 14:34
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Hook;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderBlockEvent;
|
||||||
|
use Thelia\Core\Event\Hook\HookRenderEvent;
|
||||||
|
use Thelia\Core\Hook\BaseHook;
|
||||||
|
use Thelia\Model\ModuleConfig;
|
||||||
|
use Thelia\Model\ModuleConfigQuery;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
|
class HookManager extends BaseHook
|
||||||
|
{
|
||||||
|
public function onModuleConfigure(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$vars = [ ];
|
||||||
|
|
||||||
|
if (null !== $params = ModuleConfigQuery::create()->findByModuleId(ColissimoWs::getModuleId())) {
|
||||||
|
|
||||||
|
/** @var ModuleConfig $param */
|
||||||
|
foreach ($params as $param) {
|
||||||
|
$vars[ $param->getName() ] = $param->getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$event->add(
|
||||||
|
$this->render(
|
||||||
|
'colissimows/module_configuration.html',
|
||||||
|
$vars
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onMainTopMenuTools(HookRenderBlockEvent $event)
|
||||||
|
{
|
||||||
|
$event->add(
|
||||||
|
[
|
||||||
|
'id' => 'tools_menu_colissimows',
|
||||||
|
'class' => '',
|
||||||
|
'url' => URL::getInstance()->absoluteUrl('/admin/module/ColissimoWs'),
|
||||||
|
'title' => $this->translator->trans("Colissimo labels (%num)", [ '%num' => ColissimowsLabelQuery::create()->count() ], ColissimoWs::DOMAIN_NAME)
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onModuleConfigJs(HookRenderEvent $event)
|
||||||
|
{
|
||||||
|
$event->add($this->render('colissimows/module-config-js.html'));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
52
local/modules/ColissimoWs/I18n/backOffice/default/fr_FR.php
Normal file
52
local/modules/ColissimoWs/I18n/backOffice/default/fr_FR.php
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Actions' => 'Actions',
|
||||||
|
'Activate total free shipping ' => 'Activer la livraison gratuite totale',
|
||||||
|
'Add this price slice' => 'Ajouter cette tranche de prix',
|
||||||
|
'Area : ' => 'Zone :',
|
||||||
|
'Change to "Processing"' => 'Statut "Traitement"',
|
||||||
|
'Change to "Sent". If you choose this option, the delivery notification email is sent to the customer, and the processed order are removed from this page.' => 'Statut "Envoyé". Si vous choisissez cette option, la notification d\'expédition est envoyée au client, et la commande n\'apparaît plus dans cette page',
|
||||||
|
'Clear label' => 'Supprimer l\'étiquette et le numéro de suivi de cette commande',
|
||||||
|
'Colissimo Web service configuration' => 'Configuration Colissimo Affranchissement',
|
||||||
|
'Configuration' => 'Configuration',
|
||||||
|
'Configuration du service' => 'Configuration du service',
|
||||||
|
'Coordonnées de d\'expéditeur' => 'Coordonnées de d\'expéditeur',
|
||||||
|
'Customs invoice' => 'Facture douanes',
|
||||||
|
'Delete this price slice' => 'Supprimer cette tranche de prix',
|
||||||
|
'Destination' => 'Destination',
|
||||||
|
'Do not change' => 'Inchangé',
|
||||||
|
'Do you want to clear label and tracking number for this order ?' => 'Voulez-vous supprimer l\'étiquette et le numéro de suivi de cette commande ?',
|
||||||
|
'Download and print Colissimo labels for not sent orders' => 'Télécharger et imprimer les étiquettes d\'affranchissement pour les commandes qui n\'ont pas encore été envoyées',
|
||||||
|
'Download customs invoice (PDF)' => 'Télécharger la facture de douanes (PDF)',
|
||||||
|
'Download label (%fmt)' => 'Télécharger l\'étiquette (%fmt)',
|
||||||
|
'If a cart matches multiple slices, it will take the last slice following that order.' => 'Si un panier correspond à plusieurs tranches, la dernière tranche sera prise en compte selon cet ordre.',
|
||||||
|
'If you don\'t specify a cart price in a slice, it will have priority over the other slices with the same weight.' => 'Si vous ne renseignez pas de prix de panier max dans une tranche, elle aura la priorité sur les autres tranches ayant le même poids.',
|
||||||
|
'If you don\'t specify a cart weight in a slice, it will have priority over the slices with weight.' => 'Si vous ne renseignez pas de poids max dans une tranche, elle aura la priorité sur les tranches ayant un poids.',
|
||||||
|
'If you specify both, the cart will require to have a lower weight AND a lower price in order to match the slice.' => 'Si vous renseignez les deux, le panier devra avoir à la fois un poids inférieur ET un prix inférieur pour correspondre à cette tranche.',
|
||||||
|
'Label' => 'Etiquette',
|
||||||
|
'Label cannot be created. Error is: ' => 'La création de l\'étiquette a échoué. L\'erreur est:',
|
||||||
|
'Message' => 'Message',
|
||||||
|
'Non disponible' => 'Non disponible',
|
||||||
|
'Order date' => 'Date de commande',
|
||||||
|
'Order status change after processing' => 'Statut des commandes après traitement',
|
||||||
|
'Price slices (Dom)' => 'Tranches de prix (Domicile)',
|
||||||
|
'Price slices for domicile delivery' => 'Tranches de prix pour la livraison à domicile',
|
||||||
|
'Process selected orders' => 'Traiter les commandes sélectionnées',
|
||||||
|
'REF' => 'Ref.',
|
||||||
|
'Save this price slice' => 'Sauvegarder cette tranche de prix',
|
||||||
|
'Sel.' => 'Sel.',
|
||||||
|
'Shipping Price ($)' => 'Frais de livraison',
|
||||||
|
'Shipping labels' => 'Étiquettes d\'affranchissement',
|
||||||
|
'Signature' => 'Signature',
|
||||||
|
'The slices are ordered by maximum cart weight then by maximum cart price.' => 'Les tranches sont triés pour poids de panier max puis par prix de panier max.',
|
||||||
|
'There are currently no orders to ship with Colissimo' => 'Il n\'y a aucune commande à livrer avec Colissimo pour le moment.',
|
||||||
|
'Tracking' => 'No. de suivi',
|
||||||
|
'Untaxed Price up to ... ($)' => 'Prix (HT) jusqu\'à :',
|
||||||
|
'Weight' => 'Poids (kg)',
|
||||||
|
'Weight up to ... kg' => 'Poids (kg) jusqu\'à :',
|
||||||
|
'You can create price slices by specifying a maximum cart weight and/or a maximum cart price.' => 'Vous pouvez créer des tranches de prix pour les frais de port en spécifiant un poids de panier maximum et/ou un prix de panier maximum.',
|
||||||
|
'You should first attribute shipping zones to the modules: ' => 'Vous devez tout d\'abord ajouter des zones de livraisons au module',
|
||||||
|
'kg' => 'kg',
|
||||||
|
'manage shipping zones' => 'Gérer les zones de livraison',
|
||||||
|
);
|
||||||
15
local/modules/ColissimoWs/I18n/email/default/fr_FR.php
Normal file
15
local/modules/ColissimoWs/I18n/email/default/fr_FR.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'<a href="https://www.colissimo.fr/portail_colissimo/suivreResultat.do?parcelnumber=%package">Click here</a> to track your shipment. You can also enter the tracking number on <a href="https://www.laposte.fr/outils/suivre-vos-envois">https://www.laposte.fr/outils/suivre-vos-envois</a>' => '<a href="https://www.colissimo.fr/portail_colissimo/suivreResultat.do?parcelnumber=%package">Cliquez ici</a> pour suivre l\'acheminement. Vous pouvez aussi entrer le numéro de suivi sur <a href="https://www.laposte.fr/outils/suivre-vos-envois">https://www.laposte.fr/outils/suivre-vos-envois</a>',
|
||||||
|
'Dear Mr. ' => 'Cher Mr',
|
||||||
|
'Dear Ms. ' => 'Cher Mme',
|
||||||
|
'Please display this message in HTML' => 'Afficher ce message en HTML',
|
||||||
|
'Thank you for your shopping with us and hope to see you soon on <a href="#">www.yourshop.com</a>' => 'Nous vous remercions pour votre achat et espérons vous revoir très vite sur <a href="#">www.votreboutique.com</a>',
|
||||||
|
'We are pleased to inform you that your order number' => 'Nous sommes heureux de vous informer que votre commande N°',
|
||||||
|
'Your on-line store Manager' => 'Nom de personne chargé de la communication',
|
||||||
|
'Your order confirmation Nº %ref' => 'Votre commande N° %ref',
|
||||||
|
'Your shop' => 'Votre boutique',
|
||||||
|
'has been shipped on' => 'a été envoyé le',
|
||||||
|
'with the tracking number' => 'avec le numéro de suivi',
|
||||||
|
);
|
||||||
4
local/modules/ColissimoWs/I18n/en_US.php
Normal file
4
local/modules/ColissimoWs/I18n/en_US.php
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
// 'an english string' => 'The displayed english string',
|
||||||
|
);
|
||||||
37
local/modules/ColissimoWs/I18n/fr_FR.php
Normal file
37
local/modules/ColissimoWs/I18n/fr_FR.php
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Activate free shipping: ' => 'Activer les frais de ports gratuits',
|
||||||
|
'Activer les logs détaillés' => 'Activer les logs détaillés',
|
||||||
|
'Adresse' => 'Adresse',
|
||||||
|
'Adresse (suite)' => 'Adresse (suite)',
|
||||||
|
'Adresse e-mail de contact pour les expéditions' => 'Adresse e-mail de contact pour les expéditions',
|
||||||
|
'Code postal' => 'Code postal',
|
||||||
|
'Colissimo labels (%num)' => 'Etiquettes colissimo (%num)',
|
||||||
|
'Colissimo password' => 'Mot de passe Colissimo',
|
||||||
|
'Colissimo username' => 'Nom d\'utilisateur Colissimo',
|
||||||
|
'ColissimoWs configuration' => 'Configuration Colissimo Affranchissement',
|
||||||
|
'Do not change' => 'Inchangé',
|
||||||
|
'Endpoint du web service d\'affranchissement' => 'Endpoint du web service d\'affranchissement',
|
||||||
|
'Format des étiquettes' => 'Format des étiquettes',
|
||||||
|
'Indiquez le endpoint de base à utiliser, par exemple https://domain.tld/transactionaldata/api/v1' => 'Indiquez le endpoint de base à utiliser, par exemple https://domain.tld/transactionaldata/api/v1',
|
||||||
|
'Indiquez le format des étiquettes à générer, en fonction de l\'imprimante dont vous disposez.' => 'Indiquez le format des étiquettes à générer, en fonction de l\'imprimante dont vous disposez.',
|
||||||
|
'Le mot de passe qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise' => 'Le mot de passe qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise',
|
||||||
|
'Nom d\'utilisateur Colissimo. C\'est l\'identifiants qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise' => 'Nom d\'utilisateur Colissimo. C\'est l\'identifiants qui vous permet d’accéder à votre espace client à l\'adresse https://www.colissimo.fr/entreprise',
|
||||||
|
'Nom de société' => 'Nom de société',
|
||||||
|
'Order status after export' => 'Statut de commande après le traitement',
|
||||||
|
'Pays' => 'Pays',
|
||||||
|
'Please enter a weight for every selected order' => 'Merci d\'indiquer un poids pour chacune des commandes sélectionnées',
|
||||||
|
'Set orders status as processing' => 'Placer la commande en "Traitement"',
|
||||||
|
'Set orders status as sent' => 'Placer la commande "Envoyée"',
|
||||||
|
'Si cette case est cochée, le texte complet des requêtes et des réponses figurera dans le log Thelia' => 'Si cette case est cochée, le texte complet des requêtes et des réponses figurera dans le log Thelia',
|
||||||
|
'The area is not valid' => 'La zone n\'est pas valide',
|
||||||
|
'The price max value is not valid' => 'La valeur du prix max. n\'est pas valide',
|
||||||
|
'The price value is not valid' => 'La valeur du prix n\'est pas valide',
|
||||||
|
'The slice has not been deleted' => 'La tranche de prix n\'a pas été supprimée',
|
||||||
|
'The weight max value is not valid' => 'La valeur du poids max. n\'est pas valide',
|
||||||
|
'Téléphone' => 'Téléphone',
|
||||||
|
'Ville' => 'Ville',
|
||||||
|
'You must specify at least a price max or a weight max value.' => 'Vous devez spécifier au moins un prix max. ou un poids max.',
|
||||||
|
'Your slice has been saved' => 'La tranche de prix a été sauvegardée',
|
||||||
|
);
|
||||||
17
local/modules/ColissimoWs/I18n/pdf/default/fr_FR.php
Normal file
17
local/modules/ColissimoWs/I18n/pdf/default/fr_FR.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'Country' => 'Pays',
|
||||||
|
'Engraving ' => 'Gravure',
|
||||||
|
'Font ' => 'Police de caractère',
|
||||||
|
'Free samples ' => 'Échantillons gratuits ',
|
||||||
|
'Full Description of Goods' => 'Description complète des biens',
|
||||||
|
'Position ' => 'Position',
|
||||||
|
'Quantity' => 'Quantité',
|
||||||
|
'Style ' => 'Style',
|
||||||
|
'Subtotal value' => 'Sous-total',
|
||||||
|
'Unit net weight' => 'Poids net unitaire',
|
||||||
|
'Unit value' => 'Valeur unitaire',
|
||||||
|
'Your gift ' => 'Votre cadeau',
|
||||||
|
'Your text ' => 'Votre texte',
|
||||||
|
);
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Loop;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshipping;
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshippingQuery;
|
||||||
|
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 ColissimoWsFreeShippingLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return ArgumentCollection
|
||||||
|
*/
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntTypeArgument('id')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
if (null === $isFreeShippingActive = ColissimowsFreeshippingQuery::create()->findOneById(1)){
|
||||||
|
$isFreeShippingActive = new ColissimowsFreeshipping();
|
||||||
|
$isFreeShippingActive->setId(1);
|
||||||
|
$isFreeShippingActive->setActive(0);
|
||||||
|
$isFreeShippingActive->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ColissimowsFreeshippingQuery::create()->filterById(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
/** @var \ColissimoWs\Model\ColissimowsFreeshipping $freeshipping */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $freeshipping) {
|
||||||
|
$loopResultRow = new LoopResultRow($freeshipping);
|
||||||
|
$loopResultRow->set("FREESHIPPING_ACTIVE", $freeshipping->getActive());
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
102
local/modules/ColissimoWs/Loop/ColissimoWsLabelInfo.php
Normal file
102
local/modules/ColissimoWs/Loop/ColissimoWsLabelInfo.php
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 17:56
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Loop;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabel;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery;
|
||||||
|
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;
|
||||||
|
use Thelia\Model\OrderQuery;
|
||||||
|
use Thelia\Tools\URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @package SimpleDhl\Loop
|
||||||
|
* @method int getOrderId()
|
||||||
|
*/
|
||||||
|
class ColissimoWsLabelInfo extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return ArgumentCollection
|
||||||
|
*/
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntTypeArgument('order_id', null, true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
return ColissimowsLabelQuery::create()
|
||||||
|
->filterByOrderId($this->getOrderId());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param LoopResult $loopResult
|
||||||
|
* @return LoopResult
|
||||||
|
* @throws \Propel\Runtime\Exception\PropelException
|
||||||
|
*/
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
if ($loopResult->getResultDataCollectionCount() === 0) {
|
||||||
|
if (null !== $order = OrderQuery::create()->findPk($this->getOrderId())) {
|
||||||
|
$loopResultRow = new LoopResultRow();
|
||||||
|
|
||||||
|
$loopResultRow
|
||||||
|
->set("ORDER_ID", $this->getOrderId())
|
||||||
|
->set("HAS_ERROR", false)
|
||||||
|
->set("ERROR_MESSAGE", null)
|
||||||
|
->set("WEIGHT", $order->getWeight())
|
||||||
|
->set("SIGNED", true)
|
||||||
|
->set("TRACKING_NUMBER", null)
|
||||||
|
->set("HAS_LABEL", false)
|
||||||
|
->set("LABEL_URL", URL::getInstance()->absoluteUrl("/admin/module/colissimows/label/" . $this->getOrderId()))
|
||||||
|
->set("CLEAR_LABEL_URL", URL::getInstance()->absoluteUrl("/admin/module/colissimows/label/clear/" . $this->getOrderId()))
|
||||||
|
->set("CAN_BE_NOT_SIGNED", ColissimoWs::canOrderBeNotSigned($order));
|
||||||
|
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
/** @var ColissimowsLabel $result */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $result) {
|
||||||
|
$loopResultRow = new LoopResultRow();
|
||||||
|
|
||||||
|
$loopResultRow
|
||||||
|
->set("ORDER_ID", $result->getOrderId())
|
||||||
|
->set("HAS_ERROR", $result->getError())
|
||||||
|
->set("ERROR_MESSAGE", $result->getErrorMessage())
|
||||||
|
->set("WEIGHT", empty($result->getWeight()) ? $result->getOrder()->getWeight() : $result->getWeight())
|
||||||
|
->set("SIGNED", $result->getSigned())
|
||||||
|
->set("TRACKING_NUMBER", $result->getTrackingNumber())
|
||||||
|
->set("HAS_LABEL", ! empty($result->getLabelData()))
|
||||||
|
->set("LABEL_TYPE", $result->getLabelType())
|
||||||
|
->set("HAS_CUSTOMS_INVOICE", $result->getWithCustomsInvoice())
|
||||||
|
->set("LABEL_URL", URL::getInstance()->absoluteUrl("/admin/module/colissimows/label/" . $result->getOrderId()))
|
||||||
|
->set("CUSTOMS_INVOICE_URL", URL::getInstance()->absoluteUrl("/admin/module/colissimows/customs-invoice/" . $result->getOrderId()))
|
||||||
|
->set("CLEAR_LABEL_URL", URL::getInstance()->absoluteUrl("/admin/module/colissimows/label/clear/" . $result->getOrderId()))
|
||||||
|
->set("CAN_BE_NOT_SIGNED", ColissimoWs::canOrderBeNotSigned($result->getOrder()));
|
||||||
|
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
61
local/modules/ColissimoWs/Loop/OrdersNotYetSentLoop.php
Normal file
61
local/modules/ColissimoWs/Loop/OrdersNotYetSentLoop.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
/*************************************************************************************/
|
||||||
|
/* Copyright (c) Franck Allimant, CQFDev */
|
||||||
|
/* email : thelia@cqfdev.fr */
|
||||||
|
/* web : http://www.cqfdev.fr */
|
||||||
|
/* */
|
||||||
|
/* For the full copyright and license information, please view the LICENSE */
|
||||||
|
/* file that was distributed with this source code. */
|
||||||
|
/*************************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Franck Allimant, CQFDev <franck@cqfdev.fr>
|
||||||
|
* Date: 04/09/2019 17:53
|
||||||
|
*/
|
||||||
|
namespace ColissimoWs\Loop;
|
||||||
|
|
||||||
|
use ColissimoWs\ColissimoWs;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\Argument;
|
||||||
|
use Thelia\Core\Template\Loop\Argument\ArgumentCollection;
|
||||||
|
use Thelia\Core\Template\Loop\Order;
|
||||||
|
use Thelia\Model\OrderQuery;
|
||||||
|
use Thelia\Model\OrderStatus;
|
||||||
|
use Thelia\Model\OrderStatusQuery;
|
||||||
|
|
||||||
|
class OrdersNotYetSentLoop extends Order
|
||||||
|
{
|
||||||
|
public function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(Argument::createBooleanTypeArgument('with_prev_next_info', false));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this method returns a Propel ModelCriteria
|
||||||
|
*
|
||||||
|
* @return \Propel\Runtime\ActiveQuery\ModelCriteria
|
||||||
|
*/
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
$status = OrderStatusQuery::create()
|
||||||
|
->filterByCode(
|
||||||
|
array(
|
||||||
|
OrderStatus::CODE_PAID,
|
||||||
|
OrderStatus::CODE_PROCESSING,
|
||||||
|
),
|
||||||
|
Criteria::IN
|
||||||
|
)
|
||||||
|
->find()
|
||||||
|
->toArray("code");
|
||||||
|
$query = OrderQuery::create()
|
||||||
|
->filterByDeliveryModuleId(ColissimoWs::getModCode())
|
||||||
|
->filterByStatusId(
|
||||||
|
array(
|
||||||
|
$status[OrderStatus::CODE_PAID]['Id'],
|
||||||
|
$status[OrderStatus::CODE_PROCESSING]['Id']),
|
||||||
|
Criteria::IN
|
||||||
|
);
|
||||||
|
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
}
|
||||||
57
local/modules/ColissimoWs/Loop/PriceSlicesLoop.php
Normal file
57
local/modules/ColissimoWs/Loop/PriceSlicesLoop.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace ColissimoWs\Loop;
|
||||||
|
|
||||||
|
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlicesQuery;
|
||||||
|
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;
|
||||||
|
use function mysql_xdevapi\getSession;
|
||||||
|
|
||||||
|
class PriceSlicesLoop extends BaseLoop implements PropelSearchLoopInterface
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return ArgumentCollection
|
||||||
|
*/
|
||||||
|
protected function getArgDefinitions()
|
||||||
|
{
|
||||||
|
return new ArgumentCollection(
|
||||||
|
Argument::createIntTypeArgument('area_id', null, true)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function buildModelCriteria()
|
||||||
|
{
|
||||||
|
$areaId = $this->getAreaId();
|
||||||
|
|
||||||
|
$areaPrices = ColissimowsPriceSlicesQuery::create()
|
||||||
|
->filterByAreaId($areaId)
|
||||||
|
->orderByMaxWeight()
|
||||||
|
->orderByMaxPrice()
|
||||||
|
;
|
||||||
|
|
||||||
|
return $areaPrices;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function parseResults(LoopResult $loopResult)
|
||||||
|
{
|
||||||
|
/** @var \ColissimoWs\Model\ColissimoWsPriceSlices $priceSlice */
|
||||||
|
foreach ($loopResult->getResultDataCollection() as $priceSlice) {
|
||||||
|
$loopResultRow = new LoopResultRow($priceSlice);
|
||||||
|
$loopResultRow
|
||||||
|
->set("SLICE_ID", $priceSlice->getId())
|
||||||
|
->set("MAX_WEIGHT", $priceSlice->getMaxWeight())
|
||||||
|
->set("MAX_PRICE", $priceSlice->getMaxPrice())
|
||||||
|
->set("SHIPPING", $priceSlice->getShipping())
|
||||||
|
->set("FRANCO", $priceSlice->getFrancoMinPrice())
|
||||||
|
;
|
||||||
|
$loopResult->addRow($loopResultRow);
|
||||||
|
}
|
||||||
|
return $loopResult;
|
||||||
|
}
|
||||||
|
}
|
||||||
1126
local/modules/ColissimoWs/Model/Base/ColissimowsFreeshipping.php
Normal file
1126
local/modules/ColissimoWs/Model/Base/ColissimowsFreeshipping.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,375 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshipping as ChildColissimowsFreeshipping;
|
||||||
|
use ColissimoWs\Model\ColissimowsFreeshippingQuery as ChildColissimowsFreeshippingQuery;
|
||||||
|
use ColissimoWs\Model\Map\ColissimowsFreeshippingTableMap;
|
||||||
|
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 'colissimows_freeshipping' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsFreeshippingQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildColissimowsFreeshippingQuery orderByActive($order = Criteria::ASC) Order by the active column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsFreeshippingQuery groupById() Group by the id column
|
||||||
|
* @method ChildColissimowsFreeshippingQuery groupByActive() Group by the active column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsFreeshippingQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsFreeshippingQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsFreeshippingQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsFreeshipping findOne(ConnectionInterface $con = null) Return the first ChildColissimowsFreeshipping matching the query
|
||||||
|
* @method ChildColissimowsFreeshipping findOneOrCreate(ConnectionInterface $con = null) Return the first ChildColissimowsFreeshipping matching the query, or a new ChildColissimowsFreeshipping object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsFreeshipping findOneById(int $id) Return the first ChildColissimowsFreeshipping filtered by the id column
|
||||||
|
* @method ChildColissimowsFreeshipping findOneByActive(boolean $active) Return the first ChildColissimowsFreeshipping filtered by the active column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildColissimowsFreeshipping objects filtered by the id column
|
||||||
|
* @method array findByActive(boolean $active) Return ChildColissimowsFreeshipping objects filtered by the active column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class ColissimowsFreeshippingQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \ColissimoWs\Model\Base\ColissimowsFreeshippingQuery 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 = '\\ColissimoWs\\Model\\ColissimowsFreeshipping', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildColissimowsFreeshippingQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsFreeshippingQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \ColissimoWs\Model\ColissimowsFreeshippingQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \ColissimoWs\Model\ColissimowsFreeshippingQuery();
|
||||||
|
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 ChildColissimowsFreeshipping|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = ColissimowsFreeshippingTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(ColissimowsFreeshippingTableMap::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 ChildColissimowsFreeshipping A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, ACTIVE FROM colissimows_freeshipping 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 ChildColissimowsFreeshipping();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
ColissimowsFreeshippingTableMap::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 ChildColissimowsFreeshipping|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 ChildColissimowsFreeshippingQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsFreeshippingTableMap::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 ChildColissimowsFreeshippingQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsFreeshippingTableMap::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 ChildColissimowsFreeshippingQuery 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(ColissimowsFreeshippingTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsFreeshippingTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsFreeshippingTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the active column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByActive(true); // WHERE active = true
|
||||||
|
* $query->filterByActive('yes'); // WHERE active = true
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param boolean|string $active The value to use as filter.
|
||||||
|
* Non-boolean arguments are converted using the following rules:
|
||||||
|
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
|
||||||
|
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
|
||||||
|
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsFreeshippingQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByActive($active = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_string($active)) {
|
||||||
|
$active = in_array(strtolower($active), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsFreeshippingTableMap::ACTIVE, $active, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildColissimowsFreeshipping $colissimowsFreeshipping Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsFreeshippingQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($colissimowsFreeshipping = null)
|
||||||
|
{
|
||||||
|
if ($colissimowsFreeshipping) {
|
||||||
|
$this->addUsingAlias(ColissimowsFreeshippingTableMap::ID, $colissimowsFreeshipping->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the colissimows_freeshipping 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(ColissimowsFreeshippingTableMap::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).
|
||||||
|
ColissimowsFreeshippingTableMap::clearInstancePool();
|
||||||
|
ColissimowsFreeshippingTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildColissimowsFreeshipping or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildColissimowsFreeshipping 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(ColissimowsFreeshippingTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(ColissimowsFreeshippingTableMap::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();
|
||||||
|
|
||||||
|
|
||||||
|
ColissimowsFreeshippingTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
ColissimowsFreeshippingTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ColissimowsFreeshippingQuery
|
||||||
1952
local/modules/ColissimoWs/Model/Base/ColissimowsLabel.php
Normal file
1952
local/modules/ColissimoWs/Model/Base/ColissimowsLabel.php
Normal file
File diff suppressed because it is too large
Load Diff
937
local/modules/ColissimoWs/Model/Base/ColissimowsLabelQuery.php
Normal file
937
local/modules/ColissimoWs/Model/Base/ColissimowsLabelQuery.php
Normal file
@@ -0,0 +1,937 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabel as ChildColissimowsLabel;
|
||||||
|
use ColissimoWs\Model\ColissimowsLabelQuery as ChildColissimowsLabelQuery;
|
||||||
|
use ColissimoWs\Model\Map\ColissimowsLabelTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||||
|
use Propel\Runtime\Collection\Collection;
|
||||||
|
use Propel\Runtime\Collection\ObjectCollection;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Thelia\Model\Order;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'colissimows_label' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabelQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByOrderId($order = Criteria::ASC) Order by the order_id column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByOrderRef($order = Criteria::ASC) Order by the order_ref column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByError($order = Criteria::ASC) Order by the error column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByErrorMessage($order = Criteria::ASC) Order by the error_message column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByTrackingNumber($order = Criteria::ASC) Order by the tracking_number column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByLabelData($order = Criteria::ASC) Order by the label_data column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByLabelType($order = Criteria::ASC) Order by the label_type column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByWeight($order = Criteria::ASC) Order by the weight column
|
||||||
|
* @method ChildColissimowsLabelQuery orderBySigned($order = Criteria::ASC) Order by the signed column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByWithCustomsInvoice($order = Criteria::ASC) Order by the with_customs_invoice column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByCreatedAt($order = Criteria::ASC) Order by the created_at column
|
||||||
|
* @method ChildColissimowsLabelQuery orderByUpdatedAt($order = Criteria::ASC) Order by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabelQuery groupById() Group by the id column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByOrderId() Group by the order_id column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByOrderRef() Group by the order_ref column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByError() Group by the error column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByErrorMessage() Group by the error_message column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByTrackingNumber() Group by the tracking_number column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByLabelData() Group by the label_data column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByLabelType() Group by the label_type column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByWeight() Group by the weight column
|
||||||
|
* @method ChildColissimowsLabelQuery groupBySigned() Group by the signed column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByWithCustomsInvoice() Group by the with_customs_invoice column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByCreatedAt() Group by the created_at column
|
||||||
|
* @method ChildColissimowsLabelQuery groupByUpdatedAt() Group by the updated_at column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabelQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsLabelQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsLabelQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabelQuery leftJoinOrder($relationAlias = null) Adds a LEFT JOIN clause to the query using the Order relation
|
||||||
|
* @method ChildColissimowsLabelQuery rightJoinOrder($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Order relation
|
||||||
|
* @method ChildColissimowsLabelQuery innerJoinOrder($relationAlias = null) Adds a INNER JOIN clause to the query using the Order relation
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabel findOne(ConnectionInterface $con = null) Return the first ChildColissimowsLabel matching the query
|
||||||
|
* @method ChildColissimowsLabel findOneOrCreate(ConnectionInterface $con = null) Return the first ChildColissimowsLabel matching the query, or a new ChildColissimowsLabel object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsLabel findOneById(int $id) Return the first ChildColissimowsLabel filtered by the id column
|
||||||
|
* @method ChildColissimowsLabel findOneByOrderId(int $order_id) Return the first ChildColissimowsLabel filtered by the order_id column
|
||||||
|
* @method ChildColissimowsLabel findOneByOrderRef(string $order_ref) Return the first ChildColissimowsLabel filtered by the order_ref column
|
||||||
|
* @method ChildColissimowsLabel findOneByError(boolean $error) Return the first ChildColissimowsLabel filtered by the error column
|
||||||
|
* @method ChildColissimowsLabel findOneByErrorMessage(string $error_message) Return the first ChildColissimowsLabel filtered by the error_message column
|
||||||
|
* @method ChildColissimowsLabel findOneByTrackingNumber(string $tracking_number) Return the first ChildColissimowsLabel filtered by the tracking_number column
|
||||||
|
* @method ChildColissimowsLabel findOneByLabelData(string $label_data) Return the first ChildColissimowsLabel filtered by the label_data column
|
||||||
|
* @method ChildColissimowsLabel findOneByLabelType(string $label_type) Return the first ChildColissimowsLabel filtered by the label_type column
|
||||||
|
* @method ChildColissimowsLabel findOneByWeight(double $weight) Return the first ChildColissimowsLabel filtered by the weight column
|
||||||
|
* @method ChildColissimowsLabel findOneBySigned(boolean $signed) Return the first ChildColissimowsLabel filtered by the signed column
|
||||||
|
* @method ChildColissimowsLabel findOneByWithCustomsInvoice(boolean $with_customs_invoice) Return the first ChildColissimowsLabel filtered by the with_customs_invoice column
|
||||||
|
* @method ChildColissimowsLabel findOneByCreatedAt(string $created_at) Return the first ChildColissimowsLabel filtered by the created_at column
|
||||||
|
* @method ChildColissimowsLabel findOneByUpdatedAt(string $updated_at) Return the first ChildColissimowsLabel filtered by the updated_at column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildColissimowsLabel objects filtered by the id column
|
||||||
|
* @method array findByOrderId(int $order_id) Return ChildColissimowsLabel objects filtered by the order_id column
|
||||||
|
* @method array findByOrderRef(string $order_ref) Return ChildColissimowsLabel objects filtered by the order_ref column
|
||||||
|
* @method array findByError(boolean $error) Return ChildColissimowsLabel objects filtered by the error column
|
||||||
|
* @method array findByErrorMessage(string $error_message) Return ChildColissimowsLabel objects filtered by the error_message column
|
||||||
|
* @method array findByTrackingNumber(string $tracking_number) Return ChildColissimowsLabel objects filtered by the tracking_number column
|
||||||
|
* @method array findByLabelData(string $label_data) Return ChildColissimowsLabel objects filtered by the label_data column
|
||||||
|
* @method array findByLabelType(string $label_type) Return ChildColissimowsLabel objects filtered by the label_type column
|
||||||
|
* @method array findByWeight(double $weight) Return ChildColissimowsLabel objects filtered by the weight column
|
||||||
|
* @method array findBySigned(boolean $signed) Return ChildColissimowsLabel objects filtered by the signed column
|
||||||
|
* @method array findByWithCustomsInvoice(boolean $with_customs_invoice) Return ChildColissimowsLabel objects filtered by the with_customs_invoice column
|
||||||
|
* @method array findByCreatedAt(string $created_at) Return ChildColissimowsLabel objects filtered by the created_at column
|
||||||
|
* @method array findByUpdatedAt(string $updated_at) Return ChildColissimowsLabel objects filtered by the updated_at column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class ColissimowsLabelQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \ColissimoWs\Model\Base\ColissimowsLabelQuery 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 = '\\ColissimoWs\\Model\\ColissimowsLabel', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildColissimowsLabelQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \ColissimoWs\Model\ColissimowsLabelQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \ColissimoWs\Model\ColissimowsLabelQuery();
|
||||||
|
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 ChildColissimowsLabel|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = ColissimowsLabelTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(ColissimowsLabelTableMap::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 ChildColissimowsLabel A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, ORDER_ID, ORDER_REF, ERROR, ERROR_MESSAGE, TRACKING_NUMBER, LABEL_DATA, LABEL_TYPE, WEIGHT, SIGNED, WITH_CUSTOMS_INVOICE, CREATED_AT, UPDATED_AT FROM colissimows_label 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 ChildColissimowsLabel();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
ColissimowsLabelTableMap::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 ChildColissimowsLabel|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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::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 ChildColissimowsLabelQuery 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(ColissimowsLabelTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the order_id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByOrderId(1234); // WHERE order_id = 1234
|
||||||
|
* $query->filterByOrderId(array(12, 34)); // WHERE order_id IN (12, 34)
|
||||||
|
* $query->filterByOrderId(array('min' => 12)); // WHERE order_id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @see filterByOrder()
|
||||||
|
*
|
||||||
|
* @param mixed $orderId 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByOrderId($orderId = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($orderId)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($orderId['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::ORDER_ID, $orderId['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($orderId['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::ORDER_ID, $orderId['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::ORDER_ID, $orderId, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the order_ref column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByOrderRef('fooValue'); // WHERE order_ref = 'fooValue'
|
||||||
|
* $query->filterByOrderRef('%fooValue%'); // WHERE order_ref LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $orderRef 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByOrderRef($orderRef = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($orderRef)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $orderRef)) {
|
||||||
|
$orderRef = str_replace('*', '%', $orderRef);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::ORDER_REF, $orderRef, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the error column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByError(true); // WHERE error = true
|
||||||
|
* $query->filterByError('yes'); // WHERE error = true
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param boolean|string $error The value to use as filter.
|
||||||
|
* Non-boolean arguments are converted using the following rules:
|
||||||
|
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
|
||||||
|
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
|
||||||
|
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByError($error = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_string($error)) {
|
||||||
|
$error = in_array(strtolower($error), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::ERROR, $error, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the error_message column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByErrorMessage('fooValue'); // WHERE error_message = 'fooValue'
|
||||||
|
* $query->filterByErrorMessage('%fooValue%'); // WHERE error_message LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $errorMessage 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByErrorMessage($errorMessage = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($errorMessage)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $errorMessage)) {
|
||||||
|
$errorMessage = str_replace('*', '%', $errorMessage);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::ERROR_MESSAGE, $errorMessage, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the tracking_number column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByTrackingNumber('fooValue'); // WHERE tracking_number = 'fooValue'
|
||||||
|
* $query->filterByTrackingNumber('%fooValue%'); // WHERE tracking_number LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $trackingNumber 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByTrackingNumber($trackingNumber = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($trackingNumber)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $trackingNumber)) {
|
||||||
|
$trackingNumber = str_replace('*', '%', $trackingNumber);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::TRACKING_NUMBER, $trackingNumber, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the label_data column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByLabelData('fooValue'); // WHERE label_data = 'fooValue'
|
||||||
|
* $query->filterByLabelData('%fooValue%'); // WHERE label_data LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $labelData 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByLabelData($labelData = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($labelData)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $labelData)) {
|
||||||
|
$labelData = str_replace('*', '%', $labelData);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::LABEL_DATA, $labelData, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the label_type column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByLabelType('fooValue'); // WHERE label_type = 'fooValue'
|
||||||
|
* $query->filterByLabelType('%fooValue%'); // WHERE label_type LIKE '%fooValue%'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $labelType 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByLabelType($labelType = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (null === $comparison) {
|
||||||
|
if (is_array($labelType)) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
} elseif (preg_match('/[\%\*]/', $labelType)) {
|
||||||
|
$labelType = str_replace('*', '%', $labelType);
|
||||||
|
$comparison = Criteria::LIKE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::LABEL_TYPE, $labelType, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the weight column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByWeight(1234); // WHERE weight = 1234
|
||||||
|
* $query->filterByWeight(array(12, 34)); // WHERE weight IN (12, 34)
|
||||||
|
* $query->filterByWeight(array('min' => 12)); // WHERE weight > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $weight 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByWeight($weight = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($weight)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($weight['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::WEIGHT, $weight['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($weight['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::WEIGHT, $weight['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::WEIGHT, $weight, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the signed column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterBySigned(true); // WHERE signed = true
|
||||||
|
* $query->filterBySigned('yes'); // WHERE signed = true
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param boolean|string $signed The value to use as filter.
|
||||||
|
* Non-boolean arguments are converted using the following rules:
|
||||||
|
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
|
||||||
|
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
|
||||||
|
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterBySigned($signed = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_string($signed)) {
|
||||||
|
$signed = in_array(strtolower($signed), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::SIGNED, $signed, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the with_customs_invoice column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByWithCustomsInvoice(true); // WHERE with_customs_invoice = true
|
||||||
|
* $query->filterByWithCustomsInvoice('yes'); // WHERE with_customs_invoice = true
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param boolean|string $withCustomsInvoice The value to use as filter.
|
||||||
|
* Non-boolean arguments are converted using the following rules:
|
||||||
|
* * 1, '1', 'true', 'on', and 'yes' are converted to boolean true
|
||||||
|
* * 0, '0', 'false', 'off', and 'no' are converted to boolean false
|
||||||
|
* Check on string values is case insensitive (so 'FaLsE' is seen as 'false').
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByWithCustomsInvoice($withCustomsInvoice = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_string($withCustomsInvoice)) {
|
||||||
|
$with_customs_invoice = in_array(strtolower($withCustomsInvoice), array('false', 'off', '-', 'no', 'n', '0', '')) ? false : true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::WITH_CUSTOMS_INVOICE, $withCustomsInvoice, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the created_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByCreatedAt('2011-03-14'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt('now'); // WHERE created_at = '2011-03-14'
|
||||||
|
* $query->filterByCreatedAt(array('max' => 'yesterday')); // WHERE created_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $createdAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByCreatedAt($createdAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($createdAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($createdAt['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($createdAt['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::CREATED_AT, $createdAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the updated_at column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByUpdatedAt('2011-03-14'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt('now'); // WHERE updated_at = '2011-03-14'
|
||||||
|
* $query->filterByUpdatedAt(array('max' => 'yesterday')); // WHERE updated_at > '2011-03-13'
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $updatedAt The value to use as filter.
|
||||||
|
* Values can be integers (unix timestamps), DateTime objects, or strings.
|
||||||
|
* Empty strings are treated as NULL.
|
||||||
|
* 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 ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByUpdatedAt($updatedAt = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($updatedAt)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($updatedAt['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($updatedAt['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::UPDATED_AT, $updatedAt, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a related \Thelia\Model\Order object
|
||||||
|
*
|
||||||
|
* @param \Thelia\Model\Order|ObjectCollection $order The related object(s) to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByOrder($order, $comparison = null)
|
||||||
|
{
|
||||||
|
if ($order instanceof \Thelia\Model\Order) {
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimowsLabelTableMap::ORDER_ID, $order->getId(), $comparison);
|
||||||
|
} elseif ($order instanceof ObjectCollection) {
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimowsLabelTableMap::ORDER_ID, $order->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||||
|
} else {
|
||||||
|
throw new PropelException('filterByOrder() only accepts arguments of type \Thelia\Model\Order or Collection');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a JOIN clause to the query using the Order relation
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function joinOrder($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
$tableMap = $this->getTableMap();
|
||||||
|
$relationMap = $tableMap->getRelation('Order');
|
||||||
|
|
||||||
|
// create a ModelJoin object for this join
|
||||||
|
$join = new ModelJoin();
|
||||||
|
$join->setJoinType($joinType);
|
||||||
|
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||||
|
if ($previousJoin = $this->getPreviousJoin()) {
|
||||||
|
$join->setPreviousJoin($previousJoin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the ModelJoin to the current object
|
||||||
|
if ($relationAlias) {
|
||||||
|
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||||
|
$this->addJoinObject($join, $relationAlias);
|
||||||
|
} else {
|
||||||
|
$this->addJoinObject($join, 'Order');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the Order relation Order object
|
||||||
|
*
|
||||||
|
* @see useQuery()
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation,
|
||||||
|
* to be used as main alias in the secondary query
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return \Thelia\Model\OrderQuery A secondary query class using the current class as primary query
|
||||||
|
*/
|
||||||
|
public function useOrderQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->joinOrder($relationAlias, $joinType)
|
||||||
|
->useQuery($relationAlias ? $relationAlias : 'Order', '\Thelia\Model\OrderQuery');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildColissimowsLabel $colissimowsLabel Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($colissimowsLabel = null)
|
||||||
|
{
|
||||||
|
if ($colissimowsLabel) {
|
||||||
|
$this->addUsingAlias(ColissimowsLabelTableMap::ID, $colissimowsLabel->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the colissimows_label 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(ColissimowsLabelTableMap::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).
|
||||||
|
ColissimowsLabelTableMap::clearInstancePool();
|
||||||
|
ColissimowsLabelTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildColissimowsLabel or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildColissimowsLabel 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(ColissimowsLabelTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(ColissimowsLabelTableMap::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();
|
||||||
|
|
||||||
|
|
||||||
|
ColissimowsLabelTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
ColissimowsLabelTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// timestampable behavior
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest updated
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of the latest update in days
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyUpdated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter by the latest created
|
||||||
|
*
|
||||||
|
* @param int $nbDays Maximum age of in days
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function recentlyCreated($nbDays = 7)
|
||||||
|
{
|
||||||
|
return $this->addUsingAlias(ColissimowsLabelTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date desc
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(ColissimowsLabelTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by update date asc
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstUpdatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(ColissimowsLabelTableMap::UPDATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date desc
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function lastCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addDescendingOrderByColumn(ColissimowsLabelTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Order by create date asc
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsLabelQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function firstCreatedFirst()
|
||||||
|
{
|
||||||
|
return $this->addAscendingOrderByColumn(ColissimowsLabelTableMap::CREATED_AT);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ColissimowsLabelQuery
|
||||||
1427
local/modules/ColissimoWs/Model/Base/ColissimowsPriceSlices.php
Normal file
1427
local/modules/ColissimoWs/Model/Base/ColissimowsPriceSlices.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,654 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model\Base;
|
||||||
|
|
||||||
|
use \Exception;
|
||||||
|
use \PDO;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlices as ChildColissimowsPriceSlices;
|
||||||
|
use ColissimoWs\Model\ColissimowsPriceSlicesQuery as ChildColissimowsPriceSlicesQuery;
|
||||||
|
use ColissimoWs\Model\Map\ColissimowsPriceSlicesTableMap;
|
||||||
|
use Propel\Runtime\Propel;
|
||||||
|
use Propel\Runtime\ActiveQuery\Criteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelCriteria;
|
||||||
|
use Propel\Runtime\ActiveQuery\ModelJoin;
|
||||||
|
use Propel\Runtime\Collection\Collection;
|
||||||
|
use Propel\Runtime\Collection\ObjectCollection;
|
||||||
|
use Propel\Runtime\Connection\ConnectionInterface;
|
||||||
|
use Propel\Runtime\Exception\PropelException;
|
||||||
|
use Thelia\Model\Area;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class that represents a query for the 'colissimows_price_slices' table.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderById($order = Criteria::ASC) Order by the id column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderByAreaId($order = Criteria::ASC) Order by the area_id column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderByMaxWeight($order = Criteria::ASC) Order by the max_weight column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderByMaxPrice($order = Criteria::ASC) Order by the max_price column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderByShipping($order = Criteria::ASC) Order by the shipping column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery orderByFrancoMinPrice($order = Criteria::ASC) Order by the franco_min_price column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupById() Group by the id column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupByAreaId() Group by the area_id column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupByMaxWeight() Group by the max_weight column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupByMaxPrice() Group by the max_price column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupByShipping() Group by the shipping column
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery groupByFrancoMinPrice() Group by the franco_min_price column
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery leftJoin($relation) Adds a LEFT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery rightJoin($relation) Adds a RIGHT JOIN clause to the query
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery innerJoin($relation) Adds a INNER JOIN clause to the query
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery leftJoinArea($relationAlias = null) Adds a LEFT JOIN clause to the query using the Area relation
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery rightJoinArea($relationAlias = null) Adds a RIGHT JOIN clause to the query using the Area relation
|
||||||
|
* @method ChildColissimowsPriceSlicesQuery innerJoinArea($relationAlias = null) Adds a INNER JOIN clause to the query using the Area relation
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlices findOne(ConnectionInterface $con = null) Return the first ChildColissimowsPriceSlices matching the query
|
||||||
|
* @method ChildColissimowsPriceSlices findOneOrCreate(ConnectionInterface $con = null) Return the first ChildColissimowsPriceSlices matching the query, or a new ChildColissimowsPriceSlices object populated from the query conditions when no match is found
|
||||||
|
*
|
||||||
|
* @method ChildColissimowsPriceSlices findOneById(int $id) Return the first ChildColissimowsPriceSlices filtered by the id column
|
||||||
|
* @method ChildColissimowsPriceSlices findOneByAreaId(int $area_id) Return the first ChildColissimowsPriceSlices filtered by the area_id column
|
||||||
|
* @method ChildColissimowsPriceSlices findOneByMaxWeight(double $max_weight) Return the first ChildColissimowsPriceSlices filtered by the max_weight column
|
||||||
|
* @method ChildColissimowsPriceSlices findOneByMaxPrice(double $max_price) Return the first ChildColissimowsPriceSlices filtered by the max_price column
|
||||||
|
* @method ChildColissimowsPriceSlices findOneByShipping(double $shipping) Return the first ChildColissimowsPriceSlices filtered by the shipping column
|
||||||
|
* @method ChildColissimowsPriceSlices findOneByFrancoMinPrice(double $franco_min_price) Return the first ChildColissimowsPriceSlices filtered by the franco_min_price column
|
||||||
|
*
|
||||||
|
* @method array findById(int $id) Return ChildColissimowsPriceSlices objects filtered by the id column
|
||||||
|
* @method array findByAreaId(int $area_id) Return ChildColissimowsPriceSlices objects filtered by the area_id column
|
||||||
|
* @method array findByMaxWeight(double $max_weight) Return ChildColissimowsPriceSlices objects filtered by the max_weight column
|
||||||
|
* @method array findByMaxPrice(double $max_price) Return ChildColissimowsPriceSlices objects filtered by the max_price column
|
||||||
|
* @method array findByShipping(double $shipping) Return ChildColissimowsPriceSlices objects filtered by the shipping column
|
||||||
|
* @method array findByFrancoMinPrice(double $franco_min_price) Return ChildColissimowsPriceSlices objects filtered by the franco_min_price column
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
abstract class ColissimowsPriceSlicesQuery extends ModelCriteria
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initializes internal state of \ColissimoWs\Model\Base\ColissimowsPriceSlicesQuery 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 = '\\ColissimoWs\\Model\\ColissimowsPriceSlices', $modelAlias = null)
|
||||||
|
{
|
||||||
|
parent::__construct($dbName, $modelName, $modelAlias);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new ChildColissimowsPriceSlicesQuery object.
|
||||||
|
*
|
||||||
|
* @param string $modelAlias The alias of a model in the query
|
||||||
|
* @param Criteria $criteria Optional Criteria to build the query from
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsPriceSlicesQuery
|
||||||
|
*/
|
||||||
|
public static function create($modelAlias = null, $criteria = null)
|
||||||
|
{
|
||||||
|
if ($criteria instanceof \ColissimoWs\Model\ColissimowsPriceSlicesQuery) {
|
||||||
|
return $criteria;
|
||||||
|
}
|
||||||
|
$query = new \ColissimoWs\Model\ColissimowsPriceSlicesQuery();
|
||||||
|
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 ChildColissimowsPriceSlices|array|mixed the result, formatted by the current formatter
|
||||||
|
*/
|
||||||
|
public function findPk($key, $con = null)
|
||||||
|
{
|
||||||
|
if ($key === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ((null !== ($obj = ColissimowsPriceSlicesTableMap::getInstanceFromPool((string) $key))) && !$this->formatter) {
|
||||||
|
// the object is already in the instance pool
|
||||||
|
return $obj;
|
||||||
|
}
|
||||||
|
if ($con === null) {
|
||||||
|
$con = Propel::getServiceContainer()->getReadConnection(ColissimowsPriceSlicesTableMap::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 ChildColissimowsPriceSlices A model object, or null if the key is not found
|
||||||
|
*/
|
||||||
|
protected function findPkSimple($key, $con)
|
||||||
|
{
|
||||||
|
$sql = 'SELECT ID, AREA_ID, MAX_WEIGHT, MAX_PRICE, SHIPPING, FRANCO_MIN_PRICE FROM colissimows_price_slices 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 ChildColissimowsPriceSlices();
|
||||||
|
$obj->hydrate($row);
|
||||||
|
ColissimowsPriceSlicesTableMap::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 ChildColissimowsPriceSlices|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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKey($key)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByPrimaryKeys($keys)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::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 ChildColissimowsPriceSlicesQuery 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(ColissimowsPriceSlicesTableMap::ID, $id['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($id['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::ID, $id['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::ID, $id, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the area_id column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByAreaId(1234); // WHERE area_id = 1234
|
||||||
|
* $query->filterByAreaId(array(12, 34)); // WHERE area_id IN (12, 34)
|
||||||
|
* $query->filterByAreaId(array('min' => 12)); // WHERE area_id > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @see filterByArea()
|
||||||
|
*
|
||||||
|
* @param mixed $areaId 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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByAreaId($areaId = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($areaId)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($areaId['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::AREA_ID, $areaId['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($areaId['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::AREA_ID, $areaId['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::AREA_ID, $areaId, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the max_weight column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByMaxWeight(1234); // WHERE max_weight = 1234
|
||||||
|
* $query->filterByMaxWeight(array(12, 34)); // WHERE max_weight IN (12, 34)
|
||||||
|
* $query->filterByMaxWeight(array('min' => 12)); // WHERE max_weight > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $maxWeight 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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByMaxWeight($maxWeight = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($maxWeight)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($maxWeight['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_WEIGHT, $maxWeight['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($maxWeight['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_WEIGHT, $maxWeight['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_WEIGHT, $maxWeight, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the max_price column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByMaxPrice(1234); // WHERE max_price = 1234
|
||||||
|
* $query->filterByMaxPrice(array(12, 34)); // WHERE max_price IN (12, 34)
|
||||||
|
* $query->filterByMaxPrice(array('min' => 12)); // WHERE max_price > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $maxPrice 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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByMaxPrice($maxPrice = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($maxPrice)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($maxPrice['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_PRICE, $maxPrice['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($maxPrice['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_PRICE, $maxPrice['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::MAX_PRICE, $maxPrice, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the shipping column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByShipping(1234); // WHERE shipping = 1234
|
||||||
|
* $query->filterByShipping(array(12, 34)); // WHERE shipping IN (12, 34)
|
||||||
|
* $query->filterByShipping(array('min' => 12)); // WHERE shipping > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $shipping 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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByShipping($shipping = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($shipping)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($shipping['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::SHIPPING, $shipping['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($shipping['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::SHIPPING, $shipping['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::SHIPPING, $shipping, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query on the franco_min_price column
|
||||||
|
*
|
||||||
|
* Example usage:
|
||||||
|
* <code>
|
||||||
|
* $query->filterByFrancoMinPrice(1234); // WHERE franco_min_price = 1234
|
||||||
|
* $query->filterByFrancoMinPrice(array(12, 34)); // WHERE franco_min_price IN (12, 34)
|
||||||
|
* $query->filterByFrancoMinPrice(array('min' => 12)); // WHERE franco_min_price > 12
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param mixed $francoMinPrice 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 ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByFrancoMinPrice($francoMinPrice = null, $comparison = null)
|
||||||
|
{
|
||||||
|
if (is_array($francoMinPrice)) {
|
||||||
|
$useMinMax = false;
|
||||||
|
if (isset($francoMinPrice['min'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::FRANCO_MIN_PRICE, $francoMinPrice['min'], Criteria::GREATER_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if (isset($francoMinPrice['max'])) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::FRANCO_MIN_PRICE, $francoMinPrice['max'], Criteria::LESS_EQUAL);
|
||||||
|
$useMinMax = true;
|
||||||
|
}
|
||||||
|
if ($useMinMax) {
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->addUsingAlias(ColissimowsPriceSlicesTableMap::FRANCO_MIN_PRICE, $francoMinPrice, $comparison);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter the query by a related \Thelia\Model\Area object
|
||||||
|
*
|
||||||
|
* @param \Thelia\Model\Area|ObjectCollection $area The related object(s) to use as filter
|
||||||
|
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function filterByArea($area, $comparison = null)
|
||||||
|
{
|
||||||
|
if ($area instanceof \Thelia\Model\Area) {
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimowsPriceSlicesTableMap::AREA_ID, $area->getId(), $comparison);
|
||||||
|
} elseif ($area instanceof ObjectCollection) {
|
||||||
|
if (null === $comparison) {
|
||||||
|
$comparison = Criteria::IN;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this
|
||||||
|
->addUsingAlias(ColissimowsPriceSlicesTableMap::AREA_ID, $area->toKeyValue('PrimaryKey', 'Id'), $comparison);
|
||||||
|
} else {
|
||||||
|
throw new PropelException('filterByArea() only accepts arguments of type \Thelia\Model\Area or Collection');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a JOIN clause to the query using the Area relation
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function joinArea($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
$tableMap = $this->getTableMap();
|
||||||
|
$relationMap = $tableMap->getRelation('Area');
|
||||||
|
|
||||||
|
// create a ModelJoin object for this join
|
||||||
|
$join = new ModelJoin();
|
||||||
|
$join->setJoinType($joinType);
|
||||||
|
$join->setRelationMap($relationMap, $this->useAliasInSQL ? $this->getModelAlias() : null, $relationAlias);
|
||||||
|
if ($previousJoin = $this->getPreviousJoin()) {
|
||||||
|
$join->setPreviousJoin($previousJoin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// add the ModelJoin to the current object
|
||||||
|
if ($relationAlias) {
|
||||||
|
$this->addAlias($relationAlias, $relationMap->getRightTable()->getName());
|
||||||
|
$this->addJoinObject($join, $relationAlias);
|
||||||
|
} else {
|
||||||
|
$this->addJoinObject($join, 'Area');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use the Area relation Area object
|
||||||
|
*
|
||||||
|
* @see useQuery()
|
||||||
|
*
|
||||||
|
* @param string $relationAlias optional alias for the relation,
|
||||||
|
* to be used as main alias in the secondary query
|
||||||
|
* @param string $joinType Accepted values are null, 'left join', 'right join', 'inner join'
|
||||||
|
*
|
||||||
|
* @return \Thelia\Model\AreaQuery A secondary query class using the current class as primary query
|
||||||
|
*/
|
||||||
|
public function useAreaQuery($relationAlias = null, $joinType = Criteria::INNER_JOIN)
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->joinArea($relationAlias, $joinType)
|
||||||
|
->useQuery($relationAlias ? $relationAlias : 'Area', '\Thelia\Model\AreaQuery');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exclude object from result
|
||||||
|
*
|
||||||
|
* @param ChildColissimowsPriceSlices $colissimowsPriceSlices Object to remove from the list of results
|
||||||
|
*
|
||||||
|
* @return ChildColissimowsPriceSlicesQuery The current query, for fluid interface
|
||||||
|
*/
|
||||||
|
public function prune($colissimowsPriceSlices = null)
|
||||||
|
{
|
||||||
|
if ($colissimowsPriceSlices) {
|
||||||
|
$this->addUsingAlias(ColissimowsPriceSlicesTableMap::ID, $colissimowsPriceSlices->getId(), Criteria::NOT_EQUAL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes all rows from the colissimows_price_slices 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(ColissimowsPriceSlicesTableMap::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).
|
||||||
|
ColissimowsPriceSlicesTableMap::clearInstancePool();
|
||||||
|
ColissimowsPriceSlicesTableMap::clearRelatedInstancePool();
|
||||||
|
|
||||||
|
$con->commit();
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs a DELETE on the database, given a ChildColissimowsPriceSlices or Criteria object OR a primary key value.
|
||||||
|
*
|
||||||
|
* @param mixed $values Criteria or ChildColissimowsPriceSlices 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(ColissimowsPriceSlicesTableMap::DATABASE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$criteria = $this;
|
||||||
|
|
||||||
|
// Set the correct dbName
|
||||||
|
$criteria->setDbName(ColissimowsPriceSlicesTableMap::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();
|
||||||
|
|
||||||
|
|
||||||
|
ColissimowsPriceSlicesTableMap::removeInstanceFromPool($criteria);
|
||||||
|
|
||||||
|
$affectedRows += ModelCriteria::delete($con);
|
||||||
|
ColissimowsPriceSlicesTableMap::clearRelatedInstancePool();
|
||||||
|
$con->commit();
|
||||||
|
|
||||||
|
return $affectedRows;
|
||||||
|
} catch (PropelException $e) {
|
||||||
|
$con->rollBack();
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ColissimowsPriceSlicesQuery
|
||||||
20
local/modules/ColissimoWs/Model/ColissimowsFreeshipping.php
Normal file
20
local/modules/ColissimoWs/Model/ColissimowsFreeshipping.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsFreeshipping as BaseColissimowsFreeshipping;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for representing a row from the 'colissimows_freeshipping' 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 ColissimowsFreeshipping extends BaseColissimowsFreeshipping
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsFreeshippingQuery as BaseColissimowsFreeshippingQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'colissimows_freeshipping' 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 ColissimowsFreeshippingQuery extends BaseColissimowsFreeshippingQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
20
local/modules/ColissimoWs/Model/ColissimowsLabel.php
Normal file
20
local/modules/ColissimoWs/Model/ColissimowsLabel.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsLabel as BaseColissimowsLabel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for representing a row from the 'colissimows_label' 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 ColissimowsLabel extends BaseColissimowsLabel
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
20
local/modules/ColissimoWs/Model/ColissimowsLabelQuery.php
Normal file
20
local/modules/ColissimoWs/Model/ColissimowsLabelQuery.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsLabelQuery as BaseColissimowsLabelQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'colissimows_label' 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 ColissimowsLabelQuery extends BaseColissimowsLabelQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
20
local/modules/ColissimoWs/Model/ColissimowsPriceSlices.php
Normal file
20
local/modules/ColissimoWs/Model/ColissimowsPriceSlices.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsPriceSlices as BaseColissimowsPriceSlices;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for representing a row from the 'colissimows_price_slices' 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 ColissimowsPriceSlices extends BaseColissimowsPriceSlices
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace ColissimoWs\Model;
|
||||||
|
|
||||||
|
use ColissimoWs\Model\Base\ColissimowsPriceSlicesQuery as BaseColissimowsPriceSlicesQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Skeleton subclass for performing query and update operations on the 'colissimows_price_slices' 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 ColissimowsPriceSlicesQuery extends BaseColissimowsPriceSlicesQuery
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user