4 window._w.systemdealerview = {
12 onTemplateReady: function (template, event, eventData)
14 _w.systemdealerview.itemData = null;
15 _w.systemdealerview.ti = _t[template];
16 _w.systemdealerview.limited = ('limitedsystemdealerview' == template)
20 App.DataStore.setData('companytypes', [
21 {"value": "Limited", "label": "Limited"},
22 {"value": "PTY Limited", "label": "PTY Limited"},
23 {"value": "Closed Corporation", "label": "Closed Corporation"},
24 {"value": "Sole Proprietor", "label": "Sole Proprietor"}
26 App.DataStore.setData('dealertypes', [
27 {"value": "Dealer", "label": "Dealer"},
28 {"value": "Trader", "label": "Trader"},
29 {"value": "Trade Center", "label": "Trade Center"},
30 {"value": "Wholesale / Trader", "label": "Wholesale / Trader"}
32 App.DataStore.setData('automatefiles', [
33 {"value": "CJD", "label": "CJD"},
34 {"value": "LSaker", "label": "LSaker"},
35 {"value": "MultiFran", "label": "MultiFran"},
36 {"value": "Toyota", "label": "Toyota"}
38 App.DataStore.setData('autolinefiles', [
39 {"value": "Cargo", "label": "Cargo"},
40 {"value": "Ford", "label": "Ford"},
41 {"value": "GM", "label": "GM"},
42 {"value": "Honda", "label": "Honda"},
43 {"value": "Nissan", "label": "Nissan"}
45 App.DataStore.loadSelectListData('countries', true, 'Location', 'Country.SelectList');
46 App.DataStore.loadSelectListData('groups', true, 'Company', 'Group.SelectList');
47 App.DataStore.loadSelectListData('tradecenters', true, 'Company', 'Company.TradeCenterSelectList');
51 _w.systemdealerview.setCompanyViewFormMeta();
52 _w.systemdealerview.ti.hydrate(_w.systemdealerview.formMeta);
54 // Retrieve initial view data.
55 _w.systemdealerview.itemId = App.Util.getUrlParam('id');
56 _w.systemdealerview.newItem = false;
58 'updateCompany:' + _w.systemdealerview.itemId, 'Company', 'Company.AdminUpdate', _w.systemdealerview.itemId,
59 {'id': _w.systemdealerview.itemId}, $.proxy(_w.systemdealerview._onCompanyViewDataReceived, this), _w.taskContractError
63 onTemplatePublished: function (template, event, eventData)
65 if (null != _w.systemdealerview.itemData)
67 _w.systemdealerview._setupValidation();
70 setCompanyViewFormMeta: function (data)
76 _w.systemdealerview.formMeta = {
81 value: data.contact ? data.contact.firstName : ''
87 value: data.contact ? data.contact.familyName : ''
93 value: data.contact ? data.contact.office : ''
99 value: data.contact ? data.contact.mobile : ''
105 value: data.contact ? data.contact.email : ''
111 dataStoreId: 'groups',
112 value: data.group ? data.group.id : '',
113 onChange: function () {
114 if (!App.DataStore.getItem('BuildSelect:group', false))
116 App.DataStore.loadSelectListData(
117 'divisions', false, 'Company', 'GroupDivision.SelectList', null, {
118 Filter: {group: $(this).val()}
120 App.DataStore.loadSelectListData('regionalManagers', false, 'AppConfig', 'RegionalManager.SelectList', null,
122 "group": response.Data.group.id,
130 title: 'Group division',
131 dataStoreId: 'divisions',
132 value: data.groupDivision ? data.groupDivision.id : ''
138 value: data.name ? data.name : ''
143 title: 'Business name',
144 value: data.businessName ? data.businessName : ''
146 'companyRegistrationNumber': {
148 id: 'companyRegistrationNumber',
149 title: 'Company Reg no',
150 value: data.companyRegistrationNumber ? data.companyRegistrationNumber : ''
156 value: data.vatNumber ? data.vatNumber : ''
158 'dealerStockNumber': {
160 id: 'dealerStockNumber',
161 title: 'Dealer stock no',
162 value: data.dealerStockNumber ? data.dealerStockNumber : ''
167 title: 'Company type',
168 dataStoreId: 'companytypes',
169 value: data.companyType ? data.companyType : '',
170 onChange: function () {
171 if (!App.DataStore.getItem('BuildSelect:companyType', false))
173 if ('Sole Proprietor' == $(this).val())
175 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').hide();
176 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').hide();
177 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').show();
178 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').show();
179 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
183 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').hide();
184 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').hide();
185 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
186 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').show();
187 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').show();
195 title: 'Dealer type',
196 dataStoreId: 'dealertypes',
197 value: data.dealerType ? data.dealerType : ''
202 title: 'Trade center',
203 selectEmpty: 'Not assigned',
204 dataStoreId: 'tradecenters',
205 value: data.tradeCenter ? data.tradeCenter.id : ''
210 title: 'Public Centre',
211 value: data.publicCentre ? data.publicCentre : false
216 title: 'Available on Price Guide invite list',
217 value: data.priceGuide ? data.priceGuide : false
221 id: 'regionalManager',
222 title: 'Regional Manager',
223 dataStoreId: 'regionalManagers',
224 value: data.regionalManager ? data.regionalManager.id : '',
230 dataStoreId: 'countries',
231 value: data.city ? data.city.region.country.id : '',
232 onChange: function () {
233 if (!App.DataStore.getItem('BuildSelect:country', false))
235 _w.systemdealerview.itemData.city.region.country.id = $('#country').val();
236 _w.systemdealerview._listRegionTown();
244 dataStoreId: 'regions',
245 value: data.city ? data.city.region.id : '',
246 onChange: function () {
247 if (!App.DataStore.getItem('BuildSelect:region', false))
249 _w.systemdealerview.itemData.city.region.id = $('#region').val();
250 _w.systemdealerview._listRegionTown();
259 dataStoreId: 'cities',
260 value: data.city ? data.city.id : ''
266 value: data.street ? data.street : ''
272 value: data.postalCode ? data.postalCode : ''
274 'docStockCertificate': {
276 id: 'docStockCertificate',
277 title: 'Stock certificate',
278 value: data.docStockCertificate ? data.docStockCertificate : null
282 id: 'docAddressProof',
283 title: 'Proof of business address',
284 value: data.docAddressProof ? data.docAddressProof : null
289 title: 'Copy of ID document',
290 value: data.docCopyOfId ? data.docCopyOfId : null
292 'docCopyOfDirectorId': {
294 id: 'docCopyOfDirectorId',
295 title: 'Copy of directors ID document',
296 value: data.docCopyOfDirectorId ? data.docCopyOfDirectorId : null
298 'docCompanyRegistration': {
300 id: 'docCompanyRegistration',
301 title: 'Company registration document',
302 value: data.docCompanyRegistration ? data.docCompanyRegistration : null
305 type: 'textarea-small',
307 title: 'Status reason',
308 value: data.statusReason ? data.statusReason : ''
313 title: 'Automate File',
314 dataStoreId: 'automatefiles',
315 value: data.automateFile
317 'automateDealerCode': {
319 id: 'automateDealerCode',
320 title: 'Automate dealer code',
321 value: data.automateDealerCode
326 title: 'Autoline file',
327 dataStoreId: 'autolinefiles',
328 value: data.autolineFile
330 'autolineDealerCode': {
332 id: 'autolineDealerCode',
333 title: 'Autoline dealer code',
334 value: data.autolineDealerCode
338 _listRegionTown: function ()
340 App.DataStore.loadSelectListData(
341 'regions', false, 'Location', 'Region.SelectList', null,
343 "country": _w.systemdealerview.itemData.city.region.country.id
346 App.DataStore.loadSelectListData(
347 'cities', false, 'Location', 'Town.SelectList', null,
349 "region": _w.systemdealerview.itemData.city.region.id
353 _onCompanyViewDataReceived: function (response)
357 _w.systemdealerview.itemId = response.Data.id;
358 _w.systemdealerview.itemData = response.Data;
359 //_w.systemdealerview.itemData.jobState = response.jostate;
360 //console.log("testing",_w.systemdealerview.itemData.jobState );
361 if (response.Data.group)
363 App.DataStore.loadSelectListData(
364 'divisions', false, 'Company', 'GroupDivision.SelectList', null, {
365 Filter: {group: response.Data.group.id}
368 App.DataStore.loadSelectListData('regionalManagers', false, 'AppConfig', 'RegionalManager.SelectList', null,
370 "group": response.Data.group.id,
373 _w.systemdealerview._listRegionTown();
374 _w.systemdealerview.setCompanyViewFormMeta(response.Data);
375 _w.systemdealerview.ti.hydrate(_w.systemdealerview.formMeta);
376 if (_w.systemdealerview.ti.published)
378 _w.systemdealerview._setupValidation();
381 _setupValidation: function ()
383 if ('Sole Proprietor' == $('#companyType').val())
385 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').hide();
386 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').hide();
387 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').show();
388 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').show();
389 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
393 $('#' + _w.systemdealerview.ti.tid + '_docStockCertificate').hide();
394 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfId').hide();
395 $('#' + _w.systemdealerview.ti.tid + '_docAddressProof').show();
396 $('#' + _w.systemdealerview.ti.tid + '_docCopyOfDirectorId').show();
397 $('#' + _w.systemdealerview.ti.tid + '_docCompanyRegistration').show();
399 $('#frmDealerView').validate({
401 name: {required: true},
402 street: {required: true},
403 postalCode: {required: true, digits: true},
404 firstName: {required: true},
405 familyName: {required: true},
406 mobile: {required: true, mobile: true},
407 office: {required: true},
408 email: {required: true, email: true},
409 statusReason: {maxLength: 250},
416 email: "Must be a valid email address."
418 country: "This field is required.",
419 region: "This field is required.",
420 city: "This field is required."
422 submitHandler: function (form) {
423 if ('' == $('#statusReason').val())
425 alert('Please specify a status reason.');
428 $('#btnUpdate').prop('disabled', true);
429 $('.dbtn').prop('disabled', true);
430 var data = _w.systemdealerview._prepCompanyUpdateData();
432 'updateCompany:' + _w.systemdealerview.itemId, data, {},
433 _w.systemdealerview._onCompanyUpdated, _w.taskExecError
437 $('#btnUpdate').prop('disabled', false);
439 switch (_w.systemdealerview.itemData.jobState)
442 $('#btnActivate').show();
443 $('#btnPending').show();
444 $('#btnSuspend').show();
445 $('#btnDecline').show();
446 $('#btnArchive').show();
449 $('#btnActivate').show();
450 $('#btnSuspend').show();
451 $('#btnDecline').show();
452 $('#btnArchive').show();
455 $('#btnSuspend').show();
456 $('#btnArchive').show();
459 $('#btnActivate').show();
460 $('#btnArchive').show();
463 $('#btnActivate').show();
464 $('#btnSuspend').show();
465 $('#btnArchive').show();
468 $('#btnActivate').show();
471 $('#btnActivate').click(function () {
472 if (!$('#frmDealerView').valid())
474 alert('Please fill in all required fields.');
477 if ('' == $('#statusReason').val())
479 alert('Please specify a status reason.');
482 $('#btnUpdate').prop('disabled', true);
483 $('.dbtn').prop('disabled', true);
484 var data = _w.systemdealerview._prepCompanyUpdateData();
487 if (_w.systemdealerview.itemData.jobState == "New" || _w.systemdealerview.itemData.jobState == "Pending")
490 'updateCompany:' + _w.systemdealerview.itemId, data, {},
493 'routeDealerActive:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToActive',
494 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
503 'updateCompany:' + _w.systemdealerview.itemId, data, {},
506 'routeDealerActive:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToActive',
507 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
516 $('#btnPending').click(function () {
517 if (!$('#frmDealerView').valid())
519 alert('Please fill in all required fields.');
522 if ('' == $('#statusReason').val())
524 alert('Please specify a status reason.');
527 $('#btnUpdate').prop('disabled', true);
528 var data = _w.systemdealerview._prepCompanyUpdateData();
529 //console.log("test pending", _w.systemdealerview.itemData.jobState);
530 if (_w.systemdealerview.itemData.jobState == "Pending" || _w.systemdealerview.itemData.jobState == "New")
533 'updateCompany:' + _w.systemdealerview.itemId, data, {},
536 'routeDealerPending:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToPending',
537 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
545 'updateCompany:' + _w.systemdealerview.itemId, data, {},
548 'routeDealerPending:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToPending',
549 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
557 $('#btnSuspend').click(function () {
558 if (!$('#frmDealerView').valid())
560 alert('Please fill in all required fields.');
563 if ('' == $('#statusReason').val())
565 alert('Please specify a status reason.');
568 $('#btnUpdate').prop('disabled', true);
569 var data = _w.systemdealerview._prepCompanyUpdateData();
571 //console.log("test Suspend", _w.systemdealerview.itemData.jobState);
573 if (_w.systemdealerview.itemData.jobState == "Pending")
576 'updateCompany:' + _w.systemdealerview.itemId, data, {},
579 'routeDealerSuspend:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToSuspended',
580 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
590 'updateCompany:' + _w.systemdealerview.itemId, data, {},
593 'routeDealerSuspend:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToSuspended',
594 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
602 $('#btnDecline').click(function () {
603 if (!$('#frmDealerView').valid())
605 alert('Please fill in all required fields.');
608 if ('' == $('#statusReason').val())
610 alert('Please specify a status reason.');
613 $('#btnUpdate').prop('disabled', true);
615 var data = _w.systemdealerview._prepCompanyUpdateData();
617 //console.log("test-declined: ", _w.systemdealerview.itemData.jobState);
618 if (_w.systemdealerview.itemData.jobState == "New" || _w.systemdealerview.itemData.jobState == "Pending")
622 'updateCompany:' + _w.systemdealerview.itemId, data, {},
625 'routeDealerDeclined:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToDeclined',
626 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
634 'updateCompany:' + _w.systemdealerview.itemId, data, {},
637 'routeDealerDeclined:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToDeclined',
638 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
646 $('#btnArchive').click(function () {
647 if (!$('#frmDealerView').valid())
649 alert('Please fill in all required fields.');
652 if ('' == $('#statusReason').val())
654 alert('Please specify a status reason.');
657 $('#btnUpdate').prop('disabled', true);
658 var data = _w.systemdealerview._prepCompanyUpdateData();
660 //console.log("test Archive", _w.systemdealerview.itemData.jobState);
662 if (_w.systemdealerview.itemData.jobState == "New"
663 || _w.systemdealerview.itemData.jobState == "Suspended"
664 || _w.systemdealerview.itemData.jobState == "Pending"
665 || _w.systemdealerview.itemData.jobState == "Declined"
666 || _w.systemdealerview.itemData.jobState == "Active")
669 'updateCompany:' + _w.systemdealerview.itemId, data, {},
672 'routeDealerArchived:' + _w.systemdealerview.itemId, 'Company', 'Workflow.MoveToArchive',
673 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
681 'updateCompany:' + _w.systemdealerview.itemId, data, {},
684 'routeDealerArchived:' + _w.systemdealerview.itemId, 'Company', 'Company.MoveToArchive',
685 _w.systemdealerview.itemId, {}, _w.systemdealerview._onCompanyUpdated, _w.taskExecError
695 _prepCompanyUpdateData: function ()
697 var data = _w.systemdealerview.ti.harvest();
698 if ('' == data.docStockCertificate)
700 data.docStockCertificate = null;
702 if ('' == data.docAddressProof)
704 data.docAddressProof = null;
706 if ('' == data.docCopyOfId)
708 data.docCopyOfId = null;
710 if ('' == data.docCopyOfDirectorId)
712 data.docCopyOfDirectorId = null;
714 if ('' == data.docCompanyRegistration)
716 data.docCompanyRegistration = null;
718 var postData = {Company: {}, Contact: {}};
719 var contactFields = ["firstName", "familyName", "office", "mobile", "email"];
720 for (var field in data)
722 if (-1 == contactFields.indexOf(field))
724 postData.Company[field] = data[field];
728 postData.Contact[field] = data[field];
734 _onCompanyUpdated: function (response)
736 window.location.hash = '/dealers';