Jelajahi Sumber

Merge branch 'wugg-dev' of wugg/phpstock into version1.5

wugg 2 tahun lalu
induk
melakukan
942123674b

+ 2 - 1
app/admin/controller/After.php

@@ -1562,6 +1562,7 @@ class After extends Base
 
         Db::startTrans();
         try {
+        	pay_log($old_sale['pay_id'],$old_sale['supplierNo'],$orderCode);
 //            $zx =Db::name("consult_info")->where(["infoNo"=>$zxinfo['infoNo'],"is_del"=>0])->lock(true)->find();
 //            if($zx==false){
 //                Db::rollback();
@@ -2180,7 +2181,7 @@ class After extends Base
         Db::startTrans();
         try {
 
-
+		pay_log($old_sale['pay_id'],$old_sale['supplierNo'],$orderCode);
 
             $tmp_sale_price = $old_sale['sale_price'];//取原价格
             $data = array_merge($old_sale, [

+ 506 - 0
app/admin/controller/InterOrder.php

@@ -0,0 +1,506 @@
+<?php
+
+
+namespace app\admin\controller;
+
+use think\facade\Db;
+use think\facade\Validate;
+use think\App;
+class InterOrder extends Base {
+	 public function __construct(App $app) {
+	 	parent::__construct($app);
+	 }
+	/**
+	* @return \think\response\Json|void
+	* @throws \think\db\exception\DataNotFoundException
+	* @throws \think\db\exception\DbException
+	* @throws \think\db\exception\ModelNotFoundException
+	 */
+	 public function list(){
+		$param = $this->request->only(["page"=>1,"size"=>10,'cgdNo'=>"","qrdNo"=>"","khNo"=>"",
+		"supplierNo"=>"","companyNo"=>"","starttime"=>"","endtime"=>"","sale_name"=>"","cgd_saler"=>""],"post","trim");
+		$where=[];
+		if($param['cgdNo']!="") $where[]=["a.cgdNo","like","%{$param['cgdNo']}%"];
+		if($param['qrdNo']!="") $where[]=["a.orderCode","like","%{$param['qrdNo']}%"];
+		if($param['khNo']!="") $where[]=["b.customer_code","like","%{$param['khNo']}%"];
+		if($param['companyNo']!="") $where[]=["c.companyNo","like","%{$param['companyNo']}%"];
+		if($param['supplierNo']!="") $where[]=["c.supplierNo","like","%{$param['supplierNo']}%"];
+		if($param['starttime']!="") $where[]=["a.addtime",">=",date("Y-m-d 00:00:00",strtotime($param['starttime']))];
+		if($param['endtime']!="") $where[]=["a.addtime","<=",date("Y-m-d 23:59:59",strtotime($param['endtime']))];
+		if($param['sale_name']!="") $where[]=["b.apply_name","like","%{$param['sale_name']}%"];
+		if($param['cgd_saler']!="") $where[]=["c.cgder","like","%{$param['cgd_saler']}%"];
+
+		$count= Db::name("inter_order")->alias("a")
+		->leftJoin("qrd_caixiao b","a.orderCode=b.sequenceNo")
+		->leftJoin("cgd_caixiao c","a.cgdNo=c.s.cgdNo")->where($where)->count();
+		$total =ceil($count/$param['size']);
+		$page =$total>=$param['page'] ? intval($param['page']): intval($total);
+		$list= Db::name("inter_order")->alias("a")
+		->leftJoin("qrd_info b","a.orderCode=b.orderCode")
+		->leftJoin("cgd_info c","a.cgdNo=c.sequenceNo")
+		->field("a.id,
+		a.orderCode,
+		b.customer_name ,
+		b.customer_code,
+		c.companyName,
+		c.companyNo,
+		a.rate*100 as cgd_tax,
+		c.supplier_name,
+		c.supplierNo,
+        b.poNo,
+        a.addtime,
+        b.apply_name as sale_name,
+        c.cgder as cgd_saler,
+        c.depart as cgd_depart,
+        b.depart as sale_depart,
+        b.goodName,
+        b.tax,
+        b.sale_price,
+        b.good_num ,
+        b.total_price,
+        b.order_type,
+        b.cat_name,
+        a.cgdNo,
+        b.workNo")
+           ->json(["cat_name"])
+		->where($where)->page($page,intval($param['size']))
+		->select()->toArray();
+
+		return app_show(0,"获取成功",["list"=>$list,"count"=>$count]);
+	 }
+
+	 public function create(){
+	 	$param =$this->request->only(["token"=>"",
+	 		"saleid"=>"","companyNo"=>'',"poNo"=>"","workNo"=>"","khNo"=>"","order_type"=>"","goodName"=>"",
+	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","mobile"=>"","addr"=>"","contactor"=>"",
+	 		"buyerid"=>"","sendtime"=>"","cat_id"=>'',"supplierNo"=>"","cgd_tax"=>""
+	 		],"post");
+	 	$valid =Validate::rule([
+			"token"=>"require|max:255|min:1",
+	 		"saleid|业务员名称"=>"require|number|gt:0",
+	 		"companyNo|业务公司编号"=>"require|max:255|min:1",
+	 		"supplierNo|业务公司编号"=>"require|max:255|min:1",
+	 		"poNo|PO编号"=>"require|max:255|min:1",
+	 		"workNo|单据编号"=>"require|max:255|min:1",
+	 		"khNo|客户公司编号"=>"require|max:255|min:1",
+	 		"order_type|订单类型"=>"require|number|in:[1,2,3]",
+	 		"goodName|商品名称"=>"require|max:255|min:1",
+	 		"tax|税率"=>"require|number|gt:0",
+	 		"goodNum|商品数量"=>"require|number|gt:0",
+	 		"goodPrice|商品单价"=>"require|number|gt:0",
+	 		"mobile|联系人电话"=>"require|number|mobile",
+	 		"contactor|联系人"=>"require|max:255|min:1",
+	 		"addr|收货地址"=>"require|max:255|min:1",
+	 		"buyerid|销售员"=>"require|number|gt:0",
+	 		"sendtime|发货时间"=>"require|date",
+	 		"cat_id|商品分类ID"=>"require|number|gt:0",
+	 		"cgd_tax|采购毛利率"=>"require|number|gt:0",
+	 	]);
+	 	if($valid->check($param)==false)return error_show(1004,$valid->getError());
+		$qrdcode =makeNo("QRD");
+		$cgddcode =makeNo("CGD");
+		$goodCode =makeNo("SPU");
+		$customer =Db::name("customer_info")->where('companyNo', "=", $param['khNo'])->find();
+		$supplierName =Db::name("supplier")->where('code', "=", $param['supplierNo'])->value("name","");
+		$companyName =Db::name("supplier")->where('code', "=", $param['companyNo'])->value("name","");
+		$param["cgd_tax"]=$param["cgd_tax"]/100;
+		$inter=[
+			"cgdNo"=>$cgddcode,
+			"orderCode"=>$qrdcode,
+			"rate"=>$param["cgd_tax"],
+			"apply_id"=>$this->uid,
+			"apply_name"=>$this->uname,
+			"mobile"=>$param['mobile'],
+			"contactor"=>$param['contactor'],
+			"sendtime"=>$param['sendtime'],
+			"addr"=>$param['addr'],
+		];
+		$saleinfo= GetInfoById($param['token'],['id'=>$param['saleid']]);
+        if(empty($to)||$to['code']!=0){
+            return app_show(1002,"销售员工信息不存在");
+        }
+        $buyer= GetInfoById($param['token'],['id'=>$param['buyerid']]);
+        if(empty($to)||$to['code']!=0){
+            return app_show(1002,"采购员工信息不存在");
+        }
+		$qrd =['orderCode' => $qrdcode,
+                'apply_id' => $param['saleid'] ?? 0,
+                'apply_name' => $saleinfo['data']['nickname'] ?? '',
+                'order_type' => 2,
+                'order_source' =>1,
+                'platform_id' => '',
+                'good_code' => $goodCode,
+                'cat_id' => $param['cat_id'] ?? 0,
+                'cat_name' => json_encode($this->_get_cat_list($param['cat_id']), JSON_UNESCAPED_UNICODE),
+                'good_name' => $param['goodName'] ?? '',
+                'good_num' => $param['goodNum'] ?? 0,
+                'good_type' =>1,
+                'is_activity' =>  0,
+                'is_stock' =>  0,
+                'arrive_time' => '',
+                'customer_code' => $customer['companyNo'] ?? '',
+                'customer_name' => $customer['companyName'] ?? '',
+                'supplierNo' => $param['companyNo'],
+                'supplier_name' => $companyName ?? '',
+                'zxNo' =>  '',
+                'proof_id' =>  0,
+                'proof_url' => '',
+                'other_orderNo' =>'' ,
+                'paytime' => '',
+                'workNo' => $param['workNo'] ?? '',
+                'poNo' => $param['poNo'] ?? '',
+                'use_order' => '',
+                'good_weight' => 0,
+                'addtime' => date("Y-m-d H:i:s"),
+                'noble_metal' => '',
+                'brand' =>'',
+                'unit' => '',
+                'cost_desc' => '',
+                'noble_weight' => 0,
+                'tax' => $param['tax'],
+                'lead_time' => 0,
+                'depart' => get_company_name_by_uid($param['saleid'] ?? 0) ?? '',
+                'cgdNo' => $cgddcode,
+                'pay_id' =>0,
+                'oldCode' => 0,
+                'origin_price' =>  0,
+	            'sale_price' => round($param['goodPrice'], 4),
+	            'total_price' =>round($param['goodPrice']*$param['goodNum'], 4),
+	            'post_fee' =>  0,
+	            'is_diff' =>  0,
+	            'send_num' => $param['goodNum'],
+	            'wsend_num' =>  0,
+	            'th_num' => 0,
+	            'send_type' => 0,
+	            'gold_price' =>0,
+	            'cost_price' => 0,
+	            'status' => 2,
+	            'updatetime' =>date("Y-m-d H:i:s"),
+	            'delivery_day' =>  0,
+	            'th_fee' => 0,
+	            'cost_fee' => 0,
+	            'diff_fee' => 0,
+	            'diff_weight' =>  0,
+	            'send_status' =>3,
+                ];
+		$cgd=[
+				'cgdNo' => $cgddcode,
+                'bkcode' =>  '',
+                'wsm_code' =>  '',
+                'cgder' => $buyer['data']['nickname'] ?? '',
+                'cgder_id' => $param['buyerid'] ?? 0,
+                'depart' => get_company_name_by_uid($param['buyerid'] ?? 0) ?? '',
+                'qrdNo' => $qrdcode,
+                'spuCode' => $goodCode,
+                'good_name' => $param['goodName'],
+                'skuCode' =>'',
+                'good_num' => $param['goodNum'] ?? 0,
+                'cat_name' => json_encode($this->_get_cat_list($param['cat_id']), JSON_UNESCAPED_UNICODE),
+                'companyNo' => $param['companyNo'],
+                'companyName' => $companyName,
+                'supplierNo' => $param['supplierNo'],
+                'supplier_name' => $supplierName,
+                'bktime' => '',
+                'bkcreater' => '',
+                'noble_metal' =>  '',
+                'brand' => '',
+                'unit' => '',
+                'cost_desc' => '',
+                'noble_weight' => '',
+                'tax' => $param['tax'] ?? '',
+                'is_stock' =>0,
+                'delivery_day' => 0,
+                'lead_time' =>  0,
+                'is_diff' =>0,
+                'addtime' =>date("Y-m-d H:i:s"),
+                'supplier_persion' => $buyer['data']['nickname'] ?? '',
+                'supplier_persionid' =>  $param['buyerid'] ?? 0,
+                'pay_id' => 0,
+                'oldCode' => '',
+            'good_price' => round($param['goodPrice']*(1-$param['cgd_tax']), 4),
+            'total_fee' => round($param['goodNum']*$param['goodPrice']*(1-$param['cgd_tax']),4),
+            'pakage_fee' =>  0,
+            'open_fee' =>  0,
+            'cert_fee' => 0,
+            'delivery_fee' => 0,
+            'mark_fee' => 0,
+            'teach_fee' => 0,
+            'nake_fee' => 0,
+            'demo_fee' => 0,
+            'weight' => 0,
+            'diff_weight' =>0,
+            'diff_fee' => 0,
+            'gold_price' =>0,
+            'send_num' => $param['goodNum'],
+            'wsend_num' => 0,
+            'status' =>3 ,
+            'order_type' =>2,
+            'order_source' => 1,//支付渠道
+            'good_type' => 1,
+            'last_time' => '',
+            'send_type' => 1,
+            'send_status' => 3,
+            'th_num' =>  0,
+            'th_fee' =>0,
+            'updatetime' =>date("Y-m-d H:i:s"),
+              ];
+
+		$good=[
+					"spuCode" => $goodCode,
+                    "good_name" => $param['goodName'],
+                    "brand_id" => 0,
+                    "good_unit" => 0,
+                    "cat_id" => $param['cat_id'],
+                    "good_type" => 1,
+                    "moq" => 1,
+                    "customized" => 0,
+                    "tax" => $param['tax'],
+                    "supplierNo" => $param["supplierNo"],
+                    "is_auth" => 0,
+                    "craft_desc" => $param['goodName'],
+                    "good_remark" => "",
+                    "platform_id" =>0,
+                    "good_img" => '',
+                    "good_thumb_img" => "",
+                    "good_info_img" => "",
+                    "specinfo" => '',
+                    "work_day" => 0,
+                    "noble_metal" => 0,
+                    "is_gold_price" =>0,
+                    "config" => '',
+                    "other_config" => '',
+                    "weight" =>0,
+                    "good_weight" => 0,
+                    "is_diff" => 0,
+                    "supply_area" =>0,
+                    "pay_way" => 0,
+                    "send_way" => 1,
+                    "companyNo" => $param['comapnyNo'],
+                    "status" => 1,
+                    "is_del" => 0,
+                    "createrid" => $this->uid,
+                    "creater" => $this->uname,
+                    "addtime" => date("Y-m-d H:i:s"),
+                    "updatetime" => date("Y-m-d H:i:s"),
+                    'proof_type' => 0,//凭证类型
+                    'proof_url' => '',//凭证文件
+				];
+				 Db::startTrans();
+        try {
+            $a = Db::name("qrd_caixiao")->insert($qrd);
+            $d = Db::name("inter_order")->insert($inter);
+            $b = Db::name('cgd_caixiao')->insert($cgd);
+            $c = Db::name('good_zixun')->insert($good);
+            if ($a && $b && $c&&$d) {
+                Db::commit();
+                return app_show(0,'新建成功');
+            } else {
+                Db::rollback();
+                return error_show(1004,'新建失败');
+            }
+        } catch (\Exception $e) {
+            Db::rollback();
+            return error_show(1004, $e->getMessage());
+        }
+
+	 }
+
+	public function save(){
+			$param =$this->request->only(["token"=>"",
+	 		"saleid"=>"","companyNo"=>'',"poNo"=>"","workNo"=>"","khNo"=>"","order_type"=>"","goodName"=>"",
+	 		"tax"=>"","goodNum"=>"","goodPrice"=>"","mobile"=>"","addr"=>"","contactor"=>"",
+	 		"buyerid"=>"","sendtime"=>"","cat_id"=>'',"supplierNo"=>"","cgd_tax"=>"","id"=>""
+	 		],"post");
+	 	$valid =Validate::rule([
+			"token"=>"require|max:255|min:1",
+			"id|主键ID"=>"require|number|gt:0",
+	 		"saleid|业务员名称"=>"require|number|gt:0",
+	 		"companyNo|业务公司编号"=>"require|max:255|min:1",
+	 		"supplierNo|业务公司编号"=>"require|max:255|min:1",
+	 		"poNo|PO编号"=>"require|max:255|min:1",
+	 		"workNo|单据编号"=>"require|max:255|min:1",
+	 		"khNo|客户公司编号"=>"require|max:255|min:1",
+	 		"order_type|订单类型"=>"require|number|in:[1,2,3]",
+	 		"goodName|商品名称"=>"require|max:255|min:1",
+	 		"tax|税率"=>"require|number|gt:0",
+	 		"goodNum|商品数量"=>"require|number|gt:0",
+	 		"goodPrice|商品单价"=>"require|number|gt:0",
+	 		"mobile|联系人电话"=>"require|number|mobile",
+	 		"contactor|联系人"=>"require|max:255|min:1",
+	 		"addr|收货地址"=>"require|max:255|min:1",
+	 		"buyerid|销售员"=>"require|number|gt:0",
+	 		"sendtime|发货时间"=>"require|date",
+	 		"cat_id|商品分类ID"=>"require|number|gt:0",
+	 		"cgd_tax|采购毛利率"=>"require|number|gt:0",
+	 	]);
+	 	if($valid->check($param)==false)return error_show(1004,$valid->getError());
+	 	$inter_order=Db::name("inter_order")->where(["id"=>$param['id']])->findOrEmpty();
+	 	if(empty($inter_order)) return error_show(1004,"未找到订单数据");
+		$qrd_order=Db::name("qrd_caixiao")->where(["orderCode"=>$inter_order['orderCode']])->findOrEmpty();
+	 	if(empty($qrd_order)) return error_show(1004,"未找到销售单数据");
+	 	$cgd_order=Db::name("cgd_caixiao")->where(["cgdNo"=>$inter_order['cgdNo']])->findOrEmpty();
+	 	if(empty($cgd_order)) return error_show(1004,"未找到采购单数据");
+		$customer =Db::name("customer_info")->where('companyNo', "=", $param['khNo'])->find();
+		$supplierName =Db::name("supplier")->where('code', "=", $param['supplierNo'])->value("name","");
+		$companyName =Db::name("supplier")->where('code', "=", $param['companyNo'])->value("name","");
+		$param["cgd_tax"]=$param["cgd_tax"]/100;
+		$inter=[
+			"id"=>$inter_order['id'],
+			"rate"=>$param["cgd_tax"],
+			"mobile"=>$param['mobile'],
+			"contactor"=>$param['contactor'],
+			"addr"=>$param['addr'],
+			"sendtime"=>$param['sendtime'],
+			"updatetime"=>date("Y-m-d H:i:s")
+		];
+		$saleinfo= GetInfoById($param['token'],['id'=>$param['saleid']]);
+        if(empty($to)||$to['code']!=0){
+            return app_show(1002,"销售员工信息不存在");
+        }
+        $buyer= GetInfoById($param['token'],['id'=>$param['buyerid']]);
+        if(empty($to)||$to['code']!=0){
+            return app_show(1002,"采购员工信息不存在");
+        }
+		$qrd =['id' => $qrd_order['id'],
+                'apply_id' => $param['saleid'] ?? 0,
+                'apply_name' => $saleinfo['data']['nickname'] ?? '',
+                'cat_id' => $param['cat_id'] ?? 0,
+                'cat_name' => json_encode($this->_get_cat_list($param['cat_id']), JSON_UNESCAPED_UNICODE),
+                'good_name' => $param['goodName'] ?? '',
+                'good_num' => $param['goodNum'] ?? 0,
+                'customer_code' => $customer['companyNo'] ?? '',
+                'customer_name' => $customer['companyName'] ?? '',
+                'supplierNo' => $param['companyNo'],
+                'supplier_name' => $companyName ?? '',
+                'workNo' => $param['workNo'] ?? '',
+                'poNo' => $param['poNo'] ?? '',
+                'tax' => $param['tax'],
+                'depart' => get_company_name_by_uid($param['saleid'] ?? 0) ?? '',
+	            'sale_price' => round($param['goodPrice'], 4),
+	            'total_price' =>round($param['goodPrice']*$param['goodNum'], 4),
+	            'send_num' => $param['goodNum'],
+	            'updatetime' =>date("Y-m-d H:i:s")];
+		$cgd=[
+				'id' => $cgd_order['id'],
+                'cgder' => $buyer['data']['nickname'] ?? '',
+                'cgder_id' => $param['buyerid'] ?? 0,
+                'depart' => get_company_name_by_uid($param['buyerid'] ?? 0) ?? '',
+                'good_name' => $param['goodName'],
+                'good_num' => $param['goodNum'] ?? 0,
+                'cat_name' => json_encode($this->_get_cat_list($param['cat_id']), JSON_UNESCAPED_UNICODE),
+                'companyNo' => $param['companyNo'],
+                'companyName' => $companyName,
+                'supplierNo' => $param['supplierNo'],
+                'supplier_name' => $supplierName,
+                'tax' => $param['tax'] ?? '',
+                'supplier_persion' => $buyer['data']['nickname'] ?? '',
+                'supplier_persionid' =>  $param['buyerid'] ?? 0,
+            'good_price' => round($param['goodPrice']*(1-$param['cgd_tax']), 4),
+            'total_fee' => round($param['goodNum']*$param['goodPrice']*(1-$param['cgd_tax']),4),
+            'send_num' => $param['goodNum'],
+            'updatetime' =>date("Y-m-d H:i:s"),
+              ];
+				 Db::startTrans();
+        try {
+            $a = Db::name("qrd_caixiao")->save($qrd);
+            $d = Db::name("inter_order")->save($inter);
+            $b = Db::name('cgd_caixiao')->save($cgd);
+            if ($a && $b && $d) {
+                Db::commit();
+                return app_show(0,'更新成功');
+            } else {
+                Db::rollback();
+                return error_show(1004,'更新失败');
+            }
+        } catch (\Exception $e) {
+            Db::rollback();
+            return error_show(1004, $e->getMessage());
+        }
+	}
+//			"id|主键ID"=>"require|number|gt:0",
+//	 		"sale_name|业务员名称"=>"require|max:255|min:1",
+//	 		"sale_id|业务员名称"=>"require|number|gt:0",
+//	 		"companyNo|业务公司编号"=>"require|max:255|min:1",
+//	 		"supplierNo|业务公司编号"=>"require|max:255|min:1",
+//	 		"poNo|PO编号"=>"require|max:255|min:1",
+//	 		"sequenceNo|单据编号"=>"require|max:255|min:1",
+//	 		"khNo|客户公司编号"=>"require|max:255|min:1",
+//	 		"qrdType|订单类型"=>"require|number|in:[1,2,3]",
+//	 		"goodName|商品名称"=>"require|max:255|min:1",
+//	 		"tax|税率"=>"require|number|gt:0",
+//	 		"goodNum|商品数量"=>"require|number|gt:0",
+//	 		"goodPrice|商品单价"=>"require|number|gt:0",
+//	 		"mobile|联系人电话"=>"require|number|mobile",
+//	 		"contactor|联系人"=>"require|max:255|min:1",
+//	 		"addr|收货地址"=>"require|max:255|min:1",
+//	 		"buyer|销售员"=>"require|max:255|min:1",
+//	 		"buyerid|销售员"=>"require|number|gt:0",
+//	 		"sendtime|发货时间"=>"require|date",
+//	 		"cat|商品分类"=>"require|array",
+//	 		"cgd_tax|采购毛利率"=>"require|number|gt:0",
+//	 		"sale_depart|销售员部门"=>"require|max:255|min:1",
+//	 		"cgd_depart|采购员部门"=>"require|max:255|min:1",
+	  public function  info(){
+        $post=$this->request->post();
+        $id = isset($post['id'])&&$post['id']!='' ? $post['id'] :"";
+        if($id=='') return error_show(1004,"参数id 不能为空");
+        $condition = [['a.id',"=",$id]];
+        $list=Db::name('inter_order')->alias('a')->join('qrd_caixiao b','a.orderCode=b.orderCode','left')
+            ->join('cgd_caixiao c','a.cgdNo=c.cgdNo','left')->json(["cat_name"])->where($condition)
+            ->order("a.addtime desc")->field('a.id,
+            b.good_code ,
+            a.orderCode,
+            b.customer_code as khNo,
+            b.customer_name as khName,
+            c.companyName,
+            c.companyNo,
+            b.poNo,
+            b.workNo,
+            a.addtime,
+            b.apply_name as sale_name,
+            b.apply_id as saleid,
+            b.depart as sale_depart,
+            b.good_name goodName,
+            b.tax,
+            b.cat_name as cat,
+            b.sale_price goodPrice,
+            b.good_num goodNum,
+            b.total_price,
+            b.order_type,
+            c.supplier_name,
+            c.supplierNo,
+            a.cgdNo,
+            c.cgder as buyer,
+            c.cgderid as buyerid,
+            c.depart as cgd_depart,
+            a.sendtime ,
+            a.rate*100 as cgd_tax,
+            a.contactor,
+            a.mobile,
+            a.addr
+            ')->findOrEmpty();
+        if(empty($list)){
+            return error_show(1004,'未找到数据');
+        }
+        return app_show(0,"获取成功",$list);
+        }
+
+       //获取分类层级信息,id、cat_name(分类名称)和fund_code(财务核算码)
+    private function _get_cat_list($var, $data = [])
+    {
+        $str = Db::name('cat')
+            ->field('id,cat_name,fund_code,pid')
+            ->where(['id' => $var])
+            ->findOrEmpty();
+        if ($str == false) return [];
+
+        $vmn = [];
+        $vmn['id'] = $str['id'];
+        $vmn['cat_name'] = $str['cat_name'];
+        $vmn['fund_code'] = $str['fund_code'];
+        array_unshift($data, $vmn);
+        if ($str['pid'] == 0) return $data;
+        else return $this->_get_cat_list($str['pid'], $data);
+
+    }
+}

+ 33 - 61
app/admin/controller/Sale.php

@@ -51,13 +51,6 @@ class Sale extends Base
         $goodtype = isset($this->post['goodtype']) && $this->post['goodtype'] !== "" ? intval($this->post['goodtype']) : "1";
         $order_type = isset($this->post['order_type']) && $this->post['order_type'] !== "" ? intval($this->post['order_type']) : "1";
         $pay_id = isset($this->post['pay_id']) && $this->post['pay_id'] !== "" ? intval($this->post['pay_id']) : "0";
-        if($pay_id!=0){
-        	$payinfo =Db::name("pay")->where("id",$pay_id)->findOrEmpty();
-        	if(empty($payinfo)) return error_show(1004, "支付渠道信息未找到");
-        	if($payinfo['status']!=1)return error_show(1004, "支付渠道已禁用");
-        	$supplierArr =Db::name("pay_rate")->where(["pay_id"=>$pay_id,"status"=>1,"is_del"=>0])->column("companyNo");
-        	if(in_array($supplierNo,$supplierArr)) return error_show(1004, "支付渠道含有该业务公司,支付渠道无法使用!");
-        }
         $sendtype = isset($this->post['sendtype']) && $this->post['sendtype'] !== "" ? intval($this->post['sendtype']) : "";
         if ($sendtype === '') {
             return error_show(1004, "参数sendtype不能为空");
@@ -262,6 +255,7 @@ class Sale extends Base
                 'good_createrid' => $goodinfo['createrid'],
                 'good_creater' => $goodinfo['creater'],//商品创建人
             ];
+            pay_log($pay_id,$supplierNo,$orderCode);
             $paytime == "" ? "" : $data['paytime'] = $paytime;
             $datainfo = Db::name('sale')->insert($data, true);
             if ($datainfo > 0) {
@@ -471,7 +465,6 @@ class Sale extends Base
                 //处理台账
                 if (isset($standing_book_da['outCode'])) $standing_book_da['outCode'] = implode(',', $standing_book_da['outCode']);//发货单号拼接
                 Db::name('standing_book')->insert(array_merge($standing_book_da, ['addtime' => date('Y-m-d H:i:s'), 'updatetime' => date('Y-m-d H:i:s'), 'standBookNo' => makeNo('IO')]));
-
                 Db::commit();
                 return app_show(0, "咨询订单创建成功", ["order_code" => $orderCode]);
             }
@@ -1043,8 +1036,6 @@ class Sale extends Base
         $workNo = isset($this->post['workNo']) && $this->post['workNo'] != "" ? $this->post['workNo'] : "";
         $proof_type = isset($this->post['proof_type']) && $this->post['proof_type'] != "" ? intval($this->post['proof_type']) : 0;
         $proof_url = isset($this->post['proof_url']) && $this->post['proof_url'] != "" ? trim($this->post['proof_url']) : '';
-
-
         Db::startTrans();
         try {
             $zx = Db::name("consult_info")->where(["infoNo" => $zxinfo['infoNo'], "is_del" => 0])->lock(true)->find();
@@ -1107,6 +1098,7 @@ class Sale extends Base
                 'good_createrid' => $zxinfo['createrid'],
                 'good_creater' => $zxinfo['creater'],//商品创建人id
             ];
+            pay_log($zxorder['pay_id'],$companyNo,$orderCode);
             $datainfo = Db::name('sale')->insert($data, true);
             if ($datainfo > 0) {
 
@@ -1319,7 +1311,6 @@ class Sale extends Base
                 }
 
                 Db::name('standing_book')->where('infoNo', $standing_book_data['infoNo'])->update($standing_book_data);
-
                 Db::commit();
                 return error_show(0, "咨询订单创建成功", ["order_code" => $orderCode]);
             }
@@ -1374,6 +1365,7 @@ class Sale extends Base
         }
         $rm = isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
         $ri = isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
+
         Db::startTrans();
         try {
             $plan = Db::name("project_plan")->where(["planNo" => $planNo, "is_del" => 0])->lock(true)->find();
@@ -1422,27 +1414,6 @@ class Sale extends Base
                 if ($feedback['data_source'] == 1) {
 
                     $feed = $this->project_good($good, $standing_book_data);
-                    if ($feed !== true) {
-                        Db::rollback();
-                        switch ($feed) {
-                            case 1:
-                                $msg = '库存不足';
-                                break;
-                            case 2:
-                                $msg = '库存更新失败';
-                                break;
-                            case 3:
-                                $msg = '关联采购失败';
-                                break;
-                            case 4:
-                                $msg = '商品信息未找到';
-                                break;
-                            default:
-                                $msg = '咨询订单生成失败';
-
-                        }
-                        return error_show(1002, $msg);
-                    }
                 }
                 else {
 					$goodinfo = Db::name("consult_bids")->where(["spuCode" => $feedback['spuCode'], "is_del" => 0])->find();
@@ -1465,10 +1436,10 @@ class Sale extends Base
 					}
 
                     $feed = $this->project_zx($good, $standing_book_data);
-                    if ($feed == false) {
-                        Db::rollback();
-                        return error_show(1002, "咨询订单生成失败");
-                    }
+                }
+                 if ($feed != true) {
+                    Db::rollback();
+                    return error_show(1002, "项目订单生成失败");
                 }
                 $old_fk_status = $feedback['status'];
                 $fed = Db::name("project_feedback")->where($feedback)->save(['status' => 2, "updatetime" => date("Y-m-d H:i:s")]);
@@ -1580,9 +1551,10 @@ class Sale extends Base
     {
         $goodinfo = Db::name("consult_bids")->where(["spuCode" => $data['spuCode'], "is_del" => 0])->find();
         if ($goodinfo == false) {
-            return false;
+           throw new Exception("未找到咨询商品信息");
         }
         $orderCode = makeNo("QR");
+        pay_log($data['pay_id'],$data['companyNo'],$orderCode);
         $supplier_temp_info = Db::name('supplier')
             ->field('id,person,personid')
             ->where('code',$goodinfo['supplierNo'])
@@ -1684,14 +1656,14 @@ class Sale extends Base
             ]);
             $bol = $this->createCgd($cgd, $standing_book_data);
             if ($bol == false) {
-                return false;
+                 throw new Exception("采购单信息生成失败");
             }
             $bidstatus = $goodinfo['status'];
             $goodinfo['status'] = 6;
             $goodinfo['updatetime'] = date("Y-m-d H:i:s");
             $sa = Db::name("consult_bids")->save($goodinfo);
             if ($sa == false) {
-                return false;
+                 throw new Exception("咨询单信息更新失败");
             }
             //修改状态,添加待办
             ActionLog::logAdd($this->post['token'], [
@@ -1703,7 +1675,7 @@ class Sale extends Base
 
             $zxorder = Db::name("consult_order")->where(["zxNo" => $goodinfo["zxNo"], "is_del" => 0])->find();
             if ($zxorder == false) {
-                return false;
+                throw new Exception("咨询单信息更新失败");
             }
             $limt = [
                 "spuCode" => $goodinfo['spuCode'],
@@ -1745,13 +1717,13 @@ class Sale extends Base
             ];
             $good = Db::name("good_zixun")->insert($limt);
             if (!$good) {
-                return false;
+                throw new Exception("咨询单商品录入失败");
             }
             if ($data['sendtype'] == 1 && !empty($data['addrlist'])) {
                 $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
                     ->find();
                 if ($order == false) {
-                    return false;
+                   throw new Exception("采购单信息未找到");
                 }
                 $i = 1;
                 foreach ($data['addrlist'] as $value) {
@@ -1805,7 +1777,7 @@ class Sale extends Base
                         ];
                         $ou = Db::name("order_out")->insertGetId($out);
                         if ($ou == false) {
-                            return false;
+                          throw new Exception("发货单生成失败");
                         }
                         //修改状态,添加待办
                         ActionLog::logAdd($this->post['token'], [
@@ -1828,7 +1800,7 @@ class Sale extends Base
                         $order['send_num'] += $value['receipt_quantity'];
                         $order['wsend_num'] -= $value['receipt_quantity'];
                         if ($order['wsend_num'] < 0) {
-                            return false;
+                             throw new Exception("销售单未发货数量不足");
                         }
                         $ups = Db::name("order_num")->save($order);
                         if ($ups) {
@@ -1842,14 +1814,14 @@ class Sale extends Base
                             ];
                             $sen = Db::name("order_send")->save($tep);
                             if ($sen == false) {
-                                return false;
+                              throw new Exception("采购单与发货单关联失败");
                             }
 
                             $standing_book_data['outCode'][] = $outCode;
                         }
 
                     } else {
-                        return false;
+                        throw new Exception("地址信息录入失败");
                     }
                 }
             }
@@ -1873,11 +1845,11 @@ class Sale extends Base
             ->field("a.*,b.skuCode,b.platform_code")->find();
 
         if ($good == false) {
-            return 4; //商品信息未找到
+            throw new Exception("商品信息未找到");
         }
         $goodlass = Db::name("good_ladder")->where(["skuCode" => $data['skuCode'], "is_del" => 0, "status" => 1])->where([["min_num", "<=", $data['good_num']]])->order("min_num desc")->find();
         if ($goodlass == false) {
-            return 4;//商品信息未找到
+            throw new Exception("商品售价阶梯信息未找到");
         }
         $sale_price = $goodlass['sale_price'];
         $origin_price = 0;
@@ -1885,7 +1857,8 @@ class Sale extends Base
             $origin = Db::name("good_nake")->where([["spuCode", "=", $data['spuCode']], ["min_num", "<=", $data['good_num']],
                 ["is_del", "=", 0]])->order("min_num desc")->find();
             if ($origin == false) {
-                return 4;//商品信息未找到
+
+                 throw new Exception("商品售价成本阶梯信息未找到");
             }
             $origin_price = $origin['nake_total'];
         }
@@ -1902,8 +1875,7 @@ class Sale extends Base
         }
 
         $orderCode = makeNo("QR");
-
-
+		pay_log($data['pay_id'],$data['companyNo'],$orderCode);
         $supplier_temp_info = Db::name('supplier')
             ->field('id,person,personid')
             ->where('code',$good['supplierNo'])
@@ -2006,7 +1978,8 @@ class Sale extends Base
             if ($good['is_stock'] == 0) {
                 $bol = $this->createCgd($cgd, $standing_book_data);
                 if ($bol == false) {
-                    return 3;//关联采购失败
+//                    return 3;//关联采购失败
+                    throw new Exception("采购单生成失败");
                 }
             } else {
 
@@ -2028,7 +2001,7 @@ class Sale extends Base
                 $stock_num = array_sum(array_column($stock_arr,"balance_num"));
                 $stockid = array_unique(array_column($stock_arr,"stockid"));
 	            if($stock_num < $data['good_num']){
-	                return 1;
+	               throw new Exception("商品库存不足");
 	            }
 //                $bol = $this->RelaCgd(['orderCode' => $orderCode, "good_num" => $data['good_num'], "spuCode" => $good['spuCode'], "companyNo" => $data['companyNo'], "cost_fee" => $goodlass['cost_fee'], 'order_type' => $cgd['order_type'], 'order_source' => $cgd['order_source']], $standing_book_data);
 //                if ($bol == false) {
@@ -2038,7 +2011,7 @@ class Sale extends Base
 
                      $stockinfo =GoodStockInfo::OrderBn($orderCode,$stockid,$data['good_num']);
                         if($stockinfo==false){
-                        	      return 2; //库存不足
+                        	       throw new Exception("订单库存信息生成失败");
                         }
                     //商品变动日志表,good_log_code字段存储采购单号
 //                    $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 2, 'stock' => $data['good_num'], "stock_name" => "usable_stock"];
@@ -2083,7 +2056,7 @@ class Sale extends Base
 	                        $order = Db::name("order_num")->where(["orderCode" => $orderCode, "status" => 1])->where([["wsend_num", ">=", 0]])
 	                            ->lock(true)->find();
 	                        if ($order == false) {
-	                            return 3;
+	                              throw new Exception("采购单信息未找到");
 	                        }
 
 	                        //改变编码规则,将原来的outCode后两位换成序列号
@@ -2093,8 +2066,7 @@ class Sale extends Base
 	                        $order['send_num'] += $num;
 	                        $or = Db::name("order_num")->save($order);
 	                        if ($or == false) {
-
-	                            return 3;
+	                           throw new Exception("可发货数量更新失败");
 	                        }
 	                        $tep = [
 	                            "cgdNo" => $order['cgdNo'],
@@ -2107,12 +2079,12 @@ class Sale extends Base
 	                        $sen = Db::name("order_send")->save($tep);
 	                        if ($sen == false) {
 
-	                            return 3;
+	                           throw new Exception("采购单关联发货单信息失败");
 	                        }
 	                        $cgdinfo = Db::name("purchease_order")->where(["cgdNo" => $order['cgdNo']])->find();
 	                        if ($cgdinfo == false) {
 
-	                            return 4;
+	                             throw new Exception("采购单信息未找到");
 	                        }
                         }
                         $out = [
@@ -2136,7 +2108,7 @@ class Sale extends Base
                         ];
                         $ou = Db::name("order_out")->insertGetId($out);
                         if ($ou == false) {
-                            return 0;
+                             throw new Exception("发货单生成失败");
                         } else {
                             $standing_book_data['outCode'][] = $outCode;
                             //修改状态,添加待办
@@ -2167,7 +2139,7 @@ class Sale extends Base
                             ]);
                         }
                     } else {
-                        return false;
+                       throw new Exception("地址信息生成失败");
                     }
                 }
             }

+ 23 - 0
app/common.php

@@ -1477,4 +1477,27 @@ if(!function_exists('is_discount')){
 		}
 		return $bol;
 	}
+}
+
+if(!function_exists("pay_log")){
+	function pay_log($pay_id,$companyNo,$orderCode){
+        if($pay_id!=0){
+        	$payinfo =Db::name("pay")->where("id",$pay_id)->findOrEmpty();
+        	if(empty($payinfo)) throw new Exception( "支付渠道信息未找到");
+        	if($payinfo['status']!=1)throw new Exception( "支付渠道已禁用");
+        	$supplierArrs =Db::name("pay_rate")->where(["pay_id"=>$pay_id,"status"=>1,"is_del"=>0])->field("pay_id,companyNo,companyName,rate,weight,is_cgd,is_qrd")->select()->toArray();
+        	if(empty($supplierArrs)) throw new Exception( "支付渠道未配置");
+        	$supplierArr= array_column("companyNo",$supplierArrs);
+        	if(in_array($companyNo,$supplierArr)) throw new Exception( "支付渠道含有该业务公司,支付渠道无法使用!");
+			$paylog=[];
+              foreach ($supplierArrs as $item){
+						$item['orderCode'] =$orderCode;
+						$item['apply_name'] =$this->uname;
+						$item['apply_id'] =$this->uid;
+						$paylog[]=$item;
+             }
+            $payin = Db::name("pay_log")->insertAll($paylog);
+            if($payin ==false) throw new Exception("支付渠道记录失败");
+        }
+	}
 }