· 6 years ago · Apr 25, 2019, 07:02 AM
1<style>
2#profileCreateTable td{
3 text-align:center;
4}
5#profileCreateTable th{
6 text-align:center;
7}
8
9 .showItemImages i, .showImcImages i{
10 font-size: 2.237em;
11 margin: 5px;
12 }
13 .showImcImages i{
14 color: #4caf50;
15 }
16 .tdServiceItemImage:hover .hover-lightbox {
17 display: block;
18 }
19 .showItemImages i{
20 color: #3f51b5;
21 }
22
23 #image-modal {
24 min-width: 560px;
25 max-width: 1200px;
26 left: 150px;
27 width: auto;
28 padding 5px;
29 right: 150px;
30 transform: inherit;
31 top: 200px;
32 }
33 #image-form-modal {
34 min-width: 270px;
35 max-width: 242px;
36 }
37 #image-modal .modal-body .update-images {
38 min-height: 100px;
39 padding: 5px;
40 display: flex;
41 flex-direction: row;
42 flex-wrap: wrap;
43 justify-content: space-between;
44}
45#image-modal .modal-body .update-images .row {
46 max-width: 380px;
47 margin: 0;
48 flex-grow: 1;
49 flex-shrink: 1;
50}
51
52#image-modal .modal-body .update-images .item-image {
53 max-width: 150px;
54 max-height: 150px;
55}
56
57.image-update-input {
58 width: auto;
59}
60
61 .hover-lightbox {
62 width: 100%;
63 max-width: 300px;
64 max-height: 300px;
65 width: 210px;
66 border: 2px black solid;
67 display: none;
68 left: 44px;
69 position: absolute;
70 top: 50%;
71 transform: translateY(-50%);
72 }
73
74 #pricing_modal{
75 z-index: 1600;
76 }
77 #pricing_modal table {
78 font-size: 11px;
79 }
80 #pricing_modal #pricing_form .modal-body {
81 max-height: 600px;
82
83 }
84 #pricing_modal .pricing_table input {
85 width: auto;
86 min-width: 25px;
87 max-width: 65px;
88 }
89
90 #pricing_modal #pricing_table input .edited {
91 background-color: rgba(150, 0, 0, 0.237);
92 }
93
94 #pricing_modal #pricing_table th, #pricing_modal #pricing_table td {
95 text-align: center;
96 }
97
98 #pricing_table {
99 margin-right: 2em;
100 }
101</style>
102<?php $planRetroDate = json_decode( file_get_contents(base_url() . 'index.php/api/adminconfig/production_plan_retro_date/' . $this->config->item('base_api_key_url') . 'format/json')); ?>
103<script> var userDetails = JSON.parse(sessionStorage['userDetails']);
104 var user_id = parseFloat(userDetails['userID']);
105 $.getJSON(base_url + "index.php/api/userprofiles/user_has_menu_planning_access/user_id/" + user_id + "/" + api_key + "format/json", function (data) {
106 if (parseFloat(data[0]['has_permission']) == 0) {
107 $("#main_content").html('<p> </p><div class="container"><div class="offset3 span5"><div class="alert alert-error">You do not have permission to this module. Please contact your administrator.</div></div></div>');
108 return;
109 }
110 });</script>
111<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/views/tax/tax.js"></script>
112<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/views/mpd_profile/summaries.js"></script>
113<script type="text/javascript" src="<?php echo base_url(); ?>assets/js/views/mpd_profile/images.js"></script>
114<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
115 integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
116<link href="//cdn.rawgit.com/noelboss/featherlight/1.7.13/release/featherlight.min.css" type="text/css" rel="stylesheet" />
117<script src="//cdn.rawgit.com/noelboss/featherlight/1.7.13/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script>
118<script src="<?= base_url() ?>/assets/js/datatables.mod.js"></script>
119
120<!--######################################***PRICING***######################################-->
121<div data-backdrop="static" data-keyboard="false" id="pricing_modal" class="modal modal-imc-wide hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
122 <div class="modal-header">
123 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
124 <h3 id="myModalLabel"><span class="non_component non_recipe">ITEM</span><span class="non_component non_item">RECIPE</span><span class="non_recipe non_item">COMPONENT</span> Pricing</h3>
125 </div>
126 <div class="modal-body">
127 <form id="pricing_form" action="" method="POST">
128 <input type="hidden" value="" id="item_type">
129 <input type="hidden" value="" id="item_id">
130 <table class="table table-condensed table-bordered" id="current_pricing_item_table">
131 <thead style="background-color: #455A64;color:#ffffff;">
132 <tr style="text-align: center; text-transform: uppercase;">
133 <th style="text-align: center;">Specification Type</th>
134 <th style="text-align: center;">Service Code</th>
135 <th style="text-align: center;">Service Option</th>
136 <th style="text-align: center;">SERVICE GROUP</th>
137 <th style="text-align: center;">SERVICE CATEGORY</th>
138 <th style="text-align: center;">Service Description</th>
139 <th style="text-align: center;">Brand</th>
140 <th style="text-align: center;">Pack Type</th>
141 <th class="non_item" style="text-align: center;">UOM (METRIC)</th>
142 <th class="non_item" style="text-align: center;">UOM (IMPERIAL)</th>
143 <th style="text-align: center;">Status</th>
144 <th style="text-align: center;">CREATED DATE</th>
145 <th style="text-align: center;">CREATED BY</th>
146 <th style="text-align: center;">NOMINATED PRICE</th>
147 <th style="text-align: center;">PRICE AT SUBLEVEL</th>
148 </tr>
149 </thead>
150 <tbody>
151 </tbody>
152 </table>
153 <div class="pricing_filtering_row">
154 <div class="row filter_dropdowns_pricing">
155 <div class="col-xs-2 filter_item_pricing">
156 <span>Supplier</span>
157 <select id="pricing_supplier_filter"></select>
158 </div>
159 </div>
160 </div>
161 <table id="pricing_table" class="table table-condensed no-footer modTable pricing_table">
162 <thead style="background-color: #455A64; color:#ffffff;">
163 <tr>
164 <th>Facility</th>
165 <th>Currency</th>
166 <th style="text-align:center;" class="non_item"><span class="non_recipe">Purchase </span>Quantity</th>
167 <th style="text-align:center;" class="non_item">UOM Price</th>
168 <th style="text-align:center;" class="non_component">Man Mins.</th>
169 <th style="text-align:center;" class="non_component">Labour</th>
170 <th style="text-align:center;" class="non_component"><span class="non_item">Total</span> Raw Material</th>
171 <th style="text-align:center;">Total Price</th>
172 <th style="text-align:center;">Approved</th>
173 <th style="text-align:center;">Created Date</th>
174 <th style="text-align:center;">Created By</th>
175 </tr>
176 </thead>
177 <tbody>
178
179 </tbody>
180 </table>
181 <div class="attached_objects">
182 <h4>Attached Objects</h4>
183 <table class="table table-condensed table-bordered" id="attached_table" style="margin-top: 15px;">
184 <thead style="background-color: #455A64;color:#ffffff;">
185 <tr style="text-align: center; text-transform: uppercase;">
186 <th style="text-align: center;"><i class="fas fa-plus-circle"></i></th>
187 <th style="text-align: center;">Specification Type</th>
188 <th style="text-align: center;">Image</th>
189 <th style="text-align: center;">Service Code</th>
190 <th style="text-align: center;">Supplier Code</th>
191 <th style="text-align: center;">Service Option</th>
192 <th style="text-align: center;">SERVICE GROUP</th>
193 <th style="text-align: center;">SERVICE CATEGORY</th>
194 <th style="text-align: center;">Service Description</th>
195 <th style="text-align: center;">Brand</th>
196 <th style="text-align: center;">QTY</th>
197 <th style="text-align: center;">UOM (METRIC)</th>
198 <th style="text-align: center;">QTY (IMPERIAL)</th>
199 <th style="text-align: center;">UOM (IMPERIAL)</th>
200 <th style="text-align: center;">Status</th>
201 <th style="text-align: center;">NOMINATED PRICE</th>
202 </tr>
203 </thead>
204 <tbody id="attached_list" style="">
205 </tbody>
206 </table>
207 </div>
208 </div>
209 <div class="modal-footer">
210 <button type="button" class="btn btn-small" data-dismiss="modal" aria-hidden="true">Close</button>
211 <button type="button" class="btn btn-primary btn-small" id="pricing_submit_btn">Save changes</button>
212 </div>
213 </form>
214</div>
215<!--######################################***PRICING***######################################-->
216
217<div id="image-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
218 <div class="modal-header">
219 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
220 <h3 id="image-modal-label">Service Plan - Image Maintenance
221 <button class="btn btn-small btn-success toggle-add-image">Add Image</button>
222 <button class="btn btn-small btn-warning enable-image-edit">Edit</button>
223 </h3>
224 </div>
225 <div class="modal-body" id="image-modal-body">
226 <input type="hidden" id="current-image-row">
227 <table class="table table-hover">
228 <thead>
229 <tr>
230 <th>Service/Remarks</th>
231 <th>Supplier Code</th>
232 <th>Service Code</th>
233 <th>Service Description</th>
234 </tr>
235 </thead>
236 <tbody>
237 <tr>
238 <td class="image-row-info-table" data-class="tdRemarks"></td>
239 <td class="image-row-info-table" data-class="tdSupplierCode"></td>
240 <td class="image-row-info-table" data-class="tdServiceCode"></td>
241 <td class="image-row-info-table" data-class="tdServiceDescription"></td>
242 </tr>
243 </tbody>
244 </table>
245 <div class="update-images"></div>
246 </div>
247 <div class="modal-footer">
248 <div class="images-last-updated pull-left">
249 </div>
250 <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
251 <button class="btn btn-primary save-item-images hidden">Save changes</button>
252 </div>
253</div>
254<div id="image-form-modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
255 <div class="modal-header">
256 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
257 <h3 id="image-modal-label">Add new image</h3>
258 </div>
259 <div class="modal-body" id="image-modal-body">
260<!-- <div class="image-upload-container">-->
261 <form id="upload-item-image" method="POST" class="form form-horizontal" enctype="multipart/form-data">
262 <div class="control-group">
263 <label for="image_file_field">File</label>
264 <input type="file" name="item_image" id="image_file_field">
265 </div>
266 <div class="control-group">
267 <label for="image_title_field">Title</label>
268 <input type="text" name="title" id="image_title_field">
269 </div>
270 <div class="control-group">
271 <label for="image_comment_field">Comment</label>
272 <input type="text" name="comment" id="image_comment_field">
273 </div>
274 <div class="control-group">
275 <label for="image_is_primary_field">
276 <input type="checkbox" name="is_primary" id="image_is_primary_field">
277 Primary Image
278 </label>
279 </div>
280 </form>
281<!-- </div>-->
282 </div>
283 <div class="modal-footer">
284 <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
285 <button class="btn btn-primary save-new-image">Save changes</button>
286 </div>
287</div>
288<div id="service_profile">
289<!--<div class="page-header"><h4>Service Plans <small></small></h4></div>-->
290<p> </p>
291<div class="hide" id="servicePlanRouteRegionProceed" data-proceedTo="0"></div>
292<div class="span12" id="trackerGenerateList"></div>
293<div id="productionPlanTabs" class="tabbable">
294 <ul class="nav nav-tabs existingTabContainer">
295 <li id="existingDevelopment" class="active"><a href="javascript:alertChanges('',1);">Development</a></li>
296 <li id="existingProduction"><a href="javascript:alertChanges('',2);">Production</a></li>
297 <li id="existingArchive"><a href="javascript:alertChanges('',3);">Archive</a></li>
298 <li id="newPlansLink" class="hide"><a href="javascript:alertChanges('',4);">New Plan</a></li>
299 <li id="planDetailsLink" class="hide"><a>Services</a></li>
300 </ul>
301</div>
302<div class="well hide" id="updateEntirePlan" style="width:98%">
303 <fieldset>
304 <div class="row-fluid">
305 <div class="control-group span4">
306 <label for="profile_code" id="updateProfileCodeLable" class="control-label-required">Description</label>
307 <div class="alert alert-error hide" id="updateProfileCode_error"></div>
308 <div class="controls">
309 <textarea class="input-xlarge"
310 disabled
311 id="updateProfileCode"
312 name="updateProfileCode"
313 rows="3"
314 onKeyDown="limitText(this.id,250);profileCodeValid(this.value,'updateEntirePlanBtn','updateProfileCodeLable');"
315 onKeyUp="limitText(this.id,250);profileCodeValid(this.value,'updateEntirePlanBtn','updateProfileCodeLable');"></textarea>
316 <div class="help-inline">
317 <input disabled type="text" class="input-mini" id="updateProfileVersion" value="1"> version.<br/>
318 <input disabled type="text" class="input-mini" id="updateProfileCode_countdown" value="250"> characters left.
319 </div>
320 <input type="hidden" id="previousUpdateProfileCode"/>
321 </div>
322 </div>
323 <div class="control-group span2">
324 <label for="update_profile_start_date" class="control-label-required">Start Date</label>
325 <div class="alert alert-error hide" id="clone_start_date_error"></div>
326 <div class="controls">
327 <div class="input-append" id="update_start_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
328 <input class="input-medium" id="update_profile_start_date" name="update_profile_start_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('update_start_date','update_profile_start_date');"></i></span>
329 </div>
330 </div>
331 </div>
332 <div class="control-group span2">
333 <label for="update_profile_end_date" class="control-label-required">End Date</label>
334 <div class="alert alert-error hide" id="clone_end_date_error"></div>
335 <div class="controls">
336 <div class="input-append" id="update_end_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
337 <input class="input-medium" id="update_profile_end_date" name="update_profile_end_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('update_end_date','update_profile_end_date');"></i></span>
338 </div>
339 </div>
340 </div>
341 <div class="control-group span2">
342 <label for="update_profile_end_date" class="control-label-required">Menu Cycle</label>
343 <div class="alert alert-error hide" id="menu_cycle_error"></div>
344 <div class="controls">
345 <select id="menu_cycle_dropdown" class="input-medium"></select>
346 </div>
347 </div>
348 </div>
349 <div class="row-fluid hide" id="clonePlanTypeSelectRowContainer">
350 <div class="control-group span4">
351 <input type="hidden" id="updatePlanType" value=""/>
352 <label class="control-label-required">Plan Type</label>
353 <div class="controls" id="clonePlanTypeSelectContainer"></div>
354 </div>
355 </div>
356 <div class="row-fluid">
357 <div class="control-group span8">
358 <label class="radio inline"> <input type="radio" name="updatePlanRadios" id="updatePlanRadiosClone" value="Clone" onclick="enableUpdateProfileCode();"> Clone </label>
359 <label class="radio inline"> <input type="radio" name="updatePlanRadios" id="updatePlanRadiosProduction" value="Production" onclick="enableUpdateEntirePlanBtn();"><span id="updatePlanRadiosProductionText">Production</span></label>
360 <label class="radio inline"> <input type="radio" disabled name="updatePlanRadios" id="updatePlanRadiosDevelopment" value="Development" onclick="enableUpdateEntirePlanBtn();"> Development </label>
361 <label class="radio inline"> <input type="radio" disabled name="updatePlanRadios" id="updatePlanRadiosArchive" value="Archive" onclick="enableUpdateEntirePlanBtn();"> Archive </label>
362 </div>
363 </div>
364 <div class="row-fluid hide" id="cloneCommentContainer">
365 <div class="control-group">
366 <label for="update_profile_start_date" class="control-label-required">Comment</label>
367 <div class="controls">
368 <textarea class="input-xxlarge"
369 name="cloneComment"
370 id="cloneComment"
371 onKeyDown="limitText(this.id,256);"
372 onKeyUp="limitText(this.id,256);"></textarea>
373 <div class="help-inline">
374 <input disabled type="text" class="input-mini" id="cloneComment_countdown" value="256"> characters left. <span class="alert alert-error hide" id="cloneComment_error"></span>
375 </div>
376 </div>
377 </div>
378 </div>
379 <div class="row-fluid">
380 <div class="control-group">
381 <input type="button" onclick="cancelUpdate();" id="cancelUpdateBtn" name="cancelUpdateBtn" class="btn btn-danger btn-small" value="Cancel"/>
382 <input type="button" onclick="updateEntirePlan('Check');" id="updateEntirePlanBtn" name="updateEntirePlanBtn" class="btn btn-primary btn-small" value="Continue"/>
383 </div>
384 </div>
385 <input type="hidden" name="update_profile_id" id="update_profile_id" value="19"/>
386 <input type="hidden" id="hidden_plan_retro_date" value="<?php echo $planRetroDate[0]->retro_plan_date; ?>"/>
387 <input type="hidden" name="can_clone_name" id="can_clone_name"/>
388 <input type="hidden" name="can_clone" id="can_clone"/>
389 <input type="hidden" name="can_rename" id="can_rename"/>
390 <input type="hidden" name="can_archive" id="can_archive"/>
391 <input type="hidden" name="can_production" id="can_production"/>
392 <input type="hidden" name="profile_associate_id" id="profile_associate_id"/>
393 <input type="hidden" name="has_dev" id="has_dev"/>
394 </fieldset>
395 <div id="preUpdateContainer" class="hide">
396 <table id="preUpdateTable" class="table table-bordered table-striped table-condensed" style="width:95%">
397 <thead>
398 <tr>
399 <th>Description</th>
400 <th width="20%">Comment</th>
401 <th width="8%">Version</th>
402 <th width="8%">Start Date</th>
403 <th width="8%">End Date</th>
404 <th width="30%">Changes</th>
405 </tr>
406 </thead>
407 <tbody></tbody>
408 </table>
409 </div>
410</div>
411<div class="well hide" style="width:98%" id="planTable">
412 <table id="myTable2" class="table table-bordered table-striped table-condensed" style="width:95%">
413 <thead>
414 <tr>
415 <th width="1%"> </th>
416 <th width="1%" id="managePlansLink" class="hide"> </th>
417 <th width="1%"> </th>
418 <th width="18%">Code</th>
419 <th width="10%">Code</th>
420 <th width="3%">Type</th>
421 <th width="20%">Comment</th>
422 <th width="1%"> </th>
423 <th width="1%">Version</th>
424 <th width="10%">Class</th>
425 <th width="4%">Start Date</th>
426 <th width="4%">End Date</th>
427 <th width="7%">Date Last Modified</th>
428 <th width="1%"> </th>
429 <th width="6%">Last Updated By</th>
430 <th width="8%">Service Type</th>
431 </tr>
432 </thead>
433 <tbody></tbody>
434 </table>
435</div>
436<div class="well" style="width:98%" id="profileTable">
437 <table id="myTable" class="table table-bordered table-striped table-condensed" style="width:95%">
438 <thead>
439 <tr>
440 <th width="1%"> </th>
441 <th width="13%">Code</th>
442 <th width="3%">Type</th>
443 <th width="45%">Description</th>
444 <th width="15%">Class</th>
445 <th width="8%">Start Date</th>
446 <th width="8%">End Date</th>
447 <th width="8%">Author</th>
448 </tr>
449 </thead>
450 <tbody></tbody>
451 </table>
452</div>
453<div class="well hide" id="menuTree" style="width:98%">
454 <fieldset>
455 <div class="row-fluid">
456 <div class="control-group span4"><label for="profile_code" id="newProfileCodeLable"
457 class="control-label-required">Description</label>
458 <div class="controls"><input class="input-xxlarge" id="profile_code" name="profile_code" type="text"
459 onKeyDown="profileCodeValid(this.value,'createButton','newProfileCodeLable');"
460 onKeyUp="profileCodeValid(this.value,'createButton','newProfileCodeLable');"/>
461 </div>
462 <div class="alert alert-error hide" id="profile_code_error"></div>
463 </div>
464 <div class="control-group span2">
465 <label for="profile_start_date" class="control-label-required">Start Date</label>
466 <div class="controls">
467 <div class="input-append" id="start_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
468 <input class="input-medium" id="profile_start_date" name="profile_start_date" type="text"><span
469 class="add-on"><i class="icon-calendar"
470 onclick="fn_datePicker('start_date','profile_start_date');"></i></span>
471 </div>
472 </div>
473 <div class="alert alert-error hide" id="start_date_error"></div>
474 </div>
475 <div class="control-group span2">
476 <label for="profile_end_date" class="control-label-required">End Date</label>
477 <div class="controls">
478 <div class="input-append" id="end_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd"><input
479 class="input-medium" id="profile_end_date" name="profile_end_date" type="text"
480 value="2099/12/31"><span class="add-on"><i class="icon-calendar"
481 onclick="fn_datePicker('end_date','profile_end_date');"></i></span>
482 </div>
483 </div>
484 <div class="alert alert-error hide" id="end_date_error"></div>
485 </div>
486 <div class="control-group span2"><label class="control-label-required">Plan Type</label>
487 <div class="controls" id="createPlanTypeSelectContainer"></div>
488 </div>
489 <div class="control-group span2"><label class="control-label-required">Menu Cycle</label>
490 <select id="create_menu_cycle_dropdown" class="input-medium"></select>
491 </div>
492 </div>
493
494 <input type="hidden" name="hidden_profile_start_date" id="hidden_profile_start_date" value=""/>
495 <input type="hidden" name="hidden_profile_end_date" id="hidden_profile_end_date" value=""/>
496 <input type="hidden" name="hidden_profile_id" id="hidden_profile_id" value=""/>
497 <input type="hidden" name="hidden_profile_class" id="hidden_profile_class" value=""/>
498 </fieldset>
499</div>
500<script>
501 var userDetails = JSON.parse(sessionStorage['userDetails']);
502 var user_id = parseFloat(userDetails['userID']);
503 var groupDetails = JSON.parse(sessionStorage['groupid']);
504 var group_id = parseFloat(groupDetails);
505 $.getJSON(base_url + "index.php/api/mpd/get_regions/group_id/" + group_id + "/user_id/" + user_id + "/" + api_key + "format/json", function(data) {
506 $.each(data, function(i,v){
507 $('#menuTree').append('<div class="row-fluid profileCreateSuppliers" style="border-style:dotted;border-color:#cccccc;border-width:1px;">' +
508 '<div class="span1" style="padding:5px;">' +
509 '<label class="checkbox"><input onclick="showRegionStations(' + data[i]['region_id'] + ');" ' +
510 'type="checkbox" class="region" id="region_' + data[i]['region_id'] + '" value="' + data[i]['region_id'] + '">' + data[i]['region_description'] + '</label>' +
511 '</div>' +
512 '<div class="span11" id="supplier_' + data[i]['region_id'] + '" style="vertical-align:text-top;border-style:none;"></div>' +
513 '</div>');
514 });
515 });
516</script>
517<div class="well hide" id="results" style="width:98%"></div>
518<form id="ServiceRouteForm">
519 <div id="planServices" class="hide well" style="width:98%">
520 <div class="row-fluid">
521 <div id="profileHeader"></div>
522 </div>
523 <div class="row-fluid">
524 <div class="span7" id="planHeaders"></div>
525 <div class="span5" id="routeHeader"></div>
526 </div>
527 <div class="row-fluid">
528 <div id="SummaryTableConainer" class="hide">
529 <table id="SummaryTable" class="table table-bordered table-condensed" style="width:99%;">
530 <thead>
531 <tr>
532 <th> </th>
533 <th width="2%"><i class="icon-remove-sign"></i></th>
534 <th>Route <span id="downloadBudgetLink"></span></th>
535 <th width="5%">Aircraft</th>
536 <th width="8%">Pax No</th>
537 <th width="8%" class="nonaircraftHeader">Special Meals</th>
538 <th width="8%" class="nonaircraftHeader">Special Meal Cost</th>
539 <th width="8%" class="nonaircraftHeader"> </th>
540 <th width="7%">Budget</th>
541 <th width="7%">Actual Cost</th>
542 <th width="7%">Price Difference</th>
543 <th width="7%">Variance %</th>
544 <th width="7%">Total Value</th>
545 <th width="7%">Tax</th>
546 <th width="1%">Currency</th>
547 </tr>
548 </thead>
549 <tbody></tbody>
550 </table>
551 </div>
552 <div id="TaxTableContainer" class="hide">
553 <table id="TaxTable" class="table table-bordered table-striped table-condensed" style="width:100%;margin-left: 0px;">
554 <thead>
555 <tr>
556 <th colspan="2"> </th>
557 <th colspan="3" style="text-align:center"><span class="badge badge-info">1</span></th>
558 <th colspan="3" style="text-align:center"><span class="badge badge-info">2</span></th>
559 <th colspan="3" style="text-align:center"><span class="badge badge-info">3</span></th>
560 <th colspan="3" style="text-align:center"><span class="badge badge-info">4</span></th>
561 <th colspan="3" style="text-align:center"><span class="badge badge-info">5</span></th>
562 <th> </th>
563 </tr>
564 <tr>
565 <th width="1%"> </th>
566 <th>Service</th>
567 <th width="5%">Tax Code</th>
568 <th width="5%">Rate %</th>
569 <th width="5%">Order</th>
570 <th width="5%">Tax Code</th>
571 <th width="5%">Rate %</th>
572 <th width="5%">Order</th>
573 <th width="5%">Tax Code</th>
574 <th width="5%">Rate %</th>
575 <th width="5%">Order</th>
576 <th width="5%">Tax Code</th>
577 <th width="5%">Rate %</th>
578 <th width="5%">Order</th>
579 <th width="5%">Tax Code</th>
580 <th width="5%">Rate %</th>
581 <th width="5%">Order</th>
582 <th width="5%">Calc Check</th>
583 </tr>
584 </thead>
585 <tbody></tbody>
586 </table>
587 </div>
588 <div id="ProvisioningSummaryTableConainer" class="hide" style="overflow: auto; height:500px;">
589 <table id="ProvisioningSummaryTable" class="table table-bordered table-striped table-condensed" style="margin-left: 0px;">
590 <thead>
591 <tr id="provTableHeaderFirst">
592 <th width="3%" class="provsummary_spmlServiceOption hide"> </th>
593 <th width="3%" class="prov_service_code_header"> </th>
594 <th class="service_description" id="serviceFilter" style="width:300px;"> </th>
595 <th width="3%" class="provsummary_packType"> </th>
596 <th width="3%" class="provsummary_provCalc"> </th>
597 <th width="3%" class="provsummary_provType"> </th>
598 </tr>
599 <tr id="provTableHeaderSecond">
600 <th width="3%" class="provsummary_spmlServiceOption hide">Service</th>
601 <th width="3%" class="prov_service_code_header">Service Code</th>
602 <th class="service_description">Service Description</th>
603 <th width="3%" class="provsummary_packType">Pack Type</th>
604 <th width="3%" class="provsummary_provCalc">Prov Calc</th>
605 <th width="3%" class="provsummary_provType">Prov Type</th>
606 </tr>
607 </thead>
608 <tbody></tbody>
609 </table>
610 </div>
611 <div id="PLP_ProvisioningSummaryTableConainer" class="hide" style="overflow: auto; height:500px;">
612 <table id="PLP_ProvisioningSummaryTable" class="table table-bordered table-striped table-condensed" style="margin-left: 0px;">
613 <thead>
614 <tr id="PLP_provTableHeaderFirst">
615 <th width="3%" class="provsummary_spmlServiceOption hide"> </th>
616 <th width="3%" class="prov_service_code_header"> </th>
617 <th class="service_remarks" id="serviceFilter" style="width:300px;"> </th>
618 <th class="service_description" id="serviceFilter" style="width:300px;"> </th>
619 <th width="3%" class="provsummary_provCalc"> </th>
620 <th width="3%" class="provsummary_provType"> </th>
621 </tr>
622 <tr id="PLP_provTableHeaderSecond">
623 <th width="3%" class="provsummary_spmlServiceOption hide">Service</th>
624 <th width="3%" class="prov_service_code_header">Supplier Code</th>
625 <th class="service_remarks">Service Description</th>
626 <th class="service_description">Service Description</th>
627 <th width="3%" class="provsummary_provCalc">Prov Calc</th>
628 <th width="3%" class="provsummary_provType">Prov Type</th>
629 </tr>
630 </thead>
631 <tbody></tbody>
632 </table>
633 </div>
634 <div id="TrackerTableConainer" class="hide">
635 <div class="span12">
636 <table id="TrackerTable" class="table table-bordered table-striped table-condensed" style="width:99%;">
637 <thead>
638 <tr>
639 <th> </th>
640 <th>Created By</th>
641 <th>Date Created</th>
642 <th width="50%">Comment</th>
643 <th width="3%"> </th>
644 </tr>
645 </thead>
646 <tbody></tbody>
647 </table>
648 </div>
649 <div class="span6" id="trackerDetailsDiv">
650 <!--<div class="hide" id="trackerDetailsWrapper">
651 <table id="TrackerDetailsTable" class="table table-bordered table-condensed" style="width:99%;">
652 <thead>
653 <tr>
654 <th> </th>
655 <th id="ServiceHeader">Service</th>
656 <th>Changed</th>
657 <th id="PreviousValueHeader">Previous Value</th>
658 <th id="NewValueHeader">New Value</th>
659 </tr>
660 </thead>
661 <tbody></tbody>
662 </table>
663 </div>-->
664 </div>
665 </div>
666 <div id="ServicesByRouteTableConainer">
667 <div class="accordion" style="width:99%;" id="hiddenAccordion">
668 <div class="accordion-group">
669 <div class="accordion-heading">
670 <a class="accordion-toggle" data-toggle="collapse" data-parent="#hiddenAccordion" href="#collapseTwo">Hidden Service Rows</a>
671 </div>
672 <div id="collapseTwo" class="accordion-body collapse">
673 <div class="accordion-inner">
674 <table id="HiddenServicesByRouteTable" class="table table-bordered table-striped table-condensed" style="width:100%;">
675 <thead>
676 <tr>
677 <th width="30%">Service/Remarks</th>
678 <th width="8%">Service Code</th>
679 <th width="30%">Service Description</th>
680 <th width="8%">Pack Type</th>
681 <th width="3%">Prov Calc</th>
682 <th width="3%">Prov Type</th>
683 <th width="3%">Prov Rate</th>
684 <th width="3%">Min</th>
685 <th width="3%">Max</th>
686 <th width="3%">Set</th>
687 <th width="3%">Price<span id="currency_price"></span></th>
688 <th width="3%">QTY</th>
689 <th width="3%" class="hide">Tax</th>
690 <th width="3%">Value<span id="currency_value"></span></th>
691 <th width="3%">Price P/Pax</th>
692 </tr>
693 </thead>
694 <tbody></tbody>
695 </table>
696 </div>
697 </div>
698 </div>
699 </div>
700 <div class="clearfix">
701 <table id="ServicesByRouteTable" class="hide table table-bordered table-striped table-condensed" style="width:100%;">
702 <thead>
703 <tr>
704 <th width="1%"><i title="Remove" class="icon-remove-sign"></i></th>
705 <th width="30%">Service/Remarks</th>
706 <th width="8%">Service Code</th>
707 <th width="30%">Service Description</th>
708 <th width="8%">Pack Type</th>
709 <th width="3%">Prov Calc</th>
710 <th width="3%">Prov Type</th>
711 <th width="4%">Prov Rate</th>
712 <th width="3%">Min</th>
713 <th width="3%">Max</th>
714 <th width="3%">Set</th>
715 <th width="3%">Price<span id="currency_price"></span></th>
716 <th width="3%">QTY</th>
717 <th width="3%">Tax</th>
718 <th width="3%">Value<span id="currency_value"></span></th>
719 <th width="3%">Price P/Pax</th>
720 <th width="1%"> </th>
721 </tr>
722 </thead>
723 <tbody></tbody>
724 </table>
725 </div>
726 </div>
727 <div id="pricing_container"></div>
728 <div id="SpmlSummaryTableConainer"></div>
729 <div id="SubplanContainer" style="height: 600px; overflow: auto;" class="hide">
730 </div>
731 </div>
732 </div>
733</form>
734<!-- Modal: Save Production Plan -->
735
736<div id="productionPlanSaveChanges" class="modal hide fade">
737 <div class="modal-header">
738 <div id="saveModalHeader"><h3>Changes detected.</h3><small>Would you like to save before proceeding?</small></div>
739 </div>
740 <?php //if ($this->session->userdata('user_id') == 1) { ?>
741 <div class="modal-body">
742 <div class="row-fluid hide applyRetroContainer">
743 <div class="span6">Start Date <span class="label label-important hide retroStartDateError">Invalid Date</span></div>
744 <div class="span6">
745 <div class="controls">
746 <div class="input-append" id="retro_start_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
747 <input class="input-medium" id="retro_profile_start_date" name="retro_profile_start_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_start_date','retro_profile_start_date');"></i></span>
748 </div>
749 </div>
750 </div>
751 </div>
752 <div class="row-fluid hide applyRetroContainer">
753 <div class="span6">End Date <span class="label label-important hide retroEndDateError">Invalid Date</span></div>
754 <div class="span6">
755 <div class="controls">
756 <div class="input-append" id="retro_end_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
757 <input class="input-medium" id="retro_profile_end_date" name="retro_profile_end_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_end_date','retro_profile_end_date');"></i></span>
758 </div>
759 </div>
760 </div>
761 </div>
762 <div class="row-fluid hide applyRetroContainer">
763 <div class="span6">Would you like to apply changes retrospectively?</div>
764 <div class="span6"><input type="checkbox" id="applyRetro"></div>
765 </div>
766 </div>
767 <?php //} ?>
768 <div class="modal-footer"><span id="proceedToNotify" class="hide"></span><span class="hide" id="proceedTo"></span><button class="btn" data-dismiss="modal" aria-hidden="true" id="cancelChanges">No</button><button class="btn btn-primary" aria-hidden="true" id="saveChanges">Save changes</button></div>
769</div>
770<!-- End -->
771<div id="subPlanSaveChanges" class="modal hide fade">
772 <div class="modal-header">
773 <div><h3>Apply Changes Retrospectively.</h3></div>
774 </div>
775 <?php //if ($this->session->userdata('user_id') == 1) { ?>
776 <div class="modal-body">
777 <div class="row-fluid applySubplanRetroContainer hide">
778 <div class="span6">Would you like to apply changes retrospectively?</div>
779 <div class="span6"><input type="checkbox" id="applySubplanRetro"></div>
780 </div>
781 <div class="row-fluid applySubplanRetroContainer hide">
782 <div class="span6">Start Date <span class="label label-important hide retroStartDateError">Invalid Date</span></div>
783 <div class="span6">
784 <div class="controls">
785 <div class="input-append" id="retro_subplan_start_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
786 <input class="input-medium" id="retro_subplan_profile_start_date" name="retro_subplan_profile_start_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_subplan_start_date','retro_subplan_profile_start_date');"></i></span>
787 </div>
788 </div>
789 </div>
790 </div>
791 <div class="row-fluid applySubplanRetroContainer hide">
792 <div class="span6">End Date <span class="label label-important hide retroEndDateError">Invalid Date</span></div>
793 <div class="span6">
794 <div class="controls">
795 <div class="input-append" id="retro_subplan_end_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
796 <input class="input-medium" id="retro_subplan_profile_end_date" name="retro_subplan_profile_end_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_subplan_end_date','retro_subplan_profile_end_date');"></i></span>
797 </div>
798 </div>
799 </div>
800 </div>
801 </div>
802 <?php //} ?>
803 <div class="modal-footer">
804 <a href="#" onclick="MPLSubplanComponent.saveSubplanChanges(); return false;" class="btn btn-primary" id="subplanRetroSaveButton">Save</a>
805 </div>
806</div>
807<div id="trackerPostSaveModal" class="modal hide fade" data-keyboard="false" data-backdrop="static">
808 <div class="modal-header"><h3>Generating Tracker</h3></div>
809 <div class="modal-body">
810 <div class="row-fluid" style="text-align:center;"><img src="<?php echo base_url();?>assets/css/img/spinner.gif"/></div>
811 <div class="row-fluid" style="text-align:center;">This may take a few minutes depending on your connection speed.</div>
812 <div class="row-fluid" style="text-align:center;">You will be returned to the service plan once complete.</div>
813 </div>
814</div>
815<div id="trackerSaveModal" class="modal hide fade" style="top:50%; width:40vw;">
816 <div class="modal-header">
817 <div id="saveModalHeader"><h3>Notify/Tracker</h3></div>
818 </div>
819 <div id="trackerSaveChangesBody" class="modal-body">
820 <div id="tasksPane"></div>
821 <form class="form-horizontal" id="notifyForm">
822 <div id="notifyWrapper" class="hide well">
823 <div class="row-fluid"><table id="users" class="table table-bordered table-striped table-condensed" style="width:100%;margin-left: 0px;"><thead class=""><tr><th>Notify</th><th>ToDo</th><th>User</th><th>Organisation</th><th>Position</th></tr></thead><tbody></tbody></table></div>
824 <div class="row-fluid hide" id="notifyUserDiv"><div class="span1">Notify:</div>
825 <div class="span11" id="notifyUserList"></div>
826 </div>
827 <div class="row-fluid hide" id="todoUserDiv">
828 <div class="span1">Todo:</div>
829 <div class="span11" id="todoUserList"></div>
830 </div>
831 <hr/>
832 <div class="row-fluid">
833 <div class="control-group"><label for="due_date" class="control-label-required">Due Date:</label>
834 <div class="controls">
835 <div class="input-append" id="due_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd"><input class="input-medium" id="profile_due_date" name="profile_due_date" type="text" required><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('due_date','profile_due_date');"></i></span></div>
836 <div class="alert alert-error hide" id="due_date_error"></div>
837 </div>
838 </div>
839 <div class="control-group"><label for="todoMsg" class="control-label-required">ToDo:</label>
840 <div class="controls"><textarea class="input-xlarge" name="todoMsg" id="todoMsg" rows="3" onKeyDown="limitText(this.id,250);" onKeyUp="limitText(this.id,250);"></textarea>
841 <div class="help-inline"><input disabled type="text" class="input-mini" id="todoMsg_countdown" value="250"> characters left.</div>
842 <div class="alert alert-error hide" id="todoMsg_error"></div>
843 </div>
844 </div>
845 </div>
846 </form></div>
847 </div>
848 <div class="modal-footer"><span class="hide" id="proceedTo"></span><button class="btn" data-dismiss="modal" aria-hidden="true">No</button><button class="btn btn-primary" aria-hidden="true" id="saveTrackerBtn" onclick="saveTracker()">Send</button></div>
849</div>
850<!-- Modal: Clone Production Plan -->
851<div id="cloneProductionPlan" class="modal hide fade" style="width:50%;height:70%;margin:5px;top:25px;left:25%">
852 <div class="modal-header"><h3>Are you sure you wish to clone this route?</h3><span id="aircraftCloneOptions"></span></div>
853 <div id="cloneProductionPlanBody" class="modal-body" style="height:350px;overflow:auto">
854 <div id="nonAircraftClone" class="span6"><p id="referenceOriginalNameContainer"><label class="checkbox inline"><input class="hide" type="checkbox" id="referenceOriginalName" name="referenceOriginalName" value=""/><input checked onclick="associateRoutes();" type="checkbox" id="associateRoutes" name="associateRoutes" value=""/> Associate Route</label></p><br/><p class="optionalHeadingContainer">The new clone header will be:</p><p class="optionalHeadingContainer"><input type="hidden" id="optionalHeadingID"/><input type="text" class="input-large" id="optionalHeading" name="optionalHeading"/><input type="hidden" class="input-large" id="originalHeading" name="originalHeading"/></p></div>
855 <div id="aircraftClone" class="span6 hide"><div class="row-fluid"><strong>Aircraft</strong></strong></div><div class="row-fluid" id="aircraftCloneSelectors"></div></div>
856 </div>
857 <div class="modal-footer" style="border-radius: 0; bottom:0px; position:absolute; width:95%;"><span class="hidden" id="cloneID"></span><button class="btn" onclick="closeCloneRouteModal();">No</button><button class="btn btn-primary" disabled id="clonePlan">Clone Route</button></div>
858</div>
859<!-- End -->
860<!-- Modal: Delete Production Plan -->
861<div id="deleteProductionPlan" class="modal hide fade"><div class="modal-header"><h3 id="deleteModalHeader"></h3></div><div id="deleteProductionPlanBody" class="modal-body"></div><div id="deleteModalFooter" class="modal-footer"></div></div>
862<!-- End -->
863<!-- Modal: Delete Whole Production Plan -->
864<div id="deleteWholeProductionPlan" class="modal hide fade"><div class="modal-header"><h3>Are you sure?</h3></div><div class="modal-body">This action is non-recoverable and your plan will be lost forever.</div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><button class="btn btn-danger" id="deleteWholePlan">Delete</button></div></div>
865<!-- End -->
866<!-- Modal: Delete Whole Production Plan -->
867<div id="undoTrackerProceedModal" class="modal hide fade"><div class="modal-header"><h3>Are you sure?</h3></div><div class="modal-body"><p>This action is non-recoverable and this tracker will be lost forever.</p><div class="alert"> <strong>Warning!</strong> This only removes the tracker generated. It does not undo any changes you made to the plan.</div></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Cancel</button><button class="btn btn-danger" id="undoTrackerProceedBtn">Delete</button></div></div>
868<!-- End -->
869<!-- Modal: Notify Production Status Update -->
870<div id="notifyUsersModal" class="modal hide fade"><div class="modal-header"><h3>Notify Users</h3></div><div id="notifyUsersBody" class="modal-body"><div class="well"><table id="existingUsers" class="table table-bordered table-striped table-condensed" style="width:100%;margin-left: 0px;"><thead><tr><th width="5%"> </th><th>Firstname</th><th>Lastname</th><th>Email</th><th>Organisation</th><th>Position</th></tr></thead><tbody></tbody></table></div></div><div id="notifyUsersModalFooter" class="modal-footer"></div></div>
871<!-- End -->
872<!-- Modal: Tracker -->
873<div id="trackerModal" class="modal hide fade"><div class="modal-header"><h3>Tracker.</h3></div><div id="trackerModalBody" class="modal-body"></div><div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true">Close</button></div></div>
874<!-- End -->
875<!-- Modal: Component -->
876<div id="service_plan_component_modal" class="modal hide fade" style="">
877 <div class="modal-header"><h3>Service Plan Profile - Component Maintenance</h3></div>
878 <div class="modal-body">
879 <form name="ServiceComponetForm" id="ServiceComponetForm">
880 <div id="componentTableContainer"></div>
881 </form>
882 </div>
883 <div class="modal-footer">
884 <div class="row-fluid">
885 <div class="span10 ComponentsRetro" style="visibility: hidden">
886 <div class="span3">Start Date <span class="label label-important hide retroStartDateError">Invalid Date</span></div>
887 <div class="span2">
888 <div class="controls">
889 <div class="input-append" id="retro_components_start_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
890 <input class="input-medium" id="retro_components_profile_start_date" name="retro_components_profile_start_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_components_start_date','retro_components_profile_start_date');"></i></span>
891 </div>
892 </div>
893 </div>
894 <div class="span2">End Date <span class="label label-important hide retroEndDateError">Invalid Date</span></div>
895 <div class="span2">
896 <div class="controls">
897 <div class="input-append" id="retro_components_end_date" data-date="12-02-2012" data-date-format="yyyy/mm/dd">
898 <input class="input-medium" id="retro_components_profile_end_date" name="retro_components_profile_end_date" type="text"><span class="add-on"><i class="icon-calendar" onclick="fn_datePicker('retro_components_end_date','retro_components_profile_end_date');"></i></span>
899 </div>
900 </div>
901 </div>
902 <div class="span3 pull-right">
903 Apply retrospectively? <input type="checkbox" id="applyComponentsRetro">
904 </div>
905 </div>
906 <div class="span2">
907 <button class="btn" data-dismiss="modal" aria-hidden="true" onclick="servicePlanComponent.cancel();">Cancel</button>
908 <button class="btn btn-primary" id="saveServicePlanComponentsBtn" onclick="servicePlanComponent.save();">Save</button>
909 </div>
910 </div>
911 </div>
912</div>
913<!-- End -->
914<!-- Modal: Associate -->
915<div id="associate_modal" class="modal hide fade">
916 <div class="modal-header">
917 <h3 id="associate_modal_header"></h3>
918 <span id="associate_modal_type" class="hide"></span><span id="associate_modal_profile_id" class="hide"></span><span id="associate_modal_supplier_id" class="hide"></span>
919 </div>
920 <div id="associate_modal_body" class="modal-body">
921 </div>
922 <div class="modal-footer">
923 <a href="#" class="btn" data-dismiss="modal" aria-hidden="true" id="cancel_save_profile_associate">Cancel</a>
924 <a href="javascript:save_profile_associate()" class="btn btn-primary">Save</a>
925 </div>
926</div>
927<!-- End -->
928<div id="spml_row_populator_modal" class="modal hide fade" style="width: 90%;height: 520px;margin: 5px;top: 100px;left: 100px;">
929 <div id="spml_row_populator_body" style="overflow-y: auto;max-height: 90%;padding: 15px;"></div>
930</div>
931<!-- Modal: SubPlan create -->
932<div id="mpl_subplan_modal" class="modal hide fade">
933 <div class="modal-header">
934 <h3>Sub Plan</h3>
935 </div>
936 <div class="modal-body">
937 <label for="subplan_name_input" class="control-label-required">Sub Plan Description</label>
938 <input type="text" id="subplan_name_input" class="input-large" value="" placeholder="Enter Subplan name">
939 </div>
940 <div class="modal-footer">
941 <a href="#" class="btn" data-dismiss="modal" aria-hidden="true" id="create_subplan_button_cancel">Cancel</a>
942 <a href="#" class="btn btn-primary" id="create_subplan_button_create" onclick="javascript:MPLSubplanComponent.createSubplanSave();">Create</a>
943 </div>
944</div>
945<!-- End -->
946<!-- Modal: Subplan changes -->
947<div id="subplanSaveChanges" class="modal hide fade">
948 <div class="modal-header">
949 <div id="subplanSaveModalHeader"><h3>Changes detected.</h3><small>Would you like to save before proceeding?</small></div>
950 </div>
951 <div class="modal-footer"><button class="btn" data-dismiss="modal" aria-hidden="true" id="cancelSubplanChanges" onclick="MPLSubplanComponent.cancelSubplanChanges();">No</button><button class="btn btn-primary" aria-hidden="true" id="saveSubplanChanges" onclick="MPLSubplanComponent.saveSubplanChanges();">Save changes</button></div>
952</div>
953<!-- End -->
954<!-- Modal: Subplan changes -->
955<div id="addRouteToRouteRegion" class="modal hide fade">
956 <div class="modal-header">
957 <div id="addRouteToRouteRegionHeader"><h3>Are you sure?</h3></div>
958 </div>
959 <div class="modal-body">
960 <div id="addRouteToRouteRegionBody">All routes that belong to this route region will be grouped together.</div>
961 </div>
962 <div class="modal-footer"><a class="btn" data-dismiss="modal" aria-hidden="true">No</a><a class="btn btn-primary" aria-hidden="true" id="addRouteToRouteRegionBtn">Save</a></div>
963</div>
964<!-- End -->
965<span id="service_option_div" class="hide" style="padding:0"></span>
966<span id="packing_type_div" class="hide"></span>
967<span id="special_meal_type_div" class="hide"></span>
968<span id="aircraft_type_div" class="hidden"></span>
969<span id="profile_aircraft_type_div" class="hide"></span>
970<span id="profile_spml_type_div" class="hide"></span>
971<span id="gl_code_div" class="hide"></span>
972<span id="route_regions_div" class="hide"></span>
973<input type="hidden" id="getPlanId" value="<?php echo (isset($_GET['plan_id']) ? intval($_GET['plan_id']) : 0) ?>"/>
974<input type="hidden" id="getSupplierId" value="<?php echo (isset($_GET['plan_id']) ? intval($_GET['supplier_id']) : 0) ?>"/>
975<input type="hidden" id="getHeaderId" value="<?php echo (isset($_GET['plan_id']) ? intval($_GET['header_id']) : 0) ?>"/>
976<input type="hidden" id="getToDo" value="<?php echo (isset($_GET['todo_id']) ? intval($_GET['todo_id']) : 0) ?>"/>
977<input type="hidden" id="getDepartureID" value="<?php echo (isset($_GET['departure_id']) ? intval($_GET['departure_id']) : 0) ?>"/>
978<link href="<?php echo base_url(); ?>assets/css/promeus/admin.css" rel="stylesheet">
979<link href="<?php echo base_url(); ?>assets/css/promeus/base.css" rel="stylesheet">
980
981<script src="<?php echo base_url(); ?>assets/js/views/dist/imc_service_plan.js"></script>
982<script src="<?php echo base_url(); ?>assets/js/views/dist/imc_init.js"></script>
983<script src="<?php echo base_url(); ?>assets/js/views/dist/imc_pricing.js"></script>
984<!--<script src="--><?php //echo base_url(); ?><!--assets/js/views/dist/imc_service_plan_pricing.js"></script>-->
985
986</div>
987<script>
988 $(document).ready(function () {
989
990 var localViewOptions = (localStorage['viewOptionsPricing'] ? localStorage['viewOptionsPricing'] : '');
991 //if ($.trim(localViewOptions) == '') localStorage['viewOptionsPricing'] = 'pricingRemarks,';
992 //else if (localViewOptions.indexOf('pricingRemarks') < 0) localStorage['viewOptionsPricing'] = 'pricingRemarks,' + localViewOptions;
993
994 //console.log(localViewOptions.indexOf('pricingRemarks') < 0);
995 $.fn.sortList = function() {
996 var mylist = $(this);
997 var listitems = $('li', mylist).get();
998 listitems.sort(function(a, b) {
999 var compA = $(a).text().toUpperCase();
1000 var compB = $(b).text().toUpperCase();
1001 return (compA < compB) ? -1 : 1;
1002 });
1003 $.each(listitems, function(i, itm) {
1004 mylist.append(itm);
1005 });
1006 }
1007 $.getScript(base_url + "assets/js/views/mpd_profile/specialMeals.js"); $.getScript(base_url + "assets/js/views/mpd_profile/pricingComment.js");
1008 $.getScript(base_url + "assets/js/views/mpd_profile/aircraft.js");
1009 $.getScript(base_url + "assets/js/views/mpd_profile/tracker.js");
1010 $.getScript(base_url + "assets/js/views/mpd_profile/componentLevel.js");
1011 $.getScript(base_url + "assets/js/views/mpd_profile/subplan.js");
1012 $.getScript(base_url + "assets/js/views/mpd_profile/servicePlanRouteRegion.js");
1013 getProfileServiceOptions(); getProfilePackingType(); //getPlanServiceCodes();
1014 getAircraftType();getSpecialMealType();getGlCode();
1015 //getAllPlans();
1016 SSEV.remove();
1017 navPermissions.servicePlanNav();
1018 fixedScale.load();
1019 //$("input[type=text]").focus().select();
1020
1021 <?php $is_spml_redirect = false; ?>
1022
1023 <?php if(isset($_GET['plan_id'])) {
1024 if (intval($_GET['header_id']) != 0){
1025 ?>
1026 productionPlanTax.routeServices(<?php echo $_GET['plan_id'];?>,<?php echo $_GET['supplier_id'];?>);
1027 setTimeout(function() { createCourseTable(<?php echo $_GET['plan_id'];?>); }, 1000);
1028 <?php } else { ?>
1029 <?php if (isset($_GET['is_spml'])) $is_spml_redirect = true; ?>
1030 createCourseTable(<?php echo $_GET['plan_id'];?>);
1031 <?php }
1032 } else { ?>
1033 showExistingPlans();
1034 <?php } ?>
1035
1036 var tempScrollTop, currentScrollTop = 0;
1037 $('.dataTables_scrollBody').scroll(function() { currentScrollTop = $(this).scrollTop(); tempScrollTop = currentScrollTop;});
1038
1039 $('#cancelChanges').click(function() {
1040 SSEV.remove();
1041 var tabID = '';
1042 $('#secondary_menu > li').each(function(i,v){
1043 if ($(this).hasClass('active') == true)
1044 {
1045 tabID = $(this).attr('id');
1046 return false;
1047 }
1048 })
1049 var activeArr = tabID.split('_');
1050 if ($('#proceedTo').html() != '')
1051 {
1052 var id = $('#proceedTo').html();
1053 $('#isModified').remove();
1054 var dataPrimaryTabs = id.split('_');
1055
1056 if (dataPrimaryTabs[0] == 'getServiceProfiles' || dataPrimaryTabs[0] == 'showExistingPlans')
1057 {
1058 if (dataPrimaryTabs[0] == 'getServiceProfiles')
1059 getServiceProfiles();
1060 else
1061 showExistingPlans(0,parseFloat(dataPrimaryTabs[2]));
1062 }
1063 else
1064 {
1065 var data = ($('#' + id).attr('data'));
1066 if (data != undefined)
1067 {
1068 var dataArr = data.split(',');
1069 if ($.trim(dataArr[0]) == 'getServicesByPricing')
1070 getServicesByPricing(dataArr[1],dataArr[2]);
1071 else if ($.trim(dataArr[0]) == 'getSummary')
1072 showSummary(dataArr[1],dataArr[2]);
1073 else if ($.trim(dataArr[0]) == 'getProvSummary')
1074 showProvSummary(dataArr[1],dataArr[2]);
1075 else if ($.trim(dataArr[0]) == 'plpgetProvSummary')
1076 provSummaryPLP.provSummaryTable(dataArr[1],dataArr[2]);
1077 else if ($.trim(dataArr[0]) == 'getTax')
1078 productionPlanTax.facilities(dataArr[1],dataArr[2]);
1079 else if ($.trim(dataArr[0]) == 'getSubplan') {
1080 MPLSubplanComponent.subplanTabClicked();
1081 } else {
1082 getServicesByRoute(dataArr[1]);
1083 }
1084 }
1085 else getServicesByPricing(activeArr[1],activeArr[2]);
1086 }
1087 }
1088 else if(activeArr[0] == 'pricing') { $('#isModified').remove(); setTimeout(function() {getServicesByPricing(activeArr[1],activeArr[2])}, 1000);}
1089 $('#saveServices').addClass('disabled');
1090 $('#changeReason_countdown').val('250');
1091 $('#changeReason').val('');
1092 if (parseFloat($('#proceedToNotify').html()) == 1) modalTracker();
1093 });
1094 $('#saveChanges').click(function() {
1095 submitFormValues();
1096 });
1097
1098 $('#clonePlan').click(function() {
1099 $('#clonePlan').addClass('hide');
1100 $('#aircraftTabs').remove();
1101
1102 var cloneStr = $('#cloneID').html();
1103 var newCloneStr = cloneStr.replace(/[']/g,'');
1104 cloneArr = newCloneStr.split('|');
1105 $('#associativeRouteError').remove();
1106 var userDetails = JSON.parse(sessionStorage['userDetails']);
1107 var routeRegionID = $('#cloneRoute').attr('data-routeRegionID') ? parseInt($('#cloneRoute').attr('data-routeRegionID')) : 0;
1108 var obj = {};
1109 obj['header_id'] = parseFloat(cloneArr[2]);
1110 obj['routeRegionID'] = routeRegionID;
1111
1112 if ($('#aircraftCloneRadioAircraft').length > 0 && $('#aircraftCloneRadioAircraft').attr('checked') != undefined)
1113 {
1114 var aircraftStr = ''; $('.aircraftCloneCheckboxes').each(function(){ if ($(this).attr('checked') != undefined) aircraftStr += $(this).val() + ','; });
1115 obj['aircraft'] = aircraftStr;
1116 obj['user_id'] = userDetails['userID'];
1117 obj['changeReason'] = '';
1118 $('#cloneProductionPlan').modal('hide');
1119
1120 setTimeout(function() {
1121 $.ajax({
1122 type: 'PUT', contentType: 'application/json',
1123 url: base_url + 'index.php/api/mpd/clone_route_by_aircraft/' + api_key + 'format/json',dataType: "json", data: JSON.stringify(obj),
1124 success: function(data, textStatus, jqXHR){
1125 if ($('#routeDropDownContainer').is(":visible") && $('#routeDropDownContainer').hasClass('hasRouteRegionOnly')){
1126 updateRouteDropdown.get();
1127 return;
1128 }
1129 getServicesByRoute(parseFloat(cloneArr[2]));
1130 refreshRouteDropdown.get();
1131 },
1132 error: function(jqXHR, textStatus, errorThrown){ alert('error: ' + textStatus); }
1133 });
1134 }, 1000);
1135 }
1136 else
1137 {
1138 if ($('#referenceOriginalName').attr('checked') == undefined && $('#associateRouteDropdown').val() == ''){ $('#associateRouteContainer').after('<div id="associativeRouteError" class="alert alert-error">Value Required</div>'); return; }
1139 var associativeArr = $('#associateRouteDropdown').val().split('|');
1140 var referenceOriginalName = 1;
1141 obj['user_id'] = userDetails['userID'];
1142 obj['plan_id'] = parseFloat(cloneArr[0]);
1143 obj['supplier_id'] = parseFloat(cloneArr[1]);
1144 obj['route_heading'] = $('#optionalHeading').val();
1145 obj['refOriginalName'] = referenceOriginalName;
1146 obj['changeReason'] = '';//$('#changeReason').val();
1147 obj['associateDepart'] = parseFloat(associativeArr[0]);
1148 obj['associateArrive'] = parseFloat(associativeArr[1]);
1149 obj['associateFacility'] = parseFloat(associativeArr[2]);
1150 obj['associateFlight'] = $('#optionalHeadingID').val();
1151 var departurePassID = parseFloat(associativeArr[0]);
1152 var decimalPlaces = parseFloat(associativeArr[4]);
1153 var aircraft = ''; var routeHeader = $('#optionalHeading').val();
1154
1155 if(parseFloat($('#profile_associate').val()) == 1)
1156 {
1157 $('.aircraftCloneCheckboxes').each(function(i,v){ if ($(this).attr('checked') != undefined) aircraft += $(this).val() + ','; });
1158 obj['aircraft'] = aircraft;
1159 }
1160 $('#cloneProductionPlan').modal('hide');
1161
1162 //$('#subMenu_' + parseFloat(cloneArr[2])).after('<li id="cloneSpinner"><img src="' + base_url + 'assets/css/img/spinner.gif"/></li>');
1163 //console.log(base_url + 'index.php/api/mpd/clone_route/' + api_key + 'format/json');
1164 //console.log(JSON.stringify(obj));
1165 //return;
1166 setTimeout(function() {
1167 $.ajax({
1168 type: 'PUT',
1169 contentType: 'application/json',
1170 url: base_url + 'index.php/api/mpd/clone_route/' + api_key + 'format/json',
1171 dataType: "json",
1172 data: JSON.stringify(obj),
1173 success: function(data, textStatus, jqXHR){
1174 //if (parseInt($('#cloneRoute').attr('data-isRouteRegion')) == 1){
1175
1176 if ($('#routeDropDownContainer').is(":visible") && $('#routeDropDownContainer').hasClass('hasRouteRegionOnly')){
1177 updateRouteDropdown.get();
1178 return;
1179 }
1180 $('#cloneSpinner').remove();
1181 var budgetSummary = false; var idArr;
1182 $('#secondary_menu > li').each(function(){ if ($(this).hasClass('active') == true) { var idStr = $(this).attr('id'); var idArr = idStr.split('_'); if (idArr[0] == 'summary'){ budgetSummary = true; showSummary(idArr[1],idArr[2]); return false;} } });
1183 if (budgetSummary == false) {
1184 var flightStr = $.trim($('#associateRouteDropdown option:selected').text());
1185 var firstBracket = (flightStr.indexOf('\('));
1186 var lastBracket = (flightStr.indexOf('\)'));
1187 var newFlightStr = '';
1188 if (firstBracket > -1 && firstBracket > -1) newFlightStr = (flightStr.substring((firstBracket+1), lastBracket));
1189 if (routeRegionID == 0) {
1190 if(parseFloat($('#profile_associate').val()) == 1)
1191 {
1192 $('#subMenu_' + parseFloat(cloneArr[3])).after('<li id="subMenu_' + data['NewHeaderID'] + '" data="getServicesByRoute,' + data['NewHeaderID'] + '"><a href="javascript:alertChanges(\'subMenu_' + data['NewHeaderID'] + '\');">' + routeHeader + '</a></li>');
1193 }
1194 else
1195 {
1196 $('#subMenu_' + parseFloat(cloneArr[2])).after('<li id="subMenu_' + data['NewHeaderID'] + '" data="getServicesByRoute,' + data['NewHeaderID'] + '"><a href="javascript:alertChanges(\'subMenu_' + data['NewHeaderID'] + '\');">' + routeHeader + '</a></li>');
1197 }
1198 }
1199 $('#cloneID').html('');
1200 $('#changeReasonDiv').remove();
1201 $('#associateRouteContainer').remove();$('#associateRouteDropdown').remove();
1202 $("ul#routeDropDownContainer").sortList();
1203 var routeDetails = JSON.parse(sessionStorage['routeSession']);
1204 var newRouteDetails = {};
1205 $.each(routeDetails, function(i,v){ newRouteDetails[i] = v; });
1206 newRouteDetails[data['NewHeaderID']] = departurePassID;
1207 sessionStorage['routeSession'] = JSON.stringify(newRouteDetails);
1208 var decimalArr = JSON.parse(sessionStorage['facilityDecimal']);
1209 var newDecimalArr = {};
1210 $.each(decimalArr, function(di,dv){
1211 newDecimalArr[di] = dv; });
1212 newDecimalArr[departurePassID] = decimalPlaces;
1213 sessionStorage['facilityDecimal'] = JSON.stringify(newDecimalArr);
1214 try { getServicesByRoute(data['NewHeaderID'], departurePassID); }catch(e){}
1215 $('#clonePlan').attr('disabled', true);
1216 }
1217 $('#optionalHeading').val('').attr('disabled',true);
1218 refreshRouteDropdown.get();
1219 },
1220 error: function(jqXHR, textStatus, errorThrown){
1221 alert('error: ' + textStatus);
1222 }
1223 });
1224 }, 1000);
1225 }
1226 });
1227 });
1228
1229 function spmlRowPopulator(plan_id,supplier_id){
1230 if ($('#spml_row_populator_table').length)$('#spml_row_populator_table').dataTable().fnDestroy();
1231 var isProduction = (parseFloat($('#planStatusHeader').html()) == 2 ? true : false); var allCheckedArr = {};
1232 $('#spml_row_populator_body').html('<div id="spmlRowPopulatorSpinner" class="row-fuid offset6"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
1233 $('#spml_row_populator_modal').modal('show');
1234 $.getJSON(base_url + "index.php/api/mpd/spml_row_populator_courses/plan_id/" + plan_id + "/" + api_key + "format/json", function(data) {
1235 $.getJSON(base_url + 'index.php/api/specialmealtypes/special_meal_types/' + api_key + 'format/json', function(spmlData) {
1236 $.getJSON(base_url + "index.php/api/mpd/spml_row_populator/plan_id/" + plan_id + "/" + api_key + "format/json", function(spmlCourseData) {
1237 var _html = '<div class="row-fuid"><strong>SPML Service Row Populator</strong></div><div class="row-fuid"><table id="spml_row_populator_table" class="table table-bordered table-striped table-condensed"><thead><tr><th width="15%">Service/Remarks</th><th width="25%">Description</th><th width="3%" style="text-align:center;">ALL</th>';
1238 $.each(spmlData,function(si,sv){ _html += '<th width="3%" style="text-align:center;"><a href="javascript:highlightSpmlColumnPopulator(' + spmlData[si]['special_meal_id'] + ')">' + spmlData[si]['special_meal_name'] + '</a></th>'; });
1239 _html += '</tr></thead>';
1240 $.each(data,function(i,v){
1241 _html += '<tr id="spmlRow_' + data[i]['course_id'] + '" class="spmlRows"><td><a href="javascript:highlightSpmlRowPopulator(' + data[i]['course_id'] + ')">' + data[i]['service_option_full'] + '</a></td><td>' + data[i]['row_service_description'] + '</td>';
1242 _html += '<td style="text-align:center;"><input type="checkbox" class="courses_spml hide" id="course_' + data[i]['course_id'] + '_0" checked/><input ' + (isProduction == true ? 'disabled' : '') + ' onclick="toggleSpmlRowPopulator(' + data[i]['course_id'] + ');highlightSpmlRowPopulator(' + data[i]['course_id'] + ');" type="checkbox" id="spmlRowCourse_' + data[i]['course_id'] + '"/></td>';
1243 $.each(spmlData,function(si,sv){
1244 is_checked = '';
1245 if (spmlCourseData[data[i]['course_id']] != undefined && spmlCourseData[data[i]['course_id']][spmlData[si]['special_meal_id']] != undefined) is_checked = 'checked="checked"';
1246 _html += '<td style="text-align:center;" class="spmlColumns spmlColumns_' + spmlData[si]['special_meal_id'] + '"><input ' + (isProduction == true ? 'disabled' : '') + ' data-previousValue="' + (spmlCourseData[data[i]['course_id']] != undefined && spmlCourseData[data[i]['course_id']][spmlData[si]['special_meal_id']] != undefined ? '1' : '0') + '" onclick="highlightSpmlRowPopulator(' + data[i]['course_id'] + ')" ' + is_checked + ' type="checkbox" class="courses_spml course_smpl_class_' + data[i]['course_id'] + '" id="course_' + data[i]['course_id'] + '_' + spmlData[si]['special_meal_id'] + '"/></td>';
1247 });
1248 _html += '</tr>';
1249 })
1250 _html += '</table></div><div class="row-fuid pull-right"><p><a class="btn" href="javascript:closeSpmlRowPopulator();">Close</a>';
1251 if (isProduction == false) _html += ' <a class="btn btn-primary" disabled id="saveSpmlRowPopulatorBtn" href="javascript:saveSpmlRowPopulator(' + plan_id + ',' + supplier_id +');">Save</a>';
1252 _html += '</p></div>';
1253 $('#spmlRowPopulatorSpinner').remove(); $('#spml_row_populator_body').html(_html);
1254 var table = $('#spml_row_populator_table').DataTable({"bSort": false, "bDestroy": true,"sScrollY": "300px","bPaginate": false,"bScrollCollapse": false, "bFilter": false, "bInfo": false});
1255 setTimeout(function() {
1256 table.fnAdjustColumnSizing(); //$("#spml_row_populator_table").css("width","100%"); //new FixedColumns( table, {"sHeightMatch": "auto", "sLeftWidth": "relative", "iLeftWidth": 20,"iLeftColumns": 2} );
1257 $.each(data,function(i,v){ var allChecked = true; $('.course_smpl_class_' + data[i]['course_id']).each(function(){ if ($(this).attr('checked') == undefined) allChecked = false; }); if (allChecked == true) $('#spmlRowCourse_' + data[i]['course_id']).attr('checked',true); });
1258 $("#spml_row_populator_table").css("width","100%");
1259 }, 1000);
1260 });
1261 });
1262 });
1263
1264 }
1265 function toggleSpmlRowPopulator(course_id) { var checked = $('#spmlRowCourse_' + course_id).attr('checked') == undefined ? false : true; $('.course_smpl_class_' + course_id).attr('checked',checked); }
1266 function highlightSpmlRowPopulator(course_id){ $('#saveSpmlRowPopulatorBtn').removeAttr('disabled');
1267 $('.spmlRows').each(function(){ if ($(this).hasClass('spml_selected') == false) $(this).removeClass('info').removeClass('course_selected');});
1268 $('#spmlRow_' + course_id).addClass('info').addClass('course_selected');
1269 }
1270 function highlightSpmlColumnPopulator(spml_id){ $('#saveSpmlRowPopulatorBtn').removeAttr('disabled');
1271 $('.spmlColumns').each(function(){ if ($(this).hasClass('course_selected') == false) $(this).css('background-color', '').removeClass('spml_selected');});
1272 $('.spmlColumns_' + spml_id).css('background-color', '#d9edf7').addClass('spml_selected');
1273 }
1274 function closeSpmlRowPopulator(){ $('#spml_row_populator_modal').modal('hide'); }
1275 function saveSpmlRowPopulator(plan_id, supplier_id)
1276 {
1277 if ($('#saveSpmlRowPopulatorBtn').attr('disabled') == 'disabled') return;
1278 var obj = {};
1279 $('.courses_spml').each(function(){
1280 if ($(this).attr('data-previousValue') != undefined){
1281 var currentStatus = ($(this).attr('checked') != undefined ? 1 : 0); var previousStatus = parseFloat($(this).attr('data-previousValue'));
1282 if (parseFloat(currentStatus) != parseFloat(previousStatus)) obj['hasChanged_' + $(this).attr('id')] = 1;
1283 }
1284 if ($(this).attr('checked') != undefined) obj[$(this).attr('id')] = $(this).attr('checked');
1285 });
1286 var userDetails = JSON.parse(sessionStorage['userDetails']);
1287 $.ajax({
1288 type: 'PUT',
1289 contentType: 'application/json',
1290 url: '<?php echo base_url();?>index.php/api/mpd/spml_row_populator/user_id/' + userDetails['userID'] + '/supplier_id/' + supplier_id + '/plan_id/' + plan_id + '/<?php echo $this->config->item('base_api_key_url');?>format/json',
1291 dataType: "json",
1292 data: JSON.stringify(obj),
1293 success: function(data, textStatus, jqXHR){ $('#spml_row_populator_modal').modal('hide'); alertChanges('pricing_' + plan_id +'_' + supplier_id +'');},
1294 error: function(jqXHR, textStatus, errorThrown){ alert('error: ' + textStatus); }
1295 });
1296 }
1297
1298 function updateNewGlCode(id)
1299 {
1300 var idArr = id.split('_');
1301 var setVal = $('#newserviceoption_' + idArr[1]).find(':selected').data('glcode');
1302 $('#newglcode_' + idArr[1])
1303 .multiselect("clearSelection")
1304 .multiselect('refresh')
1305 .multiselect('deselect', '');
1306 if (isNaN(parseFloat(setVal)) == true) {
1307 setVal = '';
1308 $('#newglcode_' + idArr[1]).multiselect('select',setVal);
1309 }
1310 }
1311
1312 //function checkIfGlCodeIsEmpty() { $('.glCodesClass').each(function(){ var id = $(this).attr('id'); var idArr = id.split('_'); updateGlCode('Existing_' + idArr[1]); }); }
1313
1314 function getGlCode()
1315 {
1316 var dfd = $.Deferred();
1317 var gl_code = $.getJSON(base_url + 'index.php/api/glcodes/gl_code/' + api_key + 'format/json', function(data) {});
1318
1319 gl_code.success(function () {
1320
1321 data = ($.parseJSON(gl_code.responseText));
1322 var dropdown = '<select class="glCodeDiv input-xxlarge" style="text-transform:capitalize;">';
1323 dropdown += '<option value=""></option>';
1324 $.each(data, function (key, val) {
1325 dropdown += '<option value="' + data[key]['entry_id'] + '">' + data[key]['gl_code'].toUpperCase() + '|||' + data[key]['gl_description'].toUpperCase() + '</option>';
1326 });
1327 dropdown += '</select>';
1328
1329 $('#gl_code_div').html(dropdown);
1330
1331 return dfd.promise();
1332 });
1333 }
1334
1335 function closeCloneRouteModal()
1336 {
1337 $('#cloneProductionPlan').modal('hide');
1338 $('#cloneID').html('');
1339 $('#optionalHeading').val('');
1340 $('#changeReasonDiv').remove();
1341 $('#associateRouteContainer').remove();
1342 $('#associateRouteDropdown').remove();
1343 }
1344
1345 function enableUpdateProfileCode()
1346 {
1347 $('#validCodeStatus').remove();
1348 if (parseFloat($('#has_dev').val()) == 0) {
1349 $('#updateEntirePlanBtn').attr('disabled',false);
1350 } else {
1351 $('#updateProfileCodeLable').prepend('<span id="validCodeStatus" class="badge badge-important">Has Plan in Development.</span>');
1352 }
1353 var plan_type = $('#updatePlanType').val();
1354 $('#clonePlanTypeSelectRowContainer').removeClass('hide');
1355 $('#clonePlanTypeSelectContainer').html('');
1356 $.getJSON(base_url + "index.php/api/mpd/plan_types/" + api_key + "format/json", function(data) {
1357 var _HTML = '<select id="clonePlanTypeSelect" name="clonePlanTypeSelect" class="input-large" onchange="enableUpdateBtnForPlanType()">';
1358 $.each(data, function(i,v) {
1359 _HTML += '<option value="' + data[i]['plan_type_id'] + '" ' + (parseFloat(plan_type) == parseFloat(data[i]['plan_type_id']) ? 'selected' : '') + '>' + data[i]['plan_type'] + '</option>'; });
1360 _HTML += '</select>';
1361 $('#clonePlanTypeSelectContainer').html(_HTML);
1362 });
1363
1364 $('#updateProfileCode').attr('disabled', false);
1365 $('#update_profile_start_date').attr('disabled',false);
1366 $('#update_profile_end_date').attr('disabled',false);
1367 $('#menu_cycle_dropdown').attr('disabled',false);
1368 $('#cloneCommentContainer').slideDown('slow', function() {});
1369 }
1370
1371 function updateEntirePlan(btnAction)
1372 {
1373 $('#updateEntirePlanBtn').attr('onclick', '');
1374 var menu_cycle = $('#menu_cycle_dropdown').val();
1375 var start_date = $('#update_profile_start_date').val();
1376 var end_date = $('#update_profile_end_date').val();
1377 var plan_id = $('#update_profile_id').val();
1378 var plan_code = $('#updateProfileCode').val();
1379 var prev_plan_code = $('#previousUpdateProfileCode').val();
1380 var clone_comment = $('#cloneComment').val();
1381 var error = false;
1382 var today = new Date();
1383 today.setDate(today.getDate()-8);
1384 var fm_start_date = new Date(start_date);
1385 var fm_end_date = new Date(end_date);
1386 var retro_date = $('#hidden_plan_retro_date').val().replace(/-/g,'/');
1387 var fm_retro_date = new Date(retro_date);
1388
1389 $('#clone_start_date_error').addClass('hide').html('');
1390 $('#clone_end_date_error').addClass('hide').html('');
1391 $('#cloneComment_error').addClass('hide').html('');
1392 $('#updateProfileCode_error').addClass('hide').html('');
1393
1394 if (start_date == '') {
1395 $('#clone_start_date_error').removeClass('hide').html('Value Required.');
1396 error = true;
1397 } else if (start_date > end_date && $('#updatePlanRadiosArchive').attr('checked') == undefined) {
1398 $('#clone_start_date_error').removeClass('hide').html('Start Date has to be less than End Date.');
1399 error = true;
1400 } else if (fm_start_date < fm_retro_date) {
1401 $('#clone_start_date_error').removeClass('hide').html('Start Date has to be greater or equal to ' + $('#hidden_plan_retro_date').val() + '.');
1402 error = true;
1403 }
1404 if (end_date == '') {
1405 $('#clone_end_date_error').removeClass('hide').html('Value Required.');
1406 error = true;
1407 }
1408 if ($('#updatePlanRadiosClone').attr('checked') == 'checked' && clone_comment == '') {
1409 $('#cloneComment_error').removeClass('hide').html('Value Required.');
1410 error = true;
1411 }
1412
1413 if (error) {
1414 $('#updateEntirePlanBtn').attr('onclick', 'updateEntirePlan(\'' + btnAction + '\')');
1415 return;
1416 }
1417
1418 $('#updateEntirePlanBtn').attr('disabled',true);
1419
1420 var action = 'Update';
1421 if ($('#updatePlanRadiosProduction').attr('checked') == 'checked') {
1422 action = 'Production';
1423 } else if ($('#updatePlanRadiosClone').attr('checked') == 'checked') {
1424 action = 'Clone';
1425 } else if ($('#updatePlanRadiosDevelopment').attr('checked') == 'checked') {
1426 action = 'Development';
1427 } else if ($('#updatePlanRadiosArchive').attr('checked') == 'checked') {
1428 action = 'Archive';
1429 }
1430
1431 obj = {};
1432 obj['menu_cycle'] = menu_cycle;
1433 obj['start_date'] = start_date;
1434 obj['end_date'] = end_date;
1435 obj['plan_id'] = plan_id;
1436 obj['plan_code'] = plan_code;
1437 obj['action'] = action;
1438 obj['clone_comment'] = clone_comment;
1439 var userDetails = JSON.parse(sessionStorage['userDetails']);
1440 obj['user_id'] = userDetails['userID'];
1441 try {
1442 obj['production_message'] = $('#notifyMessage').val();
1443 } catch(e) { }
1444
1445 if (action == 'Update' || action == 'Clone' || action == 'Production') {
1446 obj['plan_type'] = $('#clonePlanTypeSelect').val();
1447 }
1448
1449 if (action != 'Production') {
1450 proceedUpdate(obj);
1451 } else {
1452 $.ajax({
1453 type: 'PUT',
1454 contentType: 'application/json',
1455 url: base_url + "index.php/api/mpd/update_check/" + api_key + "format/json",
1456 dataType: "json",
1457 data: JSON.stringify(obj),
1458 success: function(data, textStatus, jqXHR) {
1459 var scenarios = (data);
1460 switch (btnAction) {
1461 case 'Proceed':
1462 proceedUpdate($.extend(data, obj));
1463 break;
1464 case 'Check':
1465 preUpdate(scenarios);
1466 break;
1467 }
1468 },
1469 error: function(jqXHR, textStatus, errorThrown) {
1470 //alert('error: ' + textStatus);
1471 }
1472 });
1473 }
1474 }
1475
1476 function proceedUpdate(obj, action)
1477 {
1478 var plan_id = parseFloat(obj['plan_id']);
1479 var passAction = obj['action'];
1480 $.ajax({
1481 type: 'PUT',
1482 contentType: 'application/json',
1483 url: base_url + "index.php/api/mpd/update_proceed/action/" + passAction + "/" + api_key + "format/json",
1484 dataType: "json",
1485 data: JSON.stringify(obj),
1486 success: function(data, textStatus, jqXHR) {
1487 $('#updateEntirePlan').slideUp('slow', function() {
1488 cancelProduction();
1489 });
1490 if (data && obj['action'] == 'Clone') {
1491 cloneTracker(data['plan_id'], data[0]['supplier_id'], obj);
1492 createCourseTable(data['plan_id']);
1493 }
1494 if (obj['action'] == 'Archive') {
1495// RADEK: I've commented out this block as it doesn't change anything and the variable it sets is not used anywhere
1496// var showStatus = 1;
1497// if ($('#existingProduction').hasClass('active') == true) {
1498// showStatus = 2;
1499// }
1500 showExistingPlans(0, 1);
1501 }
1502 if (data && obj['action'] == 'Development') {
1503 showExistingPlans(0, 1);
1504 createCourseTable(plan_id);
1505 }
1506 if (data && obj['action'] == 'Production') {
1507 createCourseTable(data['plan_id']);
1508 var new_sliced_id = 0;
1509 var new_sliced_supplier_id = 0;
1510 var new_sliced_comment = '';
1511 var new_sliced_start_date;
1512 $.each(data, function(i, v) {
1513 if (i != 'action' && i != 'plan_id' && i != 'new_sliced_id' && i != 'new_sliced_supplier_id'
1514 && i != 'new_sliced_start_date' && i != 'new_sliced_comment') {
1515 productionTracker(data['plan_id'], data[i]['supplier_id'], obj);
1516 }
1517
1518 if (i == 'new_sliced_id') new_sliced_id = v;
1519 if (i == 'new_sliced_supplier_id') new_sliced_supplier_id = v;
1520 if (i == 'new_sliced_start_date') new_sliced_start_date = v;
1521 if (i == 'new_sliced_comment') new_sliced_comment = v;
1522 });
1523
1524 if (new_sliced_id != 0) {
1525 var userDetails = JSON.parse(sessionStorage['userDetails']);
1526 $.ajax({
1527 type: "POST",
1528 url: base_url + 'excel/clone_tracker_create/plan_id/' + new_sliced_id + '/supplier_id/' + new_sliced_supplier_id + '/start_date/' + new_sliced_start_date + '/user_id/' + userDetails['userID'] + '/clone_id/' + new_sliced_id,
1529 data: 'changeReason=' + encodeURIComponent(new_sliced_comment)
1530 });
1531 }
1532 }
1533 },
1534 error: function(jqXHR, textStatus, errorThrown){
1535 alert('error: ' + textStatus);
1536 }
1537 });
1538 }
1539
1540 function cloneTracker(clone_id, supplier_id, obj)
1541 {
1542 var userDetails = JSON.parse(sessionStorage['userDetails']);
1543 var supplierSession = JSON.parse(sessionStorage['plan_suppliers']);
1544 var supplier_id = supplierSession[0];
1545 var plan_id = $('#update_profile_id').val();
1546 var start_date = $.trim($('#update_profile_start_date').val());
1547 var changeReason = ($.trim(obj['action']) == 'Production' ? obj['production_message'] : obj['clone_comment']);
1548 $.each(supplierSession, function(i, v) {
1549 $.ajax({
1550 type: "POST",
1551 url: base_url + 'excel/clone_tracker_create/plan_id/' + plan_id + '/supplier_id/' + v + '/start_date/' + start_date + '/user_id/' + userDetails['userID'] + '/clone_id/' + clone_id,
1552 data: 'changeReason=' + encodeURIComponent(changeReason)
1553 });
1554 });
1555 }
1556
1557 function productionTracker(plan_id,supplier_id,obj)
1558 {
1559 var userDetails = JSON.parse(sessionStorage['userDetails']);
1560 var supplierSession = JSON.parse(sessionStorage['plan_suppliers']);
1561 var supplier_id = supplierSession[0];
1562 var plan_id = $('#update_profile_id').val();
1563 var plan_code = $('#updateProfileCode').val();
1564 var start_date = $.trim($('#update_profile_start_date').val());
1565 $('#trackerGenerateList').append('<div class="span5 alert alert-error" id="generateTrackerNotice_' + parseFloat(plan_id) + '"><img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/><strong>Generating Tracker for</strong> ' + $.trim($('#updateProfileCode').val()) + ': ' + $.trim($('#update_profile_start_date').val()) + ' - ' + $.trim($('#update_profile_end_date').val()) + '</div>');
1566 var changeReason = ($.trim(obj['action']) == 'Production' ? obj['production_message'] : obj['clone_comment']);
1567 $.each(supplierSession, function(i, v) {
1568
1569 $.ajax({
1570 type: "POST",
1571 url: base_url + 'excel/tracker_create/plan_id/' + plan_id + '/supplier_id/' + v + '/start_date/' + start_date + '/user_id/' + userDetails['userID'],
1572 data: 'changeReason=' + encodeURIComponent(changeReason),
1573 success: function(data, textStatus, jqXHR){
1574 var dataArr = data.split('|');
1575 notifyUsers.send(plan_code + ': Has been moved into production.|<p> </p><p>Routes Affected:' + dataArr[0] + '</p>',plan_id);
1576 },
1577 error: function(jqXHR, textStatus, errorThrown){
1578 //alert('error: ' + textStatus);
1579 //console.log('error');
1580 //console.log(jqXHR);
1581 //console.log(textStatus);
1582 }
1583 });
1584 });
1585 }
1586
1587 function create_dtc_snapshot(plan_id, user_id)
1588 {
1589 $.getJSON(base_url + "index.php/api/mpd/create_dtc_snapshot/plan_id/" + plan_id + "/user_id/" + user_id + "/" + api_key + "format/json", function(data) {});
1590 }
1591
1592 function preUpdate(scenarios)
1593 {
1594 $('#preUpdateContainer').slideDown('slow', function() {});
1595
1596 $("#preUpdateTable > tbody").append('<tr><td colspan=\"11\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></td></tr>');
1597
1598 setTimeout(function() {
1599 $("#preUpdateTable > tbody > tr").remove();
1600 $('#preUpdateTable').dataTable().fnDestroy();
1601
1602 var oTable = $('#preUpdateTable').dataTable( {
1603 "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
1604 "sPaginationType": "bootstrap",
1605 "sScrollX": "99%",
1606 "oLanguage": {
1607 "sLengthMenu": "_MENU_ records per page"
1608 },
1609 "bPaginate": false,
1610 "bFilter": false,
1611 "bInfo": false,
1612 "bProcessing": true,
1613 "aaData": scenarios['aaData'],
1614 "aaSorting": [[ 2, "desc" ]],
1615 "aoColumns": [
1616 { "mData": "plan_code", "bSortable": false},
1617 { "mData": "comment", "bSortable": false},
1618 { "mData": "version_number", "bSortable": false},
1619 { "mData": "profile_start_date", "bSortable": false},
1620 { "mData": "profile_end_date", "bSortable": false},
1621 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return ($.trim(oObj.aData.scenarios) == '' ? 'No Changes' : ($.trim(oObj.aData.scenarios) == 'Archive' ? '<span class="label label-important">' + $.trim(oObj.aData.scenarios) + '</span>' : $.trim(oObj.aData.scenarios)));}}
1622 ]
1623 } );
1624
1625 oTable.fnAdjustColumnSizing();
1626
1627 var plan_id = parseFloat($('#update_profile_id').val());
1628
1629 var _html = '<br/><div class="row-fluid"><div class="span9">';
1630 _html += '<div class="span1"><a href="javascript:notifyUsers.showModal(' + plan_id + ');">Notify</a></div>';
1631 _html += '<div class="span3"><textarea class="input-xlarge hide" id="notifyMessage" name="notifyMessage" rows="2"></textarea></div>';
1632 _html += '<div class="span5" id="updateProceedContainerNotify"></div>';
1633 _html += '</div></div><br/>';
1634 _html += '<div class="row-fluid" id="updateProceedContainer">';
1635 _html += '<div class="control-group"><input type="button" onclick="cancelProduction();" id="cancelProductionBtn" name="cancelProductionBtn" class="btn btn-danger btn-small" value="Cancel"/> <input type="button" onclick="updateEntirePlan(\'Proceed\');" id="proceedProductionBtn" name="proceedProductionBtn" class="btn btn-primary btn-small" value="Proceed"/></div>';
1636 _html += '</div>';
1637
1638 $("#preUpdateTable").css("width","100%").after(_html);
1639 $('#updateEntirePlanBtn').attr('disabled', true);
1640 $('#cancelUpdateBtn').attr('disabled', true);
1641 $('#update_profile_start_date').attr('disabled',true);
1642 $('#update_profile_end_date').attr('disabled',true);
1643 $('#updateProfileCode').attr('disabled',true);
1644 $('#updatePlanRadiosProduction').attr('disabled',true);
1645 $('#updatePlanRadiosClone').attr('disabled',true);
1646 $('#updatePlanRadiosDevelopment').attr('disabled',true);
1647 $('#updatePlanRadiosArchive').attr('disabled',true);
1648 $('#proceedProductionBtn').attr('disabled', true);
1649
1650 }, 1000);
1651 }
1652
1653 function cloneEntirePlan(plan_id)
1654 {
1655 var obj = {};
1656 obj['plan_id'] = plan_id;
1657
1658 $.ajax({
1659 type: 'POST',
1660 contentType: 'application/json',
1661 url: base_url + "index.php/api/mpd/clone_entire_plan/" + api_key + "format/json",
1662 dataType: "json",
1663 data: JSON.stringify(obj),
1664 success: function(data, textStatus, jqXHR){
1665 showExistingPlans();
1666 },
1667 error: function(jqXHR, textStatus, errorThrown){
1668 alert('error: ' + textStatus);
1669 }
1670 });
1671 }
1672
1673 function enableUpdateEntirePlanBtn()
1674 {
1675 $('#updateEntirePlanBtn').attr('disabled', false);
1676 }
1677
1678 function cancelProduction()
1679 {
1680 $('#preUpdateContainer').slideUp('slow', function() {
1681 $('#notifyUserFooterList').html('');
1682 $('#updateProceedContainer').remove();
1683 $('#updateEntirePlanBtn').attr('disabled', false);
1684 $('#cancelUpdateBtn').attr('disabled', false);
1685 $('#putPlanIntoProductionBtn').attr('disabled', false);
1686 $('#update_profile_start_date').attr('disabled',false);
1687 $('#update_profile_end_date').attr('disabled',false);
1688 $('#updateProfileCode').attr('disabled', true);
1689 $('#updatePlanRadiosClone').attr('checked', false).attr('disabled',false);
1690 $('#updatePlanRadiosProduction').attr('checked', false).attr('disabled',false);
1691 $('#updatePlanRadiosDevelopment').attr('checked', false).attr('disabled',true);
1692 $('#updatePlanRadiosArchive').attr('checked', false).attr('disabled',true);
1693 $('#cloneComment').val('');
1694 $('#cloneCommentContainer').slideUp('slow', function() {});
1695 canClone();
1696 });
1697 }
1698
1699 function cancelUpdate()
1700 {
1701 $('#updateEntirePlan').slideUp('slow', function() {
1702 cancelProduction();
1703 });
1704 }
1705
1706 function canClone()
1707 {
1708 if (parseFloat($('#can_clone').val()) == 1) {
1709 $('#updatePlanRadiosClone').attr('disabled', false);
1710 } else {
1711 $('#updatePlanRadiosClone').attr('disabled', true);
1712 }
1713 }
1714
1715 function canDev()
1716 {
1717 var planStartDate = $('#update_profile_start_date').val().replace(/-/g,'/');
1718 //var planStartDateArr = planStartDate.split('-');
1719 var retro_date = $('#hidden_plan_retro_date').val().replace(/-/g,'/');
1720 var x = new Date(retro_date);
1721 var today = new Date(planStartDate);
1722 if (today < x) {
1723 $('#updatePlanRadiosDevelopment').attr('disabled', true);
1724 return;
1725 }
1726 if (parseFloat($('#has_dev').val()) == 0) {
1727 $('#updatePlanRadiosDevelopment').attr('disabled', false);
1728 } else {
1729 $('#updatePlanRadiosDevelopment').attr('disabled', true);
1730 }
1731 }
1732
1733 function canArchive()
1734 {
1735 if (parseFloat($('#can_archive').val()) == 1) {
1736 $('#updatePlanRadiosArchive').attr('disabled', false);
1737 } else {
1738 $('#updatePlanRadiosArchive').attr('disabled', true);
1739 }
1740 }
1741
1742 function canProduction()
1743 {
1744 if ($('#existingDevelopment').hasClass('active') == false) {
1745 $('#updatePlanRadiosProduction').attr('disabled', true);
1746 return;
1747 }
1748 var start_date = $('#update_profile_start_date').val().replace(/-/g,'/');
1749 var retro_date = $('#hidden_plan_retro_date').val().replace(/-/g,'/');
1750 //var today = new Date(); today.setDate(today.getDate()-8);
1751 var today = new Date(retro_date);
1752 var fm_start_date = new Date(start_date);
1753
1754 // IF MPL IGNORE DATE
1755 //if (parseFloat($('#can_production').val()) == 1 && parseFloat($('#profile_associate_id').val()) == 1)
1756 //$('#updatePlanRadiosProduction').attr('disabled', false);
1757 //else
1758 $('#updatePlanRadiosArchive').attr('disabled', false);
1759 return;
1760
1761/*
1762 // RADEK: I've commented this block out as it is unreachable (return statement above)
1763 if (parseFloat($('#can_production').val()) == 1 && fm_start_date >= today) {
1764 $('#updatePlanRadiosProduction').attr('disabled', false);
1765 } else {
1766 $('#updatePlanRadiosProduction').attr('disabled', true);
1767 if (fm_start_date >= today) {
1768 canDev();//$('#updatePlanRadiosDevelopment').attr('disabled', false);
1769 $('#updatePlanRadiosArchive').attr('disabled', false);
1770 }
1771 }
1772*/
1773 }
1774
1775 function enableUpdateBtnForPlanType()
1776 {
1777 if ($('#updatePlanRadiosClone').attr('checked') == undefined) $('#updateEntirePlanBtn').attr('disabled',false);
1778 }
1779
1780 function editPlan(plan_id, code, startDate, endDate, version, can_clone,
1781 can_rename, status, has_dev, can_production, profile_associate_id)
1782 {
1783 $('#clone_start_date_error').addClass('hide').html('');
1784 $('#cloneComment_error').addClass('hide');
1785 $('#updateEntirePlanBtn').attr('onclick', 'updateEntirePlan(\'Check\')');
1786 $('#profile_associate_id').val(profile_associate_id);
1787 $('#clonePlanTypeSelectRowContainer').addClass('hide');
1788 $('#clonePlanTypeSelectContainer').html('');
1789
1790 if (status == 1) {
1791 var plan_type = $('#editButton_' + plan_id).attr('data-plan_type');
1792 $('#clonePlanTypeSelectRowContainer').removeClass('hide');
1793 $.getJSON(base_url + "index.php/api/mpd/plan_types/" + api_key + "format/json", function(data) {
1794 $('#clonePlanTypeSelectContainer').html('');
1795 var _HTML = '<select id="clonePlanTypeSelect" name="clonePlanTypeSelect" class="input-large" onchange="enableUpdateBtnForPlanType()">';
1796 $.each(data, function (i, v) {
1797 _HTML += '<option value="' + data[i]['plan_type_id'] + '" ' + (parseFloat(plan_type) == parseFloat(data[i]['plan_type_id']) ? 'selected' : '') + '>' + data[i]['plan_type'] + '</option>';
1798 });
1799 _HTML += '</select>';
1800 $('#clonePlanTypeSelectContainer').html(_HTML);
1801 });
1802 }
1803
1804 $('#updatePlanType').val($('#editButton_' + plan_id).attr('data-plan_type'));
1805 if (parseFloat(status) == 3) {
1806 $('#updatePlanRadiosClone').attr('disabled',true);
1807 } else {
1808 $('#updatePlanRadiosClone').attr('disabled',false);
1809 }
1810
1811 $('#missingValuesContainer').remove();
1812 $('#validCodeStatus').remove();
1813 $('#goToPlanLink').remove();
1814 if ($('#updateEntirePlan').is(':visible')) {
1815 cancelUpdate();
1816 }
1817
1818 $.getJSON(base_url + "index.php/api/mpd/plan_suppliers/plan_id/" + plan_id + "/" + api_key + "format/json", function(data) {
1819 var obj = {};
1820 $.each(data, function (i, v) {
1821 obj[i] = data[i]['supplier_id'];
1822 });
1823 sessionStorage['plan_suppliers'] = JSON.stringify(obj);
1824 });
1825
1826 var profile_associate = parseFloat(profile_associate_id);
1827 $.getJSON(base_url + "index.php/api/menucycles/plan_list/plan_id/" + plan_id + "/" + api_key + "format/json", function(menuCycleData) {
1828 var menuCycleHTML = '<option value="0">N/A</option>';
1829
1830 $.each(menuCycleData, function(i,v){
1831 menuCycleHTML += '<option value="' + parseInt(v.cycle_id) + '" ' + (parseInt(v.cycle_id) == parseInt(v.menu_cycle_id) ? 'selected' : '') + '>' + $.trim(v.description) + '</option>';
1832 });
1833
1834 $('#menu_cycle_dropdown').html(menuCycleHTML);
1835
1836 $.getJSON(base_url + "index.php/api/mpd/check_for_unapproved/profile_associate/" + profile_associate + "/plan_id/" + plan_id + "/" + api_key + "format/json", function(data) {
1837 var can_production = parseFloat(data['unapproved']) == 0 ? 1 : 0;
1838
1839 $('#updateEntirePlan').slideDown('slow', function() {
1840 $('#updateEntirePlanBtn').attr('disabled', true);
1841 $('#update_profile_id').val(plan_id);
1842 $('#updateProfileCode').val($.trim(code));
1843 $('#can_clone_name').val($.trim(code));
1844 $('#previousUpdateProfileCode').val(code);
1845 $('#updateProfileVersion').val(version);
1846 $('#updateProfileCode_countdown').val(250 - (code.length));
1847 $('#update_profile_start_date').val(startDate);
1848 $('#update_profile_end_date').val(endDate);
1849 if (parseFloat(status) == 2) {
1850 $('#update_profile_start_date').attr('disabled',true);
1851 $('#update_profile_end_date').attr('disabled',true);
1852 $('#menu_cycle_dropdown').attr('disabled',true);
1853 } else {
1854 $('#update_profile_start_date').attr('disabled',false);
1855 $('#update_profile_end_date').attr('disabled',false);
1856 $('#menu_cycle_dropdown').attr('disabled',false);
1857 }
1858 $('#can_clone').val(can_clone);
1859 $('#can_archive').val(status == 3 ? 0 : 1);
1860 $('#can_rename').val(can_rename);
1861 $('#can_production').val(status == 1 ? 1 : 0);
1862 $('#has_dev').val(has_dev);
1863 $('#updateEntirePlan').prepend('<a id="goToPlanLink" href="javascript:createCourseTable(' + plan_id + ');">Go to: ' + code + '</a>');
1864 canClone();
1865 if (can_production == 0 && parseFloat(status) == 1) {
1866 $('#updatePlanRadiosProductionText').html('Production <span class="label label-important">Missing Values/Unapproved Rows <a href="javascript:createCourseTable(' + plan_id + ',1);"><i class="icon-eye-open icon-white"></i></a></span> <a href="javascript:showMissingValuesContainer(' + plan_id + ',' + profile_associate + ');"><i class="icon-th-list"></i></a>');
1867 $('#updatePlanRadiosProduction').addClass('hide');
1868 } else {
1869 $('#updatePlanRadiosProductionText').html('Production');
1870 $('#updatePlanRadiosProduction').removeClass('hide');
1871 canProduction();
1872 }
1873 canArchive();
1874 canDev();
1875 if (parseFloat(status) != 1) {
1876 $('#validCodeStatus').remove();
1877 if(parseFloat(has_dev) == 0) {
1878 $('#updateEntirePlanBtn').attr('disabled', false);
1879 } else {
1880 $('#updateProfileCodeLable').prepend('<span id="validCodeStatus" class="badge badge-important">Has Plan in Development.</span>');
1881 }
1882 }
1883 });
1884 });
1885 });
1886 }
1887
1888 function showMissingValuesContainer(plan_id,profile_associate)
1889 {
1890 $('#missingValuesContainer').remove();
1891 $.getJSON(base_url + "index.php/api/mpd/missing_values/profile_associate/" + parseFloat(profile_associate) + "/plan_id/" + plan_id + "/" + api_key + "format/json", function(data) {
1892 var _returnHTML = '<table id="missingValuesContainer" class="table table-bordered table-striped table-condensed">' +
1893 '<thead><tr>' +
1894 '<th>Supplier</th>' +
1895 '<th width="12%" style="text-align:center;">Prices Unapproved</th>' +
1896 '<th width="12%" style="text-align:center;">Service Codes</th>' +
1897 '<th width="12%" style="text-align:center;">Service Descriptions</th>' +
1898 '<th width="12%" style="text-align:center;">Prov. Type</th>' +
1899 '<th width="12%" style="text-align:center;">Prov. Calc</th>' +
1900 '<th width="12%" class="hide spml_error_count" style="text-align:center;">SPML</th>' +
1901 '</tr></thead>';
1902 $.each(data, function(si, sv) {
1903 var is_approved = 0;
1904 var service_descr = 0;
1905 var service_code = 0;
1906 var prov_calc = 0;
1907 var prov_type = 0;
1908 var missing_spml_rows = 0;
1909 $.each(data[si], function(ri, rv) {
1910 if (parseFloat(data[si][ri]['is_approved']) == 0) is_approved++;
1911 if ($.trim(data[si][ri]['row_service_description']) == '' || $.trim(data[si][ri]['row_service_description']) == '*') service_descr++;
1912 if ($.trim(data[si][ri]['row_service_code']) == '' || $.trim(data[si][ri]['row_service_code']) == '*') service_code++;
1913 if ($.trim(data[si][ri]['row_meal_type']) == '') prov_calc++;
1914 if ($.trim(data[si][ri]['row_prov_type']) == '') prov_type++;
1915 if (data[si][ri]['missing_spml_service_code'] != undefined) service_code = data[si][ri]['missing_spml_service_code'];
1916 if (data[si][ri]['missing_spml_rows'] != undefined) missing_spml_rows = data[si][ri]['missing_spml_rows'];
1917 });
1918 _returnHTML += '<tbody><tr>' +
1919 '<td>' + si + '</td>' +
1920 '<td style="text-align:center;"><span class="badge ' + (is_approved == 0 ? 'badge-success' : 'badge-important') + '">' + is_approved + '</span></td>' +
1921 '<td style="text-align:center;"><span class="badge ' + (service_code == 0 ? 'badge-success' : 'badge-important') + '">' + service_code + '</span></td>' +
1922 '<td style="text-align:center;"><span class="badge ' + (service_descr == 0 ? 'badge-success' : 'badge-important') + '">' + service_descr + '</span></td>' +
1923 '<td style="text-align:center;"><span class="badge ' + (prov_type == 0 ? 'badge-success' : 'badge-important') + '">' + prov_type + '</span></td>' +
1924 '<td style="text-align:center;"><span class="badge ' + (prov_calc == 0 ? 'badge-success' : 'badge-important') + '">' + prov_calc + '</span></td>' +
1925 '<td style="text-align:center;" class="hide spml_error_count"><span class="badge ' + (missing_spml_rows == 0 ? 'badge-success' : 'badge-important') + '">' + missing_spml_rows + '</span></td>' +
1926 '</tr></tbody>';
1927 });
1928 _returnHTML += '</table>';
1929 $('#cancelUpdateBtn').parent().before(_returnHTML);
1930 if (parseFloat(profile_associate) == 2) $('.spml_error_count').removeClass('hide');
1931 $("#missingValuesContainer").css("width","40%");
1932 });
1933 $('#updateEntirePlanBtn').attr('disabled', true);
1934 }
1935
1936 function getProfileServiceOptions()
1937 {
1938 return;
1939/*
1940 // RADEK: I've commented this block out as it is unreachable
1941 $.getJSON(base_url + 'index.php/api/serviceoption/service_option/' + api_key + 'format/json', function(data) {
1942 var dropdown = '<select class="input-large serviceOptionDiv required" style="text-transform:capitalize;">';
1943 dropdown += '<option value=""></option>';
1944 $.each(data, function(key, val) {
1945 //if (serviceID == data[key]['service_type_id'])
1946 dropdown += '<option value="' + data[key]['service_type_id'] + ',' + data[key]['service_option_id'] + ',' + data[key]['gl_code_id'] + '">' + data[key]['service_option'] + '</option>';
1947 });
1948 dropdown += '</select>';
1949
1950 $('#service_option_div').html(dropdown);
1951 });
1952*/
1953 }
1954
1955 function getPlanServiceCodes()
1956 {
1957 return;
1958/*
1959 // RADEK: I've commented this block out as it is unreachable
1960 $('#serviceCodeDiv').remove();
1961
1962 $.getJSON(base_url + 'index.php/api/mpd/service_codes/' + api_key + 'format/json', function(data) {
1963 var returnHTML = '<div id="serviceCodeDiv" class="hide">';
1964 $.each(data, function(i,v){
1965 returnHTML += '<span>' + i + '</span>';
1966 });
1967
1968 returnHTML += '</div>';
1969
1970 $('body').append(returnHTML);
1971 });
1972*/
1973 }
1974
1975 function profileCodeValid(searchText, button, label)
1976 {
1977 $('#' + button).attr('disabled',true);
1978 $('#validCodeStatus').remove();
1979
1980 var newSearchText = $.trim(searchText.replace(/&/g,'&'));
1981 var canCloneName = $.trim($('#can_clone_name').val()).replace(/&/g,'&');
1982 var validCode = true;
1983
1984 $('#allPlanDiv > span').each(function(i,v){
1985 var foundin = $(this).html().match(new RegExp(newSearchText, 'i'));
1986 if (foundin != null)
1987 validCode = false;
1988 });
1989
1990 if (validCode == true) {
1991 if (newSearchText == $.trim(canCloneName) && parseFloat($('#has_dev').val()) == 1) {
1992 $('#' + label).prepend('<span id="validCodeStatus" class="badge badge-important">Has Plan in Development.</span>');
1993 } else {
1994 $('#' + button).attr('disabled',false);
1995 $('#' + label).prepend('<span id="validCodeStatus" class="badge badge-success"><i class="icon-ok icon-white"></i></span>');
1996 }
1997 } else {
1998 if (newSearchText == $.trim(canCloneName) && parseFloat($('#has_dev').val()) == 0) {
1999 $('#' + button).attr('disabled',false);
2000 $('#' + label).prepend('<span id="validCodeStatus" class="badge badge-success"><i class="icon-ok icon-white"></i></span>');
2001 } else {
2002 $('#' + label).prepend('<span id="validCodeStatus" class="badge badge-important"><i class="icon-remove icon-white"></i></span>');
2003 }
2004 }
2005 }
2006
2007 function getAllPlans()
2008 {
2009 $('#allPlanDiv').remove();
2010 $.getJSON(base_url + 'index.php/api/mpd/all_plans/' + api_key + 'format/json', function(data) {
2011 var returnHTML = '<div id="allPlanDiv" class="hide">';
2012 $.each(data, function(i, v) {
2013 var newStr = i.replace(/&/g,'&');
2014 returnHTML += '<span>' + newStr + '</span>';
2015 });
2016
2017 returnHTML += '</div>';
2018
2019 $('body').append(returnHTML);
2020 });
2021 }
2022
2023 function getSpecialMealType()
2024 {
2025 var dfd = $.Deferred();
2026 var special_meal_type = $.getJSON(base_url + 'index.php/api/specialmealtypes/special_meal_types/' + api_key + 'format/json', function(data) {});
2027 special_meal_type.success(function(){
2028
2029 data = ($.parseJSON(special_meal_type.responseText));
2030 var dropdown = '<select class="specialMealTypeDiv">';
2031 $.each(data, function(key, val) {
2032 dropdown += '<option value="' + data[key]['special_meal_id'] + '">' + data[key]['special_meal_name'] + '</option>';
2033 });
2034 dropdown += '</select>';
2035 $('#special_meal_type_div').html(dropdown);
2036 return dfd.promise();
2037 });
2038 }
2039
2040 function getAircraftType()
2041 {
2042 var dfd = $.Deferred();
2043 var aircraft_type = $.getJSON(base_url + 'index.php/api/aircrafttype/aircraft_type/' + api_key + 'format/json', function(data) {});
2044 aircraft_type.success(function() {
2045 data = ($.parseJSON(aircraft_type.responseText));
2046 var dropdown = '<select class="aircraftTypeDiv">';
2047 dropdown += '<option value="0" selected>ALL</option>';
2048 $.each(data, function(key, val) {
2049 dropdown += '<option value="' + data[key][0]['aircraft_type_id'] + '">' + data[key][0]['long_description'] + '</option>';
2050 });
2051 dropdown += '</select>';
2052 $('#aircraft_type_div').html(dropdown);
2053 return dfd.promise();
2054 });
2055 }
2056
2057 function getProfilePackingType()
2058 {
2059 $.getJSON(base_url + 'index.php/api/packingtype/service_type/' + api_key + 'format/json', function(data) {
2060 var dropdown = '<select class="packingTypeDiv" style="text-transform:capitalize;">';
2061 dropdown += '<option value=""></option>';
2062 $.each(data, function(key, val) {
2063 dropdown += '<option value="' + data[key]['service_type_id'] + '">' + data[key]['service_type'] + '</option>';
2064 });
2065 dropdown += '</select>';
2066
2067 $('#packing_type_div').html(dropdown);
2068 });
2069 }
2070
2071 function deleteRoute()
2072 {
2073 var deleteStr = $('#deleteID').html();
2074 var newDeleteStr = deleteStr.replace(/[']/g,'');
2075 deleteArr = newDeleteStr.split('|');
2076
2077 $('#change_reason_error').addClass('hide').html('');
2078
2079 /*if ($('#changeReason').val() == '')
2080 {
2081 $('#change_reason_error').removeClass('hide').html('Value Required');
2082 return false;
2083 }*/
2084 $('#subMenu_' + parseFloat(deleteArr[2])).html('<img src="' + base_url + 'assets/css/img/spinner.gif"/>');
2085
2086 setTimeout(function() {
2087 $.ajax({
2088 type: 'DELETE',
2089 contentType: 'application/json',
2090 url: base_url + 'index.php/api/mpd/remove_route/plan_id/' + parseFloat(deleteArr[0]) + '/supplier_id/' + parseFloat(deleteArr[1]) + '/header_id/' + parseFloat(deleteArr[2]) + '/changeReason//' + api_key + 'format/json',
2091 dataType: "json",
2092 data: '',
2093 success: function(data, textStatus, jqXHR){
2094 if ($('#routeDropDownContainer').is(":visible") && $('#routeDropDownContainer').hasClass('hasRouteRegionOnly')){
2095 updateRouteDropdown.get();
2096 return;
2097 }
2098
2099 //isModified();
2100 $('#subMenu_' + parseFloat(deleteArr[2])).remove();
2101 var budgetSummary = false; var idArr;
2102 $('#secondary_menu > li').each(function(){ if ($(this).hasClass('active') == true) { var idStr = $(this).attr('id'); var idArr = idStr.split('_'); if (idArr[0] == 'summary'){ budgetSummary = true; showSummary(idArr[1],idArr[2]); return false;} } });
2103 if (budgetSummary == false) {
2104 $('#secondary_menu > li').each(function(i,v){ $(this).removeClass('active'); });
2105 $('#' + $('#nextActiveID').html()).addClass('active');
2106 //alertChanges($('#nextActiveID').html());
2107 getServicesByRoute($('#nextActiveID').html());
2108 $('#deleteID').html('');
2109 $('#nextActiveID').html('');
2110 }
2111 $('#changeReasonDiv').remove();
2112 refreshRouteDropdown.get();
2113 },
2114 error: function(jqXHR, textStatus, errorThrown){
2115 alert('error: ' + textStatus);
2116 }
2117 });
2118 }, 1000);
2119 }
2120
2121 function isModified()
2122 {
2123 if (sessionStorage['isPricingScreen']) {
2124 var isPricingScreen = JSON.parse(sessionStorage['isPricingScreen']);
2125 if (parseFloat($('#planStatusHeader').html()) == 1 && isPricingScreen == true) {
2126 $('#manageAssociateAircraftLink').addClass('hide');
2127 $('#manageAssociateAircraftSpan').removeClass('hide');
2128 $('#spmlRowPopulatorLink').remove();
2129 $('#manageSpmlRowPopulatorSpan').removeClass('hide');
2130 }
2131 if (parseFloat($('#planStatusHeader').html()) == 2 && isPricingScreen == false) return;
2132 }
2133
2134 if ($('#isModified').length > 0)
2135 return;
2136
2137 if (parseFloat($('#planStatusHeader').html()) == 3)
2138 return;
2139
2140 $('#secondary_menu > li').each(function(i,v){
2141 if ($(this).hasClass('active'))
2142 {
2143 var anchorHTML = $(this).html();
2144 var anchorInnerHTML = ($(anchorHTML).html());
2145 if ($.trim($(this).attr('id')) == 'routeDropdown')
2146 $('#routeDropdownLink').html('Routes<span id="isModified"><strong>*</strong></span><b class="caret"></b>');
2147 else
2148 var newHTML = anchorHTML.replace('>' + anchorInnerHTML + '<', '>' + anchorInnerHTML + '<span id="isModified"><strong>*</strong></span><');
2149 $(this).html(newHTML);
2150
2151 var obj = {};
2152 if ($(this).attr('id') == 'routeDropdown')
2153 obj['screen_id'] = $.trim($('#routeDropdown').attr('data-routelock'));
2154 else
2155 obj['screen_id'] = $.trim($(this).attr('id'));
2156 SSEV.set(obj);
2157 }
2158 });
2159
2160 $('#saveServices').removeClass('disabled');
2161 }
2162
2163 function createInitialReports(plan_id,supplier_id)
2164 {
2165 return;
2166 // IF SPML RETURN
2167 if (parseFloat($('#profile_associate').val()) == 2) return;
2168 sessionStorage['report_budget_summary_' + plan_id] = 'Busy';
2169 $.get(base_url + 'excel/budget_download/plan_id/' + plan_id+ '/supplier_id/' + supplier_id + '/profile_associate/1/?onload=true', function( summary_data ) {
2170 if ($.trim(summary_data) == 'true'){ try{ $('#budget_summary_report_span').removeClass('hide'); $('#budget_summary_report_busy').addClass('hide');}catch(e){} sessionStorage['report_budget_summary_' + plan_id] = 'Complete';}
2171 // RUN IF MPL
2172 if (parseFloat($('#profile_associate').val()) == 1)
2173 {
2174 sessionStorage['report_budget_mpl_' + plan_id] = 'Busy';
2175 $.get(base_url + 'excel/budget_mpl_download/plan_id/' + plan_id+ '/supplier_id/' + supplier_id + '/profile_associate/1/?onload=true', function( mpl_data ) {
2176 if ($.trim(mpl_data) == 'true'){ try{ $('#budget_detail_report_span').removeClass('hide'); $('#budget_detail_report_busy').addClass('hide');}catch(e){} sessionStorage['report_budget_mpl_' + plan_id] = 'Complete';}
2177 });
2178 }
2179 });
2180
2181 }
2182
2183 var plan_supplier_id = 0;;
2184
2185 function planHeaders(id) {
2186 var dfd = $.Deferred();
2187 var isMPL = false;
2188// var isComplete = false;
2189 // CHECK USER HAD ACCESS TO SCREENS : START //
2190 var canViewProvScreen = false;
2191 var canViewTaxScreen = false;
2192 var canViewRouteScreen = false;
2193 var canViewBudgetScreen = false;
2194 var roles = JSON.parse(sessionStorage['loggedInGroupRoles']);
2195 var groupDetails = JSON.parse(sessionStorage['groupid']);
2196 var group_id = parseFloat(groupDetails);
2197 if (parseFloat(group_id) == 2) {
2198 canViewProvScreen = true;
2199 canViewTaxScreen = true;
2200 canViewRouteScreen = true;
2201 canViewBudgetScreen = true;
2202 } else {
2203 $.each(roles['aaData'], function (i, v) {
2204 if (parseFloat(roles['aaData'][i]['sub_role_id']) == 62) canViewProvScreen = true;
2205 if (parseFloat(roles['aaData'][i]['sub_role_id']) == 24) canViewTaxScreen = true;
2206 if (parseFloat(roles['aaData'][i]['sub_role_id']) == 22) canViewRouteScreen = true;
2207 if (parseFloat(roles['aaData'][i]['sub_role_id']) == 61) canViewBudgetScreen = true;
2208 });
2209 }
2210 // CHECK USER HAD ACCESS TO SCREENS : END //
2211 $.getJSON(base_url + 'index.php/api/mpd/get_subplan_info/plan_id/' + id + '/' + api_key + 'format/json', function (subplanInfo) {
2212 sessionStorage['subplan_info'] = JSON.stringify(subplanInfo);
2213 delete sessionStorage['subplan_filters'];
2214 try { MPLSubplanComponent.parseSubplanInfo(); } catch(err){}
2215
2216 $.getJSON(base_url + 'index.php/api/mpd/get_pp_by_id/plan_id/' + id + '/' + api_key + 'format/json', function (data) {
2217 var returnHTML;
2218 var status;
2219
2220 var planStatusSession = {};
2221 planStatusSession[0] = parseFloat(data[0]['is_development']);
2222 sessionStorage['planStatusSession'] = JSON.stringify(planStatusSession);
2223
2224 switch (parseFloat(data[0]['is_development'])) {
2225 case 1:
2226 status = 'Development';
2227 break;
2228 case 2:
2229 status = 'Production';
2230 break;
2231 case 3:
2232 status = 'Archive';
2233 break;
2234 }
2235
2236 if (subplanInfo['isMPL']) {
2237 isMPL = true;
2238 if (!subplanInfo['has_subplan']) {
2239 $('#subplan_name_input')
2240 .attr('data-plan-id', id)
2241 .val(data[0]['plan_code'] + ' SUB');
2242 }
2243 }
2244
2245 //returnHTML = '<div class="span1"><a href="javascript:naturalSave();" class="btn btn-primary btn-small disabled" id="saveServices">Save</a></div>';
2246 // save button + tracker icon (an envelope)
2247 returnHTML = '<div id="primarySaveButton" class="span1">' +
2248 '<span><a href="javascript:naturalSave(false);" class="btn btn-primary btn-mini disabled" id="saveServices">Save</a> </span>' +
2249 '<span><a title="Save/Create Tracker" id="trackerNotifyLink" class="btn btn-mini disabled"><i class="icon-envelope"></i></a></span>' +
2250 '</div>';
2251 // Subplan save button:
2252 returnHTML += '<div id="subplanSaveButtonContainer" class="span1 hide">' +
2253 '<span><a href="#" onclick="MPLSubplanComponent.saveSubplanChanges(); return false;" class="btn btn-primary btn-mini disabled" id="subplanSaveButton">Save</a></span>' +
2254 '</div>';
2255 // top bar summary of selected:
2256 returnHTML += '<div class="navbar span11" style="background-color: #fff;">' +
2257 '<div class="navbar-inner">' +
2258 '<input type="hidden" id="plan_id" name="plan_id" value="' + id + '"/>' +
2259 '<input type="hidden" id="profile_class_id" value="' + data[0]['profile_class'] + '"/>' +
2260 '<input type="hidden" id="min_pax" value="' + data[0]['min_pax'] + '"/>' +
2261 '<input type="hidden" id="max_pax" value="' + data[0]['max_pax'] + '"/>' +
2262 '<input type="hidden" id="profile_associate" value="' + data[0]['profile_associate'] + '"/>' +
2263 '<strong><span class="text-info" id="editPlanFromPricing"><a href="javascript:showExistingPlans(0,' + parseFloat(data[0]['is_development']) + ',' + id + ');"><i class="icon-edit"></i></a></strong> ' +
2264 '<strong><span class="text-info">Service Plan:</span></strong> <span id="plan_descr">' + data[0]['plan_code'] + '</span> ' +
2265 '<strong><span class="text-info">Version:</span></strong> ' + data[0]['version_number'] + ' ' +
2266 '<strong><span class="text-info">Service Type:</span></strong> ' + data[0]['service_type'] + ' ' +
2267 '<strong><span class="text-info">Effective Date:</span></strong> <span id="plan_start_date">' + data[0]['profile_start_date'] + '</span> ' +
2268 '<strong><span class="text-info">Discontinue Date:</span></strong> <span id="plan_end_date">' + data[0]['profile_end_date'] + '</span> ' +
2269 '<strong><span class="text-info">Status:</span></strong> ' + status + '<span class="hide" id="planStatusHeader">' + parseFloat(data[0]['is_development']) + '</span> ' +
2270 '<strong><span class="text-info">Class:</span></strong> <span id="header_class_code">' + data[0]['class_code'] + '</span> - ' + data[0]['class_description'] + ' ' +
2271 '<strong><span class="text-info">Menu Cycle:</span></strong> <span id="header_class_code">' + data[0]['menu_cycle'] + '</span> ' +
2272 '<strong><span class="text-info">Last Updated:</span></strong><span class="hide" id="trackerHeaderID">0</span> <small id="lastUpdateHeader"></small> ' +
2273 '<span class="hide" id="navbar_subplan_name_container"><strong><span class="text-info">Sub Plan Name:</span></strong> <span id="navbar_subplan_name"></span></span>' +
2274 '</div>';
2275 // annualised costs
2276 returnHTML += '<div class="navbar-inner hide" id="annualised_costs_container_old">' +
2277 '<ul class="nav">' +
2278 '<li><a href="#" style="pointer-events: none; cursor: default;"><strong><span class="text-info">Annual Budget</span> <span id="annualBudgetContainer"></span></a></strong></li>' +
2279 '<li><a href="#" style="pointer-events: none; cursor: default;"><strong><span class="text-info">Annualised Cost</span> <span id="annualCostContainer"></span></a></strong></li>' +
2280 '<li><a href="#" style="pointer-events: none; cursor: default;"><strong><span class="text-info">Variance</span> <span id="annualVarianceContainerCurrency"></span></a></strong></li>' +
2281 '<li><a href="#" style="pointer-events: none; cursor: default;"><strong><span class="text-info">Variance (%):</span> <span id="annualVarianceContainerPercent"></span></a></strong></li>' +
2282 '</ul>' +
2283 '</div>';
2284 returnHTML += '</div>';
2285
2286 $('#profileHeader').html(returnHTML);
2287
2288 //var getHeaderStr = (parseFloat(data[0]['profile_associate']) == 2 ? 'get_spml_plan_headers' : 'get_plan_headers');
2289
2290 //var headers = $.getJSON(base_url + 'index.php/api/mpd/get_plan_headers/plan_id/' + id + '/' + api_key + 'format/json', function (data) {});
2291 var headers = $.getJSON(base_url + 'index.php/api/mpd/route_region_plan_headers/plan_id/' + id + '/' + api_key + 'format/json', function (data) {});
2292
2293
2294 headers.success(function () {
2295 var data = ($.parseJSON(headers.responseText));
2296 var returnHTML = '<div class="tabbable" style="border:0px solid;">';
2297 returnHTML += '<ul class="nav nav-tabs" id="primary_menu">';
2298 var supplier = [];
2299 var firstSupplier = 0;
2300 $.each(data, function (i, v) {
2301 supplier[data[i]['supplier_id']] = data[i]['supplier'];
2302 });
2303 var supplierCount = 0;
2304 var activeSupplier = 0;
2305 var groupFacilities = JSON.parse(sessionStorage['loggedInGroupFacilities']);
2306
2307 $.each(supplier, function (si, sv) {
2308 if (sv != undefined) {
2309 var supplierFound = false;
2310 $.each(groupFacilities['aaData'], function (fi, fv) {
2311 if (parseFloat(groupFacilities['aaData'][fi]['supplier_id']) == parseFloat(si)) {
2312 supplierFound = true;
2313 return;
2314 }
2315 });
2316
2317 if (supplierFound == true) {
2318 if (parseFloat($('#getSupplierId').val()) != 0 && parseFloat($('#getSupplierId').val()) == si) {
2319 var tabActive = 'class="active supplierTab"';
2320 activeSupplier = si;
2321 }
2322 else if (supplierCount == 0 && parseFloat($('#getSupplierId').val()) == 0) {
2323 var tabActive = 'class="active supplierTab"';
2324 activeSupplier = si;
2325 }
2326 else var tabActive = 'class="supplierTab"';
2327
2328 returnHTML += '<li ' + tabActive + ' id="supplierTab_' + si + '" data-supplier="' + si + '"><a href="#tab_' + si + '" data-toggle="tab" onclick="alertChanges(\'pricing_' + id + '_' + si + '\');">' + sv + '</a></li>';
2329 if (supplierCount == 0) {
2330 firstSupplier = si;
2331 plan_supplier_id = si;
2332 }
2333
2334 supplierCount++;
2335 }
2336 }
2337 });
2338
2339 returnHTML += '<li id="viewOptions" class="dropdown hide"><a class="dropdown-toggle" href="#">View Options <b class="caret"></b></a>';
2340 returnHTML += '<ul class="dropdown-menu">';
2341 if (parseFloat($('#profile_associate').val()) == 2)
2342 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineProvRate_Checkbox"><input type="checkbox" id="packType_Checkbox" onclick="ProvSummaryViewOptionsSPML(this.id)" checked class="viewOptionsStaticDropdown">Pack Type</label></li>';
2343 else
2344 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineProvRate_Checkbox"><input type="checkbox" id="packType_Checkbox" onclick="ProvSummaryViewOptionsStatic(this.id)" checked class="viewOptionsStaticDropdown">Pack Type</label></li>';
2345 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineSpmlServiceOption_Checkbox"><input type="checkbox" id="spmlServiceOption_Checkbox" onclick="ProvSummaryViewOptionsSPML(this.id)" checked class="viewOptionsStaticDropdown">Service</label></li>';
2346 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineProvRate_Checkbox"><input type="checkbox" id="provCalc_Checkbox" onclick="ProvSummaryViewOptionsStatic(this.id)" checked class="viewOptionsStaticDropdown">Prov Calc</label></li>';
2347 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineProvRate_Checkbox"><input type="checkbox" id="provType_Checkbox" onclick="ProvSummaryViewOptionsStatic(this.id)" checked class="viewOptionsStaticDropdown">Prov Type</label></li>';
2348
2349 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineProvRate_Checkbox"><input type="checkbox" id="inlineProvRate_Checkbox" onclick="ProvSummaryViewOptions(this.id)" checked class="inlineCheckboxes viewOptionsDropdown">Prov Rate</label></li>';
2350 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineMin_Checkbox"><input type="checkbox" id="inlineMin_Checkbox" onclick="ProvSummaryViewOptions(this.id)" checked class="inlineCheckboxes viewOptionsDropdown"> Min</label></li>';
2351 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineMax_Checkbox"><input type="checkbox" id="inlineMax_Checkbox" onclick="ProvSummaryViewOptions(this.id)" checked class="inlineCheckboxes viewOptionsDropdown"> Max</label></li>';
2352 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineSet_Checkbox"><input type="checkbox" id="inlineSet_Checkbox" onclick="ProvSummaryViewOptions(this.id)" checked class="inlineCheckboxes viewOptionsDropdown"> Set</label></li>';
2353 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="inlineQty_Checkbox"><input type="checkbox" id="inlineQty_Checkbox" onclick="ProvSummaryViewOptions(this.id)" checked class="inlineCheckboxes viewOptionsDropdown"> Qty</label></li>';
2354 returnHTML += '</ul>';
2355 returnHTML += '</li>';
2356
2357 returnHTML += '<li id="viewOptionsPricing" class="dropdown"><a class="dropdown-toggle" href="#">View Options <b class="caret"></b></a>';
2358 returnHTML += '<ul class="dropdown-menu" style="max-height: 340px; overflow-y: scroll; width:100%">';
2359 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingRemarks_Checkbox"><input type="checkbox" id="pricingRemarks_Checkbox" onclick="pricingViewOptions.click(this.id,false);toggleMplRemarks();" checked class="inlineCheckboxes viewOptionsDropdownPricing">Service/Remarks</label></li>';
2360 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingSupplierCode_Checkbox"><input type="checkbox" id="pricingSupplierCode_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Supplier Code</label></li>';
2361 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingServiceCode_Checkbox"><input type="checkbox" id="pricingServiceCode_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Service Code</label></li>';
2362 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingServiceDescription_Checkbox"><input type="checkbox" id="pricingServiceDescription_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Service Description</label></li>';
2363 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingServiceDescription_Checkbox"><input type="checkbox" id="pricingGlCode_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">GL Code</label></li>';
2364 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingGlCode_Checkbox"><input type="checkbox" id="pricing' + (parseFloat($('#profile_associate').val()) == 2 ? 'Spml' : '') + 'PackType_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Pack Type</label></li>';
2365 //returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingMealType_Checkbox"><input type="checkbox" id="pricingMealType_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Prov Calc</label></li>';
2366 //returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingProvType_Checkbox"><input type="checkbox" id="pricingProvType_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Prov Type</label></li>';
2367 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingManMins_Checkbox"><input type="checkbox" id="pricingManMins_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Man Mins.</label></li>';
2368 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingLabCost_Checkbox"><input type="checkbox" id="pricingLabCost_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Labour</label></li>';
2369 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingRawMat_Checkbox"><input type="checkbox" id="pricingRawMat_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Raw Mat.</label></li>';
2370 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingDelivery_Checkbox"><input type="checkbox" id="pricingDelivery_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Delivery</label></li>';
2371 returnHTML += '<li style="padding-left:5px;"><label class="checkbox" for="pricingYield_Checkbox"><input type="checkbox" id="pricingYield_Checkbox" onclick="pricingViewOptions.click(this.id,false)" checked class="inlineCheckboxes viewOptionsDropdownPricing">Yield/Wastage</label></li>';
2372 returnHTML += '</ul>';
2373 returnHTML += '</li>';
2374
2375 subplanInfo = JSON.parse(sessionStorage['subplan_info']);
2376 if (subplanInfo['isMPL']) {
2377 var tabEnabled = ' class="disabled hide"';
2378 var onTabClick = 'return false;';
2379 if(subplanInfo['course_rows_ids'].length) {
2380 tabEnabled = '';
2381 onTabClick = 'alertChanges(' + "'" + 'subplanTab' + "', ''" + ');';
2382 }
2383 returnHTML += '<li id="subplanTab"' + tabEnabled + ' data="getSubplan,0"><a href="#"' + tabEnabled + ' onclick="' + onTabClick + '">Sub Plan</a></li>';
2384 }
2385
2386 returnHTML += '</ul>';
2387 returnHTML += '<div class="tab-content">';
2388
2389 var supplierTabCount = 0;
2390 var routeSession = {};
2391 var supplierSession = {};
2392 var hasRouteRegionOnly = 0;
2393 $.each(supplier, function (si, sv) {
2394 if (sv != undefined) {
2395 var tabContent = '<ul class="nav nav-tabs" id="secondary_menu" style="text-transform:uppercase;">';
2396 tabContent += '<li class="active pricing hide" id="pricing_' + id + '_' + si + '" data="getServicesByPricing,' + id + ',' + si + '"><a href="javascript:alertChanges(\'pricing_' + id + '_' + si + '\');">Pricing</a>';
2397 tabContent += '</li>';
2398 tabContent += '<li id="priceFacilityDropdown_' + id + '_' + si + '" class="dropdown priceFacilityDropdown"><a class="dropdown-toggle" href="#">Pricing<b class="caret"></b></a>';
2399 tabContent += '<ul class="dropdown-menu" style="max-height: 340px; overflow-y: scroll; width:100%"></ul>';
2400 tabContent += '</li>';
2401 if (canViewRouteScreen == true) {
2402 tabContent += '<li id="routeDropdown" data-routelock="" class="dropdown"><a id="routeDropdownLink" class="dropdown-toggle" href="#">Routes<b class="caret"></b></a>';
2403 tabContent += '<ul id="routeDropDownContainer" class="dropdown-menu" style="max-height: 340px; overflow-y: scroll;">';
2404 var pricingCount = 0;
2405 $.each(data, function (i, v) {
2406 if (si == data[i]['supplier_id'])// && parseFloat(data[i]['is_deleted']) != 1)
2407 {
2408 var departureFound = false;
2409 $.each(groupFacilities['aaData'], function (fi, fv) {
2410 if (parseFloat(groupFacilities['aaData'][fi]['airport_id']) == parseFloat(data[i]['destination_id']) && parseFloat(groupFacilities['aaData'][fi]['supplier_id']) == parseFloat(data[i]['supplier_id'])) {
2411 departureFound = true;
2412 return;
2413 }
2414 });
2415 if (departureFound == true) {
2416 routeSession[data[i]['entry_id']] = data[i]['destination_id'];
2417 if (parseInt(data[i]['route_region_only']) == 1) hasRouteRegionOnly = 1;
2418 tabContent += '<li data-regionID="'+ parseFloat(data[i]['region_id']) + '" ' + (parseFloat(data[i]['is_deleted']) != 1 ? '' : 'style="background-color:#f2dede;" class="deletedRoute"') + ' id="subMenu_' + data[i]['entry_id'] + '" data="getServicesByRoute,' + data[i]['entry_id'] + '"><a ' + (parseFloat(data[i]['is_deleted']) == 1 ? '' : 'href="javascript:alertChanges(\'subMenu_' + data[i]['entry_id'] + '\');"') + '>' + ($.trim(data[i]['alternate_heading']) != '' ? $.trim(data[i]['alternate_heading']) + (parseFloat(data[i]['hide_display_route']) == 0 && parseFloat(data[i]['refHeaderName']) == 1 ? ' (' + data[i]['departure'] + ' - ' + data[i]['arrival'] + ')' : '') : ' (' + (data[i]['departure'] + ' - ' + data[i]['arrival']) + ')') + '</a></li>';
2419 pricingCount++;
2420 }
2421 }
2422 });
2423
2424 tabContent += '</ul></li>';
2425 }
2426 var downloadID = ( new Date() ).getTime();
2427 if (canViewBudgetScreen == true) tabContent += '<li id="summary_' + id + '_' + si + '" data="getSummary,' + id + ',' + si + '"><a href="javascript:alertChanges(\'summary_' + id + '_' + si + '\');">Budget Summary</a></li>';
2428 if (canViewProvScreen == true){
2429 tabContent += '<li id="provsummary_' + id + '_' + si + '" data="getProvSummary,' + id + ',' + si + '"><a href="javascript:alertChanges(\'provsummary_' + id + '_' + si + '\');">Prov Summary</a></li>';
2430 //LOG ITEM 709 : PLP DISABLED FOR SPML & MPL - LB 25/09/2018
2431 if (parseFloat($('#profile_associate').val()) == 0 || isNaN(parseFloat($('#profile_associate').val())))
2432 tabContent += '<li id="plpprovsummary_' + id + '_' + si + '" data="plpgetProvSummary,' + id + ',' + si + '"><a href="javascript:alertChanges(\'plpprovsummary_' + id + '_' + si + '\');">Product Link Prov</a></li>';
2433 }
2434 if (canViewTaxScreen == true) tabContent += '<li id="tax_' + id + '_' + si + '" data="getTax,' + id + ',' + si + '"><a href="javascript:alertChanges(\'tax_' + id + '_' + si + '\');">Tax</a></li>';
2435 tabContent += '<li id="tracker_' + id + '_' + si + '" data="getTracker,' + id + ',' + si + '"><a href="javascript:alertChanges(\'tracker_' + id + '_' + si + '\');">Tracker</a></li>';
2436 tabContent += '<li id="pricingCommentTab"><a title="Comment Box" href="javascript:pricingComment.show(' + id + ');"><i class="icon-comment"></i></a></li>';
2437 tabContent += '<li id="macroTab" class="dropdown hide"><a class="dropdown-toggle" href="mpd_profile/price_macro/plan_id/' + id + '/supplier_id/' + si + '">Price Macro<b class="caret"></b></a><ul class="dropdown-menu" style="max-height: 340px; overflow-y: scroll; width:100%"></ul></li>';
2438 tabContent += '<li id="excelTab"><a title="Export To Excel" href="excel/production_plans/plan_id/' + id + '/supplier_id/' + si + '/start_date/' + $('#plan_start_date').html() + '?downloadID=regular_' + downloadID + '"><i onclick="downloadStatus.download(\'regular_' + downloadID + '\')" class="icon-download-alt"></i></a></li>';
2439 tabContent += '<li id="changesOnlyTab" class="hide"><a title="Display Changes" href="javascript:toggleChangesOnly()"><i id="changesOnlyIcon" class="icon-ok-sign"></i></a></li>';
2440 tabContent += '<li><a href="excel/production_plans_by_facility/plan_id/' + id + '/supplier_id/' + si + '/start_date/' + $('#plan_start_date').html() + '">.</a></li>';
2441 tabContent += '</ul>';
2442 supplierSession[0] = si;
2443
2444 returnHTML += '<div class="tab-pane ' + (activeSupplier == si ? 'active' : '') + '" id="tab_' + si + '">' + tabContent + '</div>';
2445 supplierTabCount++;
2446 }
2447 });
2448 sessionStorage['supplierSession'] = JSON.stringify(supplierSession);
2449 sessionStorage['routeSession'] = JSON.stringify(routeSession);
2450 sessionStorage['planSession'] = JSON.stringify(id);
2451 returnHTML += '</div>';
2452 returnHTML += '<div class="row-fluid span8 hide" id="todoHeader"></div></div>';
2453
2454 if ($('#getToDo').val() != 0) {
2455 getMyToDo($('#getToDo').val());
2456 }
2457
2458 $('#planHeaders').html(returnHTML, dfd.resolve);
2459 if (hasRouteRegionOnly == 1) $('#routeDropDownContainer').addClass('hasRouteRegionOnly');
2460 //createInitialReports(id,plan_supplier_id);
2461 //getAnnualisedFigures();
2462 getTopHeaders();
2463
2464 $.getJSON('<?php echo base_url();?>index.php/api/serviceoption/service_option/<?php echo $this->config->item('base_api_key_url');?>format/json', function (service_option) {
2465 $.getJSON('<?php echo base_url();?>index.php/api/glcodes/effective/create_date/' + $.trim($('#plan_start_date').html()) + '/end_date/' + $.trim($('#plan_end_date').html()) + '/<?php echo $this->config->item('base_api_key_url');?>format/json', function (gl_codes) {
2466 var dropdown = '<select class="input-large serviceOptionDiv required">';
2467 dropdown += '<option value=""></option>';
2468 $.each(service_option, function (key, val) {
2469 if (gl_codes[parseFloat(service_option[key]['service_option_id'])] != undefined)
2470 dropdown += '<option data-glCodeServiceOptionid="' + service_option[key]['service_option_id'] + '" value="' + service_option[key]['service_type_id'] + ',' + service_option[key]['service_option_id'] + ',' + gl_codes[parseFloat(service_option[key]['service_option_id'])] + '">' + service_option[key]['service_option'] + '</option>';
2471 });
2472 dropdown += '</select>';
2473 $('#service_option_div').html(dropdown);
2474
2475
2476 if ($('#getPlanId').val() != '0') {
2477 <?php if ($is_spml_redirect == true){ ?>var is_spml_redirect = true;<?php $is_spml_redirect == false; }else {?>var is_spml_redirect = false;<?php } ?>
2478 if (is_spml_redirect == true) {
2479 showSummary($('#getPlanId').val(), $('#getSupplierId').val());
2480 $('#routeDropdown').addClass('hide');
2481 } else if ($('#getHeaderId').val() == '0') {
2482 getServicesByPricing($('#getPlanId').val(), $('#getSupplierId').val());
2483 //alert('2');
2484 } else {
2485 //getServicesByRoute($('#getHeaderId').val());
2486 //alert('3');
2487 getServicesByPricing($('#getPlanId').val(), $('#getSupplierId').val());
2488 }
2489 $('#getPlanId').val('0');
2490 $('#getSupplierId').val('0');
2491 //$('#getHeaderId').val('0');
2492 }
2493 else {
2494 getServicesByPricing(id, firstSupplier);
2495 //alert('4');
2496 }
2497 $('.dropdown-toggle').dropdown();
2498 });
2499 });
2500 return dfd.promise();
2501 });
2502 });
2503 });
2504 }
2505
2506 function getTopHeaders()
2507 {
2508 if (parseFloat($('#profile_associate').val()) != 0 && isNaN(parseFloat($('#profile_associate').val())) == false) return; var supplier_id = JSON.parse(sessionStorage['supplierSession']); var plan_id = JSON.parse(sessionStorage['planSession']);
2509 setTimeout(function() { $.getJSON(base_url + 'index.php/api/mpd/get_top_headers/plan_id/' + plan_id + '/' + api_key + 'format/json', function(data) {
2510 if (data == 0) return;
2511 if (sessionStorage['provSummaryFilter_' + plan_id + '_' + supplier_id] == undefined)
2512 {
2513 var paging = 1; var service_option = 0; var special_meals = 0; var meal_service = 0; var filterDetails = {}; filterDetails['mealServiceOptions'] = meal_service; filterDetails['specialMealOptions'] = special_meals; filterDetails['initPaging'] = paging; filterDetails['serviceOptionID'] = service_option;
2514 $.each(data, function(i,v){
2515 filterDetails['arrivalBtn_' + i] = v;
2516 });
2517 sessionStorage['provSummaryFilter_' + plan_id + '_' + supplier_id[0]] = JSON.stringify(filterDetails);
2518 sessionStorage['plp_provSummaryFilter_' + plan_id + '_' + supplier_id[0]] = JSON.stringify(filterDetails);
2519 }
2520 });}, 1000);
2521 }
2522
2523 function toggleMplRemarks(){ var planSession = JSON.parse(sessionStorage['planSession']); var supplierSession = JSON.parse(sessionStorage['supplierSession']); var status = $('#pricingRemarks_Checkbox').attr('checked') == undefined ? 0 : 1; sessionStorage['mplRemarks_' + planSession + '_' + supplierSession[0]] = JSON.stringify(status); }
2524
2525 function getAnnualisedFigures()
2526 {
2527 if (parseFloat($('#profile_associate').val()) != 0 && isNaN(parseFloat($('#profile_associate').val())) == false) return;
2528 var plan_id = JSON.parse(sessionStorage['planSession']); $('#annualBudgetContainer').html('<img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/>'); $('#annualCostContainer').html('<img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/>'); $('#annualVarianceContainerCurrency').html('<img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/>');$('#annualVarianceContainerPercent').html('<img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/>');
2529 setTimeout(function() { $.getJSON(base_url + 'index.php/api/mpd/annualised_figures/plan_id/' + plan_id + '/' + api_key + 'format/json', function(data) {$('#annualVarianceContainerPercent').html(data['Price_Difference_Percent']); $('#annualVarianceContainerCurrency').html(data['Price_Difference']); $('#annualBudgetContainer').html(data['DTC']); $('#annualCostContainer').html(data['Cost']); });}, 1000);
2530 }
2531
2532 function ProvSummaryViewOptionsStatic(classID)
2533 {
2534 $('#viewOptions').click(function(event){ event.stopPropagation(); });
2535 var idArr = classID.split('_');
2536 if ($('#' + classID).attr('checked') == undefined) $('.provsummary_' + idArr[0]).fadeOut("slow", function() {}); else $('.provsummary_' + idArr[0]).fadeIn("slow", function() {});
2537 var idArray = classID.split('_'); var localViewOptions = (localStorage['viewOptionsStatic'] ? localStorage['viewOptionsStatic'] : '');
2538 if($('#' + classID).attr('checked') != 'checked') { if (localViewOptions.indexOf(idArray[0]) < 0) localStorage['viewOptionsStatic'] = idArray[0] + ',' + localViewOptions; }
2539 else
2540 { if (localViewOptions.indexOf(idArray[0]) > -1) localStorage['viewOptionsStatic'] = localViewOptions.replace(idArray[0] + ',', ''); }
2541 var x = localStorage['viewOptionsStatic'].split(',').length-1;
2542 }
2543
2544 function ProvSummaryViewOptionsSPML(classID)
2545 {
2546 var localViewOptions = (localStorage['viewOptionsSpml'] ? localStorage['viewOptionsSpml'] : '');
2547 $('#viewOptions').click(function(event){ event.stopPropagation(); });
2548 var idArr = classID.split('_');
2549 if ($('#' + classID).attr('checked') == undefined) {
2550 if (localViewOptions.indexOf(idArr[0]) < 0) localStorage['viewOptionsSpml'] = idArr[0] + ',' + localViewOptions;
2551 $('.provsummary_' + idArr[0]).fadeOut("slow", function() {});
2552 } else {
2553 if (localViewOptions.indexOf(idArr[0]) > -1) localStorage['viewOptionsSpml'] = localViewOptions.replace(idArr[0] + ',', '');
2554 $('.provsummary_' + idArr[0]).fadeIn("slow", function() {});
2555 }
2556 }
2557
2558 function getMyToDo(pass_todo_id)
2559 {
2560 $.ajax({
2561 type: 'GET',
2562 contentType: 'application/json',
2563 url: base_url + "index.php/api/todo/my_todo/todo_id/" + pass_todo_id + "/" + api_key + "format/json",
2564 dataType: "json",
2565 data: '',
2566 success: function(data, textStatus, jqXHR){
2567 if (data['aaData'][0]['status'] == 'Overdue' ) var alertClass = 'alert-error';
2568 else if (data['aaData'][0]['status'] == 'Active' ) var alertClass = 'alert-block';
2569 else if (data['aaData'][0]['status'] == 'Completed' ) var alertClass = 'alert-success';
2570
2571 var status = '<span id="status_' + parseFloat(data['aaData'][0]['todo_id']) + '">' + (parseFloat(data['aaData'][0]['completed']) == 1 ? '<i class="icon-ok-circle"></i>' : '<a href="javascript:markComplete(' + parseFloat(data['aaData'][0]['todo_id']) + ',\'Complete\');">' + ($.trim(data['aaData'][0]['status']) == 'Active' ? '<i class="icon-asterisk"></i> ' + data['aaData'][0]['status'] : ($.trim(data['aaData'][0]['status']) == 'Overdue' ? '<i class="icon-thumbs-down"></i> ' + data['aaData'][0]['status'] : '<i class="icon-thumbs-up"></i> ' + data['aaData'][0]['status'])) + '</a>') + '</span>';
2572 var statusText = (parseFloat(data['aaData'][0]['completed']) == 1 || parseFloat(data['aaData'][0]['in_progress']) == 1 ? data['aaData'][0]['date_completed_gmt'] : (data['aaData'][0]['intervalSign'] == '-' ? data['aaData'][0]['intervalDays'] + ' overdue' : 'Due in ' + data['aaData'][0]['intervalDays']))
2573 var returnHTML = '<blockquote class="alert ' + alertClass + '"><button type="button" class="close" data-dismiss="alert">×</button><i class="icon-calendar"></i> ' + status + ' <bold>' + data['aaData'][0]['message'] + ' - ' + statusText + '</bold><small>' + data['aaData'][0]['assignedTo'] + '<a style="text-decoration: none;" href="javascript:postComment(\'ToDo\',' + parseFloat(data['aaData'][0]['todo_id']) + ');"><i class="icon-comment"></i>' + ' ' + (parseFloat(data['aaData'][0]['comment_count']) > 0 ? '<span class="label">' + parseFloat(data['aaData'][0]['comment_count']) + '</span>' : '') + '</a></small></blockquote>';
2574 $('#todoHeader').removeClass('hide').html(returnHTML);
2575 },
2576 error: function(jqXHR, textStatus, errorThrown){
2577 alert('error: ' + textStatus);
2578 }
2579 });
2580 }
2581
2582 function isFlashEnabled()
2583 {
2584 var hasFlash = false;
2585 try
2586 {
2587 var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
2588 if(fo) hasFlash = true;
2589 }
2590 catch(e)
2591 {
2592 if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) hasFlash = true;
2593 }
2594 return hasFlash;
2595 }
2596
2597 function trackerDetails(tracker_id, trackerType)
2598 {
2599 $('.DTTT_container*').remove();
2600
2601 $('#trackerDetailsDiv').prepend('<div id="trackerSpinner"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
2602
2603 $('#trackerDetailsWrapper').hide();
2604 $("#TrackerDetailsTable > tbody > tr").remove();
2605 $('#TrackerDetailsTable').dataTable().fnDestroy();
2606
2607 setTimeout(function() {
2608 var oTable = $('#TrackerDetailsTable').dataTable( {
2609 "sScrollX": "99%",
2610 "bPaginate": false,
2611 "bFilter": false,
2612 "bInfo": false,
2613 "sScrollY": "300px",
2614 "aaSorting": [[ 0, "asc" ]],
2615 "bProcessing": true,
2616 "sAjaxSource": base_url + "index.php/api/mpd/get_route_CDC/trackerType/" + trackerType + "/tracker_id/" + tracker_id + "/" + api_key + "format/json",
2617 "aoColumns": [
2618 { "mData": "Sort_Order", "bVisible": false},
2619 { "mData": "Service", "bSortable": false},
2620 { "mData": "ChangeType", "bSortable": false, 'fnCreatedCell': function(nTd, sData, oData, iRow, iCol) {
2621 nTd.title = oData.Before;} , "bVisible": (trackerType == 'Notify' ? false : true)},
2622 { "mData": "Before", "bSortable": false, "fnRender": function(oObj){ return ($.trim(oObj.aData.Before) == '' ? 'Nothing' : oObj.aData.Before)}, "bVisible": (trackerType == 'Notify' ? false : true)},
2623 { "mData": "After", "bSortable": false }
2624 ]
2625 } );
2626
2627 oTable.fnAdjustColumnSizing();
2628
2629 $("#TrackerDetailsTable").css("width","100%");
2630 $('#trackerDetailsWrapper').show();
2631 $('#trackerSpinner').remove();
2632
2633 if (trackerType == 'Notify')
2634 {
2635 $("#ServiceHeader").html('Message');
2636 $("#NewValueHeader").html('Sent To');
2637 }
2638 else
2639 {
2640 $("#ServiceHeader").html('Service');
2641 $("#NewValueHeader").html('New Value');
2642 }
2643 }, 1000);
2644 }
2645
2646 function clearTables()
2647 {
2648 $("[data-toggle=popover]").popover('destroy');
2649 var isPricingScreen = false; sessionStorage['isPricingScreen'] = JSON.stringify(isPricingScreen);
2650
2651 try{ $('#routeHeader').removeAttr('style');}catch(e){}
2652 try{ $('#ServicesByPricingTable > tbody > tr').remove(); }catch(e){}
2653 try{ $('#ServicesByRouteTable > tbody > tr').remove(); }catch(e){}
2654 try{ $('#SummaryTable > tbody > tr').remove(); }catch(e){}
2655 try{ $('#TrackerTable > tbody > tr').remove(); }catch(e){}
2656 try{ $('#TrackerDetailsTable > tbody > tr').remove(); }catch(e){}
2657 try{ $('#routeHeader').html(returnHTML); }catch(e){}
2658 try{ $('#ProvisioningSummaryTable > tbody > tr').remove(); }catch(e){}
2659 try{ $('#PLP_ProvisioningSummaryTable > tbody > tr').remove(); }catch(e){}
2660 try{ $('#TaxTableContainer').addClass('hide'); $('#TaxTable > tbody > tr').remove(); }catch(e){}
2661 try{ $('#HiddenServicesByRouteTable > tbody > tr').remove(); $('#hiddenAccordion').addClass('hide'); }catch(e){}
2662 try{ $('#SpmlSummaryTableConainer').html('').addClass('hide');}catch(e){}
2663
2664 $('#noTaxAlert').remove();
2665
2666 $('#viewOptions').addClass('hide');
2667 $('#pricing_container').addClass('hide');
2668 $('#routeHeader').html('');
2669
2670 $('#trackerDetailsWrapper').hide();
2671 $('#ServicesByRouteTable').removeClass('hide');
2672 $('#ServicesByPricingTable').removeClass('hide');
2673 $('#ServicesByRouteTableConainer').hide();
2674 $('#ServicesByPricingTable_wrapper').hide();
2675 $('#TrackerTableConainer').addClass('hide');
2676 $('#SummaryTableConainer').addClass('hide');
2677 $('#ProvisioningSummaryTableConainer').addClass('hide');
2678 $('#PLP_ProvisioningSummaryTableConainer').addClass('hide');
2679 $('#viewOptionsPricing').addClass('hide');
2680 $('.priceFacilityDropdown').removeClass('active').addClass('hide');
2681 $('.pricing').removeClass('hide');
2682 $('#freezeLink').remove();
2683 $('#proceedToNotify').html(0);
2684 $('#changesOnlyTab').addClass('hide');
2685
2686 $('.tab-pane > ul > li').each(function(i,v){ $(this).removeClass('active');});
2687
2688 }
2689
2690 function showProvSummary(plan_id,supplier_id)
2691 {
2692 provSummary.provSummaryTable(plan_id,supplier_id);
2693 }
2694
2695 function ProvSummaryViewOptions(id)
2696 {
2697 $('#viewOptions').click(function(event){
2698 event.stopPropagation();
2699 });
2700
2701 $('#checkbox_error').remove();
2702 var x = 0;
2703 $('.viewOptionsDropdown').each(function(i,v){
2704 if($(this).attr('checked') == 'checked')
2705 x++;
2706 });
2707
2708 if (x==0)
2709 {
2710 $('#' + id).attr('checked','checked');
2711 $("#routeHeader").append('<div id="checkbox_error" class="span6 alert alert-error" style="padding: 10px; 0px; 0px; 0px;">At least one box has to be checked</div>');
2712 return;
2713 }
2714 var idArray = id.split('_');
2715
2716 var localViewOptions = (localStorage['viewOptions'] ? localStorage['viewOptions'] : '');
2717
2718 if($('#' + id).attr('checked') != 'checked') { if (localViewOptions.indexOf(idArray[0]) < 0) localStorage['viewOptions'] = idArray[0] + ',' + localViewOptions; }
2719 else { if (localViewOptions.indexOf(idArray[0]) > -1) localStorage['viewOptions'] = localViewOptions.replace(idArray[0] + ',', ''); }
2720
2721 var x = localStorage['viewOptions'].split(',').length-1;
2722
2723 if($('#' + id).attr('checked') == 'checked') $('.' + idArray[0] + '_header').addClass('allowShow').fadeIn("slow", function() {}); else $('.' + idArray[0] + '_header').removeClass('allowShow').fadeOut("slow", function() {});
2724 $('.inlineSummary_header').attr('colspan', 5-x);
2725 /*
2726 $('[id^="arrivalBtn_"]').each(function() {
2727 var idArr = $(this).attr('id').split('_');
2728 if($('.arrivalColumn_' + idArr[1]).is(":visible") == true){
2729 $('[class^="' + idArray[0] + '_header arrivalColumn_' + idArr[1] + '"]').each(function(){
2730 if ($(this).hasClass('allowShow') == true)
2731 $(this).fadeIn("slow", function() {});
2732 else
2733 $(this).fadeOut("slow", function() {});
2734 });
2735 }
2736 $('[class^="inlineSummary_header arrivalColumn_' + idArr[1] + '"]').attr('colspan', 5-x);
2737 });
2738 */
2739 }
2740
2741 function showSummary(plan_id,supplier_id) { if (parseFloat($('#profile_associate').val()) == 2) specialMealBudget.get(plan_id,supplier_id); else dtcSummary.dtcSummaryTable(plan_id,supplier_id); }
2742
2743 function showTracker(plan_id,supplier_id)
2744 {
2745 clearTables();
2746 $('#trackerDetailsWrapper').hide();
2747
2748 $('#ServicesByRouteTable').removeClass('hide');
2749 $('#ServicesByPricingTable').removeClass('hide');
2750 $('#ServicesByRouteTableConainer').hide();
2751 $('#ServicesByPricingTable_wrapper').hide();
2752 $('#pricing_container').addClass('hide');
2753 $('#TrackerTableConainer').removeClass('hide');
2754 $('#SummaryTableConainer').addClass('hide');
2755 $('#ProvisioningSummaryTableConainer').addClass('hide');
2756 $('#PLP_ProvisioningSummaryTableConainer').addClass('hide');
2757 $('#routeHeader').html('');
2758
2759 $('.tab-pane > ul > li').each(function(i,v){
2760 $(this).removeClass('active');
2761 });
2762
2763 $('#tracker_' + plan_id + '_' + supplier_id).addClass('active');
2764
2765 var planStatus = JSON.parse(sessionStorage['planStatusSession']);
2766 $("#TrackerTable > tbody").append('<tr><td colspan=\"6\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></td></tr>');
2767
2768 setTimeout(function() {
2769 $("#TrackerTable > tbody > tr").remove();
2770 $('#TrackerTable').dataTable().fnDestroy();
2771
2772 var downloadID = ( new Date() ).getTime();
2773
2774 var oTable = $('#TrackerTable').dataTable( {
2775 "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
2776 "sPaginationType": "bootstrap",
2777 "sScrollX": "99%",
2778 "oLanguage": {
2779 "sLengthMenu": "_MENU_ records per page"
2780 },
2781 "bProcessing": true,
2782 "sAjaxSource": base_url + "index.php/api/mpd/tracker_info/plan_id/" + plan_id + "/supplier_id/" + supplier_id + "/" + api_key + "format/json",
2783 "aaSorting": [[ 0, "desc" ]],
2784 "aoColumns": [
2785 { "mData": "tracker_id", "bSortable": false, "bVisible": false},
2786 { "mData": "created_by", "bSortable": false},
2787 { "mData": "date_created_gmt", "bSortable": false},
2788 { "mData": "comment", "bSortable": false},
2789 { "mData": null, "bSortable": false, "fnRender": function(oObj){ return '<a title="Export To Excel" href="' + base_url + 'excel/tracker_download/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/tracker_id/' + $.trim(oObj.aData.tracker_id) + '?downloadID=tracker_' + oObj.aData.tracker_id + '_' + downloadID + '"><i onclick="downloadStatus.download(\'tracker_' + oObj.aData.tracker_id + '_' + downloadID + '\')" class="icon-download-alt"></i></a>' + (parseFloat(oObj.aData.can_undo) == 1 && planStatus[0] == 1 ? ' <a href="javascript:undoTrackerModal(' + parseFloat(oObj.aData.tracker_id) + ',' + plan_id + ',' + supplier_id + ')"><i class="icon-trash"></i></a>' : '')}}
2790 ]
2791 } );
2792
2793 oTable.fnAdjustColumnSizing();
2794 $("#TrackerTable").css("width","100%");
2795 }, 1000);
2796 }
2797
2798 function undoTrackerModal(tracker_id,plan_id,supplier_id)
2799 {
2800 $('#undoTrackerProceedBtn').attr('onclick','undoTracker(' + tracker_id + ',' + plan_id + ',' + supplier_id + ')');
2801 $('#undoTrackerProceedModal').modal('show');
2802 }
2803
2804 function undoTracker(tracker_id,plan_id,supplier_id)
2805 {
2806 var obj = {};
2807 obj['tracker_id'] = tracker_id;
2808 $.ajax({
2809 type: 'DELETE',
2810 contentType: 'application/json',
2811 url: base_url + 'index.php/api/mpd/undo_tracker/' + api_key + 'format/json',
2812 dataType: "json",
2813 data: obj,
2814 success: function(data, textStatus, jqXHR){ alertChanges('tracker_' + plan_id + '_' + supplier_id + ''); $('#undoTrackerProceedModal').modal('hide');
2815 $.getJSON(base_url + 'index.php/api/mpd/tracker_changes/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json', function(data) {
2816 var trackerStr = JSON.stringify(data);
2817 sessionStorage['trackerInfo'] = trackerStr;
2818 trackerHighlight.headers();
2819 });
2820 },
2821 error: function(jqXHR, textStatus, errorThrown){ alert('error: ' + textStatus); }
2822 });
2823 }
2824
2825 var setIntervalRunGet;
2826 function isProduction()
2827 {
2828 $('#saveServices').addClass('hide');
2829 $('#trackerNotifyLink').removeClass('hide');
2830 var isPricingScreen = JSON.parse(sessionStorage['isPricingScreen']);
2831 if (parseFloat($('#planStatusHeader').html()) == 2 && isPricingScreen == false)
2832 $('#trackerNotifyLink').addClass('hide');
2833 setTimeout(function() {
2834 if (parseFloat($('#planStatusHeader').html()) == 1)
2835 {
2836 setTimeout(function() {
2837 SSEV.get();
2838 },2000);
2839 setIntervalRunGet = setInterval("SSEV.get()",10000);
2840 $('#saveServices').removeClass('hide');
2841 rowLock.disable();
2842 $('#macroTab').remove();
2843 return;
2844 }
2845
2846 var activeScreenArr = {};
2847
2848 $('#secondary_menu > li').each(function(i,v){ if ($(this).hasClass('active')) { var activeScreen = ($(this).attr('id')); activeScreenArr = activeScreen.split('_'); return; }});
2849
2850 if (activeScreenArr[0] != 'summary'){ $('#ServiceRouteForm :input').each(function(i,v){ $(this).attr('disabled',true); }); }
2851
2852 try{$(".new_row_link").removeAttr('href');}catch(e){}
2853 try{$("#cloneEdit").removeAttr('href');}catch(e){}
2854 try{$("#cloneRoute").removeAttr('href');}catch(e){}
2855 try{$("#deleteRoute").removeAttr('href');}catch(e){}
2856 try{$("#checkAllApprove").removeAttr('href');}catch(e){}
2857 try{$("#addRouteRegionEdit").removeAttr('href');}catch(e){}
2858 try{$(".fixedScaleLinks").addClass('hide');}catch(e){}
2859 try{$('.allToggleSubplanCourseRow').attr('href','#');}catch(e){}
2860
2861 //Pricing Screen
2862 try{ $('#viewOptionsPricing input:checkbox').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2863 try{ $('.checkAllApproveClass').addClass('hidden'); }catch(e){}
2864 try{ $('.macroSelector').attr('disabled',false); }catch(e){}
2865 try{ $('#macroDropdownLinks').attr('disabled',false); }catch(e){}
2866 try{ $('#macroTab').removeClass('hide'); }catch(e){}
2867 try{ $('#macroSelectorAllCheckbox').attr('disabled',false); }catch(e){}
2868 try{ $('.allPricingTableRenderNewRow').removeAttr('onclick'); }catch(e){}
2869
2870 //Subplan Filters
2871 try {
2872 $('#subplanPricingFilters :input').each(function(i,v){ $(this).attr('disabled',false); });
2873 $('#pricingSearchBox').removeAttr('disabled');
2874 $('#provisioningSearchBox').removeAttr('disabled');
2875 $('#subplanProvisioningFilters :input').each(function(i,v){ $(this).attr('disabled',false); });
2876 }catch(e){}
2877
2878 //Route Screen
2879 try{
2880 $('#pax').attr('disabled',false);
2881 $('#designToCost').attr('disabled',false);
2882 $('#SpecialMeal').attr('disabled',false);
2883 $('#SpecialMealCost').attr('disabled',false);
2884 $('#taxSelectorDropdown').attr('disabled',false);
2885 $('#toggleInclSpecialMeals').attr('disabled',false);
2886 $('#toggleInclTax').attr('disabled',false);
2887 }catch(e){}
2888
2889 //Prov Summary Screen
2890 try{ $('#viewOptions input:checkbox').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2891 try{ $('#filterPaging :input').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2892 try{ $('#routeFilter input:checkbox').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2893 try{ $('#specialMealFilterdropdown input:checkbox').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2894 try{ $('#provFilterdropdown input:checkbox').each(function (i,v){ $(this).attr('disabled',false); }); }catch(e){}
2895 try{ $('#associateFilter input:checkbox').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2896 try{ $('.relatedRoutesDropdown').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2897 try{ $('#provFilterdropdown input:radio').each(function(i,v){ $(this).attr('disabled',false); }); }catch(e){}
2898
2899 //Tax Screen
2900 try{
2901 $("#taxExample").attr('disabled',false);
2902 $("#facilities").attr('disabled',false);
2903 }catch(e){}
2904 }, 200);
2905 }
2906
2907 function saveTracker()
2908 {
2909 var cntTracker = 1;
2910 $('#trackerGenerateList > div').each(function(i,v){ cntTracker++; });
2911 var error = false;
2912 $('#due_date_error').addClass('hide').html('');
2913 $('#todoMsg_error').addClass('hide').html('');
2914 $('#change_reason_error').addClass('hide').html('');
2915 var notifyObj = {};
2916 var notifyFormValues = $('#notifyForm :input');
2917 var notifyObjCount = 0;
2918 var notifyObj = {};
2919 var isToDo = false;
2920 var isNotify = false;
2921 /*
2922 $.map(notifyFormValues, function(n, i) {
2923 if($(n).attr('checked') == 'checked') {
2924 if($(n).val() == 'todo') isToDo = true;
2925 notifyObj[n.name] = $(n).val();
2926 notifyObjCount++;
2927 }
2928 });
2929 */
2930 $('#notifyUserList > span').each(function(i,v){
2931 isNotify = true;
2932 var idArr = $(this).attr('id').split('user_list_');
2933 notifyObj['users_' + idArr[1]] = 'notify';
2934 });
2935 $('#todoUserList > span').each(function(i,v){
2936 isToDo = true;
2937 var idArr = $(this).attr('id').split('user_list_');
2938 notifyObj['users_' + idArr[1]] = 'todo';
2939 });
2940 if(isToDo == true && $.trim($('#profile_due_date').val()) == '') { $('#due_date_error').removeClass('hide').html('Value Required'); error = true; }
2941 if(isToDo == true && $.trim($('#todoMsg').val()) == '') { $('#todoMsg_error').removeClass('hide').html('Value Required'); error = true; }
2942 if ($('#changeReason').val() == '') { $('#change_reason_error').removeClass('hide').html('Value Required'); error = true; }
2943 if (error == true) return false;
2944 $('#trackerSaveModal').modal('hide');
2945 if ($('#saveTrackerBtn').hasClass('disabled') == true) return false;
2946 $('#saveTrackerBtn').removeClass('btn-primary').addClass('btn-warning disabled').html('Sending...');
2947 var supplier_id = 0
2948 $('.supplierTab').each(function(i,v){ if ($(this).hasClass('active') == true) { var supplierArr = $(this).attr('id').split('_'); supplier_id = supplierArr[1]; return; } });
2949 var userDetails = JSON.parse(sessionStorage['userDetails']);
2950 var supplierSession = JSON.parse(sessionStorage['supplierSession']);
2951 var dataString = $("#changeReason").serialize();
2952 var supplier_id = supplierSession[0];
2953 var plan_id = $('#plan_id').val();
2954 var start_date = $.trim($('#plan_start_date').html());
2955 //$('#trackerPostSaveModal').modal('show');
2956 $('#primary_menu > li').each(function(){ if ($(this).hasClass('active')) { supplier_id = ($(this).attr('data-supplier')); return; } });
2957
2958 //START - GET NOTIFY VALUES //
2959 notifyObj['due_date'] = $('#profile_due_date').val();
2960 notifyObj['supplier_id'] = supplier_id;
2961 notifyObj['plan_id'] = $('#plan_id').val();
2962 notifyObj['plan_code'] = $.trim($('#plan_descr').html());
2963 notifyObj['plan_start_date'] = $.trim($('#plan_start_date').html());
2964 notifyObj['plan_end_date'] = $.trim($('#plan_end_date').html());
2965 notifyObj['todoMsg'] = $('#todoMsg').val();
2966 notifyObj['headerid'] = $('#headerid').val() == null ? 0 : parseFloat($('#headerid').val());
2967 notifyObj['filename'] = '';
2968 notifyObj['changeReason'] = $('#changeReason').val();
2969 //END - GET NOTIFY VALUES//
2970
2971
2972 //START - GET TODO COMPLETE //
2973 var markComplete = false; var completeFormValues = $('#todoCompleteForm :input'); var completeObjCount = 0; var completeObj = {};
2974 $.map(completeFormValues, function(n, i) { if ($(n).attr('checked') == 'checked') { completeObj['todo_id'] = $(n).val(); markComplete = true; } completeObj['comment'] = $('#changeReason').val(); completeObj['action'] = 'Complete'; completeObjCount++; });
2975 var completeTodoObj = JSON.stringify(completeObj);
2976 //END - GET TODO COMPLETE//
2977
2978 if ($('#generateTracker').attr('checked') != undefined) {
2979 $('#trackerGenerateList').append('<div class="span5 alert alert-error" id="generateTrackerNotice_' + parseFloat($('#plan_id').val()) + '"><img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/><strong>Generating Tracker for</strong> ' + $.trim($('#plan_descr').html()) + ': ' + $.trim($('#plan_start_date').html()) + ' - ' + $.trim($('#plan_end_date').html()) + '</div>');
2980 if (cntTracker < 2) $('#saveTrackerBtn').removeClass('btn-warning disabled').addClass('btn-primary').html('Send');
2981
2982 $.ajax({
2983 type: "POST",
2984 url: base_url + 'excel/tracker_create/plan_id/' + $('#plan_id').val() + '/supplier_id/' + supplier_id + '/start_date/' + start_date + '/user_id/' + userDetails['userID'],
2985 data: dataString,
2986 success: function(data, textStatus, jqXHR){
2987 if(data)
2988 {
2989 $.getJSON(base_url + 'index.php/api/mpd/tracker_changes/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json', function(data)
2990 {
2991 var trackerStr = JSON.stringify(data);
2992 sessionStorage['trackerInfo'] = trackerStr;
2993 trackerHighlight.headers();});
2994 //$('#trackerPostSaveModal').modal('hide');
2995 //refreshScreen();
2996 var filenameArr = data.split('|');
2997 notifyObj['filename'] = $('#attachTracker').attr('checked') != undefined ? filenameArr[1] : '';
2998 notifyObj['changeReason'] = notifyObj['changeReason'] + ($.trim(filenameArr[0]) == '' ? '' : '<p> </p><p>Routes Affected:' + filenameArr[0] + '</p>');
2999 var processNotify = JSON.stringify(notifyObj);
3000 //$('#generateTrackerNotice_' + plan_id).remove();
3001 $('#saveTrackerBtn').removeClass('btn-warning disabled').addClass('btn-primary').html('Send');
3002 if (isNotify == true || isToDo == true) createToDo(processNotify); if (markComplete == true) completeTodo(completeTodoObj);
3003 //trackerNotify(supplier_id, data, notifyObj, notifyObjCount);
3004 }
3005 }
3006 });
3007 } else {
3008 var processNotify = JSON.stringify(notifyObj);
3009 if (isNotify == true || isToDo == true) createToDo(processNotify);
3010 if (markComplete == true) completeTodo(completeTodoObj);
3011 $('#saveTrackerBtn').removeClass('btn-warning disabled').addClass('btn-primary').html('Save');
3012 $('#trackerSaveModal').modal('hide');
3013 }
3014 }
3015
3016 function refreshScreen()
3017 {
3018 var subplanInfoOld = JSON.parse(sessionStorage['subplan_info']);
3019 $.getJSON(base_url + 'index.php/api/mpd/get_subplan_info/plan_id/' + subplanInfoOld['plan_id'] + '/' + api_key + 'format/json', function (subplanInfo) {
3020 sessionStorage['subplan_info'] = JSON.stringify(subplanInfo);
3021 MPLSubplanComponent.parseSubplanInfo();
3022 });
3023 var activeArr = JSON.parse(sessionStorage['refreshScreen']);
3024 if(activeArr[0] == 'pricing')
3025 setTimeout(function() {getServicesByPricing(activeArr[1],activeArr[2])}, 1000);
3026 else if(activeArr[0] == 'provsummary')
3027 setTimeout(function() {showProvSummary(activeArr[1],activeArr[2])}, 1000);
3028 else if(activeArr[0] == 'tax')
3029 setTimeout(function() {productionPlanTax.facilities(activeArr[1],activeArr[2])}, 1000);
3030 else if(activeArr[0] == 'tracker')
3031 setTimeout(function() {showTracker(activeArr[1],activeArr[2])}, 1000);
3032 else if(activeArr[0] == 'summary')
3033 setTimeout(function() {showSummary(activeArr[1],activeArr[2])}, 1000);
3034 else
3035 {
3036 var header_id = JSON.parse(sessionStorage['activeHeaderID']);
3037 getServicesByRoute(parseFloat(header_id));
3038
3039 }
3040 }
3041
3042 function trackerNotify(supplier_id,filename,notifyObj,notifyObjCount)
3043 {
3044 //START - GET NOTIFY AND TODO VALUES//
3045 var isToDo = false;
3046 /*
3047 var filenameArr = filename.split('|');
3048 var notifyFormValues = $('#notifyForm :input');
3049 var notifyObjCount = 0;
3050 var notifyObj = {};
3051 $.map(notifyFormValues, function(n, i) {
3052 if($(n).attr('checked') == 'checked')
3053 {
3054 if($(n).val() == 'todo')
3055 isToDo = true;
3056
3057 notifyObj[n.name] = $(n).val();
3058 notifyObjCount++;
3059 }
3060 });
3061
3062 notifyObj['filename'] = $('#attachTracker').attr('checked') != undefined ? filenameArr[1] : '';
3063 notifyObj['due_date'] = $('#profile_due_date').val();
3064 notifyObj['supplier_id'] = supplier_id;
3065 notifyObj['plan_id'] = $('#plan_id').val();
3066 notifyObj['plan_code'] = $.trim($('#plan_descr').html());
3067 notifyObj['plan_start_date'] = $.trim($('#plan_start_date').html());
3068 notifyObj['plan_end_date'] = $.trim($('#plan_end_date').html());
3069 notifyObj['changeReason'] = $('#changeReason').val() + '<p> </p><p>Routes Affected:' + filenameArr[0] + '</p>';
3070 notifyObj['todoMsg'] = $('#todoMsg').val();
3071 notifyObj['headerid'] = $('#headerid').val() == null ? 0 : parseFloat($('#headerid').val());
3072 */
3073
3074 /*
3075 ///////////////WRONG PLACE
3076 if(isToDo == true && $.trim($('#profile_due_date').val()) == '')
3077 {
3078 $('#due_date_error').removeClass('hide').html('Value Required');
3079 error = true;
3080 }
3081 if(isToDo == true && $.trim($('#todoMsg').val()) == '')
3082 {
3083 $('#todoMsg_error').removeClass('hide').html('Value Required');
3084 error = true;
3085 }
3086 */
3087
3088 var processNotify = JSON.stringify(notifyObj);
3089 //END - GET NOTIFY AND TODO VALUES//
3090
3091 //START - GET TODO COMPLETE //
3092 var markComplete = false;;
3093 var completeFormValues = $('#todoCompleteForm :input');
3094 var completeObjCount = 0;
3095 var completeObj = {};
3096 $.map(completeFormValues, function(n, i) {
3097
3098 if ($(n).attr('checked') == 'checked')
3099 {
3100 completeObj['todo_id'] = $(n).val();
3101 markComplete = true;
3102 }
3103
3104 completeObj['comment'] = $('#changeReason').val();
3105 completeObj['action'] = 'Complete';
3106
3107 completeObjCount++;
3108 });
3109 var completeTodoObj = JSON.stringify(completeObj);
3110 //END - GET TODO COMPLETE//
3111
3112 if (notifyObjCount > 0)
3113 createToDo(processNotify);
3114
3115 if (markComplete == true)
3116 completeTodo(completeTodoObj);
3117 }
3118
3119 function validateRetroSubmit(retroField)
3120 {
3121 //CLEAR ERRORS : START
3122 $('.retroStartDateError').addClass('hide');
3123 $('.retroEndDateError').addClass('hide');
3124 //CLEAR ERRORS : END
3125 var plan_start_date = $('#plan_start_date').html();
3126 var plan_end_date = $('#plan_end_date').html();
3127 var retro_start_date = '';
3128 var retro_end_date = '';
3129 var canProceed = true;
3130 if ($.trim(retroField) == 'retro_profile_start_date' && $('#applyRetro').attr('checked') != undefined){
3131 retro_start_date = $('#retro_profile_start_date').val();
3132 retro_end_date = $('#retro_profile_end_date').val();
3133 }
3134 if ($.trim(retroField) == 'retro_components_start_date' && $('#applyComponentsRetro').attr('checked') != undefined){
3135 retro_start_date = $('#retro_components_profile_start_date').val();
3136 retro_end_date = $('#retro_components_profile_end_date').val();
3137 }
3138 if ($.trim(retroField) == 'retro_subplan_profile_start_date' && $('#applySubplanRetro').attr('checked') != undefined){
3139 retro_start_date = $('#retro_subplan_profile_start_date').val();
3140 retro_end_date = $('#retro_subplan_profile_end_date').val();
3141 }
3142
3143 if (new Date(plan_start_date) > new Date(retro_start_date)){
3144 $('.retroStartDateError').removeClass('hide');
3145 canProceed = false;
3146 }
3147 if (new Date(plan_end_date) < new Date(retro_start_date)){
3148 $('.retroStartDateError').removeClass('hide');
3149 canProceed = false;
3150 }
3151 if (new Date(plan_end_date) < new Date(retro_end_date)){
3152 $('.retroEndDateError').removeClass('hide');
3153 canProceed = false;
3154 }
3155 if (new Date(plan_start_date) > new Date(retro_end_date)){
3156 $('.retroEndDateError').removeClass('hide');
3157 canProceed = false;
3158 }
3159 console.log(canProceed + ' - ' + new Date(plan_start_date) + ' - ' + new Date(retro_start_date));
3160 return canProceed;
3161 }
3162
3163 function submitFormValues()
3164 {
3165 if (validateRetroSubmit('retro_profile_start_date') == false){
3166 return;
3167 }
3168
3169 $('#due_date_error').addClass('hide').html('');
3170 $('#todoMsg_error').addClass('hide').html('');
3171 var error = false;
3172 var activeArr = {};
3173
3174 $('#secondary_menu > li').each(function (i,v) {
3175 if ($(v).hasClass('active')) {
3176 var activeTab = ($(v).attr('id'));
3177 activeArr = activeTab.split('_');
3178 return;
3179 }
3180 });
3181
3182 sessionStorage['refreshScreen'] = JSON.stringify(activeArr);
3183 var summaryDeleteRouteArr = [];
3184
3185 if ($('.provsummary').length > 0) {
3186 var objCount = 0;
3187 var obj = {};
3188 $('.valueHasChanged').each(function() {
3189 if ($(this).attr('checked') == 'checked') {
3190 obj[$(this).attr('name')] = 'checked';
3191 } else {
3192 obj[$(this).attr('name')] = $(this).val();
3193 }
3194 objCount++;
3195 });
3196 obj['provsummary'] = '';
3197 obj['changeReason'] = '';
3198 obj['supplier_id'] = $('.supplier_id').val();
3199 obj['plan_id'] = $('#plan_id').val();
3200 } else if ($('.plpprov').length > 0) {
3201 var objCount = 0;
3202 var obj = {};
3203 $('.valueHasChanged').each(function() {
3204 if ($(this).attr('checked') == 'checked') {
3205 obj[$(this).attr('name')] = 'checked';
3206 } else {
3207 obj[$(this).attr('name')] = $(this).val();
3208 }
3209 objCount++;
3210 });
3211 obj['plpprov'] = '';
3212 obj['changeReason'] = '';
3213 obj['supplier_id'] = $('.supplier_id').val();
3214 obj['plan_id'] = $('#plan_id').val();
3215 } else {
3216 // CHECK IF ROUTES DELETED FROM BUDGET SUMMARY : START //
3217 if ($('.summaryDelete').size() > 1) {
3218 $('.summaryDelete').each(function() {
3219 if ($(this).attr('checked') != undefined) {
3220 summaryDeleteRouteArr.push($(this).attr('id'));
3221 }
3222 });
3223 }
3224 // CHECK IF ROUTES DELETED FROM BUDGET SUMMARY : END //
3225
3226 //START - GET PAGE VALUES//
3227 var formValues = $('#ServiceRouteForm :input');
3228 var objCount = 0;
3229 var obj = {};
3230 $.map(formValues, function(n, i) {
3231 if (n.name.search('newServiceRouteRegion_') == 0) {
3232 var rrArr = [];
3233 $('option:selected', $(n)).each(function (idxOption, itemOption) {
3234 rrArr.push($(itemOption).val());
3235 });
3236 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
3237 if (rrArr.length == subplanInfo['available_route_regions'].length) {
3238 obj[n.name] = [];
3239 } else {
3240 obj[n.name] = rrArr;
3241 }
3242 } else {
3243 if ($(n).attr('checked') == 'checked') {
3244 obj[n.name] = 'checked';
3245 } else {
3246 obj[n.name] = $(n).val();
3247 }
3248 }
3249 objCount++;
3250 });
3251
3252 obj['changeReason'] = '';//$('#changeReason').val();
3253 // END - GET PAGE VALUES//
3254 }
3255
3256 var removeRouteRegionHTML = '';
3257
3258 if ($('#routeRegionDropdownMultiple').length){
3259 var routeRegionSelectedData = {};
3260 $('#routeRegionDropdownMultiple option:not(:selected)').each(function(ri,rv){
3261 routeRegionSelectedData[rv.value] = rv.value;
3262 removeRouteRegionHTML += '<li id="subMenu_' + rv.value + '" data="getServicesByRoute,' + rv.value + '"><a href="javascript:alertChanges(\'subMenu_' + rv.value + '\');">' + rv.text + '</a></li>';
3263 });
3264 obj['removeRouteRegion'] = routeRegionSelectedData;
3265 }
3266
3267 var userDetails = JSON.parse(sessionStorage['userDetails']);
3268 var ajaxUrl = base_url + 'index.php/api/mpd/update_services/user_id/' + userDetails['userID'] + '/' + api_key + 'format/json';
3269
3270 if (error == true) return;
3271 if ($('#saveChanges').hasClass('btn-warning')) return;
3272
3273 // HIDE ROUTES IN DROPDOWN IF DELETED FROM BUDGET SUMMARY : START //
3274 if (summaryDeleteRouteArr.length > 0) {
3275 $.each(summaryDeleteRouteArr, function (i, v) {
3276 var idStr = v;
3277 var idArr = idStr.split('_');
3278 try {
3279 $('#subMenu_' + idArr[1]).remove();
3280 } catch(e) {}
3281 });
3282 }
3283 // HIDE ROUTES IN DROPDOWN IF DELETED FROM BUDGET SUMMARY : END //
3284
3285 $('#saveChanges')
3286 .html('Saving..')
3287 .removeClass('btn-primary')
3288 .addClass('btn-warning')
3289 .attr("disabled",true);
3290
3291 // Route Regions
3292 MPLSubplanComponent.submitRouteRegions();
3293 // Service rows calculated at subplan level
3294 MPLSubplanComponent.submitServiceRowsCalculatedAtSubplanLevel();
3295
3296 if ($('#applyRetro').attr('checked') != undefined && $.trim($('#retro_profile_start_date').val()) != '' && $.trim($('#retro_profile_end_date').val()) != ''){
3297 obj['ApplyRetroDate'] = $('#retro_profile_start_date').val();
3298 obj['ApplyRetroEndDate'] = $('#retro_profile_end_date').val();
3299 }
3300 //console.log(ajaxUrl);
3301 //console.log(JSON.stringify(obj));
3302 //return;
3303
3304 if (objCount > 0) {
3305 $('#saveServices')
3306 .html('Saving..')
3307 .removeClass('btn-primary')
3308 .addClass('btn-warning')
3309 .attr("disabled",true);
3310 setTimeout(function() {
3311 $.ajax({
3312 type: 'PUT',
3313 contentType: 'application/json',
3314 url: ajaxUrl,
3315 dataType: "json",
3316 data: JSON.stringify(obj),
3317 success: function(data, textStatus, jqXHR) {
3318 $('#routeDropDownContainer').append(removeRouteRegionHTML);
3319 $('#applyRetro').attr('checked', false);
3320 $('#retro_profile_start_date').val('');
3321 $('#retro_profile_end_date').val('');
3322 postSave(activeArr);
3323 //getAnnualisedFigures();
3324 },
3325 error: function(jqXHR, textStatus, errorThrown) {
3326 $('#routeDropDownContainer').append(removeRouteRegionHTML);
3327 $('#applyRetro').attr('checked', false);
3328 $('#retro_profile_start_date').val('');
3329 $('#retro_profile_end_date').val('');
3330 postSave(activeArr);
3331 //getAnnualisedFigures();
3332 }
3333 });
3334 }, 1000);
3335 }
3336 }
3337
3338 function postSave(activeArr)
3339 {
3340 $('#saveServices').html('Save').removeClass('btn-warning').addClass('btn-primary').attr("disabled",false);
3341 $('#saveChanges').html('Save changes').removeClass('btn-warning').addClass('btn-primary').attr("disabled",false);
3342
3343 $('#isModified').remove();
3344 $('#productionPlanSaveChanges').modal('hide');
3345 $('#changeReason_countdown').val('250');
3346 $('#changeReason').val('');
3347 $('#changeReasonDiv').remove();
3348 $('#saveServices').addClass('disabled');
3349 if (parseFloat($('#proceedToNotify').html()) == 1) {
3350 modalTracker();
3351 }
3352
3353 //getPlanServiceCodes();
3354 getAllPlans();
3355 SSEV.remove($('#plan_id').val());
3356
3357 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
3358 if (subplanInfo != undefined && subplanInfo['plan_id'] != undefined) {
3359 MPLSubplanComponent.reloadSubplanInfo(false);
3360 }
3361
3362 if (parseInt($('#servicePlanRouteRegionProceed').attr('data-proceedTo')) != 0){
3363 getServicesByRoute(parseInt($('#servicePlanRouteRegionProceed').attr('data-proceedTo')));
3364 return;
3365 }
3366
3367 if ($('#proceedTo').html() != '') {
3368 //refreshRouteDropdown.get();
3369 var id = $('#proceedTo').html();
3370 var data = ($('#' + id).attr('data'));
3371 var dataPrimaryTabs = id.split('_');
3372
3373 if (dataPrimaryTabs[0] == 'getServiceProfiles' || dataPrimaryTabs[0] == 'showExistingPlans') {
3374 if (dataPrimaryTabs[0] == 'getServiceProfiles') {
3375 getServiceProfiles();
3376 } else {
3377 showExistingPlans(0,parseFloat(dataPrimaryTabs[2]));
3378 }
3379 return;
3380 }
3381
3382 if (data == undefined || data.indexOf(',') == -1) {
3383 refreshScreen();
3384 return;
3385 }
3386
3387 var dataArr = data.split(',');
3388
3389 if ($.trim(dataArr[0]) == 'getServicesByPricing') {
3390 setTimeout(function() {
3391 getServicesByPricing(dataArr[1],dataArr[2])
3392 }, 1000);
3393 } else if ($.trim(dataArr[0]) == 'getTracker') {
3394 setTimeout(function() {
3395 showTracker(dataArr[1],dataArr[2])
3396 }, 1000);
3397 } else if ($.trim(dataArr[0]) == 'getSummary') {
3398 setTimeout(function() {
3399 showSummary(dataArr[1],dataArr[2])
3400 }, 1000);
3401 } else if ($.trim(dataArr[0]) == 'getProvSummary') {
3402 setTimeout(function() {
3403 showProvSummary(dataArr[1],dataArr[2])
3404 }, 1000);
3405 } else if ($.trim(dataArr[0]) == 'plpgetProvSummary') {
3406 setTimeout(function() {
3407 provSummaryPLP.provSummaryTable(dataArr[1],dataArr[2])
3408 }, 1000);
3409 } else if ($.trim(dataArr[0]) == 'getTax') {
3410 setTimeout(function() {
3411 productionPlanTax.facilities(dataArr[1],dataArr[2])
3412 }, 1000);
3413 } else if ($.trim(dataArr[0]) == 'getSubplan') {
3414 setTimeout(function () {
3415 MPLSubplanComponent.subplanTabClicked();
3416 }, 1000);
3417 } else {
3418 setTimeout(function() {
3419 getServicesByRoute(dataArr[1],dataArr[2],dataArr[3],dataArr[4],dataArr[5],dataArr[6]);
3420 updateRouteDropdown.get(true);
3421 }, 1000);
3422 }
3423
3424 $('#proceedTo').html('');
3425 } else {
3426 refreshScreen();
3427 }
3428 }
3429
3430 function completeTodo(obj)
3431 {
3432 $.ajax({
3433 type: 'PUT',
3434 contentType: 'application/json',
3435 url: base_url + 'index.php/api/todo/mark_complete/' + api_key + 'format/json',
3436 dataType: "json",
3437 data: obj,
3438 success: function(data, textStatus, jqXHR){ },
3439 error: function(jqXHR, textStatus, errorThrown){
3440 //alert('error: ' + textStatus);
3441 //console.log(jqXHR);
3442 }
3443 });
3444 var plan_id = $('#plan_id').val();
3445 if (localStorage['todo_' + plan_id] && $.trim(localStorage['todo_' + plan_id]) != '')
3446 {
3447 getMyToDo(parseFloat(localStorage['todo_' + plan_id]));
3448 localStorage['todo_' + plan_id] = '';
3449 }
3450 }
3451
3452 function createToDo(obj)
3453 {
3454 var userDetails = JSON.parse(sessionStorage['userDetails']); var planStatus = JSON.parse(sessionStorage['planStatusSession']);
3455 $.ajax({
3456 type: 'POST',
3457 contentType: 'application/json',
3458 url: base_url + 'index.php/api/todo/create_todo/user_id/' + userDetails['userID'] + '/' + api_key + 'format/json',
3459 dataType: "json",
3460 data: obj,
3461 success: function(data, textStatus, jqXHR){ var parseObj = JSON.parse(obj); if($('#generateTrackerNotice_' + parseObj['plan_id']).is(':visible')) $('#generateTrackerNotice_' + parseObj['plan_id']).remove(); if (parseFloat(planStatus[0]) == 2) create_dtc_snapshot(parseObj['plan_id'],userDetails['userID']);},
3462 error: function(jqXHR, textStatus, errorThrown){ var parseObj = JSON.parse(obj); if($('#generateTrackerNotice_' + parseObj['plan_id']).is(':visible')) $('#generateTrackerNotice_' + parseObj['plan_id']).remove(); if (parseFloat(planStatus[0]) == 2) create_dtc_snapshot(parseObj['plan_id'],userDetails['userID']);}
3463 });
3464 }
3465
3466 function getChangeReason()
3467 {
3468 $('#changeReasonDiv').remove();
3469
3470 var reasonChangeHTML = '';
3471 reasonChangeHTML += '<div id="changeReasonDiv"><div class="controls"><label class="checkbox">Generate Tracker?<input type="checkbox" id="generateTracker" checked></label></div><div class="controls"><label class="checkbox">Attach Tracker to Notification?<input type="checkbox" id="attachTracker"></label></div>';
3472 reasonChangeHTML += '<div class="control-group">';
3473 reasonChangeHTML += '<label for="changeReason" class="control-label-required">Comment:</label>';
3474 reasonChangeHTML += '<div class="controls">';
3475 reasonChangeHTML += '<textarea class="input-xlarge" name="changeReason" id="changeReason" rows="3" onKeyDown="limitText(this.id,250);" onKeyUp="limitText(this.id,250);"></textarea>';
3476 reasonChangeHTML += '<div class="help-inline"><input disabled type="text" class="input-mini" id="changeReason_countdown" value="250"> characters left.</div>';
3477 reasonChangeHTML += '<div class="alert alert-error hide" id="change_reason_error"></div>';
3478 reasonChangeHTML += '</div>';
3479 reasonChangeHTML += '</div>';
3480 reasonChangeHTML += '</div>';
3481
3482 return reasonChangeHTML;
3483 }
3484
3485
3486
3487 function naturalSave(notify) {
3488 if ($('#saveServices').hasClass('disabled')) {
3489 if (notify == true) modalTracker();
3490 return;
3491 }
3492
3493 if (checkForNewRows() == true)
3494 return;
3495
3496 //$('#saveModalHeader').addClass('hide');
3497 $('#proceedToNotify').html((notify == true ? 1 : 0));
3498 $('#productionPlanSaveChanges').modal('show');
3499 $('#productionPlanSaveChangesBody').addClass('hide');
3500 //$('#productionPlanSaveChangesBody').prepend(getChangeReason());
3501 //$('#notifyWrapper').addClass('hide');
3502 //getMyTasks();
3503 }
3504 function modalTracker()
3505 {
3506 $('#trackerSaveModal').modal('show');
3507 $('#trackerSaveChangesBody').prepend(getChangeReason());
3508 $('#notifyWrapper').addClass('hide');
3509 getMyTasks();
3510 getUsers();
3511 if(parseFloat($('#planStatusHeader').html()) != 1) { $('#generateTracker').attr('disabled', true); }
3512 }
3513
3514
3515 function showApplyRetro(){
3516 var planStartDate = $('#plan_start_date').html();
3517 var planEndDate = $('#plan_end_date').html();
3518 $('.retroStartDateError').addClass('hide');
3519 $('.retroEndDateError').addClass('hide');
3520 try{
3521 $('#retro_profile_start_date').val(planStartDate);
3522 } catch(e){}
3523 try{
3524 $('#retro_profile_end_date').val(planEndDate);
3525 } catch(e){}
3526 try{
3527 $('#retro_components_profile_start_date').val(planStartDate);
3528 } catch(e){}
3529 try{
3530 $('#retro_components_profile_end_date').val(planEndDate);
3531 } catch(e){}
3532 $('.applyRetroContainer').addClass('hide');
3533 if (parseFloat($('#planStatusHeader').html()) == 2){
3534 $('.applyRetroContainer').removeClass('hide');
3535 }
3536 }
3537
3538 function naturalSave(notify)
3539 {
3540 if ($('#saveServices').hasClass('disabled'))
3541 {
3542 if (notify == true) modalTracker();
3543 return;
3544 }
3545
3546 if(checkForNewRows() == true)
3547 return;
3548
3549 //$('#saveModalHeader').addClass('hide');
3550 $('#proceedToNotify').html((notify == true ? 1 : 0));
3551 $('#productionPlanSaveChanges').modal('show');
3552 showApplyRetro();
3553 $('#productionPlanSaveChangesBody').addClass('hide');
3554 //$('#productionPlanSaveChangesBody').prepend(getChangeReason());
3555 //$('#notifyWrapper').addClass('hide');
3556 //getMyTasks();
3557 }
3558
3559 function getMyTasks()
3560 {
3561 $('#tasksPane').html('');
3562 var plan_id = $('#plan_id').val();
3563 if (localStorage['todo_' + plan_id] && $.trim(localStorage['todo_' + plan_id]) != '')
3564 var pass_todo_id = localStorage['todo_' + plan_id];
3565 else return;
3566
3567 $.ajax({
3568 type: 'GET',
3569 contentType: 'application/json',
3570 url: base_url + "index.php/api/todo/my_todo/todo_id/" + pass_todo_id + "/" + api_key + "format/json",
3571 dataType: "json",
3572 success: function(data, textStatus, jqXHR){
3573 if (data['aaData'][0]['status'] == 'Overdue' )
3574 var alertClass = 'alert-error';
3575 else if (data['aaData'][0]['status'] == 'Active' )
3576 var alertClass = 'alert-block';
3577
3578 if (data['aaData'][0]['status'] != 'Completed' )
3579 {
3580 var statusText = (parseFloat(data['aaData'][0]['completed']) == 1 || parseFloat(data['aaData'][0]['in_progress']) == 1 ? data['aaData'][0]['date_completed_gmt'] : (data['aaData'][0]['intervalSign'] == '-' ? data['aaData'][0]['intervalDays'] + ' overdue' : 'Due in ' + data['aaData'][0]['intervalDays']))
3581 var returnHTML = '<div>Mark ToDo complete?</div><form class="form-horizontal" id="todoCompleteForm"><blockquote class="alert ' + alertClass + '"><input type="checkbox" name="task" id="task" value="' + parseFloat(data['aaData'][0]['todo_id']) + '"/> <bold>' + data['aaData'][0]['message'] + ' - ' + statusText + '</bold><small>' + data['aaData'][0]['assignedTo'] + '</small></blockquote></form>';
3582 $('#tasksPane').html(returnHTML);
3583 }
3584 }
3585 });
3586
3587
3588 return;
3589
3590/*
3591 // Radek: I've comented this block as it is unreachable
3592 $("#tasksPane").removeClass('hide');
3593 $("#tasksTable > tbody > tr").remove();
3594 $('#tasksTable').dataTable().fnDestroy();
3595
3596 $("#tasksTable > tbody").append('<tr><td colspan=\"4\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></td></tr>');
3597
3598 setTimeout(function() {
3599
3600 var oTable = $('#tasksTable').dataTable( {
3601 "sDom": "<'row'<'span2'i><'span10'f>r>t",
3602 "sPaginationType": "bootstrap",
3603 "sScrollX": "99%",
3604 "sScrollY": "60px",
3605 "bPaginate": false,
3606 "bInfo": false,
3607 "oLanguage": {
3608 "sLengthMenu": "_MENU_ records per page"
3609 },
3610 "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
3611 if (aData['status'] == 'Completed' )
3612 $(nRow).hide();
3613 return nRow;
3614 },
3615 "bProcessing": true,
3616 "sAjaxSource": base_url + "index.php/api/todo/my_todo/" + api_key + "format/json",
3617 "aaSorting": [[ 0, "desc" ]],
3618 "aoColumns": [
3619 { "mData": "due_date_gmt", "bVisible": false},
3620 { "mData": "status"},
3621 { "mData": null, "bSortable": false, "fnRender": function(oObj){ return '<input type="radio" name="task" id="task" value="' + parseFloat(oObj.aData.todo_id) + '"/>' }},
3622 { "mData": "createdByFname", "fnRender": function(oObj){ return oObj.aData.createdByFname + ' ' + oObj.aData.createdByLname}},
3623 { "mData": "message"}
3624 ]
3625
3626
3627 oTable.fnAdjustColumnSizing();
3628 $("#tasksTable").css("width","100%");
3629
3630 var docHeight = $(window).height();
3631 var modalTop = parseInt((docHeight/10)*6) + "px";
3632 var modalHeight = parseInt((docHeight/10)*7) + "px";
3633
3634 $('#productionPlanSaveChanges').css("top",modalTop);
3635 $('#productionPlanSaveChangesBody').css("max-height",modalHeight);
3636
3637 }, 1000);
3638*/
3639 }
3640
3641 function getUsers()
3642 {
3643 $('#productionPlanSaveChangesBody').append('<div id="userSpinner" style="padding:0 25px; text-align:center;"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
3644
3645 $('#notifyUserDiv').addClass('hide');
3646 $('#todoUserDiv').addClass('hide');
3647 $('#notifyUserList').html('');
3648 $('#todoUserList').html('');
3649 $('#todoMsg').val('');
3650
3651 $("#users > tbody > tr").remove();
3652 $('#users').dataTable().fnDestroy();
3653 var plan_id = JSON.parse(sessionStorage['planSession']);
3654
3655 setTimeout(function() {
3656 var oTable = $('#users').dataTable( {
3657 "sDom": "<'row'<'span2'i><'span10'f>r>t",
3658 "sPaginationType": "bootstrap",
3659 "sScrollX": "99%",
3660 "bPaginate": false,
3661 "bInfo": false,
3662 "bProcessing": true,
3663 "sAjaxSource": base_url + "index.php/api/userprofiles/profile_users/plan_id/" + plan_id + "/" + api_key + "format/json",
3664 "aoColumns": [
3665 {
3666 "mData": null, "bSortable": false,
3667 "fnRender": function (oObj) {
3668 return '<span style="padding: 1px 1px 20px 10px;"><input onclick="addNotifyUsers(\'Notify\',' + oObj.aData.user_id + ',\'' + $.trim(oObj.aData.first_name) + '\')" class="input-mini" id="notify_users_' + oObj.aData.user_id + '" name="users_' + oObj.aData.user_id + '" type="radio" value="notify"/></span>';
3669 }
3670 },
3671 {
3672 "mData": null, "bSortable": false,
3673 "fnRender": function (oObj) {
3674 return '<span style="padding: 1px 1px 20px 10px;"><input onclick="addNotifyUsers(\'ToDo\',' + oObj.aData.user_id + ',\'' + $.trim(oObj.aData.first_name) + '\')" class="input-mini" id="todo_users_' + oObj.aData.user_id + '" name="users_' + oObj.aData.user_id + '" type="radio" value="todo"/></span>';
3675 }
3676 },
3677 {
3678 "mData": "first_name",
3679 "fnRender": function (oObj) {
3680 return $.trim(oObj.aData.first_name) + ' ' + $.trim(oObj.aData.last_name);
3681 }
3682 },
3683 { "mData": "organisation"},
3684 { "mData": "position", "bSortable": false}
3685 ]
3686 } );
3687
3688 oTable.fnAdjustColumnSizing();
3689
3690 var docHeight = $(window).height();
3691 var modalTop = parseInt((docHeight/10)*4) + "px";
3692 var modalHeight = parseInt((docHeight/10)*7) + "px";
3693
3694 $("#users").css("width","100%");
3695 $('#userSpinner').remove();
3696 $('#due_date_wrapper').remove();
3697 $('#notifyWrapper').removeClass('hide');
3698 // $('#trackerSaveModal').css("top", modalTop);
3699 $('#trackerSaveChangesBody').css("max-height",modalHeight);
3700
3701 $('#profile_due_date').val('');
3702
3703 }, 1000);
3704 }
3705
3706 function addNotifyUsers(action, user_id, user_name)
3707 {
3708 if (action == 'Notify')
3709 {
3710 if ($('#notifyUserDiv').hasClass('hide') == true)
3711 $('#notifyUserDiv').removeClass('hide');
3712
3713 var exists = false;
3714
3715 $('#notifyUserList > span').each(function(i,v){
3716 if($(v).attr('id') == 'user_list_' + user_id)
3717 {
3718 exists = true;
3719 return;
3720 }
3721 });
3722
3723 if (exists == true)
3724 return;
3725
3726 $('#todoUserList > span').each(function(i,v){
3727 if($(v).attr('id') == 'user_list_' + user_id)
3728 $('#' + $(v).attr('id')).remove();
3729 });
3730
3731 $('#notifyUserList').append('<span style="background-color: #3a87ad; color: #ffffff;" id="user_list_' + user_id + '">' + user_name + '<a href="javascript:deleteUserList(' + user_id + ')"><i class="icon-remove"></i></a> </span>');
3732 trimUserList();
3733 }
3734 else
3735 {
3736 if ($('#todoUserDiv').hasClass('hide') == true)
3737 $('#todoUserDiv').removeClass('hide');
3738
3739 var exists = false;
3740
3741 $('#todoUserList > span').each(function(i,v){
3742 if($(v).attr('id') == 'user_list_' + user_id)
3743 {
3744 exists = true;
3745 return;
3746 }
3747 });
3748
3749 if (exists == true)
3750 return;
3751
3752 $('#notifyUserList > span').each(function(i,v){
3753 if($(v).attr('id') == 'user_list_' + user_id)
3754 $('#' + $(v).attr('id')).remove();
3755 });
3756
3757 $('#todoUserList').append('<span style="background-color: #3a87ad; color: #ffffff;" id="user_list_' + user_id + '">' + user_name + '<a href="javascript:deleteUserList(' + user_id + ')"><i class="icon-remove"></i></a> </span>');
3758 trimUserList();
3759 }
3760 }
3761
3762 function deleteUserList(id)
3763 {
3764 $('#user_list_' + id).remove();
3765
3766 $('#notify_users_' + id).attr('checked', false);
3767 $('#todo_users_' + id).attr('checked', false);
3768
3769 trimUserList();
3770 }
3771
3772 function trimUserList()
3773 {
3774 if ($('#notifyUserList').html() == '')
3775 $('#notifyUserDiv').addClass('hide');
3776
3777 if ($('#todoUserList').html() == '')
3778 $('#todoUserDiv').addClass('hide');
3779 }
3780
3781 function alertChanges(id,mainTabs)
3782 {
3783
3784 if (!$('#SubplanContainer').hasClass('hide')) {
3785 if (MPLSubplanComponent.isSubplanModified()) {
3786 $('#subplanSaveButton')
3787 .attr('data-continue-id', (id == undefined ? '' : id))
3788 .attr('data-continue-mainTabs', (mainTabs == undefined ? '' : mainTabs));
3789 setTimeout(function() {
3790 MPLSubplanComponent.alertChanges();
3791 }, 100);
3792 return;
3793 } else {
3794 MPLSubplanComponent.hideSubplanPage();
3795 }
3796 }
3797
3798 $('#lockedAlert').remove();
3799 $('#unlockedAlert').remove();
3800
3801 if(checkForNewRows() == true)
3802 return;
3803 if (parseFloat($('#planStatusHeader').html()) == 2) $('#proceedToNotify').html(1);
3804
3805 if (id == '' && mainTabs != undefined)
3806 {
3807 if ($('#isModified').length > 0)
3808 {
3809 $('#saveModalHeader').removeClass('hide');
3810 $('#productionPlanSaveChanges').modal('show');
3811 showApplyRetro();
3812 $('#productionPlanSaveChangesBody').addClass('hide');
3813 if (parseFloat(mainTabs) != 4)
3814 $('#proceedTo').html('showExistingPlans_0_' + mainTabs);
3815 else
3816 $('#proceedTo').html('getServiceProfiles');
3817 getMyTasks();
3818 return;
3819 }
3820 if (parseFloat(mainTabs) != 4)
3821 showExistingPlans(0,mainTabs);
3822 else
3823 getServiceProfiles();
3824 SSEV.remove();
3825 return;
3826 }
3827
3828 if ($('#isModified').length > 0)
3829 {
3830 $('#aircraftTabs').remove();
3831 $('#saveModalHeader').removeClass('hide');
3832 $('#productionPlanSaveChanges').modal('show');
3833 showApplyRetro();
3834 $('#productionPlanSaveChangesBody').addClass('hide');
3835 //$('#productionPlanSaveChangesBody').prepend(getChangeReason());
3836 //$('#notifyWrapper').addClass('hide');
3837 $('#proceedTo').html(id);
3838 getMyTasks();
3839 return;
3840 }
3841 else
3842 {
3843 var data = ($('#' + id).attr('data'));
3844 $('#proceedTo').html(id);
3845 if (id.substring(0, 15) == 'aircraftSubmenu') { var dataArr = id.split('_'); getServicesByRoute(dataArr[1]); }
3846 else
3847 {
3848 var dataArr = data.split(',');
3849 if ($.trim(dataArr[0]) == 'getServicesByPricing') {
3850 $('#aircraftTabs').remove(); getServicesByPricing(dataArr[1],dataArr[2]);
3851 } else if ($.trim(dataArr[0]) == 'getTracker') {
3852 $('#aircraftTabs').remove(); showTracker(dataArr[1],dataArr[2]);
3853 } else if ($.trim(dataArr[0]) == 'getSummary') {
3854 $('#aircraftTabs').remove(); showSummary(dataArr[1],dataArr[2]);
3855 } else if ($.trim(dataArr[0]) == 'plpgetProvSummary') {
3856 $('#aircraftTabs').remove(); provSummaryPLP.provSummaryTable(dataArr[1],dataArr[2]);
3857 } else if ($.trim(dataArr[0]) == 'getProvSummary') {
3858 $('#aircraftTabs').remove(); showProvSummary(dataArr[1],dataArr[2]);
3859 } else if ($.trim(dataArr[0]) == 'getTax') {
3860 $('#aircraftTabs').remove(); productionPlanTax.facilities(dataArr[1],dataArr[2]);
3861 } else if ($.trim(dataArr[0]) == 'getSubplan') {
3862 MPLSubplanComponent.subplanTabClicked();
3863 } else {
3864 getServicesByRoute(dataArr[1]);
3865 }
3866 }
3867 }
3868 }
3869
3870 function getServicesByRoute(header_id, departure_id)
3871 {
3872 var routeDetails = JSON.parse(sessionStorage['routeSession']);
3873 var supplierDetails = JSON.parse(sessionStorage['supplierSession']);
3874 var plan_id = $('#plan_id').val();
3875 var supplier_id = supplierDetails[0];
3876 productionPlanTax.routeExistingTaxes($('#plan_start_date').html(), (departure_id == undefined ? routeDetails[header_id] : departure_id),plan_id,supplier_id,false,header_id);
3877 if (parseFloat($('#profile_associate').val()) == 1)
3878 { var aircraftRouteSession = {};
3879 $.getJSON(base_url + "index.php/api/mpd/route_header_aircraft/header_id/" + header_id + "/plan_id/" + plan_id + "/" + api_key + "format/json", function(data) {
3880 if (data.length > 0)
3881 {
3882 $('#aircraftTabs').remove();
3883 var aircraftArr = {};
3884 var _HTML = '<ul class="nav nav-tabs" id="aircraftTabs"><li><a href="#" style="color:#000000; cursor: none;">AIRCRAFT:</a></li>';
3885 $.each(data, function(i,v){
3886 aircraftArr[data[i]['entry_id']] = {'name' : data[i]['long_description'], 'departure_id' : data[i]['departure_id']};
3887 });
3888 $.each(aircraftArr, function(i,v){
3889 routeDetails[i] = aircraftArr[i]['departure_id'];
3890 _HTML += '<li data-parentid="' + header_id + '" id="aircraftSubmenu_' + parseFloat(i) + '" data="getServicesByRoute,' + parseFloat(i) + '"><a href="javascript:alertChanges(\'aircraftSubmenu_' + parseFloat(i) + '\');">' + aircraftArr[i]['name'] + '</a></li>';
3891 });
3892 _HTML += '</ul>';
3893 $('#secondary_menu').after(_HTML);
3894 sessionStorage['routeSession'] = JSON.stringify(routeDetails);
3895 }
3896 });
3897 }
3898 }
3899
3900 function getServicesByRoutePostTax(header_id)
3901 {
3902 $('#routeDropdown').attr('data-routelock', 'header_' + header_id);
3903 sessionStorage['activeHeaderID'] = JSON.stringify(header_id);
3904 var routeDetails = JSON.parse(sessionStorage['routeSession']); var supplierDetails = JSON.parse(sessionStorage['supplierSession']); var plan_id = $('#plan_id').val(); var supplier_id = supplierDetails[0];
3905
3906 clearTables();
3907
3908 $('#ServicesByRouteTable').removeClass('hide');
3909 $('#ServicesByPricingTable').addClass('hide');
3910 $('#ServicesByRouteTableConainer').show();
3911 $('#ServicesByPricingTable_wrapper').hide();
3912 $('#TrackerTableConainer').addClass('hide');
3913 $('#SummaryTableConainer').addClass('hide');
3914 $('#ProvisioningSummaryTableConainer').addClass('hide');
3915 $('#PLP_ProvisioningSummaryTableConainer').addClass('hide');
3916 $('#pricing_container').addClass('hide');
3917 $('.tab-pane > ul > li').each(function(i,v){ $(this).removeClass('active'); });
3918 $('#routeDropdown').toggleClass('active');
3919 $("#ServicesByRouteTable > tbody > tr").remove();
3920 $('#ServicesByRouteTable').dataTable().fnDestroy();
3921 var total_value = 0;
3922 var pax = 0;
3923 try{ $('#hiddenAccordion').addClass('hide'); $('#HiddenServicesByRouteTable').addClass('hide'); $('#HiddenServicesByRouteTable > tbody > tr').remove(); }catch(e){}
3924 var oTable = $('#ServicesByRouteTable').dataTable( {
3925 "oLanguage": {}, "sWrapper" : "standard", "sScrollX": "99%", "sScrollY": "500px", "bScrollCollapse": true, "bPaginate": false, "bFilter": false, "bInfo": false, "bProcessing": true,
3926 "fnInitComplete": function () { if ( typeof oTable != undefined ) {rowLock.disable(); trackerHighlight.routeDetails(header_id,$('#plan_start_date').html()); } },
3927 "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
3928 if(parseFloat(aData['is_deleted']) == 1) { $(nRow).addClass('error').addClass('error_row_' + aData['course_id']); } else if (parseFloat(aData['is_hidden']) == 1) {
3929 $(nRow).addClass('isHiddenRow');
3930 /* $(nRow).addClass('hide');
3931 $('#Existing_' + aData['row_id']).remove();
3932 $('#HiddenServicesByRouteTable > tbody').append('<tr><td><input onclick="isModified();" type="checkbox" name="unhideServiceRow_' + aData['row_id'] +'" value=""/>' + aData['service_option'] + '</td><td>' + aData['row_service_code'] + '</td><td>' + aData['row_service_description'] + '</td><td>' + aData['row_packing_type'] + '</td><td>' + aData['row_meal_type'] + '</td><td><input type="hidden" name="previoussetqty_' + aData['row_id'] +'" value="0"/><input type="hidden" name="previousprovrate_' + aData['row_id'] +'" value="0"/>' + aData['row_prov_type'] + '</td><td><input type="hidden" id="isHidden_' + aData['row_id'] +'" value="1"/><input type="text" disabled class="input-mini" onkeydown="isModified();" onblur="calculate_qty(' + aData['row_id'] + ')" id="provrate_' + aData['row_id'] +'" name="hiddenprovrate_' + aData['row_id'] +'" value="0"/></td><td>' + aData['row_min'] + '</td><td>' + aData['row_max'] + '</td><td><input disabled type="text" class="input-mini" onkeydown="isModified();" onblur="calculate_qty(' + aData['row_id'] + ')" id="setqty_' + aData['row_id'] +'" name="hiddensetqty_' + aData['row_id'] +'" value="0"/></td><td><input disabled type="text" class="input-mini" value="' + (isNaN(parseFloat(aData['row_pricing'])) == true ? 0 : parseFloat(aData['row_pricing'])) + '"/></td><td><span class="control-group" id="value_control_' + aData['row_id'] +'"><span class="controls"><input disabled type="text" class="input-mini" value="" name="qty_' + aData['row_id'] +'" id="qty_' + aData['row_id'] +'"/></span></span></td><td class="hide"><input disabled type="text" class="input-mini" value="0" name="tax_' + aData['row_id'] +'" id="tax_' + aData['row_id'] +'"/></td><td><input disabled type="text" class="serviceValue_' + parseFloat(aData['row_service_option_id']) + ' input-small" value="' + (isNaN(aData['row_set_qty']) == true ? 0 : (aData['row_pricing'] * aData['row_set_qty'])) + '" name="rowvalue_' + aData['row_id'] +'" id="rowvalue_' + aData['row_id'] +'"/></td><td><input type="hidden" class="input-mini" name="prevhidden_' + aData['row_id'] +'" value="' + aData['row_id'] +'"/><input disabled type="text" class="input-mini" name="paxvalue_' + aData['row_id'] +'" id="paxvalue_' + aData['row_id'] +'"/></td></tr>');
3933 $('#HiddenServicesByRouteTable').removeClass('hide');
3934 $('#hiddenAccordion').removeClass('hide');*/
3935 }
3936 },
3937 "sAjaxSource": base_url + "index.php/api/mpd/route_courses/header_id/" + header_id + "/" + api_key + "format/json", "aaSorting": [[ 16, "asc" ]],
3938 "aoColumns": [
3939 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return ('<input title="Hide Row" data-hideCheckbox="' + oObj.aData.course_id + '" onclick="isModified();" type="checkbox" name="hideServiceRow_' + oObj.aData.row_id +'" value=""/>'); }},
3940 { "mData": "service_option", "bSortable": false, "fnRender": function(oObj) { return '<span data-serviceOption="' + oObj.aData.course_id + '">' + $.trim(oObj.aData.service_option) + '</span>'; } },
3941 { "mData": "row_service_code", "bSortable": false, "fnRender": function(oObj) { return '<span data-serviceCode="' + oObj.aData.course_id + '">' + ($.trim(oObj.aData.row_service_code) == null ? '' : $.trim(oObj.aData.row_service_code)) + '</span>'; } },
3942 { "mData": "row_service_description", "bSortable": false, "fnRender": function(oObj) { return '<span data-serviceDescription="' + oObj.aData.course_id + '">' + ($.trim(oObj.aData.row_service_description) == null ? '' : $.trim(oObj.aData.row_service_description)) + '</span>'; } },
3943 { "mData": "row_packing_type", "bSortable": false, "fnRender": function(oObj) { return '<span data-packingType="' + oObj.aData.course_id + '">' + $.trim(oObj.aData.row_packing_type) + '</span>'; } },
3944 { "mData": "row_meal_type", "bSortable": false, "fnRender": function(oObj) { return '<span data-provCalc="' + oObj.aData.course_id + '" id="provcalc_' + oObj.aData.row_id +'">' + ($.trim(oObj.aData.row_meal_type) == '' ? 'P' : $.trim(oObj.aData.row_meal_type)) + '</span>'; } },
3945 { "mData": "row_prov_type", "bSortable": false, "fnRender": function(oObj) { switch ($.trim(oObj.aData.row_prov_type)) { case 'P': var row_prov_type = '%'; break; case 'V': var row_prov_type = 'V'; break; case 'A': var row_prov_type = 'A'; break; case 'S': var row_prov_type = 'S'; break; case 'T': var row_prov_type = 'T'; break; } return '<span data-provType="' + oObj.aData.course_id + '" id="provtype_' + oObj.aData.row_id +'">' + $.trim(row_prov_type) + '</span>'; } },
3946 { "mData": "row_prov_rate", "bSortable": false, "fnRender": function(oObj) { var prov_type_str = (oObj.aData.row_prov_type); var selected_found = prov_type_str.indexOf('</span>'); var selected_str = (prov_type_str.substring(selected_found -1, selected_found)); return '<input type="hidden" id="scalepaxselected_' + oObj.aData.row_id +'" value=""/><input type="hidden" name="previousscaletable_' + oObj.aData.row_id +'" value="' + oObj.aData.scale_table_id +'"/><input type="hidden" name="scaletable_' + oObj.aData.row_id +'" id="scaletable_' + oObj.aData.row_id +'" value="' + oObj.aData.scale_table_id +'"/><span class="input-prepend input-append"><span ' + (selected_str == 'T' ? 'class="add-on"' : '') + '><a class="fixedScaleLinks ' + (selected_str == 'T' ? '' : 'hide') + '" data-scaletablelink="' + oObj.aData.course_id +'" id="fixedScaleLink_' + oObj.aData.row_id +'" href="javascript:fixedScale.get(' + oObj.aData.row_id +');"><i class="icon-th-large"></i></a></span><span ' + (selected_str == 'T' ? 'class="add-on"' : 'class="hide"') + ' data-scaletablename="' + oObj.aData.course_id +'" id="scaletablename_' + oObj.aData.row_id +'">' + (oObj.aData.scale_name == undefined ? '' : oObj.aData.scale_name) +'</span></span>' + '<input type="hidden" name="previousprovrate_' + oObj.aData.row_id +'" value="' + $.trim(oObj.aData.row_prov_rate) + '"/><input onkeypress="return catchEnter.Route(event,\'Existing_' + oObj.aData.row_id + '\', this.id);" onkeydown="isModified();" onblur="calculate_qty_cell(' + oObj.aData.row_id + ')" placeholder="Prov Rate" type="text" class="input-mini provrate ' + (selected_str != 'T' ? '' : 'hide') + '" title="' + (isNaN(parseFloat(oObj.aData.prev_row_prov_rate)) == false && parseFloat(oObj.aData.prev_row_prov_rate) != parseFloat(oObj.aData.row_prov_rate) ? 'Previous value: ' + parseFloat(oObj.aData.prev_row_prov_rate) : '') + '" value="' + $.trim(oObj.aData.row_prov_rate) + '" data-provrate="' + oObj.aData.course_id +'" name="provrate_' + oObj.aData.row_id +'" id="provrate_' + oObj.aData.row_id +'"/>'; } },
3947 { "mData": "row_min", "bSortable": false, "fnRender": function(oObj) { return '<span class="hidden isHiddenRows" id="idHiddenRow_' + oObj.aData.row_id + '">' + parseFloat(oObj.aData.is_hidden) + '</span><span class="control-group ' + (isNaN(parseFloat(oObj.aData.prev_row_min)) == false && parseFloat(oObj.aData.prev_row_min) != parseFloat(oObj.aData.row_min) && parseFloat($('#planStatusHeader').html()) == 1 ? 'info' : '') + '"><span class="controls"><input type="hidden" name="previousmin_' + oObj.aData.row_id +'" value="' + $.trim(oObj.aData.row_min) + '"/><input onkeypress="return catchEnter.Route(event,\'Existing_' + oObj.aData.row_id + '\', this.id);" onkeydown="isModified();" placeholder="Min" type="text" class="input-mini" onblur="check_if_value_valid(' + oObj.aData.row_id +');" title="' + (isNaN(parseFloat(oObj.aData.prev_row_min)) == false &&parseFloat(oObj.aData.prev_row_min) != parseFloat(oObj.aData.row_min) ? 'Previous value: ' + parseFloat(oObj.aData.prev_row_min) : '') + '" value="' + $.trim(oObj.aData.row_min) + '" name="min_' + oObj.aData.row_id +'" id="min_' + oObj.aData.row_id +'" data-min="' + oObj.aData.course_id +'"/></span></span>'; } },
3948 { "mData": "row_max", "bSortable": false, "fnRender": function(oObj) { return '<span class="control-group ' + (isNaN(parseFloat(oObj.aData.prev_row_max)) == false && parseFloat(oObj.aData.prev_row_max) != parseFloat(oObj.aData.row_max) && parseFloat($('#planStatusHeader').html()) == 1 ? 'info' : '') + '"><span class="controls"><input type="hidden" name="previousmax_' + oObj.aData.row_id +'" value="' + $.trim(oObj.aData.row_max) + '"/><input onkeypress="return catchEnter.Route(event,\'Existing_' + oObj.aData.row_id + '\', this.id);" onkeydown="isModified();" placeholder="Max" type="text" class="input-mini" onblur="check_if_value_valid(' + oObj.aData.row_id +');" title="' + (isNaN(parseFloat(oObj.aData.prev_row_max)) == false &&parseFloat(oObj.aData.prev_row_max) != parseFloat(oObj.aData.row_max) ? 'Previous value: ' + parseFloat(oObj.aData.prev_row_max) : '') + '" value="' + $.trim(oObj.aData.row_max) + '" name="max_' + oObj.aData.row_id +'" id="max_' + oObj.aData.row_id +'" data-max="' + oObj.aData.course_id +'"/></span></span>';} },
3949 { "mData": "row_set_qty", "bSortable": false, "fnRender": function(oObj) { return '<span class="control-group ' + (isNaN(parseFloat(oObj.aData.prev_row_set_qty)) == false && parseFloat(oObj.aData.prev_row_set_qty) != parseFloat(oObj.aData.row_set_qty) && parseFloat($('#planStatusHeader').html()) == 1 ? 'info' : '') + '"><span class="controls"><input type="hidden" name="previoussetqty_' + oObj.aData.row_id +'" id="previoussetqty_' + oObj.aData.row_id +'" value="' + $.trim(oObj.aData.row_set_qty) + '"/><span class="hide" data-pricingHTML="' + oObj.aData.course_id +'" id="pricing_' + oObj.aData.row_id +'">' + oObj.aData.row_pricing + '</span><input onkeydown="isModified();" title="' + (isNaN(parseFloat(oObj.aData.prev_row_set_qty)) == false && parseFloat(oObj.aData.prev_row_set_qty) != parseFloat(oObj.aData.row_set_qty) ? 'Previous value: ' + parseFloat(oObj.aData.prev_row_set_qty) : '') + '" onkeypress="return catchEnter.Route(event,\'Existing_' + oObj.aData.row_id + '\', this.id);" onblur="calculate_qty_cell(' + oObj.aData.row_id + ')" placeholder="Set Qty" type="text" class="input-mini setqty" value="' + $.trim(oObj.aData.row_set_qty) + '" name="setqty_' + oObj.aData.row_id +'" id="setqty_' + oObj.aData.row_id +'" data-set="' + oObj.aData.course_id +'"/></span></span>';} },
3950 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return '<input id="routepricing_' + oObj.aData.row_id +'" data-pricing="' + oObj.aData.course_id +'" disabled type="text" class="input-mini routepricing" value="' + (isNaN(parseFloat(oObj.aData.row_pricing)) == true ? 0 : parseFloat(oObj.aData.row_pricing)) + '"/>'; } },
3951 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return '<span class="control-group" id="value_control_' + oObj.aData.row_id +'"><span class="controls"><input data-qty="' + oObj.aData.course_id +'" disabled type="text" class="input-mini" value="' + oObj.aData.row_qty +'" name="qty_' + oObj.aData.row_id +'" id="qty_' + oObj.aData.row_id +'"/></span></span>'; } },
3952 { "mData": null, "bVisible": false, "bSortable": false, "fnRender": function(oObj) { return '<input disabled type="text" class="input-mini" value="0" name="tax_' + oObj.aData.row_id +'" id="tax_' + oObj.aData.row_id +'"/>'; } },
3953 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return '<input data-serviceOptionID="' + oObj.aData.course_id +'" type="hidden" value="' + parseFloat(oObj.aData.row_service_option_id) + '"/><input data-servicevalue="' + oObj.aData.course_id +'" disabled type="text" class="' + (parseFloat(oObj.aData.is_hidden) == 0 && parseFloat(oObj.aData.is_deleted) == 0 ? 'serviceValue_' + parseFloat(oObj.aData.row_service_option_id) : '') + ' input-small" value="' + toFixedFix(oObj.aData.row_value,oObj.aData.decimal_places) + '" name="rowvalue_' + oObj.aData.row_id +'" id="rowvalue_' + oObj.aData.row_id +'"/>'; } },
3954 { "mData": null, "bSortable": false, "fnRender": function(oObj) { return '<input data-paxvalue="' + oObj.aData.course_id +'" disabled type="text" value="' + toFixedFix(oObj.aData.pax_value,oObj.aData.decimal_places) + '" class="input-mini" name="paxvalue_' + oObj.aData.row_id +'" id="paxvalue_' + oObj.aData.row_id +'"/>'; } },
3955 { "mData": "sort_order", "bVisible": false}
3956 ]
3957 } );
3958
3959 $("#ServicesByRouteTable > tbody > tr > td").attr("style","padding: 0px 0px 0px 0px;");
3960 $('.dataTables_processing').remove();
3961 }
3962
3963 function toggleCloneEdit(header_id, link)
3964 {
3965 $('#cloneRouteInputSpan_' + header_id).toggle();$('#cloneRouteTextSpan_' + header_id).toggle();
3966 if ($('#cloneRouteInputSpan_' + header_id).is(":visible") == false ){
3967 var obj = {}; obj['route'] = $('#cloneRouteInput_' + header_id).val(); obj['plan_id'] = $('#plan_id').val(); obj['header'] = header_id; obj['associate'] = parseFloat($('#profile_associate').val());
3968 var spinner = '<img style="height:15px;" src="' + base_url + 'assets/css/img/spinner.gif"/>'; $('#subMenu_' + header_id + ' > a').html(spinner); $('#cloneRouteText_' + header_id).html(spinner);
3969 setTimeout(function() { $.ajax({ type: 'PUT', contentType: 'application/json', url: base_url + 'index.php/api/mpd/clone_header/' + api_key + 'format/json', dataType: "json", data: JSON.stringify(obj), success: function(data, textStatus, jqXHR){ $('#subMenu_' + header_id + ' > a').html($('#cloneRouteInput_' + header_id).val());
3970 if (typeof link === 'undefined')
3971 var parseText = $('#cloneRouteInput_' + header_id).val();
3972 else
3973 var parseText = '<a href="javascript:alertChanges(\'subMenu_' + header_id + '\');">' + $('#cloneRouteInput_' + header_id).val() + '</a>';
3974
3975 $('#cloneRouteText_' + header_id).html(parseText);
3976 } });}, 1000);
3977 }
3978 }
3979
3980 var decimal_places = 3;
3981
3982 function update_totals(header_id, taxStartDate)
3983 {
3984 $('#routeHeader').html('<div style="padding:0 25px; text-align:center;"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
3985 var special_meal = 0;
3986 var prev_special_meal = 0;
3987 var special_meal_cost = 0;
3988 var prev_special_meal_cost = 0;
3989 var pax = 0;
3990 var prev_pax = 0;
3991 var dtc = 0;
3992 var prev_dtc = 0;
3993
3994 $.getJSON(base_url + 'index.php/api/mpd/pricing_cost_header/header_id/' + header_id + '/' + api_key + 'format/json', function(data) {
3995 special_meal_cost = (isNaN(parseFloat(data[0]['row_special_meal_cost'])) == true ? 0 : data[0]['row_special_meal_cost']);
3996 prev_special_meal_cost = (isNaN(parseFloat(data[0]['prev_row_special_meal_cost'])) == true ? 0 : data[0]['prev_row_special_meal_cost']);
3997 special_meal = (isNaN(parseFloat(data[0]['row_special_meal'])) == true ? 0 : data[0]['row_special_meal']);
3998 prev_special_meal = (isNaN(parseFloat(data[0]['prev_row_special_meal'])) == true ? 0 : data[0]['prev_row_special_meal']);
3999 pax = (isNaN(parseFloat(data[0]['row_pax'])) == true ? 0 : data[0]['row_pax']);
4000 prev_pax = (isNaN(parseFloat(data[0]['prev_row_pax'])) == true ? 0 : data[0]['prev_row_pax']);
4001 dtc = (isNaN(parseFloat(data[0]['row_design_to_cost'])) == true ? 0 : data[0]['row_design_to_cost']);
4002 prev_dtc = (isNaN(parseFloat(data[0]['prev_row_design_to_cost'])) == true ? 0 : data[0]['prev_row_design_to_cost']);
4003 decimal_places = parseFloat(data[0]['decimal_places']);
4004
4005 $('.routepricing').each(function(){
4006 var id = $(this).attr('id');
4007 var val = parseFloat($(this).val());
4008 $('#' + id).val(setElementDecimal(val));
4009 });
4010
4011 returnHTML = '<div id="routeRegionDropdownContainer" class="hide span6" style="border: 1px solid #ecf0f1"></div><table class="table table-bordered route_budget" style="width:96%;">';
4012 //returnHTML += '<tr><td id="routeRegionDropdownContainer" class="hide"></td></tr>';
4013 returnHTML += '<tr><td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Route:</span> <span class="pull-right"><small> <span class="hide" id="cloneRouteInputSpan_' + header_id + '"><input type="hidden" class="input-large" style="max-height: 18px;" id="cloneRouteInputHidden_' + header_id + '" value="(' + data[0]['departure'] + ' - ' + data[0]['arrival'] + ')' + '"/><input type="text" class="input-medium" style="max-height: 18px;" id="cloneRouteInput_' + header_id + '" value="' + ($.trim(data[0]['alternate_heading']) != '' ? $.trim(data[0]['alternate_heading']) : (data[0]['departure'] + ' - ' + data[0]['arrival'])) + '"/></span><span id="cloneRouteTextSpan_' + header_id + '"> <span id="cloneRouteText_' + header_id + '">' + (parseInt(data[0]['route_region_only']) == 1 ? $.trim(data[0]['route_region_name']) : ($.trim(data[0]['alternate_heading']) != '' ? $.trim(data[0]['alternate_heading']) + (parseFloat(data[0]['hide_display_route']) ==0 && parseFloat(data[0]['refHeaderName']) == 1 ? ' (' + data[0]['departure'] + ' - ' + data[0]['arrival'] + ')' : '') : ' (' + (data[0]['departure'] + ' - ' + data[0]['arrival']) + ')')) + '</span></small> <a class="' + (parseInt(data[0]['route_region_only']) == 1 ? 'hide' : '') + '" title="Add Route to Region" id="addRouteRegionEdit" href="javascript:servicePlanRouteRegionRouteScreen.addToRegionModal(' + header_id + ');"><i class="icon-plus-sign"></i></a> <a class="' + (parseInt(data[0]['route_region_only']) == 1 ? 'hide' : '') + '" title="Edit Route Name" id="cloneEdit" href="javascript:toggleCloneEdit(' + header_id + ');"><i class="icon-edit"></i></a> <a title="Clone Route" data-isRouteRegion="' + (parseInt(data[0]['route_region_only']) == 1 ? 1 : 0) + '" id="cloneRoute" href="javascript:clonePlanAlert(' + data[0]['plan_id'] + ',' + data[0]['supplier_id'] + ',' + data[0]['entry_id'] + ',\'' + data[0]['departure'] + '\',\'' + data[0]['arrival'] + '\',' + data[0]['region_id'] + ');"><i class="icon-repeat"></i></a> <a id="deleteRoute" href="javascript:deletePlanAlert(' + data[0]['plan_id'] + ',' + data[0]['supplier_id'] + ',' + data[0]['entry_id'] + ',' + data[0]['route_region_only'] + ');"><i title="Delete" class="icon-remove-sign"></i></a></span></strong></td>';
4014 returnHTML += '<td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Currency:</span> <small> <span class="pull-right">' + data[0]['currency_code'].toUpperCase() + '</span></small></strong></td></tr>';
4015 returnHTML += '<tr><td width="50%" style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Pax No:</span> </strong><span class="pull-right"><input type="hidden" id="departure_id" value="' + data[0]['destination_id'] + '"/><input type="hidden" name="supplier_id" id="supplier_id" value="' + data[0]['supplier_id'] + '"/><input type="hidden" class="input-small" name="headerid" id="headerid" value="' + header_id + '"/><input type="hidden" class="input-mini" name="previouspax" id="previouspax" value="' + (isNaN(parseFloat(data[0]['row_pax'])) == true ? 0 : data[0]['row_pax']) + '"/><input title="' + (prev_pax == pax ? '' : 'Previous value: ' + prev_pax) + '" onkeydown="isModified();" type="text" class="input-small" style="max-height: 14px;" name="pax" id="pax" value="' + (isNaN(parseFloat(data[0]['row_pax'])) == true ? 0 : data[0]['row_pax']) + '" onblur="fixedScale.set(true);"/></span></td>';
4016 returnHTML += '<td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Budget:</span> </strong><span class="pull-right"><input type="hidden" class="input-small" name="previousdesignToCost" id="previousdesignToCost" value="' + (isNaN(parseFloat(data[0]['row_design_to_cost'])) == true ? 0 : data[0]['row_design_to_cost']) + '"/><input title="' + (prev_dtc == dtc ? '' : 'Previous value: ' + prev_dtc) + '" onkeydown="isModified();" onblur="price_difference();" type="text" class="input-small" style="max-height: 14px;" name="designToCost" id="designToCost" value="' + (isNaN(parseFloat(data[0]['row_design_to_cost'])) == true ? 0 : toFixedFix(parseFloat(data[0]['row_design_to_cost']),decimal_places)) + '"/></span></td></tr>';
4017 // START : IF MPL THEN DON'T DISPLAY SPECIAL MEALS //
4018 returnHTML += '<tr ' + (parseFloat($('#profile_associate').val()) == 1 ? 'class="hide"' : '') + '><td align="center" style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">SPM:</span> </strong><span class="pull-right"><input type="hidden" class="input-small" name="previousSpecialMeal" id="previousSpecialMeal" value="' + (isNaN(parseFloat(data[0]['row_special_meal'])) == true ? 0 : data[0]['row_special_meal']) + '"/><input title="' + (prev_special_meal == special_meal ? '' : 'Previous value: ' + prev_special_meal) + '" onkeydown="isModified();" type="text" class="input-small" style="max-height: 14px;" onblur="pax_update(true);" name="SpecialMeal" id="SpecialMeal" value="' + (isNaN(parseFloat(data[0]['row_special_meal'])) == true ? 0 : data[0]['row_special_meal']) + '"/></span></td>';
4019 returnHTML += '<td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">SPM Cost:</span><small> <span class="pull-right"><input onkeydown="isModified();" type="hidden" class="input-small" name="previousSpecialMealCost" id="previousSpecialMealCost" value="' + (isNaN(parseFloat(data[0]['row_special_meal_cost'])) == true ? 0 : data[0]['row_special_meal_cost']) + '"/><input title="' + (prev_special_meal_cost == special_meal_cost ? '' : 'Previous value: ' + prev_special_meal_cost) + '" type="text" class="input-small" style="max-height: 14px;" onkeydown="isModified();" onblur="pax_update(true);" name="SpecialMealCost" id="SpecialMealCost" value="' + (isNaN(parseFloat(data[0]['row_special_meal_cost'])) == true ? 0 : toFixedFix(parseFloat(data[0]['row_special_meal_cost']),decimal_places)) + '"/></span></small></strong></td></tr>';
4020 // END : IF MPL THEN DON'T DISPLAY SPECIAL MEALS //
4021 returnHTML += '<tr><td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Price Difference:</span> <span class="pull-right"><small> <span id="price_difference"></span></small></span></strong></td>';
4022 returnHTML += '<td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Actual Cost:</span><small> <span class="pull-right" id="actual_cost"></span><input type="hidden" name="previousToggleInclSpecialMealsBtn" value="' + parseFloat(data[0]['btnIsDisabled']) + '"/><input type="hidden" id="ToggleInclSpecialMealsBtn" name="ToggleInclSpecialMealsBtn" value="' + parseFloat(data[0]['btnIsDisabled']) + '"/><button id="toggleInclSpecialMeals" class="btn btn-mini ' + (parseFloat($('#profile_associate').val()) == 1 ? 'hide' : '') + '" style="font-size:9px;" data-btnIsDisabled="' + parseFloat(data[0]['btnIsDisabled']) + '" type="button" onclick="isModified();toggleSpecialMeals(false);">Special Meals Incl.(Y)</button></small></strong></td></tr>';
4023 returnHTML += '<tr><td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Variance %:</span><small> <span class="pull-right" id="variance"></span></small></strong></td>';
4024 returnHTML += '<td style="padding: 2px 1px 1px 10px;"><strong><span class="badge badge-info">Total Value:</span><small> <span class="pull-right" id="total_value">' + toFixedFix(data[0]['total_value'],decimal_places) + '</span> <button id="toggleInclTax" class="btn btn-mini" type="button" style="font-size:9px;" onclick="toggleTax(\'' + taxStartDate + '\');">Tax Incl. (Y)</button></small></strong></td></tr>';
4025 returnHTML += '<tr><td style="padding: 2px 1px 1px 10px;"><div id="taxNonContainer" class="collapse out"></div><strong><span class="badge badge-info">Tax (Non-Recoverable):</span> <a title="View Non Recoverable Tax" href="#" data-toggle="collapse" data-target="#taxNonContainer"><i class="icon-th-list"></i></a><small><span class="pull-right" id="taxNonTotal">0</span></small></strong></td><td style="padding: 2px 1px 1px 10px;"><div id="taxRecContainer" class="collapse out"></div><strong><span class="badge badge-info">Tax (Recoverable):</span> <a title="View Recoverable Tax" href="#" data-toggle="collapse" data-target="#taxRecContainer"><i class="icon-th-list"></i></a><small><span class="pull-right" id="taxRecTotal">0</span></small></strong></td></tr>';
4026 //returnHTML += '<tr><td style="padding: 2px 1px 1px 10px;" colspan="2"><span id="taxSelector"></span></td></tr>';
4027 returnHTML += '</table>';
4028
4029 //$('#routeHeader').css('height','200px').css('overflow','scroll').html(returnHTML).bind(isProduction());
4030 $('#routeHeader').html(returnHTML).bind(isProduction());
4031
4032 $('#currency_price').html('<br/>(' + data[0]['currency_code'].toUpperCase() + ')');
4033 $('#currency_value').html('<br/>(' + data[0]['currency_code'].toUpperCase() + ')');
4034
4035 var plan_id = $('#plan_id').val();
4036 var supplier_id = $('#supplier_id').val();
4037 var departure_id = $('#departure_id').val();
4038
4039 //$('#plan_start_date').html();
4040 trackerHighlight.routeBudget(header_id);
4041
4042 //productionPlanTax.existingTaxes(taxStartDate, departure_id,plan_id,supplier_id,false);
4043 //productionPlanTax.allExistingTaxes(taxStartDate,departure_id,plan_id,supplier_id,false);
4044 calculateTax.routeTax(); fixedScale.set();
4045 navPermissions.servicePlanRoutes();
4046 setTimeout(function(){ servicePlanRouteRegionRouteScreen.dropdown(header_id); }, 500);
4047
4048 if (parseFloat(data[0]['btnIsDisabled']) == 1) setTimeout(function() {toggleSpecialMeals(true);}, 500);
4049 try { $('#aircraftSubmenu_' + header_id).addClass('active');} catch(e){}
4050 });
4051 }
4052
4053 function toggleTax(taxStartDate)
4054 {
4055 $('#toggleInclTax').toggleClass('disabled');
4056 if ($('#toggleInclTax').hasClass('disabled') == true)
4057 {
4058 $('#toggleInclTax').html('Tax Incl. (N)');
4059 $('#total_value').html(toFixedFix(parseFloat($('#total_value').html()) - parseFloat($('#taxNonTotal').html()) - parseFloat($('#taxRecTotal').html()),decimal_places));
4060 }
4061 else
4062 {
4063 $('#toggleInclTax').html('Tax Incl. (Y)');
4064 $('#total_value').html(toFixedFix(parseFloat($('#total_value').html()) + parseFloat($('#taxNonTotal').html()) + parseFloat($('#taxRecTotal').html()),decimal_places));
4065 }
4066 var pax = parseFloat($('#pax').val());
4067 var inclSPMeals = $('#toggleInclSpecialMeals').hasClass('disabled');
4068 var total_value = parseFloat($('#total_value').html());
4069
4070 if (inclSPMeals == false)
4071 var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/pax),decimal_places));
4072 else
4073 var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/(pax - parseFloat($('#SpecialMeal').val()))),decimal_places));
4074
4075 $('#actual_cost').html((isNaN(actual_cost) == true ? 0 : actual_cost));
4076 $('#price_difference').html((isNaN(actual_cost) == true ? 0 : toFixedFix((actual_cost - $('#designToCost').val()),decimal_places)));
4077
4078 price_difference();
4079
4080 }
4081
4082 function addNonTaxToTotal()
4083 {
4084 $('#total_value').html(toFixedFix((parseFloat($('#taxNonTotal').html()) + parseFloat($('#taxRecTotal').html()) + parseFloat($('#total_value').html())),decimal_places));
4085 calcActualCosts();
4086 }
4087
4088 function deletePlanAlert(plan_id,supplier_id, headerid, route_region_only)
4089 {
4090 var parent_id = $('#aircraftSubmenu_' + parseFloat(headerid)).attr('data-parentid');
4091 $('.aircraftCloneCheckboxes').remove();$('#aircraftCloneAllCheckboxes').remove();
4092 $('#deleteModalHeader').html(''); $('#deleteModalFooter').html(''); $('#deleteProductionPlanBody').html('');
4093 if ($('#routeDropdown').is(':visible') == true)
4094 {
4095 var routeCnt = 0; var activeID;
4096 $('#routeDropDownContainer > li').each(function(i,v){
4097 var idStr = $(this).attr('id'); var idArr = idStr.split('_');
4098 if (parseFloat(idArr[1]) != parseFloat(headerid)) activeID = parseFloat(idArr[1]);
4099 routeCnt++;
4100 });
4101 if (routeCnt == 1 && $('#routeDropDownContainer').hasClass('hasRouteRegionOnly'))
4102 {
4103 $('#deleteModalHeader').html('You cannot delete this route because at least one route is needed per plan.');
4104 $('#deleteModalFooter').html('<button class="btn" data-dismiss="modal" aria-hidden="true">OK</button>');
4105 $('#deleteProductionPlan').modal('show');
4106 return;
4107 }
4108 }
4109 if(parseFloat($('#profile_associate').val()) == 1){
4110 $.getJSON(base_url + 'index.php/api/mpd/delete_aircraft/header_id/' + headerid + '/' + api_key + 'format/json', function(data) {
4111 var _HTML = '<label class="checkbox"><input onclick="enableCloneBtn();aircraftRoute.toggleAircraftAllCheckboxes();" type="checkbox" id="aircraftCloneAllCheckboxes"/>ALL</label>';
4112 $.each(data, function(i,v){ _HTML += '<label class="checkbox"><input onclick="enableCloneBtn();aircraftRoute.uncheckAircraftAllCheckbox();" type="checkbox" class="aircraftCloneCheckboxes" value="' + data[i]['aircraft_id'] + '"/>' + data[i]['long_description'] + '</label>'; });
4113 $('#deleteModalHeader').html('Are you sure you wish to delete this route' + (route_region_only == 1 ? ' region?' : '?'));
4114 $('#deleteModalFooter').html('<span class="hide" id="deleteID"></span><span class="hide" id="nextActiveID"></span><button class="btn" data-dismiss="modal" aria-hidden="true">No</button><button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" onclick="aircraftRoute.deleteRouteByAircraft(' + plan_id + ',' + supplier_id + ', ' + headerid + ',' + parent_id + ');">Delete Route</button>');
4115 $('#deleteProductionPlanBody').html(_HTML).removeClass('hide');
4116 });
4117 }
4118 else if(parseFloat($('#profile_associate').val()) == 2){
4119 $.getJSON(base_url + 'index.php/api/mpd/delete_spml_facilities/plan_id/' + plan_id + '/header_id/' + headerid + '/' + api_key + 'format/json', function(data) {
4120 var _HTML = '<label class="checkbox"><input onclick="enableCloneBtn();specialMealDelete.toggleSpmlFacilityAllCheckboxes();" type="checkbox" id="spmlFacilityDeleteAllCheckboxes"/>ALL</label>';
4121 $.each(data, function(i,v){
4122 _HTML += '<label class="checkbox"><input onclick="enableCloneBtn();specialMealDelete.uncheckSpmlFacilityAllCheckbox();" type="checkbox" class="spmlFacilityDeleteCheckboxes" value="' + data[i]['header_id'] + '"/>' + data[i]['alternate_heading'] + '</label>';
4123 });
4124 $('#deleteModalHeader').html('Are you sure you wish to delete this route' + (route_region_only == 1 ? ' region?' : '?'));
4125 $('#deleteModalFooter').html('<span class="hide" id="deleteID"></span><span class="hide" id="nextActiveID"></span><button class="btn" data-dismiss="modal" aria-hidden="true">No</button><button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" onclick="specialMealDelete.deleteRouteByFacility(' + plan_id + ',' + supplier_id + ', ' + headerid + ');">Delete Route</button>');
4126 $('#deleteProductionPlanBody').html(_HTML).removeClass('hide');
4127
4128 });
4129 }
4130 else
4131 {
4132 $('#deleteModalHeader').html('Are you sure you wish to delete this route' + (route_region_only == 1 ? ' region?' : '?'));
4133 $('#deleteModalFooter').html('<span class="hide" id="deleteID"></span><span class="hide" id="nextActiveID"></span><button class="btn" data-dismiss="modal" aria-hidden="true">No</button><button class="btn btn-primary" data-dismiss="modal" aria-hidden="true" onclick="deleteRoute();">Delete Route</button>');
4134 $('#deleteProductionPlanBody').html('').addClass('hide');
4135 }
4136
4137 $('#deleteID').html('\'' + plan_id + '|' + supplier_id + '|' + headerid + '\'');
4138 $('#nextActiveID').html(activeID);
4139 $('#deleteProductionPlan').modal('show');
4140 }
4141
4142 function associateRoutes()
4143 {
4144 //$('#associateRouteContainer').toggle();
4145 var associateRoute = $('#associateRoutes').attr('checked') == undefined ? 0 : 1;
4146 var routeCnt = 0;
4147 enableCloneBtn();
4148 var plan_id = $('#associateRouteDropdown').attr('data-plan_id');
4149 var supplier_id = $('#associateRouteDropdown').attr('data-supplier_id');
4150 var headerid = $('#associateRouteDropdown').attr('data-headerid');
4151 var groupDetails = JSON.parse(sessionStorage['groupid']); var group_id = parseFloat(groupDetails);
4152 var userDetails = JSON.parse(sessionStorage['userDetails']); var user_id = parseFloat(userDetails['userID']);
4153
4154 $('#associateRouteDropdown').remove();
4155 $('#noMoreFlightsSpan').remove();
4156 $('#associateRouteContainer').removeClass('hide').after('<span id="routeOptionsSpinner"><img style="height:15px;" src="' + base_url + 'assets/css/img/spinner.gif"/></span>');
4157 //console.log(base_url + 'index.php/api/destinations/clone_route/user_id/' + user_id + '/group_id/' + group_id + '/associate_route/' + associateRoute + '/plan_id/' + plan_id + '/header_id/' + headerid + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json');
4158 $.getJSON(base_url + 'index.php/api/destinations/clone_route/user_id/' + user_id + '/group_id/' + group_id + '/associate_route/' + associateRoute + '/plan_id/' + plan_id + '/header_id/' + headerid + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json', function(data) {
4159 var _html = '<select data-plan_id="' + plan_id + '" data-supplier_id="' + supplier_id + '" data-headerid="' + headerid + '" id="associateRouteDropdown" onchange="updateCloneFlightName();enableCloneBtn();"><option id="routeOptionsDefault" value="">Please select a route</option>';
4160 var routeCnt = 0;
4161 $.each(data, function(i,v){ if (parseFloat(data[i]['disabled']) == 0) { routeCnt++; _html += '<option data-decimalPlaces="' + parseFloat(data[i]['decimal_places']) + '" data-flightID="' + parseFloat(data[i]['flight_id']) + '" data-flightName="' + $.trim(data[i]['flight_name']) + ' (' + data[i]['airport_code'] + ' - ' + data[i]['arrival_code'] + ')' + (parseInt(data[i]['is_multiprov']) == 1 ? ' MP' : '') + '" value="' + data[i]['departure_station_id'] + '|' + data[i]['arrival_station_id'] + '|' + data[i]['facility_id'] + '|' + data[i]['flight_id'] + '|' + parseFloat(data[i]['decimal_places']) + '">' + $.trim(data[i]['flight_name']) + ' (' + data[i]['airport_code'] + ' - ' + data[i]['arrival_code'] + ')' + (parseInt(data[i]['is_multiprov']) == 1 ? ' MP' : '') + ' ' + ' - ' + data[i]['meal_service_type'].toUpperCase() + '</option>';} });
4162 _html += '</select>';
4163 $('#associateRouteContainer').html(_html);
4164 $('#routeOptionsSpinner').remove();
4165 if (parseFloat(routeCnt) == 0) { $('#clonePlan').attr('disabled', true);
4166 $('#optionalHeading').val('').attr('disabled',true);
4167 $('#associateRouteContainer').addClass('hide').after('<span id="noMoreFlightsSpan" class="label label-important">No more flights available.</span>');
4168 }
4169 });
4170 //$('#optionalHeading').attr('disabled', false); else $('#optionalHeading').attr('disabled', true);
4171 }
4172
4173 function enableCloneBtn()
4174 {
4175 if ($('#associateRouteDropdown').val() == '') $('#clonePlan').attr('disabled', true); else $('#clonePlan').attr('disabled', false);
4176 if (parseFloat($('#profile_associate').val()) == 1) $('#clonePlan').attr('disabled', false);
4177 }
4178
4179 function updateCloneFlightName()
4180 {
4181 //$('#optionalHeading').attr('disabled',true);
4182 //if ($.trim($('#optionalHeading').val()) != '' && $('#optionalHeading').attr('disabled') == false) return;
4183 //if ($('#referenceOriginalName').attr('checked') != undefined) return;
4184 var flightName = '';
4185 var flightID = 0;
4186 $('#associateRouteDropdown option').each(function() { if($(this).is(':selected')) { flightID = $(this).attr('data-flightID'); flightName = $(this).attr('data-flightName');} });
4187 $('#optionalHeading').val(flightName).attr('disabled',false);
4188 $('#optionalHeadingID').val(flightID);
4189 }
4190
4191 function clonePlanAlert(plan_id,supplier_id, headerid, departure, arrival, region_id)
4192 {
4193 $('.optionalHeadingContainer').removeClass('hide');
4194 $('#servicePlanRouteRegionCloneContainer').remove();
4195 $('#clonePlan').removeClass('hide');
4196 $('#clonePlanRouteRegion').addClass('hide');
4197 $('#profileCreateTable').remove();
4198 $('#profileCreateSpan').remove();
4199 $('#associativeRouteError').remove();
4200 $('#aircraftCloneOptions').html('');
4201 $('#optionalHeading').html('');
4202 var routeRegionID = $('#cloneRoute').attr('data-routeRegionID') || $('#cloneRoute').attr('data-routeRegionID_' + parseInt(headerid))? parseInt($('#cloneRoute').attr('data-routeRegionID')) : 0;
4203
4204 var _HTMLRadio = '<div class="row-fluid">';
4205 if(parseFloat($('#profile_associate').val()) == 1){
4206 _HTMLRadio += '<label class="radio inline">';
4207 _HTMLRadio += '<input name="aircraftCloneRadio" id="aircraftCloneRadioAircraft" onclick="aircraftRoute.toggleNonAircraftClone(' + plan_id + ',' + headerid + ')" type="radio" checked/> Aircraft';
4208 _HTMLRadio += '</label>';
4209 }
4210 if (routeRegionID != 0){
4211 _HTMLRadio += '<label class="radio inline">';
4212 _HTMLRadio += '<input name="aircraftCloneRadio" id="aircraftCloneRadioRoute" onclick="aircraftRoute.toggleNonAircraftClone(' + plan_id + ',' + headerid + ')" type="radio" ' + (parseFloat($('#profile_associate').val()) == 1 ? '' : 'checked') + '/> Route';
4213 _HTMLRadio += '</label>';
4214 _HTMLRadio += '<label class="radio inline">';
4215 _HTMLRadio += '<input name="aircraftCloneRadio" id="routeRegionCloneRadioRoute" onclick="servicePlanRouteRegionClone.initialise(' + region_id + ',' + routeRegionID + ',' + headerid + ');" type="radio"/> Route Region';
4216 _HTMLRadio += '</label>';
4217 }
4218 _HTMLRadio += '</div>';
4219
4220 $('#aircraftCloneOptions').html(_HTMLRadio);
4221 if(parseFloat($('#profile_associate').val()) == 1) {
4222 aircraftRoute.cloneAircraftGet(plan_id,headerid);
4223 } else {
4224 $('#nonAircraftClone').removeClass('hide'); $('#aircraftClone').addClass('hide');
4225 }
4226
4227 var dataArr = [];
4228 var anchorInnerHTML = '';
4229 $('#associateRoutes').attr('checked',true);
4230 var associateRoute = 1;
4231 var groupDetails = JSON.parse(sessionStorage['groupid']);
4232 var group_id = parseFloat(groupDetails);
4233 var userDetails = JSON.parse(sessionStorage['userDetails']);
4234 var user_id = parseFloat(userDetails['userID']);
4235
4236 if (routeRegionID == 0){
4237 $('#associateRoutes').attr('disabled', false);
4238 $('#referenceOriginalNameContainer').removeClass('hide');
4239 } else {
4240 $('#associateRoutes').attr('disabled', true);
4241 $('#referenceOriginalNameContainer').addClass('hide');
4242 $('#cloneProductionPlanBody').prepend('<div class="row-fuid" id="servicePlanRouteRegionCloneContainer"></div>');
4243 }
4244
4245 //$('#optionalHeading').attr('disabled',true);
4246 $('#associateRouteDropdown').remove();
4247 $('#noMoreFlightsSpan').remove();
4248 $('#associateRouteContainer').removeClass('hide').after('<span id="routeOptionsSpinner"><img style="height:15px;" src="' + base_url + 'assets/css/img/spinner.gif"/></span>');
4249 console.log('here');
4250 console.log(base_url + 'index.php/api/destinations/clone_route/route_region_id/' + routeRegionID + '/user_id/' + user_id + '/group_id/' + group_id + '/associate_route/' + associateRoute + '/plan_id/' + plan_id + '/header_id/' + headerid + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json');
4251 $.getJSON(base_url + 'index.php/api/destinations/clone_route/route_region_id/' + routeRegionID + '/user_id/' + user_id + '/group_id/' + group_id + '/associate_route/' + associateRoute + '/plan_id/' + plan_id + '/header_id/' + headerid + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json', function(data) {
4252 var _html = '<div id="associateRouteContainer"><select data-plan_id="' + plan_id + '" data-supplier_id="' + supplier_id + '" data-headerid="' + headerid + '" id="associateRouteDropdown" onchange="updateCloneFlightName();enableCloneBtn();"><option id="routeOptionsDefault" value="">Please select a route</option>';
4253 var routeCnt = 0;
4254 $.each(data, function(i,v){
4255 if (parseFloat(data[i]['disabled']) == 0) {
4256 _html += '<option data-decimalPlaces="' + parseFloat(data[i]['decimal_places']) + '" data-flightID="' + parseFloat(data[i]['flight_id']) + '" data-flightName="' + $.trim(data[i]['flight_name']) + ' (' + data[i]['airport_code'] + ' - ' + data[i]['arrival_code'] + ')' + (parseInt(data[i]['is_multiprov']) == 1 ? ' MP' : '') + '" value="' + data[i]['departure_station_id'] + '|' + data[i]['arrival_station_id'] + '|' + data[i]['facility_id'] + '|' + data[i]['flight_id'] + '|' + parseFloat(data[i]['decimal_places']) + '">' + $.trim(data[i]['flight_name']) + ' (' + data[i]['airport_code'] + ' - ' + data[i]['arrival_code'] + ')' + (parseInt(data[i]['is_multiprov']) == 1 ? ' MP' : '') + ' ' + ' - ' + data[i]['meal_service_type'].toUpperCase() + '</option>';
4257 routeCnt++;
4258 }
4259 });
4260 _html += '</select></div>';
4261 var anchorInnerHTML = $('#cloneRouteText_' + headerid).html();
4262
4263 $('#originalHeading').val('');
4264 if(parseFloat($('#profile_associate').val()) == 1) {
4265 var parent_id = $('#aircraftSubmenu_' + parseFloat(headerid)).attr('data-parentid'); $('#cloneID').html('\'' + plan_id + '|' + supplier_id + '|' + headerid + '|' + parent_id + '\'');
4266 } else {
4267 $('#cloneID').html('\'' + plan_id + '|' + supplier_id + '|' + headerid + '\'');
4268 }
4269
4270 //$('#referenceOriginalName').attr('checked', true);
4271 $('#referenceOriginalNameContainer').after(_html);
4272 $('#routeOptionsSpinner').remove();
4273 if (parseFloat(routeCnt) == 0)
4274 {
4275 $('#optionalHeading').attr('disabled',true);
4276 $('#associateRouteContainer').addClass('hide').after('<span id="noMoreFlightsSpan" class="label label-important">No more flights available.</span>');
4277 }
4278 //$('#cloneProductionPlan').on('show.bs.modal', function () { $('#cloneProductionPlan').css('height',''); $('.modal-content').css('height',$( window ).height()*0.70); });
4279
4280 $('#cloneProductionPlan').modal('show');
4281 });
4282 }
4283
4284 function toggleSpecialMeals(init)
4285 {
4286 if (init == false && parseFloat($('#planStatusHeader').html()) == 1)
4287 {
4288 var toggleStatus = ($('#toggleInclSpecialMeals').hasClass('disabled') == true ? 0: 1);
4289 $('#ToggleInclSpecialMealsBtn').val(toggleStatus);
4290 var obj = {}; obj['header_id'] = parseFloat($('#headerid').val()); obj['toggleStatus'] = toggleStatus;
4291 //$.ajax({ type: 'PUT', contentType: 'application/json', url: base_url + 'index.php/api/mpd/toggle_special_meals/' + api_key + 'format/json', dataType: "json", data: JSON.stringify(obj) });
4292 }
4293
4294 var spmTax = $('#badgeMuted_0').html() != undefined ? parseFloat($('#badgeMuted_0').html()) : 0;
4295
4296 $('#badge_0').toggle();
4297 if (init == true)
4298 {
4299 $('#toggleInclSpecialMeals').addClass('disabled');
4300 $('#toggleInclSpecialMeals').attr('data-btnisdisabled',1);
4301 $('#taxNonTotal').html(toFixedFix((parseFloat($('#taxNonTotal').html()) - spmTax),decimal_places));
4302 $('#taxRecTotal').html(toFixedFix((parseFloat($('#taxRecTotal').html()) - spmTax),decimal_places));
4303 $('#toggleInclSpecialMeals').html('Special Meals Incl.(N)');
4304 }
4305 else
4306 {
4307 if ($('#toggleInclSpecialMeals').html() == 'Special Meals Incl.(Y)')
4308 {
4309 $('#toggleInclSpecialMeals').addClass('disabled');
4310 $('#toggleInclSpecialMeals').attr('data-btnisdisabled',1);
4311 $('#taxNonTotal').html(toFixedFix((parseFloat($('#taxNonTotal').html()) - spmTax),decimal_places));
4312 $('#taxRecTotal').html(toFixedFix((parseFloat($('#taxRecTotal').html()) - spmTax),decimal_places));
4313 $('#toggleInclSpecialMeals').html('Special Meals Incl.(N)');
4314 }
4315 else
4316 {
4317 $('#toggleInclSpecialMeals').removeClass('disabled');
4318 $('#toggleInclSpecialMeals').attr('data-btnisdisabled',0);
4319 $('#taxNonTotal').html(toFixedFix((parseFloat($('#taxNonTotal').html()) + spmTax),decimal_places));
4320 $('#taxRecTotal').html(toFixedFix((parseFloat($('#taxRecTotal').html()) + spmTax),decimal_places));
4321 $('#toggleInclSpecialMeals').html('Special Meals Incl.(Y)');
4322 }
4323 }
4324
4325 var pax = parseFloat($('#pax').val());
4326
4327 var inclSPMeals = $('#toggleInclSpecialMeals').hasClass('disabled');
4328
4329 var total_value = parseFloat($('#total_value').html());
4330
4331 if (init == false) {
4332 var spmTaxValue = parseFloat(calculateTax.routeSPMTax());
4333 if ($('#toggleInclSpecialMeals').html() == 'Special Meals Incl.(Y)')
4334 {
4335 total_value += spmTaxValue;
4336 $('#taxNonTotal').html(toFixedFix((parseFloat($('#taxNonTotal').html()) + spmTaxValue),decimal_places));
4337 $('#taxRecTotal').html(toFixedFix((parseFloat($('#taxRecTotal').html()) + spmTaxValue),decimal_places));
4338 }
4339 else
4340 {
4341 total_value -= spmTaxValue;
4342 $('#taxNonTotal').html(toFixedFix((parseFloat($('#taxNonTotal').html()) - spmTaxValue),decimal_places));
4343 $('#taxRecTotal').html(toFixedFix((parseFloat($('#taxRecTotal').html()) - spmTaxValue),decimal_places));
4344 }
4345 }
4346
4347 if (inclSPMeals == false)
4348 total_value += (parseFloat($('#SpecialMeal').val()) * parseFloat($('#SpecialMealCost').val()));
4349 else
4350 total_value -= (parseFloat($('#SpecialMeal').val()) * parseFloat($('#SpecialMealCost').val()));
4351
4352 $('#total_value').html((isNaN(total_value) == true ? 0 : toFixedFix(total_value,decimal_places)));
4353
4354 if (inclSPMeals == false)
4355 var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/pax),decimal_places));
4356 else
4357 var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/(pax - parseFloat($('#SpecialMeal').val()))),decimal_places));
4358
4359 $('#actual_cost').html((isNaN(actual_cost) == true ? 0 : actual_cost));
4360 $('#price_difference').html((isNaN(actual_cost) == true ? 0 : toFixedFix((actual_cost - $('#designToCost').val()),decimal_places)));
4361
4362 price_difference();
4363 }
4364
4365 function calculate_qty(id)
4366 {
4367 var prov_type = $.trim($('#provtype_' + id).html()); var prov_calc = $.trim($('#provcalc_' + id).html()); var prov_rate = parseFloat($('#provrate_' + id).val()); var set_qty = parseFloat($('#setqty_' + id).val()); var tax = parseFloat($('#tax_' + id).val()); var pax = parseFloat($('#pax').val()); var spm = parseFloat(($.trim($('#SpecialMeal').val()) == '' ? 0 : $('#SpecialMeal').val()));
4368 switch(prov_type)
4369 {
4370 case 'T': var qty = prov_rate + set_qty; break;
4371 case '%':
4372 if (prov_calc == 'M' || prov_calc == 'T') var qty = Math.round((pax - spm) * (prov_rate/100) + set_qty,0);
4373 else if (prov_calc == 'P' || prov_calc == '') var qty = Math.round(pax * (prov_rate/100) + set_qty,0);
4374 break;
4375 case 'V':
4376 if (prov_calc == 'M' || prov_calc == 'T') var qty = prov_rate != 0 ? Math.ceil((pax - spm)/(prov_rate == 0 ? 1 : prov_rate) + set_qty,0) : set_qty;
4377 else if (prov_calc == 'P' || prov_calc == '') var qty = prov_rate != 0 ? Math.ceil(pax/(prov_rate == 0 ? 1 : prov_rate) + set_qty,0) : set_qty;
4378 break;
4379 case 'S': var qty = set_qty; break;
4380 }
4381 qty = (qty == 0 ? $('#previoussetqty_' + id).val() : qty);
4382 if (parseFloat(qty) < parseFloat($('#min_' + id).val())) qty = $('#min_' + id).val(); else if (parseFloat(qty) > parseFloat($('#max_' + id).val())) qty = $('#max_' + id).val();
4383 if ($('#isHidden_' + id).length == 1) qty = 0;
4384 $('#qty_' + id).val(qty);
4385 var getPricing = parseFloat($('#pricing_' + id).html()); var pricing = toFixedFix(getPricing,decimal_places); var error = false; var rowvalue = (qty * pricing);// + tax;
4386 if (parseFloat(qty) < parseFloat($('#min_' + id).val())) { $('#qty_' + id).val($('#min_' + id).val()); error = true; }
4387 else if (parseFloat(qty) > parseFloat($('#max_' + id).val())) { $('#qty_' + id).val($('#max_' + id).val()); error = true; }
4388 if (error == true) $('#value_control_' + id).addClass('error'); else $('#value_control_' + id).removeClass('error');
4389 $('#rowvalue_' + id).val((isNaN(rowvalue) == true ? 0 : toFixedFix(rowvalue,decimal_places)));
4390 var pax_value = toFixedFix(($('#rowvalue_' + id).val()/pax),decimal_places);
4391 $('#paxvalue_' + id).val((isNaN(pax_value) == true || isFinite(pax_value) == false ? 0 : pax_value));
4392 }
4393
4394 function calculate_qty_cell(id)
4395 {
4396 var prov_type = $.trim($('#provtype_' + id).html()); var prov_calc = $.trim($('#provcalc_' + id).html()); var prov_rate = parseFloat($('#provrate_' + id).val()); var set_qty = parseFloat($('#setqty_' + id).val()); var tax = parseFloat($('#tax_' + id).val()); var pax = parseFloat($('#pax').val()); var spm = parseFloat(($.trim($('#SpecialMeal').val()) == '' ? 0 : $('#SpecialMeal').val()));
4397 switch(prov_type)
4398 {
4399 case 'T': var qty = prov_rate + set_qty; break;
4400 case '%':
4401 if (prov_calc == 'M' || prov_calc == 'T') var qty = Math.round((pax - spm) * (prov_rate/100) + set_qty,0);
4402 else if (prov_calc == 'P' || prov_calc == '') var qty = Math.round(pax * (prov_rate/100) + set_qty,0);
4403 break;
4404 case 'V':
4405 if (prov_calc == 'M' || prov_calc == 'T') var qty = prov_rate != 0 ? Math.ceil((pax - spm)/(prov_rate == 0 ? 1 : prov_rate) + set_qty,0) : set_qty;
4406 else if (prov_calc == 'P' || prov_calc == '') var qty = prov_rate != 0 ? Math.ceil(pax/(prov_rate == 0 ? 1 : prov_rate) + set_qty,0) : set_qty;
4407 break;
4408 case 'S': var qty = set_qty; break;
4409 }
4410 qty = (qty == 0 ? $('#previoussetqty_' + id).val() : qty);
4411 if (parseFloat(qty) < parseFloat($('#min_' + id).val())) qty = $('#min_' + id).val(); else if (parseFloat(qty) > parseFloat($('#max_' + id).val())) qty = $('#max_' + id).val();
4412 if ($('#isHidden_' + id).length == 1) qty = 0;
4413 $('#qty_' + id).val(qty);
4414 var getPricing = parseFloat($('#pricing_' + id).html()); var pricing = toFixedFix(getPricing,decimal_places); var error = false; var rowvalue = (qty * pricing);// + tax;
4415 if (parseFloat(qty) < parseFloat($('#min_' + id).val())) { $('#qty_' + id).val($('#min_' + id).val()); error = true; }
4416 else if (parseFloat(qty) > parseFloat($('#max_' + id).val())) { $('#qty_' + id).val($('#max_' + id).val()); error = true; }
4417 if (error == true) $('#value_control_' + id).addClass('error'); else $('#value_control_' + id).removeClass('error');
4418 $('#rowvalue_' + id).val((isNaN(rowvalue) == true ? 0 : toFixedFix(rowvalue,decimal_places)));
4419 var pax_value = toFixedFix(($('#rowvalue_' + id).val()/pax),decimal_places);
4420 $('#paxvalue_' + id).val((isNaN(pax_value) == true || isFinite(pax_value) == false ? 0 : pax_value));
4421 pax_update(false);
4422 }
4423
4424 function check_if_value_valid(id)
4425 {
4426 var qtyval = $('#qty_' + id).val(); var error = false;
4427 if (parseFloat(qtyval) < parseFloat($('#min_' + id).val())) { $('#qty_' + id).val($('#min_' + id).val()); error = true; }
4428 else if (parseFloat(qtyval) > parseFloat($('#max_' + id).val())) { $('#qty_' + id).val($('#max_' + id).val()); error = true; }
4429 if (error == true) $('#value_control_' + id).addClass('error'); else $('#value_control_' + id).removeClass('error');
4430 calculate_qty_cell(id);
4431 }
4432
4433 function pax_update(update_qty)
4434 {
4435 var actual_cost = 0; var total_value = 0; var pax = parseFloat($('#pax').val());
4436 $('#ServiceRouteForm :input').each(function(i,v){ if ($(this).hasClass('provrate')) { var id = $(this).attr('id'); var pass_id = id.replace('provrate_', ''); if (update_qty == true) calculate_qty(pass_id); var qty = parseFloat($('#rowvalue_' + pass_id).val()); total_value += qty;}});
4437 $('#total_value').html((isNaN(total_value) == true ? 0 : toFixedFix(total_value,decimal_places)));
4438 calculateTax.routeTax();
4439 }
4440
4441 function calcActualCosts()
4442 {
4443 var pax = parseFloat($('#pax').val());
4444 var inclSPMeals = $('#toggleInclSpecialMeals').hasClass('disabled');
4445 var total_value = parseFloat($('#total_value').html());
4446 if (inclSPMeals == false)total_value += (parseFloat($('#SpecialMeal').val()) * parseFloat($('#SpecialMealCost').val()));
4447 $('#total_value').html((isNaN(total_value) == true ? 0 : toFixedFix(total_value,decimal_places)));
4448 if (inclSPMeals == false) var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/pax),decimal_places));
4449 else var actual_cost = (isNaN(total_value) == true ? 0 : toFixedFix((total_value/(pax - parseFloat($('#SpecialMeal').val()))),decimal_places));
4450 $('#actual_cost').html((isNaN(actual_cost) == true ? 0 : actual_cost));
4451 $('#actual_cost').html(setElementDecimal($('#actual_cost').html()));
4452 $('#price_difference').html((isNaN(actual_cost) == true ? 0 : toFixedFix((actual_cost - $('#designToCost').val()),decimal_places)));
4453 price_difference();
4454 }
4455
4456 function price_difference()
4457 {
4458 if ($.trim($('#designToCost').val()) == 0) return false;
4459 var price_diff = $('#actual_cost').html() - $('#designToCost').val();
4460 // START : MPL //
4461 if(parseFloat($('#profile_associate').val()) == 1) price_diff = parseFloat($('#total_value').html()) - parseFloat($('#designToCost').val());
4462 // END : MPL //
4463 if (price_diff > 0) $('#price_difference').html(toFixedFix(price_diff,decimal_places)).removeClass('label label-success').addClass('label label-important');
4464 else $('#price_difference').html(toFixedFix(price_diff,decimal_places)).removeClass('label label-important').addClass('label label-success');
4465 $('#variance').html(toFixedFix((($('#price_difference').html()/$('#designToCost').val())*100),decimal_places));
4466 }
4467
4468 function setElementDecimal(current_value)
4469 {
4470 var convertToDecimal = toFixedFix(parseFloat(current_value),decimal_places);
4471 return convertToDecimal;
4472 }
4473
4474 function toggleChangesOnly()
4475 {
4476 $('#changesOnlyIcon').toggleClass('icon-ok-sign').toggleClass('icon-remove-sign');
4477 var isPricingScreen = JSON.parse(sessionStorage['isPricingScreen']);
4478 var plan_id = JSON.parse(sessionStorage['planSession']);
4479 var supplier_id = JSON.parse(sessionStorage['supplierSession']);
4480 if (isPricingScreen == true){
4481 var changeOnly = JSON.parse(sessionStorage['changesOnlyPricing']);
4482 var updateChangeOnly = changeOnly == 1 ? 0 : 1;
4483 sessionStorage['changesOnlyPricing'] = JSON.stringify(updateChangeOnly);
4484 getServicesByPricingAfterTracker(plan_id, supplier_id[0], false, 1);
4485 } else {
4486 var changeOnly = JSON.parse(sessionStorage['changesOnlyProvSummary']);
4487 var updateChangeOnly = changeOnly == 1 ? 0 : 1;
4488 sessionStorage['changesOnlyProvSummary'] = JSON.stringify(updateChangeOnly);
4489 provSummary.provSummaryTable(plan_id, supplier_id[0],1,0);
4490 }
4491 }
4492
4493 function getServicesByPricing(plan_id, supplier_id, toFreeze)
4494 {
4495 sessionStorage['changesOnlyPricing'] = JSON.stringify(0); sessionStorage['changesOnlyProvSummary'] = JSON.stringify(0);
4496 var passToFreeze = (toFreeze === undefined ? false : true);
4497
4498 if ($.trim($('#plan_descr').html()) == 'UK MPL')
4499 {
4500 var data = {};
4501 var trackerStr = JSON.stringify(data);
4502 try { sessionStorage['trackerInfo'] = trackerStr; } catch(err) { sessionStorage['trackerInfo'] = '';}
4503 getServicesByPricingAfterTracker(plan_id, supplier_id, passToFreeze);
4504 return;
4505 }
4506
4507 $.getJSON(base_url + 'index.php/api/mpd/tracker_changes/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json', function(data) {
4508 var trackerStr = JSON.stringify(data);
4509 try { sessionStorage['trackerInfo'] = trackerStr; } catch(err) {sessionStorage['trackerInfo'] = '';}
4510 var x = 0;
4511 var deletedObj = {};
4512 getServicesByPricingAfterTracker(plan_id, supplier_id, passToFreeze);
4513 trackerHighlight.headers();
4514 });
4515 }
4516
4517 var glCodesArr = {};
4518
4519 function getServicesByPricingAfterTracker(plan_id, supplier_id, passToFreeze, paging)
4520 {
4521 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
4522 if (parseFloat($('#profile_associate').val()) == 1) {
4523 getProfileGlCode(plan_id);
4524 }
4525 var filterDetails = {};
4526 if (sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id] == undefined) sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id] = JSON.stringify('0');
4527 if (sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id] == undefined) sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id] = JSON.stringify('0');
4528
4529 if (sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] == undefined) {
4530 if (paging == undefined) var paging = 1;
4531 if (service_option == undefined) var service_option = 0;
4532 } else {
4533 var filterSession = JSON.parse(sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]);
4534 if (paging == undefined) var paging = filterSession['Paging'];
4535 else var paging = paging;
4536 var service_option = filterSession['serviceType'];
4537 }
4538
4539 var filterData = MPLSubplanComponent.getSubplanFilterData();
4540
4541 //if ($('#changesOnlyIcon').hasClass('icon-remove-sign') == true) paging = 1;
4542 filterDetails['serviceType'] = service_option;
4543 filterDetails['Paging'] = paging;
4544 sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(filterDetails);
4545
4546 if ($('#isModified').length > 0) {
4547 naturalSave(false);
4548 return;
4549 }
4550 clearTables();
4551 var isPricingScreen = true; sessionStorage['isPricingScreen'] = JSON.stringify(isPricingScreen);
4552
4553 sessionStorage['freezeMode'] = JSON.stringify(passToFreeze);
4554 var planStatus = JSON.parse(sessionStorage['planStatusSession']);
4555
4556 var _tableMainHeader = '<table id="ServicesByPricingTable" class="table table-bordered table-striped table-condensed" ' +
4557 'style="width:inherit">' +
4558 '<thead>' +
4559 '<tr>';
4560 //if (passToFreeze == false && parseFloat(planStatus[0]) == 1) _tableMainHeader += '<th style="padding: 0px 5px 5px 5px;"> </th>';
4561 _tableMainHeader += '<th class="pricingComponentLink" style="padding: 0px 5px 5px 5px;"> </th>' +
4562 '<th class="pricingAddLink hide" style="padding: 0px 5px 5px 5px;"> </th>' +
4563 '<th class="itemMaster" style="padding: 0px 5px 5px 5px;"> </th>' +
4564 '<th class="pricingRemoveLink hide" style="padding: 0px 5px 5px 5px;"><i title="Delete" class="icon-remove-sign"></i></th>' +
4565 '<th class="tdRemarks" style="padding: 0px 5px 5px 5px;">Service/Remarks</th>' +
4566 '<th class="tdSupplierCode" style="padding: 0px 5px 5px 5px;">Supplier Code</th>' +
4567 '<th class="tdRemarks" style="padding: 0px 5px 5px 5px;">IM</th>' +
4568 '<th class="tdServiceCode" style="padding: 0px 5px 5px 5px;">Service Code</th>' +
4569 '<th class="tdRemarks" style="padding: 0px 5px 5px 5px;">Image</th>' +
4570 '<th class="tdServiceDescription" style="padding: 0px 5px 5px 5px;">Service Description</th>' +
4571 '<th class="tdGlCode ' + (parseFloat($('#profile_associate').val()) != 1 ? '': '') + '" style="padding: 0px 5px 5px 5px;">GL Code</th>' +
4572 '<th class="tdPackType" style="padding: 0px 5px 5px 5px;">Pack Type</th>';
4573 if (parseFloat($('#profile_associate').val()) == 1) {
4574 _tableMainHeader += '<th class="tdAircraft" style="padding: 0px 5px 5px 5px;"><span class="hide" id="manageAssociateAircraftSpan">Aircraft</span><a id="manageAssociateAircraftLink" href="#">Aircraft</a></th>';
4575 }
4576 if (parseFloat($('#profile_associate').val()) == 2) {
4577 _tableMainHeader += '<th class="tdSpecialMeal" style="padding: 0px 5px 5px 5px;"><a href="excel/spml_row_populator/plan_id/'+ plan_id +'/supplier_id/'+ supplier_id +'"><i class="icon-download-alt"></i></a> <span class="hide" id="manageSpmlRowPopulatorSpan">SPML</span><a id="spmlRowPopulatorLink" href="javascript:spmlRowPopulator(' + plan_id + ',' + supplier_id + ')">SPML</a></th>';
4578 }
4579 if (subplanInfo['isMPL']) {
4580 _tableMainHeader += '<th class="tdRouteRegion" style="padding: 0 5px 5px 5px;">Region</th>';
4581 }
4582 _tableMainHeader += '</tr>' +
4583 '</thead>' +
4584 '<tbody></tbody>' +
4585 '</table>';
4586
4587 $('#pricing_container').html(_tableMainHeader);
4588 var trackerInfo = JSON.parse(sessionStorage['trackerInfo']);
4589 var trackerID = 0;
4590 var firstTrackerID = 0;
4591 var trackerLength = 0;
4592// var changesCnt = 0;
4593 var priceChangesCnt = 0;
4594 var provChangesCnt = 0;
4595 var priceChangesArr = {};
4596 var provChangesArr = {};
4597
4598 if (trackerInfo['NonDeleted']) {
4599 $.each(trackerInfo['NonDeleted'], function (i,v) {
4600 trackerLength++;
4601 });
4602 $.each(trackerInfo['NonDeleted'], function (i,v) {
4603 firstTrackerID = i;
4604 if (trackerID == 0) return false;
4605 trackerID++;
4606 });
4607 }
4608
4609 if (trackerInfo['NonDeleted']) {
4610 $.each(trackerInfo['NonDeleted'], function (i,v) {
4611 $.each(trackerInfo['NonDeleted'][i], function (si,sv) {
4612 if (isNaN(parseFloat(si)) == false && trackerInfo['NonDeleted'][i][si].length == undefined) {
4613 $.each(trackerInfo['NonDeleted'][i][si], function (ssi,ssv) {
4614 if ($.trim(ssi) != 'is_deleted') {
4615 var tssi = $.trim(ssi);
4616 if (tssi == 'is_approved' || tssi == 'row_raw_material_costs'
4617 || tssi == 'row_labour_costs' || tssi == 'row_delivery_costs'
4618 || tssi == 'row_man_minutes' || tssi == 'supplier_code'
4619 || tssi == 'service_code' || tssi == 'service_option_full'
4620 || tssi == 'is_deleted' || tssi == 'tax') {
4621 priceChangesArr[si] = si;
4622 }
4623 if (tssi == 'prov_calc' || tssi == 'prov_type' || tssi == 'prov_rate'
4624 || tssi == 'min' || tssi == 'max' || tssi == 'set'
4625 || tssi == 'is_deleted') {
4626 provChangesArr[si] = si;
4627 }
4628 }
4629 });
4630 }
4631 });
4632 });
4633 $.each(priceChangesArr, function (i,v) {
4634 priceChangesCnt++;
4635 });
4636 $.each(provChangesArr, function (i,v) {
4637 provChangesCnt++;
4638 });
4639 sessionStorage['priceChangesCnt'] = JSON.stringify(priceChangesCnt);
4640 sessionStorage['provChangesCnt'] = JSON.stringify(provChangesCnt);
4641 }
4642 /*
4643 var changeOnly = JSON.parse(sessionStorage['changesOnlyPricing']);
4644 var showChangesOnly = changeOnly;//$('#changesOnlyIcon').hasClass('icon-remove-sign') == false ? 0 : 1;
4645 if (priceChangesCnt > 0) $('#changesOnlyTab').removeClass('hide'); else $('#changesOnlyTab').addClass('hide');
4646 if (priceChangesCnt > 0 && changeOnly == 1) $('#changesOnlyIcon').addClass('icon-remove-sign').removeClass('icon-ok-sign'); else $('#changesOnlyIcon').removeClass('icon-remove-sign').addClass('icon-ok-sign');
4647 if (priceChangesCnt == 0 ){ showChangesOnly = 0; $('#changesOnlyIcon').addClass('icon-ok-sign').removeClass('icon-remove-sign');}
4648 */
4649 var changeOnly = JSON.parse(sessionStorage['changesOnlyPricing']);
4650 if (priceChangesCnt > 0) {
4651 $('#changesOnlyTab').removeClass('hide');
4652 } else {
4653 $('#changesOnlyTab').addClass('hide');
4654 }
4655 if (priceChangesCnt == 0) {
4656 showChangesOnly = 0;
4657 $('#changesOnlyIcon')
4658 .addClass('icon-ok-sign')
4659 .removeClass('icon-remove-sign');
4660 }
4661 if (priceChangesCnt > 0 && changeOnly == 1) {
4662 $('#changesOnlyIcon')
4663 .addClass('icon-remove-sign')
4664 .removeClass('icon-ok-sign');
4665 } else {
4666 $('#changesOnlyIcon')
4667 .removeClass('icon-remove-sign')
4668 .addClass('icon-ok-sign');
4669 }
4670 var showChangesOnly = (priceChangesCnt > 0 && changeOnly == 1 ? ($('#changesOnlyIcon').hasClass('icon-remove-sign') == false ? 0 : 1) : 0);
4671
4672 if (passToFreeze) {
4673 priceChangesCnt = 0;
4674 showChangesOnly = 0;
4675 $('#changesOnlyIcon')
4676 .addClass('icon-ok-sign')
4677 .removeClass('icon-remove-sign');
4678 }
4679 $('#trackerNotifyLink').attr('href','javascript:naturalSave(true);');
4680 //// I THINK THIS IS OBSOLETE : LEE BAILEY 22/09/2015
4681 productionPlanTax.routeServices(plan_id,supplier_id);
4682 $('#viewOptionsPricing').removeClass('hide');
4683 $('#viewOptionsPricing').click(function (event) {
4684 event.stopPropagation();
4685 });
4686 $('#pricing_' + plan_id + '_' + supplier_id).addClass('hide');
4687 $('#priceFacilityDropdown_' + plan_id + '_' + supplier_id)
4688 .addClass('active')
4689 .removeClass('hide');
4690 $('#priceFacilityDropdown_' + plan_id + '_' + supplier_id).click(function (event) {
4691 event.stopPropagation();
4692 });
4693 $('#macroTab').click(function (event) {
4694 event.stopPropagation();
4695 });
4696
4697 //REMOVE SERVICE CODES FOR MATT
4698 /*
4699 var serviceCodes = []
4700
4701 $('#serviceCodeDiv > span').each(function(i,v){ serviceCodes.push($(this).html()); });
4702
4703 var serviceDescr = []
4704
4705 $('#serviceCodeDiv > span').each(function(i,v){
4706 var itemStr = $(this).html();
4707 var n = itemStr.indexOf('-');
4708 if (n>-1) {
4709 var codeArr = itemStr.split('-');
4710 serviceDescr.push($.trim(codeArr[1]));
4711 }
4712 });
4713 */
4714 //////////////////////////////
4715
4716 $('#pricing_container').before("<div class=\"span11\" id=\"beforePricingSpinner\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></div>");
4717 $('#ServicesByRouteTable')
4718 .dataTable()
4719 .fnDestroy();
4720 $('#ServicesByRouteTable').addClass('hide');
4721 $('#ServicesByRouteTableConainer').hide();
4722 $('#ServicesByPricingTable').removeClass('hide');
4723 $('#TrackerTableConainer').addClass('hide');
4724 $('#SummaryTableConainer').addClass('hide');
4725 $('#ProvisioningSummaryTableConainer').addClass('hide');
4726 $('#PLP_ProvisioningSummaryTableConainer').addClass('hide');
4727 $('#ServicesByPricingTable > tbody').html('');
4728
4729 $('.tab-pane > ul > li').each(function (i,v) {
4730 $(this).removeClass('active');
4731 });
4732
4733 $('#pricing_' + plan_id + '_' + supplier_id).addClass('active');
4734
4735 var associateSession = JSON.parse(sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id]);
4736 var associateFilter = $.trim(associateSession) == '0' ? '' : associateSession;
4737 var glCodeSession = JSON.parse(sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id]);
4738 var glCodeFilter = $.trim(glCodeSession) == '0' ? '' : glCodeSession;
4739
4740 var routeRegionsFilter = '';
4741 var selectAll = true;
4742 if (filterData['regions'] != undefined && filterData['regions'].length) {
4743 $.each(filterData['regions'], function (idx, item) {
4744 if (item['id'] != '0') {
4745 selectAll = false;
4746 routeRegionsFilter += 'region_option[]=' + item['id'] + '&';
4747 }
4748 });
4749 }
4750 if (selectAll) {
4751 routeRegionsFilter = '';
4752 }
4753
4754 $('.pricing_header').each(function (i,v) {
4755 $(this).remove();
4756 });
4757 var routeSelectorSessionExists = (sessionStorage['routeSelector_' + plan_id + '_' + supplier_id] == undefined) ? false : true;
4758 var pageCount = 0;
4759 var show_missing = show_missing_pricing_screen;
4760 $.getJSON(base_url + 'index.php/api/mpd/provisioning_summary_filter/plan_id/' + plan_id + '/' + api_key + 'format/json', function(data) {
4761 var priceSummaryFilterData = JSON.stringify(data);
4762 sessionStorage['priceSummaryFilterData'] = priceSummaryFilterData;
4763 $.getJSON(base_url + 'index.php/api/mpd/provisioning_summary_count/type/pricing/showChangesOnly/' + showChangesOnly + '/supplier_id/' + supplier_id + '/plan_id/' + plan_id + '/' + api_key + 'format/json?show_missing=' + show_missing + '&' + glCodeFilter + associateFilter + routeRegionsFilter + service_option, function(data) {
4764 //if (showChangesOnly == 1 && priceChangesCnt > 0) { data['Full'] = parseInt(priceChangesCnt/10); data['Remainder'] = parseInt(priceChangesCnt%10);}
4765 var priceSummaryCountData = JSON.stringify(data);
4766 sessionStorage['priceSummaryCountData'] = priceSummaryCountData;
4767 ////////////CHECK TO SEE IF PAGE EXISTS WHEN DELETING ALL COURSES FROM SERVICE OPTION///////////
4768 if (parseFloat(data['Full']) == 0 && parseFloat(data['Remainder']) == 0) {
4769 show_missing = 0;
4770 filterDetails['serviceType'] = 0;
4771 filterDetails['Paging'] = 1;
4772 sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id] = JSON.stringify('0');
4773 sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id] = JSON.stringify("0");
4774 sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(filterDetails);
4775 // PREVENTING ENDLESS LOOP OF RELOADING THE PAGE WHEN THERE IS NOTHING TO SHOW DUE TO FILTER SETTING - PART 1
4776 filterData['regions'] = [];
4777 filterData['regions'].push({ 'id': '0' });
4778 MPLSubplanComponent.setSubplanFilterData(filterData);
4779 getServicesByPricingAfterTracker(plan_id,supplier_id,false,1);
4780 $('#beforePricingSpinner').remove();
4781 return;
4782// if (filterData['mpl_reloading_zero_items'] == undefined || filterData['mpl_reloading_zero_items'] === false) {
4783// filterData['mpl_reloading_zero_items'] = true;
4784// MPLSubplanComponent.setSubplanFilterData(filterData);
4785// getServicesByPricingAfterTracker(plan_id,supplier_id,false,1);
4786// console.info('return #3975');
4787// $('#beforePricingSpinner').remove();
4788// return;
4789// } else {
4790// delete filterData['mpl_reloading_zero_items'];
4791// MPLSubplanComponent.setSubplanFilterData(filterData);
4792// $('#pricing_container').before("<div class=\"span11\" id=\"nothingToShow\"><div class=\"alert alert-warning\"><h4>No data to show</h4>There is no data to show (please check current filters settings)</div></div>");
4793// $('#beforePricingSpinner').remove();
4794// }
4795 // PREVENTING ENDLESS LOOP - END OF PART 1
4796 }
4797 ////////////CHECK TO SEE IF PAGE EXISTS WHEN DELETING ALL COURSES FROM PAGE///////////
4798 pageCount = parseFloat(data['Full']);
4799 if (parseFloat(data['Remainder']) > 0 ) {
4800 pageCount = pageCount + 1;
4801 }
4802 if (pageCount < paging) {
4803 getServicesByPricingAfterTracker(plan_id, supplier_id, false, 1, service_option);
4804 $('#beforePricingSpinner').remove();
4805 return;
4806 }
4807 if (pageCount == 0 && parseFloat(data['Remainder']) == 0) {
4808 getServicesByPricingAfterTracker(plan_id, supplier_id, false, 1, 0);
4809 $('#beforePricingSpinner').remove();
4810 return;
4811 }
4812 ///////////////////////////////////////////////////////////////////////////////////////
4813 // BEGIN: RUN PRICING CODE
4814 if (parseFloat($('#profile_associate').val()) == 2) {
4815 $('#routeDropdown').addClass('hide');
4816 } else {
4817 $('#routeDropdown').removeClass('hide');
4818 }
4819
4820 $.getJSON(base_url + 'index.php/api/mpd/route_pricing/showChangesOnly/' + showChangesOnly + '/paging/' + paging + '/freezemode/' + passToFreeze + '/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/' + api_key + 'format/json?show_missing=' + show_missing + '&' + glCodeFilter + associateFilter + routeRegionsFilter + service_option, function(data) {
4821 if (parseFloat($('#profile_associate').val()) == 1) {
4822 getProfileAircraftType(plan_id);
4823 } else if (parseFloat($('#profile_associate').val()) == 2) {
4824 getProfileSPMLType(plan_id);
4825 }
4826 setTimeout(function() {
4827
4828 calculateTax.provSummaryDepartureTaxes('',plan_id, supplier_id);
4829
4830 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
4831 var group = [];
4832// var groupData = [];
4833 var tableHeader = '';
4834 var tableSubHeader = '';
4835 var groupFacilities = JSON.parse(sessionStorage['loggedInGroupFacilities']);
4836 var facilityHeaderSpanObj = {};
4837 var facilityDecimalArr = {};
4838 $('#priceFacilityDropdown_' + plan_id + '_' + supplier_id + ' > ul').html('');
4839 $('#priceFacilityDropdown_' + plan_id + '_' + supplier_id + ' > ul').append('<li class="priceRouteDropdownLinks" style="padding-left:5px;"><label class="checkbox"><input type="checkbox" id="priceRouteSelectorAllCheckbox" onclick="javascript:priceRouteSelectorAll()">ALL</label></li>');
4840 $('#macroTab > ul').html('');
4841 $('#macroTab > ul').append('<li><a href="javascript:createMacro()">Create</a></li><li class="macroDropdownLinks" style="padding-left:5px;"><label class="checkbox"><input type="checkbox" id="macroSelectorAllCheckbox" onclick="javascript:priceMacroSelectorAll()">ALL</label></li>');
4842
4843 var x=0;
4844 var initialHide = 'block';
4845 $.each(data, function (gi,gv) {
4846 var facilityHeaderSpanCount = 6;
4847 var facilityFound = false;
4848 $.each(groupFacilities['aaData'], function (fi,fv) {
4849 if (isNaN(parseFloat(data[gi]['Departure'])) == false
4850 && parseFloat(groupFacilities['aaData'][fi]['airport_id']) == parseFloat(data[gi]['Departure'])
4851 && parseFloat(groupFacilities['aaData'][fi]['supplier_id']) == parseFloat(supplier_id)) {
4852 facilityFound = true;
4853 return;
4854 }
4855 });
4856 if (facilityFound == true) {
4857 group[x] = gi;
4858 if (parseFloat(data[gi]['yield_cost_display']) == 0) {
4859 facilityHeaderSpanCount += -1;
4860 }
4861 if (parseFloat(data[gi]['delivery_cost_display']) == 0) {
4862 facilityHeaderSpanCount += -1;
4863 }
4864 if (parseFloat(data[gi]['labour_cost_display']) == 0) {
4865 facilityHeaderSpanCount += -1;
4866 }
4867 if (parseFloat(data[gi]['man_minutes_display']) == 0) {
4868 facilityHeaderSpanCount += -1;
4869 }
4870 facilityHeaderSpanObj[gi] = facilityHeaderSpanCount;
4871
4872 if (passToFreeze == false) {
4873 if (x > 1) initialHide = 'hide';
4874 if (x < 2 && routeSelectorSessionExists == false) priceRouteSessionInit(parseFloat(data[gi]['Departure']));
4875 }
4876 $('#priceFacilityDropdown_' + plan_id + '_' + supplier_id + ' > ul').append('<li style="padding-left:5px;"><label class="checkbox"><input ' + (initialHide == 'block' ? 'checked' : '') + ' type="checkbox" class="routeSelector" data-facilityID="' + parseFloat(data[gi]['Departure']) +'" data-initialHide="' + initialHide + '" onclick="javascript:priceRouteSelector(' + parseFloat(data[gi]['Departure']) + ',false)"><span id="priceRouteDropdownText_' + parseFloat(data[gi]['Departure']) +'">' + data[gi]['Facility'] + '</span><span class="hide" id="priceRouteDropdownLoading_' + parseFloat(data[gi]['Departure']) +'"><img src="' + base_url + 'assets/css/img/spinner.gif"/ style="height:20px;"></span></label></li>');
4877 $('#macroTab > ul').append('<li style="padding-left:5px;"><label class="checkbox"><input type="checkbox" class="macroSelector" data-macroFacilityID="' + parseFloat(gi) +'">' + data[gi]['Facility'] + '</label></li>');
4878 facilityDecimalArr[parseFloat(data[gi]['Departure'])] = parseFloat(data[gi]['decimal_places']);
4879
4880 tableHeader += '<th data-yieldLabourCostDisplayHeader="' + parseFloat(data[gi]['labour_cost_display']) +'" data-yieldManMinsDisplayHeader="' + parseFloat(data[gi]['man_minutes_display']) +'" data-yieldCostDisplayHeader="' + parseFloat(data[gi]['yield_cost_display']) +'" data-deliveryCostDisplayHeader="' + parseFloat(data[gi]['delivery_cost_display']) +'" class="pricing_header tdFacilitySymbol" data-facility="' + parseFloat(data[gi]['Departure']) +'" data-decimalPlaces="' + data[gi]['decimal_places'] + '" colspan="6" style="text-align:center;">' + data[gi]['Facility'] + ' (' + data[gi]['Currency'] + ')</th>';
4881
4882 tableSubHeader += '<th class="pricing_header tdRawMat" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label label-info">Raw Mat.</span></th>' +
4883 '<th class="pricing_header tdDelivery ' + (parseFloat(data[gi]['delivery_cost_display']) == 0 ? 'hide' : '') + '" data-rowID="1" data-yieldcostdisplay="' + parseFloat(data[gi]['yield_cost_display']) +'" data-deliverycostdisplay="' + parseFloat(data[gi]['delivery_cost_display']) +'" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label label-info">Delivery</span></th>' +
4884 '<th class="pricing_header tdYield ' + (parseFloat(data[gi]['yield_cost_display']) == 0 ? 'hide' : '') + '" data-rowID="2" data-yieldcostdisplay="' + parseFloat(data[gi]['yield_cost_display']) +'" data-deliverycostdisplay="' + parseFloat(data[gi]['delivery_cost_display']) +'" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label label-info">YD/Was.</span></th>' +
4885 '<th class="pricing_header tdManMins ' + (parseFloat(data[gi]['man_minutes_display']) == 0 ? 'hide' : '') + '" data-rowID="3" data-manminsdisplay="' + parseFloat(data[gi]['man_minutes_display']) +'" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label label-info">Man Mins.</span></th>' +
4886 '<th class="pricing_header tdLabCost ' + (parseFloat(data[gi]['labour_cost_display']) == 0 ? 'hide' : '') + '" data-rowID="4" data-labourcostsdisplay="' + parseFloat(data[gi]['labour_cost_display']) +'" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label label-info">Labour</span></th>' +
4887 '<th class="pricing_header pricingTotal" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label" id="excl_tax_header_' + parseFloat(data[gi]['Departure']) + '">Sub Tot.</span></th>' +
4888 '<th class="pricing_header taxTotal_' + parseFloat(data[gi]['Departure']) + '" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label" style="width:50px;display:inline-block;">Tax</span></th>' +
4889 '<th class="pricing_header taxTotal_' + parseFloat(data[gi]['Departure']) + '" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="text-align:center;"><span class="label">Tot. Cost</span></th>' +
4890 '<th class="pricing_header approval_column" data-facility="' + parseFloat(data[gi]['Departure']) +'" style="padding: 0px 5px 5px 5px;"><a title="Approve All Prices" class="checkAllApproveClass" id="checkAllApprove_' + parseFloat(data[gi]['Departure']) +'" href="javascript:checkAllApprove(' + parseFloat(data[gi]['Departure']) +');"><span id="checkAllApproveSpan_' + parseFloat(data[gi]['Departure']) +'" class="hidden">icon-remove</span><i class="icon-ok"></i></a></th>';
4891 x++;
4892 }
4893 });
4894
4895 sessionStorage['facilityDecimal'] = JSON.stringify(facilityDecimalArr);
4896 sessionStorage['facilityHeaderSpan'] = JSON.stringify(facilityHeaderSpanObj);
4897
4898
4899// var first_id = (group[0]);
4900
4901 var tableComplete = true;
4902 var sortOrder = {};
4903 var gvArr = {};
4904// var yieldPercent = 0.10;
4905 var serviceOptionArr = {};
4906 var componentTotals = {};
4907 var nonComponentTotals = {};
4908 var courseStrLength = 0;
4909 var firstCourse = 0;
4910// var showRouteDropdown = true;
4911
4912 $.each(data[group[0]], function (i,v) {
4913 if (v != undefined && i != 'labour_cost_display' && i != 'man_minutes_display' && i != 'yield_cost_display'
4914 && i != 'delivery_cost_display' && i != 'Facility' && i != 'Currency' && i != 'decimal_places'
4915 && i != 'Departure'
4916 && ($.trim(v.is_deleted) != 1
4917 || (trackerLength > 0
4918 && (trackerInfo['NonDeleted'][firstTrackerID][v.course_id] != undefined
4919 && trackerInfo['NonDeleted'][firstTrackerID][v.course_id]['is_deleted'] == 1)
4920 )
4921 )
4922 ) {
4923 if (data[group[0]][i]['is_component'] == 0) {
4924 var spmlArr = (data[group[0]][i]['special_meal_type_id']);
4925 var aircraft_id = (data[group[0]][i]['aircraft_id']);
4926 var courseStr = new String(v.course_id);
4927 if (firstCourse == 0) courseStrLength = courseStr.length;
4928 var courseChangeCount = 0;
4929 if (trackerLength > 0 && trackerInfo['NonDeleted'][firstTrackerID][v.course_id]) {
4930 $.each(trackerInfo['NonDeleted'][firstTrackerID][v.course_id], function() {
4931 courseChangeCount++;
4932 });
4933 }
4934
4935 var associateHTML = '';
4936 var associateRemarksHTML = '';
4937 if (parseFloat($('#profile_associate').val()) == 1) {
4938 var aircraftType = $('.profileaircraftTypeDiv').clone()[0];
4939 var newAircraftType = '<select onchange="isModified();" class="input-medium" style="' + ($(document).width() < 1500 ? 'width:105px;' : 'width:105px;') + '" name="aircrafttype_' + v.course_id+ '" id="aircrafttype_' + v.course_id+ '">';
4940 if (aircraftType != undefined) {
4941 $.each(aircraftType , function(i, item) {
4942 if (aircraft_id == item.value) {
4943 if (aircraft_id != 0 && $.trim(v.row_service_description) != '') associateRemarksHTML += ' - ' + item.text;
4944 newAircraftType += '<option value="' + item.value + '" selected>' + item.text + '</option>';
4945 } else newAircraftType += '<option value="' + item.value + '">' + item.text + '</option>';
4946 });
4947 }
4948 newAircraftType += '</select>';
4949 associateHTML += '<td class="tdAircraft" style="padding: 0px 0px 0px 1px;">' + newAircraftType + '<input type="hidden" value="' + parseFloat(aircraft_id) + '" name="previousaircrafttype_' + v.course_id + '"/></td>';
4950 }
4951 if (parseFloat($('#profile_associate').val()) == 2) {
4952 var specialMealType = $('.specialMealTypeDiv').clone()[0];
4953 var newSpecialMealType = '<input type="hidden" name="defaultspecialmealtype_' + v.course_id + '"/><select multiple="multiple" onchange="isModified();" class="input-medium multipleSpml" style="' + ($(document).width() < 1500 ? 'width:90px;' : 'width:90px;') + '" name="specialmealtype_' + v.course_id + '" id="specialmealtype_' + v.course_id+ '">';
4954 $.each(specialMealType , function (i, item) {
4955 var spmlFound = false;
4956 $.each(spmlArr, function (si,sv) {
4957 if (parseFloat(sv) == item.value) {
4958 spmlFound = true;
4959 return false;
4960 }
4961 });
4962 newSpecialMealType += '<option value="' + item.value + '" ' + (spmlFound ? 'selected' : '') + '>' + item.text + '</option>';
4963 });
4964 newSpecialMealType += '</select><input type="hidden" value="' + (spmlArr) + '" name="previousspecialmealtype_' + v.course_id + '"/>';
4965 associateHTML += '<td class="tdSpecialMeal" style="padding: 0px 0px 0px 1px;">' + newSpecialMealType + '</td>';
4966 }
4967
4968 var packingType = $('.packingTypeDiv').clone()[0];
4969 var existingPackingType = '<input type="hidden" name="previousexistingpackingtype_' + v.course_id + '" id="previousexistingpackingtype_' + v.course_id + '" value="' + parseFloat(data[group[0]][i]['row_packing_id']) + '"/><select class="input-medium pricing_packing_types" style="width: 120px;" onchange="isModified();" name="existingpackingtype_' + v.course_id + '" disabled id="existingpackingtype_' + v.course_id + '">';
4970 $.each(packingType , function (p, item) {
4971 existingPackingType += '<option value="' + item.value + '" ' + (parseFloat(data[group[0]][i]['row_packing_id']) == item.value ? 'selected' : '' ) + '>' + item.text + '</option>';
4972 });
4973 existingPackingType += '</select>';
4974
4975 var returnHTML = '';
4976 serviceOptionArr[data[group[0]][i]['service_option_id']] = data[group[0]][i]['service_option_type'];
4977
4978 returnHTML += '<tr id="pricing_row_' + v.course_id + '" class="' + (v.imc_id ? ' is_imc ' : '') + (parseFloat(v.is_deleted) == 1 ? 'error' : 'pricing_row') + ' pricingRows serviceOption_' + data[group[0]][i]['service_option_id'] + '">';
4979 //if (passToFreeze == false && parseFloat(planStatus[0]) == 1) returnHTML += '<td style="padding: 0px 5px 5px 5px;"><i class="icon-move"></i></td>';
4980
4981 if (subplanInfo['isMPL'] && !v.imc_id) {
4982 var calculate_at_subplan_level = false;
4983 if (subplanInfo.course_rows_ids != undefined) {
4984 $.each(subplanInfo.course_rows_ids, function(idx, item) {
4985 if (item.row_id == v.course_id) {
4986 // found this row in the definition, we can mark it as enabled
4987 calculate_at_subplan_level = true;
4988 }
4989 });
4990 }
4991 returnHTML += '<td class="pricingComponentLink" style="padding: 0 5px 5px 5px;">' +
4992 '<input type="hidden" class="calculateAtComponentLevel" id="calculateAtComponentLevel_' + v.course_id + '" value="0">' +
4993 '<input type="hidden" class="calculateAtSubplanLevel" id="calculateAtSubplanLevel_' + v.course_id + '" ' +
4994 'value="' + (calculate_at_subplan_level ? '1' : '0') + '"/><a class="allToggleSubplanCourseRow" ' +
4995 'title="' + (calculate_at_subplan_level ? 'Price is calculated at Sub plan level' : 'No Sub Plan available for this row') + '" ' +
4996 'id="subplanToggleCourseRowLink_' + plan_id + '_' + supplier_id + '_' + v.course_id + '" ' +
4997 'href="javascript:MPLSubplanComponent.toggleSubplanCourseRow(' + plan_id + ',' + supplier_id + ',' + v.course_id + ', ' + calculate_at_subplan_level + ');"><i ' +
4998 'id="subplanToggleCourseRowIcon_' + v.course_id + '" class="' + (calculate_at_subplan_level ? 'icon-ok-circle' : 'icon-off') + '"></i></a></td>';
4999 }else if(v.imc_id) {
5000 returnHTML += '<td></td>';
5001 } else {
5002 returnHTML += '<td class="pricingComponentLink" style="padding: 0px 5px 5px 5px;"><input type="hidden" class="calculateAtComponentLevel" id="calculateAtComponentLevel_' + v.course_id + '" value="' + data[group[0]][i]['calculate_price_at_component_level'] + '"/><a title="' + (data[group[0]][i]['component_count'] > 0 ? 'View Components' : 'No Components Available') + '" id="componentModalLink_' + plan_id + '_' + supplier_id + '_' + v.course_id + '" href="javascript:servicePlanComponent.showModal(' + plan_id + ',' + supplier_id + ',' + v.course_id + ', ' + data[group[0]][i]['calculate_price_at_component_level'] + ');"><i id="showModal_' + v.course_id + '" class="' + (data[group[0]][i]['component_count'] > 0 ? 'icon-ok-circle hasComponents' : 'icon-off noComponents') + '"></i></a></td>';
5003 }
5004
5005 returnHTML += '<td class="pricingAddLink hide" style="padding: 0px 5px 5px 5px;"><input type="hidden" class="previoussortorder" name="previoussortorder_' + v.course_id + '" id="previoussortorder_' + v.course_id + '" value="' + v.sort_order + '"/><input type="hidden" class="sort_order" name="sortorder_' + v.course_id + '" id="sortorder_' + v.course_id + '" value="' + v.sort_order + '"/><a href="javascript:newRow(' + v.course_id + ',' + data[group[0]][i]['service_option_type_id'] + ',' + data[group[0]][i]['service_option_id'] + ',' + data[group[0]][i]['row_prov_rate'] + ',' + data[group[0]][i]['row_min'] + ',' + data[group[0]][i]['row_max'] + ',' + data[group[0]][i]['row_set_qty'] + ',' + data[group[0]][i]['scale_table_id'] + ',\'' + data[group[0]][i]['scale_name'] + '\',\'' + data[group[0]][i]['row_prov_type'] + '\',\'' + data[group[0]][i]['row_meal_type'] + '\',' + data[group[0]][i]['row_packing_id'] + ')" title="Add New Row" class="new_row_link" id="new_row_link' + v.course_id + '"><i class="icon-plus-sign"></i></a></td>' +
5006 '<td class="pricingAddLink hide" style="padding: 0px 5px 5px 5px;"><a href="javascript:newRow(' + v.course_id + ',' + data[group[0]][i]['service_option_type_id'] + ',' + data[group[0]][i]['service_option_id'] + ',' + data[group[0]][i]['row_prov_rate'] + ',' + data[group[0]][i]['row_min'] + ',' + data[group[0]][i]['row_max'] + ',' + data[group[0]][i]['row_set_qty'] + ',' + data[group[0]][i]['scale_table_id'] + ',\'' + data[group[0]][i]['scale_name'] + '\',\'' + data[group[0]][i]['row_prov_type'] + '\',\'' + data[group[0]][i]['row_meal_type'] + '\',' + data[group[0]][i]['row_packing_id'] + ',true)" title="Clone Row" class="new_row_link" id="new_row_link' + v.course_id + '"><i class="icon-repeat"></i></a></td>' +
5007 '<td class="pricingRemoveLink hide" style="padding: 0px 0px 5px 5px;width:10px;"><input title="Delete Row" onclick="markForDelete(' + v.course_id + ')" type="checkbox" name="delete_' + v.course_id + '" id="delete_' + v.course_id + '"/></td>' +
5008 '<td class="tdRemarks" style="padding: 0px 0px 0px 1px;"><input data-courseServiceOptionID="' + v.service_option_id + '" id="serviceoption_' + v.course_id + '" style="' + ($(document).width() < 1500 ? (passToFreeze == false ? 'width:350px;' : 'width:150px;') : 'width:' + (passToFreeze == false ? '420px;' : '235px;')) + ' ' + (trackerLength > 0 && courseChangeCount > 10 ? 'background-color:#F7F6C6;' : '') + '" disabled type="text" title="' + $.trim(data[group[0]][i]['service_option']) + '" value="' + $.trim(data[group[0]][i]['service_option']) + '"/><span class="hide" id="rowserviceclone_' + v.course_id + '">' + $.trim(data[group[0]][i]['row_service_clone']) + '</span><span class="hide" id="rowremarksclone_' + v.course_id + '">' + $.trim(data[group[0]][i]['row_remarks_clone']) + '</span></td>' +
5009 '<td class="tdSupplierCode" style="padding: 0px 0px 0px 1px;">' +
5010 (!v.imc_id ? '<input type="hidden" value="' + $.trim(v.row_supplier_code) + '" name="previoussuppliercode_' + v.course_id + '"/><input onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" style="' + ($(document).width() < 1500 ? 'width:70px;' : 'width:90px;') + ' ' + (trackerLength > 0 && trackerInfo['NonDeleted'][firstTrackerID][v.course_id] && (courseChangeCount > 10 || trackerInfo['NonDeleted'][firstTrackerID][v.course_id]['supplier_code'] != undefined ? 'background-color:#F7F6C6;' : '')) + '" onkeydown="isModified();" placeholder="Supplier Code" type="text" class="row_supplier_code" value="' + $.trim(v.row_supplier_code) + '" name="suppliercode_' + v.course_id + '" id="suppliercode_' + v.course_id + '"/>' : '<input type="text" disabled="disabled" style="' + ($(document).width() < 1500 ? 'width:70px;' : 'width:90px;') +'" value="' + $.trim(v.row_supplier_code) + '">' ) + '</td>' +
5011 '<td class="tdItemMaster" style="padding: 0px 0px 0px 1px;">' +
5012 (v.imc_id ? '<span class="is_item_master" onclick="javascript:imc_sp.show_item_master(this,' + v.imc_id +","+ v.course_id + ')">IM</span>' : '<span class="item_master_trigger" onclick="javascript:imc_sp.modal_launch(' + v.course_id + ',null,\'' + v.service_option_type +'\',false)" class="item_master">IM</span>') +
5013 '</td>' +
5014 '<td class="tdServiceCode" style="padding: 0px 0px 0px 1px;"><input type="hidden" value="' + $.trim(v.row_service_code) + '" name="previousservicecode_' + v.course_id + '"/><input style="' + ($(document).width() < 1500 ? 'width:50px;' : 'width:90px;') + ' ' + (trackerLength > 0 && trackerInfo['NonDeleted'][firstTrackerID][v.course_id] && (courseChangeCount > 10 || trackerInfo['NonDeleted'][firstTrackerID][v.course_id]['service_code'] != undefined ? 'background-color:#F7F6C6;' : '')) + '" onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();" autocomplete="off" placeholder="Code" type="text" '+ (v.imc_id !== null ? "disabled=\'disabled\'" : "disabled") +' class="row_service_code" value="' + $.trim(v.row_service_code) + '" name="servicecode_' + v.course_id + '" id="servicecode_' + v.course_id + '" title="' + ($.trim(v.prev_service_code) != $.trim(v.row_service_code) ? 'Previous value: ' + ($.trim(v.prev_service_code) == '' ? 'nothing' : $.trim(v.prev_service_code)) : '') + '" ' + (parseFloat(data[group[0]][i]['is_approved']) == 1 ? '' : '') + '/></td>' +
5015 '<td class="tdServiceItemImage" style="padding: 0px 0px 0px 1px; position: relative;">' +
5016 '<a href="#" data-imc="'+ v.imc_id +'" ' +
5017 'class="' + (v.imc_id ? "showImcImages" : "showItemImages") + '" ' +
5018 (v.imc_id ? ' data-featherlight=""' : '') +
5019 'data-rowid="' + v.course_id + '" ' +
5020 'data-img="' + v.primary_image + '">' +
5021 '<i class="fas fa-camera"></i>' +
5022 '</a>' +
5023 '</div>'+
5024 '</td>' +
5025 (!v.imc_id ? '<td class="tdServiceDescription" style="padding: 0px 0px 0px 1px;"><input type="hidden" value="' + $.trim(v.row_service_description) + '" name="previousservicedescription_' + v.course_id + '"/><input style="' + ($(document).width() < 1500 ? (passToFreeze == false ? 'width:350px;' : 'width:150px;') : 'width:410px;') + ' ' + (trackerLength > 0 && trackerInfo['NonDeleted'][firstTrackerID][v.course_id] && (courseChangeCount > 10 || trackerInfo['NonDeleted'][firstTrackerID][v.course_id]['service_description'] != undefined ? 'background-color:#F7F6C6;' : '')) + '" onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();disableApprove(' + v.course_id + ');" placeholder="Service Description" type="text" disabled class="row_service_descr" value="' + $.trim(v.row_service_description) + '" name="servicedescription_' + v.course_id + '" id="servicedescription_' + v.course_id + '" rel="tooltip" title="' + ($.trim(v.prev_description) != $.trim(v.row_service_description) ? 'Previous value: ' + ($.trim(v.prev_description) == '' ? 'nothing' : $.trim(v.prev_description)) : '') + '" ' + (parseFloat(data[group[0]][i]['is_approved']) == 1 ? 'disabled' : '') + '/></td>' : '<td class="tdServiceDescription" style="padding: 0px 0px 0px 1px;"><input type="text" disabled="disabled" value="' + $.trim(v.row_service_description) + '" style="' + ($(document).width() < 1500 ? (passToFreeze == false ? 'width:350px;' : 'width:150px;') : 'width:410px;') +'"></td>');
5026
5027
5028 /////START : GL CODES /////
5029 var glCodes = $('.glCodeDiv').clone()[0];
5030 var newGlCode = '<select onchange="isModified();" class="multipleGlCode glCodesClass" name="glcode_' + v.course_id + '" id="glcode_' + v.course_id + '" style="text-transform:capitalize; width:80px;">';
5031 $.each(glCodes , function(i, item) {
5032 var glStr = item.text;
5033 var glArr = glStr.split('|||');
5034 newGlCode += '<option data-label="' + (glArr[1] != undefined ? glArr[0] + ' - ' + glArr[1] : '') + '" value="' + item.value + '" ' + (parseFloat(item.value) == parseFloat(v.gl_code_id) ? 'selected' : '') + '>' + glArr[0] + '</option>';
5035 });
5036 newGlCode += '</select>';
5037 returnHTML += '<td class="tdGlCode ' + (parseFloat($('#profile_associate').val()) != 1 ? '' : '') + '" style="padding: 0px 0px 0px 1px;"><input type="hidden" value="' + parseFloat(v.gl_code_id) + '" name="previousglcode_' + v.course_id + '"/>' + newGlCode + '</td>';
5038 /////END : GL CODES /////
5039
5040 returnHTML += '<td class="tdPackType" style="padding: 0px 0px 0px 1px;">' + existingPackingType + '</td>';
5041 returnHTML += associateHTML;
5042
5043
5044
5045
5046
5047
5048
5049 // START: route regions dropdown
5050 if (subplanInfo['isMPL']) {
5051 returnHTML += '<td class="tdRouteRegion" style="padding: 0 0 0 1px;">';
5052 returnHTML += MPLSubplanComponent.renderRouteRegionsDropdownForRow(v.course_id, 'serviceRouteRegion_' + v.course_id, 'serviceRouteRegion_' + v.course_id, 'serviceRouteRegion input-medium');
5053 returnHTML += '</td>';
5054 }
5055 // END: route regions dropdown
5056
5057
5058
5059
5060
5061
5062
5063
5064 $.each(group, function (gi,gv) {
5065 gvArr[gi] = parseFloat(gv);
5066 if (parseFloat(data[group[0]][i]['is_deleted']) == 0
5067 && parseFloat(data[group[0]][i]['hiddenCourseCount']) > 0
5068 && ($.trim(v.row_service_description) == ''
5069 || $.trim(v.row_service_description) == '*')) {
5070 tableComplete = false;
5071 }
5072
5073 var man_minute_tracker = false;
5074 var labour_costs_tracker = false;
5075 var tracker_pricing_found = false;
5076 var raw_material_costs_found = false;
5077 var delivery_costs_found = false;
5078 var tax_tracker_found = false;
5079
5080 if (trackerLength > 0) {
5081 $.each(trackerInfo['NonDeleted'], function (ti,tv) {
5082 if (parseFloat(trackerInfo['NonDeleted'][ti]['routeDetails']['departure_id']) == parseFloat(data[gv]['Departure'])) {
5083 $.each(trackerInfo['NonDeleted'][ti], function (tis,tvs) {
5084 if (parseFloat(tis) == parseFloat(v.course_id) && trackerInfo['NonDeleted'][ti]['routeDetails']['arrival_id'] == undefined) {
5085 if (trackerInfo['NonDeleted'][ti][tis]['row_man_minutes'] != undefined) {
5086 man_minute_tracker = true;
5087 tracker_pricing_found = true;
5088 }
5089 if (trackerInfo['NonDeleted'][ti][tis]['row_labour_costs'] != undefined) {
5090 labour_costs_tracker = true;
5091 tracker_pricing_found = true;
5092 }
5093 if (trackerInfo['NonDeleted'][ti][tis]['row_raw_material_costs'] != undefined) {
5094 raw_material_costs_found = true;
5095 tracker_pricing_found = true;
5096 }
5097 if (trackerInfo['NonDeleted'][ti][tis]['row_delivery_costs'] != undefined) {
5098 delivery_costs_found = true;
5099 tracker_pricing_found = true;
5100 }
5101 if (trackerInfo['NonDeleted'][ti][tis]['tax'] != undefined) {
5102 tax_tracker_found = true;
5103 tracker_pricing_found = true;
5104 }
5105 if (tracker_pricing_found) return;
5106 }
5107 });
5108 }
5109 });
5110 }
5111
5112 var rawMaterialCostsPreSubplan = parseFloat(data[gv][v.course_id]['row_raw_material_costs']).toFixed(getDecimalPlaces(parseFloat(data[gv]['Departure'])));
5113 var rawMaterialCosts = rawMaterialCostsPreSubplan;
5114 if (subplanInfo['isMPL']) {
5115 var calculate_at_subplan_level = false;
5116 if (subplanInfo.course_rows_ids != undefined) {
5117 $.each(subplanInfo.course_rows_ids, function(idx, item) {
5118 if (item.row_id == v.course_id) {
5119 // found this row in the definition, we can mark it as enabled
5120 calculate_at_subplan_level = true;
5121 var rowServiceId = data[group[0]][i]['service_option_id'];
5122 rawMaterialCosts = MPLSubplanComponent.calculateRawMaterialsAtSubplanLevel(item.row_id, rowServiceId, aircraft_id, parseFloat(data[gv]['Departure']));
5123 }
5124 });
5125 }
5126 }
5127
5128 returnHTML += '<td class="tdRawMat" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" value="' + supplier_id + '" name="supplier_id"/><input type="hidden" value="' + rawMaterialCostsPreSubplan + '" name="previousrawmaterialscosts_' + plan_id + '_' + gv + '_' + v.course_id + '" id="previousrawmaterialscosts_' + plan_id + '_' + gv + '_' + v.course_id + '"/><input ' + (trackerLength > 0 && raw_material_costs_found == true ? 'style="background-color:#F7F6C6;text-align:right;"' : 'style="text-align:right;"') + ' onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();" onblur="onblurPricing(this.id)" placeholder="Raw Materials" type="text" disabled class="input-mini raw_materials dblPricing pricing_' + v.course_id + ' pricing_padding" value="' + rawMaterialCosts + '" name="rawmaterialcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" id="rawmaterialcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" title="' + (parseFloat(data[gv][v.course_id]['prev_row_raw_material_costs']) != rawMaterialCosts ? 'Previous value: ' + parseFloat(data[gv][v.course_id]['prev_row_raw_material_costs']) : '') + '" ' + (parseFloat(data[group[0]][i]['is_approved']) == 1 ? 'disabled' : '') + ' onfocus="onfocusSelect(this.id)" data-valueBeforeSubplan="' + rawMaterialCostsPreSubplan + '"/><input type="hidden" value="' + rawMaterialCosts + '" id="rawmaterialcostsnow_' + plan_id + '_' + gv + '_' + v.course_id + '"/></td>' +
5129 '<td data-yieldcostdisplay="' + parseFloat(data[gv]['yield_cost_display']) +'" data-rowID="1" data-deliverycostdisplay="' + parseFloat(data[gv]['delivery_cost_display']) +'" class="tdDelivery ' + (parseFloat(data[gv][v.course_id]['delivery_cost_display']) == 0 ? 'hide' : '') + '" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" value="' + supplier_id + '" name="supplier_id"/><input type="hidden" value="' + $.trim(data[gv][v.course_id]['row_delivery_costs']) + '" name="previousdeliverycosts_' + plan_id + '_' + gv + '_' + v.course_id + '"/><input onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();" onblur="onblurPricing(this.id)" placeholder="Delivery" type="text" disabled class="input-mini delivery_costs dblPricing pricing_' + v.course_id + ' pricing_padding" value="' + (parseFloat(data[gv][v.course_id]['delivery_cost_display']) == 1 ? data[gv][v.course_id]['row_delivery_costs'] : 0) + '" name="deliverycosts_' + plan_id + '_' + gv + '_' + v.course_id + '" id="deliverycosts_' + plan_id + '_' + gv + '_' + v.course_id + '" ' + (trackerLength > 0 && delivery_costs_found == true ? 'style="background-color:#F7F6C6;text-align:right;"' : 'style="text-align:right;"') + ' onfocus="onfocusSelect(this.id)"/><input type="hidden" value="' + (parseFloat(data[gv][v.course_id]['delivery_cost_display']) == 1 ? data[gv][v.course_id]['row_delivery_costs'] : 0) + '" id="deliverycostsnow_' + plan_id + '_' + gv + '_' + v.course_id + '"/></td>' +
5130 '<td data-yieldcostdisplay="' + parseFloat(data[gv]['yield_cost_display']) +'" data-rowID="2" data-deliverycostdisplay="' + parseFloat(data[gv]['delivery_cost_display']) +'" class="tdYield ' + (parseFloat(data[gv][v.course_id]['yield_cost_display']) == 0 ? 'hide' : '') + '" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" value="' + supplier_id + '" name="supplier_id"/><input type="text" disabled class="input-mini yield_costs" value="' + (parseFloat(data[gv][v.course_id]['yield_cost_display']) == 1 ? parseFloat(data[gv][v.course_id]['row_yield_costs']) : 0) + '" id="yieldcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" style="text-align:right;"/><input type="hidden" class="input-mini pricing_padding" value="' + (parseFloat(data[gv][v.course_id]['yield_cost_display']) == 1 ? parseFloat(data[gv][v.course_id]['row_yield_costs']) : 0) + '" id="yieldcostsHidden_' + plan_id + '_' + gv + '_' + v.course_id + '" onfocus="onfocusSelect(this.id)"/></td>' +
5131 '<td class="tdManMins ' + (parseFloat(data[gv][v.course_id]['man_minutes_display']) == 0 ? 'hide' : '') + '" data-rowID="3" data-manminsdisplay="' + parseFloat(data[gv]['man_minutes_display']) +'" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" value="' + supplier_id + '" name="supplier_id"/><input type="hidden" value="' + $.trim(data[gv][v.course_id]['row_man_minutes']) + '" name="previousmanminutes_' + plan_id + '_' + gv + '_' + v.course_id + '" id="previousmanminutes_' + plan_id + '_' + gv + '_' + v.course_id + '"/><input ' + (trackerLength > 0 && man_minute_tracker == true ? 'style="background-color:#F7F6C6;text-align:right;"' : 'style="text-align:right;"') + ' onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();" onblur="onblurPricing(this.id)" placeholder="Man Minutes" type="text" disabled class="input-mini man_minutes dblPricing pricing_' + v.course_id + ' pricing_padding" value="' + $.trim(data[gv][v.course_id]['row_man_minutes']) + '" name="manminutes_' + plan_id + '_' + gv + '_' + v.course_id + '" id="manminutes_' + plan_id + '_' + gv + '_' + v.course_id + '" title="' + (parseFloat(data[gv][v.course_id]['prev_row_man_minutes']) != parseFloat(data[gv][v.course_id]['row_man_minutes']) ? 'Previous value: ' + parseFloat(data[gv][v.course_id]['prev_row_man_minutes']) : '') + '" ' + (parseFloat(data[group[0]][i]['is_approved']) == 1 ? 'disabled' : '') + ' onfocus="onfocusSelect(this.id)"/><input type="hidden" value="' + $.trim(data[gv][v.course_id]['row_man_minutes']) + '" id="manminutesnow_' + plan_id + '_' + gv + '_' + v.course_id + '"/></td>' +
5132 '<td class="tdLabCost ' + (parseFloat(data[gv][v.course_id]['labour_cost_display']) == 0 ? 'hide' : '') + '" data-rowID="4" data-labourcostsdisplay="' + parseFloat(data[gv]['labour_cost_display']) +'" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" value="' + supplier_id + '" name="supplier_id"/><input type="hidden" value="' + $.trim(data[gv][v.course_id]['row_labour_costs']) + '" name="previouslabourcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" id="previouslabourcosts_' + plan_id + '_' + gv + '_' + v.course_id + '"/><input ' + (trackerLength > 0 && labour_costs_tracker == true ? 'style="background-color:#F7F6C6;text-align:right;"' : 'style="text-align:right;"') + ' onkeypress="return catchEnter.Pricing(event,\'pricing_row_' + v.course_id + '\', this.id);" onkeydown="isModified();" onblur="onblurPricing(this.id)" placeholder="Labour" type="text" disabled class="input-mini labour_costs dblPricing pricing_' + v.course_id + ' pricing_padding" value="' + $.trim(data[gv][v.course_id]['row_labour_costs']) + '" name="labourcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" id="labourcosts_' + plan_id + '_' + gv + '_' + v.course_id + '" title="' + (parseFloat(data[gv][v.course_id]['prev_row_labour_costs']) != parseFloat(data[gv][v.course_id]['row_labour_costs']) ? 'Previous value: ' + parseFloat(data[gv][v.course_id]['prev_row_labour_costs']) : '') + '" ' + (parseFloat(data[group[0]][i]['is_approved']) == 1 ? 'disabled' : '') + ' onfocus="onfocusSelect(this.id)"/><input type="hidden" value="' + $.trim(data[gv][v.course_id]['row_labour_costs']) + '" id="labourcostsnow_' + plan_id + '_' + gv + '_' + v.course_id + '"</td>' +
5133 '<td data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input style="text-align:right;" type="text" class="input-mini priceTotalInput" id="pricetotal_' + plan_id + '_' + gv + '_' + v.course_id + '" disabled value="' + parseFloat(data[gv][v.course_id]['component_total']) + '"/>' +
5134 '<td class="hastax_' + ($.trim(data[gv][v.course_id]['has_tax']) ? parseFloat(data[gv]['Departure']) + '_1' : parseFloat(data[gv]['Departure']) + '_0') + '" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input ' + (trackerLength > 0 && tax_tracker_found == true ? 'style="background-color:#F7F6C6;"' : 'style="text-align:right;"') + ' type="text" class="input-mini priceTotalInputTax" id="taxtotal_' + plan_id + '_' + gv + '_' + v.course_id + '" disabled value="' + parseFloat(data[gv][v.course_id]['tax']) + '"/>' +
5135 '<td class="hastax_' + ($.trim(data[gv][v.course_id]['has_tax']) ? parseFloat(data[gv]['Departure']) + '_1' : parseFloat(data[gv]['Departure']) + '_0') + '" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 0px 0px 1px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input style="text-align:right;" type="text" class="input-mini priceTotalInputInclTax" id="pricetotalincltax_' + plan_id + '_' + gv + '_' + v.course_id + '" disabled value="' + $.trim(data[gv][v.course_id]['has_tax']) + '"/>' +
5136 '<td class="approval_column" data-facility="' + parseFloat(data[gv]['Departure']) +'" style="padding: 0px 5px 5px 5px;' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'background-color:#E0F9E0;' : '') + '"><input type="hidden" name="previousapproved_' + plan_id + '_' + gv + '_' + v.course_id + '" id="previousapproved_' + plan_id + '_' + gv + '_' + v.course_id + '" value="' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'checked' : '') +'"/><input title="Approve Price" data-facility="' + parseFloat(data[gv]['Departure']) +'" class="approved_checkboxes" disabled onclick="pricingRowStatus(\'' + plan_id + '_' + gv + '_' + v.course_id + '\');" type="checkbox" name="approved_' + plan_id + '_' + gv + '_' + v.course_id + '" id="approved_' + plan_id + '_' + gv + '_' + v.course_id + '" ' + (parseFloat(data[gv][v.course_id]['is_approved']) == 1 ? 'checked' : '') + '/></td>';
5137
5138 nonComponentTotals['labourcosts_' + plan_id + '_' + gv + '_' + v.course_id] = (parseFloat(data[gv][v.course_id]['labour_cost_display']) == 0 ? 0 : parseFloat(data[gv][v.course_id]['row_labour_costs']));
5139 nonComponentTotals['manminutes_' + plan_id + '_' + gv + '_' + v.course_id] = (parseFloat(data[gv][v.course_id]['man_minutes_display']) == 0 ? 0 : parseFloat(data[gv][v.course_id]['row_man_minutes']));
5140 nonComponentTotals['rawmaterialcosts_' + plan_id + '_' + gv + '_' + v.course_id] = rawMaterialCosts;
5141 nonComponentTotals['deliverycosts_' + plan_id + '_' + gv + '_' + v.course_id] = parseFloat(data[gv]['delivery_cost_display']) == 0 ? 0 : parseFloat(data[gv][v.course_id]['row_delivery_costs']);
5142 yield_costs = (parseFloat(data[gv][v.course_id]['yield_cost_display']) == 1 ? parseFloat(data[gv][v.course_id]['row_yield_costs']) : 0);
5143 delivery_costs = parseFloat(data[gv][v.course_id]['row_delivery_costs']);
5144 nonComponentTotals['yieldcosts_' + plan_id + '_' + gv + '_' + v.course_id] = (parseFloat(yield_costs) != 0 ? (parseFloat(data[gv][v.course_id]['row_raw_material_costs']) + delivery_costs) * yield_costs : 0);
5145 });
5146
5147 returnHTML += '</tr>';
5148 //console.log((v.sort_order+1) + '' + courseStr.substring(0,courseStrLength) + '' + firstCourse);
5149 // sortOrder[(v.sort_order+1) + '' + courseStr.substring(0,3)] = returnHTML;
5150 sortOrder[(v.sort_order+1) + '' + courseStr.substring(0,courseStrLength) + '' + firstCourse] = returnHTML;
5151 firstCourse++;
5152 } else {
5153 $.each(group, function (gi,gv) {
5154 if (data[gv][v.course_id]['is_deleted'] == 0
5155 && data[gv][data[gv][v.course_id]['parent_id']] != undefined
5156 && parseFloat(data[gv][data[gv][v.course_id]['parent_id']]['calculate_price_at_component_level']) == 1) {
5157 componentTotals['labourcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] = (componentTotals['labourcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] == undefined ? 0 : parseFloat(componentTotals['labourcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']])) + (parseFloat(data[gv][v.course_id]['row_labour_costs']) * (parseFloat(data[gv][v.course_id]['row_man_minutes']) == undefined || parseFloat(data[gv][v.course_id]['row_man_minutes']) == 0 ? 1 : parseFloat(data[gv][v.course_id]['row_man_minutes'])));
5158 componentTotals['rawmaterialcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] = (componentTotals['rawmaterialcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] == undefined ? 0 : parseFloat(componentTotals['rawmaterialcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']])) + parseFloat(data[gv][v.course_id]['row_raw_material_costs']);
5159 componentTotals['deliverycosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] = (componentTotals['deliverycosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] == undefined ? 0 : parseFloat(componentTotals['deliverycosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']])) + parseFloat(data[gv][v.course_id]['row_delivery_costs']);
5160 yield_costs = (parseFloat(data[gv][v.course_id]['yield_cost_display']) == 1 ? parseFloat(data[gv][v.course_id]['row_yield_costs']) : 0);
5161 delivery_costs = (parseFloat(data[gv][v.course_id]['delivery_cost_display']) == 1 ? parseFloat(data[gv][v.course_id]['row_delivery_costs']) : 0);
5162
5163 componentTotals['yieldcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] = (componentTotals['yieldcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] == undefined && parseFloat(yield_costs) != 0 ? 0 : parseFloat(componentTotals['yieldcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']])) + parseFloat(toFixedFix(((parseFloat(data[gv][v.course_id]['row_raw_material_costs']) + delivery_costs) * yield_costs),data[gv]['decimal_places']));
5164 componentTotals['pricetotal_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']] = toFixedFix((parseFloat(componentTotals['labourcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']]) + parseFloat(componentTotals['rawmaterialcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']]) + (delivery_costs == 1 ? parseFloat(componentTotals['deliverycosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']]) : 0) + (parseFloat(yield_costs) == 0 ? 0 : parseFloat(componentTotals['yieldcosts_' + plan_id + '_' + gv + '_' + data[gv][v.course_id]['parent_id']]))),data[gv]['decimal_places']);
5165 }
5166 });
5167 }
5168 }
5169 });
5170
5171 sessionStorage['nonComponentTotals'] = JSON.stringify(nonComponentTotals);
5172 sessionStorage['componentTotals'] = JSON.stringify(componentTotals);
5173 var sortedReturnHTML = '';
5174
5175 /// OLD SORT BY : START ///
5176 //$.each(sortOrder, function(i, item) { sortedReturnHTML += (sortOrder[i]); });
5177 /// OLD SORT BY : END ///
5178
5179 /// NEW SORT BY : START ///
5180 var keysSorted = [];
5181 $.each(sortOrder, function (i, item) {
5182 keysSorted.push(parseFloat(i));
5183 });
5184 keysSorted.sort(function (a, b) {
5185 return parseFloat(a) - parseFloat(b);
5186 });
5187 $.each(keysSorted, function (i, v) {
5188 sortedReturnHTML += (sortOrder[v.toString()]);
5189 });
5190 /// NEW SORT BY : END ///
5191
5192 var width = ($(document).width() < 1600 ? 1600 : $(document).width() - 20);
5193
5194 $('#pricing_row').remove();
5195 $('#ServicesByPricingTable > tbody').append(sortedReturnHTML);
5196 $('#ServicesByPricingTable > thead > tr').append(tableHeader);
5197 var totalSubHeader = '<tr id="pricing_row">';
5198 //if (passToFreeze == false && parseFloat(planStatus[0]) == 1) totalSubHeader += '<td> </td>';
5199 totalSubHeader += '<td class="pricingComponentLink"> </td>' +
5200 '<td class="pricingAddLink hide"> </td>' +
5201 '<td class="pricingAddLink hide"> </td>' +
5202 '<td class="pricingRemoveLink hide"> </td>' +
5203 '<th class="pricing_header tdRemarks"><span id="spmlFilterSelected"></span></th>' +
5204 '<th class="pricing_header tdSupplierCode"> </th>' +
5205 '<th class="pricing_header tdServiceCode"> </th>' +
5206 '<th class="pricing_header tdServiceCode"> </th>' +
5207 '<th class="pricing_header tdServiceItemImage"> </th>' +
5208 '<th class="pricing_header tdServiceDescription"> </th>' +
5209 '<th class="pricing_header tdGlCode' + (parseFloat($('#profile_associate').val()) != 1 ? '' : '') + '"> </th>' +
5210 '<th class="pricing_header tdPackType"> </th>';
5211 if (parseFloat($('#profile_associate').val()) == 1) {
5212 totalSubHeader += '<th class="pricing_header tdAircraft"> </th>';
5213 }
5214 if (parseFloat($('#profile_associate').val()) == 2) {
5215 totalSubHeader += '<th class="pricing_header tdSpecialMeal"> </th>';
5216 }
5217
5218 if (subplanInfo['isMPL']) {
5219 totalSubHeader += '<th class="pricing_header tdRouteRegion"> </th>';
5220 }
5221
5222 totalSubHeader += tableSubHeader;
5223 totalSubHeader += '</tr>';
5224 $('#ServicesByPricingTable > thead').append(totalSubHeader);
5225 $('#routeHeader').html('').bind(isProduction());
5226 $('#manageAssociateAircraftLink').attr('href','javascript:show_associate_modal(1,' + plan_id + ',' + supplier_id + ');');
5227
5228 $.each(componentTotals, function (i,v) {
5229 $('#' + i).val(v);
5230 });
5231
5232 if (tableComplete == false) {
5233 $('.approval_column').remove();
5234 }
5235 if (parseFloat($('#profile_associate').val()) == 2) {
5236 $('.tdServiceCode').addClass('hide');
5237 $('#pricingServiceCode_Checkbox')
5238 .parent()
5239 .addClass('hide');
5240 }
5241
5242 //REMOVE SERVICE CODES FOR MATT
5243 //$('.row_service_code').typeahead({ source: serviceCodes, updater:function (item) { var $this = $(this); var idStr = ($this[0]['$element'][0]['id']); var idArr = idStr.split('_'); var codeArr = item.split('-'); if (codeArr.length>1) { var returnStr = $.trim(codeArr[0]); $('#servicedescription_' + idArr[1]).val($.trim(codeArr[1])); } else var returnStr = $.trim(item); return returnStr;}});
5244 //$('.row_service_descr').typeahead({ source: serviceCodes, updater:function (item) { var $this = $(this); var idStr = ($this[0]['$element'][0]['id']); var idArr = idStr.split('_'); var codeArr = item.split('-'); if (codeArr.length>1) { var returnStr = $.trim(codeArr[1]); $('#servicecode_' + idArr[1]).val($.trim(codeArr[0]));} else var returnStr = $.trim(item);return returnStr;}});
5245 ////////
5246
5247 $('.dblPricing').dblclick(function() {
5248 var setValue = $(this).val();
5249 var idSelected = $(this).attr('id');
5250 var idSelectedArr = ($(this).attr('id').split('_'));
5251 var selectedGvArrID;
5252 $.each(gvArr, function (gvArr_i, gvArr_v) {
5253 if (gvArr_v == idSelectedArr[2]) {
5254 selectedGvArrID = gvArr_i;
5255 onblurPricing(idSelected);
5256 return;
5257 }
5258 });
5259 $.each(gvArr, function (gvArr_i, gvArr_v) {
5260 if (gvArr_i > selectedGvArrID) {
5261 var currentID = idSelectedArr[0] + '_' + idSelectedArr[1] + '_' + gvArr_v + '_' + idSelectedArr[3];
5262 if($('#' + currentID).is(':visible') == false) {
5263 return;
5264 }
5265 $('#' + currentID).val(setValue);
5266 onblurPricing(currentID);
5267 }
5268 });
5269 isModified();
5270 });
5271 $('.multipleSpml').multiselect({
5272 inheritClass: true,
5273 buttonWidth: '90px',
5274 includeSelectAllOption: true,
5275 selectAllNumber: false,
5276 selectAllText: 'ALL',
5277 buttonText: function (options, select) {
5278 if (options.length === 0) {
5279 return 'None selected.';
5280 } else if (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length) {
5281 return 'ALL';
5282 } else if (options.length > 1) {
5283 return 'Multiple';
5284 } else {
5285 var labels = [];
5286 options.each(function() {
5287 if ($(this).attr('label') !== undefined) {
5288 labels.push($(this).attr('label'));
5289 } else {
5290 labels.push($(this).html());
5291 }
5292 });
5293 return labels.join(', ') + '';
5294 }
5295 }
5296 });
5297 $('.multipleGlCode').multiselect({
5298 inheritClass: true,
5299 buttonTitle: function (element) {
5300 return $.trim($(element).attr('data-label'));
5301 },
5302 buttonWidth: '75px',
5303 optionLabel: function (element) {
5304 if ($.trim($(element).attr('data-label')) != '' || $(element).attr('data-label') != undefined) return $(element).attr('data-label');
5305 }
5306 });
5307 $('.dropdown-toggle').dropdown();
5308
5309 $('.serviceRouteRegion').multiselect({
5310 inheritClass: true,
5311 buttonWidth: '90px',
5312 includeSelectAllOption: true,
5313 selectAllNumber: false,
5314 selectAllText: 'ALL',
5315 buttonText: function(options, select) {
5316 if (options.length === 0) {
5317 return 'ALL';
5318 } else if (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length) {
5319 return 'ALL';
5320 } else if (options.length > 1) {
5321 return 'MULTI';
5322 } else {
5323 var labels = [];
5324 options.each(function() {
5325 if ($(this).attr('label') !== undefined) {
5326 labels.push($(this).attr('label'));
5327 } else {
5328 labels.push($(this).html());
5329 }
5330 });
5331 return labels.join(', ') + '';
5332 }
5333 },
5334 buttonTitle: function(options, select) {
5335 if ((options.length == 0) || (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length)) {
5336 return 'ALL';
5337 }
5338 var labels = [];
5339 options.each(function () {
5340 labels.push($(this).text());
5341 });
5342 return labels.join(', ');
5343 },
5344 onChange: function(option, checked, select) {
5345 isModified();
5346 }
5347 });
5348
5349 onloadPricing();
5350
5351 $('.routeSelector').each(function() {
5352 if ($(this).attr('data-initialhide') == 'hide') {
5353 var facilityID = $(this).attr('data-facilityID');
5354 $('#ServicesByPricingTable > thead > tr > th').each(function() {
5355 if ($(this).attr('data-facility') == facilityID) $(this).hide();
5356 });
5357 $('#ServicesByPricingTable > tbody > tr > td').each(function() {
5358 if ($(this).attr('data-facility') == facilityID) $(this).hide();
5359 });
5360 } else {
5361 var facilityID = $(this).attr('data-facilityID');
5362 $('#ServicesByPricingTable > thead > tr > th').each(function() {
5363 if ($(this).attr('data-facility') == facilityID) $(this).addClass('isViewable');
5364 });
5365 $('#ServicesByPricingTable > tbody > tr > td').each(function() {
5366 if ($(this).attr('data-facility') == facilityID) $(this).addClass('isViewable');
5367 });
5368 }
5369 });
5370
5371 if (parseFloat($('#profile_associate').val()) == 1) {
5372 if (sessionStorage['mplRemarks_' + plan_id + '_' + supplier_id] && sessionStorage['mplRemarks_' + plan_id + '_' + supplier_id] == 1) {
5373 $('.tdRemarks').show();
5374 $('#pricingRemarks_Checkbox').attr('checked',true);
5375 } else {
5376 sessionStorage['mplRemarks_' + plan_id + '_' + supplier_id] = JSON.stringify(0);
5377 $('.tdRemarks').hide();
5378 $('#pricingRemarks_Checkbox').attr('checked',false);
5379 }
5380 }
5381
5382 if (passToFreeze == false) {
5383 if (routeSelectorSessionExists == true) {
5384 priceRouteSessionLoad();
5385 }
5386 pricingServicePagingInitial(plan_id, supplier_id, service_option, paging);
5387 //if (sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]) pricingFilterSessionRetrieve(plan_id, supplier_id); else pricingServicePagingInitial(plan_id, supplier_id);
5388 }
5389
5390 if (passToFreeze == false && priceChangesCnt > 0) {
5391 $('#changesOnlyTab').removeClass('hide');
5392 }
5393
5394 if (parseFloat(planStatus[0]) == 1 && showChangesOnly == 0) {
5395 var pagingMultiple = 0;
5396 var first = 0;
5397 $('.previoussortorder').each(function (i,v) {
5398 pagingMultiple = parseFloat($(this).val());
5399 return false;
5400 });
5401 $("#ServicesByPricingTable tbody").sortable({
5402 disabled: false,
5403 helper: fixHelper,
5404 cursor: 'move',
5405 cancel: ':input, button, .dropdown-menu',
5406 update: function (event, ui) {
5407 var new_sort_order = ($(this).sortable('toArray'));
5408 $.each(new_sort_order, function (i,v) {
5409 var varid = v.split('_');
5410 $('#sortorder_' + varid[2]).val(pagingMultiple + i);
5411 });
5412 isModified();
5413 }
5414 });
5415 }
5416
5417 //////// SHOW DELETED ROWS //////
5418 if (passToFreeze == false && parseFloat($('#planStatusHeader').html()) == 1) {
5419 var trackerData = JSON.parse(sessionStorage['trackerInfo']);
5420 if (trackerData != undefined && trackerData['NonDeleted'] != undefined) {
5421 var deletedObj = {};
5422 var deletedObjCnt = 0;
5423 $.each(trackerData['NonDeleted'], function (i, v) {
5424 $.each(trackerData['NonDeleted'][i], function (si, dv) {
5425 if (trackerData['NonDeleted'][i][si]['is_deleted'] != undefined && trackerData['NonDeleted'][i][si]['is_deleted'] == 1) {
5426 deletedObjCnt++;
5427 deletedObj[si] = si;
5428 }
5429 });
5430 //if (x == 0) return false;
5431 });
5432 if(deletedObjCnt > 0) {
5433 $.ajax({
5434 type: 'POST',
5435 contentType: 'application/json',
5436 url: base_url + 'index.php/api/mpd/course_details/' + api_key + 'format/json',
5437 dataType: "json",
5438 data: JSON.stringify(deletedObj),
5439 success: function (data, textStatus, jqXHR) {
5440 if (data != undefined) {
5441 $('#ServicesByPricingTable > tbody').append('<tr class="error"><td colspan="100"><strong>Services Deleted</strong></td></tr>');
5442 $.each(data, function (i, v){
5443 $('#ServicesByPricingTable > tbody').append('<tr>' +
5444 '<td class="pricingComponentLink" style="padding: 0px 5px 5px 5px;"></td>' +
5445 '<td class="pricingAddLink hide" style="padding: 0px 5px 5px 5px;"></td>' +
5446 '<td class="pricingAddLink hide" style="padding: 0px 5px 5px 5px;"></td>' +
5447 '<td class="pricingRemoveLink hide" style="padding: 0px 5px 5px 5px;"></td>' +
5448 '<td class="tdRemarks ' + ($('#pricingRemarks_Checkbox').attr('checked') == undefined ? 'hide' : '') + '" style="padding: 0px 0px 0px 1px;">' + data[i]['service_option'] + '</td>' +
5449 '<td class="tdSupplierCode" style="padding: 0px 0px 0px 1px;">' + data[i]['row_supplier_code'] + '</td>' +
5450 '<td class="tdServiceCode ' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '" style="padding: 0px 0px 0px 1px;">' + data[i]['row_service_code'] + '</td>' +
5451 '<td class="tdServiceDescription" style="padding: 0px 0px 0px 1px;">' + data[i]['row_service_description'] + '</td>' +
5452 '<td colspan="200"></td>' +
5453 '</tr>');
5454 });
5455 }
5456 }
5457 });
5458 }
5459 }
5460 }
5461 ///////////////////////////////////////
5462
5463 setTimeout(function() {
5464 pricingViewOptions.span();
5465 navPermissions.viewAnnualisedCost();
5466 if ($('#getHeaderId').val() != '0'){
5467 getServicesByRoute($('#getHeaderId').val(),$('#getDepartureID').val());
5468 $('#getHeaderId').val('0');
5469 $('#beforePricingSpinner').remove();
5470 return;
5471 }
5472 setTimeout(function() {
5473 if (!passToFreeze) {
5474 unfreezeTable(plan_id, supplier_id);
5475 } else {
5476 freezeTable(plan_id, supplier_id);
5477 }
5478 },100);
5479 },500);
5480 },1000);
5481 });
5482
5483 //END: RUN PRICINGING CODE
5484 });
5485 });
5486 }
5487
5488 function disableCalculateAtComponentLevel()
5489 {
5490 $('.calculateAtComponentLevel').each(function(){
5491 var idStr = $(this).attr('id');
5492 var idArr = idStr.split('_');
5493 var calculatePriceAtComponentChecked = parseFloat($(this).val());
5494 var courseID = idArr[1];
5495 $('.pricing_' + courseID).each(function(){
5496 if (calculatePriceAtComponentChecked == 1)
5497 $(this).attr('disabled',true);
5498 else
5499 $(this).attr('disabled',false);
5500 });
5501 });
5502 if (parseFloat($('#planStatusHeader').html()) == 2) navPermissions.viewPriceMacro();
5503 if (parseFloat($('#planStatusHeader').html()) != 2) setTimeout(function() { navPermissions.servicePlanPricing();},500);
5504 else navPermissions.retroPrices();
5505 }
5506
5507 function pricingServiceFilter(serviceType, paging, plan_id, supplier_id)
5508 {
5509 $('#pagingSpan').remove();
5510
5511 $('.pricingRows').each(function(){
5512 var classStr = '';
5513 var classArr = ($(this).attr('class').split(' '));
5514 $.each(classArr, function(i,v){ if (v.indexOf('paging_') > -1) classStr = v; });
5515 $(this).removeClass($.trim(classStr));
5516 })
5517 var pagingSize = 10;
5518 var _cnt = 0;
5519 var rowCntArr = [];
5520 $('.pricingRows').each(function(){
5521 if (serviceType == 0) {
5522 $(this).addClass('paging_' + (parseInt(_cnt/pagingSize)));
5523 if (paging == 0){
5524 $(this).fadeIn("slow", function() {});
5525 if (_cnt >= pagingSize) $(this).fadeOut("slow", function() {});
5526 }
5527 else
5528 {
5529 if ($(this).hasClass('paging_' + paging) == false) $(this).fadeOut("slow", function() {}); else $(this).fadeIn("slow", function() {});
5530 }
5531 if (_cnt%pagingSize ==0) { rowCntArr.push((_cnt/pagingSize)+1);}
5532 _cnt++;
5533 }
5534 else {
5535 if ($(this).hasClass('serviceOption_' + serviceType) == true)
5536 {
5537 $(this).addClass('paging_' + (parseInt(_cnt/pagingSize)));
5538 if (paging == 0){ $(this).fadeIn("slow", function() {}); if (_cnt >= pagingSize) $(this).fadeOut("slow", function() {});}
5539 else { if ($(this).hasClass('paging_' + paging) == false) $(this).fadeOut("slow", function() {}); else $(this).fadeIn("slow", function() {}); }
5540
5541 if (_cnt%pagingSize ==0) { rowCntArr.push((_cnt/pagingSize)+1);}
5542 _cnt++;
5543 }
5544 else
5545 $(this).fadeOut("slow", function() {});
5546 }
5547 });
5548 if(rowCntArr.length > 1){
5549 var _pagingHTML = '<span class="pagination pagination-mini"><ul>';
5550 $.each(rowCntArr, function(i,v){ _pagingHTML += '<li id="pageMenu_' + v + '"><a style="text-decoration:none;" href="javascript:pricingServicePaging(' + (v-1) + ',' + plan_id + ',' + supplier_id + ')">' + v + '</a></li>'; });
5551 _pagingHTML += '</ul></span>';
5552 $("#filterPaging").append('<span id="pagingSpan" class="pull-right">' + _pagingHTML + '</span>');
5553 $('#pageMenu_' + (paging+1)).addClass('active');
5554 }
5555 var filterDetails = {};
5556 filterDetails['serviceType'] = serviceType;
5557 filterDetails['Paging'] = paging;
5558 sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(filterDetails);
5559 }
5560
5561 function pricingFilterSessionRetrieve(plan_id, supplier_id)
5562 {
5563 var filterDetails = JSON.parse(sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]);
5564 pricingServiceFilter(parseFloat(filterDetails['serviceType']), parseFloat(filterDetails['Paging']), plan_id, supplier_id);
5565 }
5566
5567 function pricingServicePaging(page, plan_id, supplier_id)
5568 {
5569 $('.pricingRows').each(function(){
5570 if ($(this).hasClass('paging_' + page) == false)
5571 $(this).fadeOut("slow", function() {});
5572 else
5573 $(this).fadeIn("slow", function() {});
5574 });
5575 $('.pagination > ul > li').each(function(){ $(this).removeClass('active'); });
5576 $('#pageMenu_' + (page+1)).addClass('active');
5577
5578 var ServiceOption = 0;
5579 if (sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id])
5580 {
5581 var getFilterDetails = JSON.parse(sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]);
5582 ServiceOption = getFilterDetails['serviceType'];
5583 }
5584 var filterDetails = {};
5585 filterDetails['serviceType'] = ServiceOption;
5586 filterDetails['Paging'] = page;
5587 sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(filterDetails);
5588 }
5589
5590 function pricing_filter(plan_id,supplier_id)
5591 {
5592 var serviceOptionStr = '';
5593 if ($('#toggleAllPricingFilter').attr('checked') == undefined){ $('.pricingFilterCheckboxes').each(function(i,v){ if ($(this).attr('checked') != undefined) serviceOptionStr += 'service_option[]=' + $(this).val() + '&'; }); }
5594 else serviceOptionStr = '0';
5595 var getFilterDetails = JSON.parse(sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]);
5596 var pagingOption = getFilterDetails['Paging']; var filterDetails = {};
5597 filterDetails['serviceType'] = serviceOptionStr; filterDetails['Paging'] = pagingOption;
5598 sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(filterDetails);
5599 getServicesByPricingAfterTracker(plan_id,supplier_id,false);
5600 }
5601
5602 function associate_filter(plan_id,supplier_id)
5603 {
5604 var filterData = MPLSubplanComponent.getSubplanFilterData();
5605 var isMPL = false;
5606 if (sessionStorage['subplan_info'] != undefined) {
5607 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
5608 if (subplanInfo['isMPL']) {
5609 isMPL = true;
5610 }
5611 }
5612 filterData['aircrafts'] = [];
5613 var associateOptionStr = '';
5614 var profileAssociate = parseFloat($('#profile_associate').val());
5615 if ($('#allAssociateFilter').attr('checked') == undefined) {
5616 $('.associateFilterCheckboxes').each(function (i,v) {
5617 if ($(this).attr('checked') != undefined) {
5618 associateOptionStr += 'associate_' + (profileAssociate == 1 ? 'aircraft' : 'spml') + '_option[]=' + $(this).val() + '&';
5619 if (isMPL) {
5620 filterData['aircrafts'].push({ 'id': $(this).val() });
5621 }
5622 }
5623 });
5624 } else {
5625 associateOptionStr = '0';
5626 if (isMPL) {
5627 filterData['aircrafts'].push({ 'id': '0' });
5628 }
5629 }
5630 sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(associateOptionStr);
5631 if (isMPL) {
5632 MPLSubplanComponent.setSubplanFilterData(filterData);
5633 }
5634 getServicesByPricingAfterTracker(plan_id,supplier_id,false);
5635 }
5636
5637 function pricing_filter_toggle_all() { var checkedStatus = $('#toggleAllPricingFilter').attr('checked') == undefined ? false : true; $('.pricingFilterCheckboxes').attr('checked',checkedStatus);}
5638
5639 function pricing_filter_toggle_all_clear(){ $('#toggleAllPricingFilter').attr('checked', false); }
5640
5641 function associate_filter_toggle_all() { var checkedStatus = $('#allAssociateFilter').attr('checked') == undefined ? false : true; $('.associateFilterCheckboxes').attr('checked',checkedStatus);}
5642
5643 function associate_filter_toggle_all_clear(){ $('#allAssociateFilter').attr('checked', false);
5644 var checkboxCnt = 0; $('.associateFilterCheckboxes').each(function(){ checkboxCnt++; });
5645 var checkboxCheckedCnt = 0; $('.associateFilterCheckboxes').each(function(){ if ($(this).attr('checked') != undefined) checkboxCheckedCnt++; });
5646 if (checkboxCnt == checkboxCheckedCnt) $('#allAssociateFilter').attr('checked',true);
5647 }
5648
5649 function gl_code_filter(plan_id,supplier_id)
5650 {
5651 var glCodeOptionStr = ''; if ($('#allGlCodeFilter').attr('checked') == undefined){ $('.glCodeFilterCheckboxes').each(function(i,v){ if ($(this).attr('checked') != undefined) glCodeOptionStr += 'glcode_option[]=' + $(this).val() + '&'; }); } else glcodeOptionStr = '0';
5652 sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id] = JSON.stringify(glCodeOptionStr); getServicesByPricingAfterTracker(plan_id,supplier_id,false);
5653 }
5654
5655 function gl_code_filter_toggle_all() { var checkedStatus = $('#allGlCodeFilter').attr('checked') == undefined ? false : true; $('.glCodeFilterCheckboxes').attr('checked',checkedStatus);}
5656
5657 function gl_code_filter_toggle_all_clear(){ $('#allGlCodeFilter').attr('checked', false);
5658 var checkboxCnt = 0; $('.glCodeFilterCheckboxes').each(function(){ checkboxCnt++; });
5659 var checkboxCheckedCnt = 0; $('.glCodeFilterCheckboxes').each(function(){ if ($(this).attr('checked') != undefined) checkboxCheckedCnt++; });
5660 if (checkboxCnt == checkboxCheckedCnt) $('#allGlCodeFilter').attr('checked',true);
5661 }
5662
5663 function pricingServicePagingInitial(plan_id, supplier_id, serviceOptionID, paging)
5664 {
5665 var filterSession = JSON.parse(sessionStorage['priceSummaryFilterData']);
5666 var pagingSession = JSON.parse(sessionStorage['priceSummaryCountData']);
5667 if (sessionStorage['sessSPMLDropdown']) {
5668 var sessSPMLDropdown = JSON.parse(sessionStorage['sessSPMLDropdown']);
5669 }
5670 if (sessionStorage['sessAircraftDropdown']) {
5671 var sessAircraftDropdown = JSON.parse(sessionStorage['sessAircraftDropdown']);
5672 }
5673 if (sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id]) {
5674 var sessAssociateDropdown = JSON.parse(sessionStorage['pricingAssociateFilter_' + plan_id + '_' + supplier_id]);
5675 }
5676 if (sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id]) {
5677 var sessGlCodeDropdown = JSON.parse(sessionStorage['pricingGlCodeFilter_' + plan_id + '_' + supplier_id]);
5678 }
5679 var _serviceFilterHTML = '<div class="span11" id="filterPaging">' +
5680 '<ul id="primary_filters" class="nav nav-tabs ' + ($('#changesOnlyIcon').hasClass('icon-ok-sign') == true ? '' : ($('#changesOnlyIcon').is(':visible') ? 'hide' : '')) + '">' +
5681 '<li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">SERVICES<b class="caret"></b></a>' +
5682 '<ul class="dropdown-menu">' +
5683 '<li style="padding-left:5px;" class="pull-right"><a href="javascript:pricing_filter(' + plan_id + ',' + supplier_id + ');" class="btn btn-mini">APPLY</a></li>' +
5684 '<li style="padding-left:5px;" id="filterTabsLi_0" data-serviceType="All"><label class="checkbox inline"><input type="checkbox" id="toggleAllPricingFilter" onclick="pricing_filter_toggle_all()"/>ALL</label></li>';
5685 $.each(filterSession, function (i, v) {
5686 _serviceFilterHTML += '<li style="padding-left:5px;" id="filterTabsLi_' + filterSession[i]['service_option_id'] + '" data-serviceType="' + filterSession[i]['service_option_id'] + '">' +
5687 '<label class="checkbox inline">' +
5688 '<input onclick="pricing_filter_toggle_all_clear()" class="pricingFilterCheckboxes" id="pricingFilterCheckboxes_' + parseFloat(filterSession[i]['service_option_id']) + '" type="checkbox" value="' + parseFloat(filterSession[i]['service_option_id']) + '"/>' + filterSession[i]['service_option'].toUpperCase() + '</label></li>';
5689 });
5690 _serviceFilterHTML += '</ul>' +
5691 '</li>';
5692
5693 // ASSOCIATE FILTER : START //
5694 if (parseFloat($('#profile_associate').val()) == 1 || parseFloat($('#profile_associate').val()) == 2) {
5695 _serviceFilterHTML += '<li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">' + (parseFloat($('#profile_associate').val()) == 1 ? 'AIRCRAFT' : 'SPML') + '<b class="caret"></b></a>' +
5696 '<ul class="dropdown-menu" id="associateFilter">' +
5697 '<li style="padding-left:5px;" class="pull-right"><a href="javascript:associate_filter(' + plan_id + ',' + supplier_id + ');" class="btn btn-mini">APPLY</a></li>';
5698 //AIRCRAFT DROPDOWN
5699 if (parseFloat($('#profile_associate').val()) == 1) {
5700 _serviceFilterHTML += '<li style="padding-left:5px;"><label class="checkbox inline"><input id="allAssociateFilter" onclick="associate_filter_toggle_all()" type="checkbox" value="0" ' + ($.trim(sessAssociateDropdown) == "0" ? "checked" : "") + '/>ALL</label></li>';
5701 $.each(sessAircraftDropdown, function (i, v) {
5702 if (v.existing == true) {
5703 _serviceFilterHTML += '<li style="padding-left:5px;"><label class="checkbox inline"><input id="associateFilterCheckboxes_' + v.aircraft_id + '" onclick="associate_filter_toggle_all_clear()" class="associateFilterCheckboxes" type="checkbox" value="' + v.aircraft_id + '" ' + ($.trim(sessAssociateDropdown) == "0" ? "checked" : "") + '/>' + v.code.toUpperCase() + '</label></li>';
5704 }
5705 });
5706 }
5707 //SPML DROPDOWN
5708 if (parseFloat($('#profile_associate').val()) == 2) {
5709 _serviceFilterHTML += '<li style="padding-left:5px;"><label class="checkbox inline"><input id="allAssociateFilter" onclick="associate_filter_toggle_all()" type="checkbox" value="0" ' + ($.trim(sessAssociateDropdown) == "0" ? "checked" : "") + '/>ALL</label></li>';
5710 $(".profilespmlTypeDiv > option").each(function() {
5711 _serviceFilterHTML += '<li style="padding-left:5px;"><label class="checkbox inline"><input data-spmlCheckboxName="' + this.text.toUpperCase() + '" id="associateFilterCheckboxes_' + this.value + '" onclick="associate_filter_toggle_all_clear()" class="associateFilterCheckboxes" type="checkbox" value="' + this.value + '" ' + ($.trim(sessAssociateDropdown) == "0" ? "checked" : "") + '/>' + this.text.toUpperCase() + '</label></li>';
5712 });
5713 }
5714 _serviceFilterHTML += '</ul></li>';
5715 }
5716 // ASSOCIATE FILTER : END //
5717 // REMOVE ADDING/CLONING/SORT IF FILTERED : START ///
5718 if (($.trim(sessAssociateDropdown) != '0') || ($.trim(sessGlCodeDropdown) != '0')) {
5719 $("#ServicesByPricingTable tbody").sortable({
5720 items: 'li',
5721 placeholder: 'drop-highlight',
5722 forcePlaceholderSize: true,
5723 revert: true
5724 });
5725 if (parseFloat($('#profile_associate').val()) != 1)
5726 {
5727 $('.pricingAddLink').remove();
5728 $('.pricingRemoveLink').remove();
5729 }
5730 }
5731 // REMOVE ADDING/CLONING/SORT IF FILTERED : END ///
5732 // GL CODES : START //
5733 if (parseFloat($('#profile_associate').val()) == 1) {
5734 _serviceFilterHTML += '<li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">GL CODES<b class="caret"></b></a>' +
5735 '<ul class="dropdown-menu" id="glCodeFilter">' +
5736 '<li style="padding-left:5px;" class="pull-right"><a href="javascript:gl_code_filter(' + plan_id + ',' + supplier_id + ');" class="btn btn-mini">APPLY</a></li>' +
5737 '<li style="padding-left:5px;"><label class="checkbox inline"><input id="allGlCodeFilter" onclick="gl_code_filter_toggle_all()" type="checkbox" value="0" ' + ($.trim(sessGlCodeDropdown) == "0" ? "checked" : "") + '/>ALL</label></li>';
5738 $.each(glCodesArr, function (i, v) {
5739 _serviceFilterHTML += '<li style="padding-left:5px;"><label class="checkbox inline"><input id="glCodeFilterCheckboxes_' + glCodesArr[i]['entry_id'] + '" onclick="gl_code_filter_toggle_all_clear()" class="glCodeFilterCheckboxes" type="checkbox" value="' + glCodesArr[i]['entry_id'] + '" ' + ($.trim(sessGlCodeDropdown) == "0" ? "checked" : "") + '/>' + glCodesArr[i]['gl_code'].toUpperCase() + ' - ' + glCodesArr[i]['gl_description'].toUpperCase() + '</label></li>';
5740 });
5741 }
5742 _serviceFilterHTML += '</ul></li>';
5743 // GL CODES : END //
5744
5745 // ROUTE REGIONS : START //
5746 var filterData = MPLSubplanComponent.getSubplanFilterData();
5747 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
5748 var selectAll = false;
5749 var regions = '<li style="padding-left:5px;" class="pull-right"><a href="javascript:applyRouteRegionFilters(' + plan_id + ',' + supplier_id + ');" class="btn btn-mini">APPLY</a></li>';
5750 regions += '<li style="padding-left: 5px;"><label class="checkbox inline"><input id="MPLFilterRegion_ALL" onclick="javascript:toggleRouteRegionFilterAll(' + "'0'" + ');" value="0" type="checkbox"';
5751 $.each(filterData['regions'], function (idx, item) {
5752 if (item['id'] == '0') {
5753 selectAll = true;
5754 regions += ' checked="checked"';
5755 }
5756 });
5757 regions += '>ALL</label></li>';
5758
5759 $.each(subplanInfo['available_route_regions'], function (idx, item) {
5760 if (item['status']) {
5761 regions += '<li style="padding-left: 5px;"><label class="checkbox inline"><input id="MPLFilterRegion_' +
5762 item['id'] +
5763 '" onclick="javascript:toggleRouteRegionFilterAll(' + "'" + item['id'] + "'" + ');" value="' + item['id'] + '" type="checkbox"';
5764 if (selectAll) {
5765 regions += ' checked="checked"';
5766 } else {
5767 $.each(filterData['regions'], function (filterIdx, filterItem) {
5768 if (filterItem['id'] == item['id']) {
5769 regions += ' checked="checked"';
5770 return false;
5771 }
5772 });
5773 }
5774 regions += '>' + item['name'] + '</label></li>';
5775 }
5776 });
5777 if (subplanInfo['isMPL']) {
5778 _serviceFilterHTML += '<li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">REGIONS<b class="caret"></b></a>' +
5779 '<ul class="dropdown-menu" id="MPLRouteRegionFilter">' +
5780 regions +
5781 '</ul></li>';
5782 }
5783 // ROUTE REGIONS : END //
5784
5785 _serviceFilterHTML += '</ul></div>';
5786
5787 $("#routeHeader").append(_serviceFilterHTML);
5788 $('.dropdown-toggle').dropdown();
5789 $('#filterPaging').click(function (event) { event.stopPropagation(); });
5790 $('#associateFilter').click(function (event){ event.stopPropagation(); });
5791
5792 var _pagingHTML = '<span class="pagination pagination-mini"><ul>';
5793 for (var _pageCnt=1; _pageCnt<=parseFloat(pagingSession['Full']); _pageCnt++) {
5794 _pagingHTML += '<li id="pageMenu_' + _pageCnt + '" ' + (parseFloat(paging) == parseFloat(_pageCnt) ? 'class="active"' : '') + '><a style="text-decoration:none;" href="javascript:getServicesByPricingAfterTracker(' + plan_id + ',' + supplier_id + ',false,' + _pageCnt + ');">' + _pageCnt + '</a></li>';
5795 }
5796 if (parseFloat(pagingSession['Remainder']) > 0) {
5797 _pagingHTML += '<li id="pageMenu_' + (parseFloat(pagingSession['Full']) + 1) + '" ' + (parseFloat(paging) == (parseFloat(pagingSession['Full']) + 1) ? 'class="active"' : '') + '><a style="text-decoration:none;" href="javascript:getServicesByPricingAfterTracker(' + plan_id + ',' + supplier_id + ',false,' + (parseFloat(pagingSession['Full']) + 1) + ');">' + (parseFloat(pagingSession['Full']) + 1) + '</a></li>';}
5798 if(_pageCnt > 1) {
5799 $("#filterPaging").append('<span id="pagingSpan" class="pull-right">' + _pagingHTML + '</span>');
5800 }
5801
5802 var getFilterDetails = JSON.parse(sessionStorage['pricingFilter_' + plan_id + '_' + supplier_id]);
5803 var serviceType = getFilterDetails['serviceType'];
5804 if (parseFloat(serviceType) == 0 || serviceType.toString().indexOf('=') < 0) {
5805 $('#toggleAllPricingFilter').attr('checked', true);
5806 $('.pricingFilterCheckboxes').attr('checked', true);
5807 } else {
5808 var serviceTypeArr = serviceType.split('service_option[]=');
5809 $.each(serviceTypeArr, function (i, v){
5810 var serviceTypeReplace = v.replace('&','');
5811 if ($.trim(serviceTypeReplace) != '') {
5812 $('#pricingFilterCheckboxes_' + serviceTypeReplace).attr('checked', true);
5813 }
5814 });
5815 }
5816 if (parseFloat($('#profile_associate').val()) == 1 || parseFloat($('#profile_associate').val()) == 2) {
5817 if ($.trim(sessAssociateDropdown) != '0') {
5818 var associateTypeArr = sessAssociateDropdown.split('associate_' + (parseFloat($('#profile_associate').val()) == 1 ? 'aircraft' : 'spml') + '_option[]=');
5819 $.each(associateTypeArr, function (i, v){
5820 var associateTypeReplace = v.replace('&','');
5821 if ($.trim(associateTypeReplace) != '') {
5822 $('#associateFilterCheckboxes_' + associateTypeReplace).attr('checked', true);
5823 }
5824 });
5825 }
5826 }
5827 if (parseFloat($('#profile_associate').val()) == 1) {
5828 if ($.trim(sessGlCodeDropdown) != '0') {
5829 var glCodeTypeArr = sessGlCodeDropdown.split('glcode_option[]=');
5830 $.each(glCodeTypeArr, function (i, v) {
5831 var glCodeTypeReplace = v.replace('&','');
5832 if ($.trim(glCodeTypeReplace) != '') {
5833 $('#glCodeFilterCheckboxes_' + glCodeTypeReplace).attr('checked', true);
5834 }
5835 });
5836 }
5837 }
5838 // SHOW SPML SELECTED : START //
5839 if (parseFloat($('#profile_associate').val()) == 2) {
5840 var spmlSelectedStr = '';
5841 if ($('#allAssociateFilter').attr('checked') == undefined) {
5842 $('.associateFilterCheckboxes').each(function() {
5843 if ($(this).attr('checked') != undefined) {
5844 spmlSelectedStr += $(this).attr('data-spmlCheckboxName') + ', ';
5845 }
5846 });
5847 }
5848 if ($.trim(spmlSelectedStr) != '') {
5849 $('#spmlFilterSelected').html('<span class="label label-info">' + spmlSelectedStr.substring(0, spmlSelectedStr.length - 2) + '</span>');
5850 } else {
5851 $('#spmlFilterSelected').html('<span class="label label-info">All Special Meals</span>');
5852 }
5853 }
5854 // SHOW SPML SELECTED : END //
5855 }
5856
5857 function onfocusSelect(id)
5858 {
5859 $('#' + id).select();
5860 }
5861
5862 function priceMacroSelectorAll()
5863 {
5864 var isChecked = $('#macroSelectorAllCheckbox').attr('checked') == undefined ? false : true;
5865 $('.macroSelector').each(function(){ $(this).attr('checked', isChecked); });
5866 }
5867
5868 function createMacro()
5869 {
5870 var facilities = '';;
5871 $('.macroSelector').each(function(){ if ($(this).attr('checked') != undefined) facilities += 'facilities[]=' + $(this).attr('data-macrofacilityid') + '&'; });
5872 var supplierSession = JSON.parse(sessionStorage['supplierSession']); var supplier_id = supplierSession[0]; var plan_id = JSON.parse(sessionStorage['planSession']);
5873 window.open(base_url + 'mpd_profile/price_macro/plan_id/' + plan_id + '/supplier_id/' + supplier_id + '/profile_associate/' + parseFloat($('#profile_associate').val()) + '?' + facilities);
5874 }
5875
5876 function priceRouteSelectorAll()
5877 {
5878 var isChecked = $('#priceRouteSelectorAllCheckbox').attr('checked') == undefined ? false : true;
5879 $('.routeSelector').each(function(){
5880 $(this).attr('checked', isChecked);
5881 priceRouteSelector($(this).attr('data-facilityID'),true);
5882 });
5883 if (isChecked == true)
5884 setTimeout(function() { pricingViewOptions.onload(); },1000);
5885 }
5886
5887 function priceRouteSessionLoad()
5888 {
5889 var supplierSession = JSON.parse(sessionStorage['supplierSession']);
5890 var supplier_id = supplierSession[0];
5891 var plan_id = JSON.parse(sessionStorage['planSession']);
5892 var routeSelectorSession = JSON.parse(sessionStorage['routeSelector_' + plan_id + '_' + supplier_id]);
5893 $('.routeSelector').each(function(){
5894 var found = false;
5895 var facilityID = parseFloat($(this).attr('data-facilityID'));
5896 $.each(routeSelectorSession, function(i,v){ if (parseFloat(v) == parseFloat(facilityID)) { found = true; return false; } });
5897 if(found == true) $(this).attr('checked', true); else $(this).attr('checked', false);
5898 priceRouteSelector(parseFloat($(this).attr('data-facilityID')),false);
5899 });
5900 }
5901
5902 function priceRouteSessionInit(facility_id)
5903 {
5904 var routeSelector = [];
5905 var supplierSession = JSON.parse(sessionStorage['supplierSession']);
5906 var supplier_id = supplierSession[0];
5907 var plan_id = JSON.parse(sessionStorage['planSession']);
5908 if (sessionStorage['routeSelector_' + plan_id + '_' + supplier_id])
5909 {
5910 var routeSelectorSession = JSON.parse(sessionStorage['routeSelector_' + plan_id + '_' + supplier_id]);
5911 $.each(routeSelectorSession, function(i,v){ if (parseFloat(facility_id) != parseFloat(v)) routeSelector.push(v); });
5912 }
5913 routeSelector.push(facility_id);
5914 sessionStorage['routeSelector_' + plan_id + '_' + supplier_id] = JSON.stringify(routeSelector);
5915 }
5916
5917 function priceRouteSelector(facility_id,all)
5918 {
5919 var viewable = true;
5920 var checkedCnt = 0;
5921 $('.routeSelector').each(function(){
5922 if ($(this).attr('checked') != undefined) checkedCnt++;
5923 if ($(this).attr('data-facilityID') == facility_id) { if ($(this).attr('checked') == undefined) viewable = false; }
5924 });
5925
5926 var routeSelector = [];
5927 var supplierSession = JSON.parse(sessionStorage['supplierSession']);
5928 var supplier_id = supplierSession[0];
5929 var plan_id = JSON.parse(sessionStorage['planSession']);
5930 if (sessionStorage['routeSelector_' + plan_id + '_' + supplier_id])
5931 {
5932 var routeSelectorSession = JSON.parse(sessionStorage['routeSelector_' + plan_id + '_' + supplier_id]);
5933 $.each(routeSelectorSession, function(i,v){ if (parseFloat(facility_id) != parseFloat(v)) routeSelector.push(v); });
5934 }
5935 if (viewable == true) routeSelector.push(parseFloat(facility_id));
5936 sessionStorage['routeSelector_' + plan_id + '_' + supplier_id] = JSON.stringify(routeSelector);
5937
5938 var manRawMatVisible = true; var manMinsVisible = true; var labourCostVisible = true; var deliveryVisible = true; var yieldVisible = true;
5939 $('.viewOptionsDropdownPricing').each(function(vi,vv){
5940 var checkboxID = ($(this).attr('id'));
5941 if (checkboxID == 'pricingRawMat_Checkbox' && $('#' + checkboxID).attr('checked') == undefined) manRawMatVisible = false;
5942 if (checkboxID == 'pricingManMins_Checkbox' && $('#' + checkboxID).attr('checked') == undefined) manMinsVisible = false;
5943 if (checkboxID == 'pricingLabCost_Checkbox' && $('#' + checkboxID).attr('checked') == undefined) labourCostVisible = false;
5944 if (checkboxID == 'pricingDelivery_Checkbox' && $('#' + checkboxID).attr('checked') == undefined) deliveryVisible = false;
5945 if (checkboxID == 'pricingYield_Checkbox' && $('#' + checkboxID).attr('checked') == undefined) yieldVisible = false;
5946 });
5947
5948 $('#ServicesByPricingTable > thead > tr > th').each(function(){
5949 var attr = $(this).attr('data-facility');
5950 if ($(this).attr('data-facility') == facility_id)
5951 {
5952 if ($(this).attr('data-facility') == facility_id)
5953 {
5954 if (viewable == true)
5955 {
5956 if ($(this).attr('data-rowID') == 1)
5957 { if ($(this).attr('data-deliverycostDisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5958 if ($(this).attr('data-rowID') == 2)
5959 { if ($(this).attr('data-yieldcostDisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5960 if ($(this).attr('data-rowID') == 3)
5961 { if ($(this).attr('data-manminsdisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5962 if ($(this).attr('data-rowID') == 4)
5963 { if ($(this).attr('data-labourcostsdisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5964 if ($(this).attr('data-rowID') == undefined) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {});}
5965 }
5966 else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }
5967 }
5968 }
5969 });
5970 $('#ServicesByPricingTable > tbody > tr > td').each(function(){
5971 var attr = $(this).attr('data-facility');
5972 if (typeof attr !== 'undefined' && attr !== false)
5973 {
5974 if ($(this).attr('data-facility') == facility_id)
5975 {
5976 if (viewable == true)
5977 {
5978 if ($(this).attr('data-rowID') == 1)
5979 { if ($(this).attr('data-deliverycostDisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5980 if ($(this).attr('data-rowID') == 2)
5981 { if ($(this).attr('data-yieldcostDisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5982 if ($(this).attr('data-rowID') == 3)
5983 { if ($(this).attr('data-manminsdisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5984 if ($(this).attr('data-rowID') == 4)
5985 { if ($(this).attr('data-labourcostsdisplay') == 1) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {}); } else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }}
5986 if ($(this).attr('data-rowID') == undefined) { $(this).addClass('isViewable'); $(this).fadeIn("slow", function() {});}
5987 }
5988 else { $(this).removeClass('isViewable'); $(this).fadeOut("slow", function() {}); }
5989 }
5990 }
5991 });
5992 //if (all == false) pricingViewOptions.onload();
5993 //$('#priceRouteDropdownLoading_' + facility_id).toggle(); $('#priceRouteDropdownText_' + facility_id).toggle();
5994
5995 $('.tdManMins').each(function(){ if (manMinsVisible == false || parseFloat($(this).attr('data-manminsdisplay')) == 0 || $(this).hasClass('isViewable') == false) $(this).fadeOut("slow", function() {}); });
5996 $('.tdLabCost').each(function(){ if (labourCostVisible == false || parseFloat($(this).attr('data-labourcostsdisplay')) == 0 || $(this).hasClass('isViewable') == false) $(this).fadeOut("slow", function() {}); });
5997 $('.tdDelivery').each(function(){ if (deliveryVisible == false || parseFloat($(this).attr('data-deliverycostdisplay')) == 0 || $(this).hasClass('isViewable') == false) $(this).fadeOut("slow", function() {}); });
5998 $('.tdYield').each(function(){ if (yieldVisible == false || parseFloat($(this).attr('data-yieldcostdisplay')) == 0 || $(this).hasClass('isViewable') == false) $(this).fadeOut("slow", function() {}); });
5999 $('.tdRawMat').each(function(){ if (manRawMatVisible == false || $(this).hasClass('isViewable') == false) $(this).fadeOut("slow", function() {}); });
6000 }
6001
6002 function unfreezeTable(plan_id, supplier_id)
6003 {
6004 $('.routeSelector').each(function(){ $(this).attr('disabled', false); });
6005 $('#viewOptionsPricing > ul > li > label > input').each(function(){ $(this).attr('disabled', false); });
6006 $('#filterPaging').removeClass('hide');
6007 $('#priceRouteSelectorAllCheckbox').attr('disabled', false);
6008 $('#freezeLink').remove();
6009 // DON'T SHOW FREEZE FRAMES IF MPL //
6010 if (parseFloat($('#profile_associate').val()) != 1) $('#excelTab').after('<li id="freezeLink"><a title="Switch On Freeze Column Mode" href="javascript:getServicesByPricingAfterTracker(' + plan_id + ', ' + supplier_id + ', true);"><i class="icon-align-justify"></i></a></li>');
6011 $('#beforePricingSpinner').remove();
6012 $('#pricing_container').removeClass('hide');
6013 pricingViewOptions.onload();
6014 //$('#ServicesByPricingTable').dataTable().fnDestroy();
6015 //$('#ServicesByPricingTable').dataTable({"bSort": false, "bDestroy": true,"sScrollY": "300px", "bPaginate": false,"bScrollCollapse": true, "bScrollCollapse": true, "bFilter": false, "bInfo": false} );
6016 $('#pricing_container').css('overflow-y','auto').css('height','500px');
6017 disableCalculateAtComponentLevel();
6018 MPLSubplanComponent.enableEditFieldsForMPLSubplan();
6019 if ($('#changesOnlyIcon').hasClass('icon-remove-sign') == true) $('.new_row_link').removeAttr('href');
6020 }
6021
6022 function freezeTable(plan_id, supplier_id)
6023 {
6024 $('.tdDelivery').each(function(){
6025 if (parseFloat($(this).attr('data-deliverycostdisplay')) == 0)
6026 $(this).remove();
6027 });
6028 $('.tdManMins').each(function(){
6029 if (parseFloat($(this).attr('data-manminsdisplay')) == 0)
6030 $(this).remove();
6031 });
6032 $('.tdLabCost').each(function(){
6033 if (parseFloat($(this).attr('data-labourcostsdisplay')) == 0)
6034 $(this).remove();
6035 });
6036 $('.tdYield').each(function(){
6037 if (parseFloat($(this).attr('data-yieldcostdisplay')) == 0)
6038 $(this).remove();
6039 });
6040 $('.routeSelector').each(function(){ $(this).attr('disabled', true); });
6041 $('#viewOptionsPricing > ul > li > label > input').each(function(){ $(this).attr('disabled', true); });
6042 $('#filterPaging').addClass('hide');
6043 $('#priceRouteSelectorAllCheckbox').attr('disabled', true);
6044 $('#freezeLink').remove();
6045 $('#pricing_container').css('overflow','').css('height','');
6046 // DON'T SHOW FREEZE FRAMES IF MPL //
6047 if (parseFloat($('#profile_associate').val()) != 1) $('#excelTab').after('<li id="freezeLink"><a title="Switch Off Freeze Column Mode" href="javascript:getServicesByPricingAfterTracker(' + plan_id + ', ' + supplier_id + ', false);"><i class="icon-align-justify"></i></a></li>');
6048 $('#beforePricingSpinner').remove();
6049 $('#pricing_container').removeClass('hide');
6050 //pricingViewOptions.onload();
6051 $('#ServicesByPricingTable').dataTable().fnDestroy();
6052 if ($(document).width() < 1300)
6053 var oTable = $('#ServicesByPricingTable').dataTable({"bSort": false, "bDestroy": true,"sScrollY": "300px", "sScrollX": "95%","bPaginate": false,"bScrollCollapse": false, "bFilter": false, "bInfo": false} );
6054 else
6055 var oTable = $('#ServicesByPricingTable').dataTable({"bSort": false, "bDestroy": true,"sScrollY": "300px", "sScrollX": "95%","bPaginate": false,"bScrollCollapse": false, "bFilter": false, "bInfo": false} );
6056
6057 var colSpan = 11;
6058 if (parseFloat($('#profile_associate').val()) == 1) colSpan = 11;
6059 if (parseFloat($('#profile_associate').val()) == 2) colSpan = 11;
6060
6061 new FixedColumns( oTable, {"sHeightMatch": "auto", "sLeftWidth": "relative", "iLeftWidth": 70,"iLeftColumns": colSpan} );
6062 setTimeout(function() { oTable.fnAdjustColumnSizing(true); disableCalculateAtComponentLevel(); MPLSubplanComponent.enableEditFieldsForMPLSubplan(); },500);
6063 }
6064
6065 function disableApprove(course_id)
6066 {
6067 if (parseFloat($('#planStatusHeader').html()) == 2)
6068 return;
6069 $('.approved_checkboxes').each(function(){
6070 var idStr = $(this).attr('id');
6071 var idArr = idStr.split('_');
6072 if (parseFloat(course_id) == parseFloat(idArr[3]))
6073 try{ $(this).attr('checked', false).attr('disabled',false); }catch(e){}
6074 });
6075 try{ $('#pricing_row_' + course_id).removeClass('success'); }catch(e){}
6076 }
6077
6078 var fixHelper = function(e, ui) {
6079 ui.children().each(function() {
6080 $(this).width($(this).width());
6081 });
6082
6083 return ui;
6084 };
6085
6086 function calculateTotalPricing(plan_id, facility_id, course_id,decimal_places)
6087 {
6088 this.man_minutes = parseFloat($('#manminutes_' + plan_id + '_' + facility_id + '_' + course_id).val());
6089 this.labour_costs = parseFloat($('#labourcosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6090 this.raw_materials = parseFloat($('#rawmaterialcosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6091 this.yield_costs = parseFloat($('#yieldcostsHidden_' + plan_id + '_' + facility_id + '_' + course_id).val()) != 0 ? parseFloat($('#yieldcostsHidden_' + plan_id + '_' + facility_id + '_' + course_id).val()) : 0;
6092 this.delivery_costs = parseFloat($('#deliverycosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6093 this.priceTotal = 0;
6094
6095 this.display_labuour_costs = parseFloat($('#labourcosts_' + plan_id + '_' + facility_id + '_' + course_id).parent().attr('data-labourCostsDisplay'));
6096 this.display_man_minutes = parseFloat($('#manminutes_' + plan_id + '_' + facility_id + '_' + course_id).parent().attr('data-manminsdisplay'));
6097
6098 if (parseFloat(this.yield_costs) != 0)
6099 $('#yieldcosts_' + plan_id + '_' + facility_id + '_' + course_id).val((parseFloat(this.yield_costs) != 0 ? (this.raw_materials + this.delivery_costs) * this.yield_costs : 0));
6100 if (parseFloat(this.man_minutes) == 0 && parseFloat(this.labour_costs) == 0 && parseFloat(this.raw_materials) == 0)
6101 this.priceTotal = 0;
6102 else if (parseFloat(this.man_minutes) == 0 && parseFloat(this.labour_costs) == 0)
6103 this.priceTotal = parseFloat(this.raw_materials);
6104 else if (parseFloat(this.man_minutes) == 0 && parseFloat(this.labour_costs) > 0)
6105 this.priceTotal = parseFloat(this.labour_costs) + parseFloat(this.raw_materials);
6106 else if (parseFloat(this.man_minutes) > 0 && parseFloat(this.labour_costs) == 0)
6107 this.priceTotal = parseFloat(this.man_minutes) + parseFloat(this.raw_materials);
6108 else if (parseFloat(this.man_minutes) > 0 && parseFloat(this.labour_costs) > 0)
6109 this.priceTotal = (parseFloat(this.man_minutes) * parseFloat(this.labour_costs)) + parseFloat(this.raw_materials);
6110
6111 var labourCosts = parseFloat(this.labour_costs) > 0 && this.display_labuour_costs == 1 ? parseFloat(this.labour_costs) * (parseFloat(this.man_minutes) == 0 || this.display_man_minutes == 0 ? 1 : parseFloat(this.man_minutes)) : 0;
6112
6113 this.newPriceTotal = (this.raw_materials + this.delivery_costs) + (parseFloat(this.yield_costs) != 0 ? toFixedFix($('#yieldcosts_' + plan_id + '_' + facility_id + '_' + course_id).val(),decimal_places) : 0) + toFixedFix(labourCosts,decimal_places);
6114 return parseFloat(this.newPriceTotal);
6115 }
6116
6117 function setAllDecimal(plan_id,facility_id,course_id, decimal_places)
6118 {
6119 var rawmaterialcosts = parseFloat($('#rawmaterialcosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6120 $('#rawmaterialcosts_' + plan_id + '_' + facility_id + '_' + course_id).val(toFixedFix(rawmaterialcosts,decimal_places));
6121 var yieldcosts = parseFloat($('#yieldcosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6122 $('#yieldcosts_' + plan_id + '_' + facility_id + '_' + course_id).val(toFixedFix(yieldcosts,decimal_places));
6123 var deliverycosts = parseFloat($('#deliverycosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6124 $('#deliverycosts_' + plan_id + '_' + facility_id + '_' + course_id).val(toFixedFix(deliverycosts,decimal_places));
6125 var labourcosts = parseFloat($('#labourcosts_' + plan_id + '_' + facility_id + '_' + course_id).val());
6126 $('#labourcosts_' + plan_id + '_' + facility_id + '_' + course_id).val(toFixedFix(labourcosts,decimal_places));
6127 var manminutes = parseFloat($('#manminutes_' + plan_id + '_' + facility_id + '_' + course_id).val());
6128 $('#manminutes_' + plan_id + '_' + facility_id + '_' + course_id).val(toFixedFix(manminutes,decimal_places));
6129 }
6130
6131 function toFixedFix ( number, precision ) {
6132 return Number(Math.round(number + 'e' + precision) + 'e-' + precision);
6133 //return (number * Math.pow(10,(precision + 1)), -1) / Math.pow(10,(precision + 1)).round(precision);
6134 var precisionNumber = number.toString();
6135 if (parseFloat(precisionNumber.charAt(precision + 2)) > 4) { var multiplier = Math.pow( 10, precision + 1 ), wholeNumber = Math.ceil( number * multiplier ); }
6136 else { var multiplier = Math.pow( 10, precision + 1 ), wholeNumber = Math.floor( number * multiplier ); }
6137 return Math.round( wholeNumber / 10 ) * 10 / multiplier;
6138 }
6139
6140 function onloadPricing()
6141 {
6142 $('.calculateAtSubplanLevel').each(function (idx, item) {
6143 if ($(item).val() == '1') {
6144 var tr = $(item).parent(/* TD */).parent(/* TR */);
6145 $('.labour_costs', tr).each(function (inputIdx, inputItem) {
6146 onblurPricing($(inputItem).attr('id'));
6147 });
6148 }
6149 });
6150 $('.priceTotalInput').each(function(i,v){
6151 var priceTotal = parseFloat($(this).val());
6152 var idStr = ($(this).attr('id'));
6153 var idArr = idStr.split('_');
6154 var facilityID = $(this).parent().attr('data-facility');
6155 var decimal_places = getDecimalPlaces(facilityID);
6156 var tax = $('#taxtotal_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val();
6157 var calculateAtComponentLevel = ($('#calculateAtComponentLevel_' + idArr[3]).val());
6158 if (calculateAtComponentLevel == 1)$('#manminutes_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(0);
6159 if (calculateAtComponentLevel == 0)
6160 priceTotal = calculateTotalPricing(idArr[1],idArr[2],idArr[3],decimal_places);
6161 var priceTotalInclTax = parseFloat(priceTotal) + parseFloat(tax);
6162 $('#pricetotalincltax_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(priceTotalInclTax,decimal_places));
6163 $('#pricetotal_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(priceTotal,decimal_places));
6164 setAllDecimal(idArr[1],idArr[2],idArr[3],decimal_places);
6165 var previousmanminutes = parseFloat($('#previousmanminutes_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val());
6166 $('#previousmanminutes_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(previousmanminutes,decimal_places));
6167 var previouslabourcosts = parseFloat($('#previouslabourcosts_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val());
6168 $('#previouslabourcosts_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(previouslabourcosts,decimal_places));
6169 var previousrawmaterialscosts = parseFloat($('#previousrawmaterialscosts_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val());
6170 $('#previousrawmaterialscosts_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(previousrawmaterialscosts,decimal_places));
6171 });
6172 }
6173
6174 function getDecimalPlaces(facility_id)
6175 {
6176 var decimalPlaces = 3;
6177 $('.tdFacilitySymbol').each(function(){
6178 if (parseFloat($(this).attr('data-facility')) == facility_id)
6179 {
6180 decimalPlaces = parseFloat($(this).attr('data-decimalplaces'));
6181 return false;
6182 }
6183 });
6184 return decimalPlaces
6185 }
6186
6187 function onblurPricing(id, uncheck)
6188 {
6189 var idArr = id.split('_');
6190 var facilityID = $('#' + id).parent().attr('data-facility');
6191 var decimal_places = getDecimalPlaces(facilityID);
6192 var service_option = $('#serviceoption_' + idArr[3]).attr('data-courseserviceoptionid');
6193
6194 var taxOptions = JSON.parse(sessionStorage['taxMerge']);
6195 var priceTotal = calculateTotalPricing(idArr[1], idArr[2], idArr[3], decimal_places);
6196 var initialTotal = priceTotal;
6197 var taxValue = 0;
6198 var priceTotalInclTax = 0;
6199 if ($('#taxtotal_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).length) {
6200 if (taxOptions['Existing'] != undefined) {
6201 if (taxOptions['Existing'][facilityID]!= undefined) {
6202 if (taxOptions['Existing'][facilityID][service_option]) {
6203 if (taxOptions['Existing'][facilityID][service_option]['Ordinal']['N']) {
6204 $.each(taxOptions['Existing'][facilityID][service_option]['Ordinal']['N'], function (ordinalId, ordinalVal) {
6205 initialTotal += parseFloat(initialTotal/100) * parseFloat(taxOptions['Existing'][facilityID][service_option]['Ordinal']['N'][ordinalId]);
6206 });
6207 taxValue = initialTotal - parseFloat(priceTotal);
6208 priceTotalInclTax = parseFloat(priceTotal) + parseFloat(taxValue);
6209 $('#taxtotal_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(taxValue, decimal_places));
6210 $('#pricetotalincltax_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(priceTotalInclTax, decimal_places));
6211 }
6212 }
6213 }
6214 }
6215 }
6216 if (parseFloat(toFixedFix(taxValue, decimal_places)) == 0) {
6217 $('#pricetotalincltax_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(priceTotal, decimal_places));
6218 }
6219
6220 if (parseFloat($('#planStatusHeader').html()) != 2 && uncheck == undefined) {
6221 if (parseFloat($('#' + idArr[0] + '_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val()) != parseFloat($('#' + idArr[0] + 'now_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val())) {
6222 $('#approved_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).attr('checked', false).attr('disabled', false);
6223 }
6224 }
6225
6226 $('#pricetotal_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3]).val(toFixedFix(priceTotal, decimal_places));
6227 setAllDecimal(idArr[1], idArr[2], idArr[3], decimal_places);
6228 }
6229
6230 function checkAllApprove(facility_id)
6231 {
6232 var currentText = $('#checkAllApproveSpan_' + facility_id).html();
6233 if ($.trim(currentText) == 'icon-ok') { $('#checkAllApproveSpan_' + facility_id).html('icon-remove'); var checkStatus = true; }
6234 else { $('#checkAllApproveSpan_' + facility_id).html('icon-ok'); var checkStatus = false; }
6235 $('.approved_checkboxes').each(function(i,v){ if ($(this).attr('data-facility') == facility_id) $(this).attr('checked', checkStatus); });
6236 isModified();
6237 return;
6238 $('.pricing_row').each(function(i,v){ var idStr = ($(this).attr('id')); var idArr = idStr.split('_'); pricingRowStatus(idArr[2]); });
6239 }
6240
6241 function checkForNewRows()
6242 {
6243 error = false;
6244
6245 $('.newrow').each(function(i,v){
6246 var id = ($(v).attr('id'));
6247 $('#routeHeader').html('');
6248
6249 $('#newrowservice_' + id + '_error').removeClass('error');
6250 $('#newremarks_' + id + '_error').removeClass('error');
6251 $('#newPackingType_' + id + '_error').removeClass('error');
6252
6253 if ($('#newrowservice_' + id).val() == '')
6254 {
6255 $('#newrowservice_' + id + '_error').addClass('error');
6256 error = true;
6257 }
6258 if ($('#newremarks_' + id).val() == '' && parseFloat($('#newIsClone_' + id).val()) == 0)
6259 {
6260 $('#newremarks_' + id + '_error').addClass('error');
6261 error = true;
6262 }
6263 if ($('#newpackingtype_' + id).val() == '')
6264 {
6265 $('#newPackingType_' + id + '_error').addClass('error');
6266 error = true;
6267 }
6268 });
6269
6270 if (error == true) $('#routeHeader').html('<div class="alert alert-error"><h4>Warning!</h4>There are missing values. Please correct before saving.</div>');
6271
6272 return error;
6273 }
6274
6275 function newRowProvType(val, id)
6276 {
6277 if ($.trim(val) == 't') { $('#scaleContainer_' + id).removeClass('hide'); $('#provContainer_' + id).addClass('hide'); }else { $('#scaleContainer_' + id).addClass('hide'); $('#provContainer_' + id).removeClass('hide'); }
6278 }
6279
6280 function newRow(id, service_type_id, service_option_id, prevProvRate, prevMin, prevMax, preSetQty, prevScaleTableID, prevScaleName, prevProvType, prevMealType, prevPackingType, clone)
6281 {
6282 var isClone = clone == undefined ? false : true;
6283 var prev_sort = parseFloat($('#sortorder_' + id).val());
6284 var newRowID = id + '' + guid();
6285 //var prevPackingType = $('#existingpackingtype_' + id).val();
6286 //var prevMealType = $('#mealtype_' + id).val();
6287 //var prevProvType = $('#provtype_' + id).val();
6288 var rowAircraftType = $('#aircrafttype_' + id).val();
6289 var rowSpecialMealType = {}; rowSpecialMealType = $('#specialmealtype_' + id).val();
6290 var rowGlCode = $('#glcode_' + id).val(); var cloneRemarks = ''; var cloneService = '';
6291 var isMPL = false;
6292 if (sessionStorage['subplan_info'] != undefined) {
6293 var subplanInfo = JSON.parse(sessionStorage['subplan_info']);
6294 isMPL = subplanInfo['isMPL'];
6295 }
6296 if (isClone == true){ cloneRemarks = $.trim($('#rowremarksclone_' + id).html()); cloneService = $.trim($('#rowserviceclone_' + id).html());}
6297
6298 var newRow = '<tr id="' + newRowID + '" class="newrow"><td colspan="2"><input type="hidden" id="newIsClone_' + newRowID + '" name="newIsClone_' + newRowID + '" value="' + (isClone == true ? id : 0) + '"/><input type="hidden" class="sort_order" name="sortorder_' + newRowID +'" id="sortorder_' + newRowID +'" value=""/><a href="javascript:removeContainerRowIcon(\'' + newRowID + '\')" id="delete_service_link' + newRowID + '" title="Delete Service" ><i class="icon-trash"></i></a></td><td colspan="10"><table><tr><td class="' + (isClone == true ? '' : '') + '"><span id="serviceOption_' + newRowID + '"></span>';
6299 newRow += '</td><td class="' + (isClone == true ? '' : '') + '"><span id="newrowservice_' + newRowID +'_error" class="control-group"><input type="text" style="' + ($(document).width() < 1500 ? 'width:50px;' : 'width:90px;') + '" class="required" value="' + cloneService + '" name="newrowservice_' + newRowID +'" id="newrowservice_' + newRowID +'"/></span>';
6300 newRow += '</td><td class="' + (isClone == true ? '' : '') + '"><span id="newremarks_' + newRowID +'_error" class="control-group"><input type="text" rows="1" style="' + ($(document).width() < 1500 ? 'width:290px;' : 'width:350px;') + '" class="" value="' + cloneRemarks + '" name="newremarks_' + newRowID +'" id="newremarks_' + newRowID +'"/></span>';
6301 newRow += '</td><td class="' + (parseFloat($('#profile_associate').val()) != 1 ? '' : '') + '"><span id="newGlCode_' + newRowID + '">dfsdfsdfsd</span>';
6302 newRow += '</td><td><span id="newPackingType_' + newRowID +'_error" class="control-group"><span id="newPackingType_' + newRowID + '"></span></td>';
6303 if (parseFloat($('#profile_associate').val()) == 1) newRow += '<td><span id="newAircraftType_' + newRowID + '"></span></td>';
6304 if (parseFloat($('#profile_associate').val()) == 2) newRow += '<td><span id="newSpecialMealType_' + newRowID + '"></span></td>';
6305 if (isMPL) {
6306 newRow += '<td class="tdRouteRegion" style="padding: 0 0 0 1px;">';
6307 newRow += MPLSubplanComponent.renderRouteRegionsDropdownForRow(-1, 'newServiceRouteRegion_' + newRowID, 'newServiceRouteRegion_' + newRowID, 'newServiceRouteRegion input-medium');
6308 newRow += '</td>';
6309 }
6310 newRow += '<td class="' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '"><select class="input-small" style="width: 60px;" name="newmealtype_' + newRowID + '" id="newmealtype_' + newRowID + '">';
6311 newRow += '<option value="M">M</option>';
6312 newRow += '<option value="P">P</option>';
6313 newRow += '<option value="T">T</option>';
6314 newRow += '</select></td>';
6315 newRow += '<td class="' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '"><span id="newProvType_' + newRowID + '"></span></td>';
6316 newRow += '<td class="' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '"><input type="hidden" name="scaletable_' + newRowID +'" id="scaletable_' + newRowID +'" value="' + prevScaleTableID +'"/>';
6317 newRow += '<span id="scaleContainer_' + newRowID +'" class="input-prepend input-append ' + (prevProvType == 't' ? '' : 'hide') + '" ><span class="add-on">';
6318 newRow += '<a title="Show Fixed Scales" class="fixedScaleLinks" id="fixedScaleLink_' + newRowID +'" href="javascript:fixedScale.get(\'' + newRowID +'\');"><i class="icon-th-large"></i></a>';
6319 newRow += '</span>';
6320 newRow += '<span class="add-on" id="scaletablename_' + newRowID +'">' + prevScaleName +'</span></span>';
6321 newRow += '<span id="provContainer_' + newRowID +'" class="input-prepend ' + (prevProvType == 't' ? 'hide' : '') + '"><span class="add-on">Prov Rate</span><input type="' + (prevProvType == 't' ? 'hidden' : 'text') + '" class="input-mini" name="newprovrate_' + newRowID + '" placeholder="Prov Rate" value="' + prevProvRate + '"/></span>';
6322 newRow += '</td><td class="' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '"><span class="input-prepend"><span class="add-on">Min</span><input type="text" class="input-mini" name="newmin_' + newRowID + '" placeholder="Min" value="' + prevMin + '"/></span>';
6323 newRow += '</td><td class="' + (parseFloat($('#profile_associate').val()) == 2 ? 'hide' : '') + '"><span class="input-prepend"><span class="add-on">Max</span><input type="text" class="input-mini" name="newmax_' + newRowID + '" placeholder="Max" value="' + prevMax + '"/></span>';
6324 newRow += '</td><td><span class="input-prepend"><span class="add-on">' + (parseFloat($('#profile_associate').val()) == 2 ? '' : 'Set') + ' Qty</span><input type="text" class="input-mini" name="newsetqty_' + newRowID + '" placeholder="Set Qty" value="' + preSetQty + '"/></span></td>';
6325 newRow += '</td></tr></table></tr>';
6326
6327 var dropdown = $('.serviceOptionDiv').clone()[0];
6328
6329 var packingType = $('.packingTypeDiv').clone()[0];
6330 var newPackingType = '<select class="input-medium" style="width: 80px;" name="newpackingtype_' + newRowID + '" id="newpackingtype_' + newRowID + '">';
6331 $.each(packingType , function(p, item) {
6332 newPackingType += '<option value="' + item.value + '">' + item.text + '</option>';
6333 })
6334 newPackingType += '</select>';
6335
6336 var newDropdown = '<select onchange="updateNewGlCode(\'New_' + newRowID + '\');" class="input-medium required " style="' + ($(document).width() < 1500 ? 'width:70px;' : 'width:90px;') + '" name="newserviceoption_' + newRowID + '" id="newserviceoption_' + newRowID + '">';
6337 $.each(dropdown , function(i, item) {
6338 var item_value = item.value;
6339 var item_value_arr = item_value.split(',');
6340 if (parseFloat(service_type_id) == parseFloat(item_value_arr[0]))
6341 newDropdown += '<option data-glCode="' + item_value_arr[2] + '" value="' + item_value_arr[1] + '">' + item.text + '</option>';
6342 })
6343 newDropdown += '</select>';
6344
6345 ////// START : NEW GL CODES /////
6346 var glCodeDropdown = $('.glCodeDiv').clone()[0];
6347
6348 var newGlCodeDropdown = '<select class="newMultipleGlCode" name="newglcode_' + newRowID + '" id="newglcode_' + newRowID + '">';
6349 $.each(glCodeDropdown , function(i, item) {
6350 var item_value = item.value;
6351 var item_value_arr = item_value.split(',');
6352 var glStr = item.text; var glArr = glStr.split('|||');
6353 newGlCodeDropdown += '<option data-label="' + (glArr[1] != undefined ? glArr[0] + ' - ' + glArr[1] : '') + '" value="' + item.value + '">' + glArr[0] + '</option>';
6354 })
6355 newGlCodeDropdown += '</select>';
6356 ///// END : NEW GL CODES /////
6357
6358 var row_prov_type = '<select style="width: 60px;" name="newprovtype_' + newRowID +'" id="newprovtype_' + newRowID +'" class="input-mini" onchange="newRowProvType(this.value,\'' + newRowID +'\');">';
6359 row_prov_type += '<option value="P">%</option>';
6360 row_prov_type += '<option value="V">V</option>';
6361 row_prov_type += '<option value="A">A</option>';
6362 //row_prov_type += '<option value="s">S</option>';
6363 row_prov_type += '<option value="T">T</option>';
6364 row_prov_type += '</select>';
6365
6366 $("#pricing_row_" + id).after(newRow);
6367
6368 if (parseFloat($('#profile_associate').val()) == 1) { var aircraftType = $('.profileaircraftTypeDiv').clone()[0]; var newAircraftType = '<select style="' + ($(document).width() < 1500 ? 'width:70px;' : 'width:90px;') + '" name="newaircrafttype_' + newRowID + '" id="newaircrafttype_' + newRowID + '">'; $.each(aircraftType , function(i, item) { if (rowAircraftType == item.value) newAircraftType += '<option value="' + item.value + '" selected>' + item.text + '</option>'; else newAircraftType += '<option value="' + item.value + '">' + item.text + '</option>'; }); newAircraftType += '</select>'; $("#newAircraftType_" + newRowID).html(newAircraftType); }
6369 if (parseFloat($('#profile_associate').val()) == 2 && isClone == true) {
6370 var specialMealType = $('.specialMealTypeDiv').clone()[0];
6371 var newSpecialMealType = '<select multiple="multiple" class="input-medium" name="newspecialmealtype_' + newRowID + '" id="newspecialmealtype_' + newRowID + '">';
6372 $.each(specialMealType , function(i, item) { newSpecialMealType += '<option value="' + item.value + '">' + item.text + '</option>'; }); newSpecialMealType += '</select>';
6373 $("#newSpecialMealType_" + newRowID).html(newSpecialMealType);
6374 if (rowSpecialMealType != undefined) { $.each(rowSpecialMealType, function(si,sv){ $("#newspecialmealtype_" + newRowID + " > option").each(function() { if (this.value == sv) { $(this).attr('selected','selected'); return false; } }); }); }
6375 $('#newspecialmealtype_' + newRowID).multiselect({ inheritClass: true, includeSelectAllOption: true, selectAllNumber: false, selectAllText: 'ALL', buttonText: function(options, select) { if (options.length === 0) { return 'None selected.'; } else if (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length) { return 'ALL'; } else if (options.length > 1) { return 'Multiple'; } else { var labels = []; options.each(function() { if ($(this).attr('label') !== undefined) { labels.push($(this).attr('label')); } else { labels.push($(this).html()); } }); return labels.join(', ') + ''; } } });
6376 $('.dropdown-toggle').dropdown();
6377 }
6378
6379 $('#newServiceRouteRegion_' + newRowID)
6380 .multiselect({
6381 inheritClass: true,
6382 buttonWidth: '90px',
6383 includeSelectAllOption: true,
6384 selectAllNumber: false,
6385 selectAllText: 'ALL',
6386 buttonText: function(options, select) {
6387 if (options.length === 0) {
6388 return 'ALL';
6389 } else if (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length) {
6390 return 'ALL';
6391 } else if (options.length > 1) {
6392 return 'MULTI';
6393 } else {
6394 var labels = [];
6395 options.each(function() {
6396 if ($(this).attr('label') !== undefined) {
6397 labels.push($(this).attr('label'));
6398 } else {
6399 labels.push($(this).html());
6400 }
6401 });
6402 return labels.join(', ') + '';
6403 }
6404 },
6405 buttonTitle: function(options, select) {
6406 if ((options.length == 0) || (options.prevObject != undefined && options.prevObject.length != undefined && options.prevObject.length == options.length)) {
6407 return 'ALL';
6408 }
6409 var labels = [];
6410 options.each(function () {
6411 labels.push($(this).text());
6412 });
6413 return labels.join(', ');
6414 },
6415 onChange: function(option, checked, select) {
6416 //isModified();
6417 }
6418 });
6419
6420 $("#serviceOption_" + newRowID).html(newDropdown);
6421 $("#newserviceoption_" + newRowID + " option[value=" + service_option_id + "]").attr("selected", "selected");
6422
6423 $("#newGlCode_" + newRowID).html(newGlCodeDropdown);
6424 $("#newGlCode_" + newRowID + " option[value=" + rowGlCode + "]").attr("selected", "selected");
6425
6426 $("#newPackingType_" + newRowID).html(newPackingType);
6427 $("#newpackingtype_" + newRowID + " option[value=" + prevPackingType + "]").attr("selected", "selected");
6428 $("#newmealtype_" + newRowID + " option[value=" + prevMealType + "]").attr("selected", "selected");
6429
6430 $("#newProvType_" + newRowID).html(row_prov_type);
6431 $("#newprovtype_" + newRowID + " option[value=" + prevProvType + "]").attr("selected", "selected");
6432
6433 $.each($('.sort_order'), function(i,v){
6434 if (isNaN(parseFloat($(this).val())))
6435 $('#' + $(this).attr('id')).val(prev_sort+1);
6436 else if (parseFloat($(this).val()) > parseFloat(prev_sort))
6437 $('#' + $(this).attr('id')).val(parseFloat($(this).val())+1);
6438 });
6439 /////GL CODES/////
6440 var glCodeSelected = $("#newglcode_" + newRowID + " option:selected");
6441 if (glCodeSelected[0]['value'] == '') updateNewGlCode('New_' + newRowID);
6442 $('.newMultipleGlCode').multiselect({ optionLabel: function(element) { if ($.trim($(element).attr('data-label')) != '' || $(element).attr('data-label') != undefined) return $(element).attr('data-label'); } });
6443 $('.dropdown-toggle').dropdown();
6444
6445 isModified();
6446 }
6447
6448 function removeContainerRowIcon(id)
6449 {
6450 $('#' + id).remove();
6451 }
6452
6453 function markForDelete(id)
6454 {
6455 if ($('#delete_' + id).attr('checked')== 'checked')
6456 {
6457 $('#pricing_row_' + id).addClass('error');
6458 var status = true;
6459 }
6460 else
6461 {
6462 $('#pricing_row_' + id).removeClass('error');
6463 var status = false;
6464 }
6465
6466
6467 $.each($('.pricing_' + id), function (i,v){
6468 $(this).attr('disabled',status);
6469 });
6470 $('#servicedescription_' + id).attr('disabled',status);
6471 $('#servicecode_' + id).attr('disabled',status);
6472 $('#packingtype_' + id).attr('disabled',status);
6473 $('#provtype_' + id).attr('disabled',status);
6474 $('#mealtype_' + id).attr('disabled',status);
6475 $('#approved_' + id).attr('disabled',status);
6476
6477 isModified();
6478 }
6479
6480 function checkIfAllApproved()
6481 {
6482 var allChecked = true;
6483 $.each($('#ServiceRouteForm input:checkbox'), function (i,v){
6484 if($(this).attr('checked') != 'checked')
6485 {
6486 allChecked = false;
6487 return;
6488 }
6489 });
6490 }
6491
6492 function checkIfPricingAllFieldsFilledIn()
6493 {
6494 var allCompleted = true;
6495 $.each($('#ServiceRouteForm input:text'), function (i,v){
6496 if($(this).val() == '')
6497 {
6498 allCompleted = false;
6499 return;
6500 }
6501 });
6502 }
6503
6504 function pricingRowStatus(id)
6505 {
6506 $('#pricing_row_' + id).removeClass('success');
6507 //$('#servicecode_' + id).attr('disabled',false);
6508 $('#servicedescription_' + id).attr('disabled',false);
6509
6510 $.each($('.pricing_' + id), function (i,v){
6511 $(this).attr('disabled',false);
6512 });
6513
6514 if ($('#approved_' + id).attr('checked')== 'checked')
6515 {
6516 $('#pricing_row_' + id).addClass('success');
6517 //$('#servicecode_' + id).attr('disabled',true);
6518 $('#servicedescription_' + id).attr('disabled',true);
6519
6520 $.each($('.pricing_' + id), function (i,v){
6521 $(this).attr('disabled',true);
6522 });
6523 }
6524
6525 isModified();
6526 checkIfPricingAllFieldsFilledIn();
6527 }
6528 var setIntervalRun;
6529
6530 var show_missing_pricing_screen;
6531
6532 function createCourseTable(id, show_missing)
6533 {
6534 show_missing_pricing_screen = 0;
6535 if (show_missing != undefined) show_missing_pricing_screen = 1;
6536 $('#lastUpdateHeader').html('');
6537 $('#trackerHeaderID').html('0');
6538 $('#proceedTo').html('');
6539
6540 $.when( planHeaders(id))
6541 .then(function(){
6542 //console.log( 'I fire once BOTH ajax requests have completed!' );
6543 })
6544 .fail(function(){
6545 //console.log( 'I fire if one or more requests failed.' );
6546 });
6547
6548 $('#planServices').show();
6549
6550 $('#menuTree').hide();
6551 $('#results').hide().html('');
6552 $('.existingTabContainer > li').each(function(i,v){
6553 $(this).removeClass('active');
6554 });
6555 $('#planTable').hide();
6556 $('#updateEntirePlan').hide().addClass('hide');
6557 $('#profileTable').hide();
6558 $('#planDetailsLink').removeClass('hide').addClass('active');
6559 //var func = SSEV.lastUpdate(id);
6560 setTimeout(function() {
6561 SSEV.lastUpdate(id);
6562 },2000);
6563 setIntervalRun = setInterval("SSEV.lastUpdate(" + id + ")",10000);
6564 }
6565
6566 function cancelCreateProcess()
6567 {
6568 $('#results').html('').slideUp('slow', function() {});
6569 $('#menuTree input:checkbox').each(function(i,v){
6570 $(this).attr('checked',false);
6571 });
6572 }
6573
6574 function createProcess(action)
6575 {
6576 if (action == 'Proceed')
6577 $('#proceedButton').attr('disabled', true).removeClass('btn-primary').addClass('btn-warning');//.html('Processing..');
6578 else
6579 $('#results').slideUp('slow', function() {});
6580
6581 $('#submitError').remove();
6582 $('#start_date_error').addClass('hide')
6583 $('#end_date_error').addClass('hide')
6584 $('#profile_code_error').addClass('hide')
6585
6586 var checked_error = true;
6587 var error = false;
6588 var obj = [];
6589 $('#menuTree input:checkbox').each(function(i,v){
6590 if ($(v).attr('checked') == 'checked')
6591 {
6592 obj[i] = $(v).attr('id');
6593 checked_error = false;
6594 }
6595 });
6596
6597 var profile_start_date = new Date($('#profile_start_date').val());
6598 var profile_end_date = new Date($('#profile_end_date').val());
6599 var hidden_profile_start_date = new Date($('#hidden_profile_start_date').val());
6600 var hidden_profile_end_date = new Date($('#hidden_profile_end_date').val());
6601
6602 if ($('#profile_code').val() == '')
6603 {
6604 $('#profile_code_error').removeClass('hide').html('Value Required');
6605 error = true;
6606 }
6607 if (profile_end_date > hidden_profile_end_date)
6608 {
6609 $('#start_date_error').removeClass('hide').html('Can\' be greater than Profile End Date');
6610 error = true;
6611 }
6612 if (profile_start_date < hidden_profile_start_date)
6613 {
6614 $('#start_date_error').removeClass('hide').html('Has to be greater than Today');
6615 error = true;
6616 }
6617 if (checked_error == true)
6618 {
6619 $('#profile_code_error').after('<div class="row-fluid" id="submitError"><div class="alert alert-error">Please select at least one checkbox</div></div>');
6620 error = true;
6621 }
6622
6623 if (error == true)
6624 return false;
6625
6626 $('#results').slideDown('slow', function() {
6627 $(this).html('<div style="padding:0 25px; text-align:center;"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
6628 });
6629
6630 var userDetails = JSON.parse(sessionStorage['userDetails']);
6631
6632 var passData = JSON.stringify({"selected": obj, "user_id": userDetails['userID'], "plan_type": $('#createPlanTypeSelect').val(), "profile_class": $('#hidden_profile_class').val(), "profile_id": $('#hidden_profile_id').val(), "profile_start_date": $('#profile_start_date').val(), "profile_end_date": $('#profile_end_date').val(),"profile_code": $('#profile_code').val(),"action":action});
6633 setTimeout(function() {
6634 $.ajax({
6635 type: 'POST',
6636 contentType: 'application/json',
6637 url: base_url + 'index.php/api/mpd/pp_create/' + api_key + 'format/json',
6638 dataType: "json",
6639 data: passData,
6640 success: function(data, textStatus, jqXHR){
6641 if (action != 'Proceed')
6642 {
6643 var returnHTML = ''; var allMealService = true;
6644 var x = 0;
6645 $.each(data, function(a,b){
6646 $.each(data[a], function(c,d){
6647 var alertDiv = (x%2 == 0 ? 'alert' : 'alert');
6648 returnHTML += '<div class="' + alertDiv + '"><div class="row-fluid"><h5>' + data[a][c]['Supplier'] + '</h5></div><div class="row-fluid"><div class="span6"><h5>Departure</h5></div><div class="span6"><h5>Arrival</h5></div></div>';
6649 $.each(data[a][c]['Details'], function(e,f){
6650 if ($.trim(data[a][c]['Details'][e]['meal_service_type']) == '') allMealService = false;
6651 returnHTML += '<div class="row-fluid"><div class="span6"><small>' + data[a][c]['Details'][e]['airport_code'] + ', ' + data[a][c]['Details'][e]['airport_name'] + ', ' + data[a][c]['Details'][e]['city_name'] + ', ' + data[a][c]['Details'][e]['country_name'] + '</small></div>';
6652 returnHTML += '<div class="span6"><small>' + ($.trim(data[a][c]['Details'][e]['meal_service_type']) == '' ? '<span class="label label-important">No Meal Service</span> ' : '<span class="label label-success">' + $.trim(data[a][c]['Details'][e]['meal_service_type']) + '</span> ') + data[a][c]['Details'][e]['flight_name'] + ', ' + data[a][c]['Details'][e]['arrival_code'] + ', ' + data[a][c]['Details'][e]['arrival_name'] + ', ' + data[a][c]['Details'][e]['arrival_city'] + ', ' + data[a][c]['Details'][e]['arrival_country'] + '</small></div></div>';
6653 //returnHTML += '<div class="row-fluid"><div>' + data[a][c]['Details'][e]['airport_name'] + ', ' + data[a][c]['Details'][e]['city_name'] + ', ' + data[a][c]['Details'][e]['country_name'] + ' <strong>TO</strong> ' + data[a][c]['Details'][e]['arrival_name'] + ', ' + data[a][c]['Details'][e]['arrival_city'] + ', ' + data[a][c]['Details'][e]['arrival_country'] + '</div></div>';
6654 });
6655 returnHTML += '</div>';
6656 x++;
6657 });
6658 });
6659 if (x==0) { returnHTML = '<div class="row-fluid" id="noRecordsError">No Records</div>';$('#results').html(returnHTML); var el = document.getElementById('noRecordsError');el.scrollIntoView(true); return false; }
6660 if (allMealService == true) returnHTML += '<div class="row-fluid"><input type="button" class="btn btn-primary btn-small" id="proceedButton" value="Confirm" onclick="createProcess(\'Proceed\')"/> <input type="button" class="btn btn-danger btn-small" id="cancelProceedButton" value="Cancel" onclick="cancelCreateProcess();"/></div>';
6661 else returnHTML += '<div class="row-fluid"><span id="proceedButton" class="label label-important">This plan cannot be created as not all selected routes have a Meal Service Type assigned.</span></div>';
6662 $('#results').html(returnHTML); var el = document.getElementById('proceedButton'); el.scrollIntoView(true);
6663 }
6664 else
6665 {
6666 createCourseTable(data['plan_id']);
6667 $('#profile_start_date').val('');
6668 $('#profile_end_date').val('');
6669 $('#hidden_profile_start_date').val('');
6670 $('#hidden_profile_end_date').val('');
6671 $('#profile_code').val('');
6672 $('#menuTree input:checkbox').each(function(i,v){
6673 $(this).attr('checked',false);
6674 });
6675 }
6676 },
6677 error: function(jqXHR, textStatus, errorThrown){
6678 alert('error: ' + textStatus);
6679 }
6680 });
6681 },2000);
6682 }
6683
6684 function getServiceProfiles()
6685 {
6686 $('.existingTabContainer > li').each(function(i,v){
6687 $(this).removeClass('active');
6688 });
6689
6690 $.getJSON(base_url + "index.php/api/mpd/plan_types/" + api_key + "format/json", function(data) {
6691 $('#createPlanTypeSelectContainer').html('');
6692 var _HTML = '<select id="createPlanTypeSelect" name="createPlanTypeSelect" class="input-large">';
6693 $.each(data, function(i,v){ _HTML += '<option value="' + data[i]['plan_type_id'] + '">' + data[i]['plan_type'] + '</option>'; });
6694 _HTML += '</select>';
6695 $('#createPlanTypeSelectContainer').html(_HTML);
6696 });
6697
6698 $('#newPlansLink').addClass('active');
6699 $('#planTable').hide();
6700 $('#updateEntirePlan').hide().addClass('hide');
6701 $('#profileTable').show();
6702 $('#planServices').hide();
6703 $('#planDetailsLink').addClass('hide').removeClass('active');
6704 $('#menuTree').hide();
6705 $('#results').hide().html('');
6706
6707 $("#myTable > tbody").append('<tr><td colspan=\"10\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></td></tr>');
6708
6709 setTimeout(function() {
6710 $("#myTable > tbody > tr").remove();
6711 $('#myTable').dataTable().fnDestroy();
6712
6713 var oTable = $('#myTable').dataTable( {
6714 "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
6715 "sPaginationType": "bootstrap",
6716 "sScrollX": "99%",
6717 "oLanguage": {
6718 "sLengthMenu": "_MENU_ records per page"
6719 },
6720 "bProcessing": true,
6721 "sAjaxSource": base_url + "index.php/api/serviceprofile/search_service_profile/" + api_key + "format/json",
6722 "aaSorting": [[ 4, "asc" ]],
6723 "aoColumns": [
6724 {
6725 "mData": null,
6726 "fnRender": function (oObj) {
6727 return '<input onclick="toggleMenuTree(this.value,' + $.trim(oObj.aData.profile_class) + ')" type="radio" name="profile_opions" value="' + $.trim(oObj.aData.profile_id) + '">';//(parseFloat(oObj.aData.profile_development) == 0 ? '<a href="javascript:editButton(' + oObj.aData.profile_id + ',\'Clone\');" id="editButton_' + oObj.aData.profile_id + '" title="Clone"><i class="icon-repeat"></i></a>' : '<a href="javascript:editButton(' + oObj.aData.profile_id + ',\'Edit\');" id="editButton_' + oObj.aData.profile_id + '" title="Edit"><i class="icon-edit"></i></a>');
6728 }
6729 },
6730 { "mData": "profile_code" },
6731 { "mData": "profile_associate_type"},
6732 { "mData": "profile_description" },
6733 { "mData": "class_code", "fnRender": function(oObj){ return oObj.aData.class_code + ' - ' + oObj.aData.class_description} },
6734 { "mData": "profile_start_date" },
6735 { "mData": "profile_end_date" },
6736 { "mData": "first_name", "fnRender": function(oObj){ return oObj.aData.first_name.substring(0,1) + '. ' + oObj.aData.last_name} }
6737 ]
6738 } );
6739
6740 oTable.fnAdjustColumnSizing();
6741 $("#myTable").css("width","100%");
6742
6743 }, 1000);
6744 }
6745
6746 function showExistingPlans(plan_id,status,from_plan_id)
6747 {
6748 if (from_plan_id != undefined) $('#editPlanFromPricing').html('<img style="height:20px" src="' + base_url + 'assets/css/img/spinner.gif"/>');
6749 clearTables();
6750 cancelProduction();
6751 getAllPlans();
6752 var groupFacilities = JSON.parse(sessionStorage['loggedInGroupFacilities']);
6753
6754 var facilities = '/facility/0-';
6755 //$.each(groupFacilities['aaData'], function(i,v){
6756 /// facilities += groupFacilities['aaData'][i]['facility_id'] + '-';
6757 //});
6758
6759 var userDetails = JSON.parse(sessionStorage['userDetails']);
6760 var user_id = parseFloat(userDetails['userID']);
6761 var groupDetails = JSON.parse(sessionStorage['groupid']);
6762 var group_id = parseFloat(groupDetails);
6763
6764 if(arguments.length == 0){
6765 plan_id = 0;
6766 status = 1;
6767 }
6768
6769 $('#menuTree').hide();
6770 $('#results').hide().html('');
6771
6772 $('.existingTabContainer > li').each(function(i,v){
6773 $(this).removeClass('active');
6774 });
6775
6776 switch(status)
6777 {
6778 case 1:
6779 case 0:
6780 $('#existingDevelopment').addClass('active');
6781 break;
6782 case 2:
6783 $('#existingProduction').addClass('active');
6784 break;
6785 case 3:
6786 $('#existingArchive').addClass('active');
6787 break;
6788 }
6789
6790 $('#existingPlansLink').addClass('active');
6791 $('#planTable').show();
6792
6793 $('#updateEntirePlan').hide().addClass('hide');
6794 $('#profileTable').hide();
6795 $('#planServices').hide();
6796 $('#planDetailsLink').addClass('hide').removeClass('active');
6797 $('.pricing_header').remove(); var initialSearch = '';
6798 if (sessionStorage['plan_search']){ var plan_search = JSON.parse(sessionStorage['plan_search']); initialSearch = plan_search['searchTerm']; }
6799
6800 $("#myTable2 > tbody").append('<tr><td colspan=\"16\"><div class=\"progress progress-striped active\"><div class=\"bar\" style=\"width: 100%;\">Loading ...</div></div></td></tr>');
6801 var editPlanLink = $('#newPlansLink').hasClass('hide');
6802 setTimeout(function() {
6803 $("#myTable2 > tbody > tr").remove();
6804 $('#myTable2').dataTable().fnDestroy();
6805
6806
6807 var oTable = $('#myTable2').dataTable( {
6808 "sDom": "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
6809 "sPaginationType": "bootstrap",
6810 "sScrollX": "99%",
6811 "sScrollY": "400px",
6812 "oSearch": {"sSearch": initialSearch},
6813 "fnInitComplete": function () {
6814 if ( typeof oTable != undefined ) {
6815 $('#myTable2_filter input').keyup(function() { var filterDetails = {}; filterDetails['searchTerm'] = $(this).val();
6816
6817 filterDetails['page'] = status;
6818 sessionStorage['plan_search'] = JSON.stringify(filterDetails);
6819 });
6820 if (from_plan_id != undefined)
6821 {
6822 oTable.fnFilter(from_plan_id, 0 );
6823 editPlan($('#editButton_' + from_plan_id).attr('data-plan_id'),new String($('#editButton_' + from_plan_id).attr('data-plan_code')),new String($('#editButton_' + from_plan_id).attr('data-profile_start_date')),new String($('#editButton_' + from_plan_id).attr('data-profile_end_date')),$('#editButton_' + from_plan_id).attr('data-version_number'),$('#editButton_' + from_plan_id).attr('data-can_clone'),$('#editButton_' + from_plan_id).attr('data-can_rename'),$('#editButton_' + from_plan_id).attr('data-is_development'),$('#editButton_' + from_plan_id).attr('data-has_dev'),$('#editButton_' + from_plan_id).attr('data-can_production'),$('#editButton_' + from_plan_id).attr('data-profile_associate_id'));
6824 }
6825 }
6826 },
6827 "oLanguage": {
6828 "sLengthMenu": "_MENU_ records per page"
6829 },
6830 "bProcessing": true,
6831 "sAjaxSource": base_url + "index.php/api/mpd/get_pp/status/" + status + "/from_plan_id/" + (from_plan_id != undefined ? from_plan_id : 0) + "/plan_id/" + plan_id + facilities + "/user_id/" + user_id +"/group_id/" + group_id +"/" + api_key + "format/json",
6832 "aaSorting": [[ (status == 1 ? 13 : 10), "desc" ],[ (status == 1 ? 10 : 13), "desc" ]],
6833 "aoColumns": [
6834 { "mData": "plan_id", "bVisible": false},
6835 { "mData": null, "bVisible": (editPlanLink ? false : true), "bSortable": false, "fnRender": function(oObj) { return '<a href="javascript:editPlan(' + oObj.aData.plan_id + ',\'' + oObj.aData.plan_code.replace(/\'/,'') + '\',\'' + oObj.aData.profile_start_date + '\',\'' + oObj.aData.profile_end_date + '\',' + oObj.aData.version_number + ',' + parseFloat(oObj.aData.can_clone) + ',' + parseFloat(oObj.aData.can_rename) + ',' + parseFloat(oObj.aData.is_development) + ',' + parseFloat(oObj.aData.has_dev) + ',' + parseFloat(oObj.aData.can_production) + ',' + parseFloat(oObj.aData.profile_associate_id) + ');" data-plan_id="' + oObj.aData.plan_id + '" data-plan_code="' + oObj.aData.plan_code.replace(/\'/,'') + '" data-profile_start_date="' + oObj.aData.profile_start_date + '" data-profile_end_date="' + oObj.aData.profile_end_date + '" data-version_number="' + oObj.aData.version_number + '" data-can_clone="' + parseFloat(oObj.aData.can_clone) + '" data-can_rename="' + parseFloat(oObj.aData.can_rename) + '" data-plan_type="' + parseFloat(oObj.aData.plan_type) + '" data-is_development="' + parseFloat(oObj.aData.is_development) + '" data-has_dev="' + parseFloat(oObj.aData.has_dev) + '" data-can_production="' + parseFloat(oObj.aData.can_production) + '" data-profile_associate_id="' + parseFloat(oObj.aData.profile_associate_id) + '" id="editButton_' + oObj.aData.plan_id + '" title="Edit"><i class="icon-edit"></i></a>';}},
6836 { "mData": null, "bVisible": (plan_id == 0 && status == 2 ? true : (editPlanLink == false ? (plan_id != 0 ? false : true) : false)), "bSortable": false, "fnRender": function(oObj) { return (status == 1 ? (parseFloat(oObj.aData.was_in_production) == 0 ? '<a title="Delete Plan" href="javascript:deletePlanModal(' + oObj.aData.plan_id + ')"><i class="icon-trash"></i></a>' : '') : '<a href="javascript:showExistingPlans(' + oObj.aData.plan_id + ',' + status + ');" title="Show List"><i class="icon-list"></i></a>');}},
6837 { "mData": null, "iDataSort": 4, "fnRender": function(oObj) { return '<a href="javascript:createCourseTable(' + oObj.aData.plan_id + ');">' + oObj.aData.plan_code + '</a>'}},
6838 { "mData": "plan_code", "bVisible": false},
6839 { "mData": "profile_associate_type"},
6840 { "mData": "tracker_comment"},
6841 { "mData": null, "bSortable": false, "fnRender": function(oObj){return (parseFloat(oObj.aData.is_development) == 3 ? '<strong>A</strong>' : (parseFloat(oObj.aData.is_development) == 2 ? '<a title="Clone Plan" id="clone_' + oObj.aData.plan_id + '"><i class="icon-lock"></i></a>' : '<a title="In Development" id="clone_' + oObj.aData.plan_id + '"><i class="icon-ok-circle"></i></a>'));}},
6842 { "mData": "version_number" },
6843 { "mData": "class_code", "fnRender": function(oObj){ return oObj.aData.class_code + ' - ' + oObj.aData.class_description} },
6844 { "mData": "profile_start_date" },
6845 { "mData": "profile_end_date" },
6846 { "mData": "created_date_gmt_fm" },
6847 { "mData": "created_date_gmt", "bVisible": false },
6848 { "mData": "last_modified_by"},
6849 { "mData": "service_type", "bVisible": false }
6850 ]
6851 } );
6852
6853 oTable.fnAdjustColumnSizing();
6854 $("#myTable2").css("width","100%");
6855
6856
6857 }, 1000);
6858 }
6859
6860 function show_associate_modal(type, plan_id, supplier_id){
6861 $('#associate_error_span').remove(); $('#associate_modal').modal('show'); $('#associate_modal_type').html(type); $('#associate_modal_profile_id').html(plan_id); $('#associate_modal_supplier_id').html(supplier_id);
6862 $.getJSON(base_url + 'index.php/api/mpd/associate_profile/plan_id/' + parseFloat(plan_id) + '/type/' + type + '/' + api_key + 'format/json', function(data) {
6863 var cnt = 0; var isCheckedCnt = 0;
6864 if (type == 1)
6865 {
6866 $('#associate_modal_header').html('Aircraft');
6867 var aircraftType = $('.aircraftTypeDiv').clone()[0];
6868 var newAircraftType = '<label class="checkbox"><input type="checkbox" id="allAssociateCheckbox" onclick="toggleAllAssociate(\'aircraft\');">ALL</label>';
6869 $.each(aircraftType , function(i, item) {
6870 if (item.value != 0) {
6871 var checked = ''; var disabled = '';
6872 $.each(data, function(di, dv){
6873 if (data[di]['aircraft_id'] == item.value) { checked = 'checked'; if(parseFloat(data[di]['existsinprofile']) > 0) disabled = 'disabled'; return false;}
6874 });
6875 newAircraftType += '<label class="checkbox"><input onclick="uncheckAllAssociate(\'aircraft\')" type="checkbox" class="aircraft_checkbox" value="' + item.value + '" ' + disabled + ' ' + checked + '>' + item.text + '</label>';
6876 }
6877 });
6878 $('#associate_modal_body').html(newAircraftType);
6879 $('.aircraft_checkbox').each(function(){ cnt++; if ($(this).attr('checked') != undefined) isCheckedCnt++;});
6880 if(cnt == isCheckedCnt) $('#allAssociateCheckbox').attr('checked', true);
6881 }
6882 });
6883 }
6884
6885 function toggleAllAssociate(type)
6886 {
6887 var status = $('#allAssociateCheckbox').attr('checked') == undefined ? false : true;
6888 $('.' + type + '_checkbox').each(function(){ if ($(this).attr('disabled') == undefined) $(this).attr('checked', status); });
6889 }
6890
6891 function uncheckAllAssociate(type) {
6892 $('#allAssociateCheckbox').attr('checked', false);
6893 var cnt = 0; var isCheckedCnt = 0;
6894 $('.' + type + '_checkbox').each(function(){ cnt++; if ($(this).attr('checked') != undefined) isCheckedCnt++;});
6895 if(cnt == isCheckedCnt) $('#allAssociateCheckbox').attr('checked', true);
6896 }
6897
6898 function save_profile_associate()
6899 {
6900 $('#associate_error_span').remove(); var obj = {}; var supplier_id = parseFloat($('#associate_modal_supplier_id').html()); var plan_id = parseFloat($('#associate_modal_profile_id').html()); var associate_type = parseFloat($('#associate_modal_type').html()); obj['associate_type'] = associate_type; obj['plan_id'] = plan_id;
6901 if (associate_type == 1) { var is_selected = false; $('.aircraft_checkbox').each(function(i,v){ if ($(this).attr('checked') != undefined){ is_selected = true; obj[$(this).val()] = $(this).val();} }); }
6902 else if (associate_type == 2) { $('.spml_checkbox').each(function(i,v){ if ($(this).attr('checked') != undefined) obj[$(this).val()] = $(this).val(); }); }
6903 if (is_selected == false) { $('#cancel_save_profile_associate').before('<span id="associate_error_span" class="label label-important pull-left">Please select at least one option.</span>'); return;}
6904 $.ajax({
6905 type: 'PUT',
6906 contentType: 'application/json',
6907 url: '<?php echo base_url();?>index.php/api/mpd/associate_profile/<?php echo $this->config->item('base_api_key_url');?>format/json',
6908 dataType: "json",
6909 data: JSON.stringify(obj),
6910 success: function(data, textStatus, jqXHR){ $('#associate_modal').modal('hide'); createCourseTable(plan_id);},
6911 error: function(jqXHR, textStatus, errorThrown){ alert('error: ' + textStatus); }
6912 });
6913 }
6914
6915 function getProfileGlCode(plan_id) { $.getJSON('<?php echo base_url();?>index.php/api/mpd/gl_code_profile/plan_id/' + plan_id + '/<?php echo $this->config->item('base_api_key_url');?>format/json', function(data) { glCodesArr = data; });}
6916
6917 function getProfileAircraftType(plan_id)
6918 {
6919 $.getJSON('<?php echo base_url();?>index.php/api/mpd/associate_profile/plan_id/' + plan_id + '/type/1/<?php echo $this->config->item('base_api_key_url');?>format/json', function(data) {
6920 var aircraftType = $('.aircraftTypeDiv').clone()[0]; var sessAircraftDropdown = {};
6921 var dropdown = '<select class="profileaircraftTypeDiv">';dropdown += '<option value="0" selected>ALL</option>';
6922 $.each(data, function(di, dv){
6923 var aircraftArr = {};
6924 aircraftArr['code'] = data[di]['long_description']; aircraftArr['existing'] = true; aircraftArr['aircraft_id'] = data[di]['aircraft_id'];
6925 sessAircraftDropdown[data[di]['long_description']] = aircraftArr;
6926 dropdown += '<option value="' + data[di]['aircraft_id'] + '">' + data[di]['long_description'] + '</option>';
6927 });
6928
6929 dropdown += '</select>';
6930 $('#profile_aircraft_type_div').html(dropdown);
6931 sessionStorage['sessAircraftDropdown'] = JSON.stringify(sessAircraftDropdown);
6932 sessionStorage['sessSPMLDropdown'] = JSON.stringify('');
6933 });
6934 }
6935
6936 function getProfileSPMLType(plan_id) { $.getJSON('<?php echo base_url();?>index.php/api/mpd/associate_profile/plan_id/' + plan_id + '/type/2/<?php echo $this->config->item('base_api_key_url');?>format/json', function(data) { var dropdown = '<select class="profilespmlTypeDiv">'; $.each(data, function(i,v){ dropdown += '<option value="' + data[i]['spml_id'] + '">' + data[i]['special_meal_name'] + '</option>'; }); dropdown += '</select>'; $('#profile_spml_type_div').html(dropdown); }); }
6937
6938 function deletePlanModal(plan_id) { $('#deleteWholePlan').attr('onclick','deleteWholePlan(' + plan_id + ')'); $('#deleteWholeProductionPlan').modal('show'); }
6939
6940 function deleteWholePlan(plan_id)
6941 {
6942 var obj = {};
6943 obj['plan_id'] = plan_id;
6944 $.ajax({
6945 type: 'DELETE',
6946 contentType: 'application/json',
6947 url: base_url + 'index.php/api/mpd/entire_plan/' + api_key + 'format/json',
6948 dataType: "json",
6949 data: obj,
6950 success: function(data, textStatus, jqXHR){
6951 showExistingPlans(0,1);SSEV.remove();
6952 $('#deleteWholeProductionPlan').modal('hide');
6953 getAllPlans();
6954 },
6955 error: function(jqXHR, textStatus, errorThrown){
6956 alert('error: ' + textStatus);
6957 }
6958 });
6959 }
6960
6961 function toggleMenuTree(id,profile_class)
6962 {
6963 //if (parseInt(user_id) == 1){
6964 //console.log(user_id);
6965 servicePlanRouteRegion.initialise(id,profile_class);
6966 return;
6967 //}
6968
6969 if (profile_class == undefined) var profile_class = 0;
6970 $('#profileCreateHeader').remove();
6971 var profileHeader = '';
6972 profileHeader += '<div id="profileCreateHeader" class="row-fluid" style="border-style:none;">';
6973 profileHeader += '<div class="span1"><input type="button" class="btn btn-primary btn-small" id="createButton" value="Create" onclick="createProcess(\'Create\');"/></div>';
6974
6975 var now = new Date(+new Date() + 86400000);
6976 var dd = now.getDate(); if (dd < 10) dd = '0' + dd;
6977 var mm = now.getMonth() + 1; if (mm < 10) mm = '0' + mm;
6978 var yy = now.getFullYear();
6979 var nowStr = yy + '-' + mm + '-' + dd;
6980
6981
6982
6983 $('#' +id + ' > td').each(function(i,v){
6984 if (i != 0 && i != 7)
6985 {
6986
6987 if (i==1)
6988 {
6989 profileHeader += '<div class="navbar span11">';
6990 profileHeader += '<div class="navbar-inner"><ul class="nav"><li><h5><span class="text-info">Service Profile: </span>' + $(v).html() + '</h5></li><li class="divider-vertical"></li>';
6991 }
6992 if (i==3)
6993 {
6994 profileHeader += '<li><h5><span class="text-info">Description: </span>' + $(v).html() + '</h5></li><li class="divider-vertical"></li>';
6995 }
6996 if (i==4)
6997 profileHeader += '<li><h5><span class="text-info">Class: </span>' + $(v).html() + '</h5></li><li class="divider-vertical"></li>';
6998 if (i==5)
6999 {
7000 profileHeader += '<li><h5><span class="text-info">Effective Date: </span><span id="plan_start_date">' + $(v).html() + '</span></h5></li><li class="divider-vertical"></li>';
7001 $('#profile_start_date').val(nowStr);$('#hidden_profile_class').val(profile_class);
7002 $('#hidden_profile_start_date').val(nowStr);
7003 }
7004 if (i==6)
7005 {
7006 profileHeader += '<li><h5><span class="text-info">sadsDiscontinue Date: </span><span id="plan_end_date">' + $(v).html() + '</span></h5></li>';
7007 $('#profile_end_date').val($(v).html());
7008 $('#hidden_profile_end_date').val($(v).html());
7009 }
7010 }
7011 });
7012
7013 profileHeader += '</ul>';
7014 profileHeader += '</div></div></div>';
7015
7016 $('#hidden_profile_id').val(id);
7017
7018 $('#profileTable').slideUp('slow', function() {
7019 $('#menuTree').prepend(profileHeader).slideDown('slow', function() {
7020 $('#createDiv').removeClass('hide');
7021 });
7022 });
7023 }
7024
7025 function showRegionStations(id)
7026 {
7027 $('.region').attr('disabled',true);
7028 if($('#region_' + id).attr('checked') == 'checked')
7029 { $('#region_' + id).attr('disabled',false);
7030 $('#supplier_' + id).slideDown('slow');
7031 if($('#supplier_' + id).html() == '')
7032 {
7033 $('#supplier_' + id).html('<div style="padding:0 25px;"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
7034 $.when( getSuppliers(id))
7035 .done(function(){})
7036 .fail(function(){});
7037 }
7038 }
7039 else
7040 { $('.region').attr('disabled',false);
7041 $('#supplier_' + id).html('').slideUp('slow');
7042 $('#supplier_' + id + ' input:checkbox').removeAttr('checked');
7043 var next_div = ($('#supplier_' + id).next().attr('id'));
7044 $('#' + next_div).html('');
7045 }
7046 }
7047
7048 function showDepartures(id,region_id)
7049 {
7050 $('.regionSuppliers').attr('disabled',true);
7051 if($('#facility_' + region_id + '_' + id).attr('checked') == 'checked') { $('#facility_' + region_id + '_' + id).attr('disabled',false); $('#facilities_' + id).slideDown('slow'); }
7052 else { $('.regionSuppliers').attr('disabled',false); $('#facilities_' + id).slideUp('slow'); $('#facilities_' + id + ' input:checkbox').removeAttr('checked'); }
7053 }
7054
7055 function showFlights(destination_id, checkbox_id)
7056 {
7057 var profile_class = $('#hidden_profile_class').val();
7058 var profile_start_date = $('#profile_start_date').val();
7059 var idArr = checkbox_id.split('_');
7060 /*if ($('#' + checkbox_id).attr('checked') == undefined)
7061 {
7062 $('#flights_' + destination_id).addClass('hide').html('');
7063 return;
7064 }*/
7065 $('#flights_' + destination_id).removeClass('hide').html('<img src="' + base_url + 'assets/css/img/spinner.gif"/>');
7066 var cnt = 0; var hasMealService = 0;
7067 setTimeout(function() {
7068 $.getJSON(base_url + "index.php/api/flights/flight_new_plan/profile_start_date/" + profile_start_date + "/profile_class/" + profile_class + "/destination_id/" + destination_id + "/" + api_key + "format/json", function(data) {
7069 $('#flights_' + destination_id).html('');
7070 $.each(data, function(i,v){
7071 if (parseFloat(data[i]['disabled']) == 0) { if ($.trim(data[i]['meal_service_type']) != '') hasMealService++; $('#flights_' + destination_id).append('<label class="checkbox inline"><input ' + ($.trim(data[i]['meal_service_type']) != '' ? '' : 'disabled') + ' class="checkboxes_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3] + '_' + idArr[4] + '" onclick="disableArrivalCheckbox(\'' + idArr[1] + '_' + idArr[2] + '_' + idArr[3] + '_' + idArr[4] + '\')" type="checkbox" id="flights_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3] + '_' + idArr[4] + '_' + data[i]['flight_id'] + '"/>' + data[i]['flight_name'] + ($.trim(data[i]['meal_service_type']) != '' ? '<span class="label label-success">' + data[i]['meal_service_type'] + '</span>': '<span class="label label-important">No Meal Service</span>') + '</label><br/>'); cnt++; }
7072 });
7073 if (cnt == 0) $('#flights_' + destination_id).html('<span class="label label-important">No flights setup.</span>');
7074 if (hasMealService == 0) $('#arrivals_' + idArr[1] + '_' + idArr[2] + '_' + idArr[3] + '_' + idArr[4]).attr('disabled', true);
7075 });
7076 }, 1000);
7077 }
7078
7079 function disableArrivalCheckbox(id)
7080 {
7081 var atLeastOneSelected = false;
7082 $('.checkboxes_' + id).each(function(){ if ($(this).attr('checked') != undefined) { atLeastOneSelected = true; return false; }});
7083 if (atLeastOneSelected == true) $('#arrivals_' + id).attr('checked',false).attr('disabled',true); else $('#arrivals_' + id).attr('disabled',false);
7084 }
7085
7086 function showDestinations(id,facility_id,region_id,departure_id)
7087 {
7088 if($('#departure_' + region_id + '_' + facility_id + '_' + id).attr('checked') == 'checked')
7089 {
7090 $('#destinations_' + facility_id + '_' + id).slideDown('slow');
7091 if($('#destinations_' + facility_id + '_' + id).html() == '')
7092 {
7093 $('#destinations_' + facility_id + '_' + id).html('<div style="padding:0 25px;"><img src="' + base_url + 'assets/css/img/spinner.gif"/></div>');
7094 $.when( getDestinations(id, facility_id,region_id,departure_id))
7095 .done(function(){})
7096 .fail(function(){});
7097 }
7098 }
7099 else
7100 {
7101 $('#destinations_' + facility_id + '_' + id).slideUp('slow');
7102 $('#destinations_' + facility_id + '_' + id + ' input:checkbox').removeAttr('checked');
7103 }
7104 }
7105
7106 function getDestinations(airport_id,facility_id,region_id,departure_id)
7107 {
7108 var dfd = $.Deferred();
7109
7110 var destinations = $.getJSON(base_url + 'index.php/api/destinations/airport_by_id/airport_id/' + airport_id + '/' + api_key + 'format/json', function(data) {});
7111
7112 destinations.success(function(){
7113 setTimeout(function() {
7114 var data = ($.parseJSON(destinations.responseText));
7115 var returnHTML = '';
7116 if (!data['error'])
7117 {
7118 returnHTML += '<div class="span10" style="border-left:dotted;border-color:#cccccc;border-width:1px;padding-left:5px;"><h5><span class="badge badge-info">To</span></h5>';
7119 $.each(data, function(i,v){
7120 if (i != 'departure' && parseFloat(data[i]['disabled']) == 0)
7121 {
7122 returnHTML += '<label class="checkbox inline"><input class="destinations_' + facility_id + '" type="checkbox" id="arrivals_' + region_id + '_' + facility_id + '_' + departure_id + '_' + data[i]['airport_id'] + '" value="' + data[i]['airport_id'] + '">' + data[i]['arrival_code'] + ' - ' + data[i]['arrival_name'] + ', ' + data[i]['arrival_city'] + ', ' + data[i]['arrival_country'] + '</label><div class="span10 hide" style="padding-left:15px;" id="flights_' + data[i]['destination_id'] + '"></div><br/>';
7123 setTimeout(function() {showFlights(data[i]['destination_id'],'arrivals_' + region_id + '_' + facility_id + '_' + departure_id + '_' + data[i]['airport_id']);}, 500);
7124 }
7125 });
7126 returnHTML += '</div>';
7127 }
7128
7129 $('#destinations_' + facility_id + '_' + airport_id).html(returnHTML);
7130 return dfd.promise();
7131 },1000);
7132 });
7133 }
7134
7135 function getSuppliers(region_id)
7136 {
7137 var dfd = $.Deferred();
7138 var userDetails = JSON.parse(sessionStorage['userDetails']); var user_id = parseFloat(userDetails['userID']);
7139 var groupDetails = JSON.parse(sessionStorage['groupid']); var group_id = parseFloat(groupDetails);
7140 var suppliers = $.getJSON(base_url + 'index.php/api/suppliers/get_supplier_by_region/group_id/' + group_id + '/user_id/' + user_id + '/region_id/' + region_id + '/' + api_key + 'format/json', function(data) {});
7141
7142 suppliers.success(function(){
7143 setTimeout(function() {
7144 var data = ($.parseJSON(suppliers.responseText));
7145 var supplierHTML = '';
7146 var returnHTML = '';
7147 var x = 0;
7148 if (!data['error'])
7149 {
7150 $.each(data, function(i,v){
7151 var y = 0;
7152 returnHTML += '<div class="row-fluid">';
7153 returnHTML += '<div class="span12" style="padding: 0px 0px 0px 0px;border-bottom:dotted;border-left:dotted;border-color:#cccccc;border-width:1px;padding-left:5px;">';
7154 returnHTML += '<div class="span3">';
7155 returnHTML += '<label class="checkbox inline"><input class="regionStations_' + i + ' regionSuppliers" onclick="showDepartures(' + i + ',' + region_id + ');" type="checkbox" id="facility_' + region_id + '_' + i + '" value="' + i + '">' + data[i]['Supplier'] + ' - ' + data[i]['SupplierType'] + '</label>';
7156 returnHTML += '</div>';
7157
7158 returnHTML += '<div id="facilities_' + i + '" class="hide span9">';
7159 $.each(data[i]['Details'], function(di,dv){
7160 if (parseFloat(data[i]['Details'][di]['facility_is_disabled']) != 1){
7161 returnHTML += '<div class="row-fluid">';
7162 returnHTML += '<div class="span12" style="border-bottom:dotted;border-left:dotted;border-color:#cccccc;border-width:1px;padding-left:5px;">';
7163 returnHTML += '<div class="span4"><h5><span class="badge badge-info">From</span></h5>';
7164 returnHTML += '<label class="checkbox inline"><input onclick="showDestinations(' + data[i]['Details'][di]['airport_id'] + ',' + i + ',' + region_id + ',' + data[i]['Details'][di]['airport_id'] + ');" id="departure_' + region_id + '_' + i + '_' + data[i]['Details'][di]['airport_id'] + '" type="checkbox" value="' + data[i]['Details'][di]['airport_id'] + '">' + data[i]['Details'][di]['airport_code'] + ' - ' + data[i]['Details'][di]['airport_name'] + '</label></div>';
7165 returnHTML += '<div class="span8" id="destinations_' + i + '_' + data[i]['Details'][di]['airport_id'] + '"></div>';
7166 returnHTML += '</div>';
7167 returnHTML += '</div>';
7168 y++;
7169 }
7170 });
7171 returnHTML += '</div>';
7172 returnHTML += '</div>';
7173 returnHTML += '</div>';
7174 x++;
7175 });
7176 }
7177
7178 $('#supplier_'+ region_id).html(returnHTML);
7179 return dfd.promise();
7180 },1000);
7181 });
7182 }
7183
7184 function applyRouteRegionFilters(plan_id, supplier_id)
7185 {
7186 var filterData = MPLSubplanComponent.getSubplanFilterData();
7187 filterData['regions'] = [];
7188 var selectAll = false;
7189 $('#MPLRouteRegionFilter input:checked').each(function (idx, item) {
7190 var value = $(item).val();
7191 if (value == '0') {
7192 selectAll = true;
7193 } else {
7194 filterData['regions'].push({ 'id': value });
7195 }
7196 });
7197 if (selectAll) {
7198 filterData['regions'] = [];
7199 filterData['regions'].push({ 'id': '0' });
7200 }
7201 MPLSubplanComponent.setSubplanFilterData(filterData);
7202 getServicesByPricingAfterTracker(plan_id,supplier_id,false);
7203 }
7204
7205 function toggleRouteRegionFilterAll(changedElement)
7206 {
7207 if (changedElement == 0) {
7208 $('#MPLRouteRegionFilter input').prop('checked', $('#MPLFilterRegion_ALL').is(':checked'));
7209 } else {
7210 var allSelected = true;
7211 $('#MPLRouteRegionFilter input').each(function (idx, item) {
7212 if ($(item).val() != '0') {
7213 if (!$(item).is(':checked')) {
7214 allSelected = false;
7215 }
7216 }
7217 });
7218 $('#MPLFilterRegion_ALL').prop('checked', allSelected);
7219 }
7220 }
7221
7222</script>