Подстановка платежного реквизита

Здравствуйте!

При выборе контрагента в поле [Клиент] хотелось бы, чтобы поле [Реквизиты клиента] заполнялось автоматически, если у контрагента один реквизит. Возможно ли это сделать?

Заранее благодарю за помощь.

Нравится

5 комментариев

Настолько частая задача, что хотелось бы, чтобы её в коробку добавили.

Так как же эта задача решается не из коробки?

Спасибо за Ваш комментарий. Пожелание на доработку в базовой конфигурации системы отправлено соответствующей команде разработки продукта.

ставим attributes

"CustomerBillingInfo": {
	dependencies: [
		{
				columns: ["Account"],
				methodName: "setCustomerBillingInfo"
		}
	]
}

пишем функцию, которая делает всю работу (кроме того, есть колонка в реквизитах, которая определяет, что этот реквизит должен ставиться по умолчанию).

	   /**
             * Установка BillingInfo по условию: 1) Если у контрагента всего один BillingInfo то
             *									 2) Вставляем его объект в BillingInfo
             *                                   3) Если больше - ищем по умолчанию
            */
			setCustomerBillingInfo: function() {
                var account = this.get("Account");
				if (account) {
					var esq = Ext.create("Terrasoft.EntitySchemaQuery", {
						rootSchemaName: "AccountBillingInfo"
					});
                    esq.addColumn("Id");
                    esq.addColumn("Name");
                    esq.addColumn("UsrDefault");
					esq.filters.add("AccountFilter", this.Terrasoft.createColumnFilterWithParameter(
						this.Terrasoft.ComparisonType.EQUAL, "Account", account.value));
					esq.getEntityCollection(function(response) {
						if (response && response.success) {
							var collection = response.collection;
							if (collection && collection.getCount() > 0) {
                               var items = collection.getItems();
                               if (items.length === 1) {
                                   var item = items[0];
                                   this.set("CustomerBillingInfo", {value: item.get("Id"), displayValue: item.get("Name")});
                               }
                               else {
                                   items.forEach(function(item) {
                                       if (item.get("UsrDefault")) {
                                           this.set("CustomerBillingInfo", {value: item.get("Id"), 
                                               displayValue: item.get("Name")});
                                           return;
                                       }
                                   }, this);
                               }
							}
						}
					}, this);
				}
			}

Владимир, благодарю! Я был на правильном пути, но мне не хватало вот этой строчки кода:

this.set("CustomerBillingInfo", 
    {value: item.get("Id"), displayValue: item.get("Name")});
Показать все комментарии