Built files from Bizgaze WebServer
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

opportunityitem.component.js 170KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Bizgaze;
  11. (function (Bizgaze) {
  12. let Apps;
  13. (function (Apps) {
  14. let Transact;
  15. (function (Transact) {
  16. let Controls;
  17. (function (Controls) {
  18. class OpportunityItem extends Unibase.Platform.Core.BaseComponent {
  19. constructor() {
  20. super(...arguments);
  21. this.g_CartItems_New = [];
  22. this.g_PageIndex = 0;
  23. this.g_PacksFocus = true;
  24. this.g_PiecesFocus = false;
  25. this._opportunity = Bizgaze.Apps.Transact.Controls.Opportunity.Instance();
  26. this.g_SelectedItems = [];
  27. this.g_LoadedItems = [];
  28. this.WarehouseId = 0;
  29. this.g_ItemsUnitPrice_New = [];
  30. this.g_PriceTypeId = 1;
  31. this.g_AppliedTaxGroups = [];
  32. this.g_IsEnablePieces = false;
  33. this.g_IsEnablePacks = false;
  34. this.g_IsEnablePiecePrice = false;
  35. this.g_IsEnableCompositePrice = false;
  36. this.g_IsEnableCompositePiecePrice = false;
  37. this.g_ValidFocItems = [];
  38. this.g_WarehouseId = 0;
  39. this.g_IsExcise = false;
  40. this.g_OfferApplyDate = new Date();
  41. this.g_IsFilterApplied = false;
  42. this.g_TagArray = [];
  43. }
  44. init(formpropertyid, prop, callback) {
  45. return "";
  46. }
  47. loadControl(containerid, prop) {
  48. let instance = this;
  49. instance._opportunity.g_OpportunityTypeId = Number($(".hdn_opportunitytypeid").val());
  50. let html = '<div class="col-sm-12">' +
  51. '<input type = "hidden" id = "hdn_customcontrol" class="value-control" value = "Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().GetOpportunityItems();"' +
  52. '<div class="floating-label-form-group div_SearchItem">' +
  53. '<label for="txt_SearchItem" id="lbl_SearchItem">Search Items </label>' +
  54. '<div class="input-group">' +
  55. '<span class="input-group-prepend"></span>' +
  56. '<input type="search" id="txt_SearchItem" class="form-control floating-label-control" data-isdynamic="false" placeholder="Search Items" data-placeholder="Item Name (or) SKU" data-label="Search Items" autocomplete="on" />' +
  57. '<span class="input-group-prepend input-group-btn">';
  58. instance.fileCacheHelper.loadJsFile("apps/transact/enums/enum.js", function () {
  59. html += '<select id="ItemLoadType"><option value="1">All Items</option><option value="2">Opp Groups</option></select>';
  60. html += '</span>' +
  61. '</div>' +
  62. '</div>' +
  63. '</div>' +
  64. '<br/> <div class="InventorySettings"> </div>';
  65. $("#" + containerid).html(html);
  66. });
  67. }
  68. loadControlSettings(controlsettingjson, formpropertyid) {
  69. return "";
  70. }
  71. loadPropertySettings(propertysettings, formpropertyid, DocPropertyName) {
  72. return "";
  73. }
  74. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  75. return "";
  76. }
  77. LoadItems(SearchItem, OrganizationId, LoBId, ShipTo, BranchId, UpdateAvailability = false) {
  78. let instance = this;
  79. if (SearchItem == "Offers" || SearchItem == "All Items" || SearchItem == "Filter" || SearchItem == "Eligible Items") { }
  80. else
  81. SearchItem = (encodeURIComponent(encodeURIComponent(SearchItem).replace('*', '%2A').replace('.', '%2E'))).replace(/\%/g, '!');
  82. if (SearchItem == undefined || SearchItem == '') {
  83. SearchItem = ' ';
  84. }
  85. if (SearchItem == "Offers") {
  86. instance._opportunity.g_LoadOffersOnly = true;
  87. SearchItem = '';
  88. if (instance.g_IsFilterApplied) {
  89. instance.g_IsFilterApplied = false;
  90. instance.g_FilteredTags = '';
  91. instance.g_TagArray = [];
  92. Bizgaze.Apps.Transact.Components.OpportunityFilter.Instance().g_Tags = "";
  93. }
  94. }
  95. else if (SearchItem == "All Items") {
  96. instance._opportunity.g_LoadOffersOnly = false;
  97. instance._opportunity.g_LoadEligibleItemsOnly = false;
  98. instance.g_FilteredTags = '';
  99. instance.g_TagArray = [];
  100. Bizgaze.Apps.Transact.Components.OpportunityFilter.Instance().g_Tags = "";
  101. SearchItem = "";
  102. }
  103. else if (SearchItem == "Filter") {
  104. instance._opportunity.g_LoadOffersOnly = false;
  105. }
  106. else if (SearchItem == "Eligible Items") {
  107. instance._opportunity.g_LoadEligibleItemsOnly = true;
  108. SearchItem = "";
  109. }
  110. let PriceCodeId = instance._opportunity.g_PriceCodeId;
  111. let ContactId = OrganizationId;
  112. if (ContactId != undefined || ContactId != "") {
  113. }
  114. else
  115. ContactId = " ";
  116. if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesOpportunity) {
  117. instance.WarehouseId = Number($(".txtAutoComplete_shipfromaddressid").val());
  118. }
  119. else if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseOpportunity) {
  120. instance.WarehouseId = Number($(".txtAutoComplete_shippingaddressid").val());
  121. }
  122. if ((ShipTo == null || ShipTo == 0) && instance._opportunity.g_IsLead) {
  123. ShipTo = BranchId;
  124. }
  125. let varianturl;
  126. if (SearchItem.replace(" ", "") == "") {
  127. SearchItem = null;
  128. }
  129. if (Number(LoBId) == 0) {
  130. $(".InventorySettings").empty();
  131. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  132. }
  133. else {
  134. instance.fileCacheHelper.loadJsFile("apps/transact/managers/inventory/itemmanager.js", function () {
  135. let postdata = {
  136. PriceCodeId: Number(PriceCodeId),
  137. ContactId: ContactId,
  138. ShippingAddressId: Number(ShipTo),
  139. BranchId: Number(BranchId),
  140. WareHouseId: Number(instance.WarehouseId),
  141. LobId: Number(LoBId),
  142. OrderType: instance._opportunity.g_OpportunityTypeId,
  143. OfferOnly: instance._opportunity.g_LoadOffersOnly,
  144. IsExcise: instance.g_IsExcise,
  145. SearchTerm: SearchItem,
  146. Page: instance.g_PageIndex,
  147. IsCompositePrice: instance.g_IsEnableCompositePrice,
  148. IsPiecePrice: instance.g_IsEnablePiecePrice,
  149. IsCompositePiecePrice: instance.g_IsEnableCompositePiecePrice,
  150. Rows: 10,
  151. ItemId: "0",
  152. CountryId: instance._opportunity.g_CountryId,
  153. ItemGroupId: 0,
  154. Tags: Bizgaze.Apps.Transact.Components.OpportunityFilter.Instance().g_Tags,
  155. IsPoints: false,
  156. Points: instance._opportunity.g_LoyaltyPoints,
  157. IsEligibleItemsOnly: instance._opportunity.g_LoadEligibleItemsOnly
  158. };
  159. varianturl = Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getVariantsForOrder(postdata);
  160. instance.navigationHelper.showLoading();
  161. varianturl.then(function (response) {
  162. instance.navigationHelper.hideLoading();
  163. if (response.result.length > 0) {
  164. Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().Itempagination(response, OrganizationId, LoBId, ShipTo, BranchId);
  165. $("#btn_CheckOutOrder").removeClass("hidden");
  166. if (instance.g_CartItems_New.length == 0) {
  167. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  168. }
  169. instance.navigationHelper.hideLoading();
  170. }
  171. else {
  172. $(".div_titledetails").addClass("hidden");
  173. if (instance._opportunity.g_LoadOffersOnly) {
  174. $("#div_ItemList").html('<ul class="variant-list list-group" style="margin:0px -21px" id="Items-list"><li class="variant-item"><div class="text-center">Offer Items not found.</div></li></ul>');
  175. }
  176. else if (instance._opportunity.g_LoadEligibleItemsOnly) {
  177. $("#div_ItemList").html('<ul class="variant-list list-group" style="margin:0px -21px" id="Items-list"><li class="variant-item"><div class="text-center">Eligible Items not found.</div></li></ul>');
  178. }
  179. else {
  180. $("#div_ItemList").html('<ul class="variant-list list-group" style="margin:0px -21px" id="Items-list"><li class="variant-item"><div class="text-center">Items not found.</div></li></ul>');
  181. }
  182. }
  183. });
  184. });
  185. }
  186. }
  187. Itempagination(response, OrganizationId, LoBId, ShipTo, BranchId) {
  188. let instance = this;
  189. var totalCount = response.result[0].TotalRecords;
  190. response.result.forEach(x => {
  191. let LoadedItem_Index = instance.g_LoadedItems.findIndex(z => z.ItemId == x.ItemId);
  192. if (LoadedItem_Index == -1) {
  193. instance.g_LoadedItems.push(x);
  194. }
  195. else {
  196. instance.g_LoadedItems[LoadedItem_Index].TaxPercentList = x.TaxPercentList;
  197. }
  198. });
  199. if (instance.g_CartItems_New.length != 0) {
  200. instance.g_CartItems_New.forEach(x => {
  201. let LoadedItem_Index = response.result.findIndex(z => z.ItemId == x.ItemId);
  202. let ItemId = x.ItemId;
  203. if (LoadedItem_Index == -1) { }
  204. else {
  205. response.result.splice(LoadedItem_Index, 1);
  206. response.result.splice(response.result.length, 0, instance.g_CartItems_New[instance.g_CartItems_New.findIndex(z => z.ItemId == x.ItemId)]);
  207. }
  208. });
  209. }
  210. instance.N_bindItemList(response.result);
  211. if (response.result.length <= 10 && response.result.length != 0) {
  212. $('#div_OrderItems_pagination').removeClass('hidden');
  213. $('#ItemsListPagination').removeClass('hidden');
  214. let totalCount = response.result[0].TotalRecords;
  215. let startingValue = 0;
  216. let _count = 0;
  217. let t = (instance.g_PageIndex + 1) * 10;
  218. if (totalCount > 0) {
  219. startingValue = 1;
  220. _count = totalCount;
  221. }
  222. if (totalCount > t)
  223. _count = t;
  224. if (instance.g_PageIndex > 0) {
  225. startingValue += t - 10;
  226. }
  227. let res = startingValue + " - " + _count + " of " + totalCount;
  228. $('#lblItemTotalRecords').text(res);
  229. let elem = $('#ItemsListPagination');
  230. elem.pagination(response.result[0].TotalRecords, 10, {
  231. items_per_page: 10,
  232. callback: function (page, component) {
  233. instance.g_PageIndex = page;
  234. instance.LoadItems($("#txt_SearchItem").val(), OrganizationId, LoBId, ShipTo, BranchId);
  235. }, current_page: instance.g_PageIndex
  236. });
  237. }
  238. else {
  239. $('#lblItemTotalRecords').text(response.result.length);
  240. $("#ItemsListPagination").addClass("hidden");
  241. }
  242. }
  243. N_bindItemList(items) {
  244. let instance = this;
  245. let LobId = Number($(".txtAutoComplete_lobid").val());
  246. let BillingAddressId = Number($(".txtAutoComplete_billingaddressid").val());
  247. let BranchId = Number($(".txtAutoComplete_branchid").val());
  248. instance._opportunity.getInventoryApplyType(LobId, BillingAddressId, BranchId);
  249. instance._opportunity.getOrderSettings(LobId, BillingAddressId, BranchId);
  250. $("#div_ItemList").html('<ul class="variant-list list-group" id="Items-list"><li class="variant-item hidden"></li>');
  251. if (items.length == 0) {
  252. $(".variant-list").html('<li><div class="text-center">Items not found.</div></li></ul>');
  253. $(".div_titledetails").addClass("hidden");
  254. return false;
  255. }
  256. else
  257. $(".div_titledetails").removeClass("hidden");
  258. for (let i = 0; i < items.length; i++) {
  259. let data = items[i];
  260. var html = "";
  261. html = instance.N_getItemDesign(data);
  262. $(".variant-item:last").after(html);
  263. let element = $(".variant-item:last");
  264. instance.N_AllItemEvents(element);
  265. let SelItem = instance.g_SelectedItems.find(x => x.ItemId == data.ItemId);
  266. if (SelItem != null) {
  267. let element = $(".variant-item:last");
  268. instance.N_UpdateItemsDesign(element, "BindItemList");
  269. if (SelItem.Packs == 0) {
  270. $(element).find(".txtOrder_ItemCount").val("");
  271. }
  272. if (SelItem.Pieces == 0) {
  273. $(element).find(".txtOrder_ItemPieceCount").val("");
  274. }
  275. }
  276. else {
  277. $(element).find(".txtOrder_ItemCount").val("");
  278. $(element).find(".txtOrder_ItemPieceCount").val("");
  279. }
  280. }
  281. let pageHtml = "";
  282. pageHtml = '<div class="row mt-15"> ' +
  283. '<div class="col-sm-3">' +
  284. '<span class="text-dark padding-left: px-30">Total : <span id="lblItemTotalRecords" class="">0</span></span>' +
  285. '</div>' +
  286. '<div class="col-sm-9 hidden" id="div_OrderItems_pagination">' +
  287. '<div id="ItemsListPagination" class="pagination custom-pagination pagination-rounded pull-right mr-10"></div>' +
  288. '</div>' +
  289. '</div>';
  290. $(".variant-item:last").after(pageHtml);
  291. }
  292. N_AllItemEvents(elem) {
  293. let instance = this;
  294. if (!instance.g_PacksFocus && !instance.g_PiecesFocus) {
  295. if (instance.g_IsEnablePacks) {
  296. instance.g_PacksFocus = true;
  297. }
  298. else if (instance.g_IsEnablePieces) {
  299. instance.g_PiecesFocus = false;
  300. }
  301. }
  302. let timer;
  303. $(".mouseHoverClass").hover(function () {
  304. $(this).closest(".variant-item").find('.mouseHoverClass').css({ 'font-weight': 'bold' });
  305. }, function () { $(this).closest(".variant-item").find('.mouseHoverClass').css({ 'font-weight': '' }); });
  306. $(elem).find(".chk_PurPlanItem").unbind().click(function () {
  307. let element = elem;
  308. let ItemId = element.find(".hfOpportunity_ItemId").val();
  309. if ($(this).is(':checked')) {
  310. instance.N_updateItemsArray(element, "PurPlan");
  311. }
  312. else {
  313. Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().N_DeleteCartItems(ItemId);
  314. $("#ulOrder_Cart").find(".cartitem-" + ItemId).remove();
  315. }
  316. });
  317. $(".editCartItemQuantity").unbind().click(function () {
  318. let element = elem;
  319. element.find("._editCartItemQuantity").toggleClass("hidden");
  320. element.find(".editCartItemQuantity").toggleClass("hidden");
  321. element.find(".CartAvailability").toggleClass("hidden");
  322. });
  323. $(elem).find('.txtOrder_ItemCount').unbind().click(function () {
  324. instance.g_PacksFocus = true;
  325. instance.g_PiecesFocus = false;
  326. });
  327. $(elem).find('.txtOrder_ItemPieceCount').unbind().click(function () {
  328. instance.g_PiecesFocus = true;
  329. instance.g_PacksFocus = false;
  330. });
  331. $(elem).find(".txteditItemPrice").unbind().keyup(function () {
  332. clearTimeout(timer);
  333. timer = setTimeout(function () {
  334. let element = elem;
  335. instance.N_updateItemsArray(element, "UnitPrice");
  336. }, 300);
  337. });
  338. $(elem).find(".quantity-plus").unbind().click(function () {
  339. let element = elem;
  340. let Packs = Number(element.find(".txtOrder_ItemCount").val());
  341. let Pieces = 0;
  342. if (instance.g_IsEnablePieces) {
  343. Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  344. }
  345. if (Packs == 0 && Pieces > 0) {
  346. instance.g_PacksFocus = false;
  347. instance.g_PiecesFocus = true;
  348. }
  349. if (instance.g_PacksFocus) {
  350. if (element.find("#txt_Pieces").val() == 0) {
  351. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  352. }
  353. element.find('.divOrders_ItemCount').addClass('floating-label-form-group-with-value');
  354. let Packs = Number(element.find(".txtOrder_ItemCount").val());
  355. let val = instance.roundOffIgnoreZerosAfterDecimal(Packs + 1);
  356. element.find(".txtOrder_ItemCount").val(val);
  357. }
  358. if (instance.g_PiecesFocus) {
  359. element.find('.divOrders_ItemPieceCount').addClass('floating-label-form-group-with-value');
  360. let Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  361. let val = instance.roundOffIgnoreZerosAfterDecimal(Pieces + 1);
  362. element.find(".txtOrder_ItemPieceCount").val(val);
  363. }
  364. instance.N_updateItemsArray(element, "Plus");
  365. });
  366. $(elem).find(".quantity-minus").unbind().click(function () {
  367. let element = elem;
  368. let ItemId = element.find(".hfOpportunity_ItemId").val();
  369. let Packs = Number(element.find(".txtOrder_ItemCount").val());
  370. let Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  371. if (Packs == 0 && Pieces > 0) {
  372. instance.g_PacksFocus = false;
  373. instance.g_PiecesFocus = true;
  374. }
  375. if (instance.g_PacksFocus) {
  376. if (element.find("#txt_Pieces").val() == 0) {
  377. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  378. }
  379. element.find('.divOrders_ItemCount').addClass('floating-label-form-group-with-value');
  380. Packs = Number(element.find(".txtOrder_ItemCount").val());
  381. if (Packs > 0) {
  382. let val = instance.roundOffIgnoreZerosAfterDecimal(Packs - 1);
  383. element.find(".txtOrder_ItemCount").val(val);
  384. }
  385. else if (Packs == 0 && Pieces > 0) {
  386. element.find(".txtOrder_ItemCount").val(instance.roundOffIgnoreZerosAfterDecimal(Packs));
  387. }
  388. else {
  389. element.find('.divOrders_ItemCount').removeClass('floating-label-form-group-with-value');
  390. instance.N_DeleteCartItems(ItemId);
  391. return false;
  392. }
  393. }
  394. if (instance.g_PiecesFocus) {
  395. element.find('.divOrders_ItemPieceCount').addClass('floating-label-form-group-with-value');
  396. Pieces = Number(element.find(".txtOrder_ItemPieceCount").val());
  397. if (Pieces > 0) {
  398. let val = instance.roundOffIgnoreZerosAfterDecimal(Pieces - 1);
  399. element.find(".txtOrder_ItemPieceCount").val(val);
  400. }
  401. else if (Pieces == 0 && Packs > 0) {
  402. element.find(".txtOrder_ItemPieceCount").val(instance.roundOffIgnoreZerosAfterDecimal(Pieces));
  403. }
  404. else {
  405. element.find('.divOrders_ItemPieceCount').removeClass('floating-label-form-group-with-value');
  406. instance.N_DeleteCartItems(ItemId);
  407. return false;
  408. }
  409. }
  410. instance.N_updateItemsArray(element, "Minus");
  411. });
  412. $(elem).find('.chkItem_ExchangeDC').unbind().change(function () {
  413. let element = elem;
  414. let ItemId = element.find(".hfOpportunity_ItemId").val();
  415. if (element.find('.chkItem_ExchangeDC').prop("checked")) {
  416. element.find('#Ord_txtdiscount').val('').prop("disabled", true).css("cursor", "not-allowed");
  417. $(".cartitem-" + ItemId).find("#Ord_txtdiscount").val('').prop("disabled", true).css("cursor", "not-allowed");
  418. }
  419. else {
  420. element.find('#Ord_txtdiscount').prop("disabled", false).css("cursor", "auto");
  421. $(".cartitem-" + ItemId).find('#Ord_txtdiscount').prop("disabled", false).css("cursor", "auto");
  422. }
  423. instance.N_updateItemsArray(element, "Exchange");
  424. });
  425. $(elem).find(".txtOrder_ItemCount").keyup(function () {
  426. clearTimeout(timer);
  427. timer = setTimeout(function () {
  428. instance.N_updateItemsArray(elem, "Packs");
  429. }, 300);
  430. });
  431. $(elem).find(".txtOrder_ItemPieceCount").keyup(function () {
  432. clearTimeout(timer);
  433. timer = setTimeout(function () {
  434. instance.N_updateItemsArray(elem, "Pieces");
  435. }, 300);
  436. });
  437. $(elem).find(".btnOrder_DiscType").unbind().change(function () {
  438. instance.N_updateItemsArray(elem, "DiscountType");
  439. });
  440. $(elem).find("#Ord_txtdiscount").unbind().keyup(function () {
  441. clearTimeout(timer);
  442. timer = setTimeout(function () {
  443. instance.N_updateItemsArray(elem, "Discount");
  444. }, 300);
  445. });
  446. $(elem).find("#txt_Description").unbind().keyup(function () {
  447. clearTimeout(timer);
  448. timer = setTimeout(function () {
  449. let ItemId = elem.find(".hfOpportunity_ItemId").val();
  450. let CartItem = instance.g_CartItems_New.find(x => x.ItemId == ItemId && x.RefItemIds == "");
  451. CartItem.Description = elem.find("#txt_Description").val().toString();
  452. }, 300);
  453. });
  454. $(elem).find(".delete").unbind().click(function () {
  455. let FromWidget = false;
  456. if (instance.g_CartItems_New.length <= 10) {
  457. $(".CartItemFindTxt").addClass('hidden');
  458. }
  459. let message = "Do you really want to delete this item";
  460. if (instance.g_CartItems_New.length == 1)
  461. message = "Your cart is going to empty.";
  462. let itemid = $(this).parents(".cartitem").find(".hfOpportunity_ItemId").val();
  463. if (itemid == undefined) {
  464. itemid = $(this).parents(".variant-addeditem").find(".hfOpportunity_ItemId").val();
  465. }
  466. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  467. FromWidget = true;
  468. }
  469. bootbox.confirm({
  470. message: message,
  471. closeButton: false,
  472. buttons: {
  473. confirm: {
  474. label: 'Yes',
  475. className: 'btn-success'
  476. },
  477. cancel: {
  478. label: 'No',
  479. className: 'btn-danger'
  480. }
  481. },
  482. callback: function (result) {
  483. if (result) {
  484. Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().N_DeleteCartItems(itemid, FromWidget);
  485. }
  486. }
  487. });
  488. });
  489. $(elem).find(".div_MultipleUOMs").change(function () {
  490. instance.N_updateItemsArray(elem, "UOMChange");
  491. });
  492. }
  493. N_updateItemsArray(elem, event, FromWidget = false, Qty = 0) {
  494. let instance = this;
  495. let OpportunityItemId = 0;
  496. let SelectedUnitId = 1;
  497. let DefaultSize = 0;
  498. if (Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.length > 0) {
  499. FromWidget = true;
  500. }
  501. let DiscountPercent = 0, DiscountValue = 0, DiscountAmount = 0, AfterDiscountValue = 0, BaseQty = 0, TaxGroupId = 0, TaxGroupName = "", TaxAmount = 0, StrTaxPercents = "", TaxRateAmount = 0, Amount = 0, IsCheckPendingItems = false, IsLeverageError = false, IsTaxError = false;
  502. if (event == "Plus" || event == "Packs" || event == "Pieces") {
  503. IsCheckPendingItems = true;
  504. }
  505. let IsCalculateTax = instance._opportunity.g_IsCalculateTax;
  506. let ItemIndex = instance.g_CartItems_New.length + 1;
  507. let optoutAmount = 0;
  508. let ItemId = Number($(elem).find(".hfOpportunity_ItemId").val());
  509. let Packs = isNaN(Number($(elem).find(".txtOrder_ItemCount").val())) ? 0 : Number($(elem).find(".txtOrder_ItemCount").val());
  510. let Pieces = isNaN(Number($(elem).find(".txtOrder_ItemPieceCount").val())) ? 0 : Number($(elem).find(".txtOrder_ItemPieceCount").val());
  511. let UnitPrice = Number($(elem).find("#txt_editItemPrice").val());
  512. let UnitPriceWithOutTax = UnitPrice;
  513. let DiscountType = Number($(elem).find(".btnOrder_DiscType").val());
  514. let IsExchangeDC = $(elem).find(".chkItem_ExchangeDC").prop("checked");
  515. if (IsExchangeDC == undefined) {
  516. IsExchangeDC = false;
  517. }
  518. let IsAfterTax = $(elem).find(".divAfterTax").is(':checked');
  519. if (DiscountType == 1) {
  520. DiscountPercent = Number($(elem).find("#Ord_txtdiscount").val());
  521. DiscountAmount = Number($(elem).find("#txt_editItemPrice").val()) * Number(DiscountPercent / 100);
  522. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - Number(DiscountAmount);
  523. }
  524. else if (DiscountType == 2) {
  525. DiscountValue = Number($(elem).find("#Ord_txtdiscount").val());
  526. DiscountAmount = DiscountValue;
  527. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - DiscountValue;
  528. }
  529. let LoadedItems_Index = instance.g_LoadedItems.findIndex(x => x.ItemId == ItemId);
  530. let SelectedItems_Index = -1;
  531. if (instance.g_SelectedItems != undefined) {
  532. SelectedItems_Index = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  533. }
  534. let CartItems_Index = -1;
  535. if (instance.g_CartItems_New != undefined) {
  536. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  537. }
  538. let row = instance.g_LoadedItems[LoadedItems_Index];
  539. let PartNo = row.PartNo;
  540. if (PartNo == undefined || PartNo == "null" || PartNo == null) {
  541. PartNo = "";
  542. }
  543. let Items_up = instance.g_ItemsUnitPrice_New.find(x => x.ItemId == ItemId);
  544. Items_up.UnitPrice = UnitPrice;
  545. if (Items_up.length == 0) {
  546. instance.g_ItemsUnitPrice_New.push({
  547. ItemId: ItemId,
  548. UnitPrice: UnitPrice,
  549. TaxRateAmount: TaxRateAmount
  550. });
  551. }
  552. let Quantity = 0;
  553. let UOMQuantity = 0;
  554. if (instance._opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  555. BaseQty = Number(Packs);
  556. Quantity = Packs;
  557. }
  558. else {
  559. if (Qty != 0) {
  560. BaseQty = Qty;
  561. Quantity = Qty;
  562. }
  563. else {
  564. BaseQty = Number(row.PackCount) * Number(row.PackSize) * Number(Packs) + (Pieces * row.PackSize);
  565. Quantity = ((row.PackCount * row.PackSize) * Packs) + (Pieces * row.PackSize);
  566. }
  567. }
  568. if (row.IsMultipleUOMs) {
  569. SelectedUnitId = Number($(elem).find("#ddl_MultipleUOMs_" + ItemId).val());
  570. if (SelectedUnitId != 1 && SelectedUnitId != 0) {
  571. let MultipleUOM = row.MultipleUOMs.find(x => x.SchemaDetailId == SelectedUnitId);
  572. UOMQuantity = Quantity * MultipleUOM.DefaultSize;
  573. BaseQty = UOMQuantity;
  574. DefaultSize = MultipleUOM.DefaultSize;
  575. }
  576. }
  577. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  578. UOMQuantity = instance.roundOffIgnoreZerosAfterDecimal(UOMQuantity);
  579. if (SelectedItems_Index != -1) {
  580. if (event == "Plus" || event == "Packs" || event == "Pieces" || event == "ApplyOffer") {
  581. IsCheckPendingItems = instance.g_SelectedItems[SelectedItems_Index].IsCheckPendingItems;
  582. }
  583. ItemIndex = instance.g_SelectedItems[SelectedItems_Index].ItemIndex;
  584. OpportunityItemId = instance.g_SelectedItems[SelectedItems_Index].OpportunityItemId;
  585. $(elem).find(".tax-error").text("");
  586. $(elem).find("#LeverageErrorTxt").addClass("hidden");
  587. }
  588. if (instance.g_IsEnableCompositePiecePrice) {
  589. Amount = (UnitPriceWithOutTax * Number(BaseQty)) + Number(row.TaxRate);
  590. if (Number(BaseQty) == 0)
  591. Amount = 0;
  592. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.CompositePiecePrice);
  593. }
  594. else if (instance.g_IsEnableCompositePrice) {
  595. let amnt = Number(UnitPriceWithOutTax) * Number(row.TaxPercentage) / 100;
  596. TaxRateAmount = Number(UnitPriceWithOutTax) + Number(amnt);
  597. Amount = Number(BaseQty) * TaxRateAmount;
  598. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.CompositePrice);
  599. }
  600. else if (instance.g_IsEnablePiecePrice) {
  601. Amount = Number(BaseQty) * UnitPriceWithOutTax;
  602. UnitPrice = instance.roundOffIgnoreZerosAfterDecimal(row.PiecePrice);
  603. }
  604. else {
  605. Amount = Number(BaseQty) * UnitPriceWithOutTax;
  606. }
  607. Items_up.TaxRateAmount = TaxRateAmount;
  608. let AssessableAmount = Number(Amount);
  609. let discVal = Number(DiscountValue) * Number(BaseQty);
  610. let discPercent = Number(DiscountPercent);
  611. let DiscAmount = Number((Amount * discPercent) / 100) + Number(discVal);
  612. let discAmt = DiscAmount + Number(optoutAmount);
  613. AssessableAmount = Number(AssessableAmount) - Number(discAmt);
  614. let AmountWithDiscount = instance.roundOffIgnoreZerosAfterDecimal(Number(Amount) - Number(discAmt));
  615. if (IsCalculateTax) {
  616. if (row.TaxGroupId == 0) {
  617. IsTaxError = true;
  618. }
  619. else {
  620. TaxGroupId = row.TaxGroupId;
  621. TaxGroupName = row.TaxGroupName;
  622. for (let p = 0; p < row.TaxPercentList.length; p++) {
  623. let percen = row.TaxPercentList[p];
  624. let tax = AssessableAmount * percen.Percentage / 100;
  625. TaxAmount += tax;
  626. }
  627. StrTaxPercents = row.strTaxPercents;
  628. instance.N_getPriceTypeValues(ItemId, Packs, Pieces);
  629. if (instance.g_IsEnablePiecePrice) {
  630. UnitPrice = row.PiecePrice;
  631. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.PiecePrice;
  632. }
  633. else if (instance.g_IsEnableCompositePrice) {
  634. UnitPrice = row.CompositePrice;
  635. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.CompositePrice;
  636. }
  637. else if (instance.g_IsEnableCompositePiecePrice) {
  638. UnitPrice = row.CompositePiecePrice;
  639. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.Both;
  640. }
  641. else {
  642. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.None;
  643. }
  644. }
  645. }
  646. else {
  647. $("#TotalTax").addClass("hidden");
  648. $(".divCustomProperties_istaxinclusive").addClass("hidden");
  649. }
  650. let ItemData = {
  651. OpportunityItemId: OpportunityItemId,
  652. ItemIndex: ItemIndex,
  653. ItemId: ItemId,
  654. ItemName: row.ItemName,
  655. Packs: Packs,
  656. Pieces: Pieces,
  657. PriceListId: row.PriceListId,
  658. UnitPrice: UnitPrice,
  659. UnitPriceWithOutTax: UnitPriceWithOutTax,
  660. ExpectedPrice: row.UnitPrice,
  661. ActualPrice: row.UnitPrice,
  662. PackCount: row.PackCount,
  663. PackSize: row.PackSize,
  664. UnitName: row.UnitName,
  665. Quantity: Quantity,
  666. SKU: row.SKU,
  667. PartNo: PartNo,
  668. Amount: Amount,
  669. AmountWithDiscount: AmountWithDiscount,
  670. DiscountPercent: DiscountPercent,
  671. DiscountValue: DiscountValue,
  672. DiscountType: DiscountType,
  673. DiscountAmount: DiscountAmount,
  674. ItemValueAfterDiscount: AfterDiscountValue,
  675. StrTaxPercents: StrTaxPercents,
  676. AvailableQuantity: row.AvailableQuantity,
  677. AvailablePacks: row.AvailablePacks,
  678. AvailablePieces: row.AvailablePieces,
  679. TotalAvailablePieces: row.TotalAvailablePieces,
  680. ExchangeDC: IsExchangeDC,
  681. IsAfterTax: IsAfterTax,
  682. BaseQty: BaseQty,
  683. IsFocItem: false,
  684. optoutAmount: optoutAmount,
  685. TaxGroupId: TaxGroupId,
  686. TaxGroupName: TaxGroupName,
  687. TaxAmount: TaxAmount,
  688. TaxRateAmount: TaxRateAmount,
  689. TaxRate: row.TaxRate,
  690. TaxPercentage: row.TaxPercentage,
  691. IsOfferAvailable: row.IsOfferAvailable,
  692. Description: row.Description == undefined ? "" : row.Description,
  693. Discountable: row.Discountable,
  694. PiecePrice: row.PiecePrice,
  695. CompositePrice: row.CompositePrice,
  696. CompositePiecePrice: row.CompositePiecePrice,
  697. IsCheckPendingItems: IsCheckPendingItems,
  698. IsError: false,
  699. ErrorMsg: "",
  700. ErrorClass: "text-danger",
  701. IsTaxError: IsTaxError,
  702. IsLeverageError: IsLeverageError,
  703. IsFocAdded: false,
  704. RefItemIds: "",
  705. RefItemSKUs: "",
  706. FocItemIds: "",
  707. DiscountGroupId: 0,
  708. IsOfferDiscountApplied: false,
  709. AppliedOfferVolume: 0,
  710. optoutOfferGroupId: 0,
  711. SuggestedPacks: 0,
  712. MinPacks: 0,
  713. AvgPacks: 0,
  714. InwardOrderPacks: 0,
  715. OutwardOrderPacks: 0,
  716. IsMultipleUOMs: row.IsMultipleUOMs,
  717. UOMSchemaId: row.UOMSchemaId,
  718. MultipleUOMs: row.MultipleUOMs,
  719. SelectedUnitId: SelectedUnitId,
  720. DefaultSize: DefaultSize,
  721. IsBoMAvailable: row.IsBoMAvailable,
  722. UOMQuantity: UOMQuantity
  723. };
  724. if (SelectedItems_Index == -1) {
  725. instance.g_SelectedItems.push(ItemData);
  726. }
  727. else {
  728. instance.g_SelectedItems[SelectedItems_Index] = ItemData;
  729. }
  730. if (CartItems_Index == -1) {
  731. instance.g_CartItems_New.push(ItemData);
  732. }
  733. else {
  734. instance.g_CartItems_New[CartItems_Index] = ItemData;
  735. }
  736. let ItemElm = $(".variant-addeditem-" + ItemId);
  737. instance.N_UpdateItemsDesign(ItemElm, event);
  738. let IsCart = false;
  739. if ($("#ulOrder_Cart").is(":visible")) {
  740. IsCart = true;
  741. }
  742. if (!FromWidget) {
  743. if (instance.g_CartItems_New.length == 0) {
  744. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  745. }
  746. else {
  747. $(".EmptyCartLi").remove();
  748. }
  749. if ($("#cartItemsSearch").val() != undefined) {
  750. let value = $("#cartItemsSearch").val().toString().toLowerCase();
  751. $("#ulOrder_Cart li:not(:first-child)").filter(function () {
  752. $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1);
  753. });
  754. }
  755. if (BaseQty == 0) {
  756. instance.N_DeleteCartItems(ItemId);
  757. }
  758. else {
  759. if (IsCheckPendingItems && $(".bootbox-confirm").length == 0 && BaseQty != 0) {
  760. if (!IsTaxError) {
  761. instance.checkPendingPopup(ItemId, CartItems_Index, FromWidget);
  762. }
  763. }
  764. else {
  765. if (CartItems_Index != -1) {
  766. let Cart_elem = $(".cartitem-" + ItemId);
  767. if (Cart_elem.length > 0 && !FromWidget) {
  768. let evnt = "EditCartItem";
  769. if (event == "RefreshAllItems_InventoryClickEvents") {
  770. evnt = event;
  771. }
  772. instance.N_UpdateItemsDesign(Cart_elem, evnt, true);
  773. }
  774. }
  775. else {
  776. instance.N_AddCartItem(ItemId);
  777. }
  778. }
  779. }
  780. }
  781. else {
  782. if (IsCheckPendingItems && $(".bootbox-confirm").length == 0) {
  783. if (!IsTaxError) {
  784. instance.checkPendingPopup(ItemId, CartItems_Index, FromWidget);
  785. }
  786. }
  787. }
  788. if (BaseQty != 0) {
  789. instance.N_CheckValidations(ItemId, true);
  790. instance.N_CheckValidations(ItemId, false);
  791. }
  792. if ((IsCart || FromWidget)) {
  793. if (row.IsOfferAvailable && !FromWidget) {
  794. instance.checkOffers(FromWidget, "UpdateItemsArray");
  795. }
  796. else if (FromWidget) {
  797. instance.checkOffers(FromWidget, "UpdateItemsArray");
  798. }
  799. else {
  800. instance.N_GetTotals();
  801. }
  802. }
  803. else {
  804. instance.N_GetTotals();
  805. }
  806. instance.g_CartItems_New.filter(x => x.BaseQty == 0).forEach(function (c) {
  807. let ItemId = c.ItemId;
  808. let ItemElm = $(".variant-addeditem-" + ItemId);
  809. let CartElm = $(".cartitem-" + ItemId);
  810. $(ItemElm).find(".divOrders_ItemCount").removeClass("floating-label-form-group-with-value");
  811. $(CartElm).find(".divOrders_ItemCount").removeClass("floating-label-form-group-with-value");
  812. });
  813. }
  814. checkPendingPopup(ItemId, CartItemIndex, FromWidget = false) {
  815. let instance = this;
  816. let branchId = instance._opportunity.g_BranchId;
  817. let TypeId = Bizgaze.Apps.Transact.Enums.OrderType.Sales;
  818. if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseOpportunity)
  819. TypeId = Bizgaze.Apps.Transact.Enums.OrderType.Purchase;
  820. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getPendingOrderItemsByItemAndCustomer(TypeId, ItemId, instance._opportunity.g_OrganizationId, 0, 20, branchId).then(function (response) {
  821. if (response.result.length > 0) {
  822. let quantity = 0;
  823. let item = [];
  824. for (let i = 0; i < response.result.length; i++) {
  825. item = response.result[i];
  826. quantity += item.Quantity - item.DeliveredQuantity;
  827. }
  828. quantity = instance.roundOff(quantity);
  829. let msg = item.ItemName + " have " + quantity + " pending quantity..! Are you sure to continue ?";
  830. bootbox.confirm({
  831. message: msg,
  832. closeButton: false,
  833. buttons: {
  834. confirm: {
  835. label: 'Yes',
  836. className: 'btn-success'
  837. },
  838. cancel: {
  839. label: 'No',
  840. className: 'btn-danger'
  841. }
  842. },
  843. callback: function (result) {
  844. let Item = instance.g_SelectedItems.find(x => x.ItemId == ItemId);
  845. let elem = $(".variant-addeditem-" + ItemId);
  846. if (result) {
  847. Item.IsCheckPendingItems = false;
  848. if (FromWidget) {
  849. instance.checkOffers(FromWidget, "CheckPendingPopUp_FromWidget");
  850. }
  851. else {
  852. instance.N_AddCartItem(ItemId);
  853. }
  854. }
  855. else {
  856. $('#modal_popup_EditLineItem').modal('hide');
  857. bootbox.hideAll();
  858. $(elem).find(".txtOrder_ItemCount").val(0);
  859. instance.N_updateItemsArray(elem, "PendingPopCancel");
  860. return false;
  861. }
  862. }
  863. });
  864. }
  865. else {
  866. if (CartItemIndex != -1) {
  867. let elem = $(".cartitem-" + ItemId);
  868. if (FromWidget) {
  869. elem = $(".variant-addeditem-" + ItemId);
  870. }
  871. instance.N_UpdateItemsDesign(elem, "EditCartItem", true);
  872. }
  873. else {
  874. instance.N_AddCartItem(ItemId);
  875. }
  876. }
  877. });
  878. }
  879. N_getItemDesign(res, FromWidget = false, IsCart = false) {
  880. let instance = this;
  881. let html = "";
  882. let data = res;
  883. let ItemId = data.ItemId;
  884. let InventoryType = instance._opportunity.g_InventoryApplyType;
  885. let url = '';
  886. let ItemImg = "";
  887. if (data.ImageUrl == "" || data.ImageUrl == undefined || data.ImageUrl == null) {
  888. ItemImg = `<i class="fa fa-image orderItem font-40"></i>`;
  889. }
  890. else {
  891. url = data.ImageUrl;
  892. ItemImg = `<img class="avatar" style="width:45px;height:45px;" onerror="ReloadImage(event)" data-dynamic="1" src="` + url + `">`;
  893. }
  894. let hidden = "";
  895. let OpportunityQuantity = "";
  896. let multiplevalue = "";
  897. let Items_up = instance.g_ItemsUnitPrice_New.filter(x => x.ItemId == data.ItemId);
  898. if (Items_up.length == 0) {
  899. instance.g_ItemsUnitPrice_New.push({
  900. ItemId: ItemId,
  901. UnitPrice: data.UnitPrice,
  902. TaxRateAmount: data.TaxRateAmount
  903. });
  904. }
  905. let LiClass = "variant-item variant-addeditem variant-addeditem-" + ItemId;
  906. let EditUnitPriceClass = 'editItemPriceAccordion_';
  907. let AvailClass = "ItemAvailability";
  908. let ExchangeClass = "chkItem_ExchangeDC_" + ItemId;
  909. let HideDeleteBtn = "";
  910. let RefItemIds = data.RefItemIds;
  911. if (RefItemIds == undefined) {
  912. RefItemIds = "";
  913. }
  914. if (IsCart) {
  915. LiClass = "cartitem cartitem-" + ItemId;
  916. EditUnitPriceClass = 'editCartItemPriceAccordion_';
  917. AvailClass = "CartAvailability";
  918. ExchangeClass = "chkCartItem_ExchangeDC_" + ItemId;
  919. if (data.IsFocItem) {
  920. HideDeleteBtn = "hidden";
  921. if (RefItemIds != "") {
  922. LiClass = "cartitem cartitem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-");
  923. }
  924. }
  925. }
  926. else if (FromWidget) {
  927. if (Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_Edit_OpportunityItemId > 0) {
  928. HideDeleteBtn = "hidden";
  929. }
  930. if (RefItemIds != "") {
  931. LiClass = "variant-item variant-addeditem variant-addeditem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-");
  932. }
  933. }
  934. html = '<li id="' + ItemId + '" class="list-group-item ' + LiClass + ' li no-border">' +
  935. '<input type="hidden" class="hfOpportunity_ItemId" value="' + ItemId + '" />' +
  936. '<input type="hidden" class="hfOpportunity_RefItemId" value="' + RefItemIds + '" />' +
  937. '<input type="hidden" class="hfOpportunity_ItemName" value="' + data.ItemName + '" />' +
  938. '<input type="hidden" class="hfOpportunity_ItemSKU" value="' + data.SKU + '" />';
  939. let DivClass = 'col-sm-8';
  940. let InventoryTypeDivClass = 'col-sm-4';
  941. if (instance.g_IsEnablePacks && instance.g_IsEnablePieces) {
  942. DivClass = 'col-sm-6';
  943. InventoryTypeDivClass = 'col-sm-6';
  944. }
  945. if (data.IsOfferAvailable == true && (data.RefItemId == undefined || data.RefItemId == 0)) {
  946. html += '<input type="hidden" class="IsOfferAvailableItem" value="true">';
  947. html += '<a class="btn btn-sm" onclick="Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().showOfferItems(' + instance._opportunity.g_OrganizationId + ',' + ItemId + ",'" + data.ItemName + "'," + instance._opportunity.g_OpportunityTypeId + ',' + 'this)"><span class="badge badge-sm up bg-danger m-l-n-sm count" style="color:white">offer</span></a>';
  948. }
  949. if (data.IsBoMAvailable) {
  950. html += '<a class="btn btn-sm" onclick="Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().showBOMItems(' + ItemId + ",'" + data.ItemName + "'" + ')"><span class="badge badge-sm up bg-success m-l-n-sm count" style="color:white"> BOM </span></a>';
  951. }
  952. if (data.IsSpecialPrice)
  953. html += '<span class="badge badge-sm up bg-blue m-l-n-sm btnItemSpecial hidden" style="margin-left: 0px;color:white">SP</span>';
  954. html += '<span class="font-14 focBadge hidden"><span class="text-warning up m-l-n-sm count" style="">Free of SKU - <span id="FocBadgeSKU"> </span> </span></span>';
  955. html += ' <div class="row">' +
  956. '<div class="ItemDetails ' + DivClass + '" id="ItemDetails">' +
  957. '<a class=" pull-left" style="cursor:pointer;height:40px; width:50px;">' + ItemImg + '</a>';
  958. if (IsCart || FromWidget) {
  959. html += '<a href="javascript:;" id="deleteCartItem"><span class="pa-5 delete ' + HideDeleteBtn + '" style="cursor:Pointer;" title="Remove Item"><i class="m-r fa fa-trash text-danger fa-lg" id=""></i></span></a>';
  960. }
  961. html += '<span class="pull-right text-danger tax-error"></span><span class="block text-sm mouseHoverClass CartItemName" style="color: #5ba8fb">' + data.ItemName + '</span> <br>';
  962. if (data.PartNo != "" && data.PartNo != null) {
  963. html += '<span>SKU : ' + data.SKU + '</span> <span> ( ' + data.PartNo + ' ) </span> <br>';
  964. }
  965. else {
  966. html += '<span>SKU : ' + data.SKU + '</span> <br>';
  967. }
  968. let Price_dataToggle = "";
  969. Price_dataToggle = `data-toggle="collapse"`;
  970. let compositeDecimalValue = 0;
  971. let piecePriceDecimalValue = 0;
  972. let compositePiecePriceDecimalvalue = 0;
  973. let Item = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  974. if (Item != undefined) {
  975. compositeDecimalValue = Item.CompositePrice;
  976. piecePriceDecimalValue = Item.PiecePrice;
  977. compositePiecePriceDecimalvalue = Item.CompositePiecePrice;
  978. }
  979. if (compositeDecimalValue == undefined)
  980. compositeDecimalValue = 0;
  981. if (instance.g_IsEnablePiecePrice) {
  982. html += '<span class="sp_PriceType">Piece Price : </span> <span id="DiscountOpenBracket" class="hidden">(</span><a href="javascript:;" class="text-sm editItemPrice" style="color: #5ba8fb;text-decoration: underline;"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + Number(instance.roundOff(piecePriceDecimalValue)) + '</a> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  983. }
  984. else if (instance.g_IsEnableCompositePrice) {
  985. html += '<span class="sp_PriceType">Comp. Price : </span> <span id="DiscountOpenBracket" class="hidden">(</span> <a href="javascript:;" class="text-sm editItemPrice " style="color: #5ba8fb;text-decoration: underline;"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + Number(instance.roundOff(compositeDecimalValue)) + '</a> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  986. }
  987. else if (instance.g_IsEnableCompositePiecePrice) {
  988. html += '<span class="sp_PriceType">Comp. Piece Price : </span><span id="DiscountOpenBracket" class="hidden">(</span><a href="javascript:;" class="text-sm editItemPrice CompositePiecePrice" style="color: #5ba8fb;text-decoration: underline;"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + Number(instance.roundOff(compositePiecePriceDecimalvalue)) + '</a> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  989. }
  990. else {
  991. let PointsorPrice = "Price";
  992. html += '<span class="sp_PriceType">' + PointsorPrice + ' : </span><span id="DiscountOpenBracket" class="hidden">(</span><a href="javascript:;" class="text-sm editItemPrice " style="color: #5ba8fb;text-decoration: underline;"' + Price_dataToggle + 'data-target="#' + EditUnitPriceClass + '' + ItemId + '">' + data.UnitPrice + '</a> <span class="CompositePriceCalBreak"> </span> <span id="QuantityAndDiscountSpan" class="' + hidden + '"><span id="OrderQuantity_' + ItemId + '" class="OrderQuantity hidden" ></span><span id="multipliedvalue_' + ItemId + '" class="multipliedvalue hidden" ></span></span>';
  993. }
  994. if (InventoryType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs || InventoryType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces || InventoryType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  995. if (instance._opportunity.g_IsAdmin == 1) {
  996. if (InventoryType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces && !instance.g_IsEnablePacks) {
  997. html += '<br /><span class="' + AvailClass + '">Avail : ' + data.TotalAvailablePieces + ' (' + data.AvailableQuantity + ') <span><span class="text-danger pull-right LessUnitPrice-error"><span>';
  998. }
  999. else {
  1000. html += '<br /><span class="' + AvailClass + '">Avail : ' + data.AvailablePacks + ' / ' + data.AvailablePieces + ' (' + data.AvailableQuantity + ') <span><span class="text-danger pull-right LessUnitPrice-error"><span>';
  1001. }
  1002. }
  1003. else {
  1004. html += '<br /><span class="' + AvailClass + '">Avail : ' + data.AvailablePacks + ' / ' + data.AvailablePieces + ' (' + data.AvailableQuantity + ')</span>';
  1005. }
  1006. }
  1007. else if (InventoryType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1008. if (instance._opportunity.g_IsAdmin == 1) {
  1009. html += '<br /><span class="' + AvailClass + '">Avail : ' + data.AvailableQuantity + '</span>';
  1010. }
  1011. }
  1012. html += '</div>';
  1013. let SuggestedPacks = 0;
  1014. html += '<div id="InventoryTypesTextboxes" class="InventoryTypesTextboxes ' + InventoryTypeDivClass + '">';
  1015. html += instance.N_getInventoryDesign(ItemId, IsCart, SuggestedPacks, RefItemIds);
  1016. html += '</div>';
  1017. let classclaim = "";
  1018. classclaim = "col-sm-7";
  1019. html += '<div class="row collapse" id="' + EditUnitPriceClass + '' + ItemId + '">' +
  1020. '<div class="col-sm-12">' +
  1021. '<div class="input-group">' +
  1022. '<div class="col-sm-2">' +
  1023. '<div class="floating-label-form-group floating-label-form-group-with-value">';
  1024. html += '<label for="txt_editItemPrice">Unit price </label><input type="text" id="txt_editItemPrice" class="form-control floating-label-control txteditItemPrice" value="' + data.UnitPrice + '" data-isdynamic="false" placeholder="Unit Price" data-placeholder="Enter Unit Price" data-label="Unit Price" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput="return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().validateFloatKeyPress(this,event)" min="0"></div>';
  1025. let offerDiscountClass = "";
  1026. if (data.IsOfferAvailable && data.IsOfferDiscountApplied && IsCart) {
  1027. offerDiscountClass = "readonly";
  1028. }
  1029. let IsDiscountHidden = "";
  1030. html += '</div>' +
  1031. '<div class="col-sm-2' + IsDiscountHidden + '">' +
  1032. '<div class="floating-label-form-group discountFloatLabels">' +
  1033. '<label>Discount</label>' +
  1034. '<div class="input-group">' +
  1035. '<input type="text" id="Ord_txtdiscount" placeholder="Discount" data-isdynamic="false" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput="return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().validateFloatKeyPress(this,event)" data-placeholder="0.00" data-label="Discount" class="form-control ord_txtaddldiscount floating-label-control" value="" ' + +'>' +
  1036. '<div class="input-group-btn">' +
  1037. '<select class="btnOrder_DiscType mt-10 border-blue"><option value="2">Val</option><option value="1">%</option></select>' +
  1038. '</div>' +
  1039. '</div>' +
  1040. '</div>' +
  1041. '<div class="' + classclaim + '">' +
  1042. '<div class="floating-label-form-group">' +
  1043. '<label>Description</label>' +
  1044. '<input type="text" id="txt_Description" class="form-control floating-label-control " data-isdynamic="false" placeholder="Description" data-placeholder="Description" data-label="Description">' +
  1045. '</div>' +
  1046. '</div>';
  1047. let IsItemExchangable = data.Discountable;
  1048. if ((instance._opportunity.g_IsAdmin == 1 && IsItemExchangable) || (IsItemExchangable)) {
  1049. html += '<div class="col-sm-2 mt-40">' +
  1050. '<div class="custom-control custom-checkbox checkbox-primary">' +
  1051. '<input type="checkbox" class="custom-control-input chkItem_ExchangeDC" id="' + ExchangeClass + '">' +
  1052. '<label class="custom-control-label lbl_ExchangeDC_' + ItemId + '" for="' + ExchangeClass + '">Exchange</label>' +
  1053. '</div>' +
  1054. ' </div>';
  1055. }
  1056. let IsMultipleUOMs = data.IsMultipleUOMs;
  1057. let MultipleUOMs = data.MultipleUOMs;
  1058. if (IsMultipleUOMs) {
  1059. html += '<div id="div_MultipleUOMs_' + ItemId + '" class="div_MultipleUOMs floating-label-form-group-with-value col-sm-4" > ' +
  1060. '<label for= "lbl" id ="lbl_MultipleUOMs_' + ItemId + '"> UOM </label>';
  1061. html += '<select id="ddl_MultipleUOMs_' + ItemId + '" class="form-control type-control value-control dropdown_MultipleUOMs" placeholder="Select UOM" data-placeholder="Select UOM" data-label="UOM" data-isparent="false">';
  1062. html += '<option value="1"> -- Select -- </option>';
  1063. for (var i = 0; i < MultipleUOMs.length; i++) {
  1064. html += '<option value="' + MultipleUOMs[i].SchemaDetailId + '">' + MultipleUOMs[i].AlternateUnitName + ' ( ' + MultipleUOMs[i].DefaultSize + ' ' + MultipleUOMs[i].DefaultUnitName + ' ) </option>';
  1065. }
  1066. html += '</div> </select>';
  1067. html += '<p class="mt-10 text-warning ItemConversion_' + ItemId + '"> </p>';
  1068. }
  1069. html += '</div>' +
  1070. ' </div>' +
  1071. ' </div>';
  1072. html += '</li>';
  1073. return html;
  1074. }
  1075. roundOff(n, decimalValue = 2) {
  1076. return Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(n, decimalValue);
  1077. }
  1078. N_getInventoryDesign(ItemId, IsCart, SuggestedPacks = 0, RefItemIds) {
  1079. let instance = this;
  1080. let html = "";
  1081. let InvType = "", fltngclass_Cartons = "", fltngclass_Pieces = "", PP_Cartons = "", PP_Pieces = "", IsFocItem = false, DisableQuantityTxtBox = "", HideMinusPlusBtns = "";
  1082. if (SuggestedPacks != 0) {
  1083. PP_Cartons = SuggestedPacks.toString();
  1084. }
  1085. let CartItem_Index = -1;
  1086. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  1087. let CartItem = instance.g_CartItems_New[CartItem_Index];
  1088. if (CartItem != undefined) {
  1089. PP_Cartons = CartItem.Packs.toString();
  1090. PP_Pieces = CartItem.Pieces.toString();
  1091. IsFocItem = CartItem.IsFocItem;
  1092. }
  1093. if (PP_Cartons == "0") {
  1094. PP_Cartons = "";
  1095. }
  1096. if (PP_Cartons != "") {
  1097. fltngclass_Cartons = "floating-label-form-group-with-value";
  1098. }
  1099. if (PP_Pieces == "0") {
  1100. PP_Pieces = "";
  1101. }
  1102. if (PP_Pieces != "") {
  1103. fltngclass_Pieces = "floating-label-form-group-with-value";
  1104. }
  1105. if (IsFocItem) {
  1106. DisableQuantityTxtBox = "disabled style='cursor:not-allowed'";
  1107. HideMinusPlusBtns = "hidden";
  1108. }
  1109. let InventoryTypeId = instance._opportunity.g_InventoryApplyType;
  1110. let IsEnablePacks = instance.g_IsEnablePacks, IsEnablePieces = instance.g_IsEnablePieces;
  1111. if (IsFocItem) {
  1112. InventoryTypeId = Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity;
  1113. IsEnablePacks = true;
  1114. IsEnablePieces = false;
  1115. }
  1116. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs || InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces || InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  1117. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces && !instance.g_IsEnablePacks) {
  1118. $("#spn_picesTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12").removeClass("pr-90");
  1119. $("#spn_InventoryTitle").addClass("hidden").removeClass("pl-40");
  1120. $(".ItemDetails").addClass("col-sm-8").removeClass("col-sm-6");
  1121. $(".InventoryTypesTextboxes").addClass("col-sm-4").removeClass("col-sm-6");
  1122. }
  1123. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs && !instance.g_IsEnablePieces) {
  1124. $("#spn_picesTitle").addClass("hidden").removeClass("pr-90");
  1125. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12").removeClass("pl-40");
  1126. $(".ItemDetails").addClass("col-sm-8").removeClass("col-sm-6");
  1127. $(".InventoryTypesTextboxes").addClass("col-sm-4").removeClass("col-sm-6");
  1128. }
  1129. else if (instance.g_IsEnablePacks && instance.g_IsEnablePieces) {
  1130. $("#spn_picesTitle").removeClass("hidden").removeClass("col-sm-12").addClass("col-sm-6").addClass("pr-90");
  1131. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-12").addClass("col-sm-6").addClass("pl-40");
  1132. $(".ItemDetails").removeClass("col-sm-8").addClass("col-sm-6");
  1133. $(".InventoryTypesTextboxes").removeClass("col-sm-4").addClass("col-sm-6");
  1134. }
  1135. $("#spn_InventoryTitle").text("Cartons");
  1136. $("#spn_picesTitle").text("Pieces");
  1137. }
  1138. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1139. $("#spn_InventoryTitle").text("Quantity");
  1140. $("#spn_picesTitle").addClass("hidden");
  1141. $("#spn_InventoryTitle").removeClass("hidden").removeClass("col-sm-6").addClass("col-sm-12");
  1142. }
  1143. if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1144. InvType = "Quantity";
  1145. }
  1146. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs) {
  1147. InvType = "Cartons";
  1148. }
  1149. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces) {
  1150. InvType = "Pieces";
  1151. }
  1152. else if (InventoryTypeId == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  1153. InvType = "Cartons";
  1154. }
  1155. let cartItemQtyClass = "";
  1156. if (IsCart) {
  1157. cartItemQtyClass = "_editCartItemQuantity";
  1158. }
  1159. if (IsEnablePacks && !IsEnablePieces) {
  1160. html += '<div class="col-sm-12 ' + cartItemQtyClass + '">' +
  1161. '<div class="floating-label-form-group defaultSelectedCartons divOrders_ItemCount ' + fltngclass_Cartons + '">' +
  1162. '<label class="text-center">' + InvType + '</label>' +
  1163. '<div class="input-group" id="div_Cartons">' +
  1164. '<span class="input-group-prepend">' +
  1165. '<a href="javascript:;" class="input-group-addon btn quantity-minus "' + HideMinusPlusBtns + ' draggable="false"><i class="fa fa-minus"></i></a>' +
  1166. '</span>' +
  1167. '<input type="text" id="txt_Cartons" ' + DisableQuantityTxtBox + 'class="form-control text-center txtOrder_ItemCount floating-label-control" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="' + InvType + '" data-placeholder="' + InvType + '" data-label="' + InvType + '"value="' + PP_Cartons + '">' +
  1168. '<span class="input-group-append">' +
  1169. '<a href="javascript:;" class="quantity-plus input-group-addon btn "' + HideMinusPlusBtns + ' draggable="false"><i class="fa fa-plus"></i></a>' +
  1170. '</span>' +
  1171. '</div>' +
  1172. '</div>' +
  1173. '</div>';
  1174. }
  1175. else if (!IsEnablePacks && IsEnablePieces) {
  1176. html += '<div class="col-sm-12 ' + cartItemQtyClass + '">' +
  1177. '<div class="floating-label-form-group defaultSelectedPieces divOrders_ItemPieceCount ' + fltngclass_Pieces + '">' +
  1178. '<label class="text-center">' + InvType + '</label>' +
  1179. '<div class="input-group" id="div_Pieces">' +
  1180. '<span class="input-group-prepend">' +
  1181. '<a href="javascript:;" class="input-group-addon btn quantity-minus" draggable="false"><i class="fa fa-minus"></i></a>' +
  1182. '</span>' +
  1183. '<input type="text" id="txt_Pieces" class="form-control text-center txtOrder_ItemPieceCount floating-label-control" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="' + InvType + '" data-placeholder="' + InvType + '" data-label="' + InvType + '"value=' + PP_Pieces + '>' +
  1184. '<span class="input-group-append">' +
  1185. '<a href="javascript:;" class="quantity-plus input-group-addon btn" draggable="false"><i class="fa fa-plus"></i></a>' +
  1186. '</span>' +
  1187. '</div>' +
  1188. '</div>' +
  1189. '</div>';
  1190. }
  1191. if (IsEnablePacks && IsEnablePieces) {
  1192. html += '<div class="col-sm-12 ' + cartItemQtyClass + '"><div class="row"><div class="col-6">' +
  1193. '<div class="floating-label-form-group defaultSelectedCartons divOrders_ItemCount ' + fltngclass_Cartons + '">' +
  1194. '<label class="text-center pl-40">Cartons</label>' +
  1195. '<div class="input-group" id="div_Cartons">' +
  1196. '<span class="input-group-prepend">' +
  1197. '<a href="javascript:;" class="input-group-addon btn quantity-minus" draggable="false"><i class="fa fa-minus"></i></a>' +
  1198. '</span>' +
  1199. '<input type="text" id="txt_Cartons" class="form-control text-center txtOrder_ItemCount floating-label-control" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="Cartons" data-placeholder="Cartons" data-label="Cartons" value=' + PP_Cartons + '>' +
  1200. '</div>' +
  1201. '</div>' +
  1202. ' </div>';
  1203. html +=
  1204. '<div class="col-6 ' + cartItemQtyClass + '">' +
  1205. '<div class="floating-label-form-group defaultSelectedPieces divOrders_ItemPieceCount ' + fltngclass_Pieces + '"> ' +
  1206. '<label class="text-center pr-20">Pieces</label>' +
  1207. '<div class="input-group" id="div_Pieces">' +
  1208. '<input type="text" id="txt_Pieces" class="form-control text-center floating-label-control txtOrder_ItemPieceCount" inputmode="numeric" onpaste = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" oninput = "return Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().isNumberKey(event)" data-isdynamic="false" style = "margin-left: 13px;" placeholder="Pieces" data-placeholder="Pieces" data-label="Pieces" value=' + PP_Pieces + '>' +
  1209. '<span class="input-group-append">' +
  1210. '<a href="javascript:;" class="quantity-plus input-group-addon btn" draggable="false"><i class="fa fa-plus"></i></a>' +
  1211. '</span>' +
  1212. '</div>' +
  1213. '</div>' +
  1214. '</div>' +
  1215. '</div>' +
  1216. '</div>';
  1217. }
  1218. html += '</div>';
  1219. return html;
  1220. }
  1221. N_AddCartItem(ItemId, IsFocItem = false) {
  1222. let instance = this;
  1223. let CartItems_Index = -1;
  1224. if (IsFocItem) {
  1225. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds != "");
  1226. }
  1227. else {
  1228. CartItems_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  1229. }
  1230. let CartItm = instance.g_CartItems_New[CartItems_Index];
  1231. let html = instance.N_getItemDesign(CartItm, false, true);
  1232. $("#ulOrder_Cart").append(html);
  1233. let elem = $(".cartitem-" + ItemId);
  1234. let evnt = "EditCartItem";
  1235. if (CartItm.IsFocItem) {
  1236. evnt = "EditFocItem";
  1237. }
  1238. let RefItemIds = CartItm.RefItemIds;
  1239. if (RefItemIds != "") {
  1240. elem = $(".cartitem-" + ItemId + "-" + RefItemIds.replace(/,/g, "-"));
  1241. }
  1242. instance.N_UpdateItemsDesign(elem, evnt, true, IsFocItem);
  1243. $("#ulOrder_Cart").find(".chk_PurPlanItem").addClass("hidden");
  1244. instance.N_AllItemEvents(elem);
  1245. }
  1246. N_UpdateItemsDesign(elem, evnt, IsCart = false, IsFocItem = false) {
  1247. let instance = this;
  1248. let ItemId = Number($(elem).find(".hfOpportunity_ItemId").val());
  1249. let RefItemId = $(elem).find(".hfOpportunity_RefItemId").val();
  1250. let CartItem_Index = -1;
  1251. if (IsFocItem) {
  1252. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemId);
  1253. }
  1254. else {
  1255. CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  1256. }
  1257. let Itm = instance.g_CartItems_New[CartItem_Index];
  1258. let UnitPrice = Itm.UnitPrice;
  1259. let pricelabel = "Price";
  1260. if (instance.g_IsEnablePiecePrice)
  1261. pricelabel = "Piece Price";
  1262. if (instance.g_IsEnableCompositePrice) {
  1263. pricelabel = "Comp. Price";
  1264. }
  1265. if (instance.g_IsEnableCompositePiecePrice) {
  1266. pricelabel = "Comp. Piece Price";
  1267. }
  1268. $(".sp_PriceType").text(pricelabel + " : ");
  1269. let Cond = $("#ulOrder_Cart").is(":visible") || evnt == "BindItemList" || evnt == "FromWidget_FocItem" || evnt == "EditOrderItem" || evnt == "FromWidget" || evnt == "AddFocItem_IsOfferDiscountApplied" || evnt == "EditFocItem_IsOfferDiscountApplied" || evnt == "DeleteCartItem";
  1270. if (IsCart) {
  1271. Cond = !$("#ulOrder_Cart").is(":visible") || evnt == "EditFocItem" || evnt == "AddFocItem_IsOfferDiscountApplied" || evnt == "EditFocItem_IsOfferDiscountApplied";
  1272. }
  1273. if (Cond) {
  1274. let Cartons = Itm.Quantity;
  1275. if (instance._opportunity.g_InventoryApplyType != Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  1276. Cartons = Itm.Packs;
  1277. }
  1278. if (Cartons > 0) {
  1279. $(elem).find(".txtOrder_ItemCount").val(Cartons);
  1280. }
  1281. else {
  1282. $(elem).find(".txtOrder_ItemCount").val("");
  1283. }
  1284. if (Itm.Pieces > 0) {
  1285. $(elem).find(".txtOrder_ItemPieceCount").val(Itm.Pieces);
  1286. }
  1287. else {
  1288. $(elem).find(".txtOrder_ItemPieceCount").val("");
  1289. }
  1290. $(elem).find("#txt_editItemPrice").val(Itm.UnitPriceWithOutTax);
  1291. $(elem).find(".btnOrder_DiscType").val(Itm.DiscountType);
  1292. let Discount = Itm.DiscountValue == 0 ? Itm.DiscountPercent : Itm.DiscountValue;
  1293. if (Discount == 0) {
  1294. $(elem).find("#Ord_txtdiscount").val("");
  1295. }
  1296. else {
  1297. $(elem).find("#Ord_txtdiscount").val(Discount);
  1298. }
  1299. }
  1300. if (Itm.Packs > 0) {
  1301. $(elem).find(".defaultSelectedCartons").addClass("floating-label-form-group-with-value");
  1302. }
  1303. if (Itm.Pieces > 0) {
  1304. $(elem).find(".defaultSelectedPieces").addClass("floating-label-form-group-with-value");
  1305. }
  1306. $(elem).find(".CompositePriceCalBreak").html('');
  1307. if (Itm.ExchangeDC) {
  1308. $(elem).find(".chkItem_ExchangeDC").prop("checked", true);
  1309. }
  1310. else {
  1311. $(elem).find(".chkItem_ExchangeDC").prop("checked", false);
  1312. }
  1313. let ItemIndex = $(elem).attr("class").toString().indexOf("variant-addeditem-" + Itm.ItemId);
  1314. if ((Itm.IsOfferAvailable && Itm.IsOfferDiscountApplied && IsCart && ItemIndex == -1) || (Itm.ExchangeDC)) {
  1315. $(elem).find("#Ord_txtdiscount").attr("disabled", "disabled").css("cursor", "not-allowed");
  1316. $(elem).find(".btnOrder_DiscType").attr("disabled", "disabled").css("cursor", "not-allowed");
  1317. }
  1318. else {
  1319. $(elem).find("#Ord_txtdiscount").removeAttr("disabled").removeAttr("style");
  1320. $(elem).find(".btnOrder_DiscType").removeAttr("disabled").removeAttr("style");
  1321. }
  1322. if (Itm.IsMultipleUOMs) {
  1323. $(elem).find("#ddl_MultipleUOMs_" + ItemId).val(Itm.SelectedUnitId);
  1324. if (Itm.SelectedUnitId != 1 && Itm.SelectedUnitId != 0) {
  1325. let UOM = Itm.MultipleUOMs.find(x => x.SchemaDetailId == Itm.SelectedUnitId);
  1326. let Conversion = UOM.AlternateSize + " " + UOM.AlternateUnitName + " = " + UOM.DefaultSize + " " + UOM.DefaultUnitName;
  1327. $(".ItemConversion_" + Itm.ItemId).text(Conversion);
  1328. }
  1329. else {
  1330. $(".ItemConversion_" + Itm.ItemId).text("");
  1331. }
  1332. }
  1333. if (IsCart) {
  1334. if (Itm.ExchangeDC) {
  1335. UnitPrice = -Itm.UnitPrice;
  1336. let ItemName = Itm.ItemName + " (Exchange) ";
  1337. $(".cartitem-" + ItemId).find(".CartItemName").html(ItemName);
  1338. $(".cartitem-" + ItemId).find(".CartItemName").append("<input type='checkbox' class='divAfterTax' checked/> After Tax");
  1339. }
  1340. else {
  1341. $(".cartitem-" + ItemId).find(".CartItemName").html(Itm.ItemName);
  1342. $(".cartitem-" + ItemId).find(".CartItemName").find(".divAfterTax").remove();
  1343. }
  1344. }
  1345. let _quantity = instance.roundOffIgnoreZerosAfterDecimal(Itm.BaseQty);
  1346. if (Itm.IsMultipleUOMs && Itm.UOMQuantity > 0) {
  1347. _quantity = Itm.UOMQuantity;
  1348. }
  1349. let AmountWithDiscount = instance.roundOffIgnoreZerosAfterDecimal(Number(Itm.AmountWithDiscount));
  1350. if (Itm.Packs == 0 && Itm.Pieces == 0) {
  1351. $(elem).find(".editItemPrice").text(Itm.UnitPrice).css({ 'text-decoration': 'underline', 'color': '#5ba8fb' });
  1352. $(elem).find("#QuantityAndDiscountSpan").text("");
  1353. }
  1354. else {
  1355. if (Itm.DiscountValue > 0) {
  1356. $(elem).find(".editItemPrice").text("(" + Itm.UnitPrice).css({ 'text-decoration': 'underline', 'color': '#5ba8fb' });
  1357. $(elem).find("#QuantityAndDiscountSpan").text(" - " + Number(Itm.DiscountValue) + ") X " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1358. $(elem).find(".discountFloatLabels").addClass("floating-label-form-group-with-value");
  1359. }
  1360. else if (Itm.DiscountPercent > 0) {
  1361. $(elem).find(".editItemPrice").text("(" + Itm.UnitPrice).css({ 'text-decoration': 'underline', 'color': '#5ba8fb' });
  1362. $(elem).find("#QuantityAndDiscountSpan").text(" - " + Number(Itm.DiscountPercent) + "%) X " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1363. $(elem).find(".discountFloatLabels").addClass("floating-label-form-group-with-value");
  1364. }
  1365. else {
  1366. $(elem).find(".editItemPrice").text(Number(UnitPrice)).css({
  1367. 'text-decoration': 'underline', 'color': '#5ba8fb'
  1368. });
  1369. $(elem).find("#QuantityAndDiscountSpan").text(" X " + _quantity + '(' + Itm.UnitName + ')' + " = " + AmountWithDiscount);
  1370. $(elem).find(".discountFloatLabels").removeClass("floating-label-form-group-with-value");
  1371. }
  1372. }
  1373. if (Itm.IsFocItem) {
  1374. $(elem).find(".editItemPrice").removeAttr("style").removeAttr("data-toggle").removeAttr("data-collapse").attr("disabled", "true").css("cursor", "not-allowed");
  1375. $(elem).find(".focBadge").removeClass("hidden");
  1376. $(elem).find("#FocBadgeSKU").text(Itm.RefItemSKUs);
  1377. }
  1378. instance.N_getPriceTypeValues(ItemId, Itm.Packs, Itm.Pieces);
  1379. if (instance.g_IsEnablePiecePrice) {
  1380. let PiecePrice = instance.roundOffIgnoreZerosAfterDecimal(Itm.PiecePrice);
  1381. $(elem).find(".editItemPrice").text(PiecePrice);
  1382. if (Itm.DiscountValue == 0 && Itm.DiscountPercent == 0) {
  1383. $(elem).find("#QuantityAndDiscountSpan").text(' (' + _quantity + ' ' + Itm.UnitName + ')');
  1384. }
  1385. else if (Itm.DiscountValue > 0) {
  1386. let DiscountAmount = Itm.DiscountValue * _quantity;
  1387. let RowTotal = PiecePrice - DiscountAmount;
  1388. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1389. $(elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountValue + ') X ' + _quantity + ' ' + Itm.UnitName + ' = ' + RowTotal);
  1390. }
  1391. else if (Itm.DiscountPercent > 0) {
  1392. let Amount = (Itm.BaseQty * Itm.UnitPriceWithOutTax);
  1393. let DiscountAmount = (Amount * Itm.DiscountPercent) / 100;
  1394. let RowTotal = PiecePrice - DiscountAmount;
  1395. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1396. (elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountPercent + '%) X ' + _quantity + ' ' + Itm.UnitName + ' = ' + RowTotal);
  1397. }
  1398. }
  1399. if (instance.g_IsEnableCompositePrice) {
  1400. let CompositePrice = instance.roundOffIgnoreZerosAfterDecimal(Itm.CompositePrice);
  1401. $(elem).find(".editItemPrice").text(CompositePrice);
  1402. if (Itm.DiscountValue == 0 && Itm.DiscountPercent == 0) {
  1403. let RowTotal = instance.roundOffIgnoreZerosAfterDecimal(CompositePrice * _quantity);
  1404. $(elem).find("#QuantityAndDiscountSpan").text(' X ' + _quantity + ' ' + Itm.UnitName + ' = ' + RowTotal);
  1405. }
  1406. else if (Itm.DiscountValue > 0) {
  1407. let DiscountAmount = Itm.DiscountValue * _quantity;
  1408. let RowTotal = (Itm.UnitPriceWithOutTax * _quantity) - DiscountAmount;
  1409. let AmountWithTax = instance.getAmountWithTax(Itm.ItemId, RowTotal).split('|');
  1410. let RowTotalWithTax = instance.roundOffIgnoreZerosAfterDecimal(AmountWithTax[0]);
  1411. let RowTax = AmountWithTax[1];
  1412. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1413. $(elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountValue + ') X ' + _quantity + ' ' + Itm.UnitName + ' + (' + RowTax + ') = ' + RowTotalWithTax);
  1414. }
  1415. else if (Itm.DiscountPercent > 0) {
  1416. let Amount = (Itm.BaseQty * Itm.UnitPriceWithOutTax);
  1417. let DiscountAmount = (Amount * Itm.DiscountPercent) / 100;
  1418. let RowTotal = (Itm.UnitPriceWithOutTax * _quantity) - DiscountAmount;
  1419. let AmountWithTax = instance.getAmountWithTax(Itm.ItemId, RowTotal).split('|');
  1420. let RowTotalWithTax = instance.roundOffIgnoreZerosAfterDecimal(AmountWithTax[0]);
  1421. let RowTax = AmountWithTax[1];
  1422. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1423. $(elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountPercent + '%) X ' + _quantity + ' ' + Itm.UnitName + ' + (' + RowTax + ') = ' + RowTotalWithTax);
  1424. }
  1425. }
  1426. if (instance.g_IsEnableCompositePiecePrice) {
  1427. let PiecePrice = instance.roundOffIgnoreZerosAfterDecimal(Itm.PiecePrice);
  1428. let CompositePrice = instance.roundOffIgnoreZerosAfterDecimal(Itm.CompositePrice);
  1429. $(elem).find(".editItemPrice").text(CompositePrice);
  1430. if (Itm.DiscountValue == 0 && Itm.DiscountPercent == 0) {
  1431. let RowTotal = instance.roundOffIgnoreZerosAfterDecimal(CompositePrice * _quantity);
  1432. $(elem).find("#QuantityAndDiscountSpan").text(' X ' + _quantity + ' ' + Itm.UnitName + ' = ' + RowTotal);
  1433. }
  1434. else if (Itm.DiscountValue > 0) {
  1435. let DiscountAmount = Itm.DiscountValue * _quantity;
  1436. let RowTotal = PiecePrice - DiscountAmount;
  1437. let AmountWithTax = instance.getAmountWithTax(Itm.ItemId, RowTotal).split('|');
  1438. let RowTotalWithTax = instance.roundOffIgnoreZerosAfterDecimal(AmountWithTax[0]);
  1439. let RowTax = AmountWithTax[1];
  1440. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1441. $(elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountValue + ') X ' + _quantity + ' ' + Itm.UnitName + ' + (' + RowTax + ') = ' + RowTotalWithTax);
  1442. }
  1443. else if (Itm.DiscountPercent > 0) {
  1444. let Amount = (Itm.BaseQty * Itm.UnitPriceWithOutTax);
  1445. let DiscountAmount = (Amount * Itm.DiscountPercent) / 100;
  1446. let RowTotal = PiecePrice - DiscountAmount;
  1447. let AmountWithTax = instance.getAmountWithTax(Itm.ItemId, RowTotal).split('|');
  1448. let RowTotalWithTax = instance.roundOffIgnoreZerosAfterDecimal(AmountWithTax[0]);
  1449. let RowTax = AmountWithTax[1];
  1450. $(elem).find(".editItemPrice").text('(' + Itm.UnitPriceWithOutTax);
  1451. $(elem).find("#QuantityAndDiscountSpan").text(' - ' + Itm.DiscountPercent + '%) X ' + _quantity + ' ' + Itm.UnitName + ' + (' + RowTax + ') = ' + RowTotalWithTax);
  1452. }
  1453. }
  1454. if (evnt == "RefreshAllItems_InventoryClickEvents" || evnt == "FromWidget") {
  1455. let html = instance.N_getInventoryDesign(ItemId, IsCart, 0, Itm.RefItemIds);
  1456. $(elem).find("#InventoryTypesTextboxes").html(html);
  1457. instance.N_AllItemEvents(elem);
  1458. }
  1459. }
  1460. N_DeleteCartItems(ItemId, FromWidget = false, RefItemIds = "") {
  1461. let instance = this;
  1462. let itemelement = $('.variant-addeditem-' + ItemId);
  1463. let element_name = "cartitem-";
  1464. if (FromWidget) {
  1465. element_name = "variant-addeditem-";
  1466. var itemindex = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_ItemIds.findIndex(x => x == Number(ItemId));
  1467. Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_ItemIds.splice(itemindex, 1);
  1468. }
  1469. $("." + element_name + ItemId).remove();
  1470. let FocItems = instance.g_CartItems_New.filter(x => x.RefItemIds.indexOf(ItemId) != -1);
  1471. for (let f = 0; f < FocItems.length; f++) {
  1472. let Foc_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == FocItems[f].ItemId);
  1473. $("." + element_name + FocItems[f].ItemId + "-" + FocItems[f].RefItemIds.replace(/,/g, "-")).remove();
  1474. instance.g_CartItems_New.splice(Foc_Index, 1);
  1475. }
  1476. let deletecartitemindex = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  1477. let deleteitemindex = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == RefItemIds);
  1478. if (deleteitemindex != -1) {
  1479. instance.g_SelectedItems.splice(deleteitemindex, 1);
  1480. }
  1481. if (deletecartitemindex != -1) {
  1482. if (deletecartitemindex != -1) {
  1483. instance.g_CartItems_New.splice(deletecartitemindex, 1);
  1484. if (RefItemIds != "") {
  1485. $("." + element_name + ItemId + "-" + RefItemIds.replace(/,/g, "-")).remove();
  1486. }
  1487. else {
  1488. $("." + element_name + ItemId).remove();
  1489. }
  1490. }
  1491. $(this).parents(".cartitem").remove();
  1492. if (instance.g_CartItems_New.length == 0) {
  1493. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  1494. }
  1495. instance.N_GetTotals();
  1496. instance.N_CheckErrors();
  1497. }
  1498. }
  1499. roundOffIgnoreZerosAfterDecimal(n, decimalValue = 2) {
  1500. n = Number(n);
  1501. return Number(n.toFixed(decimalValue));
  1502. }
  1503. getAmountWithTax(ItemId, Amount) {
  1504. let instance = this;
  1505. let TaxRate = 0, AmountWithTax = 0;
  1506. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  1507. if (LoadedItem != undefined) {
  1508. let taxPercentList = LoadedItem.TaxPercentList;
  1509. if (taxPercentList != null) {
  1510. for (let i = 0; i < taxPercentList.length; i++) {
  1511. let percen = taxPercentList[i];
  1512. TaxRate += Amount * percen.Percentage / 100;
  1513. }
  1514. AmountWithTax = Amount + TaxRate;
  1515. }
  1516. }
  1517. return instance.roundOffIgnoreZerosAfterDecimal(AmountWithTax) + '|' + instance.roundOffIgnoreZerosAfterDecimal(TaxRate);
  1518. }
  1519. N_getPriceTypeValues(ItemId, Packs = 0, Pieces = 0) {
  1520. let instance = this;
  1521. let taxpercentage = 0, TaxRate = 0, TaxRateAmount = 0, strTaxPercents = "", CompositePiecePriceTaxRate = 0;
  1522. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  1523. if (LoadedItem != undefined) {
  1524. let taxPercentList = LoadedItem.TaxPercentList;
  1525. let PackSize = LoadedItem.PackSize;
  1526. let PackCount = LoadedItem.PackCount;
  1527. let ItemUnitPrices = instance.g_ItemsUnitPrice_New.find(x => x.ItemId == ItemId);
  1528. let UnitPrice = 0;
  1529. if (ItemUnitPrices != undefined) {
  1530. UnitPrice = ItemUnitPrices.UnitPrice;
  1531. }
  1532. let PiecePrice_BaseQty = PackSize;
  1533. let CartItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId);
  1534. if (Packs > 0 || Pieces > 0) {
  1535. PiecePrice_BaseQty = Number(PackCount) * Number(PackSize) * Number(Packs) + (Pieces * PackSize);
  1536. }
  1537. let piecePriceDecimalValue = 0;
  1538. let piecePrice = Number(UnitPrice) * Number(PiecePrice_BaseQty);
  1539. if (Number.isInteger(piecePrice))
  1540. piecePriceDecimalValue = piecePrice;
  1541. else
  1542. piecePriceDecimalValue = Number(UnitPrice) * Number(PiecePrice_BaseQty);
  1543. if (taxPercentList != null) {
  1544. for (let i = 0; i < taxPercentList.length; i++) {
  1545. let percen = taxPercentList[i];
  1546. taxpercentage += percen.Percentage;
  1547. TaxRate += UnitPrice * percen.Percentage / 100;
  1548. CompositePiecePriceTaxRate += piecePriceDecimalValue * percen.Percentage / 100;
  1549. strTaxPercents += percen.LedgerId + ":" + percen.Percentage + ",";
  1550. }
  1551. TaxRateAmount = UnitPrice + TaxRate;
  1552. }
  1553. let compositeDecimalValue = 0;
  1554. if (TaxRateAmount == 0) {
  1555. TaxRateAmount = UnitPrice;
  1556. compositeDecimalValue = Number(TaxRateAmount);
  1557. }
  1558. if (Number.isInteger(TaxRateAmount)) {
  1559. compositeDecimalValue = TaxRateAmount;
  1560. }
  1561. else
  1562. compositeDecimalValue = Number(TaxRateAmount);
  1563. let compositePiecePriceDecimalvalue = 0;
  1564. if (instance.g_IsEnableCompositePiecePrice) {
  1565. compositePiecePriceDecimalvalue = Number(CompositePiecePriceTaxRate) + piecePriceDecimalValue;
  1566. }
  1567. LoadedItem.CompositePrice = Number(instance.roundOff(compositeDecimalValue));
  1568. LoadedItem.PiecePrice = Number(instance.roundOff(piecePriceDecimalValue));
  1569. LoadedItem.CompositePiecePrice = Number(instance.roundOff(compositePiecePriceDecimalvalue));
  1570. if (CartItemIndex != -1) {
  1571. instance.g_CartItems_New[CartItemIndex].CompositePrice = Number(instance.roundOff(compositeDecimalValue));
  1572. instance.g_CartItems_New[CartItemIndex].PiecePrice = Number(instance.roundOff(piecePriceDecimalValue));
  1573. instance.g_CartItems_New[CartItemIndex].CompositePiecePrice = Number(instance.roundOff(compositePiecePriceDecimalvalue));
  1574. }
  1575. }
  1576. }
  1577. N_CheckValidations(ItemId, IsCart) {
  1578. let instance = this;
  1579. let errormessage = "";
  1580. if (ItemId != 0) {
  1581. let element;
  1582. let Item;
  1583. if (IsCart) {
  1584. let CartItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  1585. Item = instance.g_CartItems_New[CartItem_Index];
  1586. element = $(".cartitem-" + ItemId);
  1587. }
  1588. else {
  1589. let SelectedItem_Index = instance.g_SelectedItems.findIndex(x => x.ItemId == ItemId && x.RefItemIds == "");
  1590. Item = instance.g_SelectedItems[SelectedItem_Index];
  1591. element = $(".variant-addeditem-" + ItemId);
  1592. }
  1593. if (Item != undefined) {
  1594. element.find(".tax-error").text("");
  1595. Item.IsError = false;
  1596. let price = Item.UnitPrice;
  1597. let actualprice = Item.ActualPrice;
  1598. if (price == 0) {
  1599. Item.ErrorMsg += "\n Unit price is zero";
  1600. element.find(".tax-error").text("Unit price is zero").removeClass("text-danger").addClass("text-warning");
  1601. }
  1602. if (price < actualprice) {
  1603. Item.IsError = true;
  1604. element.find(".tax-error").text("Unit price must be greater than " + actualprice + "").addClass("text-danger").removeClass("text-warning");
  1605. Item.ErrorMsg += "\n Unit price must greater than " + actualprice + "";
  1606. }
  1607. if (Item.IsTaxError && Item.BaseQty != 0) {
  1608. Item.IsError = true;
  1609. Item.ErrorMsg = "Tax not assigned";
  1610. element.find(".tax-error").text("Tax not assigned").addClass("text-danger").removeClass("text-warning");
  1611. }
  1612. if (Item.DiscountPercent > 100) {
  1613. element.find(".tax-error").text("Discount % can't be greater than 100").addClass("text-danger").removeClass("text-warning");
  1614. Item.ErrorMsg += "\n Discount % can't be greater than 100";
  1615. Item.IsError = true;
  1616. }
  1617. }
  1618. }
  1619. instance.N_CheckErrors();
  1620. instance.CheckEnablePiece();
  1621. instance.CheckEnablePacks();
  1622. return errormessage;
  1623. }
  1624. CheckEnablePiece() {
  1625. let instance = this;
  1626. let picesfound = instance.g_CartItems_New.filter(x => x.Pieces > 0);
  1627. if (picesfound.length > 0)
  1628. $('#chk_Pieces').attr('disabled', "true");
  1629. else
  1630. $('#chk_Pieces').removeAttr('disabled');
  1631. }
  1632. CheckEnablePacks() {
  1633. let instance = this;
  1634. let packsfound = instance.g_CartItems_New.filter(x => x.Packs > 0);
  1635. if (packsfound.length > 0)
  1636. $('#chk_Packs').attr('disabled', "true");
  1637. else
  1638. $('#chk_Packs').removeAttr('disabled');
  1639. }
  1640. N_CheckErrors() {
  1641. let instance = this;
  1642. let IsCart = false;
  1643. if (!$("#Items-list").is(":visible")) {
  1644. IsCart = true;
  1645. }
  1646. let Items = [];
  1647. if (IsCart) {
  1648. Items = instance.g_CartItems_New;
  1649. }
  1650. else {
  1651. Items = instance.g_SelectedItems;
  1652. }
  1653. let errors = Items.filter(x => x.IsError == true);
  1654. let leverageErrors = Items.filter(x => x.IsLeverageError == true);
  1655. if (leverageErrors.length == 0) {
  1656. instance._opportunity.g_IsApprovalRequired = false;
  1657. if (!$('.leverage-Warning').hasClass('hidden'))
  1658. $('.leverage-Warning').addClass('hidden');
  1659. }
  1660. else {
  1661. instance._opportunity.g_IsApprovalRequired = true;
  1662. if ($('.leverage-Warning').hasClass('hidden'))
  1663. $('.leverage-Warning').removeClass('hidden');
  1664. }
  1665. if (errors.length == 0) {
  1666. instance.EnableSave();
  1667. }
  1668. else {
  1669. instance.DisableSave();
  1670. }
  1671. }
  1672. DisableSave() {
  1673. $(".btn_Save_Form").find("button").attr("disabled", "disabled").css("cursor", "not-allowed");
  1674. $("#btn_Checkout").attr("disabled", "disabled").css("cursor", "not-allowed");
  1675. return false;
  1676. }
  1677. EnableSave() {
  1678. $(".btn_Save_Form").find("button").removeAttr("disabled").css("cursor", "auto");
  1679. $("#btn_Checkout").removeAttr("disabled").css("cursor", "pointer");
  1680. }
  1681. N_GetTotals() {
  1682. let instance = this;
  1683. let postdata = {
  1684. OrderItems: instance.g_CartItems_New,
  1685. IsCompositePrice: instance.g_IsEnableCompositePrice,
  1686. IsPiecePrice: instance.g_IsEnablePiecePrice,
  1687. IsTaxInclusive: instance._opportunity.g_IsTaxInclusive == undefined ? false : instance._opportunity.g_IsTaxInclusive,
  1688. IsCalculateTax: instance._opportunity.g_IsCalculateTax == undefined ? false : instance._opportunity.g_IsCalculateTax,
  1689. OrderTypeId: instance._opportunity.g_OpportunityTypeId,
  1690. BranchId: instance._opportunity.g_BranchId,
  1691. InventoryApplyType: instance._opportunity.g_InventoryApplyType,
  1692. };
  1693. instance.g_AppliedTaxGroups = new Array();
  1694. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getTotals(postdata).then(function (response) {
  1695. instance.g_Totals = response.result;
  1696. let res = instance.g_Totals;
  1697. if (instance.roundOff(res.TotalScrapDiscountAmount) > 0)
  1698. $("#div_ScrapDiscount").removeClass("hidden");
  1699. else
  1700. $("#div_ScrapDiscount").addClass("hidden");
  1701. $('#lblSummary_GrossAmount').text(instance.roundOff(res.GrossAmount));
  1702. $('#lblSummary_TotalDiscount').text(instance.roundOff(res.TotalDiscount));
  1703. $('#lblSummary_AssessableTotal').text(instance.roundOff(res.AssessableAmount));
  1704. $('#lblSummary_TaxTotal').text(instance.roundOff(res.TotalTax));
  1705. $('#lblSummary_ScrapDiscountAmount').text('-' + (instance.roundOff(res.TotalScrapDiscountAmount)));
  1706. $('#lblSummary_NetTotal').text(instance.roundOff(res.NetTotal));
  1707. $('#OverallOrderQuantity').text(instance.roundOffIgnoreZerosAfterDecimal(res.TotalQuantity, 2));
  1708. $(".netpacks").text(instance.g_CartItems_New.length);
  1709. });
  1710. }
  1711. GetOpportunityItems(OpportunityId = 0) {
  1712. let instance = this;
  1713. if ($("#chk_recurringopportunity").is(":checked")) {
  1714. $(".dropdown_recurtenuretypeid").addClass("required");
  1715. if ($(".dropdown_recurtenuretypeid").val() == "0" || $(".dropdown_recurtenuretypeid").val() == 0) {
  1716. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Open For is required");
  1717. return false;
  1718. }
  1719. }
  1720. let ItemList = new Array();
  1721. for (let c = 0; c < instance.g_CartItems_New.length; c++) {
  1722. let OpportunityItemIndex = c;
  1723. let CartItem = instance.g_CartItems_New[c];
  1724. let FocItemIds = "";
  1725. instance.g_CartItems_New.filter(z => z.RefItemIds.indexOf(CartItem.ItemId.toString()) > -1).forEach(x => {
  1726. FocItemIds += x.ItemId + "|";
  1727. });
  1728. if (CartItem.IsFocItem) {
  1729. continue;
  1730. }
  1731. let Quantity = CartItem.Quantity;
  1732. if (CartItem.IsMultipleUOMs && CartItem.UOMQuantity > 0) {
  1733. Quantity = CartItem.UOMQuantity;
  1734. }
  1735. ItemList.push({
  1736. OpportunityItemId: CartItem.OpportunityItemId,
  1737. OpportunityId: OpportunityId,
  1738. OpportunityItemIndex: OpportunityItemIndex,
  1739. ItemId: CartItem.ItemId,
  1740. ItemName: CartItem.ItemName,
  1741. UnitPrice: CartItem.UnitPriceWithOutTax,
  1742. PriceListId: CartItem.PriceListId,
  1743. ExpectedPrice: CartItem.ExpectedPrice,
  1744. Quantity: Quantity,
  1745. TaxGroupId: CartItem.TaxGroupId,
  1746. TaxGroupName: CartItem.TaxGroupName,
  1747. TaxTotal: CartItem.TaxAmount,
  1748. Description: CartItem.Description,
  1749. DiscountPercent: CartItem.DiscountPercent,
  1750. DiscountAmount: CartItem.DiscountAmount,
  1751. DiscountValue: CartItem.DiscountValue,
  1752. DiscountGroupId: CartItem.DiscountGroupId,
  1753. RefNo: "",
  1754. RowTotal: CartItem.Amount,
  1755. AvailableQty: CartItem.AvailableQuantity,
  1756. ExchangeDC: CartItem.ExchangeDC,
  1757. HideOnInvoice: false,
  1758. Packs: CartItem.Packs,
  1759. Pieces: CartItem.Pieces,
  1760. IsAfterTax: CartItem.IsAfterTax,
  1761. OptOutAmount: CartItem.optoutAmount,
  1762. OptOutCampaignGroupId: CartItem.optoutOfferGroupId,
  1763. IsFoc: CartItem.IsFocItem,
  1764. OrderFromEstimate: false,
  1765. PriceTypeId: Number(instance.g_PriceTypeId),
  1766. RefItemIds: CartItem.RefItemIds,
  1767. RefItemId: 0,
  1768. FocItemIds: FocItemIds,
  1769. AlternateUnitId: CartItem.SelectedUnitId,
  1770. DefaultSize: CartItem.DefaultSize,
  1771. });
  1772. }
  1773. return ItemList;
  1774. }
  1775. N_RefreshAllItems(FromWidget = false, evnt) {
  1776. let instance = this;
  1777. for (let i = 0; i < instance.g_LoadedItems.length; i++) {
  1778. let Itm = instance.g_LoadedItems[i];
  1779. let elem = $(".variant-addeditem-" + Itm.ItemId);
  1780. if (elem != undefined && elem.length > 0) {
  1781. instance.N_updateItemsArray(elem, "RefreshAllItems_" + evnt, FromWidget);
  1782. }
  1783. }
  1784. }
  1785. itemSettings(FromWidget = false) {
  1786. let instance = this;
  1787. $(".InventorySettings").html(`<div class="row" id="div_chkpieces"><div class="col-sm-3 hidden divselectall"><div class="custom-control custom-checkbox divselectall checkbox-primary"><input type="checkbox" class="custom-control-input" id="chk_AllItems"><label class="custom-control-label" for="chk_AllItems">Select All</label></div></div><div class="col-sm-4 div_chk_Packs hidden"><div class="custom-control custom-checkbox divEnablePacks checkbox-primary"><input type="checkbox" class="custom-control-input" id="chk_Packs"><label class="custom-control-label" for="chk_Packs">Enable Packs</label></div></div><div class="col-sm-4 div_chk_Pieces hidden"><div class="custom-control custom-checkbox divEnablePieces checkbox-primary"><input type="checkbox" class="custom-control-input" id="chk_Pieces"><label class="custom-control-label" for="chk_Pieces">Enable Pieces</label></div></div><div class="col-sm-4 hidden div_chk_CompositePrice"><div class="custom-control custom-checkbox checkbox-primary"><input type="checkbox" class="custom-control-input" id="chk_CompositePrice"><label class="custom-control-label" for="chk_CompositePrice">Enable Composite Price</label></div></div><div class="col-sm-4 hidden div_chk_PiecePrice"><div class="custom-control custom-checkbox checkbox-primary"><input type="checkbox" class="custom-control-input" id="chk_PiecePrice"><label class="custom-control-label" for="chk_PiecePrice">Enable Piece Price</label></div></div></div><br /><div class="d-none d-md-block"><div class="row div_titledetails"><div class="col-sm-8 ItemDetails pl-80">Item Details</div><div class="col-sm-4 Inventory_Title InventoryTypesTextboxes text-center"> <div class=""> <div class="row"> <span id="spn_InventoryTitle" class="col-6">Cartons</span><span id="spn_picesTitle" class="col-6 pull-right hidden"> Pieces</span></div></div></div></div></div><div class="mt-2" id="div_ItemList"></div>`);
  1788. $("#div_ItemList").html('<ul class="variant-list list-group"><li class="variant-item hidden"></li>');
  1789. instance.g_CartItems_New = [];
  1790. instance.g_ItemsUnitPrice_New = [];
  1791. instance.g_SelectedItems = [];
  1792. instance.g_LoadedItems = [];
  1793. $("#chk_AllItems").unbind().click(function () {
  1794. if ($('#chk_AllItems').is(':checked')) {
  1795. $(".variant-list").find(".chk_PurPlanItem").each(function () {
  1796. let element = $(this).closest(".variant-item");
  1797. if (element.find("#txt_Cartons").val() != 0 && element.find("#txt_Cartons").val() != "") {
  1798. instance.N_updateItemsArray(element, "PurPlan_AllItems", false);
  1799. $(element).find(".chk_PurPlanItem").prop("checked", true);
  1800. }
  1801. });
  1802. }
  1803. else {
  1804. $(".variant-list").find(".chk_PurPlanItem").prop("checked", false);
  1805. instance.g_CartItems_New = [];
  1806. $("#ulOrder_Cart").find(".cartitem").remove();
  1807. $("#OverallOrderQuantity").text("0");
  1808. $("#totalOrderItems").text("0");
  1809. }
  1810. });
  1811. instance.inventoryTypeClickEvents(FromWidget);
  1812. instance.priceTypeClickEvents(FromWidget);
  1813. }
  1814. inventoryTypeClickEvents(FromWidget) {
  1815. let instance = this;
  1816. $('#chk_Pieces').click(function () {
  1817. if ($('#chk_Pieces').is(':checked')) {
  1818. instance.g_IsEnablePieces = true;
  1819. }
  1820. else
  1821. instance.g_IsEnablePieces = false;
  1822. instance.N_RefreshAllItems(FromWidget, "InventoryClickEvents");
  1823. });
  1824. $('#chk_Packs').click(function () {
  1825. if ($('#chk_Packs').is(':checked')) {
  1826. instance.g_IsEnablePacks = true;
  1827. }
  1828. else
  1829. instance.g_IsEnablePacks = false;
  1830. instance.N_RefreshAllItems(FromWidget, "InventoryClickEvents");
  1831. });
  1832. }
  1833. priceTypeClickEvents(FromWidget) {
  1834. let instance = this;
  1835. $('#chk_PiecePrice').click(function () {
  1836. if ($('#chk_PiecePrice').is(':checked')) {
  1837. if (instance.g_IsEnableCompositePrice) {
  1838. instance.g_IsEnableCompositePrice = false;
  1839. instance.g_IsEnablePiecePrice = false;
  1840. instance.g_IsEnableCompositePiecePrice = true;
  1841. }
  1842. else {
  1843. instance.g_IsEnablePiecePrice = true;
  1844. instance.g_IsEnableCompositePiecePrice = false;
  1845. instance.g_IsEnableCompositePrice = false;
  1846. }
  1847. }
  1848. else {
  1849. instance.g_IsEnablePiecePrice = false;
  1850. instance.g_IsEnableCompositePiecePrice = false;
  1851. instance.g_IsEnableCompositePrice = $('#chk_CompositePrice').is(':checked');
  1852. }
  1853. instance.N_RefreshAllItems(FromWidget, "PriceTypeClickEvents");
  1854. });
  1855. $('#chk_CompositePrice').click(function () {
  1856. if ($('#chk_CompositePrice').is(':checked')) {
  1857. if (instance.g_IsEnablePiecePrice) {
  1858. instance.g_IsEnableCompositePrice = false;
  1859. instance.g_IsEnableCompositePiecePrice = true;
  1860. instance.g_IsEnablePiecePrice = false;
  1861. }
  1862. else {
  1863. instance.g_IsEnableCompositePrice = true;
  1864. instance.g_IsEnableCompositePiecePrice = false;
  1865. instance.g_IsEnablePiecePrice = false;
  1866. }
  1867. }
  1868. else {
  1869. instance.g_IsEnableCompositePrice = false;
  1870. instance.g_IsEnableCompositePiecePrice = false;
  1871. instance.g_IsEnablePiecePrice = $('#chk_PiecePrice').is(':checked');
  1872. }
  1873. instance.setPriceType();
  1874. instance.N_RefreshAllItems(FromWidget, "PriceTypeClickEvents");
  1875. });
  1876. }
  1877. setPriceType() {
  1878. var instance = this;
  1879. if (instance.g_IsEnablePiecePrice) {
  1880. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.PiecePrice;
  1881. }
  1882. else if (instance.g_IsEnableCompositePrice) {
  1883. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.CompositePrice;
  1884. }
  1885. else if (instance.g_IsEnableCompositePiecePrice) {
  1886. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.Both;
  1887. }
  1888. else {
  1889. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.None;
  1890. }
  1891. }
  1892. showOfferItems(OrganizationId, ItemId, ItemName, OpportunityType, element) {
  1893. if (OpportunityType == 3)
  1894. OpportunityType = 1;
  1895. else
  1896. OpportunityType = 2;
  1897. Unibase.Platform.Helpers.FileCacheHelper.Instance().loadJsFiles(["apps/transact/components/invoices/itemofferselection.js", "apps/transact/controls/invoices/invoiceitem.component.js"], function () {
  1898. Unibase.Platform.Helpers.NavigationHelper.Instance().popup(0, "", Bizgaze.Apps.Transact.Components.Invoices.ItemOfferSelection.Instance(), function () {
  1899. Bizgaze.Apps.Transact.Components.Invoices.ItemOfferSelection.Instance().LoadOfferItems(OrganizationId, ItemId, ItemName, OpportunityType, $(element), "Opportunity");
  1900. }, Unibase.Platform.Helpers.Size.Large);
  1901. });
  1902. }
  1903. checkOffers(FromWidget, evnt) {
  1904. return __awaiter(this, void 0, void 0, function* () {
  1905. let instance = this;
  1906. let ordItems = new Array();
  1907. let applyType = '';
  1908. if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesOpportunity) {
  1909. applyType = 'Sales';
  1910. }
  1911. else if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseOpportunity)
  1912. applyType = 'Purchases';
  1913. instance.g_CartItems_New.filter(x => x.IsFocItem == false).forEach(function (c) {
  1914. c.IsFocAdded = false;
  1915. c.FocItemIds = '';
  1916. c.IsOfferDiscountApplied = false;
  1917. c.AppliedOfferVolume = 0;
  1918. let ItemId = c.ItemId;
  1919. let baseqty = Number(c.BaseQty);
  1920. let unitPrice = Number(c.UnitPrice);
  1921. let rowTotal = instance.roundOff(baseqty * unitPrice);
  1922. ordItems.push({
  1923. ItemId: Number(ItemId),
  1924. Quantity: baseqty,
  1925. RowTotal: Number(rowTotal),
  1926. });
  1927. });
  1928. if (FromWidget) {
  1929. let OpportunityId = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_OpportunityId;
  1930. let OpportunityItemId = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_Edit_OpportunityItemId;
  1931. instance.fileCacheHelper.loadJsFile("apps/transact/managers/opportunity/opportunitymanager.js", function () {
  1932. Bizgaze.Apps.Transact.Managers.OpportunityManager.Instance().getOpportunityItemsById(OpportunityId).then(function (response) {
  1933. let data = response.result;
  1934. data = data.filter(x => x.OpportunityItemId != OpportunityItemId && x.IsFoc == false);
  1935. for (let d = 0; d < data.length; d++) {
  1936. let ItemId = data[d].ItemId;
  1937. let baseqty = Number(data[d].Quantity);
  1938. let unitPrice = Number(data[d].UnitPrice);
  1939. let rowTotal = instance.roundOff(baseqty * unitPrice);
  1940. ordItems.push({
  1941. ItemId: Number(ItemId),
  1942. Quantity: baseqty,
  1943. RowTotal: Number(rowTotal),
  1944. });
  1945. }
  1946. instance.bindOfferItems(FromWidget, ordItems);
  1947. });
  1948. });
  1949. }
  1950. else {
  1951. instance.bindOfferItems(FromWidget, ordItems);
  1952. }
  1953. });
  1954. }
  1955. bindOfferItems(FromWidget, ordItems) {
  1956. var instance = this;
  1957. let IsCart = false;
  1958. if ($("#ulOrder_Cart").is(":visible")) {
  1959. IsCart = true;
  1960. }
  1961. let ApplyDate1 = moment(instance.g_OfferApplyDate, "DD/MM/YYYY").add(1, 'days').format("YYYY/MM/DD");
  1962. let ApplyDate = new Date(ApplyDate1);
  1963. let ApplyType = 1;
  1964. if (instance._opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseOpportunity)
  1965. ApplyType = 2;
  1966. let postData = {
  1967. OrderItems: ordItems,
  1968. ContactId: instance._opportunity.g_OrganizationId,
  1969. ApplyType: ApplyType,
  1970. ApplyDate: ApplyDate
  1971. };
  1972. Bizgaze.Apps.Transact.Managers.OfferManager.Instance().getRelatedOffersByItem(postData).then(function (response) {
  1973. return __awaiter(this, void 0, void 0, function* () {
  1974. if (response != null && response.Result.length != 0) {
  1975. let AllFocItems = [];
  1976. for (let i = 0; i < response.Result.length; i++) {
  1977. let data = response.Result[i];
  1978. let appliedItems = data.applyIds.split(',');
  1979. let discValue = 0;
  1980. let discPercent = 0;
  1981. if (data.PayoutValue > 0)
  1982. discValue = data.PayoutValue;
  1983. else if (data.OPayoutValue > 0)
  1984. discValue = data.OPayoutValue;
  1985. else if (data.PayoutPercent > 0)
  1986. discPercent = data.PayoutPercent;
  1987. let volume = data.Volume;
  1988. let focItems = data.ItemVolumePayouts;
  1989. for (let f = 0; f < focItems.length; f++) {
  1990. if (focItems[f].Quantity != 0) {
  1991. AllFocItems.push(focItems[f]);
  1992. }
  1993. }
  1994. let contactId = instance._opportunity.g_OrganizationId;
  1995. for (let j = 0; j < focItems.length; j++) {
  1996. let focItem_RefItemIds = focItems[j].RefItemIds;
  1997. let focItem_RefItemSKUs = focItems[j].RefItemSKUs;
  1998. let ValidFocIndex = instance.g_ValidFocItems.findIndex(x => x.ItemId == focItems[j].ItemId && x.RefItemIds == focItem_RefItemIds);
  1999. let CartItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == focItems[j].ItemId);
  2000. if (focItems[j].Quantity > 0 && ((ValidFocIndex != -1 && focItems[j].IsFoC) || (!focItems[j].IsFoC))) {
  2001. let FocItem_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == focItems[j].ItemId && x.RefItemIds == focItem_RefItemIds);
  2002. if (FocItem_Index == -1) {
  2003. instance.addFocItemToCart(contactId, focItems[j].ItemId, focItems[j].Quantity, focItems[j].Discount, focItem_RefItemIds, FromWidget, focItem_RefItemSKUs);
  2004. }
  2005. else {
  2006. instance.editFocCartItem(focItems[j].ItemId, focItems[j].Quantity, FromWidget);
  2007. }
  2008. }
  2009. else if (CartItemIndex != -1) {
  2010. instance.N_DeleteCartItems(focItems[j].ItemId, FromWidget, focItem_RefItemIds);
  2011. }
  2012. }
  2013. for (let m = 0; m < appliedItems.length; m++) {
  2014. let n = instance.g_CartItems_New.findIndex(x => x.ItemId == appliedItems[m] && x.RefItemIds == "");
  2015. if (n != -1) {
  2016. if (discValue > 0 || discPercent > 0) {
  2017. instance.g_CartItems_New[n].DiscountValue = discValue;
  2018. instance.g_CartItems_New[n].DiscountPercent = discPercent;
  2019. instance.g_CartItems_New[n].IsFocAdded = true;
  2020. instance.g_CartItems_New[n].IsOfferDiscountApplied = true;
  2021. instance.g_CartItems_New[n].AppliedOfferVolume = volume;
  2022. let Elem = $(".variant-addeditem-" + instance.g_CartItems_New[n].ItemId);
  2023. let Cart_Elem = $(".cartitem-" + instance.g_CartItems_New[n].ItemId);
  2024. let Discount = discValue == 0 ? discPercent : discValue;
  2025. $(Elem).find("#Ord_txtdiscount").val(Discount);
  2026. $(Cart_Elem).find("#Ord_txtdiscount").val(Discount);
  2027. let DiscountType = discValue == 0 ? 1 : 2;
  2028. $(Elem).find(".btnOrder_DiscType").val(DiscountType);
  2029. $(Cart_Elem).find(".btnOrder_DiscType").val(DiscountType);
  2030. let AssessableAmount = Number(instance.g_CartItems_New[n].Amount);
  2031. let discVal = Number(instance.g_CartItems_New[n].DiscountValue) * Number(instance.g_CartItems_New[n].BaseQty);
  2032. let DiscAmount = Number((instance.g_CartItems_New[n].Amount * discPercent) / 100) + Number(discVal);
  2033. let discAmt = DiscAmount + Number(instance.g_CartItems_New[n].optoutAmount);
  2034. AssessableAmount = Number(AssessableAmount) - Number(discAmt);
  2035. let AmountWithDiscount = Number(instance.g_CartItems_New[n].Amount) - Number(DiscAmount);
  2036. instance.g_CartItems_New[n].DiscountAmount = discAmt;
  2037. instance.g_CartItems_New[n].AmountWithDiscount = AmountWithDiscount;
  2038. instance.g_CartItems_New[n].DiscountType = DiscountType;
  2039. }
  2040. let amount = Number(instance.g_CartItems_New[n].UnitPrice) * Number(instance.g_CartItems_New[n].BaseQty);
  2041. let discAmt = Number(instance.roundOff((amount * discPercent) / 100)) + Number(instance.roundOff(discValue));
  2042. if (discAmt != 0) {
  2043. let assessableAmount = Number(amount) - Number(discAmt);
  2044. }
  2045. else {
  2046. }
  2047. }
  2048. instance.g_CartItems_New.filter(x => x.IsFocItem == false).forEach(function (c) {
  2049. if (!FromWidget) {
  2050. let Elem = $(".variant-addeditem-" + c.ItemId);
  2051. let Cart_Elem = $(".cartitem-" + c.ItemId);
  2052. instance.N_UpdateItemsDesign(Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2053. instance.N_UpdateItemsDesign(Cart_Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2054. }
  2055. });
  2056. }
  2057. }
  2058. let Ref_Items = instance.g_CartItems_New.filter(x => x.RefItemIds != "");
  2059. for (let r = 0; r < Ref_Items.length; r++) {
  2060. let a = AllFocItems.findIndex(x => x.ItemId == Ref_Items[r].ItemId);
  2061. if (a == -1) {
  2062. instance.N_DeleteCartItems(Ref_Items[r].ItemId, FromWidget, Ref_Items[r].RefItemIds);
  2063. }
  2064. }
  2065. }
  2066. else {
  2067. instance.g_CartItems_New.filter(x => x.IsFocItem == true).forEach(function (c) {
  2068. let Foc_Index = instance.g_CartItems_New.findIndex(x => x.ItemId == c.ItemId && x.RefItemIds != "");
  2069. instance.g_CartItems_New.splice(Foc_Index, 1);
  2070. $(".cartitem-" + c.ItemId + "-" + c.RefItemIds.replace(/,/g, "-")).remove();
  2071. if (FromWidget) {
  2072. $(".variant-addeditem-" + c.ItemId + "-" + c.RefItemIds.replace(/,/g, "-")).remove();
  2073. }
  2074. });
  2075. instance.g_CartItems_New.filter(x => x.IsFocItem == false && x.IsOfferAvailable == true).forEach(function (c) {
  2076. if (!FromWidget) {
  2077. let Elem = $(".variant-addeditem-" + c.ItemId);
  2078. let Cart_Elem = $(".cartitem-" + c.ItemId);
  2079. let CartItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == c.ItemId);
  2080. if (CartItemIndex != -1) {
  2081. instance.g_CartItems_New[CartItemIndex].DiscountValue = 0;
  2082. instance.g_CartItems_New[CartItemIndex].DiscountPercent = 0;
  2083. instance.g_CartItems_New[CartItemIndex].IsFocAdded = false;
  2084. instance.g_CartItems_New[CartItemIndex].IsOfferDiscountApplied = false;
  2085. instance.g_CartItems_New[CartItemIndex].AppliedOfferVolume = 0;
  2086. instance.g_CartItems_New[CartItemIndex].DiscountAmount = 0;
  2087. instance.g_CartItems_New[CartItemIndex].AmountWithDiscount = instance.g_CartItems_New[CartItemIndex].Amount;
  2088. instance.g_CartItems_New[CartItemIndex].DiscountType = 2;
  2089. }
  2090. instance.N_UpdateItemsDesign(Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2091. instance.N_UpdateItemsDesign(Cart_Elem, "AddFocItem_IsOfferDiscountApplied", IsCart);
  2092. }
  2093. });
  2094. }
  2095. instance.N_GetTotals();
  2096. if (instance.g_CartItems_New.length == 0) {
  2097. $("#ulOrder_Cart").html('<li id="0" class="cartitem list-group-item col-xs-12 hidden clear no-border"></li> <li class="list-group-item col-xs-12 no-border EmptyCartLi"><strong>Your Shopping Cart is empty.</strong></li>');
  2098. }
  2099. else {
  2100. $(".EmptyCartLi").remove();
  2101. }
  2102. });
  2103. });
  2104. }
  2105. addFocItemToCart(ContactId, ItemId, Quantity, Discount, RefItemIds, FromWidget, RefItemSKUs = "") {
  2106. let instance = this;
  2107. let ShippingAddressId = $(".txtAutoComplete_shippingaddressid").val();
  2108. let BranchId = $(".txtAutoComplete_branchid").val();
  2109. let LobId = $(".txtAutoComplete_lobid").val();
  2110. let OpportunityItemId = 0;
  2111. if (FromWidget) {
  2112. ShippingAddressId = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_ShippingAddressId;
  2113. BranchId = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_BranchId;
  2114. LobId = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_LobId;
  2115. let FocItem = Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().g_FocItems.find(x => x.ItemId == ItemId);
  2116. if (FocItem != undefined) {
  2117. OpportunityItemId = FocItem.OrderItemId;
  2118. }
  2119. }
  2120. let postdata = {
  2121. PriceCodeId: Number(instance._opportunity.g_PriceCodeId),
  2122. ContactId: ContactId,
  2123. ShippingAddressId: Number(ShippingAddressId),
  2124. BranchId: Number(BranchId),
  2125. WareHouseId: Number(instance.g_WarehouseId),
  2126. LobId: Number(LobId),
  2127. OrderType: instance._opportunity.g_OpportunityTypeId,
  2128. OfferOnly: false,
  2129. IsExcise: instance.g_IsExcise,
  2130. SearchTerm: "",
  2131. Page: 0,
  2132. IsCompositePrice: instance.g_IsEnableCompositePrice,
  2133. IsPiecePrice: instance.g_IsEnablePiecePrice,
  2134. IsCompositePiecePrice: instance.g_IsEnableCompositePiecePrice,
  2135. Rows: 10,
  2136. ItemId: ItemId.toString(),
  2137. CountryId: instance._opportunity.g_CountryId,
  2138. ItemGroupId: 0,
  2139. Tags: "",
  2140. IsPoints: false,
  2141. Points: instance._opportunity.g_LoyaltyPoints,
  2142. IsEligibleItemsOnly: instance._opportunity.g_LoadEligibleItemsOnly
  2143. };
  2144. Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getVariantsForOrder(postdata).then(function (response) {
  2145. let data = response.result[0];
  2146. let LoadedItem_Index = instance.g_LoadedItems.findIndex(z => z.ItemId == data.ItemId);
  2147. if (LoadedItem_Index == -1) {
  2148. instance.g_LoadedItems.push(data);
  2149. }
  2150. else {
  2151. instance.g_LoadedItems[LoadedItem_Index].TaxPercentList = data.TaxPercentList;
  2152. }
  2153. let ItemName = data.ItemName;
  2154. let ItemId = Number(data.ItemId);
  2155. let Packs = 0;
  2156. let PackCount = data.PackCount;
  2157. let PackSize = data.PackSize;
  2158. let UnitPrice = data.UnitPrice;
  2159. let UnitName = data.UnitName;
  2160. let ExpectedPrice = data.UnitPrice;
  2161. let discType = 1;
  2162. let DiscPercent = 0;
  2163. let DiscVal = 0;
  2164. let PriceListId = 0;
  2165. let AvailablePacks = data.AvailablePacks;
  2166. let AvailablePieces = data.AvailablePieces;
  2167. let AvailableQuantity = data.AvailableQuantity;
  2168. let TotalAvailablePieces = data.TotalAvailablePieces;
  2169. let SKU = data.SKU;
  2170. if (Number(PackCount) == 0)
  2171. PackCount = 1;
  2172. if (Number(PackSize) == 0)
  2173. PackSize = 1;
  2174. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  2175. Packs = Number(Quantity) / (PackCount * PackSize);
  2176. let amount = Number(Quantity) * UnitPrice;
  2177. let assessableAmount = Number(amount);
  2178. let discAmt = 0;
  2179. if (discType == 2) {
  2180. DiscVal = Discount;
  2181. discAmt = Number(DiscVal) * Number(Quantity);
  2182. assessableAmount = instance.roundOff(amount - discAmt);
  2183. }
  2184. else if (discType == 1) {
  2185. DiscPercent = Discount;
  2186. discAmt = Number((amount * DiscPercent) / 100);
  2187. assessableAmount = instance.roundOff(Number(assessableAmount) - Number(discAmt));
  2188. if (amount == 0)
  2189. assessableAmount = 0;
  2190. }
  2191. let BaseQty = Number(PackCount) * Number(PackSize) * Number(Packs);
  2192. let IsCalculateTax = instance._opportunity.g_IsCalculateTax;
  2193. let TaxGroupId = 0;
  2194. let TaxAmount = 0;
  2195. let StrTaxPercents = "";
  2196. let TaxGroupName = "";
  2197. let IsTaxError = false;
  2198. if (IsCalculateTax) {
  2199. if (data.TaxGroupId == 0) {
  2200. IsTaxError = true;
  2201. }
  2202. else {
  2203. TaxGroupId = data.TaxGroupId;
  2204. TaxGroupName = data.TaxGroupName;
  2205. for (let p = 0; p < data.TaxPercentList.length; p++) {
  2206. let percen = data.TaxPercentList[p];
  2207. let tax = assessableAmount * percen.Percentage / 100;
  2208. TaxAmount += tax;
  2209. }
  2210. StrTaxPercents = data.strTaxPercents;
  2211. instance.N_getPriceTypeValues(ItemId);
  2212. if (instance.g_IsEnablePiecePrice) {
  2213. UnitPrice = data.PiecePrice;
  2214. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.PiecePrice;
  2215. }
  2216. else if (instance.g_IsEnableCompositePrice) {
  2217. UnitPrice = data.CompositePrice;
  2218. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.CompositePrice;
  2219. }
  2220. else if (instance.g_IsEnableCompositePiecePrice) {
  2221. UnitPrice = data.CompositePiecePrice;
  2222. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.Both;
  2223. }
  2224. else {
  2225. instance.g_PriceTypeId = Bizgaze.Apps.Transact.Enums.PriceType.None;
  2226. }
  2227. }
  2228. }
  2229. let CItemIndex = instance.g_CartItems_New.findIndex(x => x.ItemId == ItemId && x.RefItemIds != "");
  2230. if (CItemIndex != -1) {
  2231. instance.g_CartItems_New.splice(CItemIndex, 1);
  2232. }
  2233. let ItemIndex = instance.g_CartItems_New.length + 1;
  2234. instance.g_CartItems_New.push({
  2235. OpportunityItemId: OpportunityItemId,
  2236. ItemIndex: ItemIndex,
  2237. ItemId: ItemId,
  2238. ItemName: ItemName,
  2239. Packs: Quantity,
  2240. Pieces: 0,
  2241. PriceListId: 0,
  2242. UnitPrice: UnitPrice,
  2243. UnitPriceWithOutTax: UnitPrice,
  2244. ExpectedPrice: ExpectedPrice,
  2245. ActualPrice: UnitPrice,
  2246. PackCount: PackCount,
  2247. PackSize: PackSize,
  2248. UnitName: UnitName,
  2249. Quantity: Quantity,
  2250. SKU: SKU,
  2251. PartNo: "",
  2252. Amount: amount,
  2253. AmountWithDiscount: assessableAmount,
  2254. DiscountPercent: DiscPercent,
  2255. DiscountValue: DiscVal,
  2256. DiscountType: discType,
  2257. DiscountAmount: discAmt,
  2258. ItemValueAfterDiscount: assessableAmount,
  2259. StrTaxPercents: StrTaxPercents,
  2260. AvailableQuantity: AvailableQuantity,
  2261. AvailablePacks: AvailablePacks,
  2262. AvailablePieces: AvailablePieces,
  2263. TotalAvailablePieces: TotalAvailablePieces,
  2264. ExchangeDC: false,
  2265. IsAfterTax: false,
  2266. BaseQty: BaseQty,
  2267. IsFocItem: true,
  2268. optoutAmount: 0,
  2269. TaxGroupId: TaxGroupId,
  2270. TaxGroupName: TaxGroupName,
  2271. TaxAmount: TaxAmount,
  2272. TaxRateAmount: 0,
  2273. TaxRate: data.TaxRate,
  2274. TaxPercentage: data.TaxPercentage,
  2275. IsOfferAvailable: false,
  2276. Description: "",
  2277. Discountable: false,
  2278. PiecePrice: 0,
  2279. CompositePrice: 0,
  2280. CompositePiecePrice: 0,
  2281. IsCheckPendingItems: false,
  2282. IsError: false,
  2283. ErrorMsg: "",
  2284. ErrorClass: "text-danger",
  2285. IsTaxError: IsTaxError,
  2286. IsLeverageError: false,
  2287. IsFocAdded: false,
  2288. RefItemIds: RefItemIds,
  2289. RefItemSKUs: RefItemSKUs,
  2290. FocItemIds: "",
  2291. DiscountGroupId: 0,
  2292. IsOfferDiscountApplied: false,
  2293. AppliedOfferVolume: 0,
  2294. optoutOfferGroupId: 0,
  2295. SuggestedPacks: 0,
  2296. MinPacks: 0,
  2297. AvgPacks: 0,
  2298. InwardOrderPacks: 0,
  2299. OutwardOrderPacks: 0,
  2300. IsMultipleUOMs: data.IsMultipleUOMs,
  2301. UOMSchemaId: data.UOMSchemaId,
  2302. MultipleUOMs: data.MultipleUOMs,
  2303. SelectedUnitId: 1,
  2304. DefaultSize: data.DefaultSize,
  2305. IsBoMAvailable: data.IsBoMAvailable,
  2306. UOMQuantity: 0
  2307. });
  2308. if (FromWidget) {
  2309. if (RefItemIds == undefined) {
  2310. RefItemIds = "";
  2311. }
  2312. data.RefItemIds = RefItemIds;
  2313. let html = instance.N_getItemDesign(data, FromWidget);
  2314. $(".variant-item:last").after(html);
  2315. let elem = $('.variant-addeditem-' + ItemId + "-" + RefItemIds.replace(/,/g, "-"));
  2316. if (elem != undefined && elem.length > 0) {
  2317. instance.N_UpdateItemsDesign(elem, "FromWidget_FocItem", false, true);
  2318. }
  2319. $(".defaultSelectedCartons").addClass("floating-label-form-group-with-value");
  2320. }
  2321. else {
  2322. instance.N_AddCartItem(ItemId, true);
  2323. }
  2324. instance.N_GetTotals();
  2325. });
  2326. }
  2327. editFocCartItem(ItemId, Quantity, FromWidget) {
  2328. let instance = this;
  2329. let CartItem = instance.g_CartItems_New.find(x => x.ItemId == ItemId && x.RefItemIds != "");
  2330. let PackCount = CartItem.PackCount;
  2331. let PackSize = CartItem.PackSize;
  2332. let UnitPrice = CartItem.UnitPrice;
  2333. let discType = CartItem.DiscountType;
  2334. let DiscVal = CartItem.DiscountValue;
  2335. let DiscPercent = CartItem.DiscountPercent;
  2336. let discAmt = CartItem.DiscountAmount;
  2337. Quantity = instance.roundOffIgnoreZerosAfterDecimal(Quantity);
  2338. let Packs = Number(Quantity) / (PackCount * PackSize);
  2339. let amount = Number(Quantity) * UnitPrice;
  2340. let assessableAmount = Number(amount);
  2341. let DiscAmount = Number((amount * DiscPercent) / 100) + Number(DiscVal);
  2342. assessableAmount = instance.roundOff(amount - DiscAmount);
  2343. if (amount == 0)
  2344. assessableAmount = 0;
  2345. let BaseQty = Number(PackCount) * Number(PackSize) * Number(Packs);
  2346. let IsCalculateTax = instance._opportunity.g_IsCalculateTax;
  2347. let AmountWithDiscount = Number(amount) - Number(DiscAmount);
  2348. let TaxAmount = 0;
  2349. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  2350. if (IsCalculateTax) {
  2351. if (LoadedItem.TaxGroupId != 0) {
  2352. for (let p = 0; p < LoadedItem.TaxPercentList.length; p++) {
  2353. let percen = LoadedItem.TaxPercentList[p];
  2354. let tax = assessableAmount * percen.Percentage / 100;
  2355. TaxAmount += tax;
  2356. }
  2357. }
  2358. }
  2359. CartItem.BaseQty = BaseQty;
  2360. CartItem.TaxAmount = TaxAmount;
  2361. CartItem.Packs = Quantity;
  2362. CartItem.Amount = amount;
  2363. CartItem.Quantity = Quantity;
  2364. CartItem.AmountWithDiscount = AmountWithDiscount;
  2365. let Foc_elem = $(".cartitem-" + ItemId + "-" + CartItem.RefItemIds.replace(/,/g, "-"));
  2366. if (FromWidget) {
  2367. Foc_elem = $('.variant-addeditem-' + ItemId + "-" + CartItem.RefItemIds.replace(/,/g, "-"));
  2368. }
  2369. instance.N_UpdateItemsDesign(Foc_elem, "EditFocItem_IsOfferDiscountApplied", true, true);
  2370. }
  2371. getSelectionStart(o) {
  2372. }
  2373. isNumberKey(evt) {
  2374. if (evt.type == "paste") {
  2375. let pastedData = evt.clipboardData.getData('text');
  2376. let regExp = /[a-zA-Z]/g;
  2377. if (regExp.test(pastedData)) {
  2378. evt.preventDefault();
  2379. return false;
  2380. }
  2381. }
  2382. else if (evt.type == "input") {
  2383. const inputVal = $(evt.currentTarget).val();
  2384. $(evt.currentTarget).val(inputVal.replace(/\D/g, ''));
  2385. }
  2386. else {
  2387. if (evt.which != 8 && evt.which != 0 && (evt.which < 48 || evt.which > 57)) {
  2388. return false;
  2389. }
  2390. }
  2391. return true;
  2392. }
  2393. validateFloatKeyPress(el, evt) {
  2394. var instance = this;
  2395. if (evt.type == "input") {
  2396. const inputVal = $(el).val();
  2397. $(el).val(inputVal.replace(/[^\d.]|\.(?=.*\.)/g, ''));
  2398. return;
  2399. }
  2400. let charCode = (evt.which) ? evt.which : evt.keyCode;
  2401. let number = el.value.split('.');
  2402. if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
  2403. return false;
  2404. }
  2405. if (number.length > 1 && charCode == 46) {
  2406. return false;
  2407. }
  2408. let caratPos = instance.getSelectionStart(el);
  2409. let dotPos = el.value.indexOf(".");
  2410. if (caratPos > dotPos && dotPos > -1 && (number[1].length > 1)) {
  2411. return false;
  2412. }
  2413. return true;
  2414. }
  2415. applyOffer(Item) {
  2416. let instance = this;
  2417. let ItemId = Item[0].ItemId;
  2418. let Qty = Item[0].Volume;
  2419. let LoadedItem = instance.g_LoadedItems.find(x => x.ItemId == ItemId);
  2420. let Cartons = Math.ceil(Qty / (LoadedItem.PackCount * LoadedItem.PackSize));
  2421. if (instance._opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Packs) {
  2422. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Cartons);
  2423. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Cartons);
  2424. }
  2425. else if (instance._opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Pieces) {
  2426. let Pieces = Math.ceil((Qty) / LoadedItem.PackSize);
  2427. $('.variant-addeditem-' + ItemId).find('#txt_Pieces').val(Pieces);
  2428. $('.cartitem-' + ItemId).find('#txt_Pieces').val(Pieces);
  2429. }
  2430. else if (instance._opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.PacksAndPieces) {
  2431. if (Cartons > 0) {
  2432. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Cartons);
  2433. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Cartons);
  2434. }
  2435. else {
  2436. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val("");
  2437. $('.cartitem-' + ItemId).find('#txt_Cartons').val("");
  2438. }
  2439. }
  2440. else {
  2441. $('.variant-addeditem-' + ItemId).find('#txt_Cartons').val(Qty);
  2442. $('.cartitem-' + ItemId).find('#txt_Cartons').val(Qty);
  2443. }
  2444. let element = $('.variant-addeditem-' + ItemId);
  2445. instance.N_updateItemsArray(element, "ApplyOffer", false, Qty);
  2446. }
  2447. static Instance() {
  2448. if (this.instance === undefined) {
  2449. this.instance = new OpportunityItem();
  2450. }
  2451. return this.instance;
  2452. }
  2453. }
  2454. Controls.OpportunityItem = OpportunityItem;
  2455. })(Controls = Transact.Controls || (Transact.Controls = {}));
  2456. })(Transact = Apps.Transact || (Apps.Transact = {}));
  2457. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  2458. })(Bizgaze || (Bizgaze = {}));