$order = array_merge($order->getAttributes(), [ | $order = array_merge($order->getAttributes(), [ | ||||
'selected' => false, | 'selected' => false, | ||||
'amount' => $order->getAmountWithTax(Order::AMOUNT_TOTAL), | |||||
'amount_paid' => $order->getAmount(Order::AMOUNT_PAID), | |||||
'amount_remaining' => $order->getAmount(Order::AMOUNT_REMAINING), | |||||
'amount_surplus' => $order->getAmount(Order::AMOUNT_SURPLUS), | |||||
'amount' => Price::numberTwoDecimals($order->getAmountWithTax(Order::AMOUNT_TOTAL)), | |||||
'amount_paid' => Price::numberTwoDecimals($order->getAmount(Order::AMOUNT_PAID)), | |||||
'amount_remaining' => Price::numberTwoDecimals($order->getAmount(Order::AMOUNT_REMAINING)), | |||||
'amount_surplus' => Price::numberTwoDecimals($order->getAmount(Order::AMOUNT_SURPLUS)), | |||||
'user' => (isset($order->user)) ? array_merge( | 'user' => (isset($order->user)) ? array_merge( | ||||
$order->user->getAttributes(), | $order->user->getAttributes(), | ||||
$arrayCreditUser | $arrayCreditUser | ||||
) : null, | ) : null, | ||||
'pointSale' => ['id' => $order->pointSale->id, 'name' => $order->pointSale->name], | |||||
'pointSale' => $order->pointSale ? ['id' => $order->pointSale->id, 'name' => $order->pointSale->name] : null, | |||||
'productOrder' => $productOrderArray, | 'productOrder' => $productOrderArray, | ||||
'creditHistory' => $creditHistoryArray, | 'creditHistory' => $creditHistoryArray, | ||||
'oneProductUnactivated' => $oneProductUnactivated | 'oneProductUnactivated' => $oneProductUnactivated |
<span v-if="order.delivery_home && order.delivery_address && order.delivery_address.length > 0" class="glyphicon glyphicon-home"></span> | <span v-if="order.delivery_home && order.delivery_address && order.delivery_address.length > 0" class="glyphicon glyphicon-home"></span> | ||||
</td> | </td> | ||||
<td class="column-point-sale" v-if="idActivePointSale == 0"> | <td class="column-point-sale" v-if="idActivePointSale == 0"> | ||||
{{ order.pointSale.name }} | |||||
<template v-if="order.pointSale"> | |||||
{{ order.pointSale.name }} | |||||
</template> | |||||
</td> | </td> | ||||
<td class="column-amount">{{ order.amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</td> | |||||
<td class="column-amount">{{ order.amount.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</td> | |||||
<td class="column-state-payment"> | <td class="column-state-payment"> | ||||
<div class="input-group"> | <div class="input-group"> | ||||
<span class="label label-success input-group-addon" v-if="order.amount_paid == order.amount">payé</span> | <span class="label label-success input-group-addon" v-if="order.amount_paid == order.amount">payé</span> | ||||
<span :class="'info-box-icon ' +((order.amount_paid == order.amount) ? 'bg-green' : 'bg-red')"><i class="fa fa-check"></i></span> | <span :class="'info-box-icon ' +((order.amount_paid == order.amount) ? 'bg-green' : 'bg-red')"><i class="fa fa-check"></i></span> | ||||
<div class="info-box-content"> | <div class="info-box-content"> | ||||
<span class="info-box-text">Montant</span> | <span class="info-box-text">Montant</span> | ||||
<span class="info-box-number">{{ order.amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</span> | |||||
<span class="info-box-number">{{ order.amount.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }}</span> | |||||
<span class="info-box-text"> | <span class="info-box-text"> | ||||
Statut<br /> | Statut<br /> | ||||
<span class="label label-success" v-if="order.amount_paid == order.amount">payé</span> | <span class="label label-success" v-if="order.amount_paid == order.amount">payé</span> | ||||
data-type="refund" | data-type="refund" | ||||
@click="orderPaymentClick" > | @click="orderPaymentClick" > | ||||
<span class="glyphicon glyphicon-chevron-right"></span> | <span class="glyphicon glyphicon-chevron-right"></span> | ||||
Rembourser {{ order.amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
Rembourser {{ order.amount.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
</button> | </button> | ||||
<button v-else-if="order.amount_paid == 0" | <button v-else-if="order.amount_paid == 0" | ||||
data-type="payment" | data-type="payment" | ||||
@click="orderPaymentClick"> | @click="orderPaymentClick"> | ||||
<span class="glyphicon glyphicon-chevron-right"></span> | <span class="glyphicon glyphicon-chevron-right"></span> | ||||
Payer {{ order.amount.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
Payer {{ order.amount.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
</button> | </button> | ||||
<button v-else-if="order.amount_paid > order.amount" | <button v-else-if="order.amount_paid > order.amount" | ||||
data-type="refund" | data-type="refund" | ||||
@click="orderPaymentClick"> | @click="orderPaymentClick"> | ||||
<span class="glyphicon glyphicon-chevron-right"></span> | <span class="glyphicon glyphicon-chevron-right"></span> | ||||
Rembourser {{ order.amount_surplus.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
Rembourser {{ order.amount_surplus.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
</button> | </button> | ||||
<button v-else-if="order.amount_paid < order.amount" | <button v-else-if="order.amount_paid < order.amount" | ||||
data-type="payment" | data-type="payment" | ||||
@click="orderPaymentClick"> | @click="orderPaymentClick"> | ||||
<span class="glyphicon glyphicon-chevron-right"></span> | <span class="glyphicon glyphicon-chevron-right"></span> | ||||
Payer le restant {{ order.amount_remaining.toFixed(2).replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
Payer le restant {{ order.amount_remaining.replace(/(\d)(?=(\d{3})+(?:\.\d+)?$)/g, "$1,")+' €' }} | |||||
</button> | </button> | ||||
</div> | </div> | ||||
<?= Price::format($price) ?> | <?= Price::format($price) ?> | ||||
</td> | </td> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
<td class="align-center"><?= $productOrder->quantity * Product::$unitsArray[$productOrder->unit]['coefficient'] ?></td> | |||||
<td class="align-center"> | |||||
<?= $productOrder->quantity * Product::$unitsArray[$productOrder->unit]['coefficient'] ?> | |||||
</td> | |||||
<td class="align-center"><?= Product::strUnit($productOrder->unit, 'wording') ?></td> | <td class="align-center"><?= Product::strUnit($productOrder->unit, 'wording') ?></td> | ||||
<?php if($displayPrices): ?> | <?php if($displayPrices): ?> | ||||
<?php if(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> | <?php if(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> |
<?php endforeach; ?> | <?php endforeach; ?> | ||||
<?php endforeach; ?> | <?php endforeach; ?> | ||||
<?php else: ?> | <?php else: ?> | ||||
<?php foreach($document->getProductsOrders() as $product): ?> | |||||
<?php foreach($product as $productOrder): ?> | |||||
<?= $this->render('_download_product_line', [ | |||||
'document' => $document, | |||||
'productOrder' => $productOrder, | |||||
'displayPrices' => $displayPrices, | |||||
'displayProductDescription' => $displayProductDescription | |||||
]) ?> | |||||
<?php endforeach; ?> | |||||
<?php foreach($document->getProductsOrders() as $product): ?> | |||||
<?php foreach($product as $productOrder): ?> | |||||
<?= $this->render('_download_product_line', [ | |||||
'document' => $document, | |||||
'productOrder' => $productOrder, | |||||
'displayPrices' => $displayPrices, | |||||
'displayProductDescription' => $displayProductDescription | |||||
]) ?> | |||||
<?php endforeach; ?> | <?php endforeach; ?> | ||||
<?php endforeach; ?> | |||||
<?php endif; ?> | <?php endif; ?> | ||||
<?php if($displayPrices): ?> | <?php if($displayPrices): ?> | ||||
<?php $typeAmount = $document->isInvoicePrice() ? Order::INVOICE_AMOUNT_TOTAL : Order::AMOUNT_TOTAL ; ?> | <?php $typeAmount = $document->isInvoicePrice() ? Order::INVOICE_AMOUNT_TOTAL : Order::AMOUNT_TOTAL ; ?> |
'attribute' => 'amount', | 'attribute' => 'amount', | ||||
'header' => 'Montant', | 'header' => 'Montant', | ||||
'value' => function($invoice) { | 'value' => function($invoice) { | ||||
return $invoice->getAmountWithTax(Order::INVOICE_AMOUNT_TOTAL, true) ; | |||||
return $invoice->getAmountWithTax(Order::INVOICE_AMOUNT_TOTAL, true) ; | |||||
} | } | ||||
], | ], | ||||
[ | [ |
<script type="text/javascript" src="https://cdn.polyfill.io/v3/polyfill.min.js?features=Intl.~locale.fr"></script> | <script type="text/javascript" src="https://cdn.polyfill.io/v3/polyfill.min.js?features=Intl.~locale.fr"></script> | ||||
<?php $this->endBody() ?> | <?php $this->endBody() ?> | ||||
<?= $this->render('@common/views/_analytics.php'); ?> | |||||
</body> | </body> | ||||
</html> | </html> |
} | } | ||||
/* line 71, ../../sass/document/download.scss */ | /* line 71, ../../sass/document/download.scss */ | ||||
.document-download #block-products table td, .document-download #block-products table th { | .document-download #block-products table td, .document-download #block-products table th { | ||||
padding: 5px; | |||||
padding: 2px 5px; | |||||
border-top: solid 1px #c0c0c0; | border-top: solid 1px #c0c0c0; | ||||
border-left: solid 1px #c0c0c0; | border-left: solid 1px #c0c0c0; | ||||
font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; | font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; | ||||
font-size: 13px; | |||||
font-size: 12px; | |||||
} | } | ||||
/* line 78, ../../sass/document/download.scss */ | /* line 78, ../../sass/document/download.scss */ | ||||
.document-download #block-products table td.align-left, .document-download #block-products table th.align-left { | .document-download #block-products table td.align-left, .document-download #block-products table th.align-left { | ||||
.document-download #block-products table td.align-right, .document-download #block-products table th.align-right { | .document-download #block-products table td.align-right, .document-download #block-products table th.align-right { | ||||
text-align: right; | text-align: right; | ||||
} | } | ||||
/* line 91, ../../sass/document/download.scss */ | |||||
/* line 89, ../../sass/document/download.scss */ | |||||
.document-download #block-products table td { | |||||
font-size: 11px; | |||||
} | |||||
/* line 95, ../../sass/document/download.scss */ | |||||
.document-download .block-infos { | .document-download .block-infos { | ||||
margin-top: 20px; | margin-top: 20px; | ||||
padding: 10px; | padding: 10px; | ||||
border: solid 1px #c0c0c0; | border: solid 1px #c0c0c0; | ||||
} | } | ||||
/* line 96, ../../sass/document/download.scss */ | |||||
/* line 100, ../../sass/document/download.scss */ | |||||
.document-download .block-infos strong { | .document-download .block-infos strong { | ||||
font-size: 12px; | font-size: 12px; | ||||
} | } | ||||
/* line 102, ../../sass/document/download.scss */ | |||||
/* line 106, ../../sass/document/download.scss */ | |||||
#footer { | #footer { | ||||
font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; | font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; | ||||
text-align: center; | text-align: center; | ||||
padding-top: 10px; | padding-top: 10px; | ||||
border-top: solid 1px gray; | border-top: solid 1px gray; | ||||
} | } | ||||
/* line 108, ../../sass/document/download.scss */ | |||||
/* line 112, ../../sass/document/download.scss */ | |||||
#footer .infos-bottom { | #footer .infos-bottom { | ||||
padding-bottom: 20px; | padding-bottom: 20px; | ||||
margin-bottom: 40px; | margin-bottom: 40px; | ||||
font-size: 12px; | font-size: 12px; | ||||
line-height: 18px; | line-height: 18px; | ||||
} | } | ||||
/* line 114, ../../sass/document/download.scss */ | |||||
/* line 118, ../../sass/document/download.scss */ | |||||
#footer .reference-document { | #footer .reference-document { | ||||
font-weight: bold; | font-weight: bold; | ||||
} | } |
border-collapse: collapse ; | border-collapse: collapse ; | ||||
td, th { | td, th { | ||||
padding: 5px ; | |||||
padding: 2px 5px; | |||||
border-top: solid 1px $border-color ; | border-top: solid 1px $border-color ; | ||||
border-left: solid 1px $border-color ; | border-left: solid 1px $border-color ; | ||||
font-family: $font-family ; | font-family: $font-family ; | ||||
font-size: 13px; | |||||
font-size: 12px; | |||||
&.align-left { | &.align-left { | ||||
text-align: left ; | text-align: left ; | ||||
text-align: right ; | text-align: right ; | ||||
} | } | ||||
} | } | ||||
td { | |||||
font-size: 11px; | |||||
} | |||||
} | } | ||||
} | } | ||||
if ($ordersArray && count($ordersArray)) { | if ($ordersArray && count($ordersArray)) { | ||||
foreach ($ordersArray as $order) { | foreach ($ordersArray as $order) { | ||||
foreach ($order->productOrder as $productOrder) { | foreach ($order->productOrder as $productOrder) { | ||||
//$indexProductOrder = $productOrder->id_product ; | |||||
$indexProductOrder = $productOrder->product->order ; | $indexProductOrder = $productOrder->product->order ; | ||||
$newProductOrder = clone $productOrder ; | |||||
if (!isset($productsOrdersArray[$indexProductOrder])) { | if (!isset($productsOrdersArray[$indexProductOrder])) { | ||||
$newProductOrder = clone $productOrder ; | |||||
$productsOrdersArray[$indexProductOrder] = [$newProductOrder]; | $productsOrdersArray[$indexProductOrder] = [$newProductOrder]; | ||||
} else { | } else { | ||||
$productOrderMatch = false; | $productOrderMatch = false; | ||||
foreach ($productsOrdersArray[$indexProductOrder] as &$theProductOrder) { | foreach ($productsOrdersArray[$indexProductOrder] as &$theProductOrder) { | ||||
if ($theProductOrder->unit == $productOrder->unit | if ($theProductOrder->unit == $productOrder->unit | ||||
&& ($theProductOrder->price == $productOrder->price | |||||
|| ($this->isInvoicePrice() | |||||
&& $theProductOrder->invoice_price == $productOrder->invoice_price))) { | |||||
&& ( (!$this->isInvoicePrice() && $theProductOrder->price == $productOrder->price) | |||||
|| ($this->isInvoicePrice() && $theProductOrder->invoice_price == $productOrder->invoice_price) | |||||
)) { | |||||
$theProductOrder->quantity += $productOrder->quantity; | $theProductOrder->quantity += $productOrder->quantity; | ||||
$productOrderMatch = true; | $productOrderMatch = true; | ||||
} | } | ||||
} | } | ||||
if (!$productOrderMatch) { | if (!$productOrderMatch) { | ||||
$productsOrdersArray[$indexProductOrder][] = $productOrder; | |||||
$productsOrdersArray[$indexProductOrder][] = $newProductOrder; | |||||
} | } | ||||
} | } | ||||
} | } |
$productOrder->taxRate->value | $productOrder->taxRate->value | ||||
) * $productOrder->quantity; | ) * $productOrder->quantity; | ||||
$invoicePrice = $productOrder->invoice_price ? $productOrder->invoice_price : $productOrder->price; | |||||
if($productOrder->invoice_price) { | |||||
$invoicePrice = $productOrder->invoice_price; | |||||
} | |||||
else { | |||||
$invoicePrice = $productOrder->price; | |||||
} | |||||
$this->invoice_amount += $invoicePrice * $productOrder->quantity; | $this->invoice_amount += $invoicePrice * $productOrder->quantity; | ||||
$this->invoice_amount_with_tax += Price::getPriceWithTax( | $this->invoice_amount_with_tax += Price::getPriceWithTax( | ||||
$invoicePrice, | $invoicePrice, | ||||
public function getAmount($type = self::AMOUNT_TOTAL, $format = false) | public function getAmount($type = self::AMOUNT_TOTAL, $format = false) | ||||
{ | { | ||||
$amount = $this->amount; | $amount = $this->amount; | ||||
if ($type == self::INVOICE_AMOUNT_TOTAL) { | |||||
if ($type == self::INVOICE_AMOUNT_TOTAL && $this->invoice_amount) { | |||||
$amount = $this->invoice_amount; | $amount = $this->invoice_amount; | ||||
} | } | ||||
public function getAmountWithTax($type = self::AMOUNT_TOTAL, $format = false) | public function getAmountWithTax($type = self::AMOUNT_TOTAL, $format = false) | ||||
{ | { | ||||
$amount = $this->amount_with_tax; | $amount = $this->amount_with_tax; | ||||
if ($type == self::INVOICE_AMOUNT_TOTAL) { | |||||
if ($type == self::INVOICE_AMOUNT_TOTAL && $this->invoice_amount) { | |||||
$amount = $this->invoice_amount_with_tax; | $amount = $this->invoice_amount_with_tax; | ||||
} | } | ||||
$amount = $this->getAmountWithTax(self::AMOUNT_PAID) | $amount = $this->getAmountWithTax(self::AMOUNT_PAID) | ||||
- $this->getAmountWithTax(self::AMOUNT_TOTAL); | - $this->getAmountWithTax(self::AMOUNT_TOTAL); | ||||
break; | break; | ||||
/*default: | |||||
throw new NotFoundHttpException('Type de montant inconnu : '.$type) ;*/ | |||||
} | } | ||||
if ($format) { | if ($format) { | ||||
$productOrder->invoice_price = $productOrder->product->getPrice([ | $productOrder->invoice_price = $productOrder->product->getPrice([ | ||||
'user' => isset($params['user']) ? $params['user'] : null, | 'user' => isset($params['user']) ? $params['user'] : null, | ||||
'user_producer' => isset($params['user_producer']) ? $params['user_producer'] : null, | 'user_producer' => isset($params['user_producer']) ? $params['user_producer'] : null, | ||||
'point_sale' => isset($params['point_sale']) ? $params['point_sale'] : null | |||||
'point_sale' => isset($params['point_sale']) ? $params['point_sale'] : null, | |||||
'quantity' => $productOrder->quantity | |||||
]); | ]); | ||||
$productOrder->save(); | $productOrder->save(); | ||||
} | } |
<!-- analytics --> | |||||
<script> | |||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | |||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | |||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) | |||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); | |||||
ga('create', 'UA-86917043-1', 'auto'); | |||||
ga('send', 'pageview'); | |||||
</script> |
</footer> | </footer> | ||||
<?php $this->endBody() ?> | <?php $this->endBody() ?> | ||||
<?= $this->render('@common/views/_analytics.php'); ?> | |||||
</body> | </body> | ||||
</html> | </html> | ||||
<?php $this->endPage() ?> | <?php $this->endPage() ?> |
</footer> | </footer> | ||||
<script type="text/javascript" src="https://cdn.polyfill.io/v3/polyfill.min.js?features=Intl.~locale.fr"></script> | <script type="text/javascript" src="https://cdn.polyfill.io/v3/polyfill.min.js?features=Intl.~locale.fr"></script> | ||||
<?php $this->endBody() ?> | <?php $this->endBody() ?> | ||||
<?= $this->render('@common/views/_analytics.php'); ?> | |||||
</body> | </body> | ||||
</html> | </html> | ||||
<?php $this->endPage() ?> | <?php $this->endPage() ?> |