From: Vladimir Fomichev Date: Tue, 19 Aug 2025 15:49:41 +0000 (+0300) Subject: Добавление баланса X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=f7fb3a2b20d4a3f957eb4bd88271e6ad679171f8;p=erp24_rep%2Fyii-erp24%2F.git Добавление баланса --- diff --git a/erp24/controllers/WriteOffsErpController.php b/erp24/controllers/WriteOffsErpController.php index b698189b..c9b63b65 100644 --- a/erp24/controllers/WriteOffsErpController.php +++ b/erp24/controllers/WriteOffsErpController.php @@ -4,6 +4,7 @@ namespace app\controllers; use Exception; use Yii; +use yii\db\Query; use yii\helpers\ArrayHelper; use yii\web\Response; use yii\widgets\ActiveForm; @@ -394,6 +395,24 @@ class WriteOffsErpController extends Controller } $listProductsDict = Products1c::getProducts1cByTypeWithPrice(); + $listProductsID = array_keys($listProductsDict); + $storeIds = CityStore::find()->select('id')->where(['visible' => 1])->column(); + + $balanceArr = (new Query()) + ->select([ + 'b.product_id', + 'store_id' => 'ex.entity_id', + 'b.quantity' + ]) + ->from('balances as b') + ->leftJoin('export_import_table ex', 'ex.export_val = b.store_id') + ->where(['b.product_id' => $listProductsID]) + ->andWhere(['ex.entity_id' => $storeIds]) + ->all(); + $balanceDict = []; + foreach ($balanceArr as $row) { + $balanceDict[$row['product_id']][$row['store_id']]= $row['quantity']; + } $listCityStoreNames = CityStore::getNames($storeIds); $listCauseDict = WriteOffsProductsErp::getCauseDict($groupId); @@ -525,6 +544,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, 'errors' => $errors ]); } @@ -598,6 +618,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, 'errors' => $errors ]); } @@ -614,6 +635,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, ]; return $this->render('/write_offs_erp/create', $params); @@ -705,6 +727,25 @@ class WriteOffsErpController extends Controller $listProductsDict = Products1c::getProducts1cByTypeWithPrice(); + $listProductsID = array_keys($listProductsDict); + $storeIds = CityStore::find()->select('id')->where(['visible' => 1])->column(); + + $balanceArr = (new Query()) + ->select([ + 'b.product_id', + 'store_id' => 'ex.entity_id', + 'b.quantity' + ]) + ->from('balances as b') + ->leftJoin('export_import_table ex', 'ex.export_val = b.store_id') + ->where(['b.product_id' => $listProductsID]) + ->andWhere(['ex.entity_id' => $storeIds]) + ->all(); + $balanceDict = []; + foreach ($balanceArr as $row) { + $balanceDict[$row['product_id']][$row['store_id']]= $row['quantity']; + } + $modelWriteOffsProductsErps = ArrayHelper::getValue($model->getRelatedRecords(), 'writeOffsProductsErps'); $listCityStoreNames = CityStore::getNames($storeIds); @@ -872,6 +913,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, 'errors' => $errors ]); } @@ -960,6 +1002,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, 'errors' => $e->getMessage() ]); } @@ -977,6 +1020,7 @@ class WriteOffsErpController extends Controller 'listCityStoreNames' => $listCityStoreNames, 'listCauseDict' => $listCauseDict, 'listProductsDict' => $listProductsDict, + 'balanceDict' => $balanceDict, ]; return $this->render('/write_offs_erp/update', $params); diff --git a/erp24/records/WriteOffsProductsErp.php b/erp24/records/WriteOffsProductsErp.php index 7df6bb64..9fbf1d84 100644 --- a/erp24/records/WriteOffsProductsErp.php +++ b/erp24/records/WriteOffsProductsErp.php @@ -303,7 +303,7 @@ class WriteOffsProductsErp extends \yii\db\ActiveRecord */ public function getQuantity(): float { - return $this->quantity; + return (float)($this->quantity ?? 0); } /** @@ -312,7 +312,7 @@ class WriteOffsProductsErp extends \yii\db\ActiveRecord */ public function setQuantity(float $quantity): object { - $this->quantity = $quantity; + $this->quantity = $quantity === null ? 0.0 : (float)$quantity; return $this; } diff --git a/erp24/views/write_offs_erp/_form.php b/erp24/views/write_offs_erp/_form.php index dba747d1..3afabcb7 100644 --- a/erp24/views/write_offs_erp/_form.php +++ b/erp24/views/write_offs_erp/_form.php @@ -7,6 +7,7 @@ use unclead\multipleinput\MultipleInput; use unclead\multipleinput\MultipleInputColumn; use yii\helpers\Html; use yii\helpers\Url; +use yii\web\JsExpression; use yii\widgets\ActiveForm; @@ -25,15 +26,28 @@ use yii_app\records\WriteOffsProductsErp; /** @var array $listCityStoreNames */ /** @var array $listCauseDict */ /** @var array $listProductsDict */ +/** @var array $balanceDict */ +/** @var bool $isUpdate */ /** @var yii_app\records\WriteOffsProductsErp $modelsProducts */ /** @var yii_app\forms\MultipleUploadForm $multipleUploadForm */ - +$this->registerJs( + 'window.balanceDict = ' . json_encode($balanceDict, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES) . ';', + \yii\web\View::POS_HEAD +); $this->registerJsFile('/js/validate/validateForm.js', ['position' => \yii\web\View::POS_END]); $this->registerJsFile('/js/heic2any.min.js', ['position' => \yii\web\View::POS_END]); $this->registerJsFile('/js/heic_to_jpg_replace.js', ['position' => \yii\web\View::POS_END]); +$this->registerJsFile('/js/write-offs-erp/_form.js', [ + 'depends' => [ + \yii\web\JqueryAsset::class, + \kartik\select2\Select2Asset::class, + ], + 'position' => \yii\web\View::POS_END, +]); + ?>