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.

additems.component.js 42KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585
  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 AddOpportunityItems extends Unibase.Platform.Core.BaseComponent {
  19. constructor() {
  20. super(...arguments);
  21. this._Opportunity = Bizgaze.Apps.Transact.Controls.Opportunity.Instance();
  22. this.g_ContactId = 0;
  23. this.g_CountryId = 0;
  24. this.g_LobId = 0;
  25. this.g_Tags = "";
  26. this.g_PageIndex = 0;
  27. this.g_BranchId = 0;
  28. this.g_BillingAddressId = 0;
  29. this.g_ShippingAddressId = 0;
  30. this.g_ShipFromAddressId = 0;
  31. this.g_OpportunityId = 0;
  32. this.g_Edit_OpportunityItemId = 0;
  33. this.g_RefStatusId = 0;
  34. this.g_FocItems = [];
  35. this.g_ItemIds = [0];
  36. }
  37. init(formpropertyid, prop, callback) {
  38. let instance = this;
  39. instance.g_ItemIds = [0];
  40. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  41. instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
  42. }
  43. loadControl(containerid, prop) {
  44. let instance = this;
  45. let html = '<div class="col-sm-12 ItemsDiv">' +
  46. '<input type = "hidden" id = "hdn_customcontrol" class="value-control" value = "Bizgaze.Apps.Transact.Controls.AddOpportunityItems.Instance().getOpportunityItems();"' +
  47. '<div class="floating-label-form-group div_SearchItem">' +
  48. '<label for="lbl" id="lbl_ItemId" style="color:grey">Item Name</label>' +
  49. '<select id="txtAutoComplete_ItemId" class="form-control text-control txtAutoComplete_ItemId">Select</select>' +
  50. '<input type="hidden" id="hfAutoComplete_ItemId" class="form-control value-control" data-isdynamic="true"/>' +
  51. '</div>' +
  52. '</div>' +
  53. '<br/><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-7 pl-80">Item Details</div><div class="col-sm-5 Inventory_Title text-center"><span id="spn_InventoryTitle" class="col-sm-5 ml-35">Quantity</span><span id="spn_picesTitle" class="col-sm-5 pull-right hidden"> Pieces</span></div></div></div><div class="mt-2" id="div_ItemList"></div>' +
  54. '<div id="Items"></div>' +
  55. '<div class="pull-right">' +
  56. '<div id = "ItemsListPagination" class="mt-10 pagination custom-pagination pagination-rounded pull-right" > </div>' +
  57. '</div>';
  58. $("#" + containerid).html(html);
  59. $("#div_chkpieces").addClass("hidden");
  60. let jsFiles = ["apps/transact/enums/enum.js", "apps/transact/managers/orders/ordermanager.js", "apps/transact/controls/pricelist/managers/pricelistmanager.js", "apps/transact/controls/opportunity/opportunityitem.component.js", "apps/transact/controls/opportunity/opportunity.component.js", "apps/transact/controls/orders/order.component.js", "apps/transact/controls/orders/orderitems.component.js", "libs/jquery/pagination/jquery.pagination.js", "apps/transact/managers/offers/offermanager.js", "apps/transact/components/orders/orderfilter.js"];
  61. instance.fileCacheHelper.loadJsFiles(jsFiles, function () {
  62. let opportunityItemId = Number($(".hdn_opportunityitemid").val());
  63. instance.setVariables();
  64. instance._Opportunity.getInventoryApplyType(instance.g_LobId, instance.g_BillingAddressId, instance.g_BranchId);
  65. instance._Opportunity.getOrderSettings(instance.g_LobId, instance.g_BillingAddressId, instance.g_BranchId);
  66. instance._OpportunityItems.itemSettings(true);
  67. if (opportunityItemId == 0) {
  68. instance.itemsAutoComplete();
  69. $(".div_titledetails").addClass("hidden");
  70. }
  71. instance.searchItemDesign();
  72. let orgId = instance._Opportunity.g_OrganizationId;
  73. instance.itemChangeEvent();
  74. if (opportunityItemId != 0) {
  75. instance.edit(opportunityItemId);
  76. }
  77. });
  78. }
  79. loadControlSettings(controlsettingjson, formpropertyid) {
  80. return null;
  81. }
  82. loadPropertySettings(propertysettings, formpropertyid) {
  83. return null;
  84. }
  85. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  86. return null;
  87. }
  88. setVariables() {
  89. var instance = this;
  90. instance._OpportunityItems = Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance();
  91. instance._Opportunity._OpportunityItems = Bizgaze.Apps.Transact.Controls.OpportunityItem.Instance();
  92. instance._OpportunityItems.g_CartItems_New = [];
  93. instance._OpportunityItems.g_SelectedItems = [];
  94. instance._OpportunityItems.g_LoadedItems = [];
  95. instance._OpportunityItems.g_ItemsUnitPrice_New = [];
  96. instance._OpportunityItems.g_AppliedTaxGroups = [];
  97. instance._OpportunityItems.g_ValidFocItems = [];
  98. instance.g_Edit_OpportunityItemId = 0;
  99. instance._OpportunityItems.g_IsEnablePieces = false;
  100. instance._OpportunityItems.g_IsEnablePiecePrice = false;
  101. instance._OpportunityItems.g_IsEnableCompositePrice = false;
  102. instance._OpportunityItems.g_IsEnableCompositePiecePrice = false;
  103. instance.g_FocItems = [];
  104. let InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  105. let InputParameters = Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters;
  106. instance.g_LobId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_lobid").Value);
  107. instance.g_ShipFromAddressId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_shipfromaddressid").Value);
  108. instance.g_ShippingAddressId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_shippingaddressid").Value);
  109. instance._Opportunity.g_OrganizationId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_organizationid").Value);
  110. instance._Opportunity.g_OrgContactId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_orgcontactid").Value);
  111. instance.g_BillingAddressId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_billingaddressid").Value);
  112. instance._Opportunity.g_OpportunityTypeId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_opportunitytypeid").Value);
  113. instance._Opportunity.g__OpportunityType = Bizgaze.Apps.Transact.Enums.OrderType[instance._Opportunity.g_OpportunityTypeId];
  114. instance.g_OpportunityId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_opportunityid").Value);
  115. instance.g_BranchId = Number(InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_branchid").Value);
  116. var OpportunityDate = InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_opportunitydate").Value.toString();
  117. instance._OpportunityItems.g_OfferApplyDate = $.datepicker.parseDate('dd/mm/yy', OpportunityDate);
  118. if (instance._Opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.SalesOpportunity) {
  119. instance._OpportunityItems.g_WarehouseId = instance.g_ShipFromAddressId;
  120. }
  121. else if (instance._Opportunity.g_OpportunityTypeId == Bizgaze.Apps.Transact.Enums.OrderType.PurchaseOpportunity) {
  122. instance._OpportunityItems.g_WarehouseId = instance.g_ShippingAddressId;
  123. }
  124. if (instance._OpportunityItems.g_WarehouseId == null) {
  125. instance._OpportunityItems.g_WarehouseId = Number(instance.g_BranchId);
  126. }
  127. }
  128. searchItemDesign() {
  129. $(".section_Item").after('<input type="hidden" id="hfInventoryApplyType" value="1" /> <input type="hidden" id="hfOrder_PriceCodeId" value="0" /><div class="hidden" id="div_ItemList"><ul class="variant-list list-group card"><li class="row card-body"><div class="col-sm-12"><div class="row" id="div_chkpieces"><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 hidden"><div class="custom-control custom-checkbox divEnablePieces hidden 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 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 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></div></li><li class="variant-item hidden"></li></ul></div>');
  130. }
  131. getTags() {
  132. return __awaiter(this, void 0, void 0, function* () {
  133. let instance = this;
  134. let TagGroupId = Bizgaze.Apps.Transact.Controls.Order.Instance().g_TagGroupId;
  135. let OrganizationId = Bizgaze.Apps.Transact.Controls.Order.Instance().g_OrganizationId;
  136. Unibase.Platform.Forms.Managers.TagManager.Instance().GetTagsByRefId(OrganizationId, TagGroupId).then(function (response) {
  137. let data = response.result;
  138. let options = '';
  139. let tags = '';
  140. for (let i = 0; i < data.length; i++) {
  141. if (data[i] != undefined) {
  142. options += data[i].TagId + "|";
  143. }
  144. }
  145. if (options != '') {
  146. options = options.replace(/\|$/, '');
  147. tags = options;
  148. }
  149. if (tags != '') {
  150. tags = tags.replace(/\:$/, '');
  151. }
  152. instance.g_Tags = tags;
  153. });
  154. });
  155. }
  156. itemsAutoComplete() {
  157. return __awaiter(this, void 0, void 0, function* () {
  158. var instance = this;
  159. yield instance.getTags().then(function () {
  160. let userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
  161. let sessionid = userinfo.sessionId;
  162. let postData = null;
  163. $("#txtAutoComplete_ItemId").select2({
  164. placeholder: "Select",
  165. tags: false,
  166. allowClear: true,
  167. theme: "default select2ErrorClass",
  168. data: [],
  169. ajax: {
  170. url: function (request) {
  171. let reqUrl = _appsettings.server_url() + "/apis/v4/bizgaze/transact/items/itemsautocompletefororder";
  172. return reqUrl;
  173. },
  174. type: "POST",
  175. contentType: 'application/json',
  176. dataType: 'json',
  177. data: function (params) {
  178. let Term = params.term;
  179. sessionid = sessionid.replace('#', '');
  180. postData = {
  181. PriceCodeId: Number(instance._Opportunity.g_PriceCodeId),
  182. ContactId: instance.g_ContactId,
  183. ShippingAddressId: Number(instance.g_ShippingAddressId),
  184. BranchId: Number(instance.g_BranchId),
  185. WareHouseId: Number(instance._OpportunityItems.g_WarehouseId),
  186. LobId: Number(instance.g_LobId),
  187. OrderType: instance._Opportunity.g_OpportunityTypeId,
  188. OfferOnly: false,
  189. IsExcise: false,
  190. SearchTerm: Term,
  191. Page: 0,
  192. IsCompositePrice: false,
  193. Rows: 10,
  194. ItemId: "0",
  195. CountryId: instance.g_CountryId,
  196. ItemGroupId: 0,
  197. Tags: instance.g_Tags,
  198. authToken: sessionid,
  199. term: Term,
  200. ItemIds: instance.g_ItemIds,
  201. };
  202. return JSON.stringify(postData);
  203. },
  204. beforeSend: function (xhr) {
  205. if (userinfo !== undefined && userinfo !== null) {
  206. xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
  207. xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
  208. }
  209. },
  210. processResults: function (data) {
  211. return {
  212. results: jQuery.map(JSON.parse(data.result), function (item) {
  213. return {
  214. id: item.Value,
  215. text: item.SelectText,
  216. addlInfo: item.addlData
  217. };
  218. })
  219. };
  220. },
  221. },
  222. });
  223. });
  224. });
  225. }
  226. itemChangeEvent() {
  227. var instance = this;
  228. $(".txtAutoComplete_ItemId").change(function () {
  229. $("#div_ItemList").removeClass('hidden');
  230. $(".div_titledetails").removeClass('hidden');
  231. let SelectedItemId = $(this).val();
  232. let ItemFound = false;
  233. const ItemIndex = instance._OpportunityItems.g_CartItems_New.findIndex(x => x.ItemId == SelectedItemId);
  234. if (ItemIndex != -1) {
  235. ItemFound = true;
  236. }
  237. if (!ItemFound) {
  238. instance.loadItems($("#bulk_txt_SearchItem").val(), SelectedItemId, null);
  239. }
  240. $(".txtAutoComplete_ItemId").text('');
  241. });
  242. }
  243. loadItems(searchtext, ItemId, OrderItems_res, OrderItemsEdit = false) {
  244. let instance = this;
  245. instance.g_ItemIds.push(Number(ItemId));
  246. instance._Opportunity.getInventoryApplyType(instance.g_LobId, instance.g_BillingAddressId, instance.g_BranchId);
  247. instance._Opportunity.getOrderSettings(instance.g_LobId, instance.g_BillingAddressId, instance.g_BranchId);
  248. if (instance.g_ContactId == 0) {
  249. instance.g_ContactId = instance._Opportunity.g_OrganizationId;
  250. }
  251. if (ItemId == undefined || ItemId == "")
  252. ItemId = "undefined";
  253. if (searchtext == undefined || searchtext == "")
  254. searchtext = "null";
  255. let varianturl;
  256. instance.fileCacheHelper.loadJsFile("apps/transact/managers/inventory/itemmanager.js", function () {
  257. let postdata = {
  258. priceCodeId: Number(instance._Opportunity.g_PriceCodeId),
  259. contactId: instance.g_ContactId,
  260. ShippingAddressId: Number(instance.g_ShippingAddressId),
  261. BranchId: Number(instance.g_BranchId),
  262. WareHouseId: Number(instance._OpportunityItems.g_WarehouseId),
  263. LobId: Number(instance.g_LobId),
  264. orderType: Bizgaze.Apps.Transact.Controls.Opportunity.Instance().g_OpportunityTypeId,
  265. offerOnly: false,
  266. isExcise: false,
  267. query: searchtext,
  268. page: instance.g_PageIndex,
  269. IsCompositePrice: instance._OpportunityItems.g_IsEnableCompositePrice,
  270. rows: 10,
  271. ItemId: ItemId.toString()
  272. };
  273. varianturl = Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getVariantsForOrder(postdata);
  274. varianturl.then(function (response) {
  275. if (response.result.length > 0) {
  276. response.result.forEach(x => {
  277. let LoadedItem_Index = instance._OpportunityItems.g_LoadedItems.findIndex(z => z.ItemId == x.ItemId);
  278. if (LoadedItem_Index == -1) {
  279. instance._OpportunityItems.g_LoadedItems.push(x);
  280. }
  281. else {
  282. instance._OpportunityItems.g_LoadedItems[LoadedItem_Index].TaxPercentList = x.TaxPercentList;
  283. }
  284. });
  285. instance.bindItemList(OrderItems_res);
  286. $('#lblItemTotalRecords').text(response.result.length);
  287. if (instance._OpportunityItems.g_CartItems_New.length > 10) {
  288. let elem = $('#ItemsListPagination');
  289. elem.pagination(response.result.length, 10, {
  290. items_per_page: 10,
  291. callback: function (page, component) {
  292. instance.g_PageIndex = page;
  293. instance.loadItems(searchtext, response.result.ItemId, response.result);
  294. }, current_page: instance.g_PageIndex
  295. });
  296. }
  297. }
  298. else
  299. $("#div_ItemList").html('<ul class="variant-list list-group"><li class="variant-item"><div class="text-center">Items not found.</div></li></ul>');
  300. });
  301. });
  302. }
  303. bindItemList(OrderItems_res) {
  304. let instance = this;
  305. $(".orderItemspage").removeClass("hidden");
  306. $("#div_chkpieces").removeClass("hidden");
  307. $("#div_ItemList").append('<ul class="variant-list list-group"><li class="variant-item hidden"></li>');
  308. if (OrderItems_res != null) {
  309. if (OrderItems_res.Pieces > 0) {
  310. instance._OpportunityItems.g_IsEnablePieces = true;
  311. $("#chk_Pieces").prop("checked", true);
  312. $("#chk_Pieces").prop("disabled", true);
  313. }
  314. if (OrderItems_res.Packs > 0) {
  315. instance._OpportunityItems.g_IsEnablePacks = true;
  316. $("#chk_Packs").prop("checked", true);
  317. $("#chk_Packs").prop("disabled", true);
  318. }
  319. }
  320. let html = instance._OpportunityItems.N_getItemDesign(instance._OpportunityItems.g_LoadedItems[instance._OpportunityItems.g_LoadedItems.length - 1], true);
  321. $(".variant-item:last").after(html);
  322. let elem = $(".variant-item:last");
  323. if (instance.g_Edit_OpportunityItemId != 0) {
  324. instance.editOpportunityItem(OrderItems_res);
  325. instance._OpportunityItems.checkOffers(true, "FromWidget");
  326. $(".defaultSelectedCartons").addClass("floating-label-form-group-with-value");
  327. }
  328. else {
  329. instance._OpportunityItems.N_AllItemEvents(elem);
  330. }
  331. }
  332. edit(OppItemId) {
  333. var instance = this;
  334. instance.g_Edit_OpportunityItemId = OppItemId;
  335. $(".ItemsDiv").addClass("hidden");
  336. instance.fileCacheHelper.loadJsFile("apps/transact/managers/opportunity/opportunitymanager.js", function () {
  337. Bizgaze.Apps.Transact.Managers.OpportunityManager.Instance().getOpportunityItems(OppItemId).then(function (response) {
  338. let data = response.result;
  339. if (response.message != null && response.message != "") {
  340. Unibase.Platform.Forms.Components.FormViewer.Instance().showError(response.message);
  341. }
  342. instance._Opportunity.g_IsTaxInclusive = data.IsTaxInclusive;
  343. if (response.result.FocItems != null && response.result.FocItems != "") {
  344. let FocItems = response.result.FocItems.split(",");
  345. for (let f = 0; f < FocItems.length; f++) {
  346. let FocInfo = FocItems[f].split(":");
  347. let OrderItemId = Number(FocInfo[0]);
  348. let ItemId = Number(FocInfo[1]);
  349. instance.g_FocItems.push({ OrderItemId: OrderItemId, ItemId: ItemId });
  350. instance._OpportunityItems.g_ValidFocItems.push({ ItemId: ItemId, RefItemIds: data.ItemId });
  351. }
  352. }
  353. instance.loadItems(null, data.ItemId, data, true);
  354. });
  355. });
  356. }
  357. editOpportunityItem(OrderItems_res) {
  358. let instance = this;
  359. let data = OrderItems_res;
  360. let LoadedItem = instance._OpportunityItems.g_LoadedItems.find(x => x.ItemId == data.ItemId);
  361. LoadedItem.UnitPrice = data.UnitPrice;
  362. let Amount = 0, UnitPrice = data.UnitPrice, BaseQty = 0, DiscountAmount = 0, AfterDiscountValue = 0, TaxRateAmount = 0, IsTaxError = false, optoutAmount = 0, TaxAmount = 0;
  363. let DiscountType = data.DiscountPercent != 0 ? 1 : 2;
  364. let elem = $(".variant-addeditem-" + data.ItemId);
  365. if (DiscountType == 1) {
  366. DiscountAmount = Number($(elem).find("#txt_editItemPrice").val()) * Number(LoadedItem.DiscountPercent / 100);
  367. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - Number(DiscountAmount);
  368. }
  369. else if (DiscountType == 2) {
  370. DiscountAmount = LoadedItem.DiscountValue;
  371. AfterDiscountValue = Number($(elem).find("#txt_editItemPrice").val()) - LoadedItem.DiscountValue;
  372. }
  373. let Items_up = instance._OpportunityItems.g_ItemsUnitPrice_New.find(x => x.ItemId == data.ItemId);
  374. Items_up.UnitPrice = UnitPrice;
  375. if (Items_up.length == 0) {
  376. instance._OpportunityItems.g_ItemsUnitPrice_New.push({
  377. ItemId: data.ItemId,
  378. UnitPrice: UnitPrice,
  379. TaxRateAmount: 0
  380. });
  381. }
  382. if (instance._Opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  383. BaseQty = Number(data.Quantity);
  384. }
  385. else {
  386. if (instance._OpportunityItems.g_IsEnablePiecePrice) {
  387. BaseQty = Number(LoadedItem.PackCount) * Number(data.Packs);
  388. }
  389. else {
  390. BaseQty = Number(LoadedItem.PackCount) * Number(LoadedItem.PackSize) * Number(data.Packs) + (data.Pieces * LoadedItem.PackSize);
  391. }
  392. }
  393. if (OrderItems_res.PriceTypeId == Bizgaze.Apps.Transact.Enums.PriceType.PiecePrice) {
  394. instance._OpportunityItems.g_IsEnablePiecePrice = true;
  395. instance._OpportunityItems.g_IsEnableCompositePiecePrice = false;
  396. instance._OpportunityItems.g_IsEnableCompositePrice = false;
  397. }
  398. else if (OrderItems_res.PriceTypeId == Bizgaze.Apps.Transact.Enums.PriceType.CompositePrice) {
  399. instance._OpportunityItems.g_IsEnablePiecePrice = false;
  400. instance._OpportunityItems.g_IsEnableCompositePiecePrice = false;
  401. instance._OpportunityItems.g_IsEnableCompositePrice = true;
  402. }
  403. else if (OrderItems_res.PriceTypeId == Bizgaze.Apps.Transact.Enums.PriceType.Both) {
  404. instance._OpportunityItems.g_IsEnablePiecePrice = false;
  405. instance._OpportunityItems.g_IsEnableCompositePiecePrice = true;
  406. instance._OpportunityItems.g_IsEnableCompositePrice = false;
  407. }
  408. else {
  409. instance._OpportunityItems.g_IsEnablePiecePrice = false;
  410. instance._OpportunityItems.g_IsEnableCompositePiecePrice = false;
  411. instance._OpportunityItems.g_IsEnableCompositePrice = false;
  412. }
  413. if (instance._OpportunityItems.g_IsEnableCompositePiecePrice) {
  414. Amount = (UnitPrice * Number(BaseQty)) + Number(LoadedItem.TaxRate);
  415. if (Number(BaseQty) == 0)
  416. Amount = 0;
  417. UnitPrice = LoadedItem.CompositePiecePrice;
  418. $("#chk_PiecePrice").prop("checked", true);
  419. $("#chk_CompositePrice").prop("checked", true);
  420. }
  421. else if (instance._OpportunityItems.g_IsEnableCompositePrice) {
  422. let amnt = Number(UnitPrice) * Number(LoadedItem.TaxPercentage) / 100;
  423. TaxRateAmount = Number(UnitPrice) + Number(amnt);
  424. Amount = Number(BaseQty) * TaxRateAmount;
  425. UnitPrice = LoadedItem.CompositePrice;
  426. $("#chk_PiecePrice").prop("checked", false);
  427. $("#chk_CompositePrice").prop("checked", true);
  428. }
  429. else if (instance._OpportunityItems.g_IsEnablePiecePrice) {
  430. Amount = Number(BaseQty) * UnitPrice;
  431. UnitPrice = LoadedItem.PiecePrice;
  432. $("#chk_PiecePrice").prop("checked", true);
  433. $("#chk_CompositePrice").prop("checked", false);
  434. }
  435. else {
  436. Amount = Number(BaseQty) * UnitPrice;
  437. }
  438. Items_up.TaxRateAmount = TaxRateAmount;
  439. let AssessableAmount = Number(Amount);
  440. let DiscAmount = Number((Amount * data.DiscountPercent) / 100) + Number(data.DiscountValue);
  441. let discAmt = DiscAmount + Number(optoutAmount);
  442. AssessableAmount = Number(AssessableAmount) - Number(discAmt);
  443. let AmountWithDiscount = Number(Amount) - Number(DiscAmount);
  444. let StrTaxPercents = "";
  445. if (instance._Opportunity.g_IsCalculateTax) {
  446. if (LoadedItem.TaxGroupId == 0) {
  447. IsTaxError = true;
  448. }
  449. else {
  450. for (let p = 0; p < LoadedItem.TaxPercentList.length; p++) {
  451. let percen = LoadedItem.TaxPercentList[p];
  452. let tax = AssessableAmount * percen.Percentage / 100;
  453. TaxAmount += tax;
  454. }
  455. StrTaxPercents = LoadedItem.strTaxPercents;
  456. if (instance._OpportunityItems.g_IsEnablePiecePrice) {
  457. UnitPrice = LoadedItem.PiecePrice;
  458. }
  459. if (instance._OpportunityItems.g_IsEnableCompositePrice) {
  460. UnitPrice = LoadedItem.CompositePrice;
  461. }
  462. if (instance._OpportunityItems.g_IsEnableCompositePiecePrice) {
  463. UnitPrice = LoadedItem.CompositePiecePrice;
  464. }
  465. }
  466. }
  467. let Quantity = 0;
  468. if (instance._Opportunity.g_InventoryApplyType == Bizgaze.Apps.Transact.Enums.InventoryApplyType.Quantity) {
  469. Quantity = data.Quantity;
  470. }
  471. else {
  472. Quantity = ((LoadedItem.PackCount * LoadedItem.PackSize) * data.Packs) + (data.Pieces * LoadedItem.PackSize);
  473. }
  474. let ItemIndex = instance._OpportunityItems.g_CartItems_New.length + 1;
  475. instance._OpportunityItems.g_CartItems_New.push({
  476. OpportunityItemId: data.OpportunityItemId,
  477. ItemIndex: ItemIndex,
  478. ItemId: data.ItemId,
  479. ItemName: LoadedItem.ItemName,
  480. Packs: data.Packs,
  481. Pieces: data.Pieces,
  482. PriceListId: data.PriceListId,
  483. UnitPrice: UnitPrice,
  484. UnitPriceWithOutTax: data.UnitPrice,
  485. ExpectedPrice: data.UnitPrice,
  486. ActualPrice: data.UnitPrice,
  487. PackCount: LoadedItem.PackCount,
  488. PackSize: LoadedItem.PackSize,
  489. UnitName: LoadedItem.UnitName,
  490. Quantity: Quantity,
  491. SKU: LoadedItem.SKU,
  492. PartNo: LoadedItem.PartNo,
  493. Amount: Amount,
  494. AmountWithDiscount: AmountWithDiscount,
  495. DiscountPercent: data.DiscountPercent,
  496. DiscountValue: data.DiscountValue,
  497. DiscountType: DiscountType,
  498. DiscountAmount: DiscountAmount,
  499. ItemValueAfterDiscount: AfterDiscountValue,
  500. StrTaxPercents: StrTaxPercents,
  501. AvailableQuantity: LoadedItem.AvailableQuantity,
  502. AvailablePacks: LoadedItem.AvailablePacks,
  503. AvailablePieces: LoadedItem.AvailablePieces,
  504. TotalAvailablePieces: LoadedItem.TotalAvailablePieces,
  505. ExchangeDC: data.ExchangeDC,
  506. IsAfterTax: data.IsAfterTax,
  507. BaseQty: data.Quantity,
  508. IsFocItem: data.IsFoc,
  509. optoutAmount: optoutAmount,
  510. TaxGroupId: LoadedItem.TaxGroupId,
  511. TaxGroupName: LoadedItem.TaxGroupName,
  512. TaxAmount: TaxAmount,
  513. TaxRateAmount: LoadedItem.TaxRateAmount,
  514. TaxRate: LoadedItem.TaxRate,
  515. TaxPercentage: LoadedItem.TaxPercentage,
  516. IsOfferAvailable: LoadedItem.IsOfferAvailable,
  517. Description: data.Description == undefined ? "" : data.Description,
  518. Discountable: LoadedItem.Discountable,
  519. PiecePrice: LoadedItem.PiecePrice,
  520. CompositePrice: LoadedItem.CompositePrice,
  521. CompositePiecePrice: LoadedItem.CompositePiecePrice,
  522. IsCheckPendingItems: true,
  523. IsError: false,
  524. ErrorMsg: "",
  525. ErrorClass: "text-danger",
  526. IsTaxError: IsTaxError,
  527. IsLeverageError: false,
  528. IsFocAdded: false,
  529. RefItemIds: "",
  530. RefItemSKUs: "",
  531. FocItemIds: "",
  532. DiscountGroupId: 0,
  533. IsOfferDiscountApplied: false,
  534. AppliedOfferVolume: 0,
  535. optoutOfferGroupId: 0,
  536. SuggestedPacks: 0,
  537. MinPacks: 0,
  538. AvgPacks: 0,
  539. InwardOrderPacks: 0,
  540. OutwardOrderPacks: 0,
  541. IsMultipleUOMs: LoadedItem.IsMultipleUOMs,
  542. UOMSchemaId: LoadedItem.UOMSchemaId,
  543. MultipleUOMs: LoadedItem.MultipleUOMs,
  544. SelectedUnitId: data.AlternateUnitId,
  545. DefaultSize: data.DefaultSize,
  546. IsBoMAvailable: LoadedItem.IsBoMAvailable,
  547. UOMQuantity: Quantity
  548. });
  549. instance._OpportunityItems.g_SelectedItems = instance._OpportunityItems.g_CartItems_New;
  550. instance._OpportunityItems.N_UpdateItemsDesign(elem, "FromWidget");
  551. }
  552. getOpportunityItems() {
  553. let instance = this;
  554. let ItemList = instance._OpportunityItems.GetOpportunityItems(instance.g_OpportunityId);
  555. if (instance._OpportunityItems.g_CartItems_New.length == 0 && $(".variant-addeditem").length
  556. == 0) {
  557. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Please Select Item");
  558. return false;
  559. }
  560. let cartItem_WithZeroQuantity = instance._OpportunityItems.g_CartItems_New.filter(x => x.Quantity == 0);
  561. let InventoryTitle = $("#spn_InventoryTitle").text();
  562. if ($(".variant-list").find(".list-group-item").length > instance._OpportunityItems.g_CartItems_New.length) {
  563. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Please Select " + InventoryTitle);
  564. return false;
  565. }
  566. else if (cartItem_WithZeroQuantity.length > 0) {
  567. Unibase.Platform.Forms.Components.FormViewer.Instance().showError(InventoryTitle + " can't be zero");
  568. return false;
  569. }
  570. else {
  571. return ItemList;
  572. }
  573. }
  574. static Instance() {
  575. if (this.instance === undefined) {
  576. this.instance = new AddOpportunityItems();
  577. }
  578. return this.instance;
  579. }
  580. }
  581. Controls.AddOpportunityItems = AddOpportunityItems;
  582. })(Controls = Transact.Controls || (Transact.Controls = {}));
  583. })(Transact = Apps.Transact || (Apps.Transact = {}));
  584. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  585. })(Bizgaze || (Bizgaze = {}));