text changes to registration mail content
[namibia] / public / js / app / portal-workspace / stockview.js
1 ;(function(){
2
3         window._w.stockview = {
4
5                 itemId      : null,
6                 itemData    : null,
7                 formMeta    : null,
8                 ti          : null,
9                 limited     : false,
10                 newItem     : false,
11                 validations : 0,
12                 dates       : [],
13
14                 onStockViewTemplateReady : function( template, event, eventData )
15                 {
16                         console.log('onstockready');
17                         _w.stockview.itemData = null;
18                         _w.stockview.ti = _t[template];
19                         _w.stockview.limited = ('limitedstockview' == template)
20                                 ? true
21                                 : false;
22                         _w.stockview.itemId = App.Util.getUrlParam('id');
23                         if (0 == _w.stockview.itemId || null == _w.stockview.itemId)
24                         {
25                                 _w.stockview.newItem = true;
26                                 _w.stockview.itemData = {
27                                                 stock       : {},
28                                                 vehicleYear : null,
29                                                 type        : {
30                                                         category    : {
31                                                                 id : null
32                                                         },
33                                                         model       : {
34                                                                 id   : null,
35                                                                 make : {
36                                                                         id : null
37                                                                 }
38                                                         }
39                                                 }
40                                 };
41                         }
42                         _w.stockview.dates = [];
43                         var phData = App.DataStore.getData('publicHolidays');
44                         for (var i = 0; i < phData.length; i++)
45                         {
46                                 var dateParts = phData[i].holiday.split('-').map(function(part){
47                                                 return parseInt(part, 10);
48                                         });
49                                 var holiday = new Date(dateParts[0], dateParts[1]-1, dateParts[2]);
50                                 _w.stockview.dates.push(holiday.toDateString());
51                         }
52
53                         App.DataStore.setData('sparekeys', [{"value":"1", "label":"Yes"}, {"value":"0", "label":"No"}]);
54                 },
55
56                 onStockViewPublished : function( template, event, eventData )
57                 {
58
59                         _w.stockview.ti = _t[template];
60                         _w.stockview.limited = ('limitedstockview' == template)
61                                 ? true
62                                 : false;
63                         _w.stockview.setStockViewFormMeta();
64                         _w.stockview.ti.hydrate(_w.stockview.formMeta);
65                         if (_w.stockview.newItem)
66                         {
67                                 _w.stockview._setupValidation();
68                                 $('#btnSendToAuction').show();
69                                 $('#btnUpdate').prop('disabled', false);
70                                 $('#printStockPdf').hide();
71
72                                 /*
73                                  * Permissions
74                                  */
75                                 true == App.permissions.stockCreate ? $('#btnUpdate').show() : $('#btnUpdate').hide();
76                                 true == App.permissions.stockRouteAuction && !App.companyData.tC ? $('#optSendToAuction').show() : $('#optSendToAuction').hide();
77                                 if (!App.permissions.stockUpdateDamages)
78                                 {
79                                         $('.damages-form').hide();
80                                 }
81                                 
82                                 if (!App.permissions.stockUploadPhotos)
83                                 {
84                                         $('.photos-form').hide();
85                                 }
86                         }
87
88                         if ( $('#tuhpiDate').val= '' )
89                         {
90                                 $('#downloadTuhpi').hide();
91                         }
92
93                         $('#btnRequestHPI').click(function () {
94
95                                 if ('' == $('#HPIusername').val() || '' ==  $('#HPIpin').val())
96                                 {
97                                         alert('Please enter a valid username and password.');
98                                         return;
99                                 }
100
101                                 $('#HPIdropConfirm').slideToggle();
102                                 $('#HPIresponse').html('');
103                         });
104
105             $('#btnRequestHPIAccident').click(function () {
106
107                 if ('' == $('#HPIAccidentUsername').val() || '' == $('#HPIAccidentPin').val())
108                 {
109                     alert('Please enter a valid username and password.');
110                     return;
111                 }
112
113                 $('#HPIAccidentDropConfirm').slideToggle();
114                 $('#HPIAccidentResponse').html('');
115             });
116
117
118                         App.Util.updateCheckboxStyle($('#acceptHPIdisclaimer'));
119                         $('#HPIbtnConfirm').click(function () {
120
121                                 if ( $('#engineNumber').val() == '' )
122                                 {
123                                         alert('Please update the Vehicle Engine Number and try again');
124                                         return;
125                                 }
126                                 if ( $('#vinNumber').val() == '' &&  $('#registrationNumber').val() == '')
127                                 {
128                                         alert('Please update the Vin Number or the Registration Number and and try again');
129                                         return;
130                                 }
131                                 if (!$('#acceptHPIdisclaimer').is(':checked'))
132                                 {
133                                         alert('Please accept the conditions before sending.');
134                                         return;
135                                 }
136                                 if (!$('#frmStockView').valid())
137                                 {
138                                         return;
139                                 }
140                                 $('#HPIbtnConfirm').prop('disabled', true);
141                                 var data = _w.stockview._prepStockUpdateData();
142                                 App.API.execTask(
143                                                 'updateStock:' + _w.stockview.itemId, {"Stock":data}, {},
144                                                 function()
145                                                 {
146                                                         var task = _w.stockview.limited
147                                                                 ? 'Stock.LimitedUpdate'
148                                                                 : 'Stock.Update';
149                                                         App.API.getTask(
150                                                                         'updateStock:' + _w.stockview.itemId, 'Stock', task, _w.stockview.itemId,
151                                                                         {}, function(){}, _w.taskContractError
152                                                                 );
153                                                         var user = $('#HPIusername').val();
154                                                         var pass = $('#HPIpin').val();
155
156                                                         App.API.getTask(
157                                                                         'TransUnionForHPI', 'Stock', 'Utility.TransUnionForHPI', null,
158                                                                         {'Filter' : {'username' : user ,'pass' : pass , 'stock' : _w.stockview.itemId}},
159                                                                         function() {
160                                                                                 App.API.execTask(
161                                                                                                 'TransUnionForHPI',{}, {},
162                                                                                                 function(data)
163                                                                                                 {
164                                                                                                         $('#HPIdropConfirm').hide();
165                                                                                                         if ('Success' == data.Status)
166                                                                                                         {
167                                                                                                                 $('#HPIresponse').html('Success on HPI Report');
168                                                                                                                 alert('Success on HPI Report');
169                                                                                                                 App.DataStore.loadSelectListData(
170                                                                                                                                 'tuhpi', false, 'Stock', 'Tuhpi.List', null,
171                                                                                                                                 {"Filter":
172                                                                                                                                         {
173                                                                                                                                                 "stock"                 : _w.stockview.itemId,
174                                                                                                                                                 "company"               : App.companyData.id
175                                                                                                                                         }
176                                                                                                                                 }, {},function()
177                                                                                                                                 {
178                                                                                                                                         // data is retrieved
179                                                                                                                                         var tuHpiData = App.DataStore.getData('tuhpi');
180
181                                                                     _w.stockview._loadHpiReportData(tuHpiData);
182
183                                                                                                                                         //for (var i = 0; i < tuHpiData.length; i++)
184                                                                                                                                         //{
185                                                                                                                                         //      var tuHpiId = tuHpiData[i].id
186                                                                                                                                         //      var tuHpiCreated = tuHpiData[i].created
187                                                                                                                                         //      if (tuHpiId)
188                                                                                                                                         //      {
189                                                                                                                                         //              $('#tuhpiDate').html(tuHpiCreated);
190                                                                                                                                         //              $('#downloadTuhpi').show();
191                                                                                                                                         //              $('#HPIbtnConfirm').prop('disabled', true);
192                                                                                                                                         //              return;
193                                                                                                                                         //      }
194                                                                                                                                         //      else
195                                                                                                                                         //      {
196                                                                                                                                         //              $('#tuhpiDate').html('Not Requested Yet');
197                                                                                                                                         //              $('#downloadTuhpi').hide();
198                                                                                                                                         //              $('#HPIbtnConfirm').prop('disabled', false);
199                                                                                                                                         //      }
200                                                                                                                                         //}
201                                                                                                                                 }
202                                                                                                                         );
203                                                                                                         }
204                                                                                                         else
205                                                                                                         {
206                                                                                                                 $('#HPIresponse').html('API call to remote host failed. No data could be retrieved from remote service.');
207                                                                                                                 $('#HPIbtnConfirm').prop('disabled', false);
208                                                                                                         }
209                                                                                                 }, function(response)
210                                                                                                 {
211                                                                                                         alert(
212                                                                                                                 undefined != response.StatusReason
213                                                                                                                         ? response.StatusReason
214                                                                                                                         : 'API call to remote host failed. No data could be retrieved from remote service.'
215                                                                                                         );
216                                                                                                         $('#HPIbtnConfirm').prop('disabled', false);
217                                                                                                 }
218                                                                                 );
219                                                                         }
220                                                                         , _w.taskContractError
221                                                         );
222                                                 }, _w.taskExecError
223                                                 );
224                         });
225
226             App.Util.updateCheckboxStyle($('#acceptHPIAccidentDisclaimer'));
227             $('#HPIAccidentBtnConfirm').click(function () {
228
229                 if ( $('#engineNumber').val() == '' )
230                 {
231                     alert('Please update the Vehicle Engine Number and try again');
232                     return;
233                 }
234                 if ( $('#vinNumber').val() == '' &&  $('#registrationNumber').val() == '')
235                 {
236                     alert('Please update the Vin Number or the Registration Number and and try again');
237                     return;
238                 }
239                 if (!$('#acceptHPIAccidentDisclaimer').is(':checked'))
240                 {
241                     alert('Please accept the conditions before sending.');
242                     return;
243                 }
244                 if (!$('#frmStockView').valid())
245                 {
246                     return;
247                 }
248                 $('#HPIAccidentBtnConfirm').prop('disabled', true);
249                 var data = _w.stockview._prepStockUpdateData();
250
251                 App.API.execTask(
252                     'updateStock:' + _w.stockview.itemId, {"Stock":data}, {},
253                     function()
254                     {
255                         var task = _w.stockview.limited
256                             ? 'Stock.LimitedUpdate'
257                             : 'Stock.Update';
258                         App.API.getTask(
259                             'updateStock:' + _w.stockview.itemId, 'Stock', task, _w.stockview.itemId,
260                             {}, function(){}, _w.taskContractError
261                         );
262                         var user = $('#HPIAccidentUsername').val();
263                         var pass = $('#HPIAccidentPin').val();
264
265                         App.API.getTask(
266                             'TransUnionForHPIAccident', 'Stock', 'Utility.TransUnionForHPIAccident', null,
267                             {'Filter' : {'username' : user ,'pass' : pass , 'stock' : _w.stockview.itemId}},
268                             function() {
269                                 App.API.execTask(
270                                     'TransUnionForHPIAccident',{}, {},
271                                     function(data)
272                                     {
273                                         $('#HPIdropConfirm').hide();
274                                         if ('Success' == data.Status)
275                                         {
276                                             $('#HPIresponse').html('Success on HPI Report');
277                                             alert('Success on HPI Report');
278                                             App.DataStore.loadSelectListData(
279                                                 'tuhpi', false, 'Stock', 'Tuhpi.List', null,
280                                                 {"Filter":
281                                                 {
282                                                     "stock"             : _w.stockview.itemId,
283                                                     "company"           : App.companyData.id
284                                                 }
285                                                 }, {},function()
286                                                 {
287                                                     // data is retrieved
288                                                     var tuHpiData = App.DataStore.getData('tuhpi');
289
290                                                     _w.stockview._loadHpiReportData(tuHpiData);
291
292                                                 }
293                                             );
294                                         }
295                                         else
296                                         {
297                                             $('#HPIresponse').html('API call to remote host failed. No data could be retrieved from remote service.');
298                                             $('#HPIbtnConfirm').prop('disabled', false);
299                                         }
300                                     }, function(response)
301                                     {
302                                         alert(
303                                             undefined != response.StatusReason
304                                                 ? response.StatusReason
305                                                 : 'API call to remote host failed. No data could be retrieved from remote service.'
306                                         );
307                                         $('#HPIbtnConfirm').prop('disabled', false);
308                                     }
309                                 );
310                             }
311                             , _w.taskContractError
312                         );
313                     }, _w.taskExecError
314                 );
315             });
316
317                         //$('#downloadTuhpi').click(function () {
318                         //      App.API.getTask(
319                         //                      'printTuhpi:' + _w.stockview.itemId, 'Stock', 'Tuhpi.Print', _w.stockview.itemId,
320                         //                      {}, function() {
321                         //                              App.API.execTask(
322                         //                                              'printTuhpi:' + _w.stockview.itemId, {}, {},
323                         //                                              function () {}, _w.taskExecError,
324                         //                                              'EXPORT', true
325                         //                              );
326                         //                      }, _w.taskContractError
327                         //      );
328                         //});
329
330             $('#btn_mainImage').change(function () {
331                                 if ('' == $('#mainImage').val())
332                                 {
333                                         $('#img_mainImage').addClass('error');
334                                         $('#img_mainImage').removeClass('valid');
335                                 }
336                                 else
337                                 {
338                                         $('#img_mainImage').removeClass('error');
339                                         $('#img_mainImage').addClass('valid');
340                                 }
341                         });
342
343                         $('#btnFetchTu').click(function () {
344                                 if (!$('#vehicleYear').val()
345                                         || !$('#vehicleType').val())
346                                 {
347                                         alert('Vehicle year and type is required to fetch Trade and Retail pricing.');
348                                         return;
349                                 }
350                                 App.API.getTask(
351                                                 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
352                                                 {}, _w.stockview._onTuReady, _w.taskContractError
353                                 );
354                         });
355                         $('#btnUpdate').prop('disabled', true);
356                         $('#btnArchive').click(function () {
357                                 App.API.directRoute(
358                                                 'archiveStock:' + _w.stockview.itemId,
359                                                 'Stock', 'Stock.MoveToArchive', _w.stockview.itemId, {},
360                                                 _w.stockview._onStockUpdated, _w.taskExecError
361                                                 );
362                         });
363                         $('#btnUnarchive').click(function () {
364                                 App.API.directRoute(
365                                                 'unarchiveStock:' + _w.stockview.itemId,
366                                                 'Stock', 'Stock.MoveToStock', _w.stockview.itemId, {},
367                                                 _w.stockview._onStockUpdated, _w.taskExecError
368                                                 );
369                         });
370                         App.Util.updateCheckboxStyle($('#acceptPgHPIdisclaimer'));
371                         $('#btnSendToPg').click(function () {
372                                 var clubs = $('#clubs').val();
373                                 if (null == clubs)
374                                 {
375                                         alert('Please select at least one club.');
376                                         return;
377                                 }
378                                 if (!$('#acceptPgHPIdisclaimer').is(':checked'))
379                                 {
380                                         alert('Please accept the conditions before sending.');
381                                         return;
382                                 }
383                                 if ('' == $('#registrationNumber').val())
384                                 {
385                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
386                                         $('#registrationNumber').addClass('error');
387                                         $('#registrationNumber').removeClass('valid');
388                                         return;
389                                 }
390                                 else
391                                 {
392                                         $('#registrationNumber').removeClass('error');
393                                         $('#registrationNumber').addClass('valid');
394                                 }
395                                 if ('' == $('#vinNumber').val())
396                                 {
397                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
398                                         $('#vinNumber').addClass('error');
399                                         $('#vinNumber').removeClass('valid');
400                                         return;
401                                 }
402                                 else
403                                 {
404                                         $('#vinNumber').removeClass('error');
405                                         $('#vinNumber').addClass('valid');
406                                 }
407                                 if ('' == $('#engineNumber').val())
408                                 {
409                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
410                                         $('#engineNumber').addClass('error');
411                                         $('#engineNumber').removeClass('valid');
412                                         return;
413                                 }
414                                 else
415                                 {
416                                         $('#engineNumber').removeClass('error');
417                                         $('#engineNumber').addClass('valid');
418                                 }
419                                 if (!$('#frmStockView').valid())
420                                 {
421                                         return;
422                                 }
423                                 $('#btnSendToPg').prop('disabled', true);
424                                 App.API.execTask(
425                                         'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
426                                         function () {
427                                                 App.API.getRoute(
428                                                                 'sendToPg:' + _w.stockview.itemId, 'Stock', 'Stock.SendToPriceGuide', _w.stockview.itemId,
429                                                                 {}, function() {
430                                                                         var clubList = $('#clubs').val();
431                                                                         var clubs = [];
432                                                                         for (var i = 0; i < clubList.length; i++)
433                                                                         {
434                                                                                 clubs.push({id: clubList[i]});
435                                                                         }
436                                                                         App.API.execRoute(
437                                                                                         'sendToPg:' + _w.stockview.itemId, {Context: {clubs: clubs}}, {},
438                                                                                         _w.stockview._onStockUpdated, _w.taskExecError
439                                                                         );
440                                                                 }, _w.taskContractError
441                                                 );
442                                         }, _w.taskExecError
443                                 );
444                         });
445
446                         $('.back-btn').on('click', function(){
447                                 window.history.back();
448                         });
449
450                         $('#btnSendToRetail').click(function () {
451                                 var reservePrice = $('#retailAmountRequired').val();
452                                 if ('' == reservePrice || isNaN(reservePrice))
453                                 {
454                                         alert('Please provide minimum retail price.');
455                                         return;
456                                 }
457                                 if (!$('#frmStockView').valid())
458                                 {
459                                         return;
460                                 }
461                                 $('#btnSendToRetail').prop('disabled', true);
462                                 App.API.execTask(
463                                                 'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
464                                                 function () {
465                                                         App.API.directRoute(
466                                                                         'retailStock:' + _w.stockview.itemId,
467                                                                         'Stock', 'Stock.SendToRetail', _w.stockview.itemId, {},
468                                                                         _w.stockview._onStockUpdated, _w.taskExecError
469                                                                         );
470                                                 }, _w.taskExecError
471                                 );
472                         });
473                         $('#btnReclaimFromRetail').click(function () {
474                                 if (!$('#frmStockView').valid())
475                                 {
476                                         return;
477                                 }
478                                 $('#btnReclaimFromRetail').prop('disabled', true);
479                                 App.API.execTask(
480                                                 'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
481                                                 function () {
482                                                         App.API.directRoute(
483                                                                         'retailReclaimStock:' + _w.stockview.itemId,
484                                                                         'Stock', 'Stock.ReclaimFromRetail', _w.stockview.itemId, {},
485                                                                         _w.stockview._onStockUpdated, _w.taskExecError
486                                                         );
487                                                 }, _w.taskExecError
488                                 );
489                         });
490                         $('#btnSendToTc').click(function () {
491                                 if (!$('#frmStockView').valid())
492                                 {
493                                         return;
494                                 }
495                                 $('#btnSendToTc').prop('disabled', true);
496                                 if (8 != $('#vehicleCategory').val())
497                                 {
498                                         App.API.getTask(
499                                                 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
500                                                 {}, _w.stockview._onTuTcUpdateReady, _w.taskContractError
501                                         );
502                                 }
503                                 else
504                                 {
505                                         App.API.execTask(
506                                                 'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
507                                                 function () {
508                                                         App.API.directRoute(
509                                                                 'tcStock:' + _w.stockview.itemId,
510                                                                 'Stock', 'Stock.SendToTradeCenter', _w.stockview.itemId, {},
511                                                                 _w.stockview._onStockUpdated, _w.taskExecError
512                                                         );
513                                                 }, _w.taskExecError
514                                         );
515                                 }
516                         });
517                         App.Util.updateCheckboxStyle($('#acceptAuctionHPIdisclaimer'));
518                         $('#btnSendToAuction').click(function () {
519                                 var endDate = $('#endDate').val();
520                                 var reservePrice = $('#reservePrice').val();
521                                 if ('' == endDate || '' == reservePrice || isNaN(reservePrice))
522                                 {
523                                         alert('Please provide end date and reserve price.');
524                                         return;
525                                 }
526
527                                 if (!$('#frmStockView').valid())
528                                 {
529                                         return;
530                                 }
531                                 if (!$('#acceptAuctionHPIdisclaimer').is(':checked'))
532                                 {
533                                         alert('Please accept the conditions before sending.');
534                                         return;
535                                 }
536
537                                 if ('' == $('#mainImage').val())
538                                 {
539                                         alert('The main image is mandatory for moving a vehicle to auction.');
540                                         $('#img_mainImage').addClass('error');
541                                         $('#img_mainImage').removeClass('valid');
542                                         return;
543                                 }
544                                 else
545                                 {
546                                         $('#img_mainImage').removeClass('error');
547                                         $('#img_mainImage').addClass('valid');
548                                 }
549                                 if ('' == $('#registrationNumber').val())
550                                 {
551                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
552                                         $('#registrationNumber').addClass('error');
553                                         $('#registrationNumber').removeClass('valid');
554                                         return;
555                                 }
556                                 else
557                                 {
558                                         $('#registrationNumber').removeClass('error');
559                                         $('#registrationNumber').addClass('valid');
560                                 }
561                                 if ('' == $('#vinNumber').val())
562                                 {
563                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
564                                         $('#vinNumber').addClass('error');
565                                         $('#vinNumber').removeClass('valid');
566                                         return;
567                                 }
568                                 else
569                                 {
570                                         $('#vinNumber').removeClass('error');
571                                         $('#vinNumber').addClass('valid');
572                                 }
573                                 if ('' == $('#engineNumber').val())
574                                 {
575                                         alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
576                                         $('#engineNumber').addClass('error');
577                                         $('#engineNumber').removeClass('valid');
578                                         return;
579                                 }
580                                 else
581                                 {
582                                         $('#engineNumber').removeClass('error');
583                                         $('#engineNumber').addClass('valid');
584                                 }
585
586
587                                 $('#btnSendToAuction').prop('disabled', true);
588                                 if (_w.stockview.newItem)
589                                 {
590                                         var data = {};
591                                         data.Stock = _w.stockview._prepStockUpdateData();
592                                         data.Context = {endDate: endDate, reservePrice: reservePrice};
593                                         App.API.execTask(
594                                                 'createStockAuction', data, {},
595                                                 _w.stockview._onStockUpdated, _w.taskExecError
596                                         );
597                                 }
598                                 else
599                                 {
600                                         if (8 != $('#vehicleCategory').val())
601                                         {
602                                                 App.API.getTask(
603                                                         'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
604                                                         {}, _w.stockview._onTuUpdateReady, _w.taskContractError
605                                                 );
606                                         }
607                                         else
608                                         {
609                                                 App.API.execTask(
610                                                         'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
611                                                         function () {
612                                                                 App.API.getRoute(
613                                                                         'sendToAuction:' + _w.stockview.itemId, 'Stock', 'Stock.SendToAuction', _w.stockview.itemId,
614                                                                         {}, function() {
615                                                                                 var endDate = $('#endDate').val();
616                                                                                 var reservePrice = $('#reservePrice').val();
617                                                                                 App.API.execRoute(
618                                                                                         'sendToAuction:' + _w.stockview.itemId, {Context: {endDate: endDate, reservePrice: reservePrice}}, {},
619                                                                                         _w.stockview._onStockUpdated, _w.taskExecError
620                                                                                 );
621                                                                         }, _w.taskContractError
622                                                                 );
623                                                         }, _w.taskExecError
624                                                 );
625                                         }
626                                 }
627                         });
628                         if (null != _w.stockview.itemData)
629                         {
630                                 _w.stockview._onDataAndTemplate();
631                         }
632                         if (false == _w.stockview.newItem)
633                         {
634                                 _w.stockview.ti.hydrate({
635                                         'gridPricingHistoryColumnHeaders': {
636                                                 constructor: 'GridColumnHeader',
637                                                 items: {
638                                                         Date: {
639                                                                 id: 'gridPricingHistoryColumn_Date',
640                                                                 title: 'Date',
641                                                         },
642                                                         Trade: {
643                                                                 id: 'gridPricingHistoryColumn_Trade',
644                                                                 title: 'Trade',
645                                                         },
646                                                         TotalRecon: {
647                                                                 id: 'gridPricingHistoryColumn_totalRecon',
648                                                                 title: 'Total Recon',
649                                                         },
650                                                         km: {
651                                                                 id: 'gridPricingHistoryColumn_km',
652                                                                 title: 'km',
653                                                         },
654                                                         PriceguideOffer: {
655                                                                 id: 'gridPricingHistoryColumn_pricegOffer',
656                                                                 title: 'Priceguide Offer',
657                                                         },
658                                                         AuctionWinningBid: {
659                                                                 id: 'gridPricingHistoryColumn_auctionWinningBid',
660                                                                 title: 'Auction Winning Bid',
661                                                         }
662                                                 }
663                                         },
664                                         'gridPricingHistoryRowRepeater': {}
665                                 });
666                         }
667                         else
668                         {
669                                 $('#pricinghistory').hide();
670                         }
671
672                         _w.stockview.itemId = App.Util.getUrlParam('id');
673                         if (0 == _w.stockview.itemId || null == _w.stockview.itemId)
674                         {
675                                 App.API.getTask(
676                                         'createStock', 'Stock', 'Stock.Create',
677                                         null, {}, function(){}, _w.taskContractError
678                                 );
679                                 App.API.getTask(
680                                         'createStockAuction', 'Stock', 'Stock.CreateAuction',
681                                         null, {}, function(){}, _w.taskContractError
682                                 );
683                                 App.DataStore.loadSelectListGroup([
684                    {dataId: 'years', isStatic: true, workspace: 'Stock', task: 'Year.SelectList'},
685                    {dataId: 'categories', isStatic: true, workspace: 'Stock', task: 'Category.SelectList'},
686                    {dataId: 'conditions', isStatic: true, workspace: 'Stock', task: 'Condition.SelectList'},
687                    {dataId: 'exteriorColours', isStatic: true, workspace: 'Stock', task: 'ExteriorColour.SelectList'},
688                    {dataId: 'interiorColours', isStatic: true, workspace: 'Stock', task: 'InteriorColour.SelectList'},
689                    {dataId: 'upholsteries', isStatic: true, workspace: 'Stock', task: 'Upholstery.SelectList'},
690                    {dataId: 'papers', isStatic: true, workspace: 'Stock', task: 'Paper.SelectList'},
691                    {dataId: 'natis', isStatic: true, workspace: 'Stock', task: 'Natis.SelectList'},
692                    {dataId: 'fsh', isStatic: true, workspace: 'Stock', task: 'FullServiceHistory.SelectList'},
693                    {dataId: 'fuelTypes', isStatic: true, workspace: 'Stock', task: 'FuelType.SelectList'},
694                    {dataId: 'transmissionTypes', isStatic: true, workspace: 'Stock', task: 'TransmissionType.SelectList'},
695                    {dataId: 'damages', isStatic: true, workspace: 'Stock', task: 'Damage.SelectList'},
696                    {dataId: 'accessories', isStatic: true, workspace: 'Stock', task: 'Accessory.SelectList'},
697                    {dataId: 'clubs', isStatic: true, workspace: 'PriceGuide', task: 'Club.SelectList'}
698                 ]);
699
700                         }
701                         else
702                         {
703                                 _w.stockview.newItem = false;
704                                 var task = _w.stockview.limited
705                                         ? 'Stock.LimitedUpdate'
706                                         : 'Stock.Update';
707                                 App.API.getTask(
708                                                 'updateStock:' + _w.stockview.itemId, 'Stock', task, _w.stockview.itemId,
709                                                 {}, $.proxy( _w.stockview._onStockViewDataReceived, this ), _w.taskContractError
710                                         );
711                         }
712                 },
713
714                 setStockViewFormMeta : function( data )
715                 {
716                         var damages = {};
717                         if (undefined != data)
718                         {
719                                 for (var i = 0; i < data.damages.length; i++)
720                                 {
721                                         damages['d' + data.damages[i].damage] = data.damages[i].amount;
722                                 }
723                         }
724                         else
725                         {
726                                 data = {};
727                         }
728
729                         _w.stockview.formMeta = {
730                                 'vehicleYear' : {
731                                         type        : 'select',
732                                         id          : 'vehicleYear',
733                                         title       : 'Year',
734                                         dataStoreId : 'years',
735                                         value       : data.vehicleYear ? data.vehicleYear : '',
736                                         onChange    : function () {
737                                                 if (!App.DataStore.getItem('BuildSelect:vehicleYear', false))
738                                                 {
739                                                         if (_w.stockview.itemData)
740                                                         {
741                                                                 _w.stockview.itemData.vehicleYear = $('#vehicleYear').val();
742                                                                 _w.stockview._listMakesModelsTypes(function () {
743                                                                         if ($('#vehicleYear').val() && $('#vehicleType').val())
744                                                                         {
745                                                                                 App.API.getTask(
746                                                                                                 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
747                                                                                                 {}, _w.stockview._onTuReady, _w.taskContractError
748                                                                                 );
749                                                                         }
750                                                                 });
751                                                         }
752                                                 }
753                                         }
754                                 },
755                                 'category' : {
756                                         type        : 'select',
757                                         id          : 'vehicleCategory',
758                                         title       : 'Category',
759                                         dataStoreId : 'categories',
760                                         value       : data.type ? data.type.category.id : '',
761                                         onChange    : function () {
762
763                                                 if ($(this).val() == 8)
764                                                 {
765                                                         $('#retailPrice').val('');
766                                                         $('#tradePrice').val('');
767                             $('#listPrice').val('');
768                                                         $('#' + _w.stockview.ti.tid + '_initialTradePrice').val($('#' + _w.stockview.ti.tid + '_tradePrice').html());
769                                                         $('#' + _w.stockview.ti.tid + '_updatedTradePrice').val('');
770                                                         $('#' + _w.stockview.ti.tid + '_retailPrice').html('R ' + '.00');
771                                                         $('#' + _w.stockview.ti.tid + '_tradePrice').html('R ' + '.00');
772                             $('#' + _w.stockview.ti.tid + '_listPrice').html('R ' + '.00');
773                                                 }
774
775
776
777                                                 if ($(this).val() == 8 && _w.stockview.itemId == 0)
778                                                 {
779                                                         $('#mmCode').html("Other");
780
781                                                 }
782                                                 if (!App.DataStore.getItem('BuildSelect:vehicleCategory', false))
783                                                 {
784                                                         if (_w.stockview.itemData)
785                                                         {
786                                                                 _w.stockview.itemData.type.category.id = $('#vehicleCategory').val();
787                                                                 _w.stockview._listMakesModelsTypes();
788                                                         }
789                                                 }
790                                                 $('#' + _w.stockview.ti.tid + '_makeManual').hide();
791                                                 $('#' + _w.stockview.ti.tid + '_modelManual').hide();
792                                                 $('#' + _w.stockview.ti.tid + '_typeManual').hide();
793                                                 $('#makeManual').val('');
794                                                 $('#modelManual').val('');
795                                                 $('#typeManual').val('');
796                                                 $('#' + _w.stockview.ti.tid + '_make').show();
797                                                 $('#' + _w.stockview.ti.tid + '_model').show();
798                                                 $('#' + _w.stockview.ti.tid + '_type').show();
799                                         }
800                                 },
801                                 'make' : {
802                                         type        : 'select',
803                                         id          : 'vehicleMake',
804                                         title       : 'Vehicle Make',
805                                         dataStoreId : 'makes',
806                                         value       : data.type ? data.type.model.make.id : '',
807                                         onChange    : function () {
808                                                 if (!App.DataStore.getItem('BuildSelect:vehicleMake', false))
809                                                 {
810                                                         $('#vehicleMakeManual').val('');
811                                                         $('#vehicleModelManual').val('');
812                                                         $('#vehicleTypeManual').val('');
813                                                         if (-1 == $('#vehicleMake').val())
814                                                         {
815                                                                 $('#' + _w.stockview.ti.tid + '_make').hide();
816                                                                 $('#' + _w.stockview.ti.tid + '_model').hide();
817                                                                 $('#' + _w.stockview.ti.tid + '_type').hide();
818                                                                 $('#' + _w.stockview.ti.tid + '_makeManual').show();
819                                                                 $('#' + _w.stockview.ti.tid + '_modelManual').show();
820                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').show();
821                                                         }
822                                                         else
823                                                         {
824                                                                 $('#' + _w.stockview.ti.tid + '_makeManual').hide();
825                                                                 $('#' + _w.stockview.ti.tid + '_modelManual').hide();
826                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').hide();
827                                                                 $('#' + _w.stockview.ti.tid + '_make').show();
828                                                                 $('#' + _w.stockview.ti.tid + '_model').show();
829                                                                 $('#' + _w.stockview.ti.tid + '_type').show();
830                                                                 if (_w.stockview.itemData)
831                                                                 {
832                                                                         _w.stockview.itemData.type.model.make.id = $('#vehicleMake').val();
833                                                                         _w.stockview._listMakesModelsTypes();
834                                                                 }
835                                                         }
836                                                 }
837                                         }
838                                 },
839                                 'model' : {
840                                         type        : 'select',
841                                         id          : 'vehicleModel',
842                                         title       : 'Vehicle Model',
843                                         dataStoreId : 'models',
844                                         value       : data.type ? data.type.model.id : '',
845                                         onChange    : function () {
846                                                 if (!App.DataStore.getItem('BuildSelect:vehicleModel', false))
847                                                 {
848                                                         $('#vehicleModelManual').val('');
849                                                         $('#vehicleTypeManual').val('');
850
851                                                         if (-1 == $('#vehicleModel').val())
852                                                         {
853                                                                 $('#' + _w.stockview.ti.tid + '_model').hide();
854                                                                 $('#' + _w.stockview.ti.tid + '_type').hide();
855                                                                 $('#' + _w.stockview.ti.tid + '_modelManual').show();
856                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').show();
857                                                         }
858                                                         else
859                                                         {
860                                                                 $('#' + _w.stockview.ti.tid + '_modelManual').hide();
861                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').hide();
862                                                                 $('#' + _w.stockview.ti.tid + '_model').show();
863                                                                 $('#' + _w.stockview.ti.tid + '_type').show();
864                                                                 if (_w.stockview.itemData)
865                                                                 {
866                                                                         _w.stockview.itemData.type.model.id = $('#vehicleModel').val();
867                                                                         _w.stockview._listMakesModelsTypes();
868                                                                 }
869                                                         }
870                                                 }
871                                         }
872                                 },
873                                 'type' : {
874                                         type        : 'select',
875                                         id          : 'vehicleType',
876                                         title       : 'Vehicle Type',
877                                         dataStoreId : 'types',
878                                         value       : data.type ? data.type.id : '',
879                                         onChange    : function () {
880                                                 if (!App.DataStore.getItem('BuildSelect:vehicleType', false))
881                                                 {
882                                                         $('#vehicleTypeManual').val('');
883                                                         if (-1 == $('#vehicleType').val())
884                                                         {
885                                                                 $('#' + _w.stockview.ti.tid + '_type').hide();
886                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').show();
887                                                         }
888                                                         else
889                                                         {
890                                                                 $('#' + _w.stockview.ti.tid + '_typeManual').hide();
891                                                                 $('#' + _w.stockview.ti.tid + '_type').show();
892                                                                 if ($('#vehicleYear').val()
893                                                                         && $('#vehicleType').val())
894                                                                 {
895                                                                         App.API.getTask(
896                                                                                         'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
897                                                                                         {}, _w.stockview._onTuReady, _w.taskContractError
898                                                                         );
899                                                                 }
900                                                                 if ('' != $(this).val() && null != $(this).val())
901                                                                 {
902
903                                                                         App.API.getTask(
904                                                                                         'GetMmCode' + $(this).val(), 'Stock', 'Type.GetMmCode', null,
905                                                                                         {id:$(this).val()}, function(response){
906                                                                                                 $('#mmCode').html(response.Data.mmCode);
907                                                                                         }, _w.taskContractError
908                                                                         );
909                                                                 }
910                                                                 else
911                                                                 {
912                                                                         $('#mmCode').html('');
913                                                                 }
914                                                         }
915                                                 }
916                                         }
917                                 },
918
919                                 'makeManual' : {
920                                         type        : 'input',
921                                         id          : 'vehicleMakeManual',
922                                         title       : 'Vehicle Make',
923                                         //dataStoreId : 'makesManual',
924                                         value       : data.type ? data.type.model.make.id : '',
925                                 },
926                                 'modelManual' : {
927                                         type        : 'input',
928                                         id          : 'vehicleModelManual',
929                                         title       : 'Vehicle Model',
930                                         //dataStoreId : 'modelsManual',
931                                         value       : data.type ? data.type.model.id : '',
932                                 },
933                                 'typeManual' : {
934                                         type        : 'input',
935                                         id          : 'vehicleTypeManual',
936                                         title       : 'Vehicle Type',
937                                         //dataStoreId : 'typesManual',
938                                         value       : data.type ? data.type.id : '',
939                                 },
940
941                                 'mmCode' : {
942                                         type        : 'input',
943                                         id          : 'mmCode',
944                                         title       : 'MM Code',
945                                         style           : 'disable',
946                                         setAttrib       : 'readonly',
947                                         value       : data.type ? data.type.mmCode : ''
948                                 },
949
950                                 'stockNumber' : {
951                                         type            : 'input',
952                                         id              : 'stockNumber',
953                                         title           : 'Stock number',
954                                         value           : data.stockNumber ? data.stockNumber : ''
955                                 },
956
957                                 'fuelType' : {
958                                         type        : 'select',
959                                         id          : 'vehicleFuelType',
960                                         title       : 'Fuel Type',
961                                         dataStoreId : 'fuelTypes',
962                                         value       : data.fuelType ? data.fuelType : ''
963                                 },
964                                 'transmissionType' : {
965                                         type        : 'select',
966                                         id          : 'vehicleTransmissionType',
967                                         title       : 'Transmission Type',
968                                         dataStoreId : 'transmissionTypes',
969                                         value       : data.transmissionType ? data.transmissionType : ''
970                                 },
971                                 'condition' : {
972                                         type        : 'select',
973                                         id          : 'vehicleCondition',
974                                         title       : 'Condition',
975                                         dataStoreId : 'conditions',
976                                         value       : data.condition ? data.condition : ''
977                                 },
978                                 'exteriorColour' : {
979                                         type        : 'select',
980                                         id          : 'exteriorColour',
981                                         title       : 'Main ext. colour',
982                                         dataStoreId : 'exteriorColours',
983                                         value       : data.exteriorColour ? data.exteriorColour : ''
984                                 },
985                                 'interiorColour' : {
986                                         type  : 'select',
987                                         id    : 'interiorColour',
988                                         title : 'Main int. colour',
989                                         dataStoreId : 'interiorColours',
990                                         value : data.interiorColour ? data.interiorColour : ''
991                                 },
992                                 'upholstery' : {
993                                         type        : 'select',
994                                         id          : 'vehicleUpholstery',
995                                         title       : 'Upholstery',
996                                         dataStoreId : 'upholsteries',
997                                         value       : data.upholstery ? data.upholstery : ''
998                                 },
999                                 'papers' : {
1000                                         type        : 'select',
1001                                         id          : 'vehiclePapers',
1002                                         title       : 'Papers',
1003                                         dataStoreId : 'papers',
1004                                         value       : data.papers ? data.papers : ''
1005                                 },
1006                                 'natis' : {
1007                                         type        : 'select',
1008                                         id          : 'vehicleNatis',
1009                                         title       : 'Natis',
1010                                         dataStoreId : 'natis',
1011                                         value       : data.natis ? data.natis : ''
1012                                 },
1013                                 'spareKeys' : {
1014                                         type        : 'select',
1015                                         id          : 'spareKeys',
1016                                         title       : 'Spare keys',
1017                                         dataStoreId : 'sparekeys',
1018                                         value       : undefined != data.spareKeys && null != data.spareKeys
1019                                                                         ? (data.spareKeys == true ? "1" : "0")
1020                                                                         : null
1021                                 },
1022                                 'fullServiceHistory' : {
1023                                         type        : 'select',
1024                                         id          : 'fullServiceHistory',
1025                                         title       : 'Full service history',
1026                                         dataStoreId : 'fsh',
1027                                         value       : data.fullServiceHistory ? data.fullServiceHistory : ''
1028                                 },
1029                                 'registrationNumber' : {
1030                                         type  : 'input',
1031                                         id    : 'registrationNumber',
1032                                         title : 'Registration no',
1033                                         value : data.registrationNumber ? data.registrationNumber : '',
1034                     style       : 'capitalise'
1035                                 },
1036                                 'vinNumber' : {
1037                                         type  : 'input',
1038                                         id    : 'vinNumber',
1039                                         title : 'Vin no',
1040                                         value : data.vinNumber ? data.vinNumber : '',
1041                     style       : 'capitalise'
1042                                 },
1043                                 'engineNumber' : {
1044                                         type  : 'input',
1045                                         id    : 'engineNumber',
1046                                         title : 'Eng. no',
1047                                         value : data.engineNumber ? data.engineNumber : '',
1048                     style       : 'capitalise'
1049                                 },
1050                                 'km' : {
1051                                         type  : 'input',
1052                                         id    : 'km',
1053                                         title : 'Kms',
1054                                         value : data.km ? data.km : ''
1055                                 },
1056                                 'fshNotes' : {
1057                                         type  : 'textarea-small',
1058                                         id    : 'fshNotes',
1059                                         title : 'FSH notes',
1060                                         value : data.fshNotes ? data.fshNotes : ''
1061                                 },
1062                                 'damages' : {
1063                                         type        : 'damageDetails',
1064                                         disabled        : !App.permissions.stockUpdateDamages,
1065                                         id          : 'damages',
1066                                         dataStoreId : 'damages',
1067                                         data        : data.damages ? data.damages : {}
1068                                 },
1069                                 'previousRepairsNoted' : {
1070                                         type  : 'checkbox',
1071                                         id    : 'previousRepairsNoted',
1072                                         title : 'Previous repairs',
1073                                         style : 'damages-comments',
1074                                         value : data.previousRepairsNoted ? data.previousRepairsNoted : false
1075                                 },
1076                                 'previousRepairsNotes' : {
1077                                         type  : 'textarea-styled',
1078                                         disabled        : !App.permissions.stockUpdateDamages,
1079                                         id    : 'previousRepairsNotes',
1080                                         title : 'Previous repairs notes',
1081                                         style : 'damages-comments',
1082                                         value : data.previousRepairsNotes ? data.previousRepairsNotes : '',
1083                                         onChange: function(){
1084                                                 var haveData = ('' != $(this).val() ? true : false);
1085                                                 $('#previousRepairsNoted').prop('checked', haveData);
1086                                         }
1087                                 },
1088                                 'damageTotal' : 'R 0.00',
1089                                 'damageNotes' : {
1090                                         type  : 'textarea-styled',
1091                                         disabled        : !App.permissions.stockUpdateDamages,
1092                                         id    : 'damageNotes',
1093                                         title : 'Damages comments',
1094                                         style : 'damages-comments',
1095                                         value : data.damageNotes ? data.damageNotes : ''
1096                                 },
1097                                 'coverReceived' : {
1098                                         type  : 'textarea-styled',
1099                                         disabled        : !App.permissions.stockUpdateCoverReceived,
1100                                         id    : 'coverReceived',
1101                                         title : 'Cover Received',
1102                                         style : 'cover-received',
1103                                         value : data.coverReceived ? data.coverReceived : ''
1104                                 },
1105                                 'accessories' : {
1106                                         type        : 'checkGroup',
1107                                         id          : 'accessories',
1108                                         dataStoreId : 'accessories',
1109                                         itemName    : 'accessory',
1110                                         data        : data.accessories ? data.accessories : {}
1111                                 },
1112                                 'accessoryNotes' : {
1113                                         type      : 'textarea-styled',
1114                                         id        : 'accessoryNotes',
1115                                         title     : 'Comments',
1116                                         style     : 'comment',
1117                                         areaStyle : 'comment-text-box',
1118                                         value     : data.accessoryNotes ? data.accessoryNotes : ''
1119                                 },
1120                                 'mainImage' : {
1121                                         type  : 'image',
1122                                         id    : 'mainImage',
1123                                         baseImage : 'main_img_car.jpg',
1124                                         view  : !App.permissions.stockUploadPhotos,
1125                                         value : data.mainImage ? data.mainImage : ''
1126                                 },
1127                                 'frontImage' : {
1128                                         type  : 'image',
1129                                         id    : 'frontImage',
1130                                         baseImage : 'front_car.jpg',
1131                                         view  : !App.permissions.stockUploadPhotos,
1132                                         value : data.frontImage ? data.frontImage : ''
1133                                 },
1134                                 'leftImage' : {
1135                                         type  : 'image',
1136                                         id    : 'leftImage',
1137                                         baseImage : 'left_car.jpg',
1138                                         view  : !App.permissions.stockUploadPhotos,
1139                                         value : data.leftImage ? data.leftImage : ''
1140                                 },
1141                                 'rightImage' : {
1142                                         type  : 'image',
1143                                         id    : 'rightImage',
1144                                         baseImage : 'right_car.jpg',
1145                                         view  : !App.permissions.stockUploadPhotos,
1146                                         value : data.rightImage ? data.rightImage : ''
1147                                 },
1148                                 'backImage' : {
1149                                         type  : 'image',
1150                                         id    : 'backImage',
1151                                         baseImage : 'back_car.jpg',
1152                                         view  : !App.permissions.stockUploadPhotos,
1153                                         value : data.backImage ? data.backImage : ''
1154                                 },
1155                                 'interiorImage' : {
1156                                         type  : 'image',
1157                                         id    : 'interiorImage',
1158                                         baseImage : 'interior_car.jpg',
1159                                         view  : !App.permissions.stockUploadPhotos,
1160                                         value : data.interiorImage ? data.interiorImage : ''
1161                                 },
1162                                 'engineImage' : {
1163                                         type  : 'image',
1164                                         id    : 'engineImage',
1165                                         baseImage : 'engine_car.jpg',
1166                                         view  : !App.permissions.stockUploadPhotos,
1167                                         value : data.engineImage ? data.engineImage : ''
1168                                 },
1169                                 'natisImage' : {
1170                                         type  : 'image',
1171                                         id    : 'natisImage',
1172                                         baseImage : 'copy_of_natis_car.jpg',
1173                                         view  : !App.permissions.stockUploadPhotos,
1174                                         value : data.natisImage ? data.natisImage : ''
1175                                 },
1176                                 'clubs' : {
1177                                         type        : 'select',
1178                                         id          : 'clubs',
1179                                         title       : 'Select clubs',
1180                                         dataStoreId : 'clubs',
1181                                         multiple    : true,
1182                                         value       : ''
1183                                 },
1184                                 'endDate' : {
1185                                         type  : 'date',
1186                                         id    : 'endDate',
1187                                         title : 'Auction end date',
1188                                         dtopt : {startDate: "+1d", endDate:"+" + App.serverConfig.auctionMaxDays + "d", daysOfWeekDisabled: [0], beforeShowDay: function(date) {
1189                                                 if (date.getDay() == 6 && !App.openDays[App.Util.formatDate(date, 'yyyy-mm-dd')])
1190                                                 {
1191                                                         return false;
1192                                                 }
1193                                                 for (var i = 0; i < _w.stockview.dates.length; i++)
1194                                                 {
1195                                                         if (_w.stockview.dates[i] == date.toDateString())
1196                                                         {
1197                                                                 return false;
1198                                                         }
1199                                                 }
1200                                                 return true;
1201                                         }},
1202                                         value : ''
1203                                 },
1204                                 'reservePrice' : {
1205                                         type  : 'input',
1206                                         id    : 'reservePrice',
1207                                         title : 'Reserve price',
1208                                         value : ''
1209                                 },
1210                                 'retailAmountRequired' : {
1211                                         type  : 'input',
1212                                         id    : 'retailAmountRequired',
1213                                         title : 'Minimum retail price',
1214                                         value : data.retailAmountRequired ? data.retailAmountRequired : ''
1215                                 },
1216                                 'print': {
1217                                         constructor: 'Button',
1218                                         items: {
1219                                                 Export: {
1220                                                         preset: 'Print',
1221                                                         id: 'printStockPdf',
1222                                                         handler: _w.stockview.printStockPdf
1223                                                 }
1224                                         }
1225                                 },
1226                 'printAuction': {
1227                     constructor: 'Button',
1228                     items: {
1229                         Export: {
1230                             preset: 'Print',
1231                             id: 'printStockAuctionPdf',
1232                             handler: _w.stockview.printStockAuctionPdf
1233                         }
1234                     }
1235                 },
1236                                 'complaint' : {
1237                                         type  : 'textarea-styled',
1238                                         id    : 'complaint',
1239                                         title : 'Complaint',
1240                                         value : '',
1241                                         areaStyle : 'span12',
1242                                         style : 'span10'
1243                                 },
1244
1245
1246                                 'dateCreatedPriceGuide': data.created,
1247                                 'loadedOnPriceGuide': data.loadedOnPriceGuide,
1248                                 'numberOfOffers': data.numberOfOffers,
1249                                 'highestOffer': 'R ' + data.highestOffer,
1250                                 'timesListed': data.timesListed,
1251                                 'highestBid': 'R ' + data.highestBid,
1252                                 'referenceNumber': data.referenceNumber,
1253                                 'jobState': ('Stock' == data.jobState || 'Trade Center' == data.jobState)
1254                         && data.auction
1255                         && (
1256                         data.auction.jobState == 'Undone'
1257                         || data.auction.jobState == 'Relist'
1258                         )
1259                                         ? 'Relist'
1260                                         : data.jobState,
1261
1262
1263
1264
1265                                 'tradePrice' : data.tradePrice ? 'R ' + data.tradePrice : 'R 0.00',
1266                                 'initialTradePrice' : 0.00 != data.oldTradePrice
1267                                         ? 'R ' + data.oldTradePrice + (data.oldTradePriceDate ? '<br/>' + data.oldTradePriceDate : '')
1268                                         : (data.tradePrice
1269                                                 ? 'R ' + data.tradePrice + (data.tradePriceDate ? '<br/>' + data.tradePriceDate : '')
1270                                                 : 'R 0.00'
1271                                         ),
1272                                 'updatedTradePrice' : 0.00 != data.oldTradePrice
1273                                         ? 'R ' + data.tradePrice + (data.tradePriceDate ? '<br/>' + data.tradePriceDate : '')
1274                                         : 'R 0.00',
1275                                 'retailPrice': data.retailPrice ? 'R ' + data.retailPrice : 'R 0.00',
1276
1277                 'listPrice' : data.listPrice ? 'R ' + data.listPrice : 'R 0.00',
1278
1279                         };
1280                 },
1281
1282                 printStockPdf : function()
1283                 {
1284                         App.API.getTask(
1285                                         'printStock:' + _w.stockview.itemId, 'Stock', 'Pdf.Print', _w.stockview.itemId,
1286                                         {}, function() {
1287                                                 App.API.execTask(
1288                                                                 'printStock:' + _w.stockview.itemId, {}, {},
1289                                                                 function () {}, _w.taskExecError,
1290                                                                 'EXPORT', true
1291                                                 );
1292                                         }, _w.taskContractError
1293                         );
1294                 },
1295         printStockAuctionPdf : function()
1296         {
1297             App.API.getTask(
1298                 'printStock:' + _w.stockview.itemId, 'Auction', 'Pdf.PrintPortal', _w.stockview.itemData.auction.id,
1299                 {}, function() {
1300                     App.API.execTask(
1301                         'printStock:' + _w.stockview.itemId, {}, {},
1302                         function () {}, _w.taskExecError,
1303                         'EXPORT', true
1304                     );
1305                 }, _w.taskContractError
1306             );
1307         },
1308                 loadHistoricalGrid : function( contract, data, options )
1309                 {
1310                         App.API.execTask(
1311                                         'gridStockHistory', {Grid:{Filter:{"PricingHistory.stockId":_w.stockview.itemId}}}, options,
1312                                         _w.stockview._onHistoryGridDataReceived, _w.taskExecError
1313                                         );
1314                 },
1315
1316                 _onHistoryGridDataReceived : function( response )
1317                 {
1318                         _w.stockview.gridStatus = 'Active';
1319                         _w.stockview.ti.hydrateParam('gridPricingHistoryRowRepeater', {});
1320                         var gridData = [];
1321
1322                         if (response.Data.DataSet.length == 0)
1323                         {
1324                                 $('#pricing_history_none_found').show();
1325                                 $('#PHColumnHeaders').hide();
1326                         }
1327                         else
1328                         {
1329                                 $('#pricing_history_none_found').hide();
1330                                 $('#PHColumnHeaders').show();
1331                         }
1332
1333                         for (var i = 0; i < response.Data.DataSet.length; i++)
1334                         {
1335                                 var row = response.Data.DataSet[i];
1336
1337                                 gridData.push({
1338                                         prepend: {
1339                                                 Trade                                   : 'R ',
1340                                                 TotalRecon                              : 'R ',
1341                                                 PriceguideOffer                 : 'R ',
1342                                                 AuctionWinningBid               : 'R '
1343                                         },
1344
1345                                         style: {
1346                                                 Date                                    : '',
1347                                                 Trade                                   : '',
1348                                                 TotalRecon                              : '',
1349                                                 km                                              : '',
1350                                                 PriceguideOffer                 : '',
1351                                                 AuctionWinningBid               : '',
1352
1353
1354                                         },
1355                                         items: {
1356
1357
1358                                                 'Date'                          : row.date,
1359                                                 'Trade'                         : row.trade,
1360                                                 'TotalRecon'            : row.totalRecon,
1361                                                 'KM'                            : row.km,
1362                                                 'PriceguideOffer'       : row.pricegOffer,
1363                                                 'AuctionWinningBid' : row.auctionWinningBid,
1364
1365                                 }
1366                                 });
1367                         }
1368                         _w.stockview.ti.hydrateParam('gridPricingHistoryRowRepeater', {
1369                                 constructor : 'GridDataRow',
1370                                 items       : gridData
1371                         });
1372                         //response.Data.Meta.bind = _w.stockview.pageStockGrid;
1373                 },
1374
1375                 _listMakesModelsTypes : function( callback )
1376                 {
1377
1378
1379                         if (!_w.stockview.itemData.vehicleYear)
1380                         {
1381                                 return;
1382                         }
1383                         if (_w.stockview.itemData.type
1384                                         && _w.stockview.itemData.type.category
1385                                         && _w.stockview.itemData.type.category.id)
1386                         {
1387                                 App.DataStore.loadSelectListData(
1388                                                 'makes', false, 'Stock', 'Utility.ListMakes', null,
1389                                                 {"Filter": {
1390                                                         "category" : _w.stockview.itemData.type.category.id,
1391                                                         "year" : _w.stockview.itemData.vehicleYear
1392                                                         }}, {}, $.proxy(function(categoryId)
1393                                                         {
1394                                                                 if (8 == categoryId)
1395                                                                 {
1396                                                                         var data = App.DataStore.getData('makes');
1397                                                                         data.unshift({
1398                                                                                 value: -1,
1399                                                                                 label: 'Custom'
1400                                                                         });
1401                                                                         App.DataStore.setData('makes', data);
1402                                                                 }
1403                                                         }, this, _w.stockview.itemData.type.category.id)
1404                                                 );
1405                                 if (_w.stockview.itemData.type
1406                                                 && _w.stockview.itemData.type.model
1407                                                 && _w.stockview.itemData.type.model.make
1408                                                 && _w.stockview.itemData.type.model.make.id)
1409                                 {
1410                                         App.DataStore.loadSelectListData(
1411                                                         'models', false, 'Stock', 'Utility.ListModels', null,
1412                                                         {"Filter": {
1413                                                                 "make" : _w.stockview.itemData.type.model.make.id,
1414                                                                 "category" : _w.stockview.itemData.type.category.id,
1415                                                                 "year" : _w.stockview.itemData.vehicleYear
1416                                                                 }}, {}, $.proxy(function(categoryId)
1417                                                                 {
1418                                                                         if (8 == categoryId)
1419                                                                         {
1420                                                                                 var data = App.DataStore.getData('models');
1421                                                                                 data.unshift({
1422                                                                                         value: -1,
1423                                                                                         label: 'Custom'
1424                                                                                 });
1425                                                                                 App.DataStore.setData('models', data);
1426                                                                         }
1427                                                                 }, this, _w.stockview.itemData.type.category.id)
1428                                                         );
1429                                         if (_w.stockview.itemData.type.model.id)
1430                                         {
1431                                                 App.DataStore.loadSelectListData(
1432                                                                 'types', false, 'Stock', 'Utility.ListTypes', null,
1433                                                                 {"Filter": {
1434                                                                         "model" : _w.stockview.itemData.type.model.id,
1435                                                                         "category" : _w.stockview.itemData.type.category.id,
1436                                                                         "year" : _w.stockview.itemData.vehicleYear
1437                                                                         }}, {}, $.proxy(function(categoryId, callback)
1438                                                                         {
1439                                                                                 if (8 == categoryId)
1440                                                                                 {
1441                                                                                         var data = App.DataStore.getData('types');
1442                                                                                         data.unshift({
1443                                                                                                 value: -1,
1444                                                                                                 label: 'Custom'
1445                                                                                         });
1446                                                                                         App.DataStore.setData('types', data);
1447                                                                                 }
1448                                                                                 if (callback)
1449                                                                                 {
1450                                                                                         callback();
1451                                                                                 }
1452                                                                         }, this, _w.stockview.itemData.type.category.id, callback)
1453                                                                 );
1454                                         }
1455                                 }
1456                         }
1457                 },
1458
1459                 _onDataAndTemplate : function ()
1460                 {
1461                         _w.stockview.relistReservePrice = _w.stockview.itemData.auction
1462                                                                                                 && _w.stockview.itemData.auction.reservePrice
1463                                 ? _w.stockview.itemData.auction.reservePrice
1464                                 : '';
1465                         $('#reservePrice').val(_w.stockview.relistReservePrice);
1466                         if (!_w.stockview.newItem)
1467                         {
1468                                 App.DataStore.loadSelectListData(
1469                                                         'tuhpi', false, 'Stock', 'Tuhpi.List', null,{"Filter":
1470                                                                 {
1471                                                                         "stock"                 : _w.stockview.itemId,
1472                                                                         "company"               : App.companyData.id
1473
1474                                                                 }}, {},function() {
1475                                                                  // data is retrieved
1476                                                                  var tuHpiData = App.DataStore.getData('tuhpi');
1477
1478                                 _w.stockview._loadHpiReportData(tuHpiData);
1479
1480                                                                  //for (var i = 0; i < tuHpiData.length; i++)
1481                                                                         //{
1482                                                                         //      var tuHpiId = tuHpiData[i].id
1483                                                                         //      var tuHpiCreated = tuHpiData[i].created
1484                                                                         //      //created
1485                                  //
1486                                                                         //      if (tuHpiId)
1487                                                                         //      {
1488                                                                         //              $('#tuhpiDate').html(tuHpiCreated);
1489                                                                         //              $('#downloadTuhpi').show();
1490                                                                         //              $('#HPIbtnConfirm').prop('disabled', false);
1491                                                                         //              return;
1492                                                                         //      }
1493                                                                         //      else
1494                                                                         //      {
1495                                                                         //              $('#tuhpiDate').html('Not Requested Yet');
1496                                                                         //              $('#downloadTuhpi').hide();
1497                                                                         //              $('#HPIbtnConfirm').prop('disabled', false);
1498                                                                         //      }
1499                                                                         //}
1500                                 });
1501                                 if ('Sold' == _w.stockview.itemData.jobState
1502                                         && true == _w.stockview.itemData.auction.Within30DaysOfEnd
1503                                         && App.companyData.id == _w.stockview.itemData.auction.company)
1504                                 {
1505                                         $('#btnDispute').show();
1506                                         $('#btnLogDispute').click(function() {
1507                                                 var comp = $('#complaint').val();
1508                                                 if ('' == comp)
1509                                                 {
1510                                                         alert('Please specify the complaint.');
1511                                                         return;
1512                                                 }
1513                                                 var data = {
1514                                                                 Dispute : {
1515                                                                         againstCompany : _w.stockview.itemData.auction.soldToCompany,
1516                                                                         auction        : _w.stockview.itemData.auction.id,
1517                                                                         complaint      : comp
1518                                                                 }
1519                                                 };
1520                                                 App.API.getTask(
1521                                                                 'createDispute', 'Dispute', 'Dispute.Create',
1522                                                                 null, {}, function(){
1523                                                                         App.API.execTask(
1524                                                                                         'createDispute', data, {},
1525                                                                                         function() {
1526                                                                                                 alert('Dispute logged.');
1527                                                                                                 $('#dropDsp').slideToggle();
1528                                                                                         }, function() {}
1529                                                                         );
1530                                                                 }, _w.taskContractError
1531                                                         );
1532                                         });
1533                                 }
1534                         }
1535
1536                         $('#endDate').prop('readonly', true);
1537
1538                         var total = 0.00;
1539                         $.each($.find('.rand-input'), function(i, input) {
1540                                 total += parseFloat($(input).val());
1541                         });
1542                         $('#' + _w.stockview.ti.tid + '_damageTotal').html('R ' + total);
1543                         $('#' + _w.stockview.ti.tid + '_initialTradePrice').val($('#' + _w.stockview.ti.tid + '_tradePrice').html());
1544                         $('#' + _w.stockview.ti.tid + '_updatedTradePrice').val(_w.stockview.itemData.tradePrice);
1545                         $('#retailPrice').val(_w.stockview.itemData.retailPrice);
1546                         $('#tradePrice').val(_w.stockview.itemData.tradePrice);
1547             $('#listPrice').val(_w.stockview.itemData.listPrice);
1548                         if ('Archived' == _w.stockview.itemData.jobState)
1549                         {
1550                                 true == App.permissions.stockUnarchive ? $('#btnUnarchive').show() : $('#btnUnarchive').hide();
1551                         }
1552                         if ('Retail' == _w.stockview.itemData.jobState)
1553                         {
1554                                 true == App.permissions.stockReclaimRetail ? $('#btnReclaimFromRetail').show() : $('#btnReclaimFromRetail').hide();
1555                         }
1556
1557                         /*
1558                          * Permissions
1559                          */
1560                         if ('Stock' == _w.stockview.itemData.jobState || _w.stockview.newItem)
1561                         {
1562                                 true == App.permissions.stockUpdate ? $('#btnUpdate').show() : $('#btnUpdate').hide();
1563                                 true == App.permissions.stockRouteRetail && !_w.stockview.newItem ? $('#optSendToRetail').show() : $('#optSendToRetail').hide();
1564                                 true == App.permissions.stockRoutePriceguide ? $('#optSendToPg').show() : $('#optSendToPg').hide();
1565                                 if (true == App.permissions.stockRouteAuction)
1566                                 {
1567                                         App.companyData.tC
1568                                                 ? $('#btnSendToTc').show()
1569                                                 : $('#optSendToAction').show();
1570                                         if (_w.stockview.newItem)
1571                                         {
1572                                                 $('#btnSendToTc').hide();
1573                                         }
1574                                 }
1575                                 else
1576                                 {
1577                                         $('#optSendToAction').hide();
1578                                 }
1579                                 true == App.permissions.stockArchive ? $('#btnArchive').show() : $('#btnArchive').hide();
1580                         }
1581                         if ('Auction' == _w.stockview.itemData.jobState)
1582                         {
1583                                 (true == App.permissions.stockUpdate && "0.00" == _w.stockview.itemData.highestBid) ? $('#btnUpdate').show() : $('#btnUpdate').hide();
1584                                 $('#btnSendToTc').hide();
1585                                 $('#optSendToAction').hide();
1586                                 $('#optSendToRetail').hide();
1587                                 $('#optSendToPg').hide();
1588                                 $('#btnArchive').hide();
1589                         }
1590             if ('Relist' == _w.stockview.itemData.jobState)
1591             {
1592                 (true == App.permissions.stockUpdate && "0.00" == _w.stockview.itemData.highestBid) ? $('#btnUpdate').show() : $('#btnUpdate').hide();
1593                 $('#btnSendToTc').hide();
1594                 $('#optSendToAction').hide();
1595                 $('#optSendToRetail').hide();
1596                 $('#optSendToPg').hide();
1597                 $('#btnArchive').show();
1598             }
1599
1600                         true == App.permissions.stockPrint ? $('#printStockPdf').show() : $('#printStockPdf').hide();
1601                         true == App.permissions.stockB4cReport ? $('#btnB4cAccidentReport').show() : $('#btnB4cAccidentReport').hide();
1602                         true == App.permissions.stockBmw ? $('#btnBwmAccidentReport').show() : $('#btnBwmAccidentReport').hide();
1603
1604                         if (!App.permissions.pgPage && !App.permissions.auctionPag)
1605                         {
1606                                 $('.pg-a-data-wrapper').hide();
1607                         }
1608                         if (true == App.permissions.pgPage) { $('.price-guide-info').show(); };
1609                         if (true == App.permissions.auctionPage) { $('.auction-info').show(); };
1610
1611                         if (App.permissions.settingsHpiReport == false)
1612                         {
1613                                 $('#requestHPIreport').hide();
1614                 $('#requestHPIAccidentReport').hide();
1615                         }
1616
1617                         if (_w.stockview.newItem)
1618                         {
1619                                 $('.info-block').hide();
1620                                 $('#optSendToPg').hide();
1621                                 $('#printStockPdf').hide();
1622                                 $('#btnArchive').hide();
1623
1624                                 //HPI Report Hide on New
1625                                 $('#requestHPIreport').hide();
1626                 $('#requestHPIAccidentReport').hide();
1627                                 $('.hpiReport').hide();
1628                         }
1629                         else
1630                         {
1631                                 if (App.permissions.settingsHpiReport)
1632                                 {
1633                                         $('#requestHPIreport').show();
1634                     $('#requestHPIAccidentReport').show();
1635                                 }
1636                                 if (null == App.API.taskContract('gridStockHistory'))
1637                                 {
1638                                         App.API.getTask(
1639                                                         'gridStockHistory', 'Stock', 'PricingHistory.Grid', null,
1640                                                         {}, _w.stockview.loadHistoricalGrid, _w.taskContractError
1641                                                         );
1642                                         $('#pricing_history_none_found').hide();
1643                                         $('#PHColumnHeaders').hide();
1644                                 }
1645                                 else
1646                                 {
1647                                         _w.stockview.loadHistoricalGrid( null, {}, {} );
1648                                 }
1649                         }
1650
1651             if ('Sold' == _w.stockview.itemData.jobState)
1652             {
1653                 $('.printStockPdf').addClass('hide');
1654                 $('.printStockAuctionPdf').removeClass('hide');
1655             }
1656
1657                         _w.stockview._setupValidation();
1658                 },
1659
1660                 _onStockViewDataReceived : function( response )
1661                 {
1662                         _w.stockview.itemId = response.Data.id;
1663                         _w.stockview.itemData = response.Data;
1664                         _w.stockview._listMakesModelsTypes();
1665                         _w.stockview.setStockViewFormMeta(response.Data);
1666                         _w.stockview.ti.hydrate(_w.stockview.formMeta);
1667                         if (_w.stockview.ti.published)
1668                         {
1669                                 _w.stockview._onDataAndTemplate();
1670                         }
1671                         App.DataStore.loadSelectListGroup([
1672                {dataId: 'years', isStatic: true, workspace: 'Stock', task: 'Year.SelectList'},
1673                {dataId: 'categories', isStatic: true, workspace: 'Stock', task: 'Category.SelectList'},
1674                {dataId: 'conditions', isStatic: true, workspace: 'Stock', task: 'Condition.SelectList'},
1675                {dataId: 'exteriorColours', isStatic: true, workspace: 'Stock', task: 'ExteriorColour.SelectList'},
1676                {dataId: 'interiorColours', isStatic: true, workspace: 'Stock', task: 'InteriorColour.SelectList'},
1677                {dataId: 'upholsteries', isStatic: true, workspace: 'Stock', task: 'Upholstery.SelectList'},
1678                {dataId: 'papers', isStatic: true, workspace: 'Stock', task: 'Paper.SelectList'},
1679                {dataId: 'natis', isStatic: true, workspace: 'Stock', task: 'Natis.SelectList'},
1680                {dataId: 'fsh', isStatic: true, workspace: 'Stock', task: 'FullServiceHistory.SelectList'},
1681                {dataId: 'fuelTypes', isStatic: true, workspace: 'Stock', task: 'FuelType.SelectList'},
1682                {dataId: 'transmissionTypes', isStatic: true, workspace: 'Stock', task: 'TransmissionType.SelectList'},
1683                {dataId: 'damages', isStatic: true, workspace: 'Stock', task: 'Damage.SelectList'},
1684                {dataId: 'accessories', isStatic: true, workspace: 'Stock', task: 'Accessory.SelectList'},
1685                {dataId: 'clubs', isStatic: true, workspace: 'PriceGuide', task: 'Club.SelectList'}
1686             ]);
1687                 },
1688
1689                 _setupValidation : function ()
1690                 {
1691                         App.DataStore.listen('regValidation', 'damages', function(id, damages) {
1692                                 var rules = {
1693                                         mainImage: "required",
1694                                         vehicleYear: "required",
1695                                         vehicleCategory: "required",
1696
1697                                         //category
1698
1699                                         vehicleMake: { required: function(){
1700                                                 return $('#vehicleMake').parent().css('display') != 'none';
1701                                         } },
1702                                         vehicleModel: { required: function(){
1703                                                 return $('#vehicleModel').parent().css('display') != 'none';
1704                                         } },
1705                                         vehicleType: { required: function(){
1706                                                 return $('#vehicleType').parent().css('display') != 'none';
1707                                         } },
1708
1709                                         stockNumber: "required",
1710
1711                                         vehicleMakeManual: { required: function(){
1712                                                 return $('#vehicleMakeManual').parent().parent().css('display') != 'none';
1713                                         } },
1714                                         vehicleModelManual: { required: function(){
1715                                                 return $('#vehicleModelManual').parent().parent().css('display') != 'none';
1716                                         } },
1717                                         vehicleTypeManual: { required: function(){
1718                                                 return $('#vehicleTypeManual').parent().parent().css('display') != 'none';
1719                                         } },
1720
1721                                         vehicleFuelType: "required",
1722                                         vehicleTransmissionType: "required",
1723                                         registrationNumber: "required",
1724                                         km: { required: true, digits: true }
1725                                 };
1726                                 for (var i = 0; i < damages.length; i++)
1727                                 {
1728                                         rules['damage' + damages[i].value + 'Amount'] = {number: true};
1729                                 }
1730
1731                                 $('#frmStockView').validate({
1732                                         "rules": rules,
1733                                         messages: {
1734                                                 mainImage : "This field is required.",
1735                                                 vehicleYear : "This field is required.",
1736                                                 vehicleCategory : "This field is required.",
1737                                                 vehicleMake : "This field is required.",
1738                                                 vehicleModel : "This field is required.",
1739                                                 stockNumber : "This field is required.",
1740                                                 vehicleType : "This field is required.",
1741
1742                                                 vehicleMakeManual : "This field is required.",
1743                                                 vehicleModelManual : "This field is required.",
1744                                                 vehicleTypeManual : "This field is required.",
1745
1746                                                 vehicleFuelType : "This field is required.",
1747                                                 vehicleTransmissionType : "This field is required.",
1748                                                 registrationNumber : "This field is required.",
1749                                                 km : {required: "This field is required."}
1750                                         },
1751                                         invalidHandler: function(event, validator) {
1752                                             var errors = validator.numberOfInvalids();
1753                                             if (0 < _w.stockview.validations && errors)
1754                                             {
1755                                                       var message = errors == 1
1756                                                         ? 'You missed 1 field. It has been highlighted'
1757                                                         : 'You missed ' + errors + ' fields. They have been highlighted';
1758                                                       alert(message);
1759                                                 }
1760                                             _w.stockview.validations++;
1761                                         },
1762                                         submitHandler: function( form ) {
1763                                                 $('#btnUpdate').prop('disabled', true);
1764                                                 var data = _w.stockview._prepStockUpdateData();
1765                                                 if (_w.stockview.newItem)
1766                                                 {
1767                                                         App.API.execTask(
1768                                                                         'createStock', {"Stock":data}, {},
1769                                                                         _w.stockview._onStockUpdated, _w.taskExecError
1770                                                                         );
1771                                                 }
1772                                                 else
1773                                                 {
1774                                                         App.API.execTask(
1775                                                                         'updateStock:' + _w.stockview.itemId, {"Stock":data}, {},
1776                                                                         _w.stockview._onStockUpdated, _w.taskExecError
1777                                                                         );
1778                                                 }
1779                                         }
1780                                 });
1781                                 $('#btnUpdate').prop('disabled', false);
1782
1783                                 try {
1784                                         _w.stockview.validations = 0;
1785                                         $('#frmStockView').valid();
1786                                 } catch(err) {}
1787                                 $('label.error').remove();
1788                                 $('.valid').removeClass('valid');
1789                         });
1790                 },
1791
1792                 _onTuTcUpdateReady : function ()
1793                 {
1794                         App.API.execTask(
1795                                         'TransUnionFromMmCode', {
1796                                                 Filter : {
1797                                                         vehicleYear : parseInt($('#vehicleYear').val()),
1798                                                         type : parseInt($('#vehicleType').val()),
1799                                                         stockId : _w.stockview.itemId
1800                                                 }
1801                                 }, {},
1802                                 _w.stockview._onTuTcUpdateReceived, function(){}
1803                         );
1804                 },
1805
1806                 _onTuTcUpdateReceived : function ( response )
1807                 {
1808                         if ('Success' != response.Data.Status)
1809                         {
1810                                 App.API.execTask(
1811                                                 'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
1812                                                 function () {
1813                                                         App.API.directRoute(
1814                                                                         'tcStock:' + _w.stockview.itemId,
1815                                                                         'Stock', 'Stock.SendToTradeCenter', _w.stockview.itemId, {},
1816                                                                         _w.stockview._onStockUpdated, _w.taskExecError
1817                                                                         );
1818                                                 }, _w.taskExecError
1819                                 );
1820                                 return;
1821                         }
1822                         var vals = response.Data.VehicleDetails[0].Value;
1823                         $('#retailPrice').val(vals.RetailPrice);
1824                         $('#tradePrice').val(vals.TradePrice);
1825             $('#listPrice').val(vals.NewPrice);
1826                         $('#' + _w.stockview.ti.tid + '_retailPrice').html('R ' + vals.RetailPrice + '.00');
1827                         $('#' + _w.stockview.ti.tid + '_tradePrice').html('R ' + vals.TradePrice + '.00');
1828             $('#' + _w.stockview.ti.tid + '_listPrice').html('R ' + vals.NewPrice + '.00');
1829                         App.API.execTask(
1830                                         'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
1831                                         function () {
1832                                                 App.API.directRoute(
1833                                                                 'tcStock:' + _w.stockview.itemId,
1834                                                                 'Stock', 'Stock.SendToTradeCenter', _w.stockview.itemId, {},
1835                                                                 _w.stockview._onStockUpdated, _w.taskExecError
1836                                                                 );
1837                                         }, _w.taskExecError
1838                         );
1839                 },
1840
1841                 _onTuUpdateReady : function ()
1842                 {
1843                         App.API.execTask(
1844                                         'TransUnionFromMmCode', {
1845                                                 Filter : {
1846                                                         vehicleYear : parseInt($('#vehicleYear').val()),
1847                                                         type : parseInt($('#vehicleType').val()),
1848                                                         stockId : _w.stockview.itemId
1849                                                 }
1850                                 }, {},
1851                                 _w.stockview._onTuUpdateReceived, function(){}
1852                         );
1853                 },
1854
1855                 _onTuUpdateReceived : function ( response )
1856                 {
1857                         if ('Success' != response.Data.Status)
1858                         {
1859                                 App.API.execTask(
1860                                                 'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
1861                                                 function () {
1862                                                         App.API.getRoute(
1863                                                                         'sendToAuction:' + _w.stockview.itemId, 'Stock', 'Stock.SendToAuction', _w.stockview.itemId,
1864                                                                         {}, function() {
1865                                                                                 var endDate = $('#endDate').val();
1866                                                                                 var reservePrice = $('#reservePrice').val();
1867                                                                                 App.API.execRoute(
1868                                                                                                 'sendToAuction:' + _w.stockview.itemId, {Context: {endDate: endDate, reservePrice: reservePrice}}, {},
1869                                                                                                 _w.stockview._onStockUpdated, _w.taskExecError
1870                                                                                 );
1871                                                                         }, _w.taskContractError
1872                                                         );
1873                                                 }, _w.taskExecError
1874                                 );
1875                                 return;
1876                         }
1877                         var vals = response.Data.VehicleDetails[0].Value;
1878                         $('#retailPrice').val(vals.RetailPrice);
1879                         $('#tradePrice').val(vals.TradePrice);
1880             $('#listPrice').val(vals.NewPrice);
1881                         $('#' + _w.stockview.ti.tid + '_retailPrice').html('R ' + vals.RetailPrice + '.00');
1882                         $('#' + _w.stockview.ti.tid + '_tradePrice').html('R ' + vals.TradePrice + '.00');
1883             $('#' + _w.stockview.ti.tid + '_listPrice').html('R ' + vals.NewPrice + '.00');
1884                         App.API.execTask(
1885                                         'updateStock:' + _w.stockview.itemId, {"Stock":_w.stockview._prepStockUpdateData()}, {},
1886                                         function () {
1887                                                 App.API.getRoute(
1888                                                                 'sendToAuction:' + _w.stockview.itemId, 'Stock', 'Stock.SendToAuction', _w.stockview.itemId,
1889                                                                 {}, function() {
1890                                                                         var endDate = $('#endDate').val();
1891                                                                         var reservePrice = $('#reservePrice').val();
1892                                                                         App.API.execRoute(
1893                                                                                         'sendToAuction:' + _w.stockview.itemId, {Context: {endDate: endDate, reservePrice: reservePrice}}, {},
1894                                                                                         _w.stockview._onStockUpdated, _w.taskExecError
1895                                                                         );
1896                                                                 }, _w.taskContractError
1897                                                 );
1898                                         }, _w.taskExecError
1899                         );
1900                 },
1901
1902                 _onTuReady : function ()
1903                 {
1904                         App.API.execTask(
1905                                         'TransUnionFromMmCode', {
1906                                                 Filter : {
1907                                                         vehicleYear : parseInt($('#vehicleYear').val()),
1908                                                         type : parseInt($('#vehicleType').val())
1909                                                 }
1910                                 }, {},
1911                                 _w.stockview._onTuReceived, function(){alert('There were no trade and retail from TransUnion');}
1912                         );
1913                 },
1914
1915                 _onTuReceived : function ( response )
1916                 {
1917                         if ('Success' != response.Data.Status)
1918                         {
1919                                 if ('No Results From TransUnion' == response.Data.Status || 'No Values From TransUnion' == response.Data.Status) {
1920                                         //write zero values for transunion failed
1921                                         var vals = 0.00;
1922                                         $('#retailPrice').val(vals);
1923                                         $('#tradePrice').val(vals);
1924                                         $('#listPrice').val(vals);
1925                                         $('#' + _w.stockview.ti.tid + '_retailPrice').html(vals);
1926                                         $('#' + _w.stockview.ti.tid + '_tradePrice').html(vals);
1927                                         $('#' + _w.stockview.ti.tid + '_listPrice').html(vals);
1928                                 }
1929                                 alert(response.Data.Status);
1930                                 return;
1931                         }
1932                         var vals = response.Data.VehicleDetails[0].Value;
1933                         $('#retailPrice').val(vals.RetailPrice);
1934                         $('#tradePrice').val(vals.TradePrice);
1935             $('#listPrice').val(vals.NewPrice);
1936                         $('#' + _w.stockview.ti.tid + '_retailPrice').html('R ' + vals.RetailPrice + '.00');
1937                         $('#' + _w.stockview.ti.tid + '_tradePrice').html('R ' + vals.TradePrice + '.00');
1938             $('#' + _w.stockview.ti.tid + '_listPrice').html('R ' + vals.NewPrice + '.00');
1939                 },
1940
1941                 _prepStockUpdateData : function()
1942                 {
1943                         var data = _w.stockview.ti.harvest();
1944                         data.km = '' == data.km
1945                                 ? 0
1946                                 : parseInt(data.km);
1947                         var retailPrice = $('#retailPrice').val();
1948                         var tradePrice  = $('#tradePrice').val();
1949             var listPrice  = $('#listPrice').val();
1950                         var retailAmountRequired  = $('#retailAmountRequired').val();
1951                         data.retailPrice = ('' == retailPrice)
1952                                 ? 0.00
1953                                 : parseFloat(retailPrice);
1954                         data.tradePrice = ('' == tradePrice)
1955                                 ? 0.00
1956                                 : parseFloat(tradePrice);
1957             data.listPrice = ('' == listPrice)
1958                 ? 0.00
1959                 : parseFloat(listPrice);
1960                         data.retailAmountRequired = ('' == retailAmountRequired)
1961                                 ? 0.00
1962                                 : parseFloat(retailAmountRequired);
1963                         delete data.damageTotal;
1964                         if (-1 == data.make)
1965                         {
1966                                 delete data.make;
1967                                 delete data.model;
1968                                 delete data.type;
1969                         }
1970                         if (-1 == data.model)
1971                         {
1972                                 delete data.model;
1973                                 delete data.type;
1974                         }
1975                         if (-1 == data.type)
1976                         {
1977                                 delete data.type;
1978                         }
1979                         if ('' == data.mainImage)
1980                         {
1981                                 delete data.mainImage;
1982                         }
1983                         if ('' == data.leftImage)
1984                         {
1985                                 delete data.leftImage;
1986                         }
1987                         if ('' == data.backImage)
1988                         {
1989                                 delete data.backImage;
1990                         }
1991                         if ('' == data.engineImage)
1992                         {
1993                                 delete data.engineImage;
1994                         }
1995                         if ('' == data.frontImage)
1996                         {
1997                                 delete data.frontImage;
1998                         }
1999                         if ('' == data.rightImage)
2000                         {
2001                                 delete data.rightImage;
2002                         }
2003                         if ('' == data.interiorImage)
2004                         {
2005                                 delete data.interiorImage;
2006                         }
2007                         if ('' == data.natisImage)
2008                         {
2009                                 delete data.natisImage;
2010                         }
2011                         delete data.clubs;
2012                         return data;
2013                 },
2014
2015                 _onStockUpdated : function( response )
2016                 {
2017                         window.location.hash = '/stock';
2018                 },
2019         _onHpiDownloadButtonClick: function (event)
2020         {
2021             //console.log('event.currentTarget.dataset',event.currentTarget.dataset);
2022
2023             var hpiType = event.currentTarget.dataset.value;
2024             var hpiId = event.currentTarget.dataset.id;
2025
2026             //console.log('hpiId',hpiId);
2027             //console.log('hpiType',hpiType);
2028
2029             if('ACC' == hpiType)
2030             {
2031                 App.API.getTask(
2032                     'printTuhpiAccident:' + _w.stockview.itemId, 'Stock', 'Tuhpi.PrintAccident', _w.stockview.itemId,
2033                     {'PdfTemplate':{'recordId':hpiId}}, function () {
2034                         App.API.execTask(
2035                             'printTuhpiAccident:' + _w.stockview.itemId, {}, {},
2036                             function () {
2037                             }, _w.taskExecError,
2038                             'EXPORT', true
2039                         );
2040                     }, _w.taskContractError
2041                 );
2042             }
2043             else
2044             {
2045                 App.API.getTask(
2046                     'printTuhpi:' + _w.stockview.itemId, 'Stock', 'Tuhpi.Print', _w.stockview.itemId,
2047                     {'PdfTemplate':{'recordId':hpiId}}, function () {
2048                         App.API.execTask(
2049                             'printTuhpi:' + _w.stockview.itemId, {}, {},
2050                             function () {
2051                             }, _w.taskExecError,
2052                             'EXPORT', true
2053                         );
2054                     }, _w.taskContractError
2055                 );
2056
2057             }
2058
2059         },
2060         _loadHpiReportData: function (hpiData) {
2061             var tuHpiData = hpiData;
2062
2063             if (0 < tuHpiData.length) {
2064                 $('#HPIreportData').html('');
2065                 var tuHpiId = '';
2066                 var tuHpiCreated = '';
2067                 var tuHpiType = '';
2068                 var tuHpiButtonType = '';
2069             }
2070
2071             for (var i = 0; i < tuHpiData.length; i++) {
2072                 if (3 > i) {
2073
2074                     tuHpiId = tuHpiData[i].id;
2075                     tuHpiCreated = tuHpiData[i].created;
2076                     tuHpiType = tuHpiData[i].hpi_type;
2077                     tuHpiButtonType = tuHpiData[i].hpi_type;
2078
2079                     var hpiDataHtml = '<div class="control-group mobile-control-group row-fluid" style="display: block;border:1px solid #d3d3d3;" id="' + i + '">'
2080                         + '<div class="control-group mobile-control-group span4" style="padding-left:10px; padding-top:13px;">Last date requested:</div>'
2081                         + '<div class="control-group mobile-control-group span4" style="padding-left:10px;border-left:1px solid #d3d3d3; padding-top:13px;">'
2082                         + '<div id="tuhpiDate_' + i + '" class="span9">Not requested yet.</div>'
2083                         + '</div>'
2084                         + '<div class="control-group mobile-control-group span4" style="padding-left:10px;border-left:1px solid #d3d3d3; padding-top:13px;">'
2085                         + '<div id="tuhpiType_' + i + '" class="span8">Not requested yet.</div>'
2086                         + '<div class="span4">'
2087                         + '<button id="downloadTuhpi_' + tuHpiId + '" class="btn pull-right span12" data-id="' + tuHpiId + '" data-value="' + tuHpiButtonType + '" type="button" style="margin:-5px 0 0 0;">view</button>'
2088                         + '</div>'
2089                         + '</div>'
2090                         + '</div>';
2091
2092                     $('#HPIreportData').append(hpiDataHtml);
2093
2094                     if (tuHpiId) {
2095                         $('#tuhpiDate_' + i).html(tuHpiCreated);
2096                         $('#tuhpiType_' + i).html(tuHpiType);
2097                         $('#downloadTuhpi').show();
2098                         $('#HPIbtnConfirm').prop('disabled', false);
2099                     }
2100                     else {
2101                         $('#tuhpiDate_' + i).html('Not Requested Yet');
2102                         $('#tuhpiType_' + i).html('Not Requested Yet');
2103                         $('#downloadTuhpi').hide();
2104                     }
2105
2106
2107                     $('#downloadTuhpi_' + tuHpiId).click(function (event) {
2108                         _w.stockview._onHpiDownloadButtonClick(event);
2109                     });
2110
2111                 }
2112             }
2113         }
2114     };
2115
2116
2117 })();