Example #1
0
        // Методы создания главных объектов для финансового Stage и для ObligationUnit (DeliveryUnit и PaymentUnit)''

        public crmStageMain CreateStageMain(crmStage stage)
        {
            if (stage.StageMain == null)
            {
                crmStageMain StageMain = new crmStageMain(this.Session);
                StageMain.Current      = stage;
                StageMain.ContractDeal = ContractDeal;
                stage.StageMain        = StageMain;
            }
            return(stage.StageMain);
        }
Example #2
0
        //private crmDealWithStageVersion _Current;
        //[Aggregated]
        //[ExpandObjectMembers(ExpandObjectMembers.InDetailView)]
        //public crmDealWithStageVersion Current {
        //    get { return _Current; }
        //    set { SetPropertyValue<crmDealWithStageVersion>("Current", ref _Current, value); }
        //}

        #endregion


        #region МЕТОДЫ

        #endregion

        #region IVersionBusinessLogicSupport

        public void ApproveVersion(crmDealWithStageVersion scVersion)
        {
            crmDealWithStageVersion newcur = null;

            foreach (crmDealWithStageVersion cont in this.DealVersions) //DealVersions)
            {
                if (cont == scVersion)
                {
                    newcur = cont;
                }
            }
            if (newcur == null)
            {
                throw new Exception("Version is not in Version List");
            }
            VersionHelper vHelper;

            if (scVersion.VersionState == VersionStates.VERSION_NEW)
            {
                vHelper = new VersionHelper(this.Session);
                vHelper.SetVersionStateExt(scVersion, VersionStates.VERSION_CURRENT);

                crmDealWithStage dealVersionMainObj = (crmDealWithStage)scVersion.MainObject;

                //scVersion.StageStructure.Stages[0].DeliveryPlan.DeliveryUnits[0].DeliveryItems[0]
                // Здесь вставить перебор FinanceDeal и прочее с целью добавления в коллекцию StageMains и ObligationUnitMains
                // В коллекциии scVersion.Stages находятся все этапы из полной их иерархии (т.е. рекурсия не нужна)
                IList <crmStage> stageList = GetStageList(scVersion);
                foreach (crmStage stage in stageList)
                {
                    if (stage.StageType != StageType.FINANCE)
                    {
                        continue;
                    }
                    crmStageMain stageMain = scVersion.CreateStageMain(stage);
                    if (dealVersionMainObj.StageMains.IndexOf(stageMain) == -1)
                    {
                        dealVersionMainObj.StageMains.Add(stageMain);
                    }

                    // Пополнение коллекции ObligationUnitMain (имеются две разновидности: Delivery и Payment)
                    //foreach (crmObligationUnitMain obligationUnitMain in GetFinanceDeliveryList(stage.DeliveryPlan)) {
                    foreach (crmObligationUnitMain obligationUnitMain in scVersion.CreateFinanceDeliveryList(stage.DeliveryPlan))
                    {
                        if (dealVersionMainObj.ObligationUnitMains.IndexOf(obligationUnitMain) == -1)
                        {
                            dealVersionMainObj.ObligationUnitMains.Add(obligationUnitMain);
                        }
                    }

                    //foreach (crmObligationUnitMain paymentUnitMain in GetFinancePaymentList(stage.PaymentPlan)) {
                    foreach (crmObligationUnitMain paymentUnitMain in scVersion.CreateFinancePaymentList(stage.PaymentPlan))
                    {
                        if (dealVersionMainObj.ObligationUnitMains.IndexOf(paymentUnitMain) == -1)
                        {
                            dealVersionMainObj.ObligationUnitMains.Add(paymentUnitMain);
                        }
                    }
                }

                // Отрабатывание регистров
                RegisterClear(scVersion);
                RegisterOperations(scVersion);
            }
            else if (scVersion.VersionState == VersionStates.VERSION_PROJECT)
            {
                foreach (crmDealWithStageVersion cont in this.DealVersions)   //DealVersions) {
                {
                    if (cont == scVersion)
                    {
                        continue;
                    }
                    if (cont.VersionState == VersionStates.VERSION_CURRENT)
                    {
                        vHelper = new VersionHelper(this.Session);
                        vHelper.SetVersionStateExt(cont, VersionStates.VERSION_OLD);
                    }
                    else if (cont.VersionState == VersionStates.VERSION_PROJECT)
                    {
                        vHelper = new VersionHelper(this.Session);
                        vHelper.SetVersionStateExt(cont, VersionStates.VERSION_DECLINE);
                    }
                }

                vHelper = new VersionHelper(this.Session);
                vHelper.SetVersionStateExt(scVersion, VersionStates.VERSION_CURRENT);

                this.Current = scVersion;

                crmDealWithStage dealVersionMainObj = (crmDealWithStage)scVersion.MainObject;

                // -- Когда происходит Утверждение не новой версии, то старые этапы нельзя удалять, а можно только закрывать
                foreach (crmStageMain stageMaim in dealVersionMainObj.StageMains)
                {
                    stageMaim.Closed = true;
                    if (stageMaim.DateClosed == null || stageMaim.DateClosed == DateTime.MinValue)
                    {
                        stageMaim.DateClosed = System.DateTime.Now;
                    }
                }
                foreach (crmObligationUnitMain obligationUnitMain in dealVersionMainObj.ObligationUnitMains)
                {
                    obligationUnitMain.Closed = true;
                    if (obligationUnitMain.DateClosed == null || obligationUnitMain.DateClosed == DateTime.MinValue)
                    {
                        obligationUnitMain.DateClosed = System.DateTime.Now;
                    }
                }
                // --

                // Здесь вставить перебор FinanceDeal и прочее с целью добавления в коллекцию StageMains и ObligationUnitMains
                // В коллекции scVersion.Stages находятся все этапы из полной их иерархии (т.е. рекурсия не нужна)
                foreach (crmStage stage in scVersion.Stages)
                {
                    if (stage.StageType != StageType.FINANCE)
                    {
                        continue;
                    }

                    // SHU 2011-11-01 Создаём накрывающий объект для данного этапа с типом Finance
                    if (stage.StageMain == null)
                    {
                        stage.StageMain         = new crmStageMain(this.Session);
                        stage.StageMain.Current = stage;
                    }

                    // Пополнение коллекции StageMains
                    if (dealVersionMainObj.StageMains.IndexOf(stage.StageMain) == -1)
                    {
                        dealVersionMainObj.StageMains.Add(stage.StageMain);
                    }

                    // Пополнение коллекции ObligationUnitMain (имеются две разновидности: Delivery и Payment)
                    foreach (crmObligationUnitMain obligationUnitMain in GetFinanceDeliveryList(stage.DeliveryPlan))
                    {
                        if (dealVersionMainObj.ObligationUnitMains.IndexOf(obligationUnitMain) == -1)
                        {
                            dealVersionMainObj.ObligationUnitMains.Add(obligationUnitMain);
                        }
                    }

                    foreach (crmObligationUnitMain paymentUnitMain in GetFinancePaymentList(stage.PaymentPlan))
                    {
                        if (dealVersionMainObj.ObligationUnitMains.IndexOf(paymentUnitMain) == -1)
                        {
                            dealVersionMainObj.ObligationUnitMains.Add(paymentUnitMain);
                        }
                    }
                }

                // Отрабатывание регистров
                RegisterClear(scVersion);
                RegisterOperations(scVersion);
            }
        }