oknosoft / windowbuilder

Окнософт:Заказ дилера
http://www.oknosoft.ru/zd/
Other
10 stars 19 forks source link

исправление записи характеристики в строку текущей вставки #509

Closed rnpoddor closed 5 years ago

rnpoddor commented 5 years ago

Исправление проблемы порождения лишних строк продукции через диалог Аксессуары и услуги. Проявляется если добавить любую вставку и нажимать на кнопку Рассчитать, а потом Рассчитать и закрыть, в продукции будет несколько одинаковых позиций равные кол-ву нажатий.

В методе process_add_product_list модуля doc_calc_order.js, в расчете спецификации по текущей вставке, характеристика не записывается в row_spec, это ведет к повторному добавлению строки продукции, т.к. при попадании в метод create_product_row, характеристика будет не уникальной, а нулевой, следовательно будет создана заново.

unpete commented 5 years ago

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

rnpoddor commented 5 years ago

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

create_product_row({row_spec, elm, len_angl, params, create, grid}) {

    const row = row_spec instanceof $p.DpBuyers_orderProductionRow && !row_spec.characteristic.empty() && row_spec.characteristic.calc_order === this ?
      row_spec.characteristic.calc_order_row :
      this.production.add({
        qty: 1,
        quantity: 1,
        discount_percent_internal: $p.wsql.get_user_param('discount_percent_internal', 'number')
      });
unpete commented 5 years ago

Если хотите решения, опишите шаги для воспроизведения проблемы. Без проверки, принять PR не могу.

rnpoddor commented 5 years ago

Если хотите решения, опишите шаги для воспроизведения проблемы.

Я же написал в первом комментарии. Заходите в Аксессуары и услуги, добавляете любую вставку и далее нажимаете несколько раз кнопку Рассчитать, далее на кнопку Рассчитать и закрыть, получаем несколько одинаковых строк продукции.

unpete commented 5 years ago

Исправление row_spec.characteristic = row_prod.characteristic; - правильное. Меня смущало имя переменной row_spec - его поменяю на row_dp. Речь ведь, не о какой-то невнятной спецификации, а о строках исходной обработки и строках заказа