erp/app/admin/logic/operation/OpurchaseclassLogic.php
2024-05-11 16:50:16 +08:00

221 lines
6.2 KiB
PHP

<?php
namespace app\admin\logic\operation;
use app\common\model\operation\Opurchaseclass;
use app\common\logic\BaseLogic;
use app\common\model\goods\Goods;
use app\common\model\merchant\Merchant;
use app\common\model\opurchase\OpurchaseGoodsOffer;
use app\common\model\opurchase\Opurchaseinfo;
use app\common\model\retail\Cashierclass;
use app\common\model\supplier\Supplier;
use support\Log;
use think\facade\Db;
/**
* 采购订单逻辑
* Class OpurchaseclassLogic
* @package app\admin\logic\operation
*/
class OpurchaseclassLogic extends BaseLogic
{
/**
* @notes 添加采购订单
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/04/27 11:26
*/
public static function add(array $params): bool
{
Db::startTrans();
try {
Opurchaseclass::create([]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 编辑采购订单
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/04/27 11:26
*/
public static function edit(array $params): bool
{
Db::startTrans();
try {
Opurchaseclass::where('id', $params['id'])->update([]);
Db::commit();
return true;
} catch (\Exception $e) {
Db::rollback();
self::setError($e->getMessage());
return false;
}
}
/**
* @notes 删除采购订单
* @param array $params
* @return bool
* @author likeadmin
* @date 2024/04/27 11:26
*/
public static function delete(array $params): bool
{
return Opurchaseclass::destroy($params['id']);
}
/**
* @notes 获取采购订单详情
* @param $params
* @return array
* @author likeadmin
* @date 2024/04/27 11:26
*/
public static function detail($params): array
{
$id=$params['id'];
$data = Opurchaseclass::findOrEmpty($params['id'])->toArray();
if ($data) {
$data['goods_info'] = Opurchaseinfo::where('pid', $params['id'])->limit(25)->select()->each(function ($item)use($id) {
$find = Goods::where('id', $item['goods'])->with('unitName')->find();
if ($find) {
$item['goods_name'] = $find['name'];
$item['unit_name'] = $find['unit_name'];
}
$where=[
'goods_id'=>$item['goods'],
'order_id'=>$id,
'is_adopt'=>1
];
$item['nums_count']=OpurchaseGoodsOffer::where($where)->sum('nums');
});
$data['merchant_name'] = Merchant::where('mer_id', $data['merchant'])->value('mer_name');
}
return $data;
}
/**
* @notes 采购订单子订单详情
* @param $id
* @return array
* @author likeadmin
* @date 2024/04/27 11:26
*/
public static function sub_detail($id, $page_no): array
{
$order_arr = Opurchaseclass::where('id', $id)->value('order_arr');
$data = [];
if ($order_arr) {
$order_arr = explode(',', $order_arr);
$order_arr_count = count($order_arr);
$offset = ($page_no - 1) * $order_arr_count;
$paged_items = array_slice($order_arr, $offset, $order_arr_count);
if (!$paged_items) {
return [];
}
$list = Cashierclass::whereIn('id', $order_arr)->select()?->toArray();
$data['count'] = $order_arr_count;
$data['lists'] = $list;
$data['page_no'] = $page_no;
$data['page_siz'] = 15;
}
return $data;
}
/**
* @notes 推送供应商商品
* @param $params
* @return bool
* @date 2024/04/27 11:26
*/
public static function createSupplierGoods($goods)
{
try {
$sys_labels = Goods::where('id', $goods['goods'])->value('sys_labels');
$supplier_arr = [];
$goods_offer = [];
if ($sys_labels) {
$sys_labels_arr = explode(',', $sys_labels);
foreach ($sys_labels_arr as $k => $v) {
if ($v > 0) {
$supplier = Supplier::whereLike('sys_labels', "%," . $v . ",%")->field('id,mer_name')->find();
if ($supplier) {
$supplier_arr[] = $supplier;
}
}
}
}
foreach ($supplier_arr as $k => $v) {
$goods_offer[] = [
'supplier_id' => $v['supplier'],
'goods_id' => $v['goods'],
'price' => 0,
'need_num' => $v['nums']
];
}
if ($goods_offer) {
$res = OpurchaseGoodsOffer::insertAll($goods_offer);
if ($res) {
return true;
}
}
} catch (\Exception $e) {
self::setError($e->getMessage());
Log::error('添加采购订单报价失败:' . $e->getMessage());
return false;
}
}
/**
* @notes 设置采纳商品
* @param $params
* @return bool
* @date 2024/04/27 11:26
*/
public static function goodsOfferUpdate($id,$type=0,$notes='',$nums=0)
{
try {
$find=OpurchaseGoodsOffer::where('id', $id)->find();
if($type==0){
if($find &&$find['price']==0){
self::setError('报价未设置');
return false;
}
$find->is_adopt=1;
}else{
$find->is_storage=1;
$find->notes=$notes;
$find->before_nums=$find->nums;
$find->nums=$nums;
}
$res= $find->save();
if($res){
return true;
}
return false;
} catch (\Exception $e) {
self::setError($e->getMessage());
return false;
}
}
}