92 lines
3.7 KiB
PHP
92 lines
3.7 KiB
PHP
<?php
|
|
|
|
namespace common\forms;
|
|
|
|
use common\core\BaseModel;
|
|
use common\models\oldDb\ChineseRepice;
|
|
use common\models\oldDb\DrugStoreDrug;
|
|
use common\models\oldDb\GranularRepice;
|
|
use common\models\oldDb\Prescription;
|
|
use common\models\oldDb\ProductOrderItems;
|
|
use common\models\oldDb\WestRepice;
|
|
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' => $v['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;
|
|
}
|
|
} |