'use strict';
var sProgramId = getProgramId(),
sQueryPrgId = getQueryPrgId(),
sAction = getUrlParam('Action') || 'Add',
sDataId = getUrlParam('ImportBillNO'),
sGoTab = getUrlParam('GoTab'),
sBillNOGO = getUrlParam('BillNO'),
sAppointNO = getUrlParam('AppointNO'),
sCheckId = sDataId,
fnPageInit = function () {
var FeeItemCurrency = "TE,TG".indexOf(parent.UserInfo.OrgID) > -1 ? 'NTD' : 'RMB';
var oValidator = null,
oForm = $('#form_main'),
oCurData = {},
oPrintMenu = {},
saCustomers = [],
saCurrency = [],
saFeeClass = [],
sServiceCode = '',
sDeptCode = '',
sCustomersOptionsHtml = '',
sCustomersNotAuditOptionsHtml = '',
sCurrencyOptionsHtml = '',
sAccountingCurrencyOptionsHtml = '',
saAccountingCurrency = [],
nowResponsiblePerson = '',
/**
* 獲取資料
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2017/01/05
* 最新修改人:John
* 最新修日期:2017/01/05
*/
fnGet = function () {
if (sDataId) {
return CallAjax(ComFn.W_Com, ComFn.GetOne, {
Type: '',
Params: {
otherexhibition: {
Guid: sDataId
},
}
}, function (res) {
var oRes = $.parseJSON(res.d);
$('#VoidReason').text(oRes.VoidReason);
if (oRes.VoidReason) { $('.voidreason').show(); } else { $('.voidreason').hide(); }
if (oRes.IsVoid == 'Y') {
$('#Toolbar_Void').attr({ 'id': 'Toolbar_OpenVoid', 'data-i18n': 'common.Toolbar_OpenVoid' });
}
else {
$('#Toolbar_OpenVoid').attr({ 'id': 'Toolbar_Void', 'data-i18n': 'common.Toolbar_Void' });
}
transLang($('#Toolbar'));
});
}
else {
oCurData.Quote = { guid: guid(), KeyName: 'Quote', AuditVal: '0', FeeItems: [] };
if (sAppointNO) {
oCurData.Quote.FeeItems = [{
guid: guid(),
FinancialCode: "TEC06",
FinancialCostStatement: "堆高機",
FinancialCurrency: "NTD",
FinancialUnitPrice: 876.19,
FinancialNumber: "1",
FinancialUnit: "SHPT",
FinancialAmount: 876.19,
FinancialExchangeRate: "1",
FinancialTWAmount: 876.19,
FinancialTaxRate: "0.05",
FinancialTax: 43.81,
Memo: "",
CreateUser: "peter.yang",
CreateDate: "2018/08/14 16:39:14"
}];
}
oCurData.EstimatedCost = { guid: guid(), KeyName: 'EstimatedCost', AuditVal: '0', FeeItems: [] };
oCurData.ActualCost = { guid: guid(), KeyName: 'ActualCost', AuditVal: '0', FeeItems: [] };
oCurData.Bills = [];
$('#Contactor').html(createOptions([]));
fnSetPermissions();
return $.Deferred().resolve().promise();
}
},
/**
* 新增或修改完之后重新查询资料
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2017/01/05
* 最新修改人:John
* 最新修日期:2017/01/05
*/
fnReSet = function () {
fnGet().done(function (res) {
var oRes = $.parseJSON(res.d);
$('#VoidReason').text(oRes.VoidReason);
if (oRes.VoidReason) { $('.voidreason').show(); } else { $('.voidreason').hide(); }
getPageVal(); //緩存頁面值,用於清除
});
},
/**
* 新增資料
* @param sFlag{String} 新增或儲存後新增
* @return 無
* 起始作者:John
* 起始日期:2016/05/21
* 最新修改人:John
* 最新修日期:2016/11/03
*/
fnAdd = function (flag) {
var data = getFormSerialize(oForm);
data = packParams(data);
data.OrgID = parent.OrgID;
data.Weight = data.Weight == '' ? 0 : data.Weight;
data.IsVoid = 'N';
data.DepartmentID = sDeptCode;
data.Quote = oCurData.Quote || {};
data.Quote.AuditVal = oCurData.Quote.AuditVal || '0';
data.Quote.FeeItems = oCurData.Quote.FeeItems || [];
data.EstimatedCost = oCurData.EstimatedCost || {};
data.EstimatedCost.AuditVal = oCurData.EstimatedCost.AuditVal || '0';
data.EstimatedCost.FeeItems = oCurData.EstimatedCost.FeeItems || [];
data.ActualCost = oCurData.ActualCost || {};
data.ActualCost.AuditVal = oCurData.ActualCost.AuditVal || '0';
data.ActualCost.FeeItems = oCurData.ActualCost.FeeItems || [];
data.Bills = oCurData.Bills || [];
data.Quote = JSON.stringify(data.Quote);
data.EstimatedCost = JSON.stringify(data.EstimatedCost);
data.ActualCost = JSON.stringify(data.ActualCost);
data.Bills = JSON.stringify(data.Bills);
if (data.Contactor) {
data.ContactorName = $('#Contactor option:selected').text();
}
else {
data.ContactorName = '';
}
if (data.AgentContactor) {
data.AgentContactorName = $('#AgentContactor option:selected').text();
}
else {
data.AgentContactorName = '';
}
if (data.ExhibitionNO) {
data.ImportBillName = $('#ExhibitionNO option:selected').text();
}
else {
data.ImportBillName = '';
}
if (!data.ArrivalTime) delete data.ArrivalTime;
if (!data.FreePeriod) delete data.FreePeriod;
if (!data.ApproachTime) delete data.ApproachTime;
if (!data.ExitTime) delete data.ExitTime;
if (!data.ExhibitionDateStart) delete data.ExhibitionDateStart;
if (!data.ExhibitionDateEnd) delete data.ExhibitionDateEnd;
data.Guid = sDataId = guid();
CallAjax(ComFn.W_Com, ComFn.GetAdd, {
Params: { otherexhibition: data }
}, function (res) {
if (res.d > 0) {
bRequestStorage = false;
if (sAppointNO) {
fnUpdAppointTag(data.Guid);
}
if (flag == 'add') {
showMsgAndGo(i18next.t("message.Save_Success"), sProgramId, '?Action=Upd&ImportBillNO=' + sDataId); // ╠message.Save_Success⇒新增成功╣
}
else {
showMsgAndGo(i18next.t("message.Save_Success"), sProgramId, '?Action=Add'); // ╠message.Save_Success⇒新增成功╣
}
}
else {
showMsg(i18next.t("message.Save_Failed"), 'error'); // ╠message.Save_Failed⇒新增失敗╣
}
});
},
fnGetBillLogData = function (Bill) {
var LogData = {};
LogData.OrgID = parent.OrgID;
LogData.BillNO = Bill.BillNO;
LogData.ExhibitioName = oCurData.ImportBillName; //ExhibitioName
LogData.PayerName = '';
if (Bill.Payer) {
var PayerData = Enumerable.From(saCustomers).Where(function (e) { return e.id === Bill.Payer; }).First();
LogData.PayerName = PayerData.text;
}
LogData.ResponsiblePersonName = oCurData.ResponsiblePerson;
LogData.Currency = Bill.Currency;
LogData.ExchangeRate = Bill.ExchangeRate;
LogData.Advance = Bill.Advance;
LogData.AmountSum = Bill.AmountSum;
LogData.TaxSum = Bill.TaxSum;
LogData.AmountTaxSum = Bill.AmountTaxSum;
LogData.TotalReceivable = Bill.TotalReceivable;
LogData.OpmBillCreateUserName = oCurData.CreateUser;
LogData.ModifyUser = parent.UserID;
return LogData;
},
/**
* 修改資料
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2016/05/21
* 最新修改人:John
* 最新修日期:2016/11/03
*/
fnUpd = function () {
var data = getFormSerialize(oForm);
data = packParams(data, 'upd');
data.Weight = data.Weight == '' ? 0 : data.Weight;
data.IsVoid = oCurData.IsVoid;
data.Quote = oCurData.Quote || {};
data.Quote.AuditVal = oCurData.Quote.AuditVal || '0';
data.Quote.FeeItems = oCurData.Quote.FeeItems || [];
data.EstimatedCost = oCurData.EstimatedCost || {};
data.EstimatedCost.AuditVal = oCurData.EstimatedCost.AuditVal || '0';
data.EstimatedCost.FeeItems = oCurData.EstimatedCost.FeeItems || [];
data.ActualCost = oCurData.ActualCost || {};
data.ActualCost.AuditVal = oCurData.ActualCost.AuditVal || '0';
data.ActualCost.FeeItems = oCurData.ActualCost.FeeItems || [];
data.Bills = oCurData.Bills || [];
data.Quote = JSON.stringify(data.Quote);
data.EstimatedCost = JSON.stringify(data.EstimatedCost);
data.ActualCost = JSON.stringify(data.ActualCost);
data.Bills = JSON.stringify(data.Bills);
if (data.Contactor) {
data.ContactorName = $('#Contactor option:selected').text();
}
else {
data.ContactorName = '';
}
if (data.AgentContactor) {
data.AgentContactorName = $('#AgentContactor option:selected').text();
}
else {
data.AgentContactorName = '';
}
if (data.ExhibitionNO) {
data.ImportBillName = $('#ExhibitionNO option:selected').text();
}
else {
data.ImportBillName = '';
}
if (!data.ArrivalTime) delete data.ArrivalTime;
if (!data.FreePeriod) delete data.FreePeriod;
if (!data.ApproachTime) delete data.ApproachTime;
if (!data.ExitTime) delete data.ExitTime;
if (!data.ExhibitionDateStart) delete data.ExhibitionDateStart;
if (!data.ExhibitionDateEnd) delete data.ExhibitionDateEnd;
delete data.Guid;
if (!data.ArrivalTime) delete data.ArrivalTime;
if (!data.FreePeriod) delete data.FreePeriod;
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
Params: {
otherexhibition: {
values: data,
keys: { Guid: sDataId }
}
}
}, function (res) {
if (res.d > 0) {
bRequestStorage = false;
showMsg(i18next.t("message.Modify_Success"), 'success'); //╠message.Modify_Success⇒修改成功╣
if (window.bLeavePage) {
setTimeout(function () {
pageLeave();
}, 1000);
}
fnUpdateBillInfo(sProgramId, sDataId);
oCurData.ResponsiblePerson = data.ResponsiblePerson;
}
else {
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
nowResponsiblePerson = oCurData.ResponsiblePerson;
}
}, function () {
showMsg(i18next.t("message.Modify_Failed"), 'error');//╠message.Modify_Failed⇒修改失敗╣
nowResponsiblePerson = oCurData.ResponsiblePerson;
});
},
/**
* 資料刪除
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2016/05/21
* 最新修改人:John
* 最新修日期:2016/11/03
*/
fnDel = function () {
CallAjax(ComFn.W_Com, ComFn.GetDel, {
Params: {
otherexhibition: {
Guid: sDataId
}
}
}, function (res) {
if (res.d > 0) {
showMsgAndGo(i18next.t("message.Delete_Success"), sQueryPrgId); // ╠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⇒刪除失敗╣
});
},
/**
* 資料作廢
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2016/05/21
* 最新修改人:John
* 最新修日期:2016/11/03
*/
fnVoid = function () {
layer.open({
type: 1,
title: i18next.t('common.Toolbar_Void'), // ╠common.Toolbar_Void⇒作廢╣
shade: 0.75,
maxmin: true, //开启最大化最小化按钮
area: ['500px', '250px'],
content: '
\
\
',
btn: [i18next.t('common.Confirm'), i18next.t('common.Cancel')],//╠common.Confirm⇒確定╣╠common.Cancel⇒取消╣
success: function (layero, index) {
},
yes: function (index, layero) {
var data = {
IsVoid: 'Y',
VoidReason: $('#VoidContent').val()
};
if (!$('#VoidContent').val()) {
showMsg(i18next.t("message.VoidReason_Required")); // ╠message.VoidReason_Required⇒請填寫作廢原因╣
return false;
}
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
Params: {
otherexhibition: {
values: data,
keys: { Guid: sDataId }
}
}
}, function (res) {
if (res.d > 0) {
showMsg(i18next.t("message.Void_Success"), 'success'); // ╠message.Void_Success⇒作廢成功╣
fnReSet();
}
else {
showMsg(i18next.t('message.Void_Failed'), 'error'); // ╠message.Void_Failed⇒作廢失敗╣
}
});
layer.close(index);
}
});
},
/**
* 資料作廢
* @param 無
* @return 無
* 起始作者:John
* 起始日期:2016/05/21
* 最新修改人:John
* 最新修日期:2016/11/03
*/
fnOpenVoid = function () {
var data = {
IsVoid: 'N',
VoidReason: ''
};
CallAjax(ComFn.W_Com, ComFn.GetUpd, {
Params: {
otherexhibition: {
values: data,
keys: { Guid: sDataId }
}
}
}, function (res) {
if (res.d > 0) {
showMsg(i18next.t("message.OpenVoid_Success"), 'success'); // ╠message.OpenVoid_Success⇒啟用成功╣
fnReSet();
}
else {
showMsg(i18next.t("message.OpenVoid_Failed"), 'error'); // ╠message.OpenVoid_Failed⇒啟用失敗╣
}
}, function () {
showMsg(i18next.t("message.OpenVoid_Failed"), 'error'); // ╠message.OpenVoid_Failed⇒啟用失敗╣
});
},
/**
* 預設預約單資料
*/
fnInitAppoint = function () {
g_api.ConnectLite(Service.opm, 'InitAppoint', {
AppointNO: sAppointNO
}, function (res) {
var oRes = res.DATA.rel,
sContactorVal = '';
if (oRes.Supplier) {
var oCur = Enumerable.From(saCustomers).Where(function (e) { return e.id == oRes.Supplier; }),
saContactors = [];
if (oCur.Count() > 0) {
saContactors = JSON.parse(oCur.First().Contactors || '[]');
}
$('#Contactor').html(createOptions(saContactors, 'guid', 'FullName')).val(oRes.Contactor);
$.each(saContactors, function (index, item) {
if (item.FullName === oRes.Contactor) {
sContactorVal = item.guid;
return false;
}
});
}
else {
$('#Contactor').html(createOptions([]));
}
setFormVal(oForm, oRes.Base);
$('#Contactor').val(sContactorVal);
$('#ExhibitionDateStart').val(newDate(oRes.Base.ExhibitionDateStart, 'date', true));
$('#ExhibitionDateEnd').val(newDate(oRes.Base.ExhibitionDateEnd, 'date', true));
});
},
/**
* 如果有預設預約單資料,新增完則回寫該ID到預約單
* @param {String} id 【其他】ID
*/
fnUpdAppointTag = function (id) {
CallAjax(ComFn.W_Com, ComFn.GetUpd,
{
Params: {
packingorder: {
values: {
OtherId: id,
OtherIdFrom: 'OtherBusiness_Upd'
},
keys: {
AppointNO: sAppointNO,
OrgID: parent.OrgID
}
}
}
});
},
/**
* 設定客戶下拉選單
* @param 無
* @return 無
*/
fnSetCustomersDrop = function () {
return g_api.ConnectLite(Service.sys, 'GetCustomerlist', {}, function (res) {
if (res.RESULT) {
saCustomers = res.DATA.rel;
var saContactors = [];
if (saCustomers.length > 0) {
sCustomersOptionsHtml = createOptions(saCustomers, 'id', 'text');
$('#Supplier').html(sCustomersOptionsHtml).on('change', function () {
var sId = this.value;
if (sId) {
var oCur = Enumerable.From(saCustomers).Where(function (item) { return item.id === sId; }).First();
saContactors = JSON.parse(oCur.Contactors || '[]');
$('#Contactor').html(createOptions(saContactors, 'guid', 'FullName')).off('change').on('change', function () {
var sContactor = this.value;
if (sContactor) {
CallAjax(ComFn.W_Com, ComFn.GetOne, {
Type: '',
Params: {
customers: {
guid: sId
},
}
}, function (res) {
var oRes = $.parseJSON(res.d);
if (oRes.Contactors) {
oRes.Contactors = $.parseJSON(oRes.Contactors || '[]');
var sContactorName = $(this).find('option:selected').text(),
oContactor = Enumerable.From(oRes.Contactors).Where(function (e) { return e.guid == sContactor; }).First();
$('#SupplierEamil').val(oContactor.Email);
$('#Telephone').val(oContactor.TEL1);
$('#SitiContactor').val(sContactorName);
$('#SitiTelephone').val(oContactor.TEL1);
}
});
}
else {
$('#SupplierEamil').val('');
$('#Telephone').val('');
$('#SitiContactor').val('');
$('#SitiTelephone').val('');
}
});
}
else {
$('#Contactor').html(createOptions([]));
$('#Telephone').val('');
}
});
var saContactors_Agent = [];
$('#Agent').html(sCustomersOptionsHtml).on('change', function () {
var sId = this.value;
if (sId) {
var oCur = Enumerable.From(saCustomers).Where(function (e) { return e.id == sId; }).First();
saContactors_Agent = JSON.parse(oCur.Contactors || '[]');
$('#AgentContactor').html(createOptions(saContactors_Agent, 'guid', 'FullName')).off('change').on('change', function () {
var sContactor = this.value;
if (sContactor) {
var oContactor = Enumerable.From(saContactors_Agent).Where(function (e) { return e.guid == sContactor; }).First();
$('#AgentEmail,#RefNumberEmail').val(oContactor.Email);
$('#AgentTelephone').val(oContactor.TEL1);
}
else {
$('#AgentEmail,#RefNumberEmail').val('');
$('#AgentTelephone').val('');
}
bRequestStorage = true;
});
}
else {
$('#AgentContactor').html(createOptions([]));
}
});
$('#ImportPerson').html(sCustomersOptionsHtml);
var saNotAuditCurs = Enumerable.From(saCustomers).Where(function (e) { return e.IsAudit == 'Y'; }).ToArray();
sCustomersNotAuditOptionsHtml = createOptions(saNotAuditCurs, 'id', 'text');
}
select2Init();
}
});
},
/**
* 取得當年度幣值設定
*/
fnGetCurrencyThisYear = function (BillCreateTime) {
return fnGetCurrencyByYear({
Year: BillCreateTime, CallBack: function (data) {
saAccountingCurrency = data;
sAccountingCurrencyOptionsHtml = createOptions(saAccountingCurrency, 'ArgumentID', 'ArgumentValue', false, 'Correlation');
}
});
},
/**
* 審核通過後禁用頁面欄位
* @param dom{Object}當前區塊
* @return 無
* 起始作者:John
* 起始日期:2017/01/05
* 最新修改人:John
* 最新修日期:2017/01/05
*/
fnSetDisabled = function (dom, data) {
if (data) {
dom.find('.bill-status-box').show();
dom.find('.notpass-reason-box').hide();
var DraftRecipt = false;
switch (data.AuditVal) {
case '0':// ╠common.NotAudit⇒未提交審核╣
dom.find('.bill-status').text(i18next.t("common.NotAudit")).css('color', 'red');
dom.find('.billpost,.cancelpost,.writeoff,.canceloff,.reedit,.cancelreedit').hide();
dom.find('.submittoaudit,.synquote,.alreadyaudit').show();
dom.find('.alreadyaudit,.cancelaudi,.cancelpost,.writeoff').attr('disabled', 'disabled');
if (parent.UserInfo.MemberID === oCurData.ResponsiblePerson || parent.UserInfo.MemberID === oCurData.CreateUser) {
if (data.FeeItems.length > 0) {
dom.find('.submittoaudit').removeAttr('disabled');
dom.parent().next().find('.synquote').removeAttr('disabled');
}
else {
dom.find('.submittoaudit').prop('disabled', true);
dom.parent().next().find('.synquote').prop('disabled', true);
}
}
else {
if (data.KeyName === 'Bill') {
dom.find(':input,textarea,.alreadyaudit,.cancelaudi,.cancelpost,.writeoff').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
}
}
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.prepay,.mprepay,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
dom.find('.bills-print').removeAttr('disabled');
DraftRecipt = true;
break;
case '1':// ╠common.InAudit⇒提交審核中╣
dom.find('.bill-status').text(i18next.t("common.InAudit")).css('color', 'blue');
dom.find('.billpost,.cancelpost,.writeoff,.canceloff,.cancelaudi').hide();
dom.find('.submittoaudit,.synquote,.alreadyaudit,.reedit,.cancelreedit').show();
dom.find(':input,textarea,.plusfeeitem,.plusfeeitemstar,.importfeeitem,.copyfeeitem,select,.submittoaudit,.synquote,.billpost,.cancelaudi,.cancelpost,.writeoff').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
if (parent.UserInfo.MemberID === oCurData.ResponsiblePerson || parent.UserInfo.MemberID === oCurData.CreateUser) {
dom.find('.reedit').removeAttr('disabled');
}
if (parent.UserInfo.UsersDown.indexOf(oCurData.ResponsiblePerson) > -1 || parent.UserInfo.UsersBranch.indexOf(oCurData.ResponsiblePerson) > -1 || parent.SysSet.BillAuditor.indexOf(parent.UserInfo.MemberID) > -1) {
dom.find('.alreadyaudit').removeAttr('disabled');
}
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.reedit,.cancelreedit').hide();
dom.find('.prepay,.mprepay,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
dom.find('.bills-print').removeAttr('disabled');
break;
case '2':// ╠common.Audited⇒已審核╣
dom.find('.bill-status').text(i18next.t("common.Audited")).css('color', 'green');
dom.find('.submittoaudit,.synquote,.alreadyaudit,.writeoff,.canceloff,.reedit,.cancelreedit').hide();
dom.find('.billpost,.cancelpost,.cancelaudi,.writeoff').show();
dom.find(':input,textarea,.plusfeeitem,.plusfeeitemstar,.importfeeitem,.copyfeeitem,select,.submittoaudit,.synquote,.billpost,.alreadyaudit,.cancelpost,.writeoff,[data-id="Payer"]').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
dom.find('.bills-print').removeAttr('disabled');
if (parent.UserInfo.MemberID === oCurData.ResponsiblePerson || parent.UserInfo.MemberID === oCurData.CreateUser) {
dom.find('.billpost,.receiptnumberbtn,.checkauditdate').removeAttr('disabled');
}
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.prepay,.mprepay,.cancelaudi,.billvoid,.writeoff').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
dom.find('.billpost,.cancelpost').hide();
}
else {
dom.find('.billdelete').hide();
}
break;
case '3':// ╠common.NotPass⇒不通過╣
dom.find('.notpass-reason-text').text(data.NotPassReason || '');
dom.find('.bill-status').text(i18next.t("common.NotPass")).css('color', 'red');
dom.find('.billpost,.cancelpost,.writeoff,.canceloff,.reedit,.cancelreedit').hide();
dom.find('.submittoaudit,.synquote,.alreadyaudit,.notpass-reason-box').show();
if (parent.UserInfo.MemberID === oCurData.ResponsiblePerson || parent.UserInfo.MemberID === oCurData.CreateUser) {
if (data.FeeItems.length > 0) {
dom.find('.submittoaudit').removeAttr('disabled');
dom.parent().next().find('.synquote').removeAttr('disabled');
}
else {
dom.find('.submittoaudit').prop('disabled', true);
dom.parent().next().find('.synquote').prop('disabled', true);
}
}
else {
dom.find(':input,textarea,.alreadyaudit,.cancelaudi,.cancelpost,.writeoff').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
}
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.prepay,.mprepay,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
break;
case '4':// ╠common.NotPass⇒已銷帳╣
dom.find('.bill-status').text(i18next.t("common.HasBeenRealized")).css('color', 'red');
dom.find('.submittoaudit,.synquote,.alreadyaudit,.cancelaudi,.billpost,.cancelpost,.writeoff,.reedit,.cancelreedit').hide();
dom.find('.canceloff').show();
dom.find(':input,textarea,.plusfeeitem,.plusfeeitemstar,.importfeeitem,.copyfeeitem,select,.alreadyaudit,.cancelaudi,.cancelpost,.writeoff,.submittoaudit,.synquote,.billpost').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
dom.find('.bills-print').removeAttr('disabled');
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.canceloff,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
break;
case '5':// ╠common.HasBeenPost⇒已過帳╣
dom.find('.bill-status').text(i18next.t("common.HasBeenPost")).css('color', 'green');
dom.find('.billpost,.submittoaudit,.synquote,.alreadyaudit,.cancelaudi,.reedit,.cancelreedit').hide();
dom.find('.cancelpost,.writeoff,.canceloff').show();
dom.find(':input,textarea,.plusfeeitem,.plusfeeitemstar,.importfeeitem,.copyfeeitem,select,.alreadyaudit,.cancelaudi,.cancelpost,.writeoff,.bills-print,.submittoaudit,.synquote,.billpost').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
dom.find('.bills-print').removeAttr('disabled');
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.cancelpost,.writeoff,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
break;
case '6':// ╠common.HasVoid⇒已作廢╣
dom.find('.notpass-reason-text').text(data.VoidReason || '');
dom.find('.bill-status').text(i18next.t("common.HasVoid")).css('color', '#b2b1b1');
dom.find('button').not('.plusfeeitem').hide();
dom.find('.notpass-reason-box').show();
dom.find(':input,textarea').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.billvoid').removeAttr('disabled');
}
break;
case '7':// ╠common.HasReEdit⇒抽單中╣
dom.find(':input,textarea').removeAttr('disabled');
dom.find('.icon-p').removeClass('disabled');
dom.find('.bill-status').text(i18next.t("common.HasReEdit")).css('color', 'blue');
dom.find('.submittoaudit,.synquote,.alreadyaudit').show();
dom.find('.billpost,.cancelpost,.writeoff,.canceloff').hide();
dom.find('.alreadyaudit,.cancelaudi,.cancelpost,.writeoff,.bills-print,.submittoaudit,.synquote,.reedit').attr('disabled', 'disabled');
if (parent.UserInfo.MemberID === oCurData.ResponsiblePerson || parent.UserInfo.MemberID === oCurData.CreateUser) {//如果有資料且是null或者N
dom.find('.cancelreedit').removeAttr('disabled');
}
else {
if (data.KeyName === 'Bill') {
dom.find(':input,textarea,.alreadyaudit,.cancelaudi,.cancelpost,.writeoff').attr('disabled', 'disabled');
dom.find('.icon-p').addClass('disabled');
}
}
if (parent.UserInfo.roles.indexOf('Account') > -1) {//會計
dom.find('.prepay,.mprepay,.billvoid').removeAttr('disabled');
}
else {
dom.find('.billvoid').hide();
}
if (parent.UserInfo.roles.indexOf('Admin') > -1) {//超級管理員
dom.find('.billdelete').removeAttr('disabled');
}
else {
dom.find('.billdelete').hide();
}
break;
}
if (DraftRecipt) {
dom.find("[data-action='Print_Receipt']").hide();
dom.find("[data-action='Download_Receipt']").hide();
}
else {
dom.find("[data-action='Print_Receipt']").show();
dom.find("[data-action='Download_Receipt']").show();
}
if (parent.UserInfo.roles.indexOf('Business') > -1) {
dom.find('[data-id="ExchangeRate"]').attr('disabled', 'disabled');
}
fnOpenAccountingArea(dom.find('.OnlyForAccounting'), parent.UserInfo.roles);
}
},
/**
* 綁定費用項目
* @param {Array} files 上傳的文件
*/
fnBindFeeItem = function (dom, data, flag) {
$.each(data.FeeItems, function (idx, item) {
item.OrderBy = idx + 1;
item.FinancialUnitPrice = parseFloat((item.FinancialUnitPrice || '0').toString().replaceAll(',', ''));
item.FinancialAmount = parseFloat((item.FinancialAmount || '0').toString().replaceAll(',', ''));
item.FinancialTWAmount = parseFloat((item.FinancialTWAmount || '0').toString().replaceAll(',', ''));
item.FinancialTax = parseFloat((item.FinancialTax || '0').toString().replaceAll(',', ''));
});
data.FeeItems = Enumerable.From(data.FeeItems).OrderBy("x=>x.OrderBy").ToArray();
var sFeeItemsHtml = '',
iSubtotal = 0,
iSubtotal_Tax = 0,
iSubtotal_NoTax = 0,
iTaxtotal = 0,
iTaxSubtotal = 0,
oFinancial = dom.parents('.financial'),
sDomId = dom.attr('data-id'),
bForn = (data.Currency === undefined || data.Currency === 'NTD'),
iOldBoxTotal = parseFloat((oFinancial.find('.boxtotal').val() || '0').replaceAll(',', '')),
oTab = dom.parents('.tab-pane');
$.each(data.FeeItems, function (idx, item) {
sFeeItemsHtml += ''
+ '' + (idx + 1) + ' | '
+ '' + item.FinancialCode + ' | '
+ '' + (!item.FinancialCostStatement ? item.Memo : item.FinancialCostStatement + (!item.Memo ? '' : '(' + item.Memo + ')')) + ' | '
+ '' + item.FinancialCurrency + ' | '
+ '' + fMoney(item.FinancialUnitPrice, 2) + ' | '
+ '' + item.FinancialNumber + ' | '
+ '' + item.FinancialUnit + ' | '
+ '' + fMoney(item.FinancialAmount, 2) + ' | '
+ '' + item.FinancialExchangeRate + ' | '
+ '' + fMoney(item.FinancialTWAmount, 2) + ' | '
+ '' + item.FinancialTaxRate + ' | '
+ '' + fMoney(item.FinancialTax, 2) + ' | '
+ (data.KeyName === 'ActualCost' ? ' | ' : '')
+ (!flag ? ''
+ ' '
+ ' '
+ ((data.FeeItems.length !== idx + 1) ? ' ' : ' ')
+ ((idx !== 0) ? ' ' : ' ')
+ ' | ' : '') +
+'
';
if (item.FinancialTaxRate.toString().replace('%', '') !== '0') {
iSubtotal_Tax += parseFloat(item.FinancialTWAmount);
}
else {
iSubtotal_NoTax += parseFloat(item.FinancialTWAmount);
}
});
//計算總計(total)依序:1.參數的幣值 2.抓到財務的Currency設定 3.再來設定台幣。
var CurrencyType = (data.Currency || oFinancial.find('[data-id="Currency"]').val()) || FeeItemCurrency;
dom.html(sFeeItemsHtml);
iSubtotal_Tax = fnRound(iSubtotal_Tax, data.Currency);
iSubtotal_NoTax = fnRound(iSubtotal_NoTax, data.Currency);
iSubtotal = fnRound(iSubtotal_Tax + iSubtotal_NoTax, CurrencyType);
var iTaxRate = parent.SysSet.TaxRate.toPoint();
iTaxtotal = fnRound(iSubtotal_Tax * (iTaxRate === 0 ? 0.05 : iTaxRate), CurrencyType);
iTaxSubtotal = iSubtotal + iTaxtotal;
oFinancial.find('.subtotal').val(fMoney(iSubtotal, 2, CurrencyType));
oFinancial.find('.taxtotal').val(fMoney(iTaxtotal, 2, CurrencyType));
oFinancial.find('.boxtotal').val(fMoney(iTaxSubtotal, 2, CurrencyType));
data.AmountSum = iSubtotal;
data.TaxSum = iTaxtotal;
data.AmountTaxSum = iTaxSubtotal;
switch (data.KeyName) {
//case 'Quote':
// fnCalcuQuotationFee(oFinancial.find('.QuotationForeignCurrency'), oFinancial.find('.QuotationMainCurrency'), data.QuotationOrBillingCurrency, data.AccountingExchangeRate);
// break;
//case 'Bill':
// fnCalcuBillsFee(oFinancial, '.BillForeignCurrency', '.BillMainCurrency', data.Currency, data.ExchangeRate);
// break;
case 'EstimatedCost':
$('.estimatedcostsum').val(fMoney(iSubtotal, 2, data.Currency));
break;
case 'ActualCost':
$('.actualsum').val(fMoney(iSubtotal, 2, data.Currency));
if (oCurData.ActualCost.TWAmountTaxSum > oCurData.EstimatedCost.TWAmountTaxSum) {
$('#tab3 #warnning_tips').show();
}
else {
$('#tab3 #warnning_tips').hide();
}
break;
case 'Bill':
$('#tab2').css({ 'padding-top': 40 });
var iAdvance = parseFloat(oFinancial.find('.prepay').val().replaceAll(',', '')),
iExchangeRate = data.ExchangeRate || 1;
data.TotalReceivable = iTaxSubtotal - iAdvance;
oFinancial.find('.subtotal').val(fMoney(iSubtotal, 2, data.Currency));
oFinancial.find('.taxtotal').val(fMoney(iTaxtotal, 2, data.Currency));
oFinancial.find('.boxtotal').val(fMoney(iTaxSubtotal, 2, data.Currency));
oFinancial.find('.paytotal').val(fMoney((iTaxSubtotal) - iAdvance, 2, data.Currency));
iOldBoxTotal = iOldBoxTotal * (bForn ? 1 : iExchangeRate);
if (data.AuditVal !== '6') {
// 匯率
let TabTipExchangeRate = (bForn ? 1 : iExchangeRate);
// 純稅金(本幣別)
let TabTipTaxtotal = fnRound(iTaxtotal * TabTipExchangeRate, FeeItemCurrency);
// 未稅總額(本幣別)
let TabTipUntaxtotal = fnRound(iSubtotal * TabTipExchangeRate, FeeItemCurrency);
var LastRowActualsum = parseFloat($('.amountsum').val().replaceAll(',', '')) - iOldBoxTotal;
$('.amountsum').val(fMoney(LastRowActualsum + TabTipUntaxtotal, 2, FeeItemCurrency));
}
break;
}
/*計算$$*/
if (oTab[0].id === 'tab2') {
if (data.KeyName === 'Bill')
fnCalcuBillsFee(oFinancial, '.BillForeignCurrency', '.BillMainCurrency', data.Currency, data.ExchangeRate);
else
fnCalcuQuotationFee(oFinancial.find('.QuotationForeignCurrency'), oFinancial.find('.QuotationMainCurrency'), data.QuotationOrBillingCurrency, data.AccountingExchangeRate);
}
dom.parents('.financial').find('.plusfeeitem').prop('disabled', false);
fnSetDisabled(oFinancial, data);
if (data.KeyName === 'ActualCost') {
var saBillPayers = function () {
var saRetn = [];
$.each(oCurData.Bills, function (idx, bill) {
if (!bill.VoidReason) {
var sPayer = '',
oCur = {};
if (bill.Payer) {
oCur = Enumerable.From(saCustomers).Where(function (e) { return e.id == bill.Payer; }).First();
}
saRetn.push({
id: bill.BillNO,
text: oCur.text,
val: bill.BillNO + '-' + (oCur.text || '') + '-' + bill.BillCreateDate
});
}
});
return saRetn;
}();
dom.find('.billpayer').each(function () {
var sGuid = $(this).attr('data-value'),
sBillNO = $(this).attr('data-billno'),
Selector = 'oBillPayers-' + sGuid;
$(this).append($('