Commit 78fd710070ccab5de4bb5b23888aeb2250e62ae8

Authored by Mihail
1 parent 9009e1b5

add XlsxParser

backend/controllers/ParserController.php
... ... @@ -52,8 +52,6 @@ class ParserController extends BaseController
52 52  
53 53 public function actionIndex($mode = 0)
54 54 {
55   -// $path = 'common\components\parsers\CustomConverter';
56   -// CustomVarDamp::dumpAndDie(new $path());
57 55 $model = new UploadFileParsingForm();
58 56 // установим режим, 0 - ручная загрузка, 1 - автозагрузка
59 57 $model->mode = $mode;
... ...
backend/models/UploadFileParsingForm.php
... ... @@ -48,7 +48,7 @@ class UploadFileParsingForm extends Model
48 48 return [
49 49 ['importer_id', 'required', 'message' => 'Не указан поставщик!' ],
50 50 ['file', 'required', 'message' => 'Не выбран файл!' ],
51   - [['file'], 'file', 'extensions' => ['csv', 'xml'], 'checkExtensionByMimeType'=>false ],
  51 + [['file'], 'file', 'extensions' => ['csv', 'xlsx'], 'checkExtensionByMimeType'=>false ],
52 52 ['importer_id', 'integer','max' => 999999, 'min' => 0 ],
53 53 [['action','delete_prefix', 'delete_price', 'success'], 'boolean', 'except' => 'auto' ], // только для ручной загрузки
54 54 ['delimiter', 'string', 'max' => 1],
... ... @@ -71,7 +71,6 @@ class UploadFileParsingForm extends Model
71 71 public function readFile( $options = [] ){
72 72  
73 73 $data = Yii::$app->multiparser->parse( $this->file_path, $options );
74   - CustomVarDamp::dumpAndDie($data);
75 74 if( !is_array( $data ) || count($data) == 0 ){
76 75 throw new ErrorException("Ошибка чтения из файла прайса {$this->file_path}");
77 76 }
... ...
common/components/PriceWriter.php
... ... @@ -91,7 +91,7 @@ class PriceWriter
91 91 try {
92 92 //@todo add transaction
93 93  
94   - if ((int)$this->configuration['delete_price']) {
  94 + if ( isset($this->configuration['delete_price']) && (int)$this->configuration['delete_price'] ) {
95 95 $details_model->delete_price = true;
96 96 }
97 97 //2. попытаемся вставить данные в БД с апдейтом по ключам
... ...
common/components/parsers/config.php
... ... @@ -68,25 +68,15 @@
68 68 'configuration' => ["details" => []
69 69 ],],
70 70 ],
71   - 'web' =>
72   - ['class' => 'yii\multiparser\XmlParser',
73   - 'node' => 'Товар',
74   - 'hasHeaderRow' => true,
75   - 'keys' => [
76   - "BRAND" => 'Производитель',
77   - "ARTICLE"=> 'Код',
78   - "PRICE" => 'Розница',
79   - "DESCR" => 'Наименование',
80   - "BOX" => 'Колво',
81   - "ADD_BOX"=> 'Ожидаемое',
82   - "GROUP" => 'Группа'
83   - ],
84   - 'converter_conf' => [
85   - 'class' => 'common\components\parsers\CustomConverter',
86   - 'configuration' => ["details" => []
87   - ],],
88   - ],
89 71 ],
90   -
  72 + 'xlsx' =>
  73 + ['web' =>
  74 + ['class' => 'yii\multiparser\XlsxParser',
  75 + 'path_for_extract_files' => \Yii::getAlias('@temp_upload') . '/',
  76 + 'converter_conf' => [
  77 + 'class' => 'common\components\parsers\CustomConverter',
  78 + 'configuration' => ["encode" => 'DESCR'],]
  79 + ],
  80 + ]
91 81 ];
92 82  
... ...
console/.gitignore
1   -/old_migrations
2 1 \ No newline at end of file
  2 +/old_migrations
  3 +/runtime
3 4 \ No newline at end of file
... ...
console/controllers/ParserController.php
... ... @@ -59,8 +59,7 @@ class ParserController extends Controller
59 59 }
60 60 $data = \Yii::$app->multiparser->parse( $file_path, $parser_config );
61 61 if ( ! $data ) {
62   - // @todo переделать, что бы ошибка автоматически останавливала сценарий
63   - return false;
  62 + throw new ErrorException("Ошибка обработки файла прайса!");
64 63 }
65 64  
66 65 $writer = new PriceWriter();
... ... @@ -105,7 +104,7 @@ class ParserController extends Controller
105 104 ];
106 105  
107 106 if ($this->parseFileConsole($file_path, $config)) {
108   - unlink(\Yii::getAlias('@auto_upload') . '/' . $file_name . '.xml');
  107 + //unlink(\Yii::getAlias('@auto_upload') . '/' . $file_name . '.xml');
109 108 \Yii::info("Загрузка файла - $file_path успешно завершена", 'parser');
110 109 } else {
111 110 \Yii::error("Загрузка файла - $file_path завершена с ошибкой", 'parser');
... ...
console/runtime/.gitignore
1   -*
  1 +/logs
2 2 !.gitignore
3 3 \ No newline at end of file
... ...