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 44KB

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