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