var Bizgaze;
(function (Bizgaze) {
let Apps;
(function (Apps) {
let Transact;
(function (Transact) {
let Controls;
(function (Controls) {
class Eb extends Unibase.Platform.Core.BaseComponent {
constructor() {
super(...arguments);
this.ebcontainer = "";
this.deleted_EBs = new Array();
this.itemIds = new Array();
}
init(formpropertyid, prop, callback) {
let instance = this;
let jsFiles = ["apps/transact/controls/invoices/invoiceitem.component.js", "apps/crm/contacts/managers/contactmanager.js", "apps/transact/managers/invoicemanager.js", "platform/core/helpers/numberhelper/numberhelper.js", "libs/jquery/pagination/jquery.pagination.js"];
instance.fileCacheHelper.loadJsFiles(jsFiles, function () {
instance._invoiceItems = Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance();
instance.deleted_EBs = [];
instance.itemIds = [];
instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
});
}
loadControl(containerid, prop) {
var instance = this;
let html = `
`;
$("#" + containerid).html(html);
instance.ebcontainer = containerid;
}
loadControlSettings(controlsettingjson, formpropertyid) {
var instance = this;
instance.loadEBs();
}
loadPropertySettings(propertysettings, formpropertyid) {
return null;
}
bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
return null;
}
getEbItems() {
var instance = this;
var EBs = instance.getEBs();
return EBs;
}
addEBDatarow() {
var instance = this;
$('.divDescriptionDetails').addClass('hidden');
instance.addEBRow(0, 0, 0, "", 0.0, 0, 1, "", null);
}
addEBRow(orderId, EBId, EBContactId, EBName, volume, InvoiceId, FillType, Notes, EBItemList) {
var instance = this;
var padding = "";
if (EBId) {
padding = "m-t";
}
var html = '';
$(".EB-row:last").after(html);
var element = $(".EB-row:last");
element.find('.EB_Volume').on('click', function () {
$(".divDescriptionDetails").addClass("hidden");
$(this).parents('.addedEB-row').find(".divDescriptionDetails").removeClass('hidden');
});
if (EBItemList != null || EBItemList != undefined) {
for (var i = 0; i < EBItemList.length; i++) {
instance.addEBItemrow(EBItemList[i], element);
}
}
else {
instance.addEBItemrow(null, element);
}
element.find(".EBDesc").val(Notes);
element.find("#cmbFillType").val(FillType);
var TotalVolume = 0;
element.find(".EB-Itemrow").each(function () {
if ($(this).find(".EBItem_Volume").val() != 0 && $(this).find(".EBItem_Volume").val() != undefined) {
TotalVolume += Number($(this).find(".EBItem_Volume").val());
}
});
element.find(".EB_Volume").text(TotalVolume);
element.find(".txt_EBName,.EBName-link").focusin(function () {
if (element.find(".hf_EBId").val() != -1) {
$(".divDescriptionDetails").addClass("hidden");
element.find(".divDescriptionDetails").toggleClass("hidden");
}
});
var txtEBName = element.find(".txt_EBName");
var hfSelectedEBId = element.find(".hf_EBId");
if (hfSelectedEBId.val() == -1) {
$("#addEBrow").addClass('hidden');
}
var url = _appsettings.server_url() + '/apis/v4/bizgaze/crm/contacts/getcontactebs';
AutoCompleteHelper.getHelper().Create(txtEBName, hfSelectedEBId, url, function (response) {
if (hfSelectedEBId.val() != 0) {
element.find(".EB_volume").removeClass('hidden');
$(".divDescriptionDetails").addClass('hidden');
element.find(".divDescriptionDetails").removeClass('hidden');
}
if (hfSelectedEBId.val() == -1) {
$(".divDescriptionDetails").addClass('hidden');
$("#addEBrow").addClass('hidden');
}
else {
var hfSelectedEBItemId = element.find(".hf_EBItemId");
instance.loadItemAutoComplete(element, "0", hfSelectedEBItemId);
}
$('.txt_EBName + .select2-container').width(421.987);
});
element.find(".EBdelete").on('click', function () {
bootbox.confirm("You are about to delete the EB. Are you sure?", function (result) {
if (result) {
element.find(".EB-Itemrow").each(function () {
var Ebid = $(this).find(".hf_InvEBId").val();
element.remove();
if (Ebid != "0" && Ebid != undefined) {
instance.deleted_EBs.push(Number(Ebid));
}
});
if (hfSelectedEBId.val() == -1) {
$("#addEBrow").removeClass('hidden');
}
}
});
});
element.find("#addEBItemrow").on('click', function () {
instance.addEBItemrow(null, element);
});
}
addEBItemrow(EBItemList, EBelement) {
var instance = this;
var ItemName = "";
var ItemId = 0;
var Volume = 0;
var EBId = 0;
var SKU = "";
if (EBItemList != null || EBItemList != undefined) {
EBId = EBItemList.EBId;
ItemName = EBItemList.ItemName;
ItemId = EBItemList.ItemId;
Volume = EBItemList.Volume;
SKU = EBItemList.SKU;
}
var floting = "";
if (ItemId == 0) { }
floting = "floating-label-form-group";
var html = '';
EBelement.find(".EB-Itemrow:last").after(html);
var element = EBelement.find(".EB-Itemrow:last");
var lobid = $(".hfAutoCompleteId_lobid").val();
var Dcid = Controls.InvoiceItem.Instance().dcid;
if (lobid == 0)
lobid = $("#cmbInv_Lob").val();
var txtEBItemName = element.find(".txt_EBItemName");
var hfSelectedEBItemId = element.find(".hf_EBItemId");
var selectitemids = "";
EBelement.find(".EB-Itemrow").each(function () {
if ($(this).find(".hf_EBItemId").val() != 0 && $(this).find(".hf_EBItemId").val() != undefined) {
selectitemids += $(this).find(".hf_EBItemId").val() + ",";
}
});
var url = "";
var invoiceid = $(".hdn_invoiceid").val();
if (selectitemids == '')
selectitemids = '0';
if ($(".hdn_invoiceid").val() != 0 && $(".hdn_invoiceid").val() != undefined) {
url = _appsettings.server_url() + '/apis/v4/bizgaze/transact/invoices/autopendingebitemsforinvoicebyinvoiceid/invoiceid/' + $(".hdn_invoiceid").val() + '/itemids/' + selectitemids;
AutoCompleteHelper.getHelper().Create(txtEBItemName, hfSelectedEBItemId, url, function (response) {
var data = response;
});
}
else {
instance.loadItemAutoComplete(element, selectitemids, hfSelectedEBItemId);
}
element.find(".EBItemdelete").on('click', function () {
bootbox.confirm("You are about to delete the EB. Are you sure?", function (result) {
if (result) {
var Ebid = element.find(".hf_InvEBId").val();
element.remove();
if (Ebid != "0") {
$(this).parent().find(".EB_Volume").val();
instance.deleted_EBs.push(Number(Ebid));
var TotalVolume = Number(EBelement.find(".EB_Volume").html());
TotalVolume -= Number(element.find(".EBItem_Volume").val());
EBelement.find(".EB_Volume").text(TotalVolume);
}
}
});
});
element.find(".EBItem_Volume").blur(function () {
var TotalVolume = 0;
if (element.find(".hf_EBItemId").val() == 0) {
MessageHelper.Instance().showError("please select EB Item", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
return false;
}
var checkingInvoiceItemQty = true;
$(".InvoiceItems").find(".item-row").each(function () {
if ($(this).children().length > 0) {
if ($(this).find(".selectedItemId").val() == element.find(".hf_EBItemId").val()) {
if ($(this).find(".selectedItemId").val() != "" && $(this).find(".selectedItemId").val() != "0" && $(this).find(".prodQuantity").val() > 0) {
var invoiceQty = Number($(this).find(".prodQuantity").val());
if (checkingInvoiceItemQty)
checkingInvoiceItemQty = instance.checkingInvoiceItemQuantitywithEBItemQuantity(invoiceQty, $(this).find(".selectedItemId").val());
}
}
}
});
if (!checkingInvoiceItemQty) {
if ($(".hdn_invoiceid").val() != 0)
MessageHelper.Instance().showError("EB Volume must be less than or equal to invoiced Quantity", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
else
MessageHelper.Instance().showError("Please Adjust the EB Volumes", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
element.find(".EBItem_Volume").val(0);
return false;
}
EBelement.find(".EB-Itemrow").each(function () {
if ($(this).find(".EBItem_Volume").val() != 0 && $(this).find(".EBItem_Volume").val() != undefined) {
TotalVolume += Number($(this).find(".EBItem_Volume").val());
}
});
EBelement.find(".EB_Volume").text(TotalVolume);
});
}
checkingInvoiceItemQuantitywithEBItemQuantity(invoiceItemQty, ItemId) {
var EBItemQuantity = 0;
$(".EB-row").each(function () {
if ($(this).find(".hf_EBId").val() != undefined || $(this).find(".hf_EBId").val() != -1) {
$(this).find(".EB-Itemrow").each(function () {
if ($(this).find(".hf_EBItemId").val() != undefined && $(this).find(".hf_EBItemId").val() == ItemId) {
EBItemQuantity += Number($(this).find(".EBItem_Volume").val());
}
});
}
});
if (EBItemQuantity > invoiceItemQty) {
return false;
}
else
return true;
}
loadEBs() {
var instance = this;
$('.addedEB-row').remove();
var url = "";
if ($(".hdn_invoiceid").val() != 0)
url = '/apis/v4/bizgaze/transact/invoices/GetOpportunityEBsByInvoiceId/InvoiceId/' + $(".hdn_invoiceid").val();
else
url = '/apis/v4/bizgaze/transact/invoices/GetEBsDetailsByOrderId/OrderId/' + Number($(".hdn_orderid").val());
Bizgaze.Apps.Transact.Managers.InvoiceManager.Instance().loadEbs(url).then(function (response) {
var data = response;
if (data.result.length > 0) {
var EbsList = instance.EBsgroupByEbContactId(data.result, 'EBContactId');
Object.keys(EbsList).forEach(function (k) {
var Ebdata = EbsList[k];
var EBItemList = new Array();
for (var i = 0; i < Ebdata.length; i++) {
EBItemList.push({
EBId: Number(Ebdata[i].EBId),
ItemId: Number(Ebdata[i].ItemId),
Volume: Number(Ebdata[i].Volume),
ItemName: Ebdata[i].ItemName,
SKU: Ebdata[i].SKU
});
}
instance.addEBRow(Ebdata[0].OrderId, Ebdata[0].EBId, Ebdata[0].EBContactId, Ebdata[0].EBName, Ebdata[0].Volume, Ebdata[0].InvoiceId, Ebdata[0].FillType, Ebdata[0].Notes, EBItemList);
});
}
else {
instance.addEBRow(0, 0, 0, "", 0.0, 0, 1, "", null);
}
}, function (response) {
Unibase.Platform.Forms.Components.FormViewer.Instance().showError(response.responseText);
});
}
EBsgroupByEbContactId(objectArray, property) {
return objectArray.reduce((acc, obj) => {
const key = obj[property] + '-' + obj["FillType"];
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(obj);
return acc;
}, {});
}
getEBs() {
var instance = this;
var checkingInvoiceItemQty = true;
$(".InvoiceItems").find(".item-row").each(function () {
if ($(this).find(".selectedInvoiceItemId").val() != undefined) {
if ($(this).find(".selectedItemId").val() != "" && $(this).find(".selectedItemId").val() != "0" && $(this).find(".prodQuantity").val() > 0) {
var invoiceQty = Number($(this).find(".prodQuantity").val());
if (checkingInvoiceItemQty)
checkingInvoiceItemQty = instance.checkingInvoiceItemQuantitywithEBItemQuantity(invoiceQty, $(this).find(".selectedItemId").val());
}
}
});
if (!checkingInvoiceItemQty) {
if ($(".hdn_invoiceid").val() != 0)
MessageHelper.Instance().showError("EB Volume must be less than or equal to invoiced Quantity", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
else
MessageHelper.Instance().showError("EB volume (EB Info section) cannot be more than Total volume", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
return;
}
var EBList = new Array();
$(".EB-row").each(function () {
if ($(this).find(".hf_EBId").val() != undefined) {
if ($(this).find(".hf_EBId").val() != "" && $(this).find(".hf_EBId").val() != "0") {
var OrderId = Number($(this).find("hfOrderEBId").val());
var EBContactId = Number($(this).find(".hf_EBId").val());
var FillType = Number($(this).find('#cmbFillType').val());
var Notes = $(this).find('.EBDesc').val();
if (OrderId == null)
OrderId = 0;
if ($(this).find(".hf_EBId").val() != -1) {
$(this).find(".EB-Itemrow").each(function () {
if ($(this).find(".hf_EBItemId").val() != undefined && $(this).find(".hf_EBItemId").val() != 0) {
EBList.push({
OrderId: isNaN(OrderId) ? 0 : OrderId,
EBId: Number($(this).find(".hf_InvEBId").val()),
EBContactId: Number(EBContactId),
Volume: Number($(this).find(".EBItem_Volume").val()),
InvoiceId: 0,
ItemId: Number($(this).find(".hf_EBItemId").val()),
FillType: FillType,
Notes: Notes,
DeletedEbs: []
});
}
});
}
else {
EBList.push({
OrderId: isNaN(OrderId) ? 0 : OrderId,
EBId: isNaN(Number($(this).find(".hf_InvEBId").val())) ? 0 : Number($(this).find(".hf_InvEBId").val()),
EBContactId: EBContactId,
Volume: 0,
InvoiceId: 0,
ItemId: 0,
FillType: FillType,
Notes: Notes,
DeletedEbs: []
});
}
}
}
});
if ($('.section_Ebs').is(":visible") && EBList.length == 0) {
MessageHelper.Instance().showError("EB information is mandatory.", $("#form-container-" + $("#hf_FormId").val()).find(".bizgaze_FormErrorMessages").attr('id'));
return false;
}
else if (instance.deleted_EBs.length > 0) {
EBList[0].DeletedEbs = instance.deleted_EBs;
}
return EBList;
}
loadItemAutoComplete(element, selectitemids, hfSelectedEBItemId) {
let userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
let sessionid = userinfo.sessionId;
let postData = null;
var selecteditems = selectitemids.split(',');
var ids = [];
for (var i = 0; i <= Controls.InvoiceItem.instance.itemIds.length; i++) {
let index = Controls.InvoiceItem.instance.itemIds.findIndex(x => x == selecteditems[i]);
if (index == -1 && Controls.InvoiceItem.instance.itemIds[i] != null) {
ids.push(Controls.InvoiceItem.instance.itemIds[i]);
}
}
element.find(".txt_EBItemName").select2({
placeholder: "Select",
tags: false,
allowClear: true,
theme: "default select2ErrorClass w-100",
data: [],
ajax: {
url: function (request) {
let reqUrl = _appsettings.server_url() + '/apis/v4/bizgaze/transact/items/getebitemsforinvoice';
return reqUrl;
},
type: "POST",
contentType: 'application/json',
dataType: 'json',
data: function (params) {
let Term = params.term;
sessionid = sessionid.replace('#', '');
if (selectitemids == '') {
ids = Controls.InvoiceItem.instance.itemIds;
}
postData = {
LobId: Number($(".hfAutoCompleteId_lobid").val()),
ItemIds: ids,
term: Term,
};
return JSON.stringify(postData);
},
beforeSend: function (xhr) {
if (userinfo !== undefined && userinfo !== null) {
xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
}
},
processResults: function (data) {
return {
results: jQuery.map(JSON.parse(data.result), function (item) {
return {
id: item.Value,
text: item.SelectText,
addlInfo: item.addlData
};
})
};
},
},
}).on('select2:select', function (e) {
var result = e.params.data;
$(hfSelectedEBItemId).val(result.id);
});
}
static Instance() {
if (this.instance === undefined) {
this.instance = new Eb();
}
return this.instance;
}
}
Controls.Eb = Eb;
})(Controls = Transact.Controls || (Transact.Controls = {}));
})(Transact = Apps.Transact || (Apps.Transact = {}));
})(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
})(Bizgaze || (Bizgaze = {}));