mirror of
https://gitee.com/ShopeX/OMS
synced 2026-04-21 12:25:30 +08:00
1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数 3. 【优化】盘点申请单确认 4. 【修复】采购退货单模拟出库失败问题 5. 【新增】订单金额客户实付与结算金额 6. 【优化】仓库发货统计报表物料名称显示 7. 【优化】自有仓储虚拟发货逻辑 8. 【修复】基础物料分类管理问题
This commit is contained in:
@@ -93,6 +93,8 @@
|
||||
var weightSet ='<{$weightSet}>';
|
||||
var weightWarn='<{$weightWarn}>';
|
||||
var logi_no_position = '<{$logi_no_position}>';
|
||||
var BASE_URL = '<{$env.BASE_URL}>';
|
||||
var currentDeliveryIsPickup = false;
|
||||
|
||||
switch(logi_no_position){
|
||||
case 'up':
|
||||
@@ -215,10 +217,13 @@ function delivery_verify(e){
|
||||
}
|
||||
}catch(e){}
|
||||
return MessageBox.error(json.msg);
|
||||
}else{
|
||||
if (json != ''){
|
||||
|
||||
json = json.filter(function(n){
|
||||
}
|
||||
if (typeof json === 'object' && json.status === 'ok'){
|
||||
currentDeliveryIsPickup = (json.is_pickup === true);
|
||||
json = '';
|
||||
}
|
||||
if (json != ''){
|
||||
json = json.filter(function(n){
|
||||
if (n.order_exists_refund != ''){
|
||||
is_confirm_delivery = true;
|
||||
refund_orders = n.order_exists_refund;
|
||||
@@ -372,23 +377,44 @@ function delivery_verify(e){
|
||||
}});
|
||||
|
||||
}else{
|
||||
|
||||
submitSend(e);
|
||||
if (currentDeliveryIsPickup) { submitSend(e); } else { $('ome_single_delivery').submit(); }
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
|
||||
submitSend(e);
|
||||
if (currentDeliveryIsPickup) { submitSend(e); } else { $('ome_single_delivery').submit(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).send();
|
||||
}
|
||||
function submitSend(e){
|
||||
$('ome_single_delivery').fireEvent('submit',{stop:$empty});
|
||||
var form = $('ome_single_delivery');
|
||||
if (form.retrieve('submiting')) return;
|
||||
var target = form.retrieve('target') || {};
|
||||
// 先触发打印(不等待),再提交 consign;打印异常也不影响 consign 提交
|
||||
var printVal = $('delivery_id').value || '';
|
||||
if (printVal) {
|
||||
try { autoCainiaoPrint(printVal); } catch (err) {}
|
||||
}
|
||||
if (target.onRequest) target.onRequest();
|
||||
form.store('submiting', true);
|
||||
new Request({
|
||||
url: form.get('action'),
|
||||
method: (form.get('method') || 'post').toLowerCase(),
|
||||
data: form,
|
||||
onComplete: function(resp) {
|
||||
if (form && form.uid) form.eliminate('submiting');
|
||||
if (target.onComplete) target.onComplete(resp);
|
||||
},
|
||||
onFailure: function() {
|
||||
if (form && form.uid) form.eliminate('submiting');
|
||||
$('sendProduct').set('disabled', '');
|
||||
$('sendProduct').getElements('span')[1].set('text','确认出库');
|
||||
$('error').show().set('html', '请求失败,请重试');
|
||||
}
|
||||
}).send();
|
||||
}
|
||||
//根据物流单号,获取货号、货品名称
|
||||
function showProductItems(){
|
||||
@@ -429,8 +455,125 @@ $('ome_single_delivery').store('target',{
|
||||
}
|
||||
}else{
|
||||
$('sendProduct').set('disabled', 'true');
|
||||
if (json.redirect) {
|
||||
if (typeof MessageBox !== 'undefined') {
|
||||
new MessageBox(json.success || '发货处理完成', { type: 'success', autohide: 1500 });
|
||||
}
|
||||
var url = json.redirect;
|
||||
var q = (window.location.search || '').replace(/^\?/, '');
|
||||
if (q) url += (url.indexOf('?') >= 0 ? '&' : '?') + q;
|
||||
setTimeout(function(){ window.location.href = url; }, 800);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
// 仅 pickup 时拦截 submit,走自定义 Request + 打印 + redirect;非 pickup 保持原样 fireEvent('submit') 由框架处理
|
||||
$('ome_single_delivery').addEvent('submit', function(e) {
|
||||
if (currentDeliveryIsPickup) {
|
||||
e.stop();
|
||||
if (e.preventDefault) e.preventDefault();
|
||||
submitSend(e);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var _printerJsLoaded = false;
|
||||
function _loadPrinterJs(cb) {
|
||||
if (_printerJsLoaded && typeof(initPrinter) == 'function') return cb();
|
||||
if (typeof(Ex_Loader) == 'function') {
|
||||
Ex_Loader('security', BASE_URL + '/app/logisticsmanager/statics/js/printer.js?v=20210412', function(){
|
||||
_printerJsLoaded = true;
|
||||
cb();
|
||||
});
|
||||
return;
|
||||
}
|
||||
var s = document.createElement('script');
|
||||
s.type = 'text/javascript';
|
||||
s.src = BASE_URL + '/app/logisticsmanager/statics/js/printer.js?v=20210412';
|
||||
s.onload = function(){ _printerJsLoaded = true; cb(); };
|
||||
document.getElementsByTagName('head')[0].appendChild(s);
|
||||
}
|
||||
|
||||
function autoCainiaoPrint(deliveryId) {
|
||||
_loadPrinterJs(function(){
|
||||
new Request({
|
||||
url:'index.php?app=wms&ctl=admin_receipts_print&act=ajaxGetPrintExpreData',
|
||||
method:'POST',
|
||||
data:{delivery_id:deliveryId},
|
||||
onSuccess:function(resp){
|
||||
resp = (resp || '').trim();
|
||||
var ret = resp ? JSON.decode(resp) : {};
|
||||
if (!ret || ret.status != 'success') {
|
||||
if (ret && ret.msg && (ret.msg.indexOf('未找到提货单') >= 0 || ret.msg.indexOf('非提货单') >= 0)) return;
|
||||
var msg = ret && ret.msg ? ret.msg : '获取打印数据失败';
|
||||
$('error').show().set('html',msg);
|
||||
return;
|
||||
}
|
||||
var options = ret.options || {};
|
||||
var printerType = (ret.printer_type && ret.printer_type !== '') ? ret.printer_type : 'cainiao';
|
||||
if (printerType === 'cainiao' && options.data && options.data.length) {
|
||||
var hasJsonPacket = options.data.every(function(item){ return item && typeof item.json_packet === 'string' && item.json_packet.length > 0; });
|
||||
if (!hasJsonPacket) {
|
||||
$('error').show().set('html', '无电子面单数据,无法触发菜鸟打印。请确认该单已获取电子面单或稍后在打印页补打。');
|
||||
return;
|
||||
}
|
||||
}
|
||||
options.onError = function(data){
|
||||
var msg = (typeof data == 'object' && data.errmsg) ? data.errmsg : '与菜鸟打印组件通信失败,请确认已安装并打开菜鸟组件';
|
||||
$('error').show().set('html',msg);
|
||||
};
|
||||
|
||||
var decrypted = false;
|
||||
var printersReady = false;
|
||||
var printerName = '';
|
||||
var printed = false;
|
||||
var printTriggered = false;
|
||||
|
||||
options.onOpen = function(){
|
||||
try { printerObj.getPrinters(); } catch(e){}
|
||||
};
|
||||
options.onGetPrinters = function(data){
|
||||
if(!data.printers || data.printers.length == 0) {
|
||||
$('error').show().set('html', data.msg ? data.msg : '没有可用打印机');
|
||||
return;
|
||||
}
|
||||
printerName = data.defaultPrinter ? data.defaultPrinter : data.printers[0].name;
|
||||
printersReady = true;
|
||||
tryStartPrint();
|
||||
};
|
||||
options.onDecryptComplete = function(p){
|
||||
if (p && p.rsp == 'fail') {
|
||||
$('error').show().set('html', p.errmsg ? p.errmsg : '数据解密失败');
|
||||
return;
|
||||
}
|
||||
decrypted = true;
|
||||
tryStartPrint();
|
||||
};
|
||||
options.onPrintFailure = function(data){
|
||||
var msg = data && data.msg ? data.msg : '打印失败';
|
||||
$('error').show().set('html', msg);
|
||||
printed = false;
|
||||
};
|
||||
options.onPrintSuccess = function(){
|
||||
printed = true;
|
||||
};
|
||||
|
||||
var printerObj = initPrinter(printerType, options);
|
||||
printerObj.decryptAsync(5);
|
||||
|
||||
function tryStartPrint(){
|
||||
if (printTriggered) return;
|
||||
if (!decrypted || !printersReady) return;
|
||||
if (!printerName) return;
|
||||
if (printerObj.destatus != 'succ') return;
|
||||
printTriggered = true;
|
||||
printed = true;
|
||||
printerObj.print.delay(10, printerObj, [{name:printerName}]);
|
||||
}
|
||||
}
|
||||
}).send();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<div class="form-field">
|
||||
<span class="form-field-label">发货校验商品数量设置:</span>
|
||||
<input class="form-input" placeholder="请输入发货校验商品数量设置" type="text" name="set[wms.delivery.check]" value="<{$setData.wms_delivery_check}>" vtype="required&&unsignedint" />
|
||||
<span class="form-remark">同一货品数量大于设置数量时可以通过录入数量来批量检验</span>
|
||||
<span class="form-remark">同一基础物料数量大于设置数量时可以通过录入数量来批量检验</span>
|
||||
</div>
|
||||
<div class="form-field">
|
||||
<span class="form-field-label">逐单发货是否称重:</span>
|
||||
@@ -118,14 +118,14 @@
|
||||
</div>
|
||||
<div class="form-field weightwarn_on">
|
||||
<span class="form-field-label">逐单发货称重报警设置:</span>
|
||||
包裹称重重量比系统中货品净重多出<input class="form-input" style="width: 5%" type="text" name="set[wms.delivery.max_weightwarn]" value="<{$setData.wms_delivery_max_weightwarn|default:0}>" vtype="required&&unsignedint" />
|
||||
包裹称重重量比系统中基础物料净重多出<input class="form-input" style="width: 5%" type="text" name="set[wms.delivery.max_weightwarn]" value="<{$setData.wms_delivery_max_weightwarn|default:0}>" vtype="required&&unsignedint" />
|
||||
<span id='warnunit1' style="width:20px;"><{if $setData.wms_delivery_maxpercent=='1'}>%<{else}>g<{/if}></span>
|
||||
<input type="hidden" id="maxpercent" name="set[wms.delivery.maxpercent]" value="<{$setData.wms_delivery_maxpercent|default:0}>"> 以上,进行报警
|
||||
<input type="checkbox" class='weightpercent' value="1" <{if $setData.wms_delivery_maxpercent=='1'}>checked<{/if}>>按百分比计算
|
||||
</div>
|
||||
<div class="form-field weightwarn_on1">
|
||||
<span class="form-field-label"></span>
|
||||
包裹称重重量比系统中货品净重少了<input class="form-input" style="width: 5%" type="text" name="set[wms.delivery.min_weightwarn]" value="<{$setData.wms_delivery_min_weightwarn|default:0}>" vtype="required&&unsignedint" />
|
||||
包裹称重重量比系统中基础物料净重少了<input class="form-input" style="width: 5%" type="text" name="set[wms.delivery.min_weightwarn]" value="<{$setData.wms_delivery_min_weightwarn|default:0}>" vtype="required&&unsignedint" />
|
||||
<span id='warnunit2' ><{if $setData.wms_delivery_minpercent=='1'}>%<{else}>g<{/if}></span>
|
||||
<input type="hidden" id="minpercent" name="set[wms.delivery.minpercent]" value="<{$setData.wms_delivery_minpercent|default:0}>"> 以上,进行报警
|
||||
<input type="checkbox" class='weightpercent1' value="2" <{if $setData.wms_delivery_minpercent=='1'}>checked<{/if}>>按百分比计算
|
||||
@@ -263,4 +263,4 @@ window.addEvent('domready',function(){
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
<tr>
|
||||
<th style='text-align:left;padding-left:5px;'>采购单号</th>
|
||||
<th style='text-align:left;padding-left:5px;'>拣货单号</th>
|
||||
<th style='text-align:left;padding-left:5px;'>货号</th>
|
||||
<th style='text-align:left;padding-left:5px;'>基础物料编码</th>
|
||||
<th style='text-align:left;padding-left:5px;'>条形码</th>
|
||||
<th style='text-align:left;padding-left:5px;'>货品名称</th>
|
||||
<th style='text-align:left;padding-left:5px;'>基础物料名称</th>
|
||||
<th style='text-align:left;padding-left:5px;'>尺寸</th>
|
||||
<th style='text-align:left;padding-left:5px;'>申请数量</th>
|
||||
<th style='text-align:left;padding-left:5px;'>实际数量</th>
|
||||
|
||||
Reference in New Issue
Block a user