Built files from Bizgaze WebServer
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

w_dbpplanningwidget.js 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. var Bizgaze;
  2. (function (Bizgaze) {
  3. let Apps;
  4. (function (Apps) {
  5. let TM;
  6. (function (TM) {
  7. let Targets;
  8. (function (Targets) {
  9. let Components;
  10. (function (Components) {
  11. class DBPPlanningWidget extends Unibase.Platform.Core.BaseComponent {
  12. cssFiles() {
  13. return [];
  14. }
  15. jsFiles() {
  16. return ['apps/tm/targets/components/savetargetvalue.js'];
  17. }
  18. html() {
  19. var html = '<div></div>';
  20. return html;
  21. }
  22. load() {
  23. }
  24. init(Containerid) {
  25. var instance = this;
  26. Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().loadHtml(Containerid);
  27. $(".submit").click(function () {
  28. alert("hai");
  29. });
  30. $('.TargetValue-row').keyup(function (event) {
  31. if (event.which != 46 && (event.which < 47 || event.which > 59)) {
  32. event.preventDefault();
  33. if ((event.which == 46)) {
  34. event.preventDefault();
  35. }
  36. }
  37. });
  38. $(".saveTargetPlan").click(function () {
  39. Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().save(false);
  40. });
  41. $(".SendforDBCApproval").click(function () {
  42. Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().save(true);
  43. });
  44. }
  45. loadHtml(containerid) {
  46. var html = `<div class="card pb-15 mb-0" id="DBPTarget">
  47. <div class="card-header Configure_Target">Target</div>
  48. <div class="card-body text-center" >
  49. <a href="javascript:;" onclick="Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().loadEditPlan();" class="btn btn-success px-5"> Configure Target </a>
  50. </div></div>`;
  51. $("." + containerid).html(html);
  52. }
  53. loadEditPlan() {
  54. $(".Configure_Target").html('');
  55. var html = `<div class="card-body text-center Edit_TargetPlan">
  56. <a href="javascript:;" onclick="Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().loadPlanningHtml();" type="button" class="btn btn-info">Edit Target Plan</a>
  57. <a href="javascript:;" type="button" class="btn btn-info">Send for DBC Approval</a>
  58. </div>`;
  59. $("#DBPTarget").html(html);
  60. }
  61. loadPlanningHtml() {
  62. const instance = this;
  63. $(".Edit_TargetPlan").html('');
  64. var html = `<div class="card-body d-flex align-items-end">
  65. <div class="col-md-3 floating-label-form-group-with-value" id="IncludedTags">
  66. <label for="txt_States">States</label>
  67. <input type="hidden" class="hf_States" value="" />
  68. <select style="width:100%" id="txt_States" value="" class="no-border form-control select2_IncludedTags txtIncludedTags" IsTagSelect="false" multiple="multiple">
  69. <option value="0">Select</option>
  70. </select>
  71. </div>
  72. <div class="col-md-3 floating-label-form-group-with-value" id="Districts">
  73. <label for="txt_Districts">Districts</label>
  74. <input type="hidden" class="hf_Districts" value="" />
  75. <select style="width:100%" id="txt_Districts" value="" class="no-border form-control select2_Districts txtDistricts" IsTagSelect="false" multiple="multiple">
  76. <option value="0">Select</option>
  77. </select>
  78. </div>
  79. <div class="col-md-3 floating-label-form-group-with-value" id="IncludedTags">
  80. <label for="txt_segment">Segments</label>
  81. <input type="hidden" class="hf_segment" value="" />
  82. <select style="width:100%" id="txt_segment" value="" class="no-border form-control select2_IncludedTags txtIncludedTags" IsTagSelect="false" multiple="multiple">
  83. <option value="0">Select</option>
  84. </select>
  85. </div>
  86. <div class="col-md-3">
  87. <a href="javascript:;" onclick="Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().ApplyFilter()" type="submit" id="submit" class="btn btn-primary h-100 mt-4">Apply Filter</a>
  88. <button class="h-100 mt-4 ml-2 btn btn-light">Clear</button>
  89. </div>
  90. </div>
  91. <div class="table-responsive px-10">
  92. <table class="table table-bordered table-striped" id="tblDBPTarget">
  93. <thead>
  94. <tr class="bg-light">
  95. <th>District Name</th>
  96. <th>Product Line</th>
  97. <th>Segment</th>
  98. <th class="text-center">Plan Name</th>
  99. <th class="text-center">Quantity</th>
  100. </tr>
  101. </thead>
  102. <tbody class="table_DBPTbody d-none" id="tableDBPTbody"></tbody>
  103. <tfoot id="tableDBPTFoot" class="table-active font-weight-600"></tfoot>
  104. </table>
  105. <div id="dbpTablePagination" class="pagination custom-pagination pagination-rounded pull-right"></div>
  106. </div>
  107. <div class="text-right m-auto">
  108. <button type="button" class="btn btn-info saveTargetPlan" onclick="Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().save(false);">Save as Draft</button>
  109. <button type="button" onclick="Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().save(true);" class="btn btn-info SendforDBCApproval">Send for DBC Approval</button>
  110. </div>`;
  111. $("#DBPTarget").html(html);
  112. var url = _appsettings.server_url() + '/apis/v4/bizgaze/mobil/targets/getdbpsegments';
  113. AutoCompleteHelper.getHelper().Create($("#txt_segment"), ".hf_segment", url, function (response) {
  114. });
  115. var url = _appsettings.server_url() + '/apis/v4/bizgaze/mobil/targets/getdbpstates';
  116. AutoCompleteHelper.getHelper().Create($("#txt_States"), ".hf_States", url, function (response) {
  117. });
  118. var stateIds = $("#txt_States").val();
  119. var url = _appsettings.server_url() + '/apis/v4/bizgaze/mobil/targets/getdbpdistricts/stateId/' + stateIds;
  120. AutoCompleteHelper.getHelper().Create($("#txt_Districts"), ".hf_Districts", url, function (response) {
  121. });
  122. $("#txt_States").change(function () {
  123. var stateIds = $("#txt_States").val();
  124. var url = _appsettings.server_url() + '/apis/v4/bizgaze/mobil/targets/getdbpdistricts/stateId/' + stateIds;
  125. AutoCompleteHelper.getHelper().Create($("#txt_Districts"), ".hf_Districts", url, function (response) {
  126. });
  127. });
  128. Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().ApplyDistricts();
  129. }
  130. ApplyDistricts() {
  131. var instance = this;
  132. instance.fileCacheHelper.loadJsFile('apps/tm/targets/managers/targetmanager.js', function () {
  133. Bizgaze.Apps.TM.Targets.Managers.TargetManager.Instance().ApplyDBPDistricts().then(function (response) {
  134. let data = response.result;
  135. var state_Ids = data.StateIds;
  136. var state_Names = data.StateNames;
  137. var district_Ids = data.DistrictIds;
  138. var district_Names = data.DistrictNames;
  139. var stateIds = [];
  140. var stateNames = [];
  141. var districtIds = [];
  142. var districtNames = [];
  143. stateIds = state_Ids.split(",");
  144. stateNames = state_Names.split(",");
  145. districtIds = district_Ids.split(",");
  146. districtNames = district_Names.split(",");
  147. if (stateIds.length != 0) {
  148. for (let i = 0; i < stateIds.length; i++) {
  149. var state_option = new Option(stateNames[i], stateIds[i], true, true);
  150. $("#txt_States").append(state_option).trigger('change');
  151. }
  152. }
  153. if (districtIds.length != 0) {
  154. for (let j = 0; j < districtIds.length; j++) {
  155. var state_option = new Option(districtNames[j], districtIds[j], true, true);
  156. $("#txt_Districts").append(state_option).trigger('change');
  157. }
  158. }
  159. });
  160. });
  161. }
  162. ApplyFilter() {
  163. var instance = this;
  164. var InstalledAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  165. var targetdefinitionid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + InstalledAppId + "_targetdefinitionid").Value);
  166. var stateid = ($("#txt_States").val()).toString().length === 0 ? 0 : ($("#txt_States").val()).toString();
  167. var districtid = ($("#txt_Districts").val()).toString().length === 0 ? 0 : ($("#txt_Districts").val()).toString();
  168. var segmentid = ($("#txt_segment").val()).toString().length === 0 ? 0 : ($("#txt_segment").val()).toString();
  169. var productlinetagid = "adfgb";
  170. var distributorid = 0;
  171. var obj = {
  172. StateId: stateid,
  173. DistrictId: districtid,
  174. SegmentId: segmentid,
  175. ProductLineId: productlinetagid,
  176. DistributorId: distributorid,
  177. TargetDefinitionId: targetdefinitionid
  178. };
  179. instance.fileCacheHelper.loadJsFile('apps/tm/targets/managers/targetmanager.js', function () {
  180. instance.navigationHelper.showLoading();
  181. Bizgaze.Apps.TM.Targets.Managers.TargetManager.Instance().GetDBPTargetPlannings(obj).then(function (response) {
  182. if (response) {
  183. $("#divDBPPlanning2021").html('<tr class="row-dbpitem hidden"></tr>');
  184. $(".row-dbpitem:last").before('<tr></tr>');
  185. }
  186. else {
  187. return false;
  188. }
  189. $(".table_DBPTbody").html('');
  190. for (var i = 0; i < response.result.length; i++) {
  191. let isplanRow = response.result[i].PlanName == '2023';
  192. let isGrandTotal = response.result[i].SegmentTag == 'GrandTotal';
  193. var res = response.result;
  194. var html = ``;
  195. if (!isGrandTotal) {
  196. if (isplanRow) {
  197. html = `<tr class="bg-white TargetValue-row">
  198. <td class="Districtname">` + response.result[i].DistrictName + `</td>
  199. <td class="ProductLine">` + response.result[i].ProductLineTag + `</td>
  200. <td class="Segment" >` + response.result[i].SegmentTag + `</td>
  201. <td class="text-center PlanName">` + response.result[i].PlanName + `</td>
  202. <td class="text-center"><input type="text" onkeyup="return Bizgaze.Apps.TM.Targets.Components.DBPPlanningWidget.Instance().calTotal(this)" class="text-center TargetValue editTarget" value=` + response.result[i].TotalQty + `></td>
  203. <input type="hidden" id="hf_PlanId" value=` + res[i].PlanId + ` />
  204. <input type="hidden" id="hf_StateId" value=` + res[i].StateId + ` />
  205. <input type="hidden" id="hf_DistrictId" value=` + res[i].DistrictId + ` />
  206. <input type="hidden" class="hf_ProductlineId" id="hf_ProductlineId" value=` + res[i].ProductlineId + `>
  207. <input type="hidden" class="hf_SegmentTagId" id="hf_SegmentTagId" value=` + res[i].SegmentTagId + `>
  208. <input type="hidden" id="hf_PlanId" value=` + res[i].PlanId + ` />
  209. </tr>`;
  210. }
  211. else {
  212. html = `<tr class="bg-white">
  213. <td class="Districtname">` + response.result[i].DistrictName + `</td>
  214. <td class="ProductLine">` + response.result[i].ProductLineTag + `</td>
  215. <td class="Segment" >` + response.result[i].SegmentTag + `</td>
  216. <td class="text-center PlanName">` + response.result[i].PlanName + `</td>
  217. <td class="text-center Quantity">` + response.result[i].TotalQty + `</td>
  218. </tr>`;
  219. }
  220. }
  221. else {
  222. let totalHtml = '';
  223. if (isplanRow && isGrandTotal) {
  224. totalHtml = `<tr>
  225. <td colspan="3">GrandTotal</td>
  226. <td class="text-center">2023</td>
  227. <td class="text-center gtqty">` + response.result[i].TotalQty + `</td>
  228. </tr>`;
  229. }
  230. else {
  231. totalHtml = `<tr>
  232. <td colspan="3">GrandTotal</td>
  233. <td class="text-center">2022</td>
  234. <td class="text-center">` + response.result[i].TotalQty + `</td>
  235. </tr>`;
  236. }
  237. $('#tableDBPTFoot').html(totalHtml);
  238. }
  239. $(".table_DBPTbody:last").append(html);
  240. }
  241. instance.loadPagination();
  242. instance.navigationHelper.hideLoading();
  243. });
  244. instance.fileCacheHelper.loadJsFile('apps/tm/targets/managers/targetmanager.js', function () {
  245. Bizgaze.Apps.TM.Targets.Managers.TargetManager.Instance().getTargetDefinitionDetails(targetdefinitionid).then(function (response) {
  246. if (response) {
  247. if (response.result.StageName == "Completed") {
  248. $(".editTarget").attr("disabled", "disabled");
  249. }
  250. }
  251. });
  252. });
  253. });
  254. }
  255. loadPagination() {
  256. var instance = this;
  257. instance.fileCacheHelper.loadJsFile('"libs/jquery/pagination/jquery.pagination.js"', function () {
  258. const pageSize = 20;
  259. const tableRows = $('#tableDBPTbody tr');
  260. const totalRecords = tableRows.length;
  261. tableRows.hide();
  262. $('#tableDBPTbody').removeClass('d-none');
  263. $('#tableDBPTbody tr').slice(0, 20).show();
  264. const handlePaginationClick = (page_index) => {
  265. const indexPageSize = page_index * pageSize;
  266. $('#tableDBPTbody tr:visible').hide();
  267. $('#tableDBPTbody tr').slice(indexPageSize, indexPageSize + pageSize).show();
  268. };
  269. let elem = $('#dbpTablePagination');
  270. elem.pagination(totalRecords, pageSize, {
  271. items_per_page: pageSize,
  272. callback: handlePaginationClick
  273. });
  274. });
  275. }
  276. calTotal(event) {
  277. let gtqty = 0;
  278. $(".table_DBPTbody").find(".TargetValue-row").each(function () {
  279. var colval = Number($(this).find(".TargetValue").val());
  280. gtqty = gtqty + colval;
  281. });
  282. $(".gtqty").val(gtqty);
  283. $(".gtqty").text(gtqty);
  284. }
  285. save(IsApproval) {
  286. var instance = this;
  287. var postdata = [];
  288. $("#tblDBPTarget").find(".TargetValue-row").each(function () {
  289. postdata.push({
  290. StateId: Number($(this).find("#hf_StateId").val()),
  291. DistrictId: Number($(this).find("#hf_DistrictId").val()),
  292. ProductlineId: Number($(this).find(".hf_ProductlineId").val()),
  293. SegmentTagId: Number($(this).find(".hf_SegmentTagId").val()),
  294. TotalQty: Number($(this).find(".TargetValue").val()),
  295. PlanName: "2023 Plan",
  296. PlanId: Number($(this).find("#hf_PlanId").val()),
  297. TargetDefinitionId: Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key == "hf_" + Unibase.Themes.Providers.DetailHelper.installedAppId + "_targetdefinitionid").Value),
  298. IsApproval: IsApproval,
  299. });
  300. });
  301. instance.fileCacheHelper.loadJsFile('apps/tm/targets/managers/targetmanager.js', function () {
  302. Bizgaze.Apps.TM.Targets.Managers.TargetManager.Instance().saveTargetPlan(postdata).then(function (response) {
  303. if (response) { }
  304. var detail_instance = Unibase.Themes.Compact.Components.Details.Instance();
  305. var containerid = $("._bizgaze_detail_container:visible").attr("id");
  306. var _installedAppId = Unibase.Themes.Providers.DetailHelper.installedAppId;
  307. var portletid = detail_instance.unibase_core_activeportletid;
  308. detail_instance.loadWidgets(_installedAppId, portletid, "#" + containerid + "");
  309. });
  310. });
  311. }
  312. approval() {
  313. var instance = this;
  314. var targetdefinitionid = 101274070000002;
  315. instance.fileCacheHelper.loadJsFile('apps/tm/targets/managers/targetmanager.js', function () {
  316. Bizgaze.Apps.TM.Targets.Managers.TargetManager.Instance().saveApprove(targetdefinitionid).then(function (response) {
  317. if (response) {
  318. }
  319. });
  320. });
  321. }
  322. static Instance() {
  323. if (this.instance === undefined) {
  324. this.instance = new DBPPlanningWidget();
  325. }
  326. return this.instance;
  327. }
  328. }
  329. Components.DBPPlanningWidget = DBPPlanningWidget;
  330. })(Components = Targets.Components || (Targets.Components = {}));
  331. })(Targets = TM.Targets || (TM.Targets = {}));
  332. })(TM = Apps.TM || (Apps.TM = {}));
  333. })(Apps = Bizgaze.Apps || (Bizgaze.Apps = {}));
  334. })(Bizgaze || (Bizgaze = {}));