package org.openlmis.core.model.helper; import org.openlmis.core.exceptions.LMISException; import org.openlmis.core.manager.MovementReasonManager; import org.openlmis.core.model.RnrFormItem; import org.openlmis.core.model.StockMovementItem; import java.util.List; public class RnrFormHelper { public void initRnrFormItemWithoutMovement(RnrFormItem rnrFormItem, long lastRnrInventory) throws LMISException { rnrFormItem.setReceived(0); rnrFormItem.setIssued(0); rnrFormItem.setAdjustment(0); rnrFormItem.setCalculatedOrderQuantity(0L); rnrFormItem.setInitialAmount(lastRnrInventory); rnrFormItem.setInventory(lastRnrInventory); } public void assignTotalValues(RnrFormItem rnrFormItem, List<StockMovementItem> stockMovementItems) { long totalReceived = 0; long totalIssued = 0; long totalAdjustment = 0; for (StockMovementItem item : stockMovementItems) { if (MovementReasonManager.MovementType.RECEIVE == item.getMovementType()) { totalReceived += item.getMovementQuantity(); } else if (MovementReasonManager.MovementType.ISSUE == item.getMovementType()) { totalIssued += item.getMovementQuantity(); } else if (MovementReasonManager.MovementType.NEGATIVE_ADJUST == item.getMovementType()) { totalAdjustment -= item.getMovementQuantity(); } else if (MovementReasonManager.MovementType.POSITIVE_ADJUST == item.getMovementType()) { totalAdjustment += item.getMovementQuantity(); } } rnrFormItem.setReceived(totalReceived); rnrFormItem.setIssued(totalIssued); rnrFormItem.setAdjustment(totalAdjustment); Long inventory = stockMovementItems.get(stockMovementItems.size() - 1).getStockOnHand(); rnrFormItem.setInventory(inventory); rnrFormItem.setCalculatedOrderQuantity(calculatedOrderQuantity(totalIssued, inventory)); } private long calculatedOrderQuantity(long totalIssued, Long inventory) { Long totalRequest = totalIssued * 2 - inventory; return totalRequest > 0 ? totalRequest : 0; } }