namespace app\controllers;
+
use Exception;
use Yii;
use yii\helpers\ArrayHelper;
use yii_app\records\Assemblies;
use yii_app\records\Balances;
use yii_app\records\Cashes;
+use yii_app\records\CityStore;
use yii_app\records\CreateChecks;
use yii_app\records\CreateChecks2;
use yii_app\records\CreateChecksBags;
use yii_app\records\Sales;
use yii_app\records\SalesItems;
use yii_app\records\SalesProducts;
+use yii_app\records\SelfCostProduct;
//use yii_app\records\SalesProductsUpdate;
use yii_app\records\SalesUpdate;
use yii_app\records\Terminals;
const OUT_DIR =
// __DIR__ . "/../json";
- "/var/www/erp24/api2/json";
+ "/www/api2/json";
+ //"/var/www/erp24/api2/json";
// "/var/www/www-root/data/www/api.bazacvetov24.ru/data/json";
public function actionRequest() {
}
}
}
+ if (!empty($result['self_cost'])) {
+
+
+ $storeMap = [];
+
+
+ $cityStoreIds = CityStore::find()->select('id')->column();
+
+ // Получаем соответствия export_val => entity_id из таблицы ExportImportTable
+ $exportImportRecords = ExportImportTable::find()
+ ->select(['entity_id', 'export_val'])
+ ->where(['entity_id' => $cityStoreIds, 'entity' => 'city_store', 'export_id' => 1])
+ ->all();
+
+ // Создаем справочник
+ foreach ($exportImportRecords as $record) {
+ $storeMap[$record->export_val] = $record->entity_id;
+ }
+
+
+ $values = [];
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . 'self_cost', FILE_APPEND);
+
+ foreach ($result['self_cost'] as $selfCost) {
+
+ $storeId = $storeMap[$selfCost['store_id']] ?? null;
+ if (!$storeId) {
+ continue;
+ }
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . $storeId, FILE_APPEND);
+
+ // Удаляем старые данные
+ SelfCostProduct::deleteAll(['date' => $selfCost['date'], 'store_id' => $storeId]);
+
+ foreach ($selfCost['items'] as $item) {
+ $values[] = [
+ 'date' => $selfCost['date'],
+ 'store_id' => $storeId,
+ 'product_guid' => $item['product_id'],
+ 'price' => $item['price'],
+ 'updated_at' => date('Y-m-d H:i:s')
+ ];
+ }
+ }
+
+ if (!empty($values)) {
+
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . 'values', FILE_APPEND);
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . count($values), FILE_APPEND);
+ $this->setSelfCostUpdate($values);
+
+ }
+ }
+
if (!empty($result['sellers'])) {
Products1c::deleteAll(['tip' => 'admin']);
// $this->insertDataSales($values, 'sales_products_update', $columns);
// }
- private function insertDataSales($values, $tableName, $columns) {
- $chunkValues = array_chunk($values, 1000);
- foreach ($chunkValues as $key => $rows) {
+ private function setSelfCostUpdate($values) {
+ $columns = [
- try {
- $transaction = \Yii::$app->db->beginTransaction();
- Yii::$app->db->createCommand()->batchInsert($tableName, $columns, $rows)->execute();
- $transaction->commit();
- } catch (Exception $e) {
- $errorString = substr($e->getMessage(), 0, 2000);
- file_put_contents(self::OUT_DIR . '/error_upload.txt',
- PHP_EOL . $errorString, FILE_APPEND);
- $transaction->rollBack();
- InfoLogService::setInfoLog(__FILE__, __LINE__, $tableName , 'error_id_25');
- InfoLogService::setInfoLog(__FILE__, __LINE__, $errorString , 'error_id_25_22');
- LogService::apiErrorLog(json_encode(["error_id" => 25, "error" => $errorString], JSON_UNESCAPED_UNICODE));
+ 'date',
+ 'store_id',
+ 'product_guid',
+ 'price',
+ 'updated_at'
+ ];
+
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . 'self', FILE_APPEND);
+
+ $this->insertDataSales($values, 'self_cost_product', $columns, 4000);
+ }
+
+
+
+ private function insertDataSales($values, $tableName, $columns, $chunks = 1000 ) {
+ $chunkValues = array_chunk($values, $chunks);
+
+ foreach ($chunkValues as $key => $rows) {
+
+ try {
+ $transaction = \Yii::$app->db->beginTransaction();
+ Yii::$app->db->createCommand()->batchInsert($tableName, $columns, $rows)->execute();
+ $transaction->commit();
+ } catch (Exception $e) {
+ $errorString = substr($e->getMessage(), 0, 2000);
+ file_put_contents(self::OUT_DIR . '/error_upload.txt',
+ PHP_EOL . $errorString, FILE_APPEND);
+ $transaction->rollBack();
+ InfoLogService::setInfoLog(__FILE__, __LINE__, $tableName , 'error_id_25');
+ InfoLogService::setInfoLog(__FILE__, __LINE__, $errorString , 'error_id_25_22');
+ LogService::apiErrorLog(json_encode(["error_id" => 25, "error" => $errorString], JSON_UNESCAPED_UNICODE));
- }
}
}
+ }
}