Очень интересно... Сравнение кодов в SP2 и SP3 показало следующую картину:
В методе SalesPurchLine::setPriceAgreement()
в SP2 было:
PHP код:
priceDisc = PriceDisc::newFromSalesPurchLine(this, inventDim);
if (priceDisc.findPrice(this.priceGroupId()))
this.initFromPriceDisc(priceDisc);
в SP3 стало:
PHP код:
priceDisc = PriceDisc::newFromSalesPurchLine(this, inventDim);
priceDisc.findPrice(this.priceGroupId());
this.initFromPriceDisc(priceDisc);
Метод PriceDisc::findPrice() определяет цену товара (и некоторые другие параметры строки закупки), исходя из настроек цен/скидок и возвращает true, если находит.
Таким образом, если в SP2 цена не находилась, в строке оставалась ранее введенная. В SP3 установка цены из результатов поиска происходит всегда.
Большой соблазн исправить код метода и возвратить ситуацию SP2, но ведь для чего то это было сделано!
Может ли кто нибудь как то прокомментировать ситуацию?