/// <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); }