w4aGetQuoteData: function()
{
let ownerId = this.getSetting('ownerID');
let ownerType = this.getSetting('ownerType');
let serviceUrl = this.getSetting('serviceUrl');
let sessid = this.getSetting('sessid');
let documentMode = this.getSetting('_w4aDocumentMode');
let data = {
ownerId: ownerId,
ownerType: ownerType,
serviceUrl: serviceUrl,
sessid: sessid,
isDirector: this.isDirector(),
documentMode: documentMode,
}
return data;
},
w4aGetLoaderPath: function(){
return '/bitrix/components/bitrix/crm.document.view/templates/.default/images/document_view.svg';
},
w4aSetQuote: function()
{
this.setSetting('_w4aDocumentMode', 'SET');
let ownerId = this.getSetting('ownerID', 0);
let data = this.w4aGetQuoteData();
/**
* templateId = 3; // standard (with all add fields)
* templateId = 10; // without add fields
* templateId = 11; //with 1 add field (calculated via script)
* templateId = 12; // with 2 add fields (calculated via script)*/
let templateId = this.w4aDefaultTemplateId;
if(this.w4aQuoteTemplateId !== 0)
templateId = this.w4aQuoteTemplateId; // calculate template
// let handler = '/bitrix/components/bitrix/crm.document.view/slider.php'; // original handler
let handler = '/local/components/w4a.bitrix/crm.document.view/slider.php'; // custom handler
let viewUrl = handler + '?providerClassName=Bitrix\\Crm\\Integration\\DocumentGenerator\\DataProvider\\Deal';
viewUrl += '&templateId='+templateId+'&value='+ownerId+'&analyticsLabel=generateDocument&templateCode=null';
let loaderPath = this.w4aGetLoaderPath();
this.w4aBxOnBeforeCreate(viewUrl, {}, loaderPath, data)
},
// original: BX.DocumentGenerator.Document.askAboutUsingPreviousDocumentNumber
// /bitrix/js/documentgenerator/documentpreview.js
w4aBxAboutUsingPreviousDocumentNumber: function(provider, templateId, value, onsuccess, ondecline)
{
if(BX.type.isString(provider) && (parseInt(templateId) > 0) && BX.type.isFunction(onsuccess))
{
if(BX.DocumentGenerator.Document.isProcessing === true)
{
return;
}
try
{
provider = provider.replace(/\\/g, '\\\\');
BX.DocumentGenerator.Document.isProcessing = true;
BX.ajax.runAction('documentgenerator.api.document.list', {
data: {
select: ['id', 'number'],
filter: {
provider: provider,
templateId: templateId,
value: value
},
order: {id: 'desc'}
},
navigation: {
size: 1
}
}).then(function(response)
{
BX.DocumentGenerator.Document.isProcessing = false;
if(response.data.documents.length > 0)
{
console.log('w4aBxAboutUsingPreviousDocumentNumber:response');
console.log(response);
var previousNumber = response.data.documents[0].number;
BX.DocumentGenerator.showMessage(BX.message('DOCGEN_POPUP_DO_USE_OLD_NUMBER'), [
new BX.PopupWindowButton({
text : BX.message('DOCGEN_POPUP_NEW_BUTTON'),
className : "ui-btn ui-btn-md ui-btn-primary",
events : {
click : function()
{
onsuccess();
this.popupWindow.destroy();
}}
}),
new BX.PopupWindowButton({
text : BX.message('DOCGEN_POPUP_OLD_BUTTON'),
className : "ui-btn ui-btn-md ui-btn-primary",
events : {
click : function()
{
onsuccess(previousNumber);
this.popupWindow.destroy();
}}
})
], BX.message('DOCGEN_POPUP_NUMBER_TITLE'), ondecline);
}
else
{
onsuccess();
}
}).catch(function()
{
BX.DocumentGenerator.Document.isProcessing = false;
if(BX.type.isFunction(ondecline))
{
ondecline();
}
});
}
catch (e)
{
BX.DocumentGenerator.Document.isProcessing = false;
if(BX.type.isFunction(ondecline))
{
ondecline();
}
}
}
},
// original: BX.DocumentGenerator.Document.onBeforeCreate
// /bitrix/js/documentgenerator/documentpreview.js
w4aBxOnBeforeCreate:function(viewUrl, params, loaderPath, data)
{
var urlParams = BX.DocumentGenerator.parseUrl(viewUrl, 'params');
if(!urlParams.hasOwnProperty('documentId'))
{
var provider = decodeURIComponent(urlParams.providerClassName).toLowerCase();
var templateId = urlParams.templateId;
var value = urlParams.value;
this.w4aBxAboutUsingPreviousDocumentNumber(provider, templateId, value, function(previousNumber)
{
if(previousNumber)
{
viewUrl = BX.util.add_url_param(viewUrl, {number: previousNumber});
}
BX.CrmProductEditor.prototype.w4aSetQuoteBySlider(viewUrl, loaderPath, data);
});
}
else
{
this.w4aSetQuoteBySlider(viewUrl, loaderPath, data);
}
}, w4aSetQuoteBySlider: function(viewUrl, loader, data){
BX.SidePanel.Instance.open(viewUrl+'&IFRAME=Y&IFRAME_TYPE=SIDE_SLIDER', {
width: 980, // Максимальная ширина слайдера
cacheable: false, // Кешировать слайдер после закрытия. Если указано false, при закрытии слайдер будет автоматически уничтожен. По умолчанию true.
allowChangeHistory: false, // Менять адрес страницы на адрес открытого слайдера. По умолчанию true.
animationDuration: 200,
loader: loader,
requestMethod: "post",
requestParams: { // Произвольный набор своих данных для слайдера, с которыми можно работать (чтение/запись/удаление) на всем жизненном цикле.
action: "load",
data: data
},
events: {
onLoad: function(event) {
//alert('tutut-w4aSetQuoteBySlider:onLoad-003')
},
onclose: function(event) {
//alert('tutut-w4aSetQuoteBySlider:onclose-004')
let slider = event.slider;
let options = slider.options;
let requestData = options.requestParams.data;
console.log('w4aSetQuoteBySlider:requestData');
console.log(requestData);
let targetId = 'w4a_get_quote';
let mode = 'W4A_CHECK_SIGN_QUOTE';
let dat = new Object();
dat['targetId'] = targetId;
dat['MODE'] = mode;
dat['DOCUMENT_MODE'] = requestData.documentMode;
dat['ENTITY_ID'] = requestData.ownerId;
dat['ENTITY_TYPE'] = requestData.ownerType;
let data = new Object();
data['MODE'] = mode;
data['OWNER_ID'] = requestData.ownerId;
data['OWNER_TYPE'] = requestData.ownerType;
data['OPTIONS'] = dat;
let target = BX(targetId),
matches = null;
let waiter = BX.showWait(target);
let uniquePopupId = "w4a-get_signed_quote-popup-menu";
BX.ajax({
url: requestData.serviceUrl,
method: 'POST',
dataType: 'json',
data: data,
onsuccess: function(data)
{
console.log('tutut-w4aSetQuoteBySlider:data');
console.log(data);
console.log('tutut-w4aSetQuoteBySlider:w4aMessage');
console.log(w4aMessage);
let status = data['UF_QUOTE_STATUS'];
let statusName = w4aMessage['W4A_QUOTE_' + status];
if(data['UF_IS_SIGNED_QUOTE']==='Y')
{
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
BX('w4a_set_quote').setAttribute('style','display: none;');
}
else
{
// alert('tutut-001' + data['UF_QUOTE_STATUS'])
switch (data['UF_QUOTE_STATUS']) {
case 'ONSUBMIT':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
if(requestData.isDirector) {
BX('w4a_set_quote').setAttribute('style', 'display: inline-block;');
}else
{
BX.CrmProductEditor.prototype.w4aSetReadMode();
}
break;
case 'SUBMITTED':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
BX('w4a_set_quote').setAttribute('style','display: none;');
break;
case 'CANCELED':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
BX('w4a_set_quote').setAttribute('style','display: none;');
break;
case 'REJECTED':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
BX('w4a_set_quote').setAttribute('style','display: none;');
break;
case 'SIGNED':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: inline-block;');
BX('w4a_set_quote').setAttribute('style','display: none;');
break;
case 'CREATED':
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','SEND_TO_SUBMIT');
BX('w4a_get_quote').setAttribute('style','display: inline-block;')
BX('w4a_set_quote').setAttribute('style','display: inline-block;')
break;
default:
BX('w4a_get_quote').innerHTML = statusName;
BX('w4a_get_quote').setAttribute('data-quote',data['UF_QUOTE_ID']);
BX('w4a_get_quote').setAttribute('data-status',status);
BX('w4a_get_quote').setAttribute('data-action','VIEW');
BX('w4a_get_quote').setAttribute('style','display: none;')
BX('w4a_set_quote').setAttribute('style','display: inline-block;')
break;
}
}
BX.closeWait(target, waiter);
return true;
},
onfailure: function(data)
{
BX.closeWait(target, waiter);
return false;
}
});
return true;
},
}
});
}, |