if (Yii::$app->request->post()) {
$action = Yii::$app->request->post('action');
$model = ShiftTransfer::findOne($id);
- if ($action === 'accept') {
- $model->updateAttributes(['date_end' => date('Y-m-d H:i:s')]);
- $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_ACCEPTED]);
- $model->updateAttributes(['start_shift_admin_id' => Yii::$app->user->id]);
- ShiftRemains::updateAll(['type' => ShiftRemains::ARCHIVE_RECORD], ['shift_transfer_id' => $id]);
- ReplacementInvoice::setData($model);
- StoreBalance::setData($model);
- WaybillIncoming::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
- WaybillWriteOffs::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
- ReplacementInvoice::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
- } elseif ($action === 'save') {
- $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_READY_TO_ACCEPT]);
- } elseif ($action == 'recalculate') {
- EqualizationRemains::setData($model);
- Yii::$app->session->setFlash('success', 'Таблица замен успешно перерасчитана');
- } elseif ($action === 'rejection') {
- EqualizationRemains::setData($model);
- $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]);
- WaybillWriteOffs::deleteAll(['shift_transfer_id' => $model->id]);
- WaybillIncoming::deleteAll(['shift_transfer_id' => $model->id]);
- } elseif ($action === 'resume') {
- $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_OF_THE_FORMATION_OF_SURPLUSES_AND_SHORTAGES]);
- EqualizationRemains::updateData(Yii::$app->request->post()['ShiftTransfer']['equalizationRemains'], $id);
- WaybillIncoming::setData($model);
- WaybillWriteOffs::setData($model);
+ $transaction = Yii::$app->db->beginTransaction();
+
+ try {
+ if ($action === 'accept') {
+ $model->updateAttributes([
+ 'date_end' => date('Y-m-d H:i:s'),
+ 'status_id' => ShiftTransfer::STATUS_ID_ACCEPTED,
+ 'start_shift_admin_id' => Yii::$app->user->id
+ ]);
+ ShiftRemains::updateAll(['type' => ShiftRemains::ARCHIVE_RECORD], ['shift_transfer_id' => $id]);
+ ReplacementInvoice::setData($model);
+ StoreBalance::setData($model);
+ WaybillIncoming::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
+ WaybillWriteOffs::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
+ ReplacementInvoice::updateAll(['status' => WriteOffsErp::STATUS_CONFIRM], ['shift_transfer_id' => $id]);
+ } elseif ($action === 'save') {
+ $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_READY_TO_ACCEPT]);
+ } elseif ($action === 'recalculate') {
+ EqualizationRemains::setData($model);
+ Yii::$app->session->setFlash('success', 'Таблица замен успешно перерасчитана');
+ } elseif ($action === 'rejection') {
+ EqualizationRemains::setData($model);
+ $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS]);
+ WaybillWriteOffs::deleteAll(['shift_transfer_id' => $model->id]);
+ WaybillIncoming::deleteAll(['shift_transfer_id' => $model->id]);
+ } elseif ($action === 'resume') {
+ $model->updateAttributes(['status_id' => ShiftTransfer::STATUS_OF_THE_FORMATION_OF_SURPLUSES_AND_SHORTAGES]);
+ EqualizationRemains::updateData(Yii::$app->request->post()['ShiftTransfer']['equalizationRemains'], $id);
+ WaybillIncoming::setData($model);
+ WaybillWriteOffs::setData($model);
+ }
+
+ $transaction->commit();
+ } catch (\Exception $e) {
+ $transaction->rollBack();
+ throw $e;
}
return $this->redirect(Yii::$app->request->referrer);