![]() |
#8 |
Участник
|
А попробуйте со след. содержанием метода update()
X++: void update(boolean _updatePriceDate = true) { boolean updPrice; FormRun formRun; FormObjectSet formObjSet; int i; InventTable inventTable; if (this.orig().Price != this.Price || this.orig().Markup != this.Markup || this.orig().PriceUnit != this.PriceUnit) { updPrice = true; if (_updatePriceDate) this.PriceDate = systemdateget(); } ttsbegin; super(); if (updPrice) { if (this.ModuleType != ModuleInventPurchSales::Sales) InventTable::updateAutoSalesPrice(this.ItemId, this.PriceDate); else { if (this.isFormDataSource()) { // refresh and reread inventTable datasource if exists in form formRun = this.dataSource().formRun(); for (i=1; i<= formRun.dataSourceCount(); i++) { if (formRun.dataSource(i).cursor().TableId == tablenum(InventTable)) { formObjSet = formRun.dataSource(i); inventTable = formObjSet.cursor(); break; } } if (!inventTable) { inventTable = InventTable::find(this.ItemId, true); } if (inventTable) { if (inventTable.updateAutoSalesPercent() && formObjSet) { formObjSet.refresh(); formObjSet.reread(); } } } } } ttscommit; } X++: server boolean updateAutoSalesPercent() { InventTableModule inventTableSales; InventTableModule inventTableBasic; ; if (this.SalesModel == SalesPriceModel::None) return false; inventTableSales = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Sales,true); if (this.SalesPriceModelBasic == SalesPriceModelBasic::PurchPrice) inventTableBasic = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Purch); else inventTableBasic = InventTableModule::find(this.ItemId,ModuleInventPurchSales::Invent); if (! inventTableSales || ! inventTableBasic) return false; switch(this.SalesModel) { case SalesPriceModel::Contributionratio: if (inventTableSales.pcsPrice()) { this.SalesContributionRatio = (inventTableSales.pcsPrice() - inventTableBasic.pcsPrice()) * 100 / inventTableSales.pcsPrice(); } break; case SalesPriceModel::PercentMarkup: if (inventTableBasic.pcsPrice()) { this.SalesPercentMarkup = (inventTableSales.pcsPrice() - inventTableBasic.pcsPrice()) * 100 / inventTableBasic.pcsPrice(); } break; default: } this.update(); return true; } |
|
|
За это сообщение автора поблагодарили: Starling (1). |