初始化仓库
This commit is contained in:
93
common/forms/DrugRollBackForm.php
Normal file
93
common/forms/DrugRollBackForm.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
namespace common\forms;
|
||||
|
||||
use common\core\BaseModel;
|
||||
use common\models\ChineseRepice;
|
||||
use common\models\DrugStoreDrug;
|
||||
use common\models\GranularRepice;
|
||||
use common\models\Prescription;
|
||||
use common\models\ProductOrderItems;
|
||||
use common\models\WestRepice;
|
||||
use yii\base\Exception;
|
||||
use yii\helpers\Json;
|
||||
|
||||
class DrugRollBackForm extends BaseModel
|
||||
{
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
public function rollBack($id,$order_type = 1){
|
||||
if($order_type == 1){
|
||||
$prescription = Prescription::findOne([
|
||||
'id' => $id,
|
||||
'is_deleted' => 0
|
||||
]);
|
||||
|
||||
if($prescription->wr_ids){
|
||||
$repice = WestRepice::find()->where([
|
||||
'in', 'id', explode(',', $prescription->wr_ids)
|
||||
])->select('content,number')->asArray()->all();
|
||||
foreach($repice as $v){
|
||||
$content = Json::decode($v['content']);
|
||||
$drug = DrugStoreDrug::findOne(['id' => $content['id']]);
|
||||
if($drug && $drug->frozen_number > $v['number']){
|
||||
$drug->stock = $drug->stock + $v['number'];
|
||||
$drug->frozen_number = $drug->frozen_number - $v['number'];
|
||||
$drug->saveOrFail();
|
||||
}
|
||||
}
|
||||
} elseif($prescription->cr_ids) {
|
||||
$repice = ChineseRepice::find()->where([
|
||||
'in', 'id', explode(',', $prescription->cr_ids)
|
||||
])->select('content,dosage')->asArray()->all();
|
||||
foreach($repice as $value){
|
||||
$content = Json::decode($value['content']);
|
||||
foreach($content as $v){
|
||||
$drug = DrugStoreDrug::findOne(['id' => $content['drug_id']]);
|
||||
$drugNumber = $v['number'] * $value['dosage'];
|
||||
if($drug && $drug->frozen_number > $drugNumber){
|
||||
$drug->stock = $drug->stock + $drugNumber;
|
||||
$drug->frozen_number = $drug->frozen_number - $drugNumber;
|
||||
$drug->saveOrFail();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$repice = GranularRepice::find()->where([
|
||||
'in', 'id', explode(',', $prescription->gr_ids)
|
||||
])->select('content,dosage')->asArray()->all();
|
||||
foreach($repice as $value){
|
||||
$content = Json::decode($value['content']);
|
||||
foreach($content as $v){
|
||||
$drug = DrugStoreDrug::findOne(['id' => $content['drug_id']]);
|
||||
$drugNumber = $v['number'] * $value['dosage'];
|
||||
if($drug && $drug->frozen_number > $drugNumber){
|
||||
$drug->stock = $drug->stock + $drugNumber;
|
||||
$drug->frozen_number = $drug->frozen_number - $drugNumber;
|
||||
$drug->saveOrFail();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$items = ProductOrderItems::find()->where([
|
||||
'product_order_id' => $id
|
||||
])->select('drug_id,number')->asArray()->all();
|
||||
foreach($items as $v){
|
||||
$drug = DrugStoreDrug::findOne(['id' => $v['drug_id']]);
|
||||
if($drug && $drug->frozen_number > $v['number']){
|
||||
$drug->stock = $drug->stock + $v['number'];
|
||||
$drug->frozen_number = $drug->frozen_number - $v['number'];
|
||||
$drug->saveOrFail();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user