var table = "erp_returnorder";
|
var childTable = "erp_returnorder_dtl";
|
var sysid = getQueryVariable("sysid");
|
var $form = $("#iform");
|
var $main = $form.find(".main");
|
var $warehouse = $main.find(`#${table}_warehouse_id`);
|
var $supplier = $main.find(`#${table}_supplier_id`);
|
var $contract = $main.find(`#${table}_related_ordernum`);
|
var $isContract = $("input[field='is_contract'][value='1']");
|
var relatedName = "";
|
var formData = window.initItems;
|
function initData() {
|
LoadData();
|
BindFunc();
|
}
|
// 加载数据
|
function LoadData() {
|
if (window.taskid === '') {
|
loadBaseInfo();
|
setTimeout(function () {
|
$warehouse.find("option:eq(0)").prop("selected", true).trigger("chosen:updated");
|
loadSupplier($warehouse.val());
|
}, 1000)
|
} else {
|
formData.createtime = JsonDateToDate(formData.createtime).Format('yyyy-MM-dd');
|
formData.happen_time = JsonDateToDate(formData.happen_time).Format('yyyy-MM-dd');
|
$("#erp_returnorder_createtime").val(formData.createtime);
|
$("#erp_returnorder_happen_time").val(formData.happen_time);
|
loadSupplier(formData.warehouse_id, function () {
|
$supplier.val(formData.supplier_id).trigger("chosen:updated");
|
});
|
loadContract(formData.supplier_id, function () {
|
$contract.val(formData.related_ordernum).trigger("chosen:updated");
|
});
|
}
|
changeRelatedName();
|
}
|
// 绑定事件
|
function BindFunc() {
|
setTimeout(function () {
|
bindDropDownTitle($warehouse.attr("id"));
|
}, 1000)
|
|
// 选择仓库事件
|
$warehouse.change(function () {
|
bindDropDownTitle(this.id);
|
loadSupplier(this.value);
|
})
|
// 选择供应商事件
|
$supplier.change(function () {
|
bindDropDownTitle(this.id);
|
loadContract(this.value);
|
})
|
// 选择合同事件
|
$contract.change(function () {
|
bindDropDownTitle(this.id);
|
//清空物品明细
|
$("#girdtable tr.body").remove();
|
$(".subtradd_js").click();
|
//loadMaterial(this.value);
|
})
|
// 是否关联合同
|
$main.find("input[field='is_contract']").change(function () {
|
loadContract($supplier.val());
|
changeRelatedName()
|
})
|
BindChildFunc($("#girdtable"));
|
function bindDropDownTitle(id) {
|
var $drown = $(`#${id}_chosen`);
|
var text = $drown.find("span").text();
|
$drown.attr("title", text);
|
}
|
}
|
function BindChildFunc($sel) {
|
//打开物料选择
|
$sel.find(`input[name="${childTable}.materielinfo_code"]`).bind('click', function (i, r) {
|
this.setAttribute("autocomplete", "off");//移除自动提示
|
getmaterielinfo(this)
|
});
|
//计算数量价格
|
$sel.find(`input[name='${childTable}.return_count'],input[name='${childTable}.price_tax']`).bind('blur', function (i, r) {
|
var $row = $(this).closest('tr');
|
computeAmount($row)
|
});
|
$sel.find(`select[name='${childTable}.taxrate']`).bind('change', function (i, r) {
|
var $row = $(this).closest('tr');
|
computeAmount($row)
|
});
|
}
|
var selectedTd = null;
|
//物品选择
|
var getmaterielinfo = function (obj) {
|
var warehouse_id = $warehouse.val();
|
if (!warehouse_id) {
|
parent.layer.alert('请选择仓库', { icon: 5 });
|
return;
|
}
|
var supplier_id = $supplier.val();
|
if (!supplier_id) {
|
parent.layer.alert('请选择供应商', { icon: 5 });
|
return;
|
}
|
var contract_id = $contract.val();
|
if (!contract_id) {
|
parent.layer.alert('请选择' + relatedName, { icon: 5 });
|
return;
|
}
|
selectedTd = obj;
|
layer.open({
|
type: 2,
|
title: '资源库',
|
shadeClose: true,
|
shade: 0.4,
|
area: ['90%', '90%'],
|
content: `/Article/ReturnOfMaterial?WareHouseId=${warehouse_id}&supplierId=${supplier_id}&contractCode=${contract_id}&isContract=${$isContract.prop("checked")}`
|
});
|
}
|
// 选中物品明细
|
var setReturnMaterialInfo = function (entity) {
|
var isRepeat = false;// 是否重复添加
|
$(`input[name="${childTable}.materielinfo_code"]`).each(function (i, input) {
|
if (input.value.length > 0 && input.value == entity.materielinfo_code) {
|
isRepeat = true;
|
layer.alert("该物品" + entity.material_name + "(" + entity.specification +")已存在明细中,无需重复添加");
|
}
|
})
|
if (selectedTd != null && !isRepeat) {
|
var $tr = $(selectedTd).closest("tr");
|
BindData($tr, entity);
|
$tr.find("[field='taxrate']").trigger("chosen:updated");
|
computeAmount($tr);
|
setInputTitle($tr);
|
layer.closeAll();
|
}
|
}
|
// 初次加载页面事件
|
function loadBaseInfo() {
|
Ajax("/Erp_ReturnOrder/getBaseData", { sysid: sysid }, success, error)
|
function success(data) {
|
data.createtime = JsonDateToDate(data.createtime).Format('yyyy-MM-dd');
|
data.happen_time = JsonDateToDate(data.happen_time).Format('yyyy-MM-dd');
|
data.title = `退货单(${data.CurrentUserName})`;
|
BindData($main, data);
|
$(`input[field='is_contract'][value='${data.is_contract}']`).prop("checked", true);
|
}
|
function error(msg) {
|
console.log(msg)
|
}
|
}
|
// 加载供应商列表
|
function loadSupplier(warehouseId, callback) {
|
$supplier.empty();
|
$contract.empty();
|
Ajax("/Erp_ReturnOrder/GetSupplierByWarehouse", { warehouseId }, success);
|
function success(data) {
|
bindDropDown($supplier, data, callback);
|
}
|
}
|
// 加载合同列表
|
function loadContract(supplieId, callback) {
|
$contract.empty();
|
Ajax("/Erp_ReturnOrder/GetContractByWarehouseSupplier", { warehouseId: $warehouse.val(), supplieId, isContract: $isContract.prop("checked")}, success);
|
function success(data) {
|
bindDropDown($contract, data, callback);
|
}
|
}
|
// 加载物料列表
|
function loadMaterial(contractCode) {
|
Ajax("/Erp_ReturnOrder/GetEffectiveInorderDtlList", { WareHouseId: $warehouse.val(), supplierId: $supplier.val(), contractCode }, success);
|
function success(data) {
|
BindMaterial(data);
|
}
|
}
|
|
createMethod = function ($row) {
|
BindChildFunc($row)
|
}
|
deleteMethod = function () {
|
computeTotalPrice();
|
}
|
SaveCallback = SubmitCallback = function (data) {
|
if (!data.Result && data.Remark) {
|
var obj = JSON.parse(data.Remark);
|
var $row = $("#girdtable").find(`input[field='materielinfo_code'][title='${obj.materielinfo_code}']`).closest("tr");
|
BindData($row, obj);
|
}
|
}
|
// 绑定物料列表
|
function BindMaterial(list) {
|
if (!list || list.length == 0) return;
|
var $trs = renderGirdtableByData($children, list);
|
$(".grid").empty().append($trs);
|
setPowerChild();
|
page.bind();
|
BindChildFunc($trs);
|
computeTotalPrice();
|
setInputTitle($trs);
|
}
|
// 绑定业务数据
|
function BindData($sel, data) {
|
if (!data) return;
|
$sel.find("input,select").each(function (i, input) {
|
var field = input.getAttribute("field");
|
if (isEmpty(data[field]))
|
return;
|
if (input.type == 'radio') {
|
$main.find('input[field="' + field + '"][value="' + data[field] + '"]').prop("checked", true);
|
} else {
|
input.value = data[field];
|
}
|
|
})
|
}
|
// 绑定下拉列表
|
function bindDropDown($sel, options, callback) {
|
$sel.empty();
|
var str = options.map(item => `<option value="${item.Value}">${item.Text}</option>`);
|
$sel.append(str);
|
$sel.val("");
|
$sel.trigger("chosen:updated");
|
if (typeof callback === "function")
|
callback()
|
}
|
|
//计算小计
|
function computeAmount($row) {
|
var count = $row.find(`input[name='${childTable}.return_count']`).val();
|
var price_tax = $row.find(`input[name='${childTable}.price_tax']`).val();
|
var taxrate = $row.find(`select[name='${childTable}.taxrate']`).val();
|
count = parseFloat(count) || 0;
|
price_tax = parseFloat(price_tax) || 0;
|
taxrate = parseFloat(taxrate) || 0;
|
taxrate = accDiv(taxrate, 100);
|
// 含税小计
|
var amount_tax = accMul(parseFloat(count), parseFloat(price_tax));
|
$row.find(`input[name='${childTable}.amount_tax']`).val(amount_tax);
|
// 不含税小计
|
var amount_notax = computeTaxrate(amount_tax, taxrate);
|
$row.find(`input[name='${childTable}.amount_notax']`).val(amount_notax);
|
// 不含税单价
|
var price_notax = count == 0 ? price_tax : accDiv(amount_notax, count);
|
$row.find(`input[name='${childTable}.price_notax']`).val(price_notax);
|
computeTotalPrice();
|
}
|
//计算总金额
|
function computeTotalPrice() {
|
var totalPrice = 0;
|
$(`input[name='${childTable}.amount_tax']`).each(function (i, item) {
|
var price = parseFloat(item.value);
|
totalPrice = accAdd(totalPrice, price);
|
})
|
if (isNaN(totalPrice))
|
totalPrice = 0;
|
$(`#${table}_money`).val(totalPrice);
|
}
|
|
// 发送请求
|
function Ajax(url, data, success, error, type) {
|
type = type || "get";
|
$.ajax({
|
url: url,
|
data: data,
|
async: false,
|
cache: false,
|
type: type,
|
dataType: "json",
|
success: function (data) {
|
success(data)
|
},
|
error: function (msg) {
|
if (typeof error === "function")
|
error(msg)
|
}
|
});
|
}
|
|
//获取href里面的参数
|
function getQueryVariable (parameter) {
|
var query = window.location.search.substring(1);
|
var vars = query.split("&");
|
for (var i = 0; i < vars.length; i++) {
|
var pair = vars[i].split("=");
|
if (pair[0] === parameter) { return pair[1]; }
|
}
|
return "";
|
}
|
// 计算税率
|
function computeTaxrate(amount, taxrate) {
|
//不含税合计 = 含税合计 - (含税合计 / (1 + 税率) * 税率)
|
var step = accDiv(amount, accAdd(1, taxrate));
|
var result = accSub(amount, accMul(step, taxrate));
|
return result
|
}
|
//
|
function setInputTitle($sel) {
|
$sel.find("input").each(function (i, input) {
|
input.setAttribute("title", input.value);
|
})
|
$sel.find("select").each(function (i, input) {
|
var text = $(input).find("option:selected").text();
|
input.setAttribute("title", text);
|
})
|
$sel.find("input").bind("change", function () {
|
this.setAttribute("title", this.value);
|
})
|
$sel.find("select").bind("change", function () {
|
var text = $(this).find("option:selected").text();
|
this.setAttribute("title", text);
|
})
|
}
|
function changeRelatedName() {
|
var isContract = $isContract.prop("checked");
|
relatedName = isContract ? "合同单号" : "采购订单号";
|
$("#erp_returnorder_related_ordernum").parent().prev().text(relatedName);
|
}
|
|
function isEmpty(value) {
|
return typeof value === "undefined" || typeof value === "null" || value === "";
|
}
|
/**
|
* 乘法
|
* @param arg1
|
* @param arg2
|
* @returns {Number}
|
*/
|
function accMul(arg1, arg2) {
|
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
|
try { m += s1.split(".")[1].length } catch (e) { }
|
try { m += s2.split(".")[1].length } catch (e) { }
|
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
|
}
|
|
/**
|
* 加法
|
* @param arg1
|
* @param arg2
|
* @returns {Number}
|
*/
|
function accAdd(arg1, arg2) {
|
var r1, r2, m, c;
|
try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
|
try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
|
c = Math.abs(r1 - r2);
|
m = Math.pow(10, Math.max(r1, r2))
|
if (c > 0) {
|
var cm = Math.pow(10, c);
|
if (r1 > r2) {
|
arg1 = Number(arg1.toString().replace(".", ""));
|
arg2 = Number(arg2.toString().replace(".", "")) * cm;
|
}
|
else {
|
arg1 = Number(arg1.toString().replace(".", "")) * cm;
|
arg2 = Number(arg2.toString().replace(".", ""));
|
}
|
}
|
else {
|
arg1 = Number(arg1.toString().replace(".", ""));
|
arg2 = Number(arg2.toString().replace(".", ""));
|
}
|
return (arg1 + arg2) / m
|
}
|
/**
|
* 减法
|
* @param arg1
|
* @param arg2
|
* @returns
|
*/
|
function accSub(arg1, arg2) {
|
var r1, r2, m, n;
|
try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
|
try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
|
m = Math.pow(10, Math.max(r1, r2));
|
//last modify by deeka
|
//动态控制精度长度
|
n = (r1 >= r2) ? r1 : r2;
|
return ((arg1 * m - arg2 * m) / m).toFixed(n);
|
}
|
/**
|
* 除法
|
* @param arg1
|
* @param arg2
|
* @returns {Number}
|
*/
|
function accDiv(arg1, arg2) {
|
var t1 = 0, t2 = 0, r1, r2;
|
try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
|
try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
|
with (Math) {
|
r1 = Number(arg1.toString().replace(".", ""))
|
r2 = Number(arg2.toString().replace(".", ""))
|
return (r1 / r2) * pow(10, t2 - t1);
|
}
|
}
|