mirror of
https://gitee.com/ShopeX/OMS
synced 2026-05-06 06:36:02 +08:00
【优化】实收退导入界面
【新增】快捷菜单功能入口 【新增】爱库存电子面单获取
This commit is contained in:
@@ -31,31 +31,69 @@ class wms_event_trigger_logistics_data_electron_aikucun extends wms_event_trigge
|
||||
|
||||
public function getDirectSdf($arrDelivery, $arrBill, $shop) {
|
||||
$delivery = $arrDelivery[0];
|
||||
if(empty($arrBill)) {
|
||||
|
||||
if (empty($arrBill)) {
|
||||
$this->needRequestId[] = $delivery['delivery_id'];
|
||||
} else {
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['b_id']);
|
||||
}
|
||||
|
||||
$dOrder = $this->getDeliveryOrder($this->needRequestId);
|
||||
$order_bn = $dOrder[0]['order_bn'];
|
||||
$shop_type = $dOrder[0]['shop_type'];
|
||||
if($shop_type != 'aikucun'){
|
||||
$deliveryItems = $this->getDeliveryItems($delivery['delivery_id']);
|
||||
|
||||
if (empty($shop)) {
|
||||
$shop = [];
|
||||
$branch = app::get('ome')->model('branch')->db_dump($delivery['branch_id']);
|
||||
|
||||
list(, $mainland) = explode(':', $branch['area']);
|
||||
list($province, $city, $area) = explode('/', $mainland);
|
||||
|
||||
$shop['shop_name'] = $branch['name'];
|
||||
$shop['province'] = $province;
|
||||
$shop['city'] = $city;
|
||||
$shop['area'] = $area;
|
||||
$shop['street'] = '';
|
||||
$shop['address_detail'] = $branch['address'];
|
||||
$shop['default_sender'] = $branch['uname'];
|
||||
$shop['mobile'] = $branch['mobile'];
|
||||
$shop['tel'] = $branch['phone'];
|
||||
$shop['zip'] = $branch['zip'];
|
||||
}
|
||||
|
||||
$orders = app::get('ome')->model('orders')->getList('total_amount,shop_type,order_bn,custom_mark,mark_text,order_id', array('order_bn|in' => $delivery['order_bns']));
|
||||
|
||||
if (empty($orders) || $orders[0]['shop_type'] != 'aikucun') {
|
||||
return false;
|
||||
}
|
||||
|
||||
$primary_bn = uniqid('oet');
|
||||
$orderIdArr = array_column($orders, 'order_id');
|
||||
$orderExtend = app::get('ome')->model('order_extend')->getList('*', ['order_id|in' => $orderIdArr]);
|
||||
$orderExtend = array_column($orderExtend, null, 'order_id');
|
||||
|
||||
$total_amount = 0;
|
||||
foreach ($orders as $k => $order) {
|
||||
$total_amount += $order['total_amount'];
|
||||
$shop['shop_type'] = $order['shop_type'];
|
||||
|
||||
if ($orderExtend[$order['order_id']]) {
|
||||
$orders[$k]['order_extend'] = [
|
||||
'extend_field' => json_decode($orderExtend[$order['order_id']]['extend_field'], 1),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
$dlyCorp = app::get('ome')->model('dly_corp')->dump(array('corp_id' => $delivery['logi_id']));
|
||||
app::get('ome')->model('dly_corp_channel')->getChannel($dlyCorp, array($delivery));
|
||||
|
||||
$sdf = parent::getDirectSdf($arrDelivery, $arrBill, $shop);
|
||||
$sdf['primary_bn'] = $delivery['delivery_bn'];
|
||||
$sdf['delivery'] = $delivery;
|
||||
$sdf['delivery_item'] = $deliveryItems;
|
||||
$sdf['shop'] = $shop;
|
||||
$sdf['dly_corp'] = $dlyCorp;
|
||||
$sdf['total_amount'] = $total_amount;
|
||||
$sdf['order'] = $orders;
|
||||
|
||||
$sdf = parent::getDirectSdf($arrDelivery, $arrBill, $shop);
|
||||
$sdf['primary_bn'] = $primary_bn;
|
||||
$sdf['order_bn'] = $order_bn;
|
||||
$sdf['delivery'] = $delivery;
|
||||
return $sdf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,8 +35,8 @@ class wms_event_trigger_logistics_data_electron_dewu extends wms_event_trigger_l
|
||||
if (empty($arrBill)) {
|
||||
$this->needRequestId[] = $delivery['delivery_id'];
|
||||
} else {
|
||||
$this->needRequestId[] = $arrBill[0]['log_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['log_id']);
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['b_id']);
|
||||
}
|
||||
|
||||
$sdf = parent::getDirectSdf($arrDelivery, $arrBill, $shop);
|
||||
|
||||
@@ -69,8 +69,8 @@ class wms_event_trigger_logistics_data_electron_kuaishou extends wms_event_trigg
|
||||
$deliveryExtend = array();
|
||||
foreach($arrBill as $bill) {
|
||||
$tmp = $dlyExtend;
|
||||
$this->needRequestId[] = $bill['log_id'];
|
||||
$tmp['delivery_bn'] = $this->setChildRqOrdNo($dlyExtend['delivery_bn'], $bill['log_id']);
|
||||
$this->needRequestId[] = $bill['b_id'];
|
||||
$tmp['delivery_bn'] = $this->setChildRqOrdNo($dlyExtend['delivery_bn'], $bill['b_id']);
|
||||
$deliveryExtend[] = $tmp;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -32,8 +32,8 @@ class wms_event_trigger_logistics_data_electron_meituan4bulkpurchasing extends w
|
||||
if (empty($arrBill)) {
|
||||
$this->needRequestId[] = $delivery['delivery_id'];
|
||||
} else {
|
||||
$this->needRequestId[] = $arrBill[0]['log_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['log_id']);
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['b_id']);
|
||||
}
|
||||
|
||||
$deliveryItems = $this->getDeliveryItems($delivery['delivery_id']);
|
||||
|
||||
@@ -40,8 +40,8 @@ class wms_event_trigger_logistics_data_electron_wxshipin extends wms_event_trigg
|
||||
if (empty($arrBill)) {
|
||||
$this->needRequestId[] = $delivery['delivery_id'];
|
||||
} else {
|
||||
$this->needRequestId[] = $arrBill[0]['log_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['log_id']);
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['b_id']);
|
||||
}
|
||||
|
||||
$deliveryItems = $this->getDeliveryItems($delivery['delivery_id']);
|
||||
|
||||
@@ -120,8 +120,8 @@ class wms_event_trigger_logistics_data_electron_xhs extends wms_event_trigger_lo
|
||||
if (empty($arrBill)) {
|
||||
$this->needRequestId[] = $delivery['delivery_id'];
|
||||
} else {
|
||||
$this->needRequestId[] = $arrBill[0]['log_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['log_id']);
|
||||
$this->needRequestId[] = $arrBill[0]['b_id'];
|
||||
$delivery['delivery_bn'] = $this->setChildRqOrdNo($delivery['delivery_bn'], $arrBill[0]['b_id']);
|
||||
}
|
||||
|
||||
$deliveryItems = $this->getDeliveryItems($delivery['delivery_id']);
|
||||
|
||||
@@ -75,8 +75,8 @@ class wms_event_trigger_logistics_data_electron_youzan extends wms_event_trigger
|
||||
$deliveryExtend = array();
|
||||
foreach($arrBill as $bill) {
|
||||
$tmp = $dlyExtend;
|
||||
$this->needRequestId[] = $bill['log_id'];
|
||||
$tmp['delivery_bn'] = $this->setChildRqOrdNo($dlyExtend['delivery_bn'], $bill['log_id']);
|
||||
$this->needRequestId[] = $bill['b_id'];
|
||||
$tmp['delivery_bn'] = $this->setChildRqOrdNo($dlyExtend['delivery_bn'], $bill['b_id']);
|
||||
$deliveryExtend[] = $tmp;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="addlogino">
|
||||
<form method='post' action='<{$request_uri}>' id='relate-delivery-form'>
|
||||
<form method='get' action='<{$request_uri}>' id='relate-delivery-form'>
|
||||
<input type="hidden" name="delivery_id" value="<{$delivery_id}>">
|
||||
</form>
|
||||
</div>
|
||||
@@ -195,4 +195,4 @@ function formSubmit() {
|
||||
|
||||
doRun();
|
||||
$('startPrint').hide();
|
||||
</script>
|
||||
</script>
|
||||
|
||||
105
app/wms/view/admin/delivery/express_aikucun.html
Normal file
105
app/wms/view/admin/delivery/express_aikucun.html
Normal file
@@ -0,0 +1,105 @@
|
||||
<{capture name="header"}>
|
||||
<style>
|
||||
.order-box{ height:auto; padding:10px; margin:5px 20px; border:1px solid #ddd}
|
||||
.order-box li{ padding:3px 0}
|
||||
.sorder-box li{ padding:3px 3px; font-size: 13px;}
|
||||
.order-box td{ padding:3px 5px}
|
||||
</style>
|
||||
<{/capture}>
|
||||
<script type="text/javascript">
|
||||
var err = <{$err}>;
|
||||
if (err==true){
|
||||
new Dialog(new Element("div.tableform",'<div class="division">部分发货单已被合并或者拆分</div><div class="table-action"><{button label="关闭" onclick="re_finder();"}></div>'),{
|
||||
title:'提示',
|
||||
width:230,
|
||||
height:130,
|
||||
modal:true,
|
||||
resizeable:false});
|
||||
}
|
||||
|
||||
function re_finder(){
|
||||
opener.finderGroup['<{$env.get.finder_id}>'].unselectAll();
|
||||
opener.finderGroup['<{$env.get.finder_id}>'].refresh.delay(400,opener.finderGroup['<{$env.get.finder_id}>']);
|
||||
window.close();
|
||||
}
|
||||
|
||||
var count = <{$count}>;
|
||||
var ExpressCheck = {
|
||||
hasOnePrint: '<{$hasOnePrint}>',
|
||||
|
||||
alertMsg: function() {
|
||||
if(this.hasOnePrint > 0) {
|
||||
if(confirm('您的选择含有已打印快递单,你确定要重复打印吗?')==false) {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
checkConfirm: function() {
|
||||
if(this.hasOnePrint > 0) {
|
||||
return confirm('您的选择含有已打印快递单,请核对快递面单上的单号和收货人姓名是否对应正确!');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
ExpressCheck.alertMsg();
|
||||
</script>
|
||||
<{ if $err=='false' }>
|
||||
<div class="">
|
||||
<div id='information' class="error" style="display:none; font-weight:700;"></div>
|
||||
<div id='content' class="order-box" style="display:none"></div>
|
||||
<div id="formContent" class="order-box">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
<h2><font color="red"><{$logi_name}></font> 打印 <font color="red"><{$count}></font> 份快递单</h2>
|
||||
<{if $extend_message}>
|
||||
<h2 class="notice" style="font-size: 20px;"><{$extend_message}></h2>
|
||||
<{/if}>
|
||||
|
||||
<div id ="printPreview" class="note">
|
||||
<div style="padding:5px;margin-bottom: 8px;" id="printPreview_1">
|
||||
<{ if $delibery_bill_flag }>
|
||||
<{button label="打印快递单" id="onlyprint_btn" type="button" class="btn btn-primary"}>
|
||||
<{ else }>
|
||||
<{button label="打印快递单" id="doprint_btn" class="btn-primary" }>
|
||||
<{ /if }>
|
||||
<{button label="打印预览" id="preview_btn" class="btn-primary" style="display:none" }>
|
||||
<span id="printerSpan"></span>
|
||||
</div>
|
||||
<span id="printPreview_3" style="display:none;font-size:14px;font-weight:bold;">
|
||||
<span id="printPreview_3_msg">无法打印</span>
|
||||
<{button label="关闭页面" id="printPreview_close" class="btn-primary" }>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="dly_printer_box" style="overflow: auto; position: relative;">
|
||||
<div id="dly_printer_div" style="float:left;width: 80%;" ></div>
|
||||
<div id="dly_printer" style="float:right;width:19%;"></div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
<{ if $errIds }>
|
||||
var alertMsg = '';
|
||||
<{ foreach from=$errIds item=cid }>
|
||||
alertMsg = alertMsg + "<{$errBns[$cid]}>:" + "<{$errInfo[$cid]}> <br/>" ;
|
||||
alertMsg = alertMsg + '';
|
||||
<{/foreach}>
|
||||
alertMsg = alertMsg + '<br/>以上发货单在本次打印列表中已被剔除,请在处理后重新打印。';
|
||||
$('information').style.display='';
|
||||
if ($('information').innerHTML != '') {
|
||||
$('information').innerHTML = $('information').innerHTML + alertMsg;
|
||||
} else {
|
||||
$('information').innerHTML = alertMsg;
|
||||
}
|
||||
<{ /if }>
|
||||
</script>
|
||||
<{include file="admin/delivery/include/template_aikucun.html" app="wms"}>
|
||||
<{ /if }>
|
||||
|
||||
194
app/wms/view/admin/delivery/include/template_aikucun.html
Normal file
194
app/wms/view/admin/delivery/include/template_aikucun.html
Normal file
@@ -0,0 +1,194 @@
|
||||
<textarea id="template_select" name="template_select" style="display:none">
|
||||
<{$printTmpl.template_select}>
|
||||
</textarea>
|
||||
<textarea id="template_data" name="template_data" style="display:none">
|
||||
<{if $printTmpl.template_data}>
|
||||
<{$printTmpl.template_data}>
|
||||
<{/if}>
|
||||
</textarea>
|
||||
<input type="hidden" value="<{$printTmpl.custom_area_url}>" />
|
||||
<textarea id="jsondata_newdata" style="display:none">
|
||||
<{$jsondata}>
|
||||
</textarea>
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
Ex_Loader('<{$env.BASE_URL}>/app/logisticsmanager/statics/js/printer.js?v=20260331',function(){
|
||||
var printerOpt = {};
|
||||
var waitPrintTime = 10;
|
||||
var isPrintWaybill = false;
|
||||
var waitPreviewGenerate = '预览生成中.......';
|
||||
var optionsData = JSON.decode($('jsondata_newdata').get('value'));
|
||||
var jsonPacket = {};
|
||||
try {
|
||||
if (optionsData[0] && optionsData[0].json_packet) {
|
||||
jsonPacket = JSON.decode(optionsData[0].json_packet.replace(/“/g, '"'));
|
||||
}
|
||||
} catch (e) {}
|
||||
var options = {
|
||||
data:optionsData,
|
||||
billVersion: (jsonPacket && jsonPacket.billVersion != null) ? jsonPacket.billVersion : 2,
|
||||
template:"<{$printTmpl.template_url}>",
|
||||
custom_template_url:"<{$printTmpl.custom_area_url}>",
|
||||
custom_data:JSON.decode($('template_select').get('value')),
|
||||
onGetPrinters:function(data){
|
||||
if(!data.printers || data.printers.length == 0) {
|
||||
alert(data.msg ? data.msg : '没有打印机');
|
||||
return null;
|
||||
}
|
||||
var temp = '<select id="printerlist" name="printerlist" class="x-input-select inputstyle" style="width:130px;">';
|
||||
var hasDefault = false;
|
||||
Object.each(data.printers,function(i,index){
|
||||
if (i.name.contains("<{$express_company_no}>")) {
|
||||
hasDefault = i.name
|
||||
}
|
||||
});
|
||||
Object.each(data.printers,function(i,index){
|
||||
var selected = '';
|
||||
|
||||
if (hasDefault && i.name == hasDefault) {
|
||||
selected = ' selected="selected" ';
|
||||
}
|
||||
if(!hasDefault && i.name == data.defaultPrinter){
|
||||
selected = ' selected="selected" ';
|
||||
}
|
||||
|
||||
temp+='<option value="'+i.name+'" ' + selected + '>'+i.name+'</option>';
|
||||
});
|
||||
temp+='</select>';
|
||||
$('printerSpan').set('html', temp);
|
||||
},
|
||||
onError:function(data){
|
||||
var msg = (typeof data == 'object' && data.errmsg) ? data.errmsg : '与爱库存打印组件通信失败,确认是否已安装并打开爱库存组件,然后刷新页面';
|
||||
$('printPreview_3_msg').setHTML(msg);
|
||||
$('printPreview_3').style.display = 'block';
|
||||
},
|
||||
onClose:function(){
|
||||
$$('printPreview_3_msg').setHTML('与爱库存打印组件连接断开,请重启爱库存打印组件,然后刷新页面');
|
||||
},
|
||||
onOpen:function(){
|
||||
printerObj.getPrinters();
|
||||
},
|
||||
onPreview:function(data) {
|
||||
if(data.status != 'success') {
|
||||
alert(data.msg);
|
||||
}
|
||||
if(data.previewImage) {
|
||||
if($('dly_printer_div').getHTML() == waitPreviewGenerate) {
|
||||
$('dly_printer_div').setHTML('');
|
||||
}
|
||||
var aTaskId = data.taskID.split('_');
|
||||
data.previewImage.each(function(item, index, all) {
|
||||
var previewDiv = document.createElement('div');
|
||||
previewDiv.style.margin = '5px 10px 5px 10px';
|
||||
previewDiv.style.border = '1px solid';
|
||||
previewDiv.style.float = 'left';
|
||||
previewDiv.className = 'task-' + aTaskId[0];
|
||||
previewDiv.setHTML('<img src="' + item + '" width="400px" height="720px" />');
|
||||
var nextIndex = '.task-'+(parseInt(aTaskId[0])+1);
|
||||
if($E(nextIndex)) {
|
||||
previewDiv.inject($E(nextIndex), 'before');
|
||||
} else {
|
||||
previewDiv.inject($('dly_printer_div'));
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
onPrintSuccess:function(data){
|
||||
printFinishShow(data);
|
||||
},
|
||||
onPrintFailure:function(data){
|
||||
printFinishShow(data);
|
||||
}
|
||||
};
|
||||
|
||||
function printFinishShow(data) {
|
||||
var oHtml = $('dly_printer').getHTML();
|
||||
for (var i=0,len = data.printStatus.length; i<len; i++) {
|
||||
var item = data.printStatus[i];
|
||||
var dIDSplit = item.documentID.split('_', 2);
|
||||
var msg = '<br/><span style="margin: 5px;font-weight: bold;">' + (dIDSplit[0] == 1 ? '预览' : '打印') + '</span>物流单号:' + dIDSplit[1] + ' ';
|
||||
if (dIDSplit[0] == 0) {
|
||||
isPrintWaybill = false;
|
||||
}
|
||||
if (item.status == 'success') {
|
||||
oHtml += msg + '成功';
|
||||
} else {
|
||||
oHtml += msg + '失败:' + item.detail;
|
||||
}
|
||||
}
|
||||
$('dly_printer').setHTML(oHtml);
|
||||
}
|
||||
|
||||
var printerObj = initPrinter('aikucun',options);
|
||||
|
||||
if($('onlyprint_btn')) {
|
||||
$('onlyprint_btn').addEvent('click', function () {
|
||||
if(isPrintWaybill) {
|
||||
alert('打印中,请耐心等待');
|
||||
return false;
|
||||
}
|
||||
isPrintWaybill = true;
|
||||
printerObj.print.delay(waitPrintTime,printerObj,[{name:$('printerlist').value}]);
|
||||
});
|
||||
}
|
||||
var hasprintlist=[];
|
||||
if($('doprint_btn')) {
|
||||
$('doprint_btn').addEvent('click', function(){
|
||||
if(isPrintWaybill) {
|
||||
alert('打印中,请耐心等待');
|
||||
return false;
|
||||
}
|
||||
new Dialog(new Element("div.tableform",{html:'<div id="pause" class="division">正在提交...<{img app="desktop" src="loading.gif"}></div><div class="table-action"><{button label="关闭" onclick="re_finder();"}></div>'}),{
|
||||
title:'提示',
|
||||
width:230,
|
||||
height:130,
|
||||
modal:true,
|
||||
resizeable:false}
|
||||
);
|
||||
if ($('printname')) {
|
||||
var printname= $('printname').value;
|
||||
} else {
|
||||
printname= '<{$vid}>';
|
||||
}
|
||||
if (hasprintlist.length>0){
|
||||
for(var i=0;i<hasprintlist.length;i++){
|
||||
if(hasprintlist[i] == printname )
|
||||
if(confirm('您的选择含有已打印快递单,你确定要重复打印吗?')==false) {
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
hasprintlist.push(printname);
|
||||
|
||||
var printpos = '<{$printpos}>';
|
||||
new Request({url:'index.php?<{$appCtl}>&act=setPrintStatus',method:'post',
|
||||
data:{
|
||||
type:'express',
|
||||
str:printname,
|
||||
printpos:printpos
|
||||
},
|
||||
onSuccess:function(json){
|
||||
isPrintWaybill = true;
|
||||
if (json == '6003' && confirm('您的选择含有已打印快递单,你确定要重复打印吗?') == false) {
|
||||
$('pause').getParent('.dialog').retrieve('instance').close();
|
||||
return window.close();
|
||||
}
|
||||
|
||||
if (json == '6003' || json == 'true'){
|
||||
|
||||
$('pause').getParent('.dialog').retrieve('instance').close();
|
||||
printerObj.print.delay(waitPrintTime,printerObj,[{name:$('printerlist').value}]);
|
||||
|
||||
} else {
|
||||
$('pause').set('text',json);
|
||||
}
|
||||
}
|
||||
}).send();
|
||||
});
|
||||
}
|
||||
});
|
||||
$('printPreview_close').addEvent('click', function(){
|
||||
window.close();
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
Reference in New Issue
Block a user