protected override void FSServiceContract_EndDate_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            base.FSServiceContract_EndDate_FieldUpdated(cache, e);

            if (e.Row == null)
            {
                return;
            }

            FSServiceContract fsServiceContractRow = (FSServiceContract)e.Row;

            foreach (FSSchedule fsScheduleRow in ContractSchedules.Select())
            {
                fsScheduleRow.EndDate = fsServiceContractRow.EndDate;
                ContractSchedules.Cache.SetStatus(fsScheduleRow, PXEntryStatus.Updated);
            }
        }
        protected virtual void FSServiceContract_ScheduleGenType_FieldUpdated(PXCache cache, PXFieldUpdatedEventArgs e)
        {
            if (e.Row == null)
            {
                return;
            }

            var fsServiceContractRow = (FSServiceContract)e.Row;

            foreach (FSContractSchedule fsContractScheduleRow in ContractSchedules.Select())
            {
                if (fsContractScheduleRow.LastGeneratedElementDate == null && fsContractScheduleRow.ScheduleGenType != fsServiceContractRow.ScheduleGenType)
                {
                    ContractSchedules.SetValueExt <FSSchedule.scheduleGenType>(fsContractScheduleRow, fsServiceContractRow.ScheduleGenType);
                }
            }
        }
        protected override void _(Events.FieldUpdated <FSServiceContract, FSServiceContract.endDate> e)
        {
            base._(e);

            if (e.Row == null)
            {
                return;
            }

            FSServiceContract fsServiceContractRow = (FSServiceContract)e.Row;

            foreach (FSSchedule fsScheduleRow in ContractSchedules.Select())
            {
                fsScheduleRow.EndDate = fsServiceContractRow.EndDate;
                ContractSchedules.Cache.SetStatus(fsScheduleRow, PXEntryStatus.Updated);
            }
        }