public void SetOSAgainstDOItem(DeliveryOrderItem grni) { double qtyAmount = grni.GetAmountInSmallestUnit();//grni.QYTAMOUNT; if (qtyAmount <= 0) { return; } if (AGAINST_DO_STATUS == AgainstStatus.Close) { throw new Exception("SO Item already fully delivered :" + this.PART.NAME); } if (qtyAmount > OUTSTANDING_AMOUNT_TO_DO) { throw new Exception("DO Item Amount exceed SO Outstanding Item Amount :" + this.PART.NAME); } OUTSTANDING_AMOUNT_TO_DO = OUTSTANDING_AMOUNT_TO_DO - qtyAmount; DELIVERED_AMOUNT = DELIVERED_AMOUNT + qtyAmount; if (isValidToClose()) { AGAINST_DO_STATUS = AgainstStatus.Close; } else { AGAINST_DO_STATUS = AgainstStatus.Outstanding; } ((SalesOrder)EVENT).UpdateAgainstDOStatusSO(); }
public void UnSetOSAgainstDOItem(DeliveryOrderItem grni) { double qtyAmount = grni.GetAmountInSmallestUnit();//grni.QYTAMOUNT; if (qtyAmount > this.GetAmountInSmallestUnit() || OUTSTANDING_AMOUNT_TO_DO + qtyAmount > this.GetAmountInSmallestUnit()) { throw new Exception("DO Item revise Amount exceed SO Item Amount :" + this.PART.NAME); } OUTSTANDING_AMOUNT_TO_DO = OUTSTANDING_AMOUNT_TO_DO + qtyAmount; DELIVERED_AMOUNT = DELIVERED_AMOUNT - qtyAmount; // if (OUTSTANDING_AMOUNT_TO_DO > 0) if (DELIVERED_AMOUNT > 0) { AGAINST_DO_STATUS = AgainstStatus.Outstanding; } else { AGAINST_DO_STATUS = AgainstStatus.Open; } ((SalesOrder)EVENT).UpdateAgainstDOStatusSO(); }