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.

indentitems.component.js 26KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  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 IndentItems extends Unibase.Platform.Core.BaseComponent {
  19. constructor() {
  20. super(...arguments);
  21. this.g_IsFromWorkOrder = false;
  22. this.g_VisibleContainerId = "";
  23. this.g_WorkOrderItemsArray = [];
  24. this.g_IndentItemsArray = [];
  25. this.g_WorkOrderBranchId = 0;
  26. }
  27. init(formpropertyid, prop, callback) {
  28. var instance = this;
  29. let jsFiles = ["apps/transact/infos/orders/orderitem.js", "apps/transact/controls/orders/orderitems.component.js", "apps/transact/controls/pricelist/managers/pricelistmanager.js", "apps/transact/managers/payments/paymentmanager.js", "apps/crm/contacts/managers/contactmanager.js", "apps/crm/lobs/managers/lobmanager.js", "apps/transact/managers/paymentterms/paymenttermmanager.js", "platform/apps/managers/stagemanager.js", "apps/transact/managers/orders/ordermanager.js", "apps/transact/enums/enum.js", "platform/permission/enums/permission.js", "apps/transact/managers/invoicemanager.js", "apps/transact/managers/offers/offermanager.js", "platform/core/helpers/numberhelper/numberhelper.js", "libs/jquery/pagination/jquery.pagination.js", "apps/transact/components/orders/orderfilter.js", "platform/core/helpers/printhelper/printhelper.js", "apps/transact/components/invoices/itemofferselection.js", "apps/transact/controls/invoices/invoiceitem.component.js", "apps/transact/controls/orders/customercredithealth.component.js", "apps/transact/managers/inventory/itemmanager.js"];
  30. instance.fileCacheHelper.loadJsFiles(jsFiles, function () {
  31. instance.loadControlSettings(prop.ControlJsonText, prop.FormPropertyId);
  32. instance.loadPropertySettings(prop.PropertySettings, prop.FormPropertyId);
  33. });
  34. }
  35. loadControl(containerid, prop) {
  36. let instance = this;
  37. var html = `<input type = "hidden" id = "hdn_customcontrol" class="value-control" value = "Bizgaze.Apps.Transact.Controls.IndentItems.Instance().getIndentItems();"
  38. <div class="PurchaseIndentItems">
  39. <div class="row div_titledetails">
  40. <div class="col-sm-8 ItemDetails pl-55">Item</div>
  41. <div class="col-sm-4 Inventory_Title InventoryTypesTextboxes text-center">
  42. <div class="row">
  43. <span id="spn_InventoryTitle" class="col-sm-12">Quantity</span>
  44. </div>
  45. </div>
  46. </div>
  47. <ul class="indent-list list-group" id="IndentItemsList" style="margin:0px -21px">
  48. <li class="indent-item hidden"></li>
  49. </ul>
  50. <br/>
  51. <div class="alert alert-primary text-center mb-0 border-0 rounded-0 w-100 font-14 font-weight-500 div_NoDataAvailable hidden"> No Data Available </div>
  52. <br/>
  53. <div class="btn btn-success btn-xs ml-40" id="div_AddItem"> <i class="fa fa-plus"> </i> Add Item </div>
  54. </div>`;
  55. $("#" + containerid).html(html);
  56. instance.g_VisibleContainerId = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 1];
  57. instance.g_WorkOrderBranchId = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_branchid").Value);
  58. }
  59. getIndentItemDesign(res, RowId) {
  60. let ItemId = 0;
  61. let Qty = 0;
  62. let ItemName = "";
  63. if (res != null) {
  64. ItemId = res.ItemId;
  65. Qty = res.Quantity;
  66. ItemName = res.ItemName;
  67. }
  68. let html = `<li id="` + RowId + `" class="list-group-item indent-item indent-addeditem indent-addeditem-` + RowId + ` li no-border">
  69. <input type="hidden" id="hf_ItemId" value="` + ItemId + `"/>
  70. <input type="hidden" id="hf_RowId" value="` + RowId + `"/>
  71. <div class="row position-relative">
  72. <div class="ItemDetails col-sm-8 pl-20 mt-20" id="ItemDetails">
  73. <a class="fa fa-trash-o m-t fa-md text-danger fa-lg pull-left mt-1 div_DeleteIndentItem" id="div_DeleteIndentItem_` + RowId + `" title="Delete Item"></a>
  74. <div class="col-sm-11">
  75. <div class="d-flex">
  76. <div class="block text-sm mouseHoverClass CartItemName" style="color: rgb(91, 168, 251);">` + ItemName + `</div>
  77. </div>
  78. </div>
  79. </div>
  80. <div class="bg-white col-sm-8 div_IndentItemAutoComplete pa-0 col-sm-8 pl-20 mt-20 hidden">
  81. <a class="fa fa-trash-o m-t fa-md text-danger fa-lg pull-left mt-10 div_DeleteIndentItem" id="div_DeleteIndentItem_` + RowId + `" title="Delete Item"></a>
  82. <div class="col-sm-11 biz-select2-wrap">
  83. <input type="hidden" id = "hdn_Indent_Item_` + RowId + `" class="value-control" value="">
  84. <select class="slct_Indent_Item_` + RowId + ` slct_Indent_Item ui-autocomplete form-control w-100 col-sm-12" data-placeholder="Select" placeholder="Operations" value=""> </select>
  85. </div>
  86. </div>
  87. <div id="InventoryTypesTextboxes" class="InventoryTypesTextboxes col-sm-4">
  88. <div class="col-sm-12">
  89. <div class="floating-label-form-group defaultSelectedQuantity divOrders_ItemCount">
  90. <label class="text-center">Quantity</label>
  91. <div class="input-group" id="div_Quantity">
  92. <span class="input-group-prepend">
  93. <a href="javascript:;" class="input-group-addon btn quantity-minus" draggable="false"><i class="fa fa-minus"></i>
  94. </a>
  95. </span>
  96. <input type="text" id="txt_Quantity" class="form-control text-center txtOrder_ItemCount floating-label-control" inputmode="numeric" onpaste="return Bizgaze.Apps.Transact.Controls.IndentItems.Instance().isNumberKey(event)" oninput="return Bizgaze.Apps.Transact.Controls.IndentItems.Instance().isNumberKey(event)" data-isdynamic="false" placeholder="Quantity" data-placeholder="Quantity" data-label="Quantity" value="` + Qty + `">
  97. <span class="input-group-append">
  98. <a href="javascript:;" class="quantity-plus input-group-addon btn " draggable="false"><i class="fa fa-plus"></i>
  99. </a>
  100. </span>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. </div>
  106. </li>`;
  107. return html;
  108. }
  109. loadControlSettings(controlsettingjson, formpropertyid) {
  110. let instance = this;
  111. let OrderId = Number(Unibase.Themes.Providers.DetailHelper.recordId);
  112. if (instance.g_IsFromWorkOrder) {
  113. instance.g_WorkOrderItemsArray = [];
  114. instance.g_IndentItemsArray = [];
  115. $("#" + instance.g_VisibleContainerId).find("[data-formpropertyname='PurchaseIndentItems']").remove();
  116. $("#" + instance.g_VisibleContainerId).find("[data-formpropertyname='IndentItems']").attr("data-formpropertyname", "PurchaseIndentItems");
  117. Bizgaze.Apps.Transact.Managers.OrderManager.Instance().getOrderItems(OrderId, 0).then(function (rm_resp) {
  118. return __awaiter(this, void 0, void 0, function* () {
  119. if (rm_resp.result != null) {
  120. let res = rm_resp.result.filter(x => x.ParentBOMItemId != 0);
  121. let ItemIds = "";
  122. res.forEach(function (x) {
  123. ItemIds += x.ItemId + ",";
  124. });
  125. Bizgaze.Apps.Transact.Managers.ItemManager.Instance().getItemsAvailableQty(ItemIds, instance.g_WorkOrderBranchId.toString(), false).then(function (res_avail) {
  126. for (let i = 0; i < res.length; i++) {
  127. let RowId = instance.getNewRowId();
  128. let html = instance.getIndentItemDesign(res[i], RowId);
  129. let Avail = res_avail.result.find(x => x.ItemId == res[i].ItemId);
  130. instance.g_WorkOrderItemsArray.push({
  131. ItemName: res[i].ItemName,
  132. WorkOrderId: res[i].OrderId,
  133. ItemId: res[i].ItemId,
  134. Quantity: res[i].Quantity,
  135. AvailQty: Avail.Quantity,
  136. RowId: RowId
  137. });
  138. if (Avail.Quantity < res[i].Quantity) {
  139. instance.g_IndentItemsArray.push({
  140. ItemName: res[i].ItemName,
  141. WorkOrderId: res[i].OrderId,
  142. OrderItemId: res[i].OrderItemId,
  143. ItemId: res[i].ItemId,
  144. Quantity: res[i].Quantity,
  145. AvailQty: Avail.Quantity,
  146. RowId: RowId
  147. });
  148. $("#" + instance.g_VisibleContainerId).find(".indent-item:last").after(html);
  149. let elem = $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId);
  150. $("#" + instance.g_VisibleContainerId).find("#div_AddItem").off().click(function () {
  151. let IsError = false;
  152. $(".slct_Indent_Item:visible").each(function () {
  153. let slct_RowId = $(this).parentsUntil("ul").find("#hf_RowId").val();
  154. let Index = instance.g_IndentItemsArray.findIndex(x => x.RowId == slct_RowId);
  155. if (!IsError && Index == -1) {
  156. let val = Number($(this).val());
  157. if (val == 0 || isNaN(val)) {
  158. IsError = true;
  159. }
  160. }
  161. });
  162. if (!IsError) {
  163. let RowId = instance.getNewRowId();
  164. let html = instance.getIndentItemDesign(null, RowId);
  165. $("#" + instance.g_VisibleContainerId).find(".indent-item:last").after(html);
  166. let OrderItemIds = instance.getIndentOrderItemIds(instance.g_IndentItemsArray);
  167. let url = _appsettings.server_url() + '/apis/v4/bizgaze/transact/orders/getorderitemsbyorderidautocomplete/orderid/' + res[i].OrderId + '/orderitemids/' + OrderItemIds;
  168. let txtAutoSearchCtrl = $(".slct_Indent_Item_" + RowId);
  169. let hdnSelectedItemId = $("#hdn_Indent_Item_" + RowId);
  170. AutoCompleteHelper.getHelper().Create(txtAutoSearchCtrl, hdnSelectedItemId, url, null);
  171. let added_elem = $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId);
  172. $(added_elem).find(".div_IndentItemAutoComplete").removeClass("hidden");
  173. $(added_elem).find(".ItemDetails, .InventoryTypesTextboxes").addClass("hidden");
  174. instance.allIndentItemEvents(added_elem);
  175. }
  176. else {
  177. Unibase.Platform.Forms.Components.FormViewer.Instance().showError("Please Select Item");
  178. return false;
  179. }
  180. });
  181. instance.allIndentItemEvents(elem);
  182. instance.ShowOrHideNoDataAvailable();
  183. }
  184. }
  185. });
  186. }
  187. else {
  188. instance.ShowOrHideNoDataAvailable();
  189. }
  190. });
  191. });
  192. }
  193. }
  194. loadPropertySettings(propertysettings, formpropertyid) {
  195. return null;
  196. }
  197. bindEditFormDetails(formpropertyid, propval, DocPropertyName) {
  198. return null;
  199. }
  200. getNewRowId() {
  201. let text = "";
  202. let possible = "0123456789";
  203. for (let i = 0; i < 5; i++)
  204. text += possible.charAt(Math.floor(Math.random() * possible.length));
  205. return Number(text);
  206. }
  207. getIndentItemIds(res) {
  208. let ItemIds = "";
  209. res.forEach(function (x) {
  210. ItemIds += x.ItemId + ",";
  211. });
  212. if (res.length == 0) {
  213. ItemIds = "null";
  214. }
  215. return ItemIds;
  216. }
  217. getIndentOrderItemIds(res) {
  218. let OrderItemIds = "";
  219. res.forEach(function (x) {
  220. OrderItemIds += x.OrderItemId + ",";
  221. });
  222. if (res.length == 0) {
  223. OrderItemIds = "null";
  224. }
  225. return OrderItemIds;
  226. }
  227. allIndentItemEvents(elem) {
  228. let instance = this;
  229. let RowId = elem.find("#hf_RowId").val();
  230. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".div_DeleteIndentItem").click(function () {
  231. let RowId = elem.find("#hf_RowId").val();
  232. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).remove();
  233. let ItemId = elem.find("#hf_ItemId").val();
  234. let IndentItemIndex = instance.g_IndentItemsArray.findIndex(x => x.ItemId == ItemId);
  235. instance.g_IndentItemsArray.splice(IndentItemIndex, 1);
  236. instance.ShowOrHideNoDataAvailable();
  237. });
  238. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".slct_Indent_Item").click(function () {
  239. instance.bindAutoCompleteEvent(RowId);
  240. });
  241. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".slct_Indent_Item").change(function () {
  242. let RowId = $(this).parentsUntil("ul").find("#hf_RowId").val();
  243. let OrderItemId = Number($(this).val());
  244. let ItemId = Number($(this).attr("data-addldata"));
  245. let ItemName = $(this).text();
  246. let IndentItemId = Number($("#" + instance.g_VisibleContainerId).find(".slct_Indent_Item_" + RowId).val());
  247. if (IndentItemId == 0 || isNaN(IndentItemId)) {
  248. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".InventoryTypesTextboxes").addClass("hidden");
  249. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".InventoryTypesTextboxes").find("#txt_Quantity").val("");
  250. }
  251. else {
  252. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".InventoryTypesTextboxes").removeClass("hidden");
  253. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find(".InventoryTypesTextboxes").find("#txt_Quantity").val("1");
  254. let OrderId = Number(Unibase.Themes.Providers.DetailHelper.recordId);
  255. instance.g_IndentItemsArray.push({
  256. ItemName: ItemName,
  257. WorkOrderId: OrderId,
  258. OrderItemId: OrderItemId,
  259. ItemId: ItemId,
  260. Quantity: 1,
  261. AvailQty: 1,
  262. RowId: RowId
  263. });
  264. }
  265. instance.ShowOrHideNoDataAvailable();
  266. });
  267. $("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find("#txt_Quantity").change(function () {
  268. let RowId = $(this).parentsUntil("ul").find("#hf_RowId").val();
  269. let Index = instance.g_IndentItemsArray.findIndex(x => x.RowId == RowId);
  270. if (Index != -1) {
  271. let Qty = Number($("#" + instance.g_VisibleContainerId).find(".indent-addeditem-" + RowId).find("#txt_Quantity").val());
  272. instance.g_IndentItemsArray[Index].Quantity = Qty;
  273. }
  274. });
  275. }
  276. isNumberKey(evt) {
  277. let instance = this;
  278. if (evt.type == "paste") {
  279. let pastedData = evt.clipboardData.getData('text');
  280. let regExp = /[a-zA-Z]/g;
  281. if (regExp.test(pastedData)) {
  282. evt.preventDefault();
  283. return false;
  284. }
  285. }
  286. else if (evt.type == "input") {
  287. const inputVal = $("#" + instance.g_VisibleContainerId).find(evt.currentTarget).val();
  288. $("#" + instance.g_VisibleContainerId).find(evt.currentTarget).val(inputVal.replace(/\D/g, ''));
  289. }
  290. else {
  291. if (evt.which != 8 && evt.which != 0 && (evt.which < 48 || evt.which > 57)) {
  292. return false;
  293. }
  294. }
  295. return true;
  296. }
  297. ShowOrHideNoDataAvailable() {
  298. let instance = this;
  299. if ($("#" + instance.g_VisibleContainerId).find(".indent-item").length == 1) {
  300. $("#" + instance.g_VisibleContainerId).find(".div_NoDataAvailable").removeClass("hidden");
  301. }
  302. else {
  303. $("#" + instance.g_VisibleContainerId).find(".div_NoDataAvailable").addClass("hidden");
  304. }
  305. }
  306. getIndentItems() {
  307. let instance = this;
  308. let IndentItemList = new Array();
  309. for (let i = 0; i < instance.g_IndentItemsArray.length; i++) {
  310. let IndentItem = instance.g_IndentItemsArray[i];
  311. IndentItemList.push({
  312. "itemid_itemname": "0",
  313. "purchaseindentitemid": "0",
  314. "purchaseindentid": "0",
  315. "itemid": IndentItem.ItemId,
  316. "qty": IndentItem.Quantity
  317. });
  318. }
  319. return IndentItemList;
  320. }
  321. bindAutoCompleteEvent(RowId) {
  322. let instance = this;
  323. let OrderItemIds = instance.getIndentOrderItemIds(instance.g_IndentItemsArray);
  324. let OrderId = Number(Unibase.Themes.Providers.DetailHelper.recordId);
  325. let url = _appsettings.server_url() + '/apis/v4/bizgaze/transact/orders/getorderitemsbyorderidautocomplete/orderid/' + OrderId + '/orderitemids/' + OrderItemIds;
  326. let txtAutoSearchCtrl = $(".slct_Indent_Item_" + RowId);
  327. let hdnSelectedItemId = $("#hdn_Indent_Item_" + RowId);
  328. AutoCompleteHelper.getHelper().Create(txtAutoSearchCtrl, hdnSelectedItemId, url, null);
  329. }
  330. static Instance() {
  331. if (this.instance === undefined) {
  332. this.instance = new IndentItems();
  333. }
  334. return this.instance;
  335. }
  336. }
  337. Controls.IndentItems = IndentItems;
  338. })(Controls = Transact.Controls || (Transact.Controls = {}));
  339. })(Transact = Apps.Transact || (Apps.Transact = {}));
  340. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  341. })(Bizgaze || (Bizgaze = {}));