Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. public function ImportpricelistCSV($files = null)
  2. {
  3.  
  4. if (empty($files)) {
  5. return 1;
  6. }
  7.  
  8. //cоздаем объект csv
  9. $file = new \SplFileObject($files);
  10.  
  11. //создаем массив с нужными нам данными для обновления товара
  12. $dataMasNeedInfo = [];
  13.  
  14. foreach($file as $data){
  15. if(strlen(trim($data)) >= 2){
  16. $dataMas = explode(';', trim($data));
  17. $dataMasNeedInfo[] = [
  18. 'sku' => trim($dataMas[0]),
  19. 'quantity' => preg_replace("/(\D)/", "", trim($dataMas[5])),
  20. 'price' => preg_replace("/(\D)/", "", trim($dataMas[7])),
  21. ];
  22. }else{
  23. break;
  24. }
  25. }
  26.  
  27. //проверяем, есть ли данные с файла
  28. if(!empty($dataMasNeedInfo)){
  29.  
  30. //по артикулу делаем поиск и если такой товар есть то обновляем данные
  31. foreach($dataMasNeedInfo as $dat){
  32.  
  33. //делаем проверку есть ли артикул по которому будем искать товар
  34. if(!empty($dat['sku'])){
  35.  
  36. // обновить имеющуюся строку данных
  37. $product = Product::findOne(['sku' => $dat['sku']]);
  38.  
  39. //делаем проверку есть ли такой товар по такому артикулу в базе
  40. if(!empty($product)){
  41. $product->price = (!empty($dat['price'])) ? $dat['price'] : 0;
  42. $house_product = WarehouseProduct::findOne(['product_id' => $product->id, 'warehouse_id' => 1]);
  43.  
  44. //делаем проверку по складе, потому что создавался пустой объект
  45. if(!empty($house_product)){
  46.  
  47. //делаем проверку есть ли количество, если есть то убераем галочку в товаре "Неограниченое кол-во (не считаются на складе)", если товара нет то ставим ее
  48. if(!empty($dat['quantity'])){
  49. $product->unlimited_count = 0;
  50. $house_product->in_warehouse = (float)$dat['quantity'];
  51. }else{
  52. $product->unlimited_count = 1;
  53. $house_product->in_warehouse = 0;
  54. }
  55.  
  56. $house_product->save();
  57.  
  58. }
  59.  
  60. $product->save();
  61.  
  62. }
  63.  
  64. }
  65.  
  66. }
  67.  
  68. //делаем редирект
  69. $this->redirect('/shop/backend-product/index',302);
  70.  
  71. }
  72.  
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement