Exemplo n.º 1
0
        protected override OpportunityInStageData FormIntermediateStageRecord(Entity entity,
                                                                              OpportunityStageData stage)
        {
            OpportunityInStageData oppInStageData = base.FormIntermediateStageRecord(entity, stage);

            return(FillOwnerId(entity, oppInStageData));
        }
Exemplo n.º 2
0
        protected override OpportunityInStageData FormNewStageHistoryRecord(Entity entity,
                                                                            OpportunityStageData newStageData)
        {
            OpportunityInStageData oppInStageData = base.FormNewStageHistoryRecord(entity, newStageData);

            return(FillOwnerId(entity, oppInStageData));
        }
Exemplo n.º 3
0
 protected override void ProcessIntermediateStages(Entity entity, OpportunityStageData oldStageData,
                                                   OpportunityStageData newStageData)
 {
     if (IsLastStageSuccessful(newStageData))
     {
         base.ProcessIntermediateStages(entity, oldStageData, newStageData);
     }
 }
Exemplo n.º 4
0
 protected override void ProcessIntermediateStages(Guid entityId, Guid newStageOwnerId,
                                                   OpportunityStageData oldStageData, OpportunityStageData newStageData)
 {
     if (newStageData.IsSuccessful && newStageData.IsEnd || !newStageData.IsEnd)
     {
         base.ProcessIntermediateStages(entityId, newStageOwnerId, oldStageData, newStageData);
     }
 }
Exemplo n.º 5
0
        protected override void ProcessPreviousStages(Guid entityId, Guid newStageOwnerId,
                                                      OpportunityStageData oldStageData, OpportunityStageData newStageData)
        {
            base.ProcessPreviousStages(entityId, newStageOwnerId, oldStageData, newStageData);
            var historicalStages = EntityInStageRepository.GetHistoricalOpportunityInStage(entityId, newStageData.Number);

            EntityInStageRepository.BulkUpdate(historicalStages, new Dictionary <string, object> {
                { "Historical", true }
            });
        }
        protected List <OpportunityStageData> GetIntermediateStages(List <OpportunityStageData> stages, OpportunityStageData oldStage,
                                                                    OpportunityStageData newStage)
        {
            var intermStages = new List <OpportunityStageData>();

            if (oldStage == null)
            {
                intermStages = stages
                               .Where(stage => stage.Number < newStage.Number)
                               .ToList();
            }
            else
            {
                intermStages = stages.Where(stage => (stage.Number > oldStage.Number) && stage.Number < newStage.Number)
                               .ToList();
            }
            return(intermStages
                   .Where(stage => !stage.End)
                   .OrderBy(stage => stage.Number)
                   .ToList());
        }
        /// <summary>
        /// Synchronizes stages for opportunity.
        /// </summary>
        /// <param name="oldStageId">Last opportunity stage identifier</param>
        /// <param name="opportunity">Current opportunity state</param>
        protected virtual void SynchronizeStage(Guid oldStageId, Entity opportunity)
        {
            List <OpportunityStageData> stages = GetStagesCollection();
            var oppId           = opportunity.GetTypedColumnValue <Guid>("Id");
            var newStageId      = opportunity.GetTypedColumnValue <Guid>("StageId");
            var newStageOwnerId = opportunity.GetTypedColumnValue <Guid>("OwnerId");
            OpportunityStageData newStageData = stages.FirstOrDefault(s => s.StageId == newStageId);
            OpportunityStageData oldStageData = stages.FirstOrDefault(s => s.StageId == oldStageId);

            if (newStageData == null)
            {
                return;
            }
            if (oldStageData != null)
            {
                UpdateDueDateForLastStage(oldStageId, oppId);
            }
            bool isStagePrevious = oldStageData != null && newStageData.Number < oldStageData.Number;

            if (isStagePrevious)
            {
                UpdateIntermediateStages(newStageData.Number, oppId);
            }
            else
            {
                var intermStages = GetIntermediateStages(stages, oldStageData, newStageData);
                CreateIntermediateStages(oppId, newStageOwnerId, intermStages);
            }
            var currentDate = UserConnection.CurrentUser.GetCurrentDateTime();
            OpportunityInStageData oppData = new OpportunityInStageData {
                OpportunityId = opportunity.GetTypedColumnValue <Guid>("Id"),
                StageData     = newStageData,
                OwnerId       = newStageOwnerId,
                Date          = currentDate.AddSeconds(newStageData.Number)
            };

            CreateOpportunityInStage(oppData);
        }
Exemplo n.º 8
0
 private bool IsLastStageSuccessful(OpportunityStageData newStageData)
 {
     return(newStageData.IsSuccessful && newStageData.IsEnd || !newStageData.IsEnd);
 }