youssefabohaty / openbravoposru

Automatically exported from code.google.com/p/openbravoposru
0 stars 0 forks source link

Автоматическое открытие окна ввода характеристик товара #149

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Можно сделать чтобы при добавлении товара 
в список продаж, если у товара предусмотрен 
ввод характеристик, окно ввода 
характеристик открывалось автоматически? 

Original issue reported on code.google.com by dmg...@gmail.com on 17 Jul 2011 at 7:31

GoogleCodeExporter commented 9 years ago
Надо подумать, такая функция не помешает.

Original comment by svinin...@gmail.com on 6 Sep 2011 at 3:29

GoogleCodeExporter commented 9 years ago
Уже реализовал...

Original comment by dmg...@gmail.com on 6 Sep 2011 at 3:52

GoogleCodeExporter commented 9 years ago
Интересно узнать подробности.

Original comment by svinin...@gmail.com on 6 Sep 2011 at 3:54

GoogleCodeExporter commented 9 years ago
Подробности:

com.openbravo.pos.sales.JPanelTicket.java

{{{
protected void addTicketLine(TicketLineInfo oLine) {

        if (executeEventAndRefresh("ticket.addline", new ScriptArg("line", oLine)) == null) {

            if (oLine.isProductCom()) {
                // Comentario entonces donde se pueda
                int i = m_ticketlines.getSelectedIndex();

                // me salto el primer producto normal...
                if (i >= 0 && !m_oTicket.getLine(i).isProductCom()) {
                    i++;
                }

                // me salto todos los productos auxiliares...
                while (i >= 0 && i < m_oTicket.getLinesCount() && m_oTicket.getLine(i).isProductCom()) {
                    i++;
                }

                if (i >= 0) {
                    m_oTicket.insertLine(i, oLine);
                    m_ticketlines.insertTicketLine(i, oLine); // Pintamos la linea en la vista...
                } else {
                    Toolkit.getDefaultToolkit().beep();
                }
            } else {
                // Producto normal, entonces al finalnewline.getMultiply()
                m_oTicket.addLine(oLine);
                m_ticketlines.addTicketLine(oLine); // Pintamos la linea en la vista...
            }

            visorTicketLine(oLine);
            printPartialTotals();
            stateToZero();

            // открываем окно ввода характеристик, если они предусмотрены
            int i = m_ticketlines.getSelectedIndex();
            try {
                TicketLineInfo line = m_oTicket.getLine(i);
                JProductAttEdit attedit = JProductAttEdit.getAttributesEditor(this, m_App.getSession());
                attedit.editAttributes(line.getProductAttSetId(), line.getProductAttSetInstId());
                attedit.setVisible(true);
                if (attedit.isOK()) {
                    line.setProductAttSetInstId(attedit.getAttributeSetInst());
                    line.setProductAttSetInstDesc(attedit.getAttributeSetInstDescription());
                    paintTicketLine(i, line);
                }
            } catch (BasicException ex) {
                // тут можно выполнять код, если у товара не установлены характеристики
            }

            // event receipt
            executeEventAndRefresh("ticket.change");
        }
    }
}}}

Нужно сделать Issue150, неудобно каждый раз 
открывать окно при считывании нескольких 
характеристик сканером штрих-кода.

Original comment by dmg...@gmail.com on 6 Sep 2011 at 4:47

GoogleCodeExporter commented 9 years ago
Великолепно!!! Только решил дополнить от 
себя, удаление строки если характеристика 
не введена, то есть если характеристика 
задана для товара, ввести в чек товар без 
неё невозможно:

            // открываем окно ввода характеристик, если они предусмотрены
            int i = m_ticketlines.getSelectedIndex();
            try {
                TicketLineInfo line = m_oTicket.getLine(i);
                JProductAttEdit attedit = JProductAttEdit.getAttributesEditor(this, m_App.getSession());
                attedit.editAttributes(line.getProductAttSetId(), line.getProductAttSetInstId());
                attedit.setVisible(true);
                if (attedit.isOK()) {
                    line.setProductAttSetInstId(attedit.getAttributeSetInst());
                    line.setProductAttSetInstDesc(attedit.getAttributeSetInstDescription());
                    paintTicketLine(i, line);
                } else {
                     // если нажата кнопка отмены, окно закрывается, строка с текущим товаром удаляется
                    removeTicketLine(i);
                }
            } catch (BasicException ex) {
                // тут можно выполнять код, если у товара не установлены характеристики
            }

Сейчас думаю для гибкости настройки 
рабочего места кассира ввести параметр 
attributesautoset разрешающий обязательный ввод 
характеристик, если он будет не задан, 
выбор будет за продавцом.

Original comment by svinin...@gmail.com on 7 Sep 2011 at 3:59

GoogleCodeExporter commented 9 years ago
Всё добавил в r554. В коде нашего проекта 
автоматически будет срабатывать выбор 
характеристик, если в ресурсе Ticket.Buttons 
задано:

    <attributesautoset value="true"/>

Дальше вижу развитие этой темы в двух 
направлениях:

Первое, автоматический запуска панели 
характеристик в складских панелях. При 
этом attributesautoset будет доступен и в них, 
подробнее Issue 164.

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

Если будет интерес к этой теме 
присоединяйтесь к проекту, я Ваш адрес 
добавил в участники проекта, если будет 
много кода для коммитов без проблем 
добавлю в разработчики, сможете сами 
вносить изменения или делать ветки под 
себя. Более детально пишите на адрес 
svininykh@gmail.com или звоните в скайп svininykh, зовут 
меня Андрей Свининых.

Original comment by svinin...@gmail.com on 7 Sep 2011 at 4:33

GoogleCodeExporter commented 9 years ago

Original comment by svinin...@gmail.com on 7 Sep 2011 at 4:43