|
@@ -7,12 +7,14 @@ use App\Model\ConstructionProductInfo;
|
|
|
use App\Model\InOutRecord;
|
|
|
use App\Model\InvoiceOrder;
|
|
|
use App\Model\InvoiceOrderInfo;
|
|
|
+use App\Model\Product;
|
|
|
use App\Model\ProductInventory;
|
|
|
use App\Model\PurchaseOrder;
|
|
|
use App\Model\PurchaseOrderInfo;
|
|
|
use App\Model\ReturnExchangeOrder;
|
|
|
use App\Model\ReturnExchangeOrderProductInfo;
|
|
|
use App\Model\SalesOrder;
|
|
|
+use App\Model\SalesOrderProductInfo;
|
|
|
use App\Model\Setting;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
@@ -67,6 +69,11 @@ class CheckService extends Service
|
|
|
self::six => 'recordReturnExchangeOrder'
|
|
|
];
|
|
|
|
|
|
+ //自动生成合同
|
|
|
+ public static $create = [
|
|
|
+ self::three => 'createPurchaseOrderSales', //分社合同生成
|
|
|
+ ];
|
|
|
+
|
|
|
public function confirmInvoiceOrder($data){
|
|
|
$model = InvoiceOrder::where('id',$data['id'])
|
|
|
->where('del_time',0)
|
|
@@ -148,6 +155,57 @@ class CheckService extends Service
|
|
|
return [true,''];
|
|
|
}
|
|
|
|
|
|
+ public function createPurchaseOrderSales($data, $order){
|
|
|
+ if(empty($order['is_purchase_to_main'])) return [true, ''];
|
|
|
+ $prefix = SalesOrder::$prefix[SalesOrder::Model_type_two];
|
|
|
+ $order_number = OrderNoService::createSalesOrderNumber($prefix);
|
|
|
+ $product = PurchaseOrderInfo::where('del_time',0)
|
|
|
+ ->where('purchase_order_id',$order['id'])
|
|
|
+ ->get()->toArray();
|
|
|
+ if(empty($product)) return [true, ''];
|
|
|
+
|
|
|
+ $model = new SalesOrder();
|
|
|
+ $model->model_type = SalesOrder::Model_type_two;
|
|
|
+ $model->sales_order_type = SalesOrder::Order_type_one;
|
|
|
+ $model->order_number = $order_number;
|
|
|
+ $model->crt_id = $order['crt_id'];
|
|
|
+ $model->depart_id = $order['depart_id'];
|
|
|
+ $model->top_depart_id = $order['top_depart_id'];
|
|
|
+ $model->other_fee = $order['other_fee'];
|
|
|
+ $model->discount_fee = $order['discount_fee'];
|
|
|
+ $model->contract_fee = $order['purchase_total'];
|
|
|
+ $model->save();
|
|
|
+
|
|
|
+ $pro = Product::whereIn('id',array_column($product,'product_id'))
|
|
|
+ ->select('cost','depart_price','id','retail_price')
|
|
|
+ ->get()->toArray();
|
|
|
+ $pro = array_column($pro,null,'id');
|
|
|
+
|
|
|
+ $insert = [];
|
|
|
+ foreach ($product as $value){
|
|
|
+ $tmp = $pro[$value['product_id']] ?? [];
|
|
|
+ $insert[] = [
|
|
|
+ 'sales_order_id' => $model->id,
|
|
|
+ 'product_id' => $value['product_id'],
|
|
|
+ 'number' => $value['number'],
|
|
|
+ 'price' => $value['price'],
|
|
|
+ 'title' => $value['title'],
|
|
|
+ 'code' => $value['code'],
|
|
|
+ 'size' => $value['size'],
|
|
|
+ 'unit' => $value['unit'],
|
|
|
+ 'bar_code' => $value['bar_code'],
|
|
|
+ 'cost' => $tmp['cost'] ?? 0,
|
|
|
+ 'retail_price' => $tmp['retail_price'] ?? 0,
|
|
|
+ 'depart_price' => $tmp['depart_price'] ?? 0,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ $bool = SalesOrderProductInfo::insert($insert);
|
|
|
+ if(! $bool) return [false,'合同生成失败!'];
|
|
|
+
|
|
|
+ return [true,''];
|
|
|
+ }
|
|
|
+
|
|
|
public function confirmSalesOrder($data){
|
|
|
$model = SalesOrder::where('id',$data['id'])->where('del_time',0)->first();
|
|
|
if(empty($model)) return [false, '合同不存在或已被删除'];
|
|
@@ -275,6 +333,8 @@ class CheckService extends Service
|
|
|
//具体方法
|
|
|
$function = self::$opt_case[$data['opt_case']] ?? "";
|
|
|
$record = self::$record[$data['opt_case']] ?? "";
|
|
|
+ $create = self::$create[$data['opt_case']] ?? "";
|
|
|
+
|
|
|
try{
|
|
|
DB::beginTransaction();
|
|
|
|
|
@@ -301,6 +361,15 @@ class CheckService extends Service
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //自动生成合同
|
|
|
+ if($create) {
|
|
|
+ $bool = $this->$create($data, $order);
|
|
|
+ if(! $bool) {
|
|
|
+ DB::rollBack();
|
|
|
+ return [false, $msg];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
DB::commit();
|
|
|
return [true, ''];
|
|
|
}catch (\Throwable $exception){
|