|
|
@@ -0,0 +1,276 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+namespace App\Traits;
|
|
|
+
|
|
|
+
|
|
|
+use App\Logistic;
|
|
|
+use App\OracleDOCOrderDetail;
|
|
|
+use App\OracleDOCOrderHeader;
|
|
|
+use App\OracleDOCWaveDetails;
|
|
|
+use App\Owner;
|
|
|
+use App\OwnerLogisticPrintTemplate;
|
|
|
+use Illuminate\Support\Carbon;
|
|
|
+use Illuminate\Support\Facades\Cache;
|
|
|
+
|
|
|
+trait DeliveryProcess
|
|
|
+{
|
|
|
+ use DrawImage;
|
|
|
+
|
|
|
+ // 将 base64编码 转 图片 进行修改并保存,后把修改保存的图片转为 base64编码 返回
|
|
|
+ function processing(&$params)
|
|
|
+ {
|
|
|
+ // TODO 获取模板
|
|
|
+ $owner_query = Owner::query()->selectRaw('id')->where('code', $params['owner_code']);
|
|
|
+ $logistic_query = Logistic::query()->selectRaw('id')->where('code', $params['logistic_code']);
|
|
|
+ $item = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', $owner_query)->where('logistic_id', $logistic_query)->first();
|
|
|
+ $item = $item->printTemplate;
|
|
|
+ $item->printTemplate;
|
|
|
+ $path = '';
|
|
|
+ $img = $this->getImage($params['base64'], $path);
|
|
|
+ $img = $this->draw(null, $item, $img);
|
|
|
+ $img->save($path);
|
|
|
+
|
|
|
+ $arr = [];
|
|
|
+ if (Cache::has('print-template-file-list')) {
|
|
|
+ $arr = Cache::get('print-template-file-list');
|
|
|
+ }
|
|
|
+
|
|
|
+ $arr[] = ['time' => Carbon::now(), 'path' => $path];
|
|
|
+ Cache::put('print-template-file-list', $arr);
|
|
|
+
|
|
|
+ // TODO 将文件进行base64编码
|
|
|
+ if ($fp = fopen($path, "rp", 0)) {
|
|
|
+ $gambar = fread($fp, filesize($path));
|
|
|
+ fclose($fp);
|
|
|
+ $params['base64'] = chunk_split(base64_encode($gambar));
|
|
|
+ }
|
|
|
+ $params['is_process'] = true;
|
|
|
+ return $params;
|
|
|
+ }
|
|
|
+
|
|
|
+ // $item
|
|
|
+ // 将按条件转化为
|
|
|
+ function getDeliveryInfo($item, $type): ?array
|
|
|
+ {
|
|
|
+ if (in_array($type, ['TB', '', 'PDD', 'SF'])) return $this->getDocOrderDeliveryInfo($item);
|
|
|
+ else if (in_array($type, ['JD', 'SFQHD'])) return $this->getDocOrderInfo($item);
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+
|
|
|
+ // TB PDD
|
|
|
+ function getDocOrderDeliveryInfo($docOrderDelivery)
|
|
|
+ {
|
|
|
+ // 承运商
|
|
|
+ $logistic_name = (function () use ($docOrderDelivery) {
|
|
|
+ $logistic = Logistic::query()->where('code', $docOrderDelivery->docOrderHeader['carrierid'])->first();
|
|
|
+ return $logistic['name'] ?? '';
|
|
|
+ })();
|
|
|
+ // 波次
|
|
|
+ $wave_count = (function () use ($docOrderDelivery) {
|
|
|
+ return OracleDOCWaveDetails::query()->where('waveno', $docOrderDelivery->docOrderHeader['waveno'])->count();
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ // 订单商品总数
|
|
|
+ $sum = (function () use ($docOrderDelivery) {
|
|
|
+ return OracleDOCOrderDetail::query()->where('orderno', $docOrderDelivery->docOrderHeader['ordenro'])->sum('qtyAllocated_each');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 备注
|
|
|
+ list($remark1, $remark2, $remark3) = (function () use ($docOrderDelivery) {
|
|
|
+ switch ($docOrderDelivery->docOrderHeader['customerid'] ?? '') {
|
|
|
+ case 'BOAO':
|
|
|
+ return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
|
|
|
+ case 'LINGFEI':
|
|
|
+ return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
|
|
|
+ case 'WEIXI1':
|
|
|
+ return ['售后电话13816946227', '', ''];
|
|
|
+ default:
|
|
|
+ return ['', '', ''];
|
|
|
+ }
|
|
|
+ })();
|
|
|
+
|
|
|
+ // 大头笔
|
|
|
+ $H_EDI_15 = $docOrderDelivery->docOrderHeader['H_EDI_15'];
|
|
|
+
|
|
|
+ // 仓库
|
|
|
+ $wh = (function () use ($docOrderDelivery) {
|
|
|
+ $customerid = $docOrderDelivery->docOrderHeader['customerid'] ?? '';
|
|
|
+ if (strstr('泗砖', $customerid)) return '泗砖宝石仓';
|
|
|
+ if (strstr('武乡', $customerid)) return '武乡宝石仓';
|
|
|
+ if (strstr('九干', $customerid)) return '九干宝石仓';
|
|
|
+ return '宝时仓';
|
|
|
+ });
|
|
|
+
|
|
|
+ // whaddr 仓库地址
|
|
|
+ $whaddr = (function () use ($docOrderDelivery) {
|
|
|
+ $peo = $docOrderDelivery->docOrderHeader->oracleBASCustomer['address1'];
|
|
|
+ if (strstr($peo, '九干')) return '上海上海市松江区九干路1300号';
|
|
|
+ if (strstr($peo, '武乡')) return '上海嘉定区徐行镇武乡路9号';
|
|
|
+ if (strstr($peo, '泗砖')) return '上海嘉定区徐行镇武乡路9号';
|
|
|
+ return '宝时仓';
|
|
|
+ });
|
|
|
+
|
|
|
+ $consigneeid = $docOrderDelivery->docOrderHeader['consigneeid'];
|
|
|
+
|
|
|
+ // 城镇 收货
|
|
|
+ $raddr = (function () use ($docOrderDelivery) {
|
|
|
+ return ($docOrderHeader['c_province'] ?? '') . ' ' . ($docOrderHeader['c_city'] ?? '') . ' ' . ($docOrderHeader['c_address2'] ?? '');
|
|
|
+ })();
|
|
|
+
|
|
|
+ // 韵达特殊处理
|
|
|
+ $yd = (function () use ($docOrderDelivery) {
|
|
|
+ $carrierid = $docOrderDelivery->docOrderHeader['carrierid'];
|
|
|
+ if ($carrierid !== "YUNDA") return '';
|
|
|
+ if (in_array($carrierid, ['上海', '上海市'])) return 'A';
|
|
|
+ if (in_array($carrierid, ['江苏', '江苏省', '浙江', '浙江省'])) return 'B';
|
|
|
+ if (in_array($carrierid, ['北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'])) return 'C';
|
|
|
+ if (in_array($carrierid, [
|
|
|
+ '上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '北京', '北京市', '安徽', '安徽省', '山东', '河南', '江西', '湖南', '湖北', '山东省', '河南省', '江西省', '湖南省', '湖北省'
|
|
|
+ ])) return 'D';
|
|
|
+ return '';
|
|
|
+ });
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'waveno' => $docOrderDelivery->docOrderHeader['owner'], // 波次
|
|
|
+ 'print_sum' => '总打印数' . ($count ?? 0) . '行号#' . $docOrderDelivery->docOrderHeader->oracleDOCWaveDetail['seqno'], // 订单所处波次的序号
|
|
|
+ 'count' => $sum, // 订单商品总数
|
|
|
+ 'remark1' => $remark1,
|
|
|
+ 'remark2' => $remark2,
|
|
|
+ 'remark3' => $remark3,
|
|
|
+ 'wh' => $wh,
|
|
|
+ 'whaddr' => $whaddr, // 仓库地址
|
|
|
+ 'deliveryno' => $item->docOrderHeader['deliveryno'] ?? $docOrderDelivery->docOrderHeader['soreference5'], // 快递单号
|
|
|
+ 'raddr' => $raddr, // 收货地址
|
|
|
+ 'yd' => $yd, // 韵达特殊处理
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ // SF SFQHD JD
|
|
|
+ function getDocOrderInfo($docOrderHeader)
|
|
|
+ {
|
|
|
+
|
|
|
+ $c_contact = $docOrderHeader['c_contact'];
|
|
|
+ $c_province = $docOrderHeader['c_province'];
|
|
|
+ $c_city = $docOrderHeader['c_city'];
|
|
|
+ $c_address2 = $docOrderHeader['c_address2'] ?? $docOrderHeader['c_district'];
|
|
|
+ $c_tel1 = $docOrderHeader['c_tel1'] ?? $docOrderHeader['c_tel2'];
|
|
|
+ $c_tel1 = $docOrderHeader['c_tel2'];
|
|
|
+ $issuepartyname = $docOrderHeader['issuepartyname'] ?? '宝时云仓';
|
|
|
+
|
|
|
+ $tel = (function () use ($docOrderHeader) {
|
|
|
+ if (in_array($docOrderHeader['customerid'], ['HANDA', 'BAIPING', 'JINBAOBEI', 'DUOCHOU', 'YUNKAI']) &&
|
|
|
+ in_array($docOrderHeader['issuepartyname'], ['私密渠道A', '私密渠道BP', '金宝贝启蒙', 'ATSUGI厚木', '初品公司'])) {
|
|
|
+ return '18616839461';
|
|
|
+ }
|
|
|
+ if (in_array($docOrderHeader['customerid'], ['HEDI']) &&
|
|
|
+ in_array($docOrderHeader['issuepartyname'], ['马丁'])) {
|
|
|
+ return 18811144744;
|
|
|
+ }
|
|
|
+ return '13761413262';
|
|
|
+ })();
|
|
|
+
|
|
|
+ $bas_customer = $docOrderHeader->bas_customer;
|
|
|
+
|
|
|
+ // whaddr 仓库地址
|
|
|
+ $whaddr = (function () use ($bas_customer) {
|
|
|
+ $address = $bas_customer['address1'];
|
|
|
+ if (strstr($address, '泗砖')) return '上海上海市松江区泗砖公路351号';
|
|
|
+ if (strstr($address, '武乡')) return '上海嘉定区徐行镇武乡路9号';
|
|
|
+ if (strstr($address, '九干')) return '上海上海市松江区九干路1300号';
|
|
|
+ return '';
|
|
|
+ })();
|
|
|
+
|
|
|
+ // $ordercount 订单波次的订单总数
|
|
|
+ $ordercount = (function () use ($docOrderHeader) {
|
|
|
+ return OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
|
|
|
+ })();
|
|
|
+
|
|
|
+ // orderseq 订单在波次里的序号
|
|
|
+ $orderseq = (function () use ($docOrderHeader) {
|
|
|
+ return $docOrderHeader->oracleDOCWaveDetail->seqno ?? '';
|
|
|
+ })();
|
|
|
+
|
|
|
+ // seqno
|
|
|
+ $seqno = (function () use ($docOrderHeader, $orderseq) {
|
|
|
+ $count = OracleDOCWaveDetails::query()->where('waveno', $docOrderHeader['waveno'])->count();
|
|
|
+ return '总打印数' . ($count) . " 行号#" . $orderseq;
|
|
|
+ })();
|
|
|
+
|
|
|
+ $orderno = $docOrderHeader['orderno'];
|
|
|
+ // 重量
|
|
|
+ $grossweight = $docOrderHeader->oracleDOCWaveDetail['grossweight'] ?? '';
|
|
|
+
|
|
|
+ // 备注
|
|
|
+ list($remark1, $remark2, $remark3) = (function () use ($docOrderHeader) {
|
|
|
+ switch ($docOrderHeader['customerid'] ?? '') {
|
|
|
+ case 'BOAO':
|
|
|
+ return ['易碎、易融', '不可放置自提柜!', '需当面签收!'];
|
|
|
+ case 'LINGFEI':
|
|
|
+ return ['快递小哥送货路远,风吹日晒注意安全,', '见到小主代问声好,你我共建文明家园!', ''];
|
|
|
+ case 'WEIXI1':
|
|
|
+ return ['售后电话13816946227', '', ''];
|
|
|
+ default:
|
|
|
+ return ['', '', ''];
|
|
|
+ }
|
|
|
+ })();
|
|
|
+
|
|
|
+ $number = (function () use ($docOrderHeader) {
|
|
|
+ if (in_array($docOrderHeader['userdefine1'], ['SFJR', 'SFJRDF'])) return '1';
|
|
|
+
|
|
|
+ if (in_array($docOrderHeader['userdefine1'], ['SFSY', 'SFSYDF', 'SFSYQHD'])) return '4';
|
|
|
+
|
|
|
+ if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])
|
|
|
+ && in_array($docOrderHeader['c_province'], ['西藏', '西藏自治区']))
|
|
|
+ return '4';
|
|
|
+
|
|
|
+ if (in_array($docOrderHeader['userdefine1'], ['SFTH', 'SFTHQHD'])
|
|
|
+ && !in_array($docOrderHeader['c_province'], ['西藏', '西藏自治区']))
|
|
|
+ return '68';
|
|
|
+
|
|
|
+ if ($docOrderHeader['userdefine1'] == 'SFTHDF'
|
|
|
+ && in_array($docOrderHeader['c_province'], ['上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '安徽省', '安徽', '西藏', '西藏自治区']))
|
|
|
+ return '4';
|
|
|
+
|
|
|
+ if ($docOrderHeader['userdefine1'] == 'SFTHDF'
|
|
|
+ && !in_array($docOrderHeader['c_province'], ['上海', '上海市', '江苏', '江苏省', '浙江', '浙江省', '安徽省', '安徽', '西藏', '西藏自治区']))
|
|
|
+ return '6';
|
|
|
+ })();
|
|
|
+
|
|
|
+ // js 结算方式
|
|
|
+ $js = (function () use ($docOrderHeader) {
|
|
|
+ if (in_array($docOrderHeader['userdefine1'], ['SFSYDF', 'SFTHDF'])) return "到付";
|
|
|
+ else return '季付月结';
|
|
|
+ })();
|
|
|
+
|
|
|
+ //
|
|
|
+ $jfyj = (function()use($docOrderHeader){
|
|
|
+ $base_customer = $docOrderHeader['oracleBASCustomer'];
|
|
|
+ if (in_array($docOrderHeader['userdefine1'],['SFSY','SFSYQHD','SFJR'])) return '寄付月结:0210188294';
|
|
|
+
|
|
|
+ if (in_array($docOrderHeader['userdefine1'],['SFTH','SFTHQHD'])){
|
|
|
+ if ($base_customer['udf3'] == '货安') return '寄付月结:0210321137';
|
|
|
+ if ($base_customer['udf3'] != '货安') return '寄付月结:0218877996';
|
|
|
+ }
|
|
|
+
|
|
|
+ if (in_array($docOrderHeader['userdefine1'],['SFTH','SFTHQHD'])) return '到付';
|
|
|
+ return '寄付月结:0210188294';
|
|
|
+ })();
|
|
|
+
|
|
|
+
|
|
|
+ return [
|
|
|
+ 'waveno' => $docOrderHeader['owner'],
|
|
|
+ 'print_sum' => '',
|
|
|
+ 'count' => '',
|
|
|
+ 'remark1' => $remark1,
|
|
|
+ 'remark2' => $remark2,
|
|
|
+ 'remark3' => $remark3,
|
|
|
+ 'wh' => '',
|
|
|
+ 'whaddr' => '',
|
|
|
+ 'deliveryno' => '',
|
|
|
+ 'raddr' => '',
|
|
|
+ 'yd' => '',
|
|
|
+ ];
|
|
|
+ }
|
|
|
+}
|