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']
),
]
);
}
}