Browse Source

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

feature/souke
Guillaume 1 year ago
parent
commit
b35c1fda41
3 changed files with 49 additions and 5 deletions
  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 View File

else { else {
unset($productPriceCsvArray[0]); unset($productPriceCsvArray[0]);
$countUpdate = 0; $countUpdate = 0;
$countCreate = 0;
$cptLine = 1;
$dataNotFound = false; $dataNotFound = false;
$dataNotFoundArray = [];

foreach ($productPriceCsvArray as $productPriceCsv) { foreach ($productPriceCsvArray as $productPriceCsv) {
$cptLine ++;
if (count($productPriceCsv) != 6) { if (count($productPriceCsv) != 6) {
$dataNotFound = true; $dataNotFound = true;
continue; continue;
|| ($pointSaleName && !$pointSale)) { || ($pointSaleName && !$pointSale)) {


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


$productPrice->price = $price; $productPrice->price = $price;
$productPriceManager->saveUpdate($productPrice); $productPriceManager->saveUpdate($productPrice);
$countUpdate++; $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) { 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) { if ($countUpdate) {
$this->addFlash('success', $countUpdate . ' prix produits mis à jour.'); $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 View File



use yii\helpers\Html; 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' => 'Utilisateurs', 'url' => ['index']]) ;
$this->addBreadcrumb(['label' => Html::encode($model->lastname.' '.$model->name)]) ; $this->addBreadcrumb(['label' => Html::encode($model->lastname.' '.$model->name)]) ;
$this->addBreadcrumb('Modifier') ; $this->addBreadcrumb('Modifier') ;

+ 30
- 1
common/logic/Product/ProductPrice/Service/ProductPriceBuilder.php View File

namespace common\logic\Product\ProductPrice\Service; namespace common\logic\Product\ProductPrice\Service;


use common\logic\AbstractBuilder; 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\Product\ProductPrice\Model\ProductPrice;
use common\logic\User\User\Model\User;
use common\logic\User\UserGroup\Model\UserGroup;


class ProductPriceBuilder extends AbstractBuilder 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 = 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; return $productPrice;
} }



Loading…
Cancel
Save