You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
708 lines
32 KiB
708 lines
32 KiB
(function ($, w, d) {
|
|
'use strict';
|
|
/**
|
|
* 上海駒驛須移除選項
|
|
* @param {Object} input jquery 物件;
|
|
*/
|
|
w.fnKeyUnit = function (input) {
|
|
input.value = input.value.toUpperCase();
|
|
};
|
|
|
|
/**
|
|
* 上海駒驛須移除選項
|
|
* @param {Object} handle jquery 物件;
|
|
*/
|
|
w.fnSGMod = function (handle) {
|
|
var oHandle = handle || $('.shjy-box');
|
|
if (parent.OrgID !== 'SG') {
|
|
oHandle.remove();
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 更新帳單信息
|
|
* @param {String} servname 服務端類名稱
|
|
* @param {String} xbid 當前資料id
|
|
* @param {String} billno 帳單號碼
|
|
*/
|
|
w.fnUpdateBillInfo = function (servname, xbid, billno) {
|
|
var oPm = { Guid: xbid };
|
|
if (billno) {
|
|
oPm.BillNO = billno;
|
|
}
|
|
g_api.ConnectLite(servname, 'UpdateBillInfo', oPm, function (res) {
|
|
if (res.RESULT) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 更新帳單信息
|
|
* @param {String} billno 帳單號碼
|
|
*/
|
|
w.fnDeleteBillInfo = function (billno) {
|
|
var oPm = { BillNO: billno };
|
|
g_api.ConnectLite('Exhibition', 'DeleteBillInfo', oPm, function (res) {
|
|
if (res.RESULT) {
|
|
console.log(res);
|
|
}
|
|
});
|
|
};
|
|
|
|
//取得下拉已選的數值
|
|
w.getSelectedValues = function (strSelector) {
|
|
let result = [];
|
|
let collection = document.querySelectorAll(strSelector + " option");
|
|
collection.forEach(function (x) {
|
|
if (x.selected) {
|
|
result.push(x.value);
|
|
}
|
|
});
|
|
return result;
|
|
};
|
|
/**
|
|
* 驗證是否存在的的有效的帳單資料
|
|
* @param {Array} bills 帳單
|
|
* @return {Boolean} 是否有效
|
|
*/
|
|
w.fnCheckBillEffective = function (bills) {
|
|
var saBill_Effective = [];
|
|
if (bills && bills.length > 0) {
|
|
saBill_Effective = $.grep(bills, function (bill) {
|
|
return bill.AuditVal !== '6';
|
|
});
|
|
}
|
|
return saBill_Effective.length > 0;
|
|
};
|
|
/**
|
|
* 驗證是否存在的的有效的帳單資料
|
|
* @param {Array} bills 退運帳單
|
|
* @return {Boolean} 是否有效
|
|
*/
|
|
w.fnCheckRtnBillEffective = function (bills) {
|
|
var saBill_Effective = [];
|
|
if (bills && bills.length > 0) {
|
|
$.grep(bills, function (_bill) {
|
|
if (_bill.Bills && _bill.Bills.length > 0) {
|
|
saBill_Effective.push($.grep(_bill.Bills, function (bill) {
|
|
return bill.AuditVal !== '6';
|
|
}));
|
|
}
|
|
});
|
|
}
|
|
return saBill_Effective.length > 0;
|
|
};
|
|
|
|
/**
|
|
* 添加費用明細
|
|
* @param {Object} option 配置
|
|
*/
|
|
w.fnStarFeeItems = function (option) {
|
|
option = option || {};
|
|
var oGrid = null,
|
|
saItems = [],
|
|
saProfileGets = [],
|
|
fnSetProfileDrop = function (handle) {
|
|
return CallAjax(ComFn.W_Com, ComFn.GetList, {
|
|
Type: '', Params: {
|
|
profiles: {
|
|
ProfileType: 'FeeClass',
|
|
OrgID: parent.OrgID,
|
|
UserID: parent.UserID
|
|
},
|
|
sort: { SN: 'asc' }
|
|
}
|
|
}, function (res) {
|
|
if (res.d) {
|
|
saProfileGets = JSON.parse(res.d);
|
|
handle.html(createOptions(saProfileGets, 'SN', 'ProfileName'));
|
|
}
|
|
});
|
|
},
|
|
fnAddProfile = function (layero) {
|
|
var oAddPm = {};
|
|
oAddPm.OrgID = parent.OrgID;
|
|
oAddPm.UserID = parent.UserID;
|
|
oAddPm.ProfileType = 'FeeClass';
|
|
oAddPm.ProfileName = layero.find('#ProfileName').val();
|
|
oAddPm.ProfileSet = [];
|
|
layero.find('#lstRight option').each(function () {
|
|
oAddPm.ProfileSet.push(this.value);
|
|
});
|
|
oAddPm.ProfileSet = JSON.stringify(oAddPm.ProfileSet);
|
|
oAddPm = packParams(oAddPm);
|
|
|
|
if (!oAddPm.ProfileName) {
|
|
showMsg(i18next.t("message.ProfileFeesClassName_Required")); //╠message.ProfileFeesClassName_Required⇒請填寫個人化費用類別名稱╣
|
|
return false;
|
|
}
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
|
|
Params: {
|
|
profiles: oAddPm
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass')).done(function () {
|
|
layero.find('#ProfileClass option').each(function () {
|
|
if ($(this).text() === oAddPm.ProfileName) {
|
|
layero.find('#ProfileClass').val(this.value);
|
|
return false;
|
|
}
|
|
});
|
|
});
|
|
showMsg(i18next.t("message.Save_Success"), 'success'); // ╠message.Save_Success⇒新增成功╣
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
}
|
|
}, function () {
|
|
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
|
|
});
|
|
},
|
|
fnUpdProfile = function (layero) {
|
|
var oUpdPm = {},
|
|
sId = layero.find('#ProfileClass').val();
|
|
oUpdPm.ProfileName = layero.find('#ProfileName').val();
|
|
oUpdPm.ProfileSet = [];
|
|
layero.find('#lstRight option').each(function () {
|
|
oUpdPm.ProfileSet.push(this.value);
|
|
});
|
|
oUpdPm.ProfileSet = JSON.stringify(oUpdPm.ProfileSet);
|
|
oUpdPm = packParams(oUpdPm, 'upd');
|
|
|
|
if (!oUpdPm.ProfileName) {
|
|
showMsg(i18next.t("message.ProfileFeesClassName_Required")); // 請填寫個人化費用類別名稱
|
|
return false;
|
|
}
|
|
|
|
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
|
|
Params: {
|
|
profiles: {
|
|
values: oUpdPm,
|
|
keys: { SN: sId }
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass')).done(function () {
|
|
layero.find('#ProfileClass').val(sId);
|
|
});
|
|
showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
|
|
}
|
|
}, function () {
|
|
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
|
|
});
|
|
},
|
|
fnDelProfile = function (layero) {
|
|
var sId = layero.find('#ProfileClass').val();
|
|
|
|
if (!sId) {
|
|
showMsg(i18next.t("message.DeleteItem_Required")); //╠message.DeleteItem_Required⇒請選擇要刪除的項目╣
|
|
return false;
|
|
}
|
|
CallAjax(ComFn.W_Com, ComFn.GetDel, {
|
|
Params: {
|
|
profiles: {
|
|
SN: sId
|
|
}
|
|
}
|
|
}, function (res) {
|
|
if (res.d > 0) {
|
|
fnSetProfileDrop(layero.find('#ProfileClass'));
|
|
layero.find('#ProfileName').val('');
|
|
layero.find('#lstRight').html('');
|
|
layero.find('#lstLeft').html(createOptions(saItems, 'id', 'text', true));
|
|
layero.find('#lstLeft').find('option:first').remove();
|
|
showMsg(i18next.t("message.Delete_Success"), 'success'); // ╠message.Delete_Success⇒刪除成功╣
|
|
}
|
|
else {
|
|
showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
|
|
}
|
|
}, function () {
|
|
showMsg(i18next.t("message.Delete_Failed"), 'error'); // ╠message.Delete_Failed⇒刪除失敗╣
|
|
});
|
|
};
|
|
|
|
getHtmlTmp('/Page/Pop/ProfileFees.html').done(function (html) {
|
|
layer.open({
|
|
type: 1,
|
|
title: i18next.t('common.ProfileFees'),// ╠common.ProfileFees⇒個人化費用項目╣
|
|
shadeClose: false,
|
|
shade: 0.1,
|
|
maxmin: true, //开启最大化最小化按钮
|
|
area: ['600px', '500px'],
|
|
content: html,
|
|
success: function (layero, index) {
|
|
var elIistLeft = layero.find('#lstLeft'),
|
|
elLstRight = layero.find('#lstRight');
|
|
fnSetProfileDrop(layero.find('#ProfileClass'));
|
|
fnSetArgDrop([
|
|
{
|
|
ArgClassID: 'FeeClass',
|
|
Select: elIistLeft,
|
|
ShowId: true,
|
|
CallBack: function (data) {
|
|
saItems = data;
|
|
}
|
|
}
|
|
]).done(function () {
|
|
elIistLeft.find('option:first').remove();
|
|
optionListSearch(elIistLeft, elLstRight, layero.find('#ProfileFilter'));
|
|
});
|
|
layero.find('#ProfileClass').on('change', function () {
|
|
var sProfile = this.value,
|
|
saProfileSet = [];
|
|
if (sProfile) {
|
|
var oProfileGet = $.grep(saProfileGets, function (e) { return e.SN.toString() === sProfile; })[0];
|
|
saProfileSet = JSON.parse(oProfileGet.ProfileSet || '[]');
|
|
layero.find('#ProfileName').val(oProfileGet.ProfileName);
|
|
}
|
|
else {
|
|
layero.find('#ProfileName').val('');
|
|
}
|
|
elLstRight.html('');
|
|
elIistLeft.html(createOptions(saItems, 'id', 'text', true)).find('option:first').remove();
|
|
layero.find('#lstLeft option').each(function () {
|
|
var sId = $(this).val();
|
|
if (saProfileSet.indexOf(sId) > -1) {
|
|
$(this).appendTo(elLstRight);
|
|
}
|
|
});
|
|
});
|
|
layero.find('.cusclass-add').on('click', function () {
|
|
fnAddProfile(layero);
|
|
});
|
|
layero.find('.cusclass-upd').on('click', function () {
|
|
fnUpdProfile(layero);
|
|
});
|
|
layero.find('.cusclass-del').on('click', function () {
|
|
fnDelProfile(layero);
|
|
});
|
|
layero.find('#btnToRight').on('click', function () {
|
|
optionListMove(elIistLeft, elLstRight);
|
|
});
|
|
layero.find('#btnToLeft').on('click', function () {
|
|
optionListMove(elLstRight, elIistLeft);
|
|
});
|
|
layero.find('#btnToUp').on('click', function () {
|
|
optionListOrder(elLstRight, true);
|
|
});
|
|
layero.find('#btnToDown').on('click', function () {
|
|
optionListOrder(elLstRight, false);
|
|
});
|
|
transLang(layero);
|
|
},
|
|
btn: [i18next.t('common.Confirm'), i18next.t('common.Cancel')],//╠common.Confirm⇒確定╣╠common.Cancel⇒取消╣
|
|
yes: function (index, layero) {
|
|
var saRetn = [];
|
|
layero.find('#lstRight option').each(function () {
|
|
var sId = $(this).val();
|
|
saRetn.push({
|
|
guid: guid(),
|
|
FinancialCode: $(this).val(),
|
|
FinancialCostStatement: $(this).text(),
|
|
Memo: '',
|
|
FinancialCurrency: 'NTD',
|
|
FinancialUnitPrice: '0',
|
|
FinancialNumber: '',
|
|
FinancialUnit: '',
|
|
FinancialAmount: '0',
|
|
FinancialExchangeRate: '1',
|
|
FinancialTWAmount: '0',
|
|
FinancialTaxRate: '0',
|
|
FinancialTax: '0',
|
|
CreateUser: parent.UserID,
|
|
CreateDate: newDate()
|
|
});
|
|
});
|
|
if (typeof option.Callback === 'function') option.Callback(saRetn);
|
|
layer.close(index);
|
|
},
|
|
cancel: function () {
|
|
if (typeof option.CancelCallback === 'function') option.CancelCallback();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 複製費用項目
|
|
* @param {Object} option 配置
|
|
*/
|
|
w.fnCopyFee = function (option) {
|
|
option = option || {};
|
|
var oGrid = null,
|
|
oBilllist = null,
|
|
saLastData = [],
|
|
saFeeList = [],
|
|
fnGetBillList = function (exhibitionno, billno, flag) {
|
|
return g_api.ConnectLite(Service.opm, 'GetBillInfos',
|
|
{
|
|
ExhibitionNO: exhibitionno || '',
|
|
BillNO: billno || ''
|
|
},
|
|
function (res) {
|
|
if (res.RESULT) {
|
|
var saData = res.DATA.rel;
|
|
if (saData.length > 0) {
|
|
saLastData = JSON.parse(saData[0].FeeItems);
|
|
}
|
|
else {
|
|
saLastData = [];
|
|
}
|
|
if (flag) {
|
|
if (saData.length > 0) {
|
|
var sBilllistHtml = '';
|
|
$.each(saData, function (idx, _data) {
|
|
sBilllistHtml += (idx === 0 ? '<li class="active">' : '<li>') + _data.BillNO + '</li>';
|
|
});
|
|
oBilllist.html(sBilllistHtml).find('li').click(function () {
|
|
oBilllist.find('li').removeClass('active');
|
|
var sBillNO = $(this).addClass('active').text(),
|
|
sExhibitionNO = $('#ExhibitionName').val();
|
|
fnGetBillList(sExhibitionNO, sBillNO, false);
|
|
});
|
|
}
|
|
else {
|
|
oBilllist.html('');
|
|
}
|
|
}
|
|
oGrid.jsGrid("loadData");
|
|
}
|
|
});
|
|
}, //╠common.ExhibitionName⇒展覽名稱╣ ╠common.BillNO⇒帳單號碼╣
|
|
sContent = '<style>.select2-container--open { z-index: 1000000001;}.jsgrid-header-cell{padding:0 0;}</style>\
|
|
<div class="row popsrow">\
|
|
<label class="col-sm-2 control-label wright" for="input-Default"><span data-i18n="common.ExhibitionName">展覽名稱</span>:</label>\
|
|
<div class="col-sm-4">\
|
|
<select class="form-control" id="ExhibitionName"></select>\
|
|
</div>\
|
|
<label class="col-sm-1 control-label wright" for="input-Default"><span data-i18n="common.BillNO">帳單號碼</span>:</label>\
|
|
<div class="col-sm-4">\
|
|
<input type="text" class="form-control w100p" id="BillNO" maxlength="50">\
|
|
</div>\
|
|
</div>\
|
|
<div class="row popsrow">\
|
|
<div class="col-sm-2">\
|
|
<div class="bill-box slimscroll">\
|
|
<ul class="bill-list">\
|
|
</ul>\
|
|
</div>\
|
|
</div>\
|
|
<div class="col-sm-10">\
|
|
<div id="jsGrid_Fees"></div>\
|
|
</div>\
|
|
<div class="col-sm-2"></div>\
|
|
</div>';
|
|
layer.open({
|
|
type: 1,
|
|
title: i18next.t('common.CopyFeeItems'),//╠common.CopyFeeItems⇒複製費用項目╣
|
|
shadeClose: false,
|
|
shade: 0.1,
|
|
maxmin: true, //开启最大化最小化按钮
|
|
area: ['800px', '500px'],
|
|
content: sContent,
|
|
success: function (layero, index) {
|
|
fnSetEpoDrop({
|
|
Select: $('#ExhibitionName'),
|
|
Select2: true
|
|
});
|
|
oBilllist = layero.find('.bill-list');
|
|
|
|
oGrid = $("#jsGrid_Fees").jsGrid({
|
|
width: "100%",
|
|
height: "320px",
|
|
autoload: true,
|
|
filtering: false,
|
|
pageLoading: true,
|
|
pageIndex: 1,
|
|
pageSize: 10000,
|
|
fields: [
|
|
{
|
|
name: "OrderBy", title: '#', width: 30, align: "center"
|
|
},
|
|
{
|
|
width: 50, sorting: false, align: "center",
|
|
headerTemplate: function () {
|
|
return [$("<input>", {
|
|
id: 'SelectAll',
|
|
type: 'checkbox', click: function () {
|
|
if (this.checked) {
|
|
$("#jsGrid_Fees").find('[type=checkbox]').each(function () {
|
|
this.checked = true;
|
|
});
|
|
saFeeList = clone(saLastData);
|
|
}
|
|
else {
|
|
$("#jsGrid_Fees").find('[type=checkbox]').each(function () {
|
|
this.checked = false;
|
|
});
|
|
saFeeList = [];
|
|
}
|
|
}
|
|
}), $('<label />', { for: 'SelectAll', 'data-i18n': 'common.SelectAll' })];//╠common.SelectAll⇒全選╣
|
|
},
|
|
itemTemplate: function (value, item) {
|
|
return $("<input>", {
|
|
type: 'checkbox', click: function (e) {
|
|
e.stopPropagation();
|
|
if (this.checked) {
|
|
saFeeList.push(item);
|
|
}
|
|
else {
|
|
var saNewList = [];
|
|
$.each(saFeeList, function (idx, data) {
|
|
if (item.guid !== data.guid) {
|
|
saNewList.push(data);
|
|
}
|
|
});
|
|
saFeeList = saNewList;
|
|
$('#jsGrid_Fees').find('#SelectAll')[0].checked = false;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
{
|
|
name: "FinancialCode", title: 'common.Financial_Code', width: 70, type: "text"
|
|
},
|
|
{
|
|
name: "FinancialCostStatement", title: 'common.Financial_CostStatement', width: 150, type: "text",
|
|
itemTemplate: function (val, item) {
|
|
return val === '' ? item.Memo : val;
|
|
}
|
|
},
|
|
{
|
|
name: "FinancialCurrency", title: 'common.Financial_Currency', width: 60, type: "text", align: "center"
|
|
},
|
|
{
|
|
name: "FinancialUnitPrice", title: 'common.Financial_UnitPrice', width: 80, align: "right", type: "text",
|
|
itemTemplate: function (val, item) {
|
|
return fMoney(val || 0, 2);
|
|
}
|
|
},
|
|
{
|
|
name: "FinancialNumber", title: 'common.Financial_Number', width: 80, type: "text", align: "right"
|
|
},
|
|
{
|
|
name: "FinancialUnit", title: 'common.Financial_Unit', width: 80, type: "text"
|
|
},
|
|
{
|
|
name: "FinancialAmount", title: 'common.Financial_Amount', width: 80, type: "text", align: "right",
|
|
itemTemplate: function (val, item) {
|
|
return fMoney(val || 0, 2);
|
|
}
|
|
},
|
|
{
|
|
name: "FinancialExchangeRate", title: 'common.ExchangeRate', width: 60, type: "text", align: "center"
|
|
},
|
|
{
|
|
name: "FinancialTWAmount", title: 'common.Financial_TWAmount', width: 80, align: "right", type: "text",
|
|
itemTemplate: function (val, item) {
|
|
return fMoney(val || 0, 2);
|
|
}
|
|
},
|
|
{
|
|
name: "FinancialTaxRate", title: 'common.Financial_TaxRate', width: 60, align: "center", type: "text"
|
|
},
|
|
{
|
|
name: "FinancialTax", title: 'common.Financial_Tax', width: 80, align: "right", type: "text",
|
|
itemTemplate: function (val, item) {
|
|
return fMoney(val || 0, 2);
|
|
}
|
|
}
|
|
],
|
|
controller: {
|
|
loadData: function (args) {
|
|
return {
|
|
data: saLastData,
|
|
itemsCount: saLastData.length //data.length
|
|
};
|
|
}
|
|
}
|
|
});
|
|
layero.find('.layui-layer-btn1').css({ 'border-color': '#4898d5', 'background-color': '#1E9FFF', 'color': '#fff' });
|
|
},
|
|
btn: [i18next.t('common.Toolbar_Qry'), i18next.t('common.Confirm'), i18next.t('common.Cancel')],//╠common.Toolbar_Qry⇒查詢╣ ╠common.Confirm⇒確定╣ ╠common.Cancel⇒取消╣
|
|
yes: function (index, layero) {
|
|
var sExhibitionNO = layero.find('#ExhibitionName').val(),
|
|
sBillNO = layero.find('#BillNO ').val();
|
|
fnGetBillList(sExhibitionNO, sBillNO, true);
|
|
},
|
|
btn2: function (index, layero) {
|
|
if (typeof option.Callback === 'function') option.Callback(saFeeList);
|
|
layer.close(index);
|
|
}
|
|
});
|
|
};
|
|
|
|
w.fnGetCurrencyByYear = function (opm) {
|
|
|
|
return g_api.ConnectLite('CurrencySetup_Qry', 'GetCurrencyByYear', {
|
|
year: opm.Year
|
|
}, function (res) {
|
|
if (res.RESULT) {
|
|
var saList = res.DATA.rel;
|
|
|
|
if (opm.CallBack && typeof opm.CallBack === 'function') {
|
|
opm.CallBack(saList);
|
|
}
|
|
}
|
|
}, {}, false);
|
|
};
|
|
|
|
w.roundDecimal = function (val, precision) {
|
|
return Math.round(Math.round(val * Math.pow(10, (precision || 0) + 1)) / 10) / Math.pow(10, (precision || 0));
|
|
};
|
|
|
|
|
|
/**
|
|
* 檢驗單據是否有權限存取
|
|
* @param {Object} option 配置
|
|
*/
|
|
w.ExhibitionBillAuthorize = function (Opm) {
|
|
//人員:負責業務、創建人、老闆、部門主管、直屬主管
|
|
//角色:財務組、Admin
|
|
//BillAutherizedList 例外清單
|
|
var BillAutherizedList = parent.SysSet.BillAutherizedList.toLowerCase().indexOf(parent.UserID) > -1;
|
|
var AccessAuthorize = false;
|
|
var CurrentUserID = parent.UserID;
|
|
var ResponsibleToThisExhibition = Opm.ResponsiblePerson === CurrentUserID || Opm.CreateUser === CurrentUserID;
|
|
if (!ResponsibleToThisExhibition && !BillAutherizedList) {
|
|
var QueryData = {
|
|
RuleID: 'Account,Admin',
|
|
ResponsiblePerson: Opm.ResponsiblePerson
|
|
};
|
|
g_api.ConnectLite(Service.opm, 'GetExhibitionBillAuthorize', QueryData, function (res) {
|
|
if (res.RESULT) {
|
|
AccessAuthorize = res.DATA.rel.indexOf(parent.UserID) > -1
|
|
}
|
|
else {
|
|
AccessAuthorize = false;
|
|
}
|
|
}, {}, false);
|
|
}
|
|
return ResponsibleToThisExhibition || AccessAuthorize || BillAutherizedList;
|
|
};
|
|
|
|
|
|
/**
|
|
* 開放權限可以編輯
|
|
*/
|
|
w.fnOpenAccountingArea = function (group, userid) {
|
|
if (userid.indexOf('Admin') > -1 || userid.indexOf('Account') > -1 && group.length > 0) {
|
|
group.find('input').removeAttr('disabled');
|
|
group.find('select').removeAttr('disabled');
|
|
}
|
|
};
|
|
|
|
|
|
/**
|
|
* 計算報價費用
|
|
*/
|
|
w.fnCalcuQuotationFee = function (OriginFeeField, CountFeeField, CurrencyID, ExchangeRate) {
|
|
let RoundingPoint = CurrencyID === 'NTD' ? 0 : 2;
|
|
$.each(CountFeeField, function (idx, item) {
|
|
var OFF = OriginFeeField[idx];
|
|
if ('TG,TE'.indexOf(parent.OrgID) > -1)
|
|
RoundingPoint = 0;
|
|
let prepay = 0;
|
|
if ($(OFF).find('.prepay').val())
|
|
prepay = roundDecimal(parseFloat($(OFF).find('.prepay').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let subtotal = roundDecimal(parseFloat($(OFF).find('.subtotal').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let taxtotal = roundDecimal(parseFloat($(OFF).find('.taxtotal').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let boxtotal = (subtotal + taxtotal) - prepay;
|
|
//let boxtotal = roundDecimal(parseFloat($(OFF).find('.boxtotal').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
$(item).find('.mprepay ').val(fMoney(prepay, RoundingPoint, ''));
|
|
$(item).find('.msubtotal').val(fMoney(subtotal, RoundingPoint, ''));
|
|
$(item).find('.mtaxtotal').val(fMoney(taxtotal, RoundingPoint, ''));
|
|
$(item).find('.mboxtotal').val(fMoney(boxtotal, RoundingPoint, ''));
|
|
});
|
|
};
|
|
|
|
w.fnCalcuBillsFee = function (oBillBox, OriginFeeField, CountFeeField, CurrencyID, ExchangeRate) {
|
|
let RoundingPoint = CurrencyID === 'NTD' ? 0 : 2;
|
|
if ('TG,TE'.indexOf(parent.OrgID) > -1) {
|
|
RoundingPoint = 0;
|
|
}
|
|
let OFF = oBillBox.find(OriginFeeField);
|
|
let iAdvance = roundDecimal(parseFloat($(OFF).find('.prepay').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let iSubtotal = roundDecimal(parseFloat($(OFF).find('.subtotal').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let iTaxtotal = roundDecimal(parseFloat($(OFF).find('.taxtotal').val().replaceAll(',', '')) * ExchangeRate, RoundingPoint);
|
|
let iTaxSubtotal = iSubtotal + iTaxtotal;
|
|
let iPaytotal = iTaxSubtotal - iAdvance;
|
|
//let iTaxSubtotal = parseFloat($(OFF).find('.boxtotal').val().replaceAll(',', '')) * ExchangeRate;
|
|
//let iPaytotal = parseFloat($(OFF).find('.paytotal').val().replaceAll(',', '')) * ExchangeRate;
|
|
oBillBox.find(CountFeeField + ' .mprepay').val(fMoney(iAdvance, RoundingPoint, ''));
|
|
oBillBox.find(CountFeeField + ' .msubtotal').val(fMoney(iSubtotal, RoundingPoint, ''));
|
|
oBillBox.find(CountFeeField + ' .mtaxtotal').val(fMoney(iTaxtotal, RoundingPoint, ''));
|
|
oBillBox.find(CountFeeField + ' .mboxtotal').val(fMoney(iTaxSubtotal, RoundingPoint, ''));
|
|
oBillBox.find(CountFeeField + ' .mpaytotal').val(fMoney(iPaytotal, RoundingPoint, ''));
|
|
};
|
|
|
|
/**
|
|
* 輸入預收事件
|
|
*/
|
|
w.SetBillPrepayEvent = function SetBillPrepayEvent(oBillBox, bill) {
|
|
oBillBox.find('[data-id="Advance"]').on('keyup blur', function (e) {
|
|
//bill.AmountTaxSum紀錄外幣為主
|
|
var ExchangeRate = (bill.ExchangeRate || 1.00);
|
|
var iAdvance = parseFloat((this.value === '' ? '0' : this.value).replaceAll(',', ''));
|
|
var iTotal = bill.AmountTaxSum;
|
|
var iTotalReceivable = iTotal - iAdvance;
|
|
oBillBox.find('.paytotal').val(fMoney(iTotalReceivable, 2, bill.Currency));
|
|
bill.Advance = iAdvance;
|
|
bill.TotalReceivable = iTotalReceivable;
|
|
var iAdvance_main = iAdvance * ExchangeRate;
|
|
var iTotal_main = iTotal * ExchangeRate;
|
|
oBillBox.find('[data-id="mAdvance"]').val(fMoney(iAdvance_main, 0, 'NTD'));
|
|
oBillBox.find('.mpaytotal').val(fMoney((iTotal_main - iAdvance_main), 0, 'NTD'));
|
|
});
|
|
oBillBox.find('[data-id="mAdvance"]').on('keyup blur', function (e) {
|
|
var ExchangeRate = (bill.ExchangeRate || 1.00);
|
|
var iAdvance = parseFloat((this.value === '' ? '0' : this.value).replaceAll(',', ''));
|
|
var iTotal = parseFloat((bill.AmountTaxSum || 0) * ExchangeRate);
|
|
oBillBox.find('.mpaytotal').val(fMoney((iTotal - iAdvance), 0, 'NTD'));
|
|
var iAdvance_foreign = iAdvance / ExchangeRate;
|
|
var iTotal_foreign = bill.AmountTaxSum;
|
|
var TotalReceivable_foreign = iTotal_foreign - iAdvance_foreign;
|
|
oBillBox.find('[data-id="Advance"]').val(fMoney(iAdvance_foreign, 2, bill.Currency));
|
|
oBillBox.find('.paytotal').val(fMoney(TotalReceivable_foreign, 2, bill.Currency));
|
|
bill.Advance = iAdvance_foreign;
|
|
bill.TotalReceivable = TotalReceivable_foreign;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 檢查主幣別
|
|
*/
|
|
w.fnCheckMainOrForeignCurrency = function (chosenCurrency) {
|
|
var TWDAsAMainCurrency = 'TE,TG'.indexOf(parent.OrgID) > -1;
|
|
var UsingMainCurrency = false;
|
|
switch (TWDAsAMainCurrency) {
|
|
case true:
|
|
{
|
|
if (chosenCurrency === 'NTD') {
|
|
UsingMainCurrency = true;
|
|
}
|
|
}
|
|
break;
|
|
case false:
|
|
{
|
|
if (chosenCurrency === 'CNY' || chosenCurrency === 'RMB') {
|
|
UsingMainCurrency = true;
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return UsingMainCurrency;
|
|
};
|
|
|
|
})(jQuery, window, document);
|