+ * $query->filterByLocale('fooValue'); // WHERE locale = 'fooValue'
+ * $query->filterByLocale('%fooValue%'); // WHERE locale LIKE '%fooValue%'
+ *
+ *
+ * @param string $locale 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 ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function filterByLocale($locale = null, $comparison = null)
+ {
+ if (null === $comparison) {
+ if (is_array($locale)) {
+ $comparison = Criteria::IN;
+ } elseif (preg_match('/[\%\*]/', $locale)) {
+ $locale = str_replace('*', '%', $locale);
+ $comparison = Criteria::LIKE;
+ }
+ }
+
+ return $this->addUsingAlias(NewsletterTableMap::LOCALE, $locale, $comparison);
+ }
+
+ /**
+ * Filter the query on the created_at column
+ *
+ * Example usage:
+ *
+ * $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'
+ *
+ *
+ * @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 ChildNewsletterQuery 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(NewsletterTableMap::CREATED_AT, $createdAt['min'], Criteria::GREATER_EQUAL);
+ $useMinMax = true;
+ }
+ if (isset($createdAt['max'])) {
+ $this->addUsingAlias(NewsletterTableMap::CREATED_AT, $createdAt['max'], Criteria::LESS_EQUAL);
+ $useMinMax = true;
+ }
+ if ($useMinMax) {
+ return $this;
+ }
+ if (null === $comparison) {
+ $comparison = Criteria::IN;
+ }
+ }
+
+ return $this->addUsingAlias(NewsletterTableMap::CREATED_AT, $createdAt, $comparison);
+ }
+
+ /**
+ * Filter the query on the updated_at column
+ *
+ * Example usage:
+ *
+ * $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'
+ *
+ *
+ * @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 ChildNewsletterQuery 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(NewsletterTableMap::UPDATED_AT, $updatedAt['min'], Criteria::GREATER_EQUAL);
+ $useMinMax = true;
+ }
+ if (isset($updatedAt['max'])) {
+ $this->addUsingAlias(NewsletterTableMap::UPDATED_AT, $updatedAt['max'], Criteria::LESS_EQUAL);
+ $useMinMax = true;
+ }
+ if ($useMinMax) {
+ return $this;
+ }
+ if (null === $comparison) {
+ $comparison = Criteria::IN;
+ }
+ }
+
+ return $this->addUsingAlias(NewsletterTableMap::UPDATED_AT, $updatedAt, $comparison);
+ }
+
/**
* Exclude object from result
*
@@ -440,4 +567,70 @@ abstract class NewsletterQuery extends ModelCriteria
}
}
+ // timestampable behavior
+
+ /**
+ * Filter by the latest updated
+ *
+ * @param int $nbDays Maximum age of the latest update in days
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function recentlyUpdated($nbDays = 7)
+ {
+ return $this->addUsingAlias(NewsletterTableMap::UPDATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
+ }
+
+ /**
+ * Filter by the latest created
+ *
+ * @param int $nbDays Maximum age of in days
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function recentlyCreated($nbDays = 7)
+ {
+ return $this->addUsingAlias(NewsletterTableMap::CREATED_AT, time() - $nbDays * 24 * 60 * 60, Criteria::GREATER_EQUAL);
+ }
+
+ /**
+ * Order by update date desc
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function lastUpdatedFirst()
+ {
+ return $this->addDescendingOrderByColumn(NewsletterTableMap::UPDATED_AT);
+ }
+
+ /**
+ * Order by update date asc
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function firstUpdatedFirst()
+ {
+ return $this->addAscendingOrderByColumn(NewsletterTableMap::UPDATED_AT);
+ }
+
+ /**
+ * Order by create date desc
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function lastCreatedFirst()
+ {
+ return $this->addDescendingOrderByColumn(NewsletterTableMap::CREATED_AT);
+ }
+
+ /**
+ * Order by create date asc
+ *
+ * @return ChildNewsletterQuery The current query, for fluid interface
+ */
+ public function firstCreatedFirst()
+ {
+ return $this->addAscendingOrderByColumn(NewsletterTableMap::CREATED_AT);
+ }
+
} // NewsletterQuery
diff --git a/core/lib/Thelia/Model/Base/ProductPrice.php b/core/lib/Thelia/Model/Base/ProductPrice.php
index 363244e07..e5c5b3f27 100644
--- a/core/lib/Thelia/Model/Base/ProductPrice.php
+++ b/core/lib/Thelia/Model/Base/ProductPrice.php
@@ -72,19 +72,21 @@ abstract class ProductPrice implements ActiveRecordInterface
/**
* The value for the price field.
+ * Note: this column has a database default value of: 0
* @var double
*/
protected $price;
/**
* The value for the promo_price field.
+ * Note: this column has a database default value of: 0
* @var double
*/
protected $promo_price;
/**
* The value for the from_default_currency field.
- * Note: this column has a database default value of: false
+ * Note: this column has a database default value of: true
* @var boolean
*/
protected $from_default_currency;
@@ -127,7 +129,9 @@ abstract class ProductPrice implements ActiveRecordInterface
*/
public function applyDefaultValues()
{
- $this->from_default_currency = false;
+ $this->price = 0;
+ $this->promo_price = 0;
+ $this->from_default_currency = true;
}
/**
@@ -658,7 +662,15 @@ abstract class ProductPrice implements ActiveRecordInterface
*/
public function hasOnlyDefaultValues()
{
- if ($this->from_default_currency !== false) {
+ if ($this->price !== 0) {
+ return false;
+ }
+
+ if ($this->promo_price !== 0) {
+ return false;
+ }
+
+ if ($this->from_default_currency !== true) {
return false;
}
diff --git a/core/lib/Thelia/Model/Map/NewsletterTableMap.php b/core/lib/Thelia/Model/Map/NewsletterTableMap.php
index 1aed936b7..26f02e61e 100644
--- a/core/lib/Thelia/Model/Map/NewsletterTableMap.php
+++ b/core/lib/Thelia/Model/Map/NewsletterTableMap.php
@@ -57,7 +57,7 @@ class NewsletterTableMap extends TableMap
/**
* The total number of columns
*/
- const NUM_COLUMNS = 4;
+ const NUM_COLUMNS = 7;
/**
* The number of lazy-loaded columns
@@ -67,7 +67,7 @@ class NewsletterTableMap extends TableMap
/**
* The number of columns to hydrate (NUM_COLUMNS - NUM_LAZY_LOAD_COLUMNS)
*/
- const NUM_HYDRATE_COLUMNS = 4;
+ const NUM_HYDRATE_COLUMNS = 7;
/**
* the column name for the ID field
@@ -89,6 +89,21 @@ class NewsletterTableMap extends TableMap
*/
const LASTNAME = 'newsletter.LASTNAME';
+ /**
+ * the column name for the LOCALE field
+ */
+ const LOCALE = 'newsletter.LOCALE';
+
+ /**
+ * the column name for the CREATED_AT field
+ */
+ const CREATED_AT = 'newsletter.CREATED_AT';
+
+ /**
+ * the column name for the UPDATED_AT field
+ */
+ const UPDATED_AT = 'newsletter.UPDATED_AT';
+
/**
* The default string format for model objects of the related table
*/
@@ -101,12 +116,12 @@ class NewsletterTableMap extends TableMap
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
*/
protected static $fieldNames = array (
- self::TYPE_PHPNAME => array('Id', 'Email', 'Firstname', 'Lastname', ),
- self::TYPE_STUDLYPHPNAME => array('id', 'email', 'firstname', 'lastname', ),
- self::TYPE_COLNAME => array(NewsletterTableMap::ID, NewsletterTableMap::EMAIL, NewsletterTableMap::FIRSTNAME, NewsletterTableMap::LASTNAME, ),
- self::TYPE_RAW_COLNAME => array('ID', 'EMAIL', 'FIRSTNAME', 'LASTNAME', ),
- self::TYPE_FIELDNAME => array('id', 'email', 'firstname', 'lastname', ),
- self::TYPE_NUM => array(0, 1, 2, 3, )
+ self::TYPE_PHPNAME => array('Id', 'Email', 'Firstname', 'Lastname', 'Locale', 'CreatedAt', 'UpdatedAt', ),
+ self::TYPE_STUDLYPHPNAME => array('id', 'email', 'firstname', 'lastname', 'locale', 'createdAt', 'updatedAt', ),
+ self::TYPE_COLNAME => array(NewsletterTableMap::ID, NewsletterTableMap::EMAIL, NewsletterTableMap::FIRSTNAME, NewsletterTableMap::LASTNAME, NewsletterTableMap::LOCALE, NewsletterTableMap::CREATED_AT, NewsletterTableMap::UPDATED_AT, ),
+ self::TYPE_RAW_COLNAME => array('ID', 'EMAIL', 'FIRSTNAME', 'LASTNAME', 'LOCALE', 'CREATED_AT', 'UPDATED_AT', ),
+ self::TYPE_FIELDNAME => array('id', 'email', 'firstname', 'lastname', 'locale', 'created_at', 'updated_at', ),
+ self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
);
/**
@@ -116,12 +131,12 @@ class NewsletterTableMap extends TableMap
* e.g. self::$fieldKeys[self::TYPE_PHPNAME]['Id'] = 0
*/
protected static $fieldKeys = array (
- self::TYPE_PHPNAME => array('Id' => 0, 'Email' => 1, 'Firstname' => 2, 'Lastname' => 3, ),
- self::TYPE_STUDLYPHPNAME => array('id' => 0, 'email' => 1, 'firstname' => 2, 'lastname' => 3, ),
- self::TYPE_COLNAME => array(NewsletterTableMap::ID => 0, NewsletterTableMap::EMAIL => 1, NewsletterTableMap::FIRSTNAME => 2, NewsletterTableMap::LASTNAME => 3, ),
- self::TYPE_RAW_COLNAME => array('ID' => 0, 'EMAIL' => 1, 'FIRSTNAME' => 2, 'LASTNAME' => 3, ),
- self::TYPE_FIELDNAME => array('id' => 0, 'email' => 1, 'firstname' => 2, 'lastname' => 3, ),
- self::TYPE_NUM => array(0, 1, 2, 3, )
+ self::TYPE_PHPNAME => array('Id' => 0, 'Email' => 1, 'Firstname' => 2, 'Lastname' => 3, 'Locale' => 4, 'CreatedAt' => 5, 'UpdatedAt' => 6, ),
+ self::TYPE_STUDLYPHPNAME => array('id' => 0, 'email' => 1, 'firstname' => 2, 'lastname' => 3, 'locale' => 4, 'createdAt' => 5, 'updatedAt' => 6, ),
+ self::TYPE_COLNAME => array(NewsletterTableMap::ID => 0, NewsletterTableMap::EMAIL => 1, NewsletterTableMap::FIRSTNAME => 2, NewsletterTableMap::LASTNAME => 3, NewsletterTableMap::LOCALE => 4, NewsletterTableMap::CREATED_AT => 5, NewsletterTableMap::UPDATED_AT => 6, ),
+ self::TYPE_RAW_COLNAME => array('ID' => 0, 'EMAIL' => 1, 'FIRSTNAME' => 2, 'LASTNAME' => 3, 'LOCALE' => 4, 'CREATED_AT' => 5, 'UPDATED_AT' => 6, ),
+ self::TYPE_FIELDNAME => array('id' => 0, 'email' => 1, 'firstname' => 2, 'lastname' => 3, 'locale' => 4, 'created_at' => 5, 'updated_at' => 6, ),
+ self::TYPE_NUM => array(0, 1, 2, 3, 4, 5, 6, )
);
/**
@@ -144,6 +159,9 @@ class NewsletterTableMap extends TableMap
$this->addColumn('EMAIL', 'Email', 'VARCHAR', true, 255, null);
$this->addColumn('FIRSTNAME', 'Firstname', 'VARCHAR', false, 255, null);
$this->addColumn('LASTNAME', 'Lastname', 'VARCHAR', false, 255, null);
+ $this->addColumn('LOCALE', 'Locale', 'VARCHAR', false, 5, null);
+ $this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
+ $this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
} // initialize()
/**
@@ -153,6 +171,19 @@ class NewsletterTableMap extends TableMap
{
} // 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.
*
@@ -295,11 +326,17 @@ class NewsletterTableMap extends TableMap
$criteria->addSelectColumn(NewsletterTableMap::EMAIL);
$criteria->addSelectColumn(NewsletterTableMap::FIRSTNAME);
$criteria->addSelectColumn(NewsletterTableMap::LASTNAME);
+ $criteria->addSelectColumn(NewsletterTableMap::LOCALE);
+ $criteria->addSelectColumn(NewsletterTableMap::CREATED_AT);
+ $criteria->addSelectColumn(NewsletterTableMap::UPDATED_AT);
} else {
$criteria->addSelectColumn($alias . '.ID');
$criteria->addSelectColumn($alias . '.EMAIL');
$criteria->addSelectColumn($alias . '.FIRSTNAME');
$criteria->addSelectColumn($alias . '.LASTNAME');
+ $criteria->addSelectColumn($alias . '.LOCALE');
+ $criteria->addSelectColumn($alias . '.CREATED_AT');
+ $criteria->addSelectColumn($alias . '.UPDATED_AT');
}
}
diff --git a/core/lib/Thelia/Model/Map/ProductPriceTableMap.php b/core/lib/Thelia/Model/Map/ProductPriceTableMap.php
index 7a80d2e12..81eed9609 100644
--- a/core/lib/Thelia/Model/Map/ProductPriceTableMap.php
+++ b/core/lib/Thelia/Model/Map/ProductPriceTableMap.php
@@ -157,9 +157,9 @@ class ProductPriceTableMap extends TableMap
// columns
$this->addForeignPrimaryKey('PRODUCT_SALE_ELEMENTS_ID', 'ProductSaleElementsId', 'INTEGER' , 'product_sale_elements', 'ID', true, null, null);
$this->addForeignPrimaryKey('CURRENCY_ID', 'CurrencyId', 'INTEGER' , 'currency', 'ID', true, null, null);
- $this->addColumn('PRICE', 'Price', 'FLOAT', true, null, null);
- $this->addColumn('PROMO_PRICE', 'PromoPrice', 'FLOAT', false, null, null);
- $this->addColumn('FROM_DEFAULT_CURRENCY', 'FromDefaultCurrency', 'BOOLEAN', true, 1, false);
+ $this->addColumn('PRICE', 'Price', 'FLOAT', true, null, 0);
+ $this->addColumn('PROMO_PRICE', 'PromoPrice', 'FLOAT', true, null, 0);
+ $this->addColumn('FROM_DEFAULT_CURRENCY', 'FromDefaultCurrency', 'BOOLEAN', true, 1, true);
$this->addColumn('CREATED_AT', 'CreatedAt', 'TIMESTAMP', false, null, null);
$this->addColumn('UPDATED_AT', 'UpdatedAt', 'TIMESTAMP', false, null, null);
} // initialize()
diff --git a/core/lib/Thelia/Model/OrderQuery.php b/core/lib/Thelia/Model/OrderQuery.php
index 8d5e4c085..0fff5dba1 100755
--- a/core/lib/Thelia/Model/OrderQuery.php
+++ b/core/lib/Thelia/Model/OrderQuery.php
@@ -2,6 +2,7 @@
namespace Thelia\Model;
+use Propel\Runtime\ActiveQuery\Criteria;
use Propel\Runtime\Exception\PropelException;
use Propel\Runtime\Propel;
use Thelia\Model\Base\OrderQuery as BaseOrderQuery;
@@ -52,4 +53,5 @@ class OrderQuery extends BaseOrderQuery
return $obj;
}
+
} // OrderQuery
diff --git a/core/lib/Thelia/Model/Product.php b/core/lib/Thelia/Model/Product.php
index 5ec2abf4c..f16a8a776 100755
--- a/core/lib/Thelia/Model/Product.php
+++ b/core/lib/Thelia/Model/Product.php
@@ -41,11 +41,16 @@ class Product extends BaseProduct
return $amount;
}
- public function getTaxedPrice(Country $country)
+ public function getTaxedPrice(Country $country, $price)
{
$taxCalculator = new Calculator();
+ return round($taxCalculator->load($this, $country)->getTaxedPrice($price), 2);
+ }
- return $taxCalculator->load($this, $country)->getTaxedPrice($this->getRealLowestPrice());
+ public function getTaxedPromoPrice(Country $country, $price)
+ {
+ $taxCalculator = new Calculator();
+ return round($taxCalculator->load($this, $country)->getTaxedPrice($price), 2);
}
/**
@@ -192,6 +197,7 @@ class Product extends BaseProduct
->setNewness(0)
->setWeight($weight)
->setIsDefault($isDefault)
+ ->setEanCode('')
->save($con)
;
diff --git a/core/lib/Thelia/Module/BaseModule.php b/core/lib/Thelia/Module/BaseModule.php
index 79acdd4b3..15853a398 100755
--- a/core/lib/Thelia/Module/BaseModule.php
+++ b/core/lib/Thelia/Module/BaseModule.php
@@ -142,13 +142,12 @@ abstract class BaseModule extends ContainerAware
} catch (\UnexpectedValueException $e) {
throw $e;
}
- if(null === $con) {
+ if (null === $con) {
$con = \Propel\Runtime\Propel::getConnection(
ModuleImageTableMap::DATABASE_NAME
);
}
-
/* browse the directory */
$imagePosition = 1;
foreach ($directoryBrowser as $directoryContent) {
diff --git a/core/lib/Thelia/Tests/Core/Template/Smarty/Plugins/FormatTest.php b/core/lib/Thelia/Tests/Core/Template/Smarty/Plugins/FormatTest.php
index e8d5ff0fc..979642677 100644
--- a/core/lib/Thelia/Tests/Core/Template/Smarty/Plugins/FormatTest.php
+++ b/core/lib/Thelia/Tests/Core/Template/Smarty/Plugins/FormatTest.php
@@ -155,7 +155,6 @@ class FormatTest extends \PHPUnit_Framework_TestCase
* test formatDate without mandatory parameters
*
* @covers ::formatDate
- * @expectedException \Thelia\Core\Template\Smarty\Exception\SmartyPluginException
*/
public function testFormatDateWithoutDate()
{
@@ -165,20 +164,21 @@ class FormatTest extends \PHPUnit_Framework_TestCase
$render = $formatClass->formatDate(array());
- $this->assertEquals($dateTime->format("Y-m-d H:i:s"), $render);
+ $this->assertEmpty($render);
}
/**
* test formatNumber without mandatory parameters
*
* @covers ::formatNumber
- * @expectedException \Thelia\Core\Template\Smarty\Exception\SmartyPluginException
*/
public function testFormatNumberWithoutParams()
{
$formatClass = new Format($this->request);
$render = $formatClass->formatNumber(array());
+
+ $this->assertEmpty($render);
}
/**
diff --git a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php b/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php
deleted file mode 100644
index 648dbcd19..000000000
--- a/core/lib/Thelia/Tests/Coupon/CouponFactoryTest.php
+++ /dev/null
@@ -1,48 +0,0 @@
-. */
-/* */
-/**********************************************************************************/
-
-namespace Thelia\Coupon;
-
-require_once 'CouponManagerTest.php';
-
-/**
- * Created by JetBrains PhpStorm.
- * Date: 8/19/13
- * Time: 3:24 PM
- *
- * Unit Test CouponFactory Class
- *
- * @package Coupon
- * @author Guillaume MOREL | Référence | \r\nDésignation | \r\nP.U. € | \r\nQté | \r\n
|---|---|---|---|
| {$REF} | \r\n{$TITLE}\r\n {ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE} \r\n {/loop}\r\n {/ifloop}\r\n | \r\n {$orderCurrency} {$realTaxedPrice} | \r\n{$QUANTITY} | \r\n
| \r\n | |||
| Montant total avant remise € | \r\n{$orderCurrency} {$TOTAL_TAXED_AMOUNT - $POSTAGE} | \r\n||
| Port € | \r\n{$orderCurrency} {$POSTAGE} | \r\n||
| Montant total de la commande € | \r\n{$orderCurrency} {$TOTAL_TAXED_AMOUNT} | \r\n||
LIVRAISON : {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}{$TITLE}{/loop}
\r\n {loop type="order_address" name="delivery_address" id=$INVOICE_ADDRESS}\r\nN° de client : {$customer_ref}
\r\nNom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}
\r\nN° et rue :\r\n {$ADDRESS1}
\r\nComplément : {$ADDRESS2}\r\n {$ADDRESS3}
\r\nCode postal : {$ZIPCODE}
\r\nVille : {$CITY}
\r\nPays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}
\r\nFACTURATION : paiement par {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}
\r\n {loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\nN° de client : {$customer_ref}
\r\nNom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}
\r\nN° et rue :\r\n {$ADDRESS1}
\r\nComplément : {$ADDRESS2}\r\n {$ADDRESS3}
\r\nCode postal : {$ZIPCODE}
\r\nVille : {$CITY}
\r\nPays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}
\r\nLe suivi de votre commande est disponible dans la rubrique mon compte sur {config key="url_site"}
\r\n| Référence | \r\nDésignation | \r\nP.U. € | \r\nQté | \r\n
|---|---|---|---|
| {$REF} | \r\n{$TITLE}\r\n {ifloop rel="combinations"}\r\n {loop type="order_product_attribute_combination" name="combinations" order_product=$ID}\r\n {$ATTRIBUTE_TITLE} - {$ATTRIBUTE_AVAILABILITY_TITLE} \r\n {/loop}\r\n {/ifloop}\r\n | \r\n {$orderCurrency} {$realTaxedPrice} | \r\n{$QUANTITY} | \r\n
| \r\n | |||
| Montant total avant remise € | \r\n{$orderCurrency} {$TOTAL_TAXED_AMOUNT - $POSTAGE} | \r\n||
| Port € | \r\n{$orderCurrency} {$POSTAGE} | \r\n||
| Montant total de la commande € | \r\n{$orderCurrency} {$TOTAL_TAXED_AMOUNT} | \r\n||
LIVRAISON : {loop name="delivery-module" type="module" id=$DELIVERY_MODULE}{$TITLE}{/loop}
\r\n {loop type="order_address" name="delivery_address" id=$INVOICE_ADDRESS}\r\nN° de client : {$customer_ref}
\r\nNom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}
\r\nN° et rue :\r\n {$ADDRESS1}
\r\nComplément : {$ADDRESS2}\r\n {$ADDRESS3}
\r\nCode postal : {$ZIPCODE}
\r\nVille : {$CITY}
\r\nPays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}
\r\nFACTURATION : paiement par {loop name="payment-module" type="module" id=$PAYMENT_MODULE}{$TITLE}{/loop}
\r\n {loop type="order_address" name="delivery_address" id=$DELIVERY_ADDRESS}\r\nN° de client : {$customer_ref}
\r\nNom :\r\n {loop type="title" name="order-invoice-address-title" id=$TITLE}{$LONG}{/loop} {$FIRSTNAME} {$LASTNAME}
\r\nN° et rue :\r\n {$ADDRESS1}
\r\nComplément : {$ADDRESS2}\r\n {$ADDRESS3}
\r\nCode postal : {$ZIPCODE}
\r\nVille : {$CITY}
\r\nPays : {loop type="country" name="country_delivery" id=$COUNTRY}{$TITLE}{/loop}
\r\nLe suivi de votre commande est disponible dans la rubrique mon compte sur {config key="url_site"}
\r\n