Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }