if($firstOrder->pointSale->id_user) { | if($firstOrder->pointSale->id_user) { | ||||
$deliveryNote->id_user = $firstOrder->pointSale->id_user; | $deliveryNote->id_user = $firstOrder->pointSale->id_user; | ||||
$user = User::searchOne([ | |||||
'id' => $deliveryNote->id_user | |||||
]) ; | |||||
} | } | ||||
else { | else { | ||||
$user = new User ; | $user = new User ; | ||||
$deliveryNote->id_user = $user->id; | $deliveryNote->id_user = $user->id; | ||||
} | } | ||||
if(!isset($user)) { | |||||
$user = User::searchOne([ | |||||
'id' => $deliveryNote->id_user | |||||
]) ; | |||||
} | |||||
$deliveryNote->address = $user->getFullAddress() ; | $deliveryNote->address = $user->getFullAddress() ; | ||||
$deliveryNote->save(); | $deliveryNote->save(); | ||||
} | } | ||||
]) ; | ]) ; | ||||
} | } | ||||
if(!isset($user) || !$user) { | |||||
$user = User::searchOne([ | |||||
'id' => $deliveryNote->id_user | |||||
]) ; | |||||
$userProducer = UserProducer::searchOne([ | |||||
'id_user' => $deliveryNote->id_user, | |||||
'id_producer' => GlobalParam::getCurrentProducerId() | |||||
]) ; | |||||
} | |||||
// affectation du BL aux commandes | // affectation du BL aux commandes | ||||
foreach ($idOrders as $idOrder) { | foreach ($idOrders as $idOrder) { | ||||
$order = Order::searchOne([ | $order = Order::searchOne([ | ||||
$order->id_delivery_note = $deliveryNote->id; | $order->id_delivery_note = $deliveryNote->id; | ||||
$order->save(); | $order->save(); | ||||
} | } | ||||
// init invoice price | |||||
$order = Order::searchOne(['id' => $idOrder]) ; | |||||
if($order) { | |||||
$order->initInvoicePrices([ | |||||
'user' => $user, | |||||
'user_producer' => $userProducer, | |||||
'point_sale' => $firstOrder->pointSale | |||||
]) ; | |||||
} | |||||
} | } | ||||
return [ | return [ |
], [ | ], [ | ||||
'id_delivery_note' => $idDeliveryNote | 'id_delivery_note' => $idDeliveryNote | ||||
]) ; | ]) ; | ||||
// mise à jour des prix facturés | |||||
$ordersArray = Order::searchAll([ | |||||
'id_invoice' => $model->id | |||||
], [ | |||||
'join_with' => ['distribution', 'user', 'user.userUserGroup', 'user.userProducer', 'pointSale', 'productOrder', 'productOrder.product', 'productOrder.product.productPrice'] | |||||
]) ; | |||||
foreach($ordersArray as $order) { | |||||
$userProducer = UserProducer::searchOne([ | |||||
'id_user' => $model->id_user, | |||||
'id_producer' => $order->distribution->id_producer, | |||||
]) ; | |||||
foreach($order->productOrder as $productOrder) { | |||||
if($productOrder->product) { | |||||
$productOrder->invoice_price = $productOrder->product->getPrice([ | |||||
'user' => $model->user, | |||||
'user_producer' => $userProducer, | |||||
'point_sale' => $order->pointSale | |||||
]) ; | |||||
$productOrder->save() ; | |||||
} | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
<br /><small><?= Html::encode($productOrder->product->description) ?></small> | <br /><small><?= Html::encode($productOrder->product->description) ?></small> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
</td> | </td> | ||||
<?php | |||||
$price = $productOrder->getPrice() ; | |||||
if($document->isInvoicePrice() && $productOrder->getInvoicePrice()) { | |||||
$price = $productOrder->getInvoicePrice() ; | |||||
} | |||||
?> | |||||
<?php if($displayPrices): ?> | <?php if($displayPrices): ?> | ||||
<td class="align-center"><?= Price::format($productOrder->getPrice()) ?></td> | |||||
<td class="align-center"> | |||||
<?= Price::format($price) ?> | |||||
</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(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> | <?php if(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> | ||||
<td class="align-center"><?= $productOrder->taxRate->value * 100 ?> %</td> | <td class="align-center"><?= $productOrder->taxRate->value * 100 ?> %</td> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
<td class="align-center"><?= Price::format($productOrder->getPrice() * $productOrder->quantity) ?></td> | |||||
<td class="align-center"> | |||||
<?php if($document->getClass() == ''): ?> | |||||
<?= Price::format($price * $productOrder->quantity) ?> | |||||
<?php else: ?> | |||||
<?= Price::format($price * $productOrder->quantity) ?> | |||||
<?php endif; ?> | |||||
</td> | |||||
<?php endif; ?> | <?php endif; ?> | ||||
</tr> | </tr> |
<th>Prix (unité)</th> | <th>Prix (unité)</th> | ||||
<th>Quantité</th> | <th>Quantité</th> | ||||
<th v-if="taxRateProducer != 0">TVA</th> | <th v-if="taxRateProducer != 0">TVA</th> | ||||
<th v-if="taxRateProducer != 0">Total TTC</th> | |||||
<th v-if="taxRateProducer != 0">Total HT</th> | |||||
<th v-else>Total</th> | <th v-else>Total</th> | ||||
<th>Supprimer</th> | <th>Supprimer</th> | ||||
</tr> | </tr> | ||||
</ul> | </ul> | ||||
</td> | </td> | ||||
<td class="col-md-2"> | <td class="col-md-2"> | ||||
<span v-if="(document.class == 'Invoice' || document.class == 'DeliveryNote') && productOrder.invoice_price"> | |||||
{{ formatPrice(productOrder.invoice_price) }} | |||||
</span> | |||||
<span v-else> | |||||
{{ formatPrice(productOrder.price) }} | |||||
</span> | |||||
{{ formatPrice(getProductOrderPrice(productOrder)) }} | |||||
</td> | </td> | ||||
<td class="col-md-2">{{ productOrder.quantity }}</td> | <td class="col-md-2">{{ productOrder.quantity }}</td> | ||||
<td class="col-md-1" v-if="taxRateProducer != 0"> | <td class="col-md-1" v-if="taxRateProducer != 0"> | ||||
{{ productsArray[productOrder.id_product].tax_rate * 100 }} % | {{ productsArray[productOrder.id_product].tax_rate * 100 }} % | ||||
</td> | </td> | ||||
<td class="col-md-2"> | <td class="col-md-2"> | ||||
<span v-if="(document.class == 'Invoice' || document.class == 'DeliveryNote') && productOrder.invoice_price"> | |||||
{{ formatPrice(productOrder.quantity * productOrder.invoice_price) }} | |||||
</span> | |||||
<span v-else-if="document.class == 'Quotation'"> | |||||
{{ formatPrice(productOrder.quantity * productOrder.price) }} | |||||
</span> | |||||
{{ formatPrice(productOrder.quantity * getProductOrderPrice(productOrder)) }} | |||||
</td> | </td> | ||||
<td class="col-md-1"> | <td class="col-md-1"> | ||||
<a class="btn btn-default" @click="deleteProductOrder(productOrder.id)"> | <a class="btn btn-default" @click="deleteProductOrder(productOrder.id)"> |
</tr> | </tr> | ||||
<?php foreach($order->productOrder as $productOrder): ?> | <?php foreach($order->productOrder as $productOrder): ?> | ||||
<?= $this->render('_download_product_line', [ | <?= $this->render('_download_product_line', [ | ||||
'document' => $document, | |||||
'productOrder' => $productOrder, | 'productOrder' => $productOrder, | ||||
'displayOrders' => true, | 'displayOrders' => true, | ||||
'displayPrices' => $displayPrices | 'displayPrices' => $displayPrices | ||||
<?php foreach($document->getProductsOrders() as $product): ?> | <?php foreach($document->getProductsOrders() as $product): ?> | ||||
<?php foreach($product as $productOrder): ?> | <?php foreach($product as $productOrder): ?> | ||||
<?= $this->render('_download_product_line', [ | <?= $this->render('_download_product_line', [ | ||||
'document' => $document, | |||||
'productOrder' => $productOrder, | 'productOrder' => $productOrder, | ||||
'displayPrices' => $displayPrices | 'displayPrices' => $displayPrices | ||||
]) ?> | ]) ?> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
<?php if($displayPrices): ?> | <?php if($displayPrices): ?> | ||||
<?php if(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> | <?php if(GlobalParam::getCurrentProducer()->taxRate->value != 0): ?> | ||||
<?php $typeAmount = $document->isInvoicePrice() ? Order::INVOICE_AMOUNT_TOTAL : Order::AMOUNT_TOTAL ; ?> | |||||
<tr> | <tr> | ||||
<td class="align-right" colspan="5"><strong>Total HT</strong></td> | <td class="align-right" colspan="5"><strong>Total HT</strong></td> | ||||
<td class="align-center"><?= Price::format($document->getAmount()) ?></td> | |||||
<td class="align-center"> | |||||
<?= Price::format($document->getAmount($typeAmount)); ?> | |||||
</td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td class="align-right" colspan="5"><strong>TVA</strong></td> | <td class="align-right" colspan="5"><strong>TVA</strong></td> | ||||
<td class="align-center"><?= Price::format($document->getAmountWithTax() - $document->getAmount()) ?></td> | |||||
<td class="align-center"><?= Price::format($document->getAmountWithTax($typeAmount) - $document->getAmount($typeAmount)) ?></td> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td class="align-right" colspan="5"><strong>Total TTC</strong></td> | <td class="align-right" colspan="5"><strong>Total TTC</strong></td> | ||||
<td class="align-center"><?= Price::format($document->getAmountWithTax()) ?></td> | |||||
<td class="align-center"><?= Price::format($document->getAmountWithTax($typeAmount)) ?></td> | |||||
</tr> | </tr> | ||||
<?php else: ?> | <?php else: ?> | ||||
<tr> | <tr> | ||||
<strong>Total</strong><br /> | <strong>Total</strong><br /> | ||||
TVA non applicable | TVA non applicable | ||||
</td> | </td> | ||||
<td class="align-center"><?= Price::format($document->getAmount()) ?></td> | |||||
<td class="align-center"><?= Price::format($document->getAmount($typeAmount)) ?></td> | |||||
</tr> | </tr> | ||||
<?php endif; ?> | <?php endif; ?> | ||||
<?php endif; ?> | <?php endif; ?> |
'attribute' => 'amount', | 'attribute' => 'amount', | ||||
'header' => 'Montant', | 'header' => 'Montant', | ||||
'value' => function($invoice) { | 'value' => function($invoice) { | ||||
return $invoice->getAmountWithTax(Order::AMOUNT_TOTAL, true) ; | |||||
return $invoice->getAmountWithTax(Order::INVOICE_AMOUNT_TOTAL, true) ; | |||||
} | } | ||||
], | ], | ||||
[ | [ |
var documentClass = $('#app-document-form').attr('data-class-document') ; | var documentClass = $('#app-document-form').attr('data-class-document') ; | ||||
return documentClass ; | return documentClass ; | ||||
}, | }, | ||||
getProductOrderPrice: function(productOrder) { | |||||
var documentClass = this.getDocumentClass() ; | |||||
var price = 0 ; | |||||
if(documentClass == 'DeliveryNote' || documentClass == 'Invoice') { | |||||
price = productOrder.invoice_price ; | |||||
if(!price) { | |||||
price = productOrder.price ; | |||||
} | |||||
} | |||||
else { | |||||
price = productOrder.price ; | |||||
} | |||||
return price ; | |||||
}, | |||||
changeUser: function() { | changeUser: function() { | ||||
var app = this ; | var app = this ; | ||||
axios.get(UrlManager.getBaseUrlAbsolute()+"document/ajax-user-infos",{params: { | axios.get(UrlManager.getBaseUrlAbsolute()+"document/ajax-user-infos",{params: { |
return Yii::getAlias('@app/web/pdf/'.$this->getType().'-' . $this->reference. '.pdf') ; | return Yii::getAlias('@app/web/pdf/'.$this->getType().'-' . $this->reference. '.pdf') ; | ||||
} | } | ||||
public function isInvoicePrice() | |||||
{ | |||||
return $this->getClass() == 'Invoice' || $this->getClass() == 'DeliveryNote' ; | |||||
} | |||||
} | } |
return $username ; | return $username ; | ||||
} | } | ||||
public function initInvoicePrices($params = []) | |||||
{ | |||||
foreach($this->productOrder as $productOrder) { | |||||
if($productOrder->product) { | |||||
$productOrder->invoice_price = $productOrder->product->getPrice([ | |||||
'user' => isset($params['user']) ? $params['user'] : null, | |||||
'user_producer' => isset($params['user_producer']) ? $params['user_producer'] : null, | |||||
'point_sale' => isset($params['point_sale']) ? $params['point_sale'] : null | |||||
]) ; | |||||
$productOrder->save() ; | |||||
} | |||||
} | |||||
} | |||||
} | } |