|
15.03.2011, 16:36 | #1 |
Участник
|
Сбор суммы по партионным остаткам
Доброго времени суток.
Добрые люди, подскажите плиз, как (по каким полям) собрать сумму по остаткам? Метод который собирает количественные остатки: X++: static InventQty Get_InventDateSum(ItemId _itemId, InventLocationId _inventLocationId, InventBatchId _inventBatchId, DateStatus endDate ) { InventTrans _inventTrans; InventDim _inventDim; // находим количество пришедшее за период select sum(Qty) from _inventTrans group by ItemId where _inventTrans.ItemId == _itemId && _inventTrans.DatePhysical <= endDate && _inventTrans.StatusIssue != StatusIssue::OnOrder && _inventTrans.StatusIssue != StatusIssue::Picked && _inventTrans.StatusIssue != StatusIssue::ReservOrdered && _inventTrans.StatusIssue != StatusIssue::ReservPhysical && _inventTrans.StatusIssue != StatusIssue::QuotationIssue && _inventTrans.StatusReceipt != StatusReceipt::Registered && _inventTrans.StatusReceipt != StatusReceipt::Arrived && _inventTrans.StatusReceipt != StatusReceipt::QuotationReceipt && _inventTrans.StatusReceipt != StatusReceipt::Ordered join _inventDim where _inventTrans.InventDimId == _inventDim.inventDimId && _inventDim.inventBatchId == _inventBatchId && _inventDim.InventLocationId == _inventLocationId; return _inventTrans.Qty; } |
|
15.03.2011, 16:53 | #2 |
Гость
|
не изобретайте велосипед, кривой и одноколесный
используйте классы INVENTSUM* там есть разные на любой вкус |
|
15.03.2011, 17:01 | #3 |
Участник
|
|
|
15.03.2011, 17:07 | #4 |
Гость
|
ну посмотрите как в InventSumFinancial сделано.
заодно может пару идей оттуда украдете. например, будете не складывать инвенттранс со дня пришествия, а отнимать от инвентсам просто лучше делать сразу правильно, и тогда на багфиксинг меньше будет времени тратиться. и на апгрейд тоже. |
|
15.03.2011, 18:40 | #5 |
Участник
|
Есть нюансы . Поищите по форуму по ключевому слову CostAmountAdjustment.
Например: Себестоимость проданного товара SQL запросом Оборотно-сальдовая ведомость по складу |
|
|
За это сообщение автора поблагодарили: Che (1). |
16.03.2011, 10:23 | #6 |
Участник
|
Господа, нужна критика
Вот каким образом я решил задачку: X++: //+++Che 16032011 static container Get_InventDate_Qty_Cost(ItemId _itemId, InventLocationId _inventLocationId, InventBatchId _inventBatchId, DateStatus endDate ) { InventTrans _inventTrans; InventDim _inventDim; container con; real costSum; // íàõîäèì êîëè÷åñòâî ïðèøåäøåå çà ïåðèîä select sum(Qty),sum(costAmountPosted),sum(costAmountAdjustment) from _inventTrans group by ItemId where _inventTrans.ItemId == _itemId && _inventTrans.DatePhysical <= endDate && _inventTrans.StatusIssue != StatusIssue::OnOrder && _inventTrans.StatusIssue != StatusIssue::Picked && _inventTrans.StatusIssue != StatusIssue::ReservOrdered && _inventTrans.StatusIssue != StatusIssue::ReservPhysical && _inventTrans.StatusIssue != StatusIssue::QuotationIssue && _inventTrans.StatusReceipt != StatusReceipt::Registered && _inventTrans.StatusReceipt != StatusReceipt::Arrived && _inventTrans.StatusReceipt != StatusReceipt::QuotationReceipt && _inventTrans.StatusReceipt != StatusReceipt::Ordered join _inventDim where _inventTrans.InventDimId == _inventDim.inventDimId && _inventDim.inventBatchId == _inventBatchId && _inventDim.InventLocationId == _inventLocationId; costSum = _inventTrans.CostAmountPosted + _inventTrans.CostAmountAdjustment; con = conins(con, 1,_inventTrans.Qty, costsum); return con; } |
|
16.03.2011, 10:38 | #7 |
Участник
|
Ограничения на статус проводки X++: _inventTrans.StatusIssue != StatusIssue::OnOrder && _inventTrans.StatusIssue != StatusIssue::Picked && _inventTrans.StatusIssue != StatusIssue::ReservOrdered && _inventTrans.StatusIssue != StatusIssue::ReservPhysical && _inventTrans.StatusIssue != StatusIssue::QuotationIssue && _inventTrans.StatusReceipt != StatusReceipt::Registered && _inventTrans.StatusReceipt != StatusReceipt::Arrived && _inventTrans.StatusReceipt != StatusReceipt::QuotationReceipt && _inventTrans.StatusReceipt != StatusReceipt::Ordered X++: _inventTrans.DatePhysical != dateNull() P.S.: А для чего вы делатете con = conins(con, 1, Qty, CostSum); вместо более наглядного con = [Qty, CostSum] или даже сразу return [Qty, CostSum]; К слову и в обратную сторону можно также [Qty, CostSum] = con; |
|
16.03.2011, 10:49 | #8 |
Участник
|
Точно! Спасибо!
|
|