Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

itemofferselection.js 48KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let Transact;
  6. (function (Transact) {
  7. let Components;
  8. (function (Components) {
  9. let Invoices;
  10. (function (Invoices) {
  11. class ItemOfferSelection extends Unibase.Platform.Core.BaseComponent {
  12. constructor() {
  13. super(...arguments);
  14. this.Bizgaze_Transact_Selected_Plan = new Array();
  15. this.g_Selected_Plan = new Array();
  16. this.OfferIds = [];
  17. }
  18. jsFiles() {
  19. return ['platform/core/helpers/numberhelper/numberhelper.js', 'apps/transact/managers/invoicemanager.js', 'apps/transact/controls/invoices/pos.component.js'];
  20. }
  21. cssFiles() {
  22. return [];
  23. }
  24. html() {
  25. let html = '<form id="frm_Bizgazetransact_ItemOfferSelection" method="post" data-validate="parsley"><div class="b-b bg-white modal-header"><strong class="text-dark titlename">Offer of <strong id="sg_item"></strong></strong></div><div data-simplebar class="bg-light simple-scroll-bar control-sorting modal-body"><div class=""><div class="col-sm-12"><div class="li_Invoice_OfferItem_header"></div><ul><li class="hidden list-group-item Plan_Vlm_row" id ="li_Invoice_OfferItem"> </li> <div class="Offer_Header"> </ul> </div></div></div><div class="bg-white modal-footer"><a href="javascript:;" class="btn btn-light btn-sm mr-auto btn_close" id="offer_btnclose">Close</a><span class="mr-auto" id="spn_Quantity"></span> <a href="javascript:;" class="btn btn-primary btn-sm btn_pos_apply disabled" style="cursor:not-allowed" id ="btn_Apply">Apply</a></div></form>';
  26. return html;
  27. }
  28. load(item) {
  29. var instance = this;
  30. instance.Bizgaze_Transact_Selected_Plan = new Array();
  31. $(".btn_close").click(function () {
  32. instance.navigationHelper.closePopUp();
  33. });
  34. }
  35. PlanSelection(Volume, value, DiscountType, PlanVolumeId, ItemId, len, focItemId) {
  36. var instance = this;
  37. $('.Plan_Vlm_row').css('background-color', '');
  38. $('#spn_Quantity').text(Volume);
  39. $("#frm_Bizgazetransact_ItemOfferSelection").find("#btn_Apply").removeAttr("style").removeClass("disabled");
  40. instance.Bizgaze_Transact_Selected_Plan = new Array();
  41. instance.Bizgaze_Transact_Selected_Plan.push({
  42. Volume: Volume, value: value, DiscountType: DiscountType, PlanVolumeId: PlanVolumeId, ItemId: ItemId, focItemId: focItemId
  43. });
  44. instance.g_Selected_Plan.push({
  45. Volume: Volume, value: value, DiscountType: DiscountType, PlanVolumeId: PlanVolumeId, ItemId: ItemId, focItemId: focItemId
  46. });
  47. }
  48. LoadOfferItems(OrganizationId, ItemId, ItemName, InvoiceApplyType, element, Type) {
  49. var instance = this;
  50. instance.Bizgaze_Transact_Selected_Plan = new Array();
  51. $('#sg_item').text(ItemName);
  52. ItemOfferSelection.Instance().GetPlanVolume(OrganizationId, ItemId, InvoiceApplyType, Type);
  53. $('#btn_Apply').click(function () {
  54. if (Type == 'Invoice') {
  55. ItemOfferSelection.Instance().Apply(element);
  56. }
  57. else if (Type == 'Order') {
  58. instance.navigationHelper.closePopUp();
  59. if (instance.Bizgaze_Transact_Selected_Plan.length > 0) {
  60. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().applyOffer(instance.Bizgaze_Transact_Selected_Plan);
  61. }
  62. }
  63. else if (Type == 'Estimate') {
  64. instance.navigationHelper.closePopUp();
  65. if (instance.Bizgaze_Transact_Selected_Plan.length > 0) {
  66. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().applyOffer(instance.Bizgaze_Transact_Selected_Plan);
  67. }
  68. }
  69. else if (Type == 'Opportunity') {
  70. instance.navigationHelper.closePopUp();
  71. if (instance.Bizgaze_Transact_Selected_Plan.length > 0) {
  72. Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance().applyOffer(instance.Bizgaze_Transact_Selected_Plan);
  73. }
  74. }
  75. else if (Type == 'POS_Order') {
  76. let elem = $(".variant-addeditem-" + ItemId);
  77. let html = Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().getInventoryDesign(ItemId, false, 0, 0, "ApplyOffer");
  78. $(elem).find(".InventoryTypesTextboxes").html(html);
  79. Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().allItemEvents(elem);
  80. instance.navigationHelper.closePopUp();
  81. if (instance.Bizgaze_Transact_Selected_Plan.length > 0) {
  82. Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().applyOffer(instance.Bizgaze_Transact_Selected_Plan);
  83. }
  84. }
  85. else if (Type == 'Pos') {
  86. instance.navigationHelper.closePopUp();
  87. if (instance.Bizgaze_Transact_Selected_Plan.length > 0) {
  88. Bizgaze.Apps.Transact.Controls.Pos.Instance().applyOffer(instance.Bizgaze_Transact_Selected_Plan);
  89. }
  90. }
  91. });
  92. }
  93. GetPlanVolume(OrganizationId, ItemId, InvoiceApplyType, Type) {
  94. let instance = this;
  95. Bizgaze.Apps.Transact.Managers.InvoiceManager.Instance().getPlanVolume(ItemId, OrganizationId, InvoiceApplyType).then(function (result) {
  96. instance.OfferIds = [];
  97. for (var i = 0; i < result.result.length; i++) {
  98. ItemOfferSelection.Instance().ShowItemOffers(result.result[i], ItemId, Type);
  99. }
  100. });
  101. }
  102. ShowItemOffers(data, ItemId, Type) {
  103. let instance = this;
  104. var value;
  105. if (data.DiscountType == 1) {
  106. value = data.PayoutValue;
  107. }
  108. else {
  109. if (data.DiscountType == 2) {
  110. value = data.PayoutPercent;
  111. }
  112. else {
  113. if (data.DiscountType == 3) {
  114. value = data.OPayoutValue;
  115. }
  116. }
  117. }
  118. var len = $('.Plan_Vlm_row').length;
  119. var html_header = '<div class="card col-sm-12 Offer_Header pt-20" id="Offer_Header_' + data.OfferId + '"> <div class="pl-0 pb-2"> <input type="hidden" class="hf_Pln_Vlm_OfferId" value="' + data.OfferId + '"/> <span class="list-item-main-title font-weight-600 font-20">' + data.OfferName + '</span> <span class="text-dark"> - ' + data.SchemeName + '</span></div>';
  120. var html = '<div class="card card-body pa-15 Card_Plan_Vlm_row Card_Plan_Vlm_row_' + data.PlanVolumeId + '" id="Card_Plan_Vlm_row_' + data.PlanVolumeId + '"> <div class="text-dark plan_Name font-weight-600 border-bottom border-2 pb-2">' + data.PlanName + ' </div> <div class="main-heading py-2">';
  121. var html_body = '<li class="Plan_Vlm_row Plan_Vlm_row_' + data.PlanVolumeId + '">' +
  122. '<a href="javascript:;" class="text-dark">' +
  123. '<div class="" id="div_PlanVlm_' + len + '">' +
  124. '<div class="d-flex justify-content-between align-items-center w-100" style="line-height: 0.8;"><div class="biz-highlight-text-color font-36 w-100 font-weight-600"><span id="spn_Discount"></span> <span id="spn_DiscountType" class="font-12"> </span> <span class="font-12 spn_off">OFF</span></div><div class="text-success font-14 font-widget-300 px-2 offers_applied" id="li_Pln_Vlm' + len + '"><u>Apply</u></div></div><div class="font-weight-600 w-100">On Purchase of Min-Qty : ' + data.Volume + '</div>' +
  125. '</div></a></li></div>';
  126. let offerIndex = instance.OfferIds.findIndex(x => x.OfferId == data.OfferId);
  127. if (offerIndex == -1) {
  128. instance.OfferIds.push({ OfferId: data.OfferId });
  129. html = html_header + html + html_body;
  130. html += '</div>';
  131. $('.Offer_Header:last').after(html);
  132. }
  133. else {
  134. html += html_body;
  135. $('#Offer_Header_' + data.OfferId).append(html);
  136. }
  137. var ss = data.PlanName;
  138. $("#li_Pln_Vlm" + len).click(function () {
  139. let Clicked_Id = $(this).attr("id");
  140. var focElement = document.getElementById("li_Pln_Vlm" + len);
  141. var focItemIdElement = focElement.querySelector(".selectedfocitem");
  142. var focItemId = "0";
  143. if (focItemIdElement != null) {
  144. focItemId = focItemIdElement.id;
  145. }
  146. let checkstatus = $(this).find("u").text();
  147. let AppliedPlanVolumeId = $(this).parents(".Card_Plan_Vlm_row").attr("id").replace("Card_Plan_Vlm_row_", "");
  148. if (checkstatus == "Apply") {
  149. $(".Card_Plan_Vlm_row").removeAttr("style");
  150. var offerItemIndex = instance.Bizgaze_Transact_Selected_Plan.findIndex(x => x.ItemId == ItemId);
  151. if (offerItemIndex != -1) {
  152. instance.Bizgaze_Transact_Selected_Plan.splice(offerItemIndex, 1);
  153. }
  154. var sp_ItemIndex = instance.g_Selected_Plan.findIndex(x => x.ItemId == ItemId);
  155. if (offerItemIndex != -1) {
  156. instance.g_Selected_Plan.splice(sp_ItemIndex, 1);
  157. }
  158. $(".Plan_Vlm_row").find(".offers_applied").find("u").text("Apply").addClass("text-primary").removeClass("text-danger");
  159. instance.HighlightAppliedPlans(AppliedPlanVolumeId, ItemId, true);
  160. ItemOfferSelection.Instance().PlanSelection(data.Volume, value, data.DiscountType, data.PlanVolumeId, ItemId, len, Number(focItemId));
  161. }
  162. else {
  163. var msg = 'Do you what to remove Applied Offer';
  164. bootbox.confirm({
  165. message: msg,
  166. closeButton: false,
  167. buttons: {
  168. confirm: {
  169. label: 'Remove',
  170. className: 'btn-success'
  171. },
  172. cancel: {
  173. label: 'Cancel',
  174. className: 'btn-danger'
  175. }
  176. },
  177. callback: function (result) {
  178. if (result) {
  179. instance.UnHighlightPlan(AppliedPlanVolumeId, ItemId, Type);
  180. $("#spn_Quantity").text("");
  181. }
  182. else {
  183. $('#modal_popup_EditLineItem').modal('hide');
  184. bootbox.hideAll();
  185. return false;
  186. }
  187. }
  188. });
  189. }
  190. });
  191. if (value > 0) {
  192. $("#div_PlanVlm_" + len).find('#spn_Discount').text(value);
  193. if (data.DiscountType == 2) {
  194. $("#div_PlanVlm_" + len).find('#spn_DiscountType').text(" %");
  195. }
  196. else {
  197. if (data.DiscountType == 1)
  198. $("#div_PlanVlm_" + len).find('#spn_DiscountType').text(" Val");
  199. if (data.DiscountType == 3) {
  200. $("#div_PlanVlm_" + len).find('#spn_DiscountType').text(" Fixed Val");
  201. }
  202. }
  203. }
  204. else {
  205. $("#div_PlanVlm_" + len).find('.spn_off').addClass("hidden");
  206. }
  207. if (data.ItemVolumePayouts.length > 0) {
  208. html = '<div class="" id="div_Foc_' + len + '"></div>';
  209. $('#div_PlanVlm_' + len).after(html);
  210. for (var i = 0; i < data.ItemVolumePayouts.length; i++) {
  211. ItemOfferSelection.Instance().AddFoCItem(data.ItemVolumePayouts[i], len, Type, ItemId);
  212. }
  213. }
  214. if (Type == "POS_Order") {
  215. let CartItem_Index = Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_CartItems_New.findIndex(x => x.ItemId == ItemId);
  216. if (CartItem_Index != -1) {
  217. let AppliedPlanVolumeId = Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_CartItems_New[CartItem_Index].AppliedPlanVolumeId;
  218. if (AppliedPlanVolumeId != 0) {
  219. instance.HighlightAppliedPlans(AppliedPlanVolumeId, ItemId, false);
  220. }
  221. }
  222. }
  223. else if (Type == "Order") {
  224. let IsCart = false;
  225. if ($("#ulOrder_Cart").is(":visible")) {
  226. IsCart = true;
  227. }
  228. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers = Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers.filter(x => x.ItemId != ItemId);
  229. var sp_ItemIndex = instance.g_Selected_Plan.findIndex(x => x.ItemId == ItemId);
  230. if (sp_ItemIndex != -1) {
  231. let selectedPlan = instance.g_Selected_Plan[sp_ItemIndex];
  232. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers.push({
  233. ItemId: selectedPlan.ItemId,
  234. OfferId: 0,
  235. PlanId: 0,
  236. PlanVolumeId: selectedPlan.PlanVolumeId,
  237. IsSelected: true
  238. });
  239. }
  240. let AppliedOffers = Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers.filter(x => x.ItemId == ItemId);
  241. for (var ao = 0; ao < AppliedOffers.length; ao++) {
  242. let AppliedPlanVolumeId = AppliedOffers[ao].PlanVolumeId;
  243. let IsSelected = AppliedOffers[ao].IsSelected;
  244. instance.HighlightAppliedPlans(AppliedPlanVolumeId, ItemId, IsSelected);
  245. }
  246. }
  247. else if (Type == "Estimate") {
  248. let IsCart = false;
  249. if ($("#ulOrder_Cart").is(":visible")) {
  250. IsCart = true;
  251. }
  252. if (!IsCart && !Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_FromContinueShopping) {
  253. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers = Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers.filter(x => x.ItemId != ItemId);
  254. var sp_ItemIndex = instance.g_Selected_Plan.findIndex(x => x.ItemId == ItemId);
  255. if (sp_ItemIndex != -1) {
  256. let selectedPlan = instance.g_Selected_Plan[sp_ItemIndex];
  257. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers.push({
  258. ItemId: selectedPlan.ItemId,
  259. OfferId: 0,
  260. PlanId: 0,
  261. PlanVolumeId: selectedPlan.PlanVolumeId,
  262. IsSelected: true
  263. });
  264. }
  265. }
  266. let AppliedOffers = Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers.filter(x => x.ItemId == ItemId);
  267. for (var ao = 0; ao < AppliedOffers.length; ao++) {
  268. let AppliedPlanVolumeId = AppliedOffers[ao].PlanVolumeId;
  269. let IsSelected = AppliedOffers[ao].IsSelected;
  270. instance.HighlightAppliedPlans(AppliedPlanVolumeId, ItemId, IsSelected);
  271. }
  272. }
  273. }
  274. HighlightAppliedPlans(AppliedPlanVolumeId, ItemId, IsSelected) {
  275. let instance = this;
  276. if (IsSelected) {
  277. $(".Card_Plan_Vlm_row_" + AppliedPlanVolumeId).css("background-color", "lavender");
  278. var checkoffer = $(".Plan_Vlm_row_" + AppliedPlanVolumeId).find(".offers_applied").attr("id");
  279. $("#" + checkoffer).find("u").text("Remove").removeClass('text-sucess').addClass('text-danger');
  280. var sp_ItemIndex = instance.g_Selected_Plan.findIndex(x => x.ItemId == ItemId);
  281. if (sp_ItemIndex != -1) {
  282. let selectedPlan = instance.g_Selected_Plan[sp_ItemIndex];
  283. instance.Bizgaze_Transact_Selected_Plan.push({
  284. Volume: selectedPlan.Volume, value: selectedPlan.value, DiscountType: selectedPlan.DiscountType, PlanVolumeId: AppliedPlanVolumeId, ItemId: ItemId, focItemId: selectedPlan.focItemId
  285. });
  286. }
  287. }
  288. else {
  289. $(".Card_Plan_Vlm_row_" + AppliedPlanVolumeId).css("background-color", "lightgoldenrodyellow");
  290. $(".Card_Plan_Vlm_row_" + AppliedPlanVolumeId).find("u").text("Apply").addClass('text-sucess').removeClass('text-danger');
  291. }
  292. $("#frm_Bizgazetransact_ItemOfferSelection").find("#btn_Apply").removeAttr("style").removeClass("disabled");
  293. }
  294. UnHighlightPlan(AppliedPlanVolumeId, ItemId, Type) {
  295. let instance = this;
  296. $(".Card_Plan_Vlm_row_" + AppliedPlanVolumeId).find("u").text("Apply").addClass('text-sucess').removeClass('text-danger');
  297. $(".Card_Plan_Vlm_row_" + AppliedPlanVolumeId).removeAttr("style");
  298. var offerItemIndex = instance.Bizgaze_Transact_Selected_Plan.findIndex(x => x.ItemId == ItemId && x.PlanVolumeId == AppliedPlanVolumeId);
  299. if (offerItemIndex != -1) {
  300. instance.Bizgaze_Transact_Selected_Plan.splice(offerItemIndex, 1);
  301. }
  302. var sp_ItemIndex = instance.g_Selected_Plan.findIndex(x => x.ItemId == ItemId && x.PlanVolumeId == AppliedPlanVolumeId);
  303. if (offerItemIndex != -1) {
  304. instance.g_Selected_Plan.splice(sp_ItemIndex, 1);
  305. }
  306. if (Type == "Order") {
  307. var appliedoffers_ItemIndex = Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers.findIndex(x => x.ItemId == ItemId && x.PlanVolumeId == AppliedPlanVolumeId);
  308. if (appliedoffers_ItemIndex != -1) {
  309. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_AppliedOffers.splice(appliedoffers_ItemIndex, 1);
  310. }
  311. }
  312. if (Type == "Estimate") {
  313. var appliedoffers_ItemIndex = Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers.findIndex(x => x.ItemId == ItemId && x.PlanVolumeId == AppliedPlanVolumeId);
  314. if (appliedoffers_ItemIndex != -1) {
  315. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_AppliedOffers.splice(appliedoffers_ItemIndex, 1);
  316. }
  317. }
  318. }
  319. AddFoCItem(FocItem, len, Type, RefItemId) {
  320. var html = '<div class="mt-2 shadow px-2"><input type="hidden" id=' + FocItem.ItemId + ' class="selectedfocitem"><div class="d-flex align-items-center"><div class="check-btn mt-2"><input type="checkbox" id="IsApplyOffer_' + FocItem.ItemVolumePayoutId + '" class="mr-2 h-20p w-20p li_Pln_items_with_Checked"> <span class="checkmark"></span></div><div class="p-0"><span class="biz-highlight-text-color font-weight-600 mr-1">' + FocItem.Discount + '% </span> off on purchase of every <span class="list-item-main-title px-1">' + FocItem.Recur + ' </span> Quantity <br><span class="list-item-main-title px-1">' + FocItem.Quantity + ' </span> x <span class="list-item-main-title px-1 word-break">' + FocItem.ItemName + '</span><div></div>' +
  321. '</div>';
  322. $('#div_Foc_' + len).before(html);
  323. var seen = '';
  324. $('.plan_Name').each(function () {
  325. var see = $(this).text();
  326. if (seen.match(see)) {
  327. $(this).remove();
  328. }
  329. else {
  330. seen = seen + $(this).text();
  331. }
  332. });
  333. if (Type == "Order") {
  334. var ValidFocItemIndex = Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds == RefItemId);
  335. if (!FocItem.IsFoC) {
  336. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  337. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).attr("disabled", "true");
  338. }
  339. else if (FocItem.IsFoC && ValidFocItemIndex != -1) {
  340. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  341. }
  342. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).change(function () {
  343. var Checked = $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked");
  344. var FocItemIndex = Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds.toString().indexOf(RefItemId) != -1);
  345. if (Checked) {
  346. if (FocItemIndex == -1) {
  347. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_ValidFocItems.push({ ItemId: FocItem.ItemId, RefItemIds: RefItemId });
  348. }
  349. }
  350. else {
  351. if (FocItemIndex != -1) {
  352. Bizgaze.Apps.Transact.Controls.OrderItems.Instance().g_ValidFocItems.splice(FocItemIndex, 1);
  353. }
  354. }
  355. });
  356. }
  357. if (Type == "Estimate") {
  358. var ValidFocItemIndex = Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds == RefItemId);
  359. if (!FocItem.IsFoC) {
  360. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  361. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).attr("disabled", "true");
  362. }
  363. else if (FocItem.IsFoC && ValidFocItemIndex != -1) {
  364. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  365. }
  366. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).change(function () {
  367. var Checked = $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked");
  368. var FocItemIndex = Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds.toString().indexOf(RefItemId) != -1);
  369. if (Checked) {
  370. if (FocItemIndex == -1) {
  371. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_ValidFocItems.push({ ItemId: FocItem.ItemId, RefItemIds: RefItemId });
  372. }
  373. }
  374. else {
  375. if (FocItemIndex != -1) {
  376. Bizgaze.Apps.Transact.Controls.EstimateItems.Instance().g_ValidFocItems.splice(FocItemIndex, 1);
  377. }
  378. }
  379. });
  380. }
  381. if (Type == "POS_Order") {
  382. var ValidFocItemIndex = Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds.indexOf(RefItemId) != -1);
  383. if (!FocItem.IsFoC) {
  384. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  385. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).attr("disabled", "true");
  386. }
  387. else if (FocItem.IsFoC && ValidFocItemIndex != -1) {
  388. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  389. }
  390. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).change(function () {
  391. var Checked = $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked");
  392. var FocItemIndex = Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_ValidFocItems.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemIds.indexOf(RefItemId) != -1);
  393. if (Checked) {
  394. if (FocItemIndex == -1) {
  395. Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_ValidFocItems.push({ ItemId: FocItem.ItemId, RefItemIds: RefItemId });
  396. }
  397. }
  398. else {
  399. if (FocItemIndex != -1) {
  400. Bizgaze.Apps.Transact.Controls.POSCartItems.Instance().g_ValidFocItems.splice(FocItemIndex, 1);
  401. }
  402. }
  403. });
  404. }
  405. if (Type == "Pos") {
  406. var ValidFocItemIndex = Bizgaze.Apps.Transact.Controls.Pos.Instance().offerItemsArray.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemId == RefItemId);
  407. if (!FocItem.IsFoC) {
  408. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  409. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).attr("disabled", "true").addClass("opacity-30");
  410. }
  411. else if (FocItem.IsFoC && ValidFocItemIndex != -1) {
  412. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked", true);
  413. }
  414. $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).change(function () {
  415. var Checked = $("#IsApplyOffer_" + FocItem.ItemVolumePayoutId).prop("checked");
  416. var FocItemIndex = Bizgaze.Apps.Transact.Controls.Pos.Instance().offerItemsArray.findIndex(x => x.ItemId == FocItem.ItemId && x.RefItemId == RefItemId);
  417. if (Checked) {
  418. if (FocItemIndex == -1) {
  419. Bizgaze.Apps.Transact.Controls.Pos.Instance().offerItemsArray.push({ ItemId: FocItem.ItemId, RefItemId: RefItemId });
  420. }
  421. }
  422. });
  423. }
  424. }
  425. Apply(element) {
  426. let instance = this;
  427. instance.navigationHelper.closePopUp();
  428. ItemOfferSelection.Instance().ApplyOffer(instance.Bizgaze_Transact_Selected_Plan, element);
  429. }
  430. AddSpliItem(element) {
  431. var array = {
  432. orderItemId: 0,
  433. invoiceItemId: 0,
  434. itemId: element.find('.selectedItemId').val(),
  435. packSize: 0,
  436. packCount: 0,
  437. packs: 0,
  438. quantity: 0,
  439. availPacks: 0,
  440. availQty: 0,
  441. Description: "",
  442. isTaxInclusive: $("#hfIsTaxInclusive").val(),
  443. addlDiscountPercent: 0,
  444. addlDiscountValue: 0,
  445. creditNote: 0,
  446. priceListId: element.find('.hf_PriceList').val(),
  447. invoiceallocations: null,
  448. exciseInvoiceItem: null,
  449. walletId: 0,
  450. Adjustment: 0,
  451. IsFoc: 0,
  452. TariffNo: "",
  453. exciseAmount: 0,
  454. discountName: "",
  455. discountId: 0,
  456. description: "",
  457. RefNo: "",
  458. DiscountGroupId: 0,
  459. DiscountGroupName: '',
  460. RefInvoiceItemId: 0,
  461. taxAdjustment: element.find('.hfItemTaxAdjsutmentVal').val(),
  462. assesableAdjustment: element.find('.hfItemAssesableAdjustmentVal').val(),
  463. inventoryTypeId: 0,
  464. dcItemId: element.find('.dcItemId').val(),
  465. ExchangeItem: element.find('.IsExchangeItem').val(),
  466. unitPrice: element.find('.prodPrice').val(),
  467. taxGroupId: element.find(".hfProdTax").val(),
  468. BatchId: 0,
  469. MrpId: 0,
  470. SerialId: 0,
  471. Name: '',
  472. maxQty: 0,
  473. accountId: element.find(".hf_Account").val(),
  474. accountName: element.find(".txt_AccountName").val(),
  475. taxGroupName: element.find(".txtProdTax").val(),
  476. };
  477. return array;
  478. }
  479. AddItemRowToSplitArray(Item, element, Quantity) {
  480. var DcType = 2;
  481. var BranchId = $(".txtAutoComplete_shiptoaddressid").val();
  482. if ($('.hdn_invoicetypeid').val() == '1' || $('.hdn_invoicetypeid').val() == '4' || $('.hdn_invoicetypeid').val() == '5') {
  483. BranchId = $(".txtAutoComplete_shipfromaddressid").val();
  484. }
  485. if ($(".hdn_invoicetypeid").val() == "1" || $(".hdn_invoicetypeid").val() == "4" || $(".hdn_invoicetypeid").val() == "5") {
  486. DcType = 1;
  487. }
  488. Bizgaze.Apps.Transact.Managers.InvoiceManager.Instance().getItemSetting(Item, BranchId, DcType).then(function (result) {
  489. var EnableMrp = result.result.EnableMRP;
  490. var EnableBatch = result.result.EnableBatchNo;
  491. var Info = [];
  492. if (EnableMrp == true) {
  493. Bizgaze.Apps.Transact.Managers.InvoiceManager.Instance().getMrps(element.find(".selectedItemId").val(), DcType, BranchId).then(function (res) {
  494. Info = res.result;
  495. });
  496. }
  497. if (EnableBatch == true) {
  498. Bizgaze.Apps.Transact.Managers.InvoiceManager.Instance().getBatches(element.find(".selectedItemId").val(), DcType, BranchId).then(function (res) {
  499. Info = res.result;
  500. });
  501. }
  502. if (Info.length > 0) {
  503. var TotalQuantity = 0;
  504. var TotalDisc = 0;
  505. var TotalAmount = 0;
  506. if ($(".hdn_invoicetypeid").val() == "1" || $(".hdn_invoicetypeid").val() == "4" || $(".hdn_invoicetypeid").val() == "5") {
  507. var itemQty = Quantity;
  508. for (var x = 0; x < Info.length; x++) {
  509. if (itemQty > 0) {
  510. var itemrow = ItemOfferSelection.Instance().AddSpliItem(element);
  511. let Qty = 0;
  512. if (EnableMrp == true) {
  513. itemrow.MrpId = Info[x].MrpId;
  514. itemrow.Name = Info[x].Mrp + ' ( ' + Info[x].MrpQuantity + ' ) ';
  515. Qty = Info[x].MrpQuantity;
  516. }
  517. else if (EnableBatch == true) {
  518. itemrow.BatchId = Info[x].BatchId;
  519. itemrow.Name = Info[0].BatchNo;
  520. Qty = Info[0].BatchQuantity;
  521. }
  522. if (Qty > itemQty) {
  523. itemrow.quantity = itemQty;
  524. itemQty = itemQty - Info[x].Quantity;
  525. }
  526. else {
  527. itemrow.quantity = Qty;
  528. itemQty = itemQty - Qty;
  529. }
  530. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().SplitedInvoiceItemList.push(itemrow);
  531. TotalQuantity += Number(itemrow.quantity);
  532. var discount = 0;
  533. var qyt = Number(itemrow.quantity);
  534. var price = Number(itemrow.unitPrice);
  535. var excamt = Number(itemrow.exciseAmount);
  536. var assesableAdjustment = Number(itemrow.assesableAdjustment);
  537. var ItemAdjustment = Number(itemrow.Adjustment);
  538. var discountAmount = Number(itemrow.addlDiscountValue);
  539. var discountPercent = Number(itemrow.addlDiscountPercent);
  540. discount = (((qyt * price) + assesableAdjustment + ItemAdjustment - excamt) * Number(discountPercent) / 100) + (Number(qyt) * Number(discountAmount));
  541. discount = Number(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(discount, 3));
  542. TotalDisc += discount;
  543. var rowtotal = Number((qyt * price) + excamt + ItemAdjustment + assesableAdjustment);
  544. var RowTotal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(rowtotal - discount, 3);
  545. TotalAmount += RowTotal;
  546. }
  547. }
  548. }
  549. else {
  550. var itemrow = ItemOfferSelection.Instance().AddSpliItem(element);
  551. if (EnableMrp == true) {
  552. itemrow.MrpId = Info[0].MrpId;
  553. itemrow.Name = Info[0].Mrp + ' ( ' + Info[0].Quantity + ' ) ';
  554. }
  555. else if (EnableBatch == true) {
  556. itemrow.BatchId = Info[0].BatchId;
  557. itemrow.Name = Info[0].BatchNo;
  558. }
  559. itemrow.quantity = Quantity;
  560. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().SplitedInvoiceItemList.push(itemrow);
  561. TotalQuantity += Number(itemrow.quantity);
  562. var discount = 0;
  563. var qyt = Number(itemrow.quantity);
  564. var price = Number(itemrow.unitPrice);
  565. var excamt = Number(itemrow.exciseAmount);
  566. var assesableAdjustment = Number(itemrow.assesableAdjustment);
  567. var ItemAdjustment = Number(itemrow.Adjustment);
  568. var discountAmount = Number(itemrow.addlDiscountValue);
  569. var discountPercent = Number(itemrow.addlDiscountPercent);
  570. discount = (((qyt * price) + assesableAdjustment + ItemAdjustment - excamt) * Number(discountPercent) / 100) + (Number(qyt) * Number(discountAmount));
  571. discount = Number(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(discount, 3));
  572. TotalDisc += discount;
  573. var rowtotal = Number((qyt * price) + excamt + ItemAdjustment + assesableAdjustment);
  574. var RowTotal = Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(rowtotal - discount, 3);
  575. TotalAmount += RowTotal;
  576. }
  577. if (EnableMrp == true)
  578. element.find('.spn_InvoiceItem').text("View MRP");
  579. else
  580. element.find('.spn_InvoiceItem').text("View Batch");
  581. element.find('.prodQuantity').val();
  582. element.find('.prodQuantity').val(TotalQuantity);
  583. element.find('#inv_txtdiscount').val();
  584. element.find('#inv_txtdiscount').val(TotalDisc);
  585. if ($(".hdn_invoicetypeid").val() == "2" || $(".hdn_invoicetypeid").val() == "3" || $(".hdn_invoicetypeid").val() == "6") {
  586. element.find(".txtRowTotalwithAdjustment").val();
  587. element.find(".txtRowTotalwithAdjustment").val(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(TotalAmount, 3));
  588. }
  589. else {
  590. element.find('.prodTotalPrice').text('');
  591. element.find('.prodTotalPrice').text(Unibase.Core.Helpers.NumberHelper.Instance().roundNumber(TotalAmount, 3));
  592. }
  593. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().GetPlanItems(element.find(".selectedItemId").val(), element.find('.prodQuantity').val(), element);
  594. }
  595. });
  596. }
  597. ApplyOffer(Item, element) {
  598. if (element.hasClass('SplitItem')) {
  599. var Qty = Number(element.find(".prodQuantity").val());
  600. if (Qty == 0) {
  601. ItemOfferSelection.Instance().AddItemRowToSplitArray(Item, element, Item[0].Volume);
  602. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().update_total();
  603. }
  604. else if (Qty < Item[0].Volume) {
  605. var ItemQty = Item[0].Volume - Qty;
  606. ItemOfferSelection.Instance().AddItemRowToSplitArray(Item, element, ItemQty);
  607. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().update_row_total(element, true);
  608. }
  609. else {
  610. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().GetPlanItems(element.find(".selectedItemId").val(), Qty, element);
  611. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().update_row_total(element, true);
  612. }
  613. }
  614. else {
  615. element.find(".prodQuantity").val(Item[0].Volume);
  616. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().GetPlanItems(element.find(".selectedItemId").val(), element.find(".prodQuantity").val(), element);
  617. Bizgaze.Apps.Transact.Controls.InvoiceItem.Instance().update_row_total(element, true);
  618. }
  619. }
  620. static Instance() {
  621. if (this.instance === undefined) {
  622. this.instance = new Bizgaze.Apps.Transact.Components.Invoices.ItemOfferSelection();
  623. }
  624. return this.instance;
  625. }
  626. }
  627. Invoices.ItemOfferSelection = ItemOfferSelection;
  628. })(Invoices = Components.Invoices || (Components.Invoices = {}));
  629. })(Components = Transact.Components || (Transact.Components = {}));
  630. })(Transact = Apps.Transact || (Apps.Transact = {}));
  631. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  632. })(Bizgaze || (Bizgaze = {}));