![]() |
#12 |
Moderator
|
Цитата:
Вот вариант расчета опорной стоимости до наших доработок (метод на таблице 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); } } У нас модель формирования стоимости Стандартная не используется - поэтому цены с вкладки Цена/Скидка ни на что не влияют. При средневзвешенной модели формировании стоимости тоже влиять не должно. Если модель средневзвешенная то опорная должна меняться по алгоритму (метод на 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)); } У нас этот код уже переписан, и средневзвешенная считается иначе. |
|
Теги |
axapta retail, цена закупки, ax3.0 |
|
|