Цитата:
Сообщение от
Pantera
Меня интересует вкладка ЦЕНА/СКИДКА
Почему не идут там обновления, и влияет ли данная вкладка на что либо?
Это при том, что модель формирования цены: СРЕДНЕВЗВЕШЕННАЯ.
И опорная цена не обновляется.Там прописывается первоночальная,самая первая цена проставленная в Договоре.
Вкладка Цена/Скидка это интерфейс к таблице InventTableModule, цены из которой могут применяться при Стандартной модели формировании стоимости.
Вот вариант расчета опорной стоимости до наших доработок (метод на таблице PriceBaseData)
X++:
display CostPrice baseCostPrice()
{
PriceModel priceModel = this.priceModel();
;
switch (priceModel.CostModel)
{
case PriceCostModel::Purch:
return Currency::amount(this.lastPurchaisePrice());
case PriceCostModel::Standard:
return Currency::amount(InventTableModule::find(this.ItemId, ModuleInventPurchSales::Invent).price());
default:
return InventSum::costPriceAvg(this.ItemId);
}
}
По умолчанию расчитывается средневзвешенная цена, при модели формировании стоимости Стандартная - идем в InventTableModule. Ну и здесь же Последняя цена закупки.
У нас модель формирования стоимости Стандартная не используется - поэтому цены с вкладки Цена/Скидка ни на что не влияют. При средневзвешенной модели формировании стоимости тоже влиять не должно.
Если модель средневзвешенная то опорная должна меняться по алгоритму (метод на InventSum)
X++:
static server CostPrice costPriceAvg(ItemId _itemId)
{
InventSum inventSum;
InventDimParm inventDimParm;
;
InventDimParm.ItemIdFlag = NoYes::Yes;
inventSum = InventSum::findSum(_itemId, null, inventDimParm, InventSumFields::All);
inventSum.ItemId = _itemId;
return Currency::amount(inventSum.costPricePcs());
}
Display CostPrice costPricePcs()
{
InventModelGroup inventModelGroup = InventModelGroup::find(InventTable::find(this.itemId).modelGroupId);
if (inventModelGroup.standardCost ||
this.postedQty + (inventModelGroup.inclPhysicalValueInCost ? this.received - this.deducted : 0) <= 0 ||
this.postedValue + (inventModelGroup.inclPhysicalValueInCost ? this.physicalValue : 0) <= 0
)
{
return InventTable::findCostPcsPrice(this.itemId, this.inventDimId);
}
return (this.postedValue + (inventModelGroup.inclPhysicalValueInCost ? this.physicalValue : 0)) /
(this.postedQty + (inventModelGroup.inclPhysicalValueInCost ? this.received - this.deducted : 0));
}
И это только в том случае, если у нас с вами прежние доработки совпадают.
У нас этот код уже переписан, и средневзвешенная считается иначе.