private void createLineByQty(DimensionValue _dimensionValue)
{
ProdTableJour m_ProdTableJour;
ProdTable m_prodTable;
DimensionAttribute m_DimAttr;
DimensionAttributeValue m_DimAttrValue;
DimensionAttributeValueSet m_DimAttrValueSet;
DimensionAttributeValueSetItem m_DimAttrValueSetItem;
FOA_ProdAllocateSum m_prodAllocateSum;
FOA_ProdAllocateLine m_prodAllocateLine;
;
while select m_ProdTableJour
where m_ProdTableJour.JournalType == ProdJourType::Receipt &&
m_ProdTableJour.TransDate >= g_prodAllocateTable.FromDate &&
m_ProdTableJour.TransDate <= g_prodAllocateTable.ToDate
join m_prodTable
where m_prodTable.ProdId == m_ProdTableJour.ProdId &&
m_prodTable.ProdStatus == ProdStatus::ReportedFinished
exists join m_DimAttrValueSetItem
where m_DimAttrValueSetItem.DimensionAttributeValueSet == m_prodTable.DefaultDimension
exists join m_DimAttrValue
where m_DimAttrValue.RecId == m_DimAttrValueSetItem.DimensionAttributeValue
&& m_DimAttrValue.DisplayValue == _dimensionValue
exists join m_DimAttr
where m_DimAttr.RecId == m_DimAttrValue.DimensionAttribute
&& m_DimAttr.RecId == g_dimAttr.RecId
{
progress.setText(strFmt("@SYS53184", _dimensionValue, m_ProdTableJour.ProdId));
progress.update();
if (!m_prodAllocateSum)
{
m_prodAllocateSum.ProdAllocateTable = g_prodAllocateTable.RecId;
m_prodAllocateSum.DimensionValue = _dimensionValue;
m_prodAllocateSum.AllocateMethod = FOA_AllocateMethod::RouteQty;
m_prodAllocateSum.insert();
}
select firstOnly forUpdate m_prodAllocateLine
where m_prodAllocateLine.ProdId == m_ProdTableJour.ProdId &&
m_prodAllocateLine.ProdAllocateTable == g_prodAllocateTable.RecId &&
m_prodAllocateLine.ProdAllocateSum == m_prodAllocateSum.RecId &&
m_prodAllocateLine.DimensionValue == _dimensionValue;
if (!m_prodAllocateLine)
{
m_prodAllocateLine.ProdAllocateTable = g_prodAllocateTable.RecId;
m_prodAllocateLine.ProdAllocateSum = m_prodAllocateSum.RecId;
m_prodAllocateLine.ProdId = m_ProdTableJour.ProdId;
m_prodAllocateLine.DimensionValue = _dimensionValue;
m_prodAllocateLine.insert();
}
m_prodAllocateLine.ProdQty += m_ProdTableJour.QtyGood + m_ProdTableJour.QtyError;
m_prodAllocateLine.update();
}
if (m_prodAllocateSum)
{
select sum(ProdQty)
from m_prodAllocateLine
where m_prodAllocateLine.ProdAllocateSum == m_prodAllocateSum.RecId;
m_prodAllocateSum.ProdQty += m_prodAllocateLine.ProdQty;
m_prodAllocateSum.update();
}
}