修正获取服务包内某一药品的剩余数量计算

This commit is contained in:
2024-04-24 09:44:49 +08:00
parent ed39096790
commit 955b24a205
9 changed files with 205 additions and 66 deletions
+44 -8
View File
@@ -1487,7 +1487,7 @@ class PatientOrderService extends BaseService
return fail();
}
// 处理健康包赠送商品
// 处理健康包赠送商品-金额、数量
if ($order_inquiry['inquiry_type'] == 1 && $order_inquiry['inquiry_mode'] == 8){
// 获取问诊订单关联服务包id
$params = array();
@@ -1503,12 +1503,22 @@ class PatientOrderService extends BaseService
$amount_total = 0;
foreach ($product_datas as &$product_data){
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductRemainingQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id']);
// 获取服务包内某一药品的数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']);
// 可用数量大于处方商品数量,此情况把商品价格置为0
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity);
// 可用数量大于处方商品数量
if ($remaining_quantity >= $product_data['product_num']){
// 把商品价格置为0。金额按照0计算
$product_data['product_price'] = 0;
// 已使用数量 = 原数量+此次使用数量
$product_data['used_quantity'] = $product_data['product_num'];
}else{
// 已使用数量 = 最大可用数量;表示此服务包商品已使用完毕
$product_data['used_quantity'] = $remaining_quantity;
}
// 此处重新计算药品总金额
@@ -1674,6 +1684,28 @@ class PatientOrderService extends BaseService
$params = array();
$params['amount_id'] = $product_platform_amount['amount_id'];
ProductPlatformAmount::dec($params, 'stock', $product_data['product_num']);
// 处理健康包数据,增加使用数量
if ($order_inquiry['inquiry_type'] == 1 && $order_inquiry['inquiry_mode'] == 8){
// 获取问诊订单关联服务包id
$params = array();
$params['order_inquiry_id'] = $order_inquiry['order_inquiry_id'];
$order_service_package_inquiry = OrderServicePackageInquiry::getOne($params);
if (empty($order_service_package_inquiry)){
Db::rollBack();
return fail(HttpEnumCode::SERVER_ERROR, "订单创建失败");
}
$data = array();
$data['order_service_id'] = $order_service_package_inquiry['order_service_id'];
$data['order_product_id'] = $order_product['order_product_id'];
$data['order_product_no'] = $order_product['order_product_no'];
$data['product_item_id'] = $order_product_item['product_item_id'];
$data['product_id'] = $product_data['product_id'];
$data['used_quantity'] = $product_data['used_quantity'];
OrderServicePackageProduct::addOrderServicePackageProduct($data);
}
}
// 修改处方为已使用
@@ -2009,16 +2041,20 @@ class PatientOrderService extends BaseService
}
// 此处不检测未支付的商品订单,在创建订单时会进行数量的扣减
// 处理商品数量
// 处理商品数量、金额
$OrderServicePackageService = new OrderServicePackageService();
$amount_total = 0;
foreach ($product_datas as &$product_data){
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductRemainingQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id']);
// 获取服务包内某一药品的数量
$total_quantity = $OrderServicePackageService->getOrderServiceProductTotalQuantity($product_data['product_id']);
// 可用数量大于处方商品数量,此情况把商品价格置为0
// 获取服务包内某一药品的剩余数量
$remaining_quantity = $OrderServicePackageService->getOrderServiceProductCanUseQuantity($order_service_package_inquiry['order_service_id'],$product_data['product_id'],$total_quantity);
// 可用数量大于处方商品数量
if ($remaining_quantity >= $product_data['product_num']){
// 把商品价格置为0。金额按照0计算
$product_data['product_price'] = 0;
}