Files
xk-api-yii/common/forms/DrugRollBackForm.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' => $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;
}
}