コード例 #1
0
        /// <summary>
        /// Create Entry On Schedule Tab
        /// </summary>
        /// <param name="C_Contract_ID">Contract ID</param>
        /// <param name="cycles">No of Invoices</param>
        /// <returns>true, if Schedules created</returns>
        private bool EnterSchedules(int C_Contract_ID, int cycles)
        {
            X_C_ContractSchedule CSchedule = null;
            X_C_Contract         contract  = new X_C_Contract(GetCtx(), C_Contract_ID, Get_TrxName());
            DateTime             start     = (DateTime)contract.GetStartDate();
            int frequency = contract.GetC_Frequency_ID();

            string   Sql        = "SELECT NoOfMonths FROM C_Frequency WHERE C_Frequency_ID=" + frequency;
            int      months     = Util.GetValueOfInt(DB.ExecuteScalar(Sql, null, Get_TrxName()));
            int      totalcount = months * cycles;
            DateTime end        = start.AddMonths(totalcount);

            if (cycles > 0)
            {
                for (int i = 1; i <= cycles; i++)
                {
                    CSchedule = new X_C_ContractSchedule(GetCtx(), 0, Get_TrxName());
                    CSchedule.SetC_Contract_ID(C_Contract_ID);
                    CSchedule.SetC_BPartner_ID(contract.GetC_BPartner_ID());
                    CSchedule.SetFROMDATE(start);
                    CSchedule.SetUnitsDelivered(contract.GetQtyEntered());
                    if (i != cycles)
                    {
                        CSchedule.SetEndDate(start.AddMonths(months).AddDays(-1));
                        start = start.AddMonths(months);
                    }
                    else
                    {
                        CSchedule.SetEndDate(end);
                    }
                    CSchedule.SetM_Product_ID(contract.GetM_Product_ID());
                    CSchedule.SetM_AttributeSetInstance_ID(contract.GetM_AttributeSetInstance_ID());
                    CSchedule.SetTotalAmt(contract.GetLineNetAmt());
                    CSchedule.SetGrandTotal(contract.GetGrandTotal());
                    CSchedule.SetTaxAmt(contract.GetTaxAmt());

                    // if Surcharge Tax is selected on Tax, then set value in Surcharge Amount
                    if (CSchedule.Get_ColumnIndex("SurchargeAmt") > 0)
                    {
                        CSchedule.SetSurchargeAmt(contract.GetSurchargeAmt());
                    }

                    CSchedule.SetC_UOM_ID(contract.GetC_UOM_ID());
                    CSchedule.SetPriceEntered(contract.GetPriceEntered());
                    CSchedule.SetProcessed(true);
                    if (!CSchedule.Save())
                    {
                        log.Info("Contract Schedule not Saved for Service Contract no: " + contract.GetDocumentNo());
                        return(false);
                    }
                }
            }
            return(true);
        }