];
}
- public static function updateData($equalizationRemains, int $shift_id) {
+ public static function updateData($equalizationRemains, int $shift_id)
+ {
self::deleteAll(['shift_id' => $shift_id]);
if (!is_array($equalizationRemains) || empty($equalizationRemains)) {
'balance_self_cost' => $er['balance_self_cost'],
]);
- if ($equalizationRemain->validate())
+ if ($equalizationRemain->validate()) {
$equalizationRemain->save();
- else {var_dump($equalizationRemain->errors);die();}
+ } else {
+ var_dump($equalizationRemain->errors);
+ die();
+ }
}
}
+ public static function setData($shiftTransfer)
+ {
+ $plus = ShiftRemains::find()
+ ->andWhere(['shift_transfer_id' => $shiftTransfer->id])
+ ->andWhere(['!=', 'fact_and_1c_diff', 0])
+ ->andWhere(['>', 'fact_and_1c_diff', 0]);
+
+ $minus = ShiftRemains::find()
+ ->andWhere(['shift_transfer_id' => $shiftTransfer->id])
+ ->andWhere(['!=', 'fact_and_1c_diff', 0])
+ ->andWhere(['<', 'fact_and_1c_diff', 0])
+ ->all();
+
+ foreach ($minus as $m) {
+ $replacement = Product1cReplacement::find()
+ ->andWhere(['guid' => $m->product_guid])
+ ->select('guid_replacement')
+ ->scalar();
+ $p = $plus->andWhere(['product_guid' => $replacement])->one();
+
+ $model = new EqualizationRemains();
+ $model->setAttributes([
+ 'shift_id' => $shiftTransfer->id,
+ 'product_id' => $m->product_guid,
+ 'product_count' => $m->fact_and_1c_diff,
+ 'product_price' => $m->retail_price,
+ 'product_self_cost' => $m->self_cost,
+ 'product_replacement_id' => $p->product_guid,
+ 'product_replacement_count' => $m->fact_and_1c_diff,
+ 'product_replacement_price' => $p->retail_price,
+ 'product_replacement_self_cost' => $p->self_cost,
+ 'balance' => $m->fact_and_1c_diff * ($p->retail_price - $m->retail_price),
+ 'balance_self_cost' => $m->fact_and_1c_diff * ($p->self_cost - $m->self_cost)
+ ]);
+ if ($model->validate()) {
+ $model->save();
+ } elseif ($model->getErrors()) {
+ var_dump($model->errors);
+ die();
+ }
+ }
+
+ }
+
/**
* @return \yii\db\ActiveQuery
*/
$form = \yii\widgets\ActiveForm::begin();
if (in_array($shiftTransfer->status_id, [ShiftTransfer::STATUS_ID_TRANSFER_ACTIONS, ShiftTransfer::STATUS_ID_INPUT_FACT_REMAINS])
&& Yii::$app->user->id === $shiftTransfer->end_shift_admin_id) {
- echo $form->field($shiftTransfer, 'equalizationRemains')->widget(MultipleInput::class, [
- 'min' => 0,
- 'max' => 100,
- 'columns' => [
- [
- 'name' => 'product_id',
- 'title' => 'Заменяемый товар',
- 'type' => Select2::class,
- 'options' => [
- 'data' => array_merge(
- ['text' => 'Выберите товар'],
- $products
- ),
- 'pluginOptions' => [
- 'allowClear' => true,
- ],
- 'pluginEvents' => [
- 'change' => new \yii\web\JsExpression('function() { setProductData.call(this); }'),
- ],
- ],
- 'value' => function ($model) {
- return $model->product->id ?? '';
- },
- ],
- [
- 'name' => 'product_price',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'title' => 'Цена товара',
- 'value' => function ($data) {
- return $data['product_price'] ?? '';
- },
- ],
- [
- 'name' => 'product_self_cost',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'title' => 'Себестоимость товара',
- 'value' => function ($data) {
- return $data['product_self_cost'] ?? '';
- },
- ],
- [
- 'name' => 'product_replacement_id',
- 'title' => 'Замещающий товар',
- 'type' => Select2::class,
- 'options' => [
- 'data' => [],
- 'options' => [
- 'placeholder' => 'Выберите товар',
- 'class' => 'form-control',
- ],
- 'pluginOptions' => [
- 'allowClear' => true,
- ],
- 'pluginEvents' => [
- 'select2:select' => new \yii\web\JsExpression('function() {
- setReplacementPriceData.call(this);
- }'),
- ],
- ],
- 'value' => function ($model) {
- return $model->productReplacement->name ?? '';
- },
- ],
- [
- 'name' => 'product_replacement_price',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'title' => 'Цена замещающего товара',
- 'value' => function ($data) {
- return $data['product_replacement_price'] ?? '';
- },
- ],
- [
- 'name' => 'product_replacement_self_cost',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'title' => 'Себестоимость замещаемого товара',
- 'value' => function ($data) {
- return $data['product_replacement_self_cost'] ?? '';
- },
- ],
- [
- 'name' => 'product_replacement_count',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 1,],
- 'title' => 'Количество',
- 'value' => function ($data) {
- return $data['product_replacement_count'] ?? '';
- }
- ],
- [
- 'name' => 'balance',
- 'title' => 'Баланс',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'value' => function ($data) {
- return $data['balance'] ?? '';
- },
- ],
- [
- 'name' => 'balance_self_cost',
- 'title' => 'Разница в сумме (Себестоиомость)',
- 'type' => BaseColumn::TYPE_TEXT_INPUT,
- 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
- 'value' => function ($data) {
- return $data['balance_self_cost'] ?? '';
- },
- ],
- ],
- 'addButtonPosition' => MultipleInput::POS_FOOTER,
- 'addButtonOptions' => [
- 'class' => 'btn btn-success visible',
- ],
- 'removeButtonOptions' => [
- 'class' => 'btn btn-danger visible',
- ],
- 'iconSource' => 'fa',
- ])->label('Таблица возможных замен');
+// echo $form->field($shiftTransfer, 'equalizationRemains')->widget(MultipleInput::class, [
+// 'min' => 0,
+// 'max' => 100,
+// 'columns' => [
+// [
+// 'name' => 'product_id',
+// 'title' => 'Заменяемый товар',
+// 'type' => Select2::class,
+// 'options' => [
+// 'data' => array_merge(
+// ['text' => 'Выберите товар'],
+// $products
+// ),
+// 'pluginOptions' => [
+// 'allowClear' => true,
+// ],
+// 'pluginEvents' => [
+// 'change' => new \yii\web\JsExpression('function() { setProductData.call(this); }'),
+// ],
+// ],
+// 'value' => function ($model) {
+// return $model->product->id ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_price',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'title' => 'Цена товара',
+// 'value' => function ($data) {
+// return $data['product_price'] ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_self_cost',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'title' => 'Себестоимость товара',
+// 'value' => function ($data) {
+// return $data['product_self_cost'] ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_replacement_id',
+// 'title' => 'Замещающий товар',
+// 'type' => Select2::class,
+// 'options' => [
+// 'data' => [],
+// 'options' => [
+// 'placeholder' => 'Выберите товар',
+// 'class' => 'form-control',
+// ],
+// 'pluginOptions' => [
+// 'allowClear' => true,
+// ],
+// 'pluginEvents' => [
+// 'select2:select' => new \yii\web\JsExpression('function() {
+// setReplacementPriceData.call(this);
+// }'),
+// ],
+// ],
+// 'value' => function ($model) {
+// return $model->productReplacement->name ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_replacement_price',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'title' => 'Цена замещающего товара',
+// 'value' => function ($data) {
+// return $data['product_replacement_price'] ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_replacement_self_cost',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'title' => 'Себестоимость замещаемого товара',
+// 'value' => function ($data) {
+// return $data['product_replacement_self_cost'] ?? '';
+// },
+// ],
+// [
+// 'name' => 'product_replacement_count',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 1,],
+// 'title' => 'Количество',
+// 'value' => function ($data) {
+// return $data['product_replacement_count'] ?? '';
+// }
+// ],
+// [
+// 'name' => 'balance',
+// 'title' => 'Баланс',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'value' => function ($data) {
+// return $data['balance'] ?? '';
+// },
+// ],
+// [
+// 'name' => 'balance_self_cost',
+// 'title' => 'Разница в сумме (Себестоиомость)',
+// 'type' => BaseColumn::TYPE_TEXT_INPUT,
+// 'options' => ['type' => 'number', 'step' => 0.01, 'readonly' => true,],
+// 'value' => function ($data) {
+// return $data['balance_self_cost'] ?? '';
+// },
+// ],
+// ],
+// 'addButtonPosition' => MultipleInput::POS_FOOTER,
+// 'addButtonOptions' => [
+// 'class' => 'btn btn-success visible',
+// ],
+// 'removeButtonOptions' => [
+// 'class' => 'btn btn-danger visible',
+// ],
+// 'iconSource' => 'fa',
+// ])->label('Таблица возможных замен');
echo $btn = Html::submitButton('Сохранить', [
'class' => 'btn btn-primary float-right',