Explorar el Código

[Administration] Produits : import CSV prix spécifiques #959

feature/souke
Guillaume hace 1 año
padre
commit
b35c1fda41
Se han modificado 3 ficheros con 49 adiciones y 5 borrados
  1. +18
    -3
      backend/controllers/ProductController.php
  2. +1
    -1
      backend/views/user/update.php
  3. +30
    -1
      common/logic/Product/ProductPrice/Service/ProductPriceBuilder.php

+ 18
- 3
backend/controllers/ProductController.php Ver fichero

@@ -382,8 +382,13 @@ class ProductController extends BackendController
else {
unset($productPriceCsvArray[0]);
$countUpdate = 0;
$countCreate = 0;
$cptLine = 1;
$dataNotFound = false;
$dataNotFoundArray = [];

foreach ($productPriceCsvArray as $productPriceCsv) {
$cptLine ++;
if (count($productPriceCsv) != 6) {
$dataNotFound = true;
continue;
@@ -407,6 +412,7 @@ class ProductController extends BackendController
|| ($pointSaleName && !$pointSale)) {

$dataNotFound = true;
$dataNotFoundArray[] = $cptLine;
continue;
}

@@ -423,20 +429,29 @@ class ProductController extends BackendController
$productPrice->price = $price;
$productPriceManager->saveUpdate($productPrice);
$countUpdate++;
} else {
$dataNotFound = true;
}
// Création automatique du prix spécifique
else {
$productPrice = $productPriceManager->instanciateProductPrice($product, $price, $user, $userGroup, $pointSale, $quantityFrom);
$productPriceManager->saveCreate($productPrice);
$countCreate ++;
}
}
}
}

if ($dataNotFound) {
$this->addFlash('error', "Attention, certaines lignes du fichier n'ont pas été prises en compte. Veuillez réessayer en repartant du fichier d'export.<br />Contacter l'administrateur du site si le problème persiste.");
$strLinesDataNotFound = '('.implode(', ', $dataNotFoundArray).')';
$this->addFlash('error', "Attention, certaines lignes ".$strLinesDataNotFound." du fichier n'ont pas été prises en compte. Veuillez réessayer en repartant du fichier d'export.<br />Contacter l'administrateur du site si le problème persiste.");
}

if ($countUpdate) {
$this->addFlash('success', $countUpdate . ' prix produits mis à jour.');
}

if($countCreate) {
$this->addFlash('success', $countCreate . ' prix produits créés.');
}
}
}
}

+ 1
- 1
backend/views/user/update.php Ver fichero

@@ -38,7 +38,7 @@ termes.

use yii\helpers\Html;

$this->setTitle('Modifier un client') ;
$this->setTitle('Modifier un client (#'.$model->id.')') ;
$this->addBreadcrumb(['label' => 'Utilisateurs', 'url' => ['index']]) ;
$this->addBreadcrumb(['label' => Html::encode($model->lastname.' '.$model->name)]) ;
$this->addBreadcrumb('Modifier') ;

+ 30
- 1
common/logic/Product/ProductPrice/Service/ProductPriceBuilder.php Ver fichero

@@ -3,14 +3,43 @@
namespace common\logic\Product\ProductPrice\Service;

use common\logic\AbstractBuilder;
use common\logic\PointSale\PointSale\Model\PointSale;
use common\logic\Product\Product\Model\Product;
use common\logic\Product\ProductPrice\Model\ProductPrice;
use common\logic\User\User\Model\User;
use common\logic\User\UserGroup\Model\UserGroup;

class ProductPriceBuilder extends AbstractBuilder
{
public function instanciateProductPrice(): ProductPrice
public function instanciateProductPrice(
Product $product,
float $price,
User $user = null,
UserGroup $userGroup = null,
PointSale $pointSale = null,
float $quantityFrom = null): ProductPrice
{
$productPrice = new ProductPrice();

$productPrice->populateProduct($product);
$productPrice->price = $price;

if($user) {
$productPrice->populateUser($user);
}

if($userGroup) {
$productPrice->populateUserGroup($userGroup);
}

if($pointSale) {
$productPrice->populatePointSale($pointSale);
}

if($quantityFrom) {
$productPrice->quantity_from = $quantityFrom;
}

return $productPrice;
}


Cargando…
Cancelar
Guardar