array( 'class' => 'application.modules.control.components.EditableAction', 'modelName' => 'CtrlMerchantOrder', ), 'toggle' => [ 'class' => 'application.modules.control.components.ToggleAction', 'modelName' => 'CtrlMerchantOrder', ], ); } public function actionMerchantOrders() { if ($_GET['pageSize']) { $pageSize = $_GET['pageSize']; } else { $pageSize = 100; } $search = new CtrlMerchantOrder('search'); $search->unsetAttributes(); if ($_GET['CtrlMerchantOrder']) { $search->attributes = $_GET['CtrlMerchantOrder']; } $provider = $search->search(); $provider->pagination->pageSize = $pageSize; $provider->sort->defaultOrder = 't.id DESC'; $provider->sort->attributes = [ 'company_name_search' => [ 'asc' => 'company.name', 'desc' => 'company.name DESC', ], 'company_main_url_search' => [ 'asc' => 'company.main_url', 'desc' => 'company.main_url DESC', ], 'legal_entity_search' => [ 'asc' => 'legal_entity.legal_entity', 'desc' => 'legal_entity.legal_entity DESC', ], '*' ]; $this->render('merchantOrders', compact('search', 'provider', 'pageSize')); } // https://reg.tagline.local/ctrl/merchantOrder/accounting public function actionAccounting() { // $filename_schet = '/data/regtaline.ru/pdf/pt-8-1814-6372_2023-11-17_schet.pdf'; $filename_schet = 'file/pdf/pt-8-1814-6372_2023-11-17_schet.pdf'; $schet_gen = 'Нет'; if (file_exists($filename_schet)) $schet_gen = 'Да'; VarDumper::dump($schet_gen); die(); $data = MerchantOrder::model()->findAllByAttributes([ 'direction' => 'Tagline Awards 2023', 'type' => 'Безнал', 'status' => 'Оплачен', ]); $sort = new CSort; $sort->attributes = [ 'id', 'master_id', 'nomenclature', 'direction', 'type', 'status', 'sum', 'legal', 'docs', ]; // $provider = new CArrayDataProvider($data, [ 'sort' => $sort, 'pagination' => false ]); $column = [ [ 'header' => "ID счета", 'name' => 'id', 'type' => 'raw', ], 'master_id: MasterID', 'nomenclature:Номер счета', //'direction:Направление', //'status: Статус', [ 'name' => 'sum', 'header' => 'Сумма, Р', 'value' => function($data){ return number_format($data['sum'], 0, ',', ' ') . ''; }, 'type' => 'raw', ], [ 'name' => 'legal', 'header' => 'Юр. лицо', 'value' => function($data){ $leagl_data = LegalEntity::model()->findByAttributes([ 'id' => $data['legal_entity_id'], ]); return '
'.$leagl_data['legal_entity'].'
'; }, 'type' => 'raw', ], [ 'name' => 'docs', 'header' => "Название файлов со счетом и актом", 'value' => function($data) { // 'pt-8-500307-6140_2023-07-10_act' $date = strtotime($data['created']); $creation_date = date('Y-m-d', $date); /* * 'pt-' — Премия Тэглайн (Tagline Awards) * TaglineAwards::CURRENT_ID — порядковый номер Премии * $user_master_id — мастер айди * $order_id — номер заказ * $creation_date — дата создания записи * $document_type — тип документа (акт, счет) */ $schet = 'pt-' . TaglineAwards::CURRENT_ID. '-' . $data['master_id'] . '-' . $data['id'] . '_' . $creation_date . '_schet.pdf'; $filename_schet = '/data/regtaline.ru/pdf/'.$schet; $schet_gen = 'Нет'; if (file_exists($filename_schet)) $schet_gen = 'Да'; $act = 'pt-' . TaglineAwards::CURRENT_ID. '-' . $data['master_id'] . '-' . $data['id'] . '_' . $creation_date . '_act.pdf'; return '
'.$schet_gen.' — '.$schet.'
'.$act.'
'; }, 'type' => 'raw', ], ]; // VarDumper::dump($data); // die(); $this->render('accounting', compact('data', 'provider', 'column')); } public function actionToggleFlagPay($id, $attribute) { $attribute = 'status'; if (Yii::app()->getRequest()->isPostRequest) { $model = CtrlMerchantOrder::model()->findByPk($id); $before = $model->{$attribute}; $model->{$attribute} = MerchantOrder::STATUS_PAID; $model->when_paid = date("Y-m-d H:i:s"); $model->save(); $after = $model->{$attribute}; $criteria = new CDbCriteria(); $criteria->addInCondition('id', explode(',', $model->ordered_item_id)); $works = MWork::model()->findAll($criteria); foreach ($works as $Work) { $Work->flag_pay = 1; Yii::app()->db->createCommand()->update('tag_m_work_nomination_relation', array( 'flag_pay'=>1, ), 'work_id=:id', [ ':id' => $Work->id, ]); $Work->save(false); } if ($before !== $after) { $log = new LogChange(); $log->type = 'ctrl_toggle'; $log->table = $model->tableName(); $log->row = $model->id; $log->field = $attribute; $log->user_id = Yii::app()->user->id; $log->before = $before; $log->after = $after; $log->save(); } } else { throw new CHttpException(Yii::t('zii', 'Invalid request')); } } public function actionDelete($id) { $model = CtrlMerchantOrder::model()->findByPk($id); $model->flag_deleted = 1; $model->save(false); } /** * @throws Exception */ public function actionRecover(int $id) { header('Content-type: application/json'); /** @var CtrlMerchantOrder $order */ $order = CtrlMerchantOrder::model()->findByPk($id); $CurTaglineAwards = TaglineAwards::getCurAwards(); if ($CurTaglineAwards->name_merchant_direction !== $order->direction) { throw new \Exception( sprintf( 'Кейсы в счете %d не поданы на %s. Они поданы на %s', $id, $CurTaglineAwards->name_merchant_direction, $order->direction ) ); } $result = $order->recoverWorks(); echo CJSON::encode( ['status' => 200, 'message' => sprintf( 'Принудительно подано %d кейсов в %d заглушках-номинациях. ВАЖНО: залогиньтесь в лк номинанта и выберите нужные номинации вместо заглушек', $result['works_recovered'], $result['noms_recovered'] ), ] ); } }