From: marina Date: Wed, 14 Aug 2024 22:16:34 +0000 (+0300) Subject: ERP-85 Реализовать обмен данных с 1С Бухгалтерия X-Git-Tag: 1.4~22^2~29 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=aa00c06fd9f4283e6bdf969720086b3e7660d445;p=erp24_rep%2Fyii-erp24%2F.git ERP-85 Реализовать обмен данных с 1С Бухгалтерия --- diff --git a/erp24/composer.json b/erp24/composer.json index 8b524a86..4cef5838 100644 --- a/erp24/composer.json +++ b/erp24/composer.json @@ -28,7 +28,8 @@ "yiisoft/yii2-imagine": "^2.3", "kartik-v/yii2-builder": "dev-master", "kartik-v/yii2-bootstrap5-dropdown": "@dev", - "kartik-v/yii2-grid": "@dev" + "kartik-v/yii2-grid": "@dev", + "kartik-v/yii2-widget-datepicker": "dev-master", "phpoffice/phpspreadsheet": "^2.2" }, "require-dev": { diff --git a/erp24/controllers/CronController.php b/erp24/controllers/CronController.php index 71803f92..0c58e5cb 100644 --- a/erp24/controllers/CronController.php +++ b/erp24/controllers/CronController.php @@ -2,11 +2,53 @@ namespace app\controllers; +use yii\data\ActiveDataProvider; +use yii\db\Exception; +use yii\helpers\Json; use yii\web\Controller; +use yii_app\records\ApiCronBuh; class CronController extends Controller { public function action1c() { return $this->render('1c'); } + + /** + * @throws Exception + */ + public function action1cBuh() { + $request = \Yii::$app->request->post(); + + if ($request && !empty($request['start_date']) && !empty($request['end_date'])) { + $model = new ApiCronBuh(); + $model->date = date('Y-m-d H:i:s'); + $model->request_id = strval(strtotime($model->date)); + $model->json_post = Json::encode([ + 'request_id' => $model->request_id, + 'cost_items' => [ + 'start_time' => date('Y-m-d 00:00:00', strtotime($request['start_date'])), + 'end_time' => date('Y-m-d 23:59:59', strtotime($request['end_date'])), + ] + ]); + + try { + $model->save(); + } catch (Exception $e) { + throw new Exception($e); + } + } + $dataProvider = new ActiveDataProvider([ + 'query' => ApiCronBuh::find() + ->orderBy('request_id desc'), + 'pagination' => [ + 'pageSize' => 30 + ], + + ]); + + return $this->render('1c_buh', [ + 'dataProvider' => $dataProvider, + ]); + } } \ No newline at end of file diff --git a/erp24/records/ApiCronBuh.php b/erp24/records/ApiCronBuh.php index fbd0789b..8e34dfea 100644 --- a/erp24/records/ApiCronBuh.php +++ b/erp24/records/ApiCronBuh.php @@ -16,6 +16,11 @@ use Yii; */ class ApiCronBuh extends \yii\db\ActiveRecord { + + const WAIT = 0; + const SEND = 1; + const RECEIVED = 2; + /** * {@inheritdoc} */ @@ -30,7 +35,7 @@ class ApiCronBuh extends \yii\db\ActiveRecord public function rules() { return [ - [['date', 'date_up', 'request_id'], 'required'], + [['date','request_id'], 'required'], [['date', 'date_up'], 'safe'], [['status'], 'integer'], [['json_post'], 'string'], @@ -45,11 +50,22 @@ class ApiCronBuh extends \yii\db\ActiveRecord { return [ 'id' => 'ID', - 'date' => 'Date', - 'date_up' => 'Date Up', + 'date' => 'Дата', + 'date_up' => 'Дата обработки', 'status' => 'Status', - 'json_post' => 'Json Post', - 'request_id' => 'Request ID', + 'json_post' => 'Тело запроса', + 'request_id' => 'ID запроса', ]; } + + public static function getStatus($status) + { + $labels = [ + self::WAIT => 'Ожидает', + self::SEND => 'Отправлено', + self::RECEIVED => 'Обработано', + ]; + + return $labels[$status] ?? ''; + } } diff --git a/erp24/views/cron/1c_buh.php b/erp24/views/cron/1c_buh.php new file mode 100644 index 00000000..d65255dd --- /dev/null +++ b/erp24/views/cron/1c_buh.php @@ -0,0 +1,89 @@ +title = Yii::t('app', 'Задачи для 1С Бухгалтерии'); +$this->params['breadcrumbs'][] = $this->title; +?> +
+ +

title) ?>

+ + + +
+
+ 'start_date', + 'pluginOptions' => [ + 'autoclose' => true, + 'format' => 'dd-mm-yyyy' + ], + 'options' => [ + 'class' => 'form-control', + 'placeholder' => 'Начало периода',] + ]); + ?> +
+
+ 'end_date', + 'pluginOptions' => [ + 'autoclose' => true, + 'format' => 'dd-mm-yyyy' + ], + 'options' => [ + 'class' => 'form-control', + 'placeholder' => 'Конец периода',] + ]); + ?> +
+ 'btn btn-primary col-md-2 h-25']); ?> +
+ + + + + $dataProvider, + 'columns' => [ + 'request_id', + 'date', + 'json_post', + [ + 'attribute' => 'status', + 'value' => function ($model) { + return ApiCronBuh::getStatus($model->status); + } + ], + 'date_up' + ], + 'rowOptions' => function ($model) { + $status = $model->status; + $class = ''; + switch ($status) { + case ApiCronBuh::SEND: + $class = 'bg-warning'; + break; + case ApiCronBuh::RECEIVED: + $class = 'bg-success'; + break; + default: + } + return ['class' => $class]; + } + ]); ?> + + +