3 window._w.tcstockview = {
14 onStockViewTemplateReady : function( template, event, eventData )
16 _w.tcstockview.ti = _t[template];
17 var phData = App.DataStore.getData('publicHolidays');
18 for (var i = 0; i < phData.length; i++)
20 var dateParts = phData[i].holiday.split('-').map(function(part){
21 return parseInt(part, 10);
23 var holiday = new Date(dateParts[0], dateParts[1]-1, dateParts[2]);
24 _w.tcstockview.dates.push(holiday.toDateString());
27 _w.tcstockview.limited = ('limitedstockview' == template || 'limitedtcstockview' == template)
30 App.DataStore.setData('sparekeys', [{"value":"1", "label":"Yes"}, {"value":"0", "label":"No"}]);
31 App.DataStore.loadSelectListData('years', true, 'Stock', 'Year.SelectList');
32 App.DataStore.loadSelectListData('categories', true, 'Stock', 'Category.SelectList');
33 App.DataStore.loadSelectListData('conditions', true, 'Stock', 'Condition.SelectList');
34 App.DataStore.loadSelectListData('exteriorColours', true, 'Stock', 'ExteriorColour.SelectList');
35 App.DataStore.loadSelectListData('interiorColours', true, 'Stock', 'InteriorColour.SelectList');
36 App.DataStore.loadSelectListData('upholsteries', true, 'Stock', 'Upholstery.SelectList');
37 App.DataStore.loadSelectListData('papers', true, 'Stock', 'Paper.SelectList');
38 App.DataStore.loadSelectListData('natis', true, 'Stock', 'Natis.SelectList');
39 App.DataStore.loadSelectListData('fsh', true, 'Stock', 'FullServiceHistory.SelectList');
40 App.DataStore.loadSelectListData('fuelTypes', true, 'Stock', 'FuelType.SelectList');
41 App.DataStore.loadSelectListData('transmissionTypes', true, 'Stock', 'TransmissionType.SelectList');
42 App.DataStore.loadSelectListData('damages', true, 'Stock', 'Damage.SelectList');
43 App.DataStore.loadSelectListData('accessories', true, 'Stock', 'Accessory.SelectList');
44 App.DataStore.loadSelectListData('clubs', true, 'PriceGuide', 'Club.SelectList');
46 _w.tcstockview.setStockViewFormMeta();
47 _w.tcstockview.ti.hydrate(_w.tcstockview.formMeta);
48 // Retrieve initial view data.
49 _w.tcstockview.itemId = App.Util.getUrlParam('id');
51 if (0 == _w.tcstockview.itemId || null == _w.tcstockview.itemId)
53 _w.tcstockview.newItem = true;
54 _w.tcstockview.itemData = {
70 'createStock', 'Stock', 'Stock.Create',
71 null, {}, function(){}, _w.taskContractError
74 'createStockAuction', 'Stock', 'Stock.CreateAuction',
75 null, {}, function(){}, _w.taskContractError
80 _w.tcstockview.newItem = false;
81 var task = _w.tcstockview.limited
82 ? 'Stock.LimitedUpdate'
85 'updateStock:' + _w.tcstockview.itemId, 'Stock', task, _w.tcstockview.itemId,
86 {}, $.proxy( _w.tcstockview._onStockViewDataReceived, this ), _w.taskContractError
91 onStockViewPublished : function( template, event, eventData )
93 _w.tcstockview.limited = ('limitedstockview' == template)
97 $('#btn_mainImage').change(function () {
98 if ('' == $('#mainImage').val())
100 $('#img_mainImage').addClass('error');
101 $('#img_mainImage').removeClass('valid');
105 $('#img_mainImage').removeClass('error');
106 $('#img_mainImage').addClass('valid');
110 $('#btnFetchTu').click(function () {
111 if (!$('#vehicleYear').val()
112 || !$('#vehicleType').val())
114 alert('Vehicle year and type is required to fetch Trade and Retail pricing.');
118 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
119 {}, _w.tcstockview._onTuReady, _w.taskContractError
122 $('#btnUpdate').prop('disabled', true);
123 $('#btnArchive').click(function () {
125 'archiveStock:' + _w.tcstockview.itemId,
126 'Stock', 'Stock.MoveToArchive', _w.tcstockview.itemId, {},
127 _w.tcstockview._onStockUpdated, _w.taskExecError
130 $('#btnUnarchive').click(function () {
132 'unarchiveStock:' + _w.tcstockview.itemId,
133 'Stock', 'Stock.MoveToStock', _w.tcstockview.itemId, {},
134 _w.tcstockview._onStockUpdated, _w.taskExecError
137 App.Util.updateCheckboxStyle($('#acceptPgHPIdisclaimer'));
138 $('#btnSendToPg').click(function () {
139 var clubs = $('#clubs').val();
142 alert('Please select at least one club.');
145 if (!$('#acceptPgHPIdisclaimer').is(':checked'))
147 alert('Please accept the conditions before sending.');
150 if ('' == $('#registrationNumber').val())
152 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
153 $('#registrationNumber').addClass('error');
154 $('#registrationNumber').removeClass('valid');
159 $('#registrationNumber').removeClass('error');
160 $('#registrationNumber').addClass('valid');
162 if ('' == $('#vinNumber').val())
164 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
165 $('#vinNumber').addClass('error');
166 $('#vinNumber').removeClass('valid');
171 $('#vinNumber').removeClass('error');
172 $('#vinNumber').addClass('valid');
174 if ('' == $('#engineNumber').val())
176 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to price guide.');
177 $('#engineNumber').addClass('error');
178 $('#engineNumber').removeClass('valid');
183 $('#engineNumber').removeClass('error');
184 $('#engineNumber').addClass('valid');
186 if (!$('#frmStockView').valid())
190 $('#btnSendToPg').prop('disabled', true);
192 'updateStock:' + _w.tcstockview.itemId, {"Stock":_w.tcstockview._prepStockUpdateData()}, {},
195 'sendToPg:' + _w.tcstockview.itemId, 'Stock', 'Stock.SendToPriceGuide', _w.tcstockview.itemId,
197 var clubList = $('#clubs').val();
199 for (var i = 0; i < clubList.length; i++)
201 clubs.push({id: clubList[i]});
204 'sendToPg:' + _w.tcstockview.itemId, {Context: {clubs: clubs}}, {},
205 _w.tcstockview._onStockUpdated, _w.taskExecError
207 }, _w.taskContractError
212 $('#btnSendToDealer').click(function () {
213 if (!$('#frmStockView').valid())
217 $('#btnSendToDealer').prop('disabled', true);
219 'updateStock:' + _w.tcstockview.itemId, {"Stock":_w.tcstockview._prepStockUpdateData()}, {},
222 'tcStock:' + _w.tcstockview.itemId,
223 'Stock', 'Stock.SendToDealer', _w.tcstockview.itemId, {},
224 _w.tcstockview._onStockUpdated, _w.taskExecError
229 App.Util.updateCheckboxStyle($('#acceptAuctionHPIdisclaimer'));
230 $('#btnSendToAuction').click(function () {
231 var endDate = $('#endDate').val();
232 var reservePrice = $('#reservePrice').val();
233 if ('' == endDate || '' == reservePrice || isNaN(reservePrice))
235 alert('Please provide end date and reserve price.');
239 if (!$('#frmStockView').valid())
243 if (!$('#acceptAuctionHPIdisclaimer').is(':checked'))
245 alert('Please accept the conditions before sending.');
249 if ('' == $('#mainImage').val())
251 alert('The main image is mandatory for moving a vehicle to auction.');
252 $('#img_mainImage').addClass('error');
253 $('#img_mainImage').removeClass('valid');
258 $('#img_mainImage').removeClass('error');
259 $('#img_mainImage').addClass('valid');
261 if ('' == $('#registrationNumber').val())
263 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
264 $('#registrationNumber').addClass('error');
265 $('#registrationNumber').removeClass('valid');
270 $('#registrationNumber').removeClass('error');
271 $('#registrationNumber').addClass('valid');
273 if ('' == $('#vinNumber').val())
275 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
276 $('#vinNumber').addClass('error');
277 $('#vinNumber').removeClass('valid');
282 $('#vinNumber').removeClass('error');
283 $('#vinNumber').addClass('valid');
285 if ('' == $('#engineNumber').val())
287 alert('The Registration, VIN and Engine number is mandatory for moving a vehicle to auction.');
288 $('#engineNumber').addClass('error');
289 $('#engineNumber').removeClass('valid');
294 $('#engineNumber').removeClass('error');
295 $('#engineNumber').addClass('valid');
299 $('#btnSendToAuction').prop('disabled', true);
300 if (_w.tcstockview.newItem)
303 data.Stock = _w.tcstockview._prepStockUpdateData();
304 data.Context = {endDate: endDate, reservePrice: reservePrice};
306 'createStockAuction', data, {},
307 _w.tcstockview._onStockUpdated, _w.taskExecError
313 'updateStock:' + _w.tcstockview.itemId, {"Stock":_w.tcstockview._prepStockUpdateData()}, {},
316 'sendToAuction:' + _w.tcstockview.itemId, 'Stock', 'Stock.SendToAuction', _w.tcstockview.itemId,
318 var endDate = $('#endDate').val();
319 var reservePrice = $('#reservePrice').val();
321 'sendToAuction:' + _w.tcstockview.itemId, {Context: {endDate: endDate, reservePrice: reservePrice}}, {},
322 _w.tcstockview._onStockUpdated, _w.taskExecError
324 }, _w.taskContractError
331 $('.back-btn').on('click', function(){
332 window.history.back();
335 if (null != _w.tcstockview.itemData)
337 _w.tcstockview._onDataAndTemplate();
341 setStockViewFormMeta : function( data )
344 if (undefined != data)
346 for (var i = 0; i < data.damages.length; i++)
348 damages['d' + data.damages[i].damage] = data.damages[i].amount;
355 _w.tcstockview.formMeta = {
360 dataStoreId : 'years',
361 value : data.vehicleYear ? data.vehicleYear : '',
362 onChange : function () {
363 if (!App.DataStore.getItem('BuildSelect:vehicleYear', false))
365 if (_w.tcstockview.itemData)
367 _w.tcstockview.itemData.vehicleYear = $('#vehicleYear').val();
368 _w.tcstockview._listMakesModelsTypes(function () {
369 if ($('#vehicleYear').val() && $('#vehicleType').val())
372 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
373 {}, _w.tcstockview._onTuReady, _w.taskContractError
383 id : 'vehicleCategory',
385 dataStoreId : 'categories',
386 value : data.type ? data.type.category.id : '',
387 onChange : function () {
388 if (!App.DataStore.getItem('BuildSelect:vehicleCategory', false))
390 if (_w.tcstockview.itemData)
392 _w.tcstockview.itemData.type.category.id = $('#vehicleCategory').val();
393 _w.tcstockview._listMakesModelsTypes();
401 title : 'Vehicle Make',
402 dataStoreId : 'makes',
403 value : data.type ? data.type.model.make.id : '',
404 onChange : function () {
405 if (!App.DataStore.getItem('BuildSelect:vehicleMake', false))
407 if (_w.tcstockview.itemData)
409 _w.tcstockview.itemData.type.model.make.id = $('#vehicleMake').val();
410 _w.tcstockview._listMakesModelsTypes();
418 title : 'Vehicle Model',
419 dataStoreId : 'models',
420 value : data.type ? data.type.model.id : '',
421 onChange : function () {
422 if (!App.DataStore.getItem('BuildSelect:vehicleModel', false))
424 if (_w.tcstockview.itemData)
426 _w.tcstockview.itemData.type.model.id = $('#vehicleModel').val();
427 _w.tcstockview._listMakesModelsTypes();
435 title : 'Vehicle Type',
436 dataStoreId : 'types',
437 value : data.type ? data.type.id : '',
438 onChange : function () {
439 if ('' != $(this).val() && null != $(this).val())
442 'GetMmCode' + $(this).val(), 'Stock', 'Type.GetMmCode', null,
443 {id:$(this).val()}, function(response){
444 $('#mmCode').html(response.Data.mmCode);
445 }, _w.taskContractError
450 $('#mmCode').html('');
452 if (!App.DataStore.getItem('BuildSelect:vehicleType', false)
453 && $('#vehicleYear').val()
454 && $('#vehicleType').val())
457 'TransUnionFromMmCode', 'Stock', 'Utility.TransUnionFromMmCode', null,
458 {}, _w.tcstockview._onTuReady, _w.taskContractError
468 setAttrib : 'readonly',
469 value : data.type ? data.type.mmCode : ''
474 title : 'Stock number',
475 value : data.stockNumber ? data.stockNumber : ''
479 id : 'vehicleFuelType',
481 dataStoreId : 'fuelTypes',
482 value : data.fuelType ? data.fuelType : ''
484 'transmissionType' : {
486 id : 'vehicleTransmissionType',
487 title : 'Transmission Type',
488 dataStoreId : 'transmissionTypes',
489 value : data.transmissionType ? data.transmissionType : ''
493 id : 'vehicleCondition',
495 dataStoreId : 'conditions',
496 value : data.condition ? data.condition : ''
500 id : 'exteriorColour',
501 title : 'Main ext. colour',
502 dataStoreId : 'exteriorColours',
503 value : data.exteriorColour ? data.exteriorColour : ''
507 id : 'interiorColour',
508 title : 'Main int. colour',
509 dataStoreId : 'interiorColours',
510 value : data.interiorColour ? data.interiorColour : ''
514 id : 'vehicleUpholstery',
515 title : 'Upholstery',
516 dataStoreId : 'upholsteries',
517 value : data.upholstery ? data.upholstery : ''
521 id : 'vehiclePapers',
523 dataStoreId : 'papers',
524 value : data.papers ? data.papers : ''
530 dataStoreId : 'natis',
531 value : data.natis ? data.natis : ''
536 title : 'Spare keys',
537 dataStoreId : 'sparekeys',
538 value : undefined != data.spareKeys && null != data.spareKeys
539 ? (data.spareKeys == true ? "1" : "0")
542 'fullServiceHistory' : {
544 id : 'fullServiceHistory',
545 title : 'Full service history',
547 value : data.fullServiceHistory ? data.fullServiceHistory : ''
549 'registrationNumber' : {
551 id : 'registrationNumber',
552 title : 'Registration no',
553 value : data.registrationNumber ? data.registrationNumber : ''
559 value : data.vinNumber ? data.vinNumber : ''
565 value : data.engineNumber ? data.engineNumber : ''
571 value : data.km ? data.km : ''
574 type : 'textarea-small',
577 value : data.fshNotes ? data.fshNotes : ''
580 type : 'damageDetails',
581 disabled : !App.permissions.stockUpdateDamages,
583 dataStoreId : 'damages',
584 data : data.damages ? data.damages : {}
586 'damageTotal' : 'R 0.00',
588 type : 'textarea-styled',
589 disabled : !App.permissions.stockUpdateDamages,
591 title : 'Damages comments',
592 style : 'damages-comments',
593 value : data.damageNotes ? data.damageNotes : ''
596 type : 'textarea-styled',
597 disabled : !App.permissions.stockUpdateCoverReceived,
598 id : 'coverReceived',
599 title : 'Cover Received',
600 style : 'cover-received',
601 value : data.coverReceived ? data.coverReceived : ''
603 'previousRepairsNoted': {
605 id: 'previousRepairsNoted',
606 title: 'Previous repairs',
607 style: 'damages-comments',
608 value: data.previousRepairsNoted ? data.previousRepairsNoted : false
610 'previousRepairsNotes' : {
611 type : 'textarea-styled',
612 disabled : !App.permissions.stockUpdateDamages,
613 id : 'previousRepairsNotes',
614 title : 'Previous repairs noted',
615 style : 'damages-comments',
616 value : data.previousRepairsNotes ? data.previousRepairsNotes : ''
621 dataStoreId : 'accessories',
622 itemName : 'accessory',
623 data : data.accessories ? data.accessories : {}
626 type : 'textarea-styled',
627 id : 'accessoryNotes',
630 areaStyle : 'comment-text-box',
631 value : data.accessoryNotes ? data.accessoryNotes : ''
636 baseImage : 'main_img_car.jpg',
637 view : !App.permissions.stockUploadPhotos,
638 value : data.mainImage ? data.mainImage : ''
643 baseImage : 'front_car.jpg',
644 view : !App.permissions.stockUploadPhotos,
645 value : data.frontImage ? data.frontImage : ''
650 baseImage : 'left_car.jpg',
651 view : !App.permissions.stockUploadPhotos,
652 value : data.leftImage ? data.leftImage : ''
657 baseImage : 'right_car.jpg',
658 view : !App.permissions.stockUploadPhotos,
659 value : data.rightImage ? data.rightImage : ''
664 baseImage : 'back_car.jpg',
665 view : !App.permissions.stockUploadPhotos,
666 value : data.backImage ? data.backImage : ''
670 id : 'interiorImage',
671 baseImage : 'interior_car.jpg',
672 view : !App.permissions.stockUploadPhotos,
673 value : data.interiorImage ? data.interiorImage : ''
678 baseImage : 'engine_car.jpg',
679 view : !App.permissions.stockUploadPhotos,
680 value : data.engineImage ? data.engineImage : ''
685 baseImage : 'copy_of_natis_car.jpg',
686 view : !App.permissions.stockUploadPhotos,
687 value : data.natisImage ? data.natisImage : ''
692 title : 'Select clubs',
693 dataStoreId : 'clubs',
700 title : 'Auction end date',
701 dtopt : {startDate: "+1d", endDate:"+" + App.serverConfig.auctionMaxDays + "d", daysOfWeekDisabled: [0], beforeShowDay: function(date) {
702 if (date.getDay() == 6 && !App.openDays[App.Util.formatDate(date, 'yyyy-mm-dd')])
706 for (var i = 0; i < _w.tcstockview.dates.length; i++)
708 if (_w.tcstockview.dates[i] == date.toDateString())
720 title : 'Reserve price',
723 'retailAmountRequired' : {
725 id : 'retailAmountRequired',
726 title : 'Minimum retail price',
727 value : data.retailAmountRequired ? data.retailAmountRequired : ''
730 constructor: 'Button',
735 handler: _w.tcstockview.printStockPdf
740 constructor: 'Button',
744 id: 'printStockAuctionPdf',
745 handler: _w.tcstockview.printStockAuctionPdf
750 type : 'textarea-styled',
754 areaStyle : 'span12',
757 'loadedOnPriceGuide': data.loadedOnPriceGuide,
758 'numberOfOffers': data.numberOfOffers,
759 'highestOffer': 'R ' + data.highestOffer,
760 'timesListed': data.timesListed,
761 'highestBid': 'R ' + data.highestBid,
762 'referenceNumber': data.referenceNumber,
763 'jobState': data.auction
765 data.auction.jobState == 'Undone'
766 || data.auction.jobState == 'Relist'
770 'tradePrice': data.tradePrice ? 'R ' + data.tradePrice : 'R 0.00',
771 'retailPrice': data.retailPrice ? 'R ' + data.retailPrice : 'R 0.00',
772 'listPrice': data.listPrice ? 'R ' + data.listPrice : 'R 0.00'
776 printStockPdf : function()
779 'printStock:' + _w.tcstockview.itemId, 'Stock', 'Pdf.Print', _w.tcstockview.itemId,
782 'printStock:' + _w.tcstockview.itemId, {}, {},
783 function () {}, _w.taskExecError,
786 }, _w.taskContractError
789 printStockAuctionPdf : function()
792 'printStock:' + _w.tcstockview.itemId, 'Auction', 'Pdf.PrintPortal', _w.tcstockview.itemData.auction.id,
795 'printStock:' + _w.tcstockview.itemId, {}, {},
796 function () {}, _w.taskExecError,
799 }, _w.taskContractError
802 _listMakesModelsTypes : function( callback )
804 if (!_w.tcstockview.itemData.vehicleYear)
808 if (_w.tcstockview.itemData.type
809 && _w.tcstockview.itemData.type.category
810 && _w.tcstockview.itemData.type.category.id)
812 App.DataStore.loadSelectListData(
813 'makes', false, 'Stock', 'Utility.ListMakes', null,
815 "category" : _w.tcstockview.itemData.type.category.id,
816 "year" : _w.tcstockview.itemData.vehicleYear
819 if (_w.tcstockview.itemData.type
820 && _w.tcstockview.itemData.type.model
821 && _w.tcstockview.itemData.type.model.make
822 && _w.tcstockview.itemData.type.model.make.id)
824 App.DataStore.loadSelectListData(
825 'models', false, 'Stock', 'Utility.ListModels', null,
827 "make" : _w.tcstockview.itemData.type.model.make.id,
828 "category" : _w.tcstockview.itemData.type.category.id,
829 "year" : _w.tcstockview.itemData.vehicleYear
832 if (_w.tcstockview.itemData.type.model.id)
834 App.DataStore.loadSelectListData(
835 'types', false, 'Stock', 'Utility.ListTypes', null,
837 "model" : _w.tcstockview.itemData.type.model.id,
838 "category" : _w.tcstockview.itemData.type.category.id,
839 "year" : _w.tcstockview.itemData.vehicleYear
847 _onDataAndTemplate : function ()
849 _w.tcstockview.relistReservePrice = _w.tcstockview.itemData.auction
850 && _w.tcstockview.itemData.auction.reservePrice
851 ? _w.tcstockview.itemData.auction.reservePrice
853 $('#reservePrice').val(_w.tcstockview.relistReservePrice);
855 $.each($.find('.rand-input'), function(i, input) {
856 total += parseFloat($(input).val());
858 $('#' + _w.tcstockview.ti.tid + '_damageTotal').html('R ' + total);
859 $('#retailPrice').val(_w.tcstockview.itemData.retailPrice);
860 $('#tradePrice').val(_w.tcstockview.itemData.tradePrice);
861 $('#listPrice').val(_w.tcstockview.itemData.listPrice);
862 if ('Archived' == _w.tcstockview.itemData.jobState)
864 true == App.permissions.stockUnarchive ? $('#btnUnarchive').show() : $('#btnUnarchive').hide();
866 if ('Retail' == _w.tcstockview.itemData.jobState)
868 console.log('in status RETAIL');
869 console.log(App.permissions.stockReclaimRetail);
870 true == App.permissions.stockReclaimRetail ? $('#btnReclaimFromRetail').show() : $('#btnReclaimFromRetail').hide();
872 console.log(_w.tcstockview.itemData);
873 if ('Sold' == _w.tcstockview.itemData.jobState
874 && true == _w.tcstockview.itemData.auction.Within30DaysOfEnd
875 && App.companyData.id == _w.tcstockview.itemData.auction.company)
877 $('#btnDispute').show();
878 $('#btnLogDispute').click(function() {
879 var comp = $('#complaint').val();
882 alert('Please specify the complaint.');
887 againstCompany : _w.tcstockview.itemData.auction.soldToCompany,
888 auction : _w.tcstockview.itemData.auction.id,
893 'createDispute', 'Dispute', 'Dispute.Create',
894 null, {}, function(){
896 'createDispute', data, {},
898 alert('Dispute logged.');
899 $('#dropDsp').slideToggle();
902 }, _w.taskContractError
910 if ('Trade Center' == _w.tcstockview.itemData.jobState || _w.tcstockview.newItem)
912 if (true == App.permissions.stockRouteAuction)
914 $('#optSendToAction').show();
918 $('#optSendToAction').hide();
920 $('#btnSendToDealer').show();
921 true == App.permissions.stockUpdate ? $('#btnUpdate').show() : $('#btnUpdate').hide();
923 true == App.permissions.stockPrint ? $('#printStockPdf').show() : $('#printStockPdf').hide();
924 true == App.permissions.stockB4cReport ? $('#btnB4cAccidentReport').show() : $('#btnB4cAccidentReport').hide();
925 true == App.permissions.stockBmw ? $('#btnBwmAccidentReport').show() : $('#btnBwmAccidentReport').hide();
927 if (!App.permissions.pgPage && !App.permissions.auctionPage)
929 $('.pg-a-data-wrapper').hide();
931 if (true == App.permissions.pgPage) { $('.price-guide-info').show(); };
932 if (true == App.permissions.auctionPage) { $('.auction-info').show(); };
933 if (_w.tcstockview.newItem)
935 $('.info-block').hide();
936 $('#optSendToPg').hide();
937 $('#printStockPdf').hide();
938 $('#btnArchive').hide();
941 if ('Sold' == _w.tcstockview.itemData.jobState)
943 $('.printStockPdf').addClass('hide');
944 $('.printStockAuctionPdf').removeClass('hide');
947 _w.tcstockview._setupValidation();
950 _onStockViewDataReceived : function( response )
952 _w.tcstockview.itemId = response.Data.id;
953 _w.tcstockview.itemData = response.Data;
954 _w.tcstockview._listMakesModelsTypes();
955 _w.tcstockview.setStockViewFormMeta(response.Data);
956 _w.tcstockview.ti.hydrate(_w.tcstockview.formMeta);
957 if (_w.tcstockview.ti.published)
959 _w.tcstockview._onDataAndTemplate();
963 _setupValidation : function ()
965 App.DataStore.listen('regValidation', 'damages', function(id, damages) {
967 mainImage: "required",
968 vehicleYear: "required",
969 vehicleCategory: "required",
970 vehicleMake: "required",
971 vehicleModel: "required",
972 vehicleType: "required",
973 vehicleFuelType: "required",
974 vehicleTransmissionType: "required",
975 registrationNumber: "required",
976 km: { required: true, digits: true }
978 for (var i = 0; i < damages.length; i++)
980 rules['damage' + damages[i].value + 'Amount'] = {number: true};
983 $('#frmStockView').validate({
986 mainImage : "This field is required.",
987 vehicleYear : "This field is required.",
988 vehicleCategory : "This field is required.",
989 vehicleMake : "This field is required.",
990 vehicleModel : "This field is required.",
991 vehicleType : "This field is required.",
992 vehicleFuelType : "This field is required.",
993 vehicleTransmissionType : "This field is required.",
994 registrationNumber : "This field is required.",
995 km : {required: "This field is required."}
997 invalidHandler: function(event, validator) {
998 var errors = validator.numberOfInvalids();
999 if (0 < _w.tcstockview.validations && errors)
1001 var message = errors == 1
1002 ? 'You missed 1 field. It has been highlighted'
1003 : 'You missed ' + errors + ' fields. They have been highlighted';
1006 _w.tcstockview.validations++;
1008 submitHandler: function( form ) {
1009 $('#btnUpdate').prop('disabled', true);
1010 var data = _w.tcstockview._prepStockUpdateData();
1011 if (_w.tcstockview.newItem)
1014 'createStock', {"Stock":data}, {},
1015 _w.tcstockview._onStockUpdated, _w.taskExecError
1021 'updateStock:' + _w.tcstockview.itemId, {"Stock":data}, {},
1022 _w.tcstockview._onStockUpdated, _w.taskExecError
1027 $('#btnUpdate').prop('disabled', false);
1029 _w.tcstockview.validations = 0;
1030 $('#frmStockView').valid();
1032 $('label.error').remove();
1033 $('.valid').removeClass('valid');
1037 _onTuReady : function ()
1040 'TransUnionFromMmCode', {
1042 vehicleYear : parseInt($('#vehicleYear').val()),
1043 type : parseInt($('#vehicleType').val())
1046 _w.tcstockview._onTuReceived, function(){alert('There were no trade and retail from TransUnion');}
1050 _onTuReceived : function ( response )
1052 if ('Success' != response.Data.Status)
1054 alert(response.Data.Status);
1057 var vals = response.Data.VehicleDetails[0].Value;
1058 $('#retailPrice').val(vals.RetailPrice + '.00');
1059 $('#tradePrice').val(vals.TradePrice + '.00');
1060 $('#listPrice').val(vals.ListPrice + '.00');
1061 $('#' + _w.tcstockview.ti.tid + '_retailPrice').html('R ' + vals.RetailPrice + '.00');
1062 $('#' + _w.tcstockview.ti.tid + '_tradePrice').html('R ' + vals.TradePrice + '.00');
1063 $('#' + _w.tcstockview.ti.tid + '_listPrice').html('R ' + vals.ListPrice + '.00');
1066 _prepStockUpdateData : function()
1068 var data = _w.tcstockview.ti.harvest();
1069 data.km = '' == data.km
1071 : parseInt(data.km);
1072 var retailPrice = $('#retailPrice').val();
1073 var tradePrice = $('#tradePrice').val();
1074 var listPrice = $('#listPrice').val();
1075 var retailAmountRequired = $('#retailAmountRequired').val();
1076 data.retailPrice = ('' == retailPrice)
1078 : parseFloat(retailPrice);
1079 data.tradePrice = ('' == tradePrice)
1081 : parseFloat(tradePrice);
1082 data.listPrice = ('' == listPrice)
1084 : parseFloat(listPrice);
1085 data.retailAmountRequired = ('' == retailAmountRequired)
1087 : parseFloat(retailAmountRequired);
1088 delete data.damageTotal;
1089 if ('' == data.mainImage)
1091 delete data.mainImage;
1093 if ('' == data.leftImage)
1095 delete data.leftImage;
1097 if ('' == data.backImage)
1099 delete data.backImage;
1101 if ('' == data.engineImage)
1103 delete data.engineImage;
1105 if ('' == data.frontImage)
1107 delete data.frontImage;
1109 if ('' == data.rightImage)
1111 delete data.rightImage;
1113 if ('' == data.interiorImage)
1115 delete data.interiorImage;
1117 if ('' == data.natisImage)
1119 delete data.natisImage;
1125 _onStockUpdated : function( response )
1127 window.location.hash = '/tcstock';