Adempiere - Как спроектировать / вызвать 2 кнопки CreateLinesFrom в том же окне

В моей настройке я хочу создать 2 формы CreateLineFrom в том же окне / таблице в WEBUI.

Обычно мы вызываем наш файл WClass в WCreateFromFactory (статический, давая tableID и имя класса) в Zkwebui

Мой вопрос, как использовать другую форму "CreateLineFrom" в том же окне?

2 ответа

Если вам нужна еще одна функциональность кнопки " Создать строку из" только путем изменения конфигурации, вам нужно следовать следующему пункту

  1. Удалить индекс AD_FIELD_COLUMN таблицы AD_Field,
  2. Создайте еще одну запись во вкладке "Поле" окна "Окно", "Вкладка и поле".

Пример:- Имя поля в виде строк ящика From2
Колонка AS CrateFrom и сохранить запись.
Теперь и с помощью вкладки последовательности полей вы можете выровнять вторую кнопку Crate Lines From2.

Эту вещь вы можете сделать без изменения кода.


Если вы готовы изменить код, измените класс AbstractADWindowPanel.java

в методе actionButton вы можете найти

    else if (col.equals("CreateFrom")) code 

просто обновите этот код следующим образом

 else if (col.equals("CreateFrom") || col.equals("newFieldName"))

Теперь вы можете добавить желаемый столбец выше в следующих таблицах, и столбец должен быть newFieldName (что бы вы ни писали в коде Java) C_Invoice, M_InOut, M_Movement, C_BankStatement.

Шаги, чтобы показать поле в форме:-

  1. Открыть таблицу А Окностолбца А выбрать над любой таблицей
  2. Создайте элемент System с помощью newFieldName и сохраните его
  3. Введите имя и имя столбца базы данных как
  4. Выберите длину как 1
  5. Ссылка как кнопка и сохранение записи
  6. Теперь нажмите на кнопку синхронизации столбца
  7. Теперь откройте любое соответствующее окно, поле вкладки и выберите вкладку
  8. Нажмите на кнопку Создать поля, Вы получите вновь созданную кнопку
  9. Вы можете выровнять поле, используя вкладки " Поле" и " Последовательность полей".

дайте мне знать, почему вам нужно 2 одинаковых поля в одной вкладке, это связано с безопасностью? если это так, то мы можем достичь очень простого пути

В adempiere функциональность не может создать форму 2 CLF в одном и том же окне, потому что hashmap хранит последнее заданное значение, т.е. когда я его выполняю, вызываю " WCreateFrom2UI.class"

private static HashMap<Integer, Class<? extends ICreateFrom>> registeredClasses = null;

static
{       
    s_registeredClasses.put(I_C_Order.Table_ID, WCreateFrom1UI.class);   
    s_registeredClasses.put(I_C_Order.Table_ID, WCreateFrom2UI.class);  
}

Создана новая кнопка с именем "CreateFromIM", добавлено действие в AbstractADwindowPanel и создан новый класс WCreateFromIMFactory, который является копией WCreateFromFactory

    if (col.equals("CreateFrom")  ) {
        ICreateFrom cf = WCreateFromFactory.create(curTab);

    } 
    else if (col.equals("CreateFromIM") )  
        ICreateFrom cf = WCreateFromIMFactory.createIM(curTab);

        } 
Другие вопросы по тегам