01.08.2008, 00:44 | #1 |
китайский стажер
|
О "Check Cost Price" в закрытии склада DAX4
В закрытии склада есть две проверочные процедуры, которые нигде толком не описаны. Так как меня попросили объяснить как вообще работает все закрытие склада, то пришлось начать разбираться с того, в каком случае оно не работает.
Одна из процедур - проверка CostPrice. Может быть кому-нибудь тоже будет полезно знать логику, так что делюсь: 1. Идем по таблице InventTrans, группировки InventTransId, Voucher, TransType, TransRefId, DateFinancial, учитываем следующие условия: • receipts.ValueOpen = InventTransOpen::Yes • receipts.StatusIssue = StatusIssue::None • receipts.StatusReceipt = StatusReceipt::Purchased • receipts.TransType != InventTransType::InventTransfer • receipts.TransType != InventTransType::WMSTransport • receipts.TransType != InventTransType::QuarantineOrder • receipts.TransType != InventTransType::Production or not ignoreProduction (из диалога) • receipts.PackingSlipReturned == NoYes::No • receipts.DateFinancial <= toDate или пустое toDate из диалога • receipts.Qty > 0 2. Считаем InventTrans.CostAmountStd = currency::amount((InventTrans.CostAmountPosted + InventTrans.CostAmountAdjustment)/ InventTrans.Qty); 3. receiptCostPricePcsMax = CostPricePcsMaxValue в inventParameters; 4. Если costPriceBase из диалога не CostPriceBase::Median, то baseCostPricePcs = inventCostPricePcs = standart Cost Price из InventTable и InventDim, иначе baseCostPricePcs = medianCostPricePcs = currency::amount((receipt.CostAmountStd + prevValue)/2); где мы берем две средние записи из InventTrans для расчета 5. minDeviation, maxDeviationPercent (по умолчанию 50%) – из диалога к отчету 6. Печатаем следующие транзакции с сообщениями об ошибках • baseCostPricePcs < 0 • receipt.CostAmountStd < 0 • receipt.CostAmountStd > receiptCostPricePcsMax • baseCostPricePcs >= 0 and abs(receipt.CostAmountStd - baseCostPricePcs) > minDeviation) • baseCostPricePcs >= 0 and abs(receipt.CostAmountStd - baseCostPricePcs) > minDeviation) and deviation > maxDeviationPercent; где deviation = abs(receipt.CostAmountStd - baseCostPricePcs)*100 / baseCostPricePcs |
|