mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-22 18:35:35 +08:00
478 lines
21 KiB
HTML
478 lines
21 KiB
HTML
<!--
|
||
Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
See LICENSE file for license details.
|
||
-->
|
||
|
||
<{capture name="header"}>
|
||
<{css app="ome" src="ome.css"}>
|
||
<{css app="ome" src="style.css"}>
|
||
<{script src="coms/autocompleter.js" app="desktop"}>
|
||
<{script src="coms/pager.js" app="desktop"}>
|
||
<{/capture}>
|
||
<form method="post" id="form1" action="index.php?app=console&ctl=admin_iostockorder&act=do_edit_iostock">
|
||
<input type="hidden" name="io" value="<{$io}>" />
|
||
<input type="hidden" name="iso_id" value="<{$iso.iso_id}>" />
|
||
<input type="hidden" name="iso_bn" value="<{$iso.iso_bn}>" />
|
||
<input type="hidden" name="old_items" value="<{$iso.items}>" />
|
||
<input type="hidden" name="act_status" value="<{$act_status}>">
|
||
<input type="hidden" name="io_act" value="<{$act}>">
|
||
<div class="tableform">
|
||
<h3>编辑</h3>
|
||
<div class="division">
|
||
<h5>基本信息</h5>
|
||
<table border="0" cellspacing="0" cellpadding="0" class="gridlist">
|
||
<thead>
|
||
<tr>
|
||
<td width="10%" align="right" nowrap="nowrap"><{if $io=='1'}>入库<{else}>出库<{/if}>单名称:</td>
|
||
<td >
|
||
<{if $iso.emergency=='true'}><span id="exigence" style="color:red;">!</span><{/if}>
|
||
<input type="text" size="32" onblur="checkName(this.value);" id="iostockorder_name" name="iostockorder_name" value="<{$iso.name}>" />
|
||
<{if $iso.emergency=='true'}><span style="color:red;">紧急入库</span><{/if}>
|
||
</td>
|
||
<{if $act!='allocate_iostock'}>
|
||
<td width="10%" align="right">来源地:</td>
|
||
<td>
|
||
|
||
<{input type="select" name="extrabranch_id" vtype="required" rows=$extrabranch valueColumn="branch_id" labelColumn="name" value=$iso.extrabranch_id}>
|
||
|
||
</td>
|
||
<{/if}>
|
||
</tr>
|
||
|
||
<tr>
|
||
<{if $act !='allocate_iostock'}>
|
||
<td align="right">供应商:</td>
|
||
<td width="40%"><{if $act != 'allocate_iostock'}>
|
||
<span id="auto_supp" style="position:relative;">
|
||
<{$iso.supplier_name}>
|
||
<input type="hidden" name="supplier_id" id="supplier_id" value="<{$iso.supplier_id}>" />
|
||
</span><{/if}>
|
||
</td>
|
||
<{/if}>
|
||
<td width="10%" align="right">仓库:</td>
|
||
<td>
|
||
<{$iso.branch_name}>
|
||
<input type="hidden" name="branch" value="<{$iso.branch_id}>" />
|
||
</td>
|
||
</tr>
|
||
<{if $io=='0'}>
|
||
<tr>
|
||
<td align="right">物流公司:</td>
|
||
<td><select name="corp_id"><option>请选择</option>
|
||
<{foreach from=$dly_corp item=corp}>
|
||
<option value="<{$corp.corp_id}>" <{if $iso.corp_id==$corp.corp_id}>selected<{/if}>><{$corp.name}></option>
|
||
<{/foreach}>
|
||
</select>
|
||
</td>
|
||
<td align="right" nowrap="nowrap"></td>
|
||
<td>
|
||
</td>
|
||
</tr>
|
||
<{/if}>
|
||
<tr>
|
||
<td align="right"><{if $io=='1'}>入库<{else}>出库<{/if}>类型:</td>
|
||
<td>
|
||
<{$iso.type_name}>
|
||
<input type="hidden" name="type_id" id="type_id" value="<{$iso.type_id}>" />
|
||
</td>
|
||
<{if $act != 'allocate_iostock'}>
|
||
<td align="right" nowrap="nowrap">入库费用:</td>
|
||
<td><{if $act != 'allocate_iostock'}><input type="text" size="2" id="iso_price" name="iso_price" value="<{$iso.iso_price}>" /> 元<{/if}></td>
|
||
<{/if}>
|
||
</tr>
|
||
<tr>
|
||
<td align="right" nowrap="nowrap">领用部门:</td>
|
||
<td><{input name="cost_department" type="text" value=$iso.cost_department}></td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right">业务类型:</td>
|
||
<td>
|
||
<{$iso.bill_type_name}>
|
||
</td>
|
||
<td align="right" nowrap="nowrap">业务单号:</td>
|
||
<td>
|
||
<input type="text" id="business_bn" name="business_bn" value="<{$iso.business_bn}>" />
|
||
</td>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<div class="division">
|
||
<h5><{if $io=='1'}>发货人信息<{else}>收货人信息<{/if}></h5>
|
||
<table border="0" cellspacing="0" cellpadding="0">
|
||
<tr>
|
||
<th>联系地区:</th>
|
||
<td colspan="3"><{input type="region" name="extra_ship_area" value=$iso.extra_ship_area}></td>
|
||
</tr>
|
||
<tr>
|
||
<th>联系姓名:</th>
|
||
<td><{input type="text" name="extra_ship_name" value=$iso.extra_ship_name size="32"}></td>
|
||
<th>联系邮编:</th>
|
||
<td><{input type="text" name="extra_ship_zip" value=$iso.extra_ship_zip size="32"}></td>
|
||
</tr>
|
||
<tr>
|
||
<th>联系手机:</th>
|
||
<td><{input type="text" name="extra_ship_mobile" value=$iso.extra_ship_mobile size="32"}></td>
|
||
<th>联系Email:</th>
|
||
<td><{input type="text" name="extra_ship_email" value=$iso.extra_ship_email size="32"}></td>
|
||
</tr>
|
||
<tr>
|
||
<th>联系详细地址:</th>
|
||
<td colspan="3"><{input type="text" name="extra_ship_addr" value=$iso.extra_ship_addr size="32"}></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div class="division">
|
||
<h5 style="margin-top:10px;"><{if $io=='1'}>入库<{else}>出库<{/if}>商品</h5>
|
||
<{button label="供应商频道" id="supplier-find-btn" }>
|
||
<{button label="基础物料库频道" id="iostockorder-find-btn" }>
|
||
<span id='pfba3'>
|
||
<label>按条形码索引:</label>
|
||
<input type="text" name="barcode" />
|
||
</span>
|
||
<span id='pfba'>
|
||
<label>按基础物料编码索引:</label>
|
||
<input type="text" name="bn" />
|
||
</span>
|
||
<span id='pfba2'>
|
||
<label>按基础物料名称索引:</label>
|
||
<input name="name" type="text" size="35" />
|
||
</span>
|
||
<table class="gridlist" id="iostockorder_table" style="margin:4px 0;">
|
||
<thead>
|
||
<tr>
|
||
<th>基础物料编码</th>
|
||
<th style="width:240px;">基础物料名称</th>
|
||
<th>规格</th>
|
||
<th>条形码</th>
|
||
<th>数量</th>
|
||
<th>单价</th>
|
||
<th>合计</th>
|
||
<th style="width:30px;">删除</th>
|
||
</tr>
|
||
</thead>
|
||
|
||
<tbody id="dataNode">
|
||
<tr>
|
||
<td colspan="8" style="padding:0;"><div class="note" style="margin:0;"> 暂无<{if $io=='1'}>入库<{else}>出库<{/if}>货品信息 </div></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<div align="right">
|
||
<{if $io=='1'}>入库<{else}>出库<{/if}>总量: <span id="buy_count"><{$iso.total_num}></span>
|
||
总金额: <span id="buy_amount"><{$iso.iso_price+$iso.product_cost}></span>
|
||
<{button label="删除选中" id="iostockorder-del-btn"}> <{button type="button" id="iostockorder-delall-btn" label="全部删除" }>
|
||
</div>
|
||
</div>
|
||
<div class="division">
|
||
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="margin-top:10px;">
|
||
<tr>
|
||
<th>经办人:</th>
|
||
<td align="left"><{input name="operator" type="text" value=$iso.oper size="15" vtype="required"}></td>
|
||
<th>备注:</th>
|
||
<td align="left"><textarea class="x-input" id="memo" maxth="255" rows="3" cols="80%" name="memo" type="textarea"><{$iso.memo}></textarea></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div id="cc" class="noprint table-action">
|
||
<{button type="button" id="iostockorder-save-btn" label="保 存"}>
|
||
<{button type="button" class="btn-secondary" id="return-btn" label="关 闭" onclick="javascript:void(window.close());"}>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
|
||
<script>
|
||
(function(){
|
||
var visiTips = new Tips({
|
||
onShow:function(tip,el){
|
||
el.addClass('active');
|
||
tip.setStyle('display','block');
|
||
},
|
||
text: function(element){
|
||
if(element.get('visibility')=='false'){
|
||
return '不可售商品';
|
||
}else{
|
||
return '';
|
||
}
|
||
}
|
||
});
|
||
|
||
new Request({url:'index.php?app=console&ctl=admin_iostockorder&act=getEditProducts&p[0]='+<{$iso.iso_id}>,
|
||
onComplete:function(rs){
|
||
rs=JSON.decode(rs);
|
||
store.combine(rs);
|
||
createProduct(store);
|
||
}}).send();
|
||
|
||
var callurl='index.php?app=purchase&ctl=admin_purchase&act=getProducts',store=[];
|
||
var options={
|
||
'getVar':'bn',
|
||
'fxOptions':false,
|
||
callJSON:function(){return window.autocompleter_json;},
|
||
injectChoice:function(json){
|
||
var choice = new Element('li', {'html': this.markQueryValue(json[this.options.getVar])});
|
||
choice.store('_data',json);
|
||
choice.inputValue = json[this.options.getVar];
|
||
this.addChoiceEvents(choice).inject(this.choices);
|
||
},
|
||
onHide:function(){
|
||
if(!this.selected)return;
|
||
var json=this.selected.retrieve('_data');
|
||
json=$splat(json);
|
||
init(json);
|
||
MessageBox.success('加载商品成功!!');
|
||
},
|
||
onFocus:function(ipt){
|
||
ipt.value='';
|
||
}
|
||
};
|
||
new Autocompleter.script($E('#pfba input'),callurl, options);
|
||
new Autocompleter.script($E('#pfba2 input'),callurl,$merge(options,{'getVar':'name'}));
|
||
new Autocompleter.script($E('#pfba3 input'),callurl,$merge(options,{'getVar':'barcode'}));
|
||
|
||
var tpl='<tr key="{product_id}" id="product_{product_id}" title="点击选取/反选此条记录">'+
|
||
' <td>{bn}</td><td class="product-name" visibility="{visibility}"><input type="hidden" name="product_name[{product_id}]" value="{name}" /><input type="hidden" name="bn[{product_id}]" value="{bn}" /><input type="hidden" name="unit[{product_id}]" value="{unit}" />{name}</td><td>{spec_info}</td><td>{barcode}</td>'+
|
||
' <td><input type="text" value="{num}" key="num" vtype="unsigned&&required" tname="at[_PRIMARY_]" size="6"></td>'+
|
||
' <td><input type="text" vtype="number&&required" tname="pr[_PRIMARY_]" key="price" value="{price}" size="8">元</td>'+
|
||
' <td class="count">{count}</td>'+
|
||
' <td><{img src="bundle/delecate.gif" app="desktop" key="state" class="pointer btn-delete-item"}></td>'+
|
||
'</tr>';
|
||
|
||
$('iostockorder-find-btn').addEvent('click',function(e){
|
||
var url='index.php?app=desktop&act=alertpages&goto='+encodeURIComponent('index.php?app=console&ctl=admin_purchase&act=findMaterial');
|
||
Ex_Loader('modedialog',function() {
|
||
new finderDialog(url,{params:{url:callurl,name:'product_id[]'},width:1000,height:660,
|
||
onCallback:function(rs){
|
||
if(!rs)return;
|
||
rs=JSON.decode(rs);
|
||
init(rs);
|
||
}
|
||
});
|
||
});
|
||
});
|
||
|
||
//从供应商查找商品
|
||
$('supplier-find-btn').addEvent('click',function(){
|
||
if ($("supplier_id").get("value").trim().length===0){
|
||
return MessageBox.error("请先填写正确的供应商");
|
||
}
|
||
var supplier_id = $('supplier_id').value;
|
||
var url='index.php?app=desktop&act=alertpages&goto='+encodeURIComponent('index.php?app=console&ctl=admin_purchase&act=findMaterial&p[0]='+supplier_id);
|
||
Ex_Loader('modedialog',function() {
|
||
return new finderDialog(url,{params:{url:callurl,name:'product_id[]'},width:1000,height:650,
|
||
onCallback:function(rs){
|
||
if(!rs)return;
|
||
rs=JSON.decode(rs);
|
||
init(rs);
|
||
}});
|
||
});
|
||
});
|
||
|
||
var pag;
|
||
function emptyData(){
|
||
var noData='<tr>'+
|
||
'<td colspan="8" style="padding:0;"><div class="note" style="margin:0;"> 暂无入库货品信息 </div></td>'+
|
||
'</tr>';
|
||
$('dataNode').set('html',noData);
|
||
}
|
||
function createProduct(data){
|
||
pag=new PageData(tpl,data,{'updateMain':$('dataNode'),'pageNum':10000,
|
||
'format': function(d) {
|
||
d.count = (d.num * d.price).toFixed(3);
|
||
},
|
||
'onShow':function(){
|
||
var _this=this;
|
||
/*$$('#dataNode input[type]').addEvent('change',function(e){
|
||
var pid=this.getParent('tr').get('key'),value=this.value;
|
||
_this.editData(pid,[this.get('key'),value]);
|
||
});*/
|
||
$$('#dataNode input[tname$="[_PRIMARY_]"]').each(function(item){
|
||
item.store('initval',item.value).addEvent('change',function(e){
|
||
var patten,
|
||
parent = this.getParent('tr'),
|
||
pid= parent.get('key'),
|
||
value= this.value,
|
||
diffval = this.retrieve('initval') - value;
|
||
if (/^at\[/.test(this.get('tname'))){
|
||
patten = /^[1-9]\d*$/;
|
||
}else{
|
||
patten = /^\d+(\.*)\d*$/;
|
||
}
|
||
if(!patten.test(value)){
|
||
this.focus();
|
||
this.select();
|
||
return MessageBox.error('输入格式有误!');
|
||
}
|
||
this.store('initval', value);
|
||
_this.editData(pid,[this.get('key'),value]);
|
||
|
||
var count = parent.getElement('td.count'),
|
||
num = _this.selectData(pid).num.toInt(),
|
||
pr = _this.selectData(pid).price.toFloat(),
|
||
sums = (num * pr).toFixed(3);
|
||
|
||
count.set('text',sums);
|
||
_this.editData(pid,['count',sums]);
|
||
if (/^at\[/.test(this.get('tname'))){
|
||
$('buy_count').set('text', $('buy_count').get('text') - diffval);
|
||
$('buy_amount').set('text', ($('buy_amount').get('text') - diffval * pr).toFixed(3));
|
||
}else{
|
||
$('buy_amount').set('text', ($('buy_amount').get('text') - diffval * num).toFixed(3));
|
||
}
|
||
});
|
||
});
|
||
/*var state=this.curdata.every(function(d){return d['state']=='checked';});
|
||
$('iostockorder-delall-btn').checked=!state?false:true;
|
||
attachEsayCheck($('dataNode'),'input[type=checkbox]');*/
|
||
$$('#dataNode tr').each(function(item,i){
|
||
item.addEvent('click',function(e){
|
||
e.stop();
|
||
this.toggleClass('selected');
|
||
_this.selectData(this.get('key')).selected = _this.selectData(this.get('key')).selected && _this.selectData(this.get('key')).selected === true ? false : true;
|
||
});
|
||
item.getElement('.btn-delete-item').addEvent('click',function(e){
|
||
e.stop();
|
||
if(_this.selectData(item.get('key')) && confirm('确定要删除 '+ _this.selectData(item.get('key'))['name'] +' 吗?')){
|
||
compute(item);
|
||
_this.delData(item.get('key'));
|
||
}
|
||
if(!$E('#dataNode tr')) emptyData();
|
||
});
|
||
item.getElement('input[tname^=at]').addEvent('enter',function(e){
|
||
$E('#pfba3 input').focus();
|
||
});
|
||
});
|
||
|
||
//var len = this.data.length ? (this.data.length > this.options.pageNum ? (this.options.current == this.getTotal() ? this.data.length-this.options.pageNum*(this.options.current-1) : this.options.pageNum) : this.data.length) : 0;
|
||
if(this.data.length) $E('#dataNode input[key^=num]').focus();
|
||
$ES('.product-name').each(function(item){
|
||
if(item.get('visibility')=='false'){
|
||
item.setStyle('color','#808080');
|
||
}
|
||
});
|
||
$ES('.product-name').removeEvent('mouseover').addEvent('mouseover',function(e){
|
||
if (this.get('visibility')=='false')
|
||
{
|
||
var e = new Event(e), el = e.target;
|
||
visiTips.attach(el);
|
||
el.addEvent('mouseleave',function(){
|
||
this.removeClass('active');
|
||
});
|
||
el.fireEvent('mouseenter',e);
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
$('iostockorder-delall-btn').addEvent('click',function(e){
|
||
if(!pag||!pag.data)return;
|
||
var delarr=[];
|
||
pag.data.each(function(d){
|
||
delarr.push(d['product_id']);
|
||
});
|
||
if(delarr.length && confirm('确认删除全部入库商品吗?')){
|
||
delProduct(pag,delarr);
|
||
$('buy_count').set('text',0);
|
||
$('buy_amount').set('text',0);
|
||
emptyData();
|
||
}
|
||
});
|
||
|
||
$('iostockorder-del-btn').addEvent('click',function(e){
|
||
if(!pag||!pag.data)return;
|
||
var delarr=[];
|
||
pag.data.each(function(d,i){
|
||
if(pag.selectData(d['product_id']).selected && pag.selectData(d['product_id']).selected === true) delarr.push(d['product_id']);
|
||
});
|
||
if(delarr.length){
|
||
if(confirm('确认删除选定的入库商品吗?')){
|
||
var nums=0,prices=0,sums=0;
|
||
delarr.each(function(id,i){
|
||
nums += pag.selectData(id).num.toInt();
|
||
prices += pag.selectData(id).price.toFloat();
|
||
sums += pag.selectData(id).num.toInt() * pag.selectData(id).price.toFloat();
|
||
});
|
||
$('buy_count').set('text',$('buy_count').get('text') - nums);
|
||
$('buy_amount').set('text',($('buy_amount').get('text') - sums).toFixed(3));
|
||
delProduct(pag,delarr);
|
||
}
|
||
if(!$E('#dataNode tr')) emptyData();
|
||
}
|
||
else MessageBox.error("请先选择欲删除的入库商品!");
|
||
});
|
||
|
||
function compute(e){
|
||
var num = e.getElement('input[tname="at[_PRIMARY_]"]').value.toInt();
|
||
var pr = e.getElement('input[tname="pr[_PRIMARY_]"]').value.toFloat();
|
||
var sum = num * pr;
|
||
$('buy_count').set('text',$('buy_count').get('text') - num);
|
||
$('buy_amount').set('text',($('buy_amount').get('text') - sum).toFixed(3));
|
||
}
|
||
|
||
function init(rs){
|
||
var tmparr=findProduct(rs,'product_id');
|
||
store.unshift.apply(store,tmparr);
|
||
createProduct(store);
|
||
}
|
||
|
||
function findProduct(arr,PRIMARY){
|
||
if(!store.length)return arr;
|
||
store.each(function(a){
|
||
arr.each(function(b){
|
||
if(a[PRIMARY]==b[PRIMARY])arr.erase(b);
|
||
});
|
||
});
|
||
return arr;
|
||
}
|
||
|
||
function delProduct(obj,arr){
|
||
arr.each(function(d){obj.delData(d);});
|
||
}
|
||
|
||
$('iostockorder-save-btn').addEvent('click',function(e){
|
||
var _this = this;
|
||
var form = _this.getParent('form');
|
||
if(pag){
|
||
var data=pag.toHideInput($('dataNode').getElement('tr'));
|
||
form.store('target',{extraData:data,
|
||
onRequest:function(){
|
||
_this.disabled=true;
|
||
},
|
||
onComplete:function(jsontext){
|
||
try{
|
||
var json = JSON.decode(jsontext);
|
||
if (typeof(json.error)!='undefined'){
|
||
_this.disabled=false;
|
||
}else{
|
||
_this.disabled=true;
|
||
opener.finderGroup['<{$env.get.finder_id}>'].refresh.delay(100,opener.finderGroup['<{$env.get.finder_id}>']);
|
||
setTimeout('window.close()',200);
|
||
}
|
||
}catch(e){}
|
||
}
|
||
});
|
||
}
|
||
if(!data) {
|
||
MessageBox.error("请先选择入库商品!");
|
||
return false;
|
||
}
|
||
if(data.indexOf('=0&pr')>=0) {
|
||
MessageBox.error("入库商品的数量不能为0!");
|
||
return false;
|
||
}else{
|
||
form.fireEvent('submit',e);
|
||
}
|
||
});
|
||
})();
|
||
|
||
function checkName(thisval){
|
||
if(/!|!/.test(thisval)){
|
||
var val = thisval.replace("!","");
|
||
val = val.replace("!","");
|
||
$('iostockorder_name').set('value', val);
|
||
}
|
||
}
|
||
</script>
|