public static ПериодНДС ПолучитьПериод(IObjectSpace os, DateTime date, ref IList <ПериодНДС> periods)
        {
            ПериодНДС result = null;

            if (periods == null)
            {
                periods = os.GetObjects <ПериодНДС>();
            }
            foreach (var period in periods)
            {
                if (period.ДатаС <= date && date < period.ДатаПо.AddDays(1))
                {
                    result = period;
                    break;
                }
            }
            if (result == null)
            {
                result = os.CreateObject <ПериодНДС>();
                result.TimeBorderSet(date);
            }
            return(result);
        }
示例#2
0
        protected override void OnChanged(string propertyName, object oldValue, object newValue)
        {
            base.OnChanged(propertyName, oldValue, newValue);
            if (IsLoading)
            {
                return;
            }
            Decimal old_summa;

            switch (propertyName)
            {
            case "ОснованиеРегНомер":
                if (!String.IsNullOrEmpty(ОснованиеРегНомер))
                {
                    if (ОснованиеДокумент == null || ОснованиеРегНомер != ОснованиеДокумент.егНомер)
                    {
                        ОснованиеДокумент = Session.FindObject <ОснованиеДокумент>(
                            PersistentCriteriaEvaluationBehavior.InTransaction,
                            new BinaryOperator("РегНомер", ОснованиеРегНомер));
                        if (ОснованиеДокумент == null)
                        {
                            Основание = null;
                        }
                    }
                }
                else
                {
                    Основание = null;
                }
                break;

            case "Контейнер":
                if (Контейнер != null)
                {
                    ПериодБУ  = Контейнер.ПериодБУ;
                    ПериодНДС = Контейнер.ПериодНДС;
                }
                break;

            case "ТипКниги":
            case "ПериодНДС":
                ОбновитьСтрокуКниги();
                break;

            case "КнигаСтрока":
                КнигаСтрока old_str = (КнигаСтрока)oldValue;
//                    ОбновитьСтрокуКниги();
                if (old_str != null)
                {
                    ОбновитьСтрокуКнигиВычесть(old_str);
                }
                if (КнигаСтрока != null)
                {
                    ОбновитьСтрокуКнигиДобавить(КнигаСтрока);
                }
                break;

            case "Основание":
                if (Основание != null)
                {
                    if (ОснованиеДокумент == null || Основание != ОснованиеДокумент.Основание)
                    {
                        ОснованиеДокумент = Основание.ДействующийДокумент;
                    }
                    ОбновитьСтрокуКниги();
                }
                else
                {
                    ОснованиеДокумент = null;
                }
                UpdateTypes();
                break;

            case "ОснованиеДокумент":
                if (ОснованиеДокумент != null)
                {
                    Основание = ОснованиеДокумент.Основание;
                }
                break;

            case "ДатаБУ":
                if (Контейнер != null && Контейнер.ПериодБУ != null)
                {
                    ПериодБУ = Контейнер.ПериодБУ;
                }
                else
                {
                    if (ДатаБУ < new DateTime(2015, 1, 1))
                    {
                        break;
                    }
                    ПериодБУ = Session.FindObject <ПериодБУ>(PersistentCriteriaEvaluationBehavior.InTransaction,
                                                             new BinaryOperator("ДатаС", ДатаБУ, BinaryOperatorType.LessOrEqual) &
                                                             new BinaryOperator("ДатаПо", ДатаБУ, BinaryOperatorType.GreaterOrEqual));
                    if (ПериодБУ == null)
                    {
                        ПериодБУ = new ПериодБУ(Session);
                        ПериодБУ.Налогоплательщик = Контейнер.Налогоплательщик;
                        ПериодБУ.ДатаПериода      = ДатаБУ;
                    }
                }
                break;

            case "ДатаНДС":
                if (Контейнер != null && Контейнер.ПериодНДС != null)
                {
                    ПериодНДС = Контейнер.ПериодНДС;
                }
                else
                {
                    if (ДатаНДС < new DateTime(2000, 1, 1))
                    {
                        break;
                    }
                    ПериодНДС = Session.FindObject <ПериодНДС>(PersistentCriteriaEvaluationBehavior.InTransaction,
                                                               new BinaryOperator("ДатаС", ДатаНДС, BinaryOperatorType.LessOrEqual) &
                                                               new BinaryOperator("ДатаПо", ДатаНДС, BinaryOperatorType.GreaterOrEqual));
                    if (ПериодНДС == null)
                    {
                        ПериодНДС = new ПериодНДС(Session);
                        ПериодНДС.Налогоплательщик = Контейнер.Налогоплательщик;
                        ПериодНДС.ДатаПериода      = ДатаНДС;
                    }
                }
                break;

            case "ТипОперВнутр":
                UpdateTypes();
                break;

            case "ТипОсновной":
                UpdateTypes();
                break;

            case "ТипНапрОпер":
                UpdateTypes();
                break;

            case "ТипДеятельности":
                UpdateTypes();
                break;

            case "СуммаВсего":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаВсего -= old_summa;
                    КнигаСтрока.СуммаВсего += СуммаВсего;
                }
                break;

            case "СуммаСтоимость":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаСтоимость -= old_summa;
                    КнигаСтрока.СуммаСтоимость += СуммаСтоимость;
                }
                break;

            case "СуммаНДСБаза":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаНДСБаза -= old_summa;
                    КнигаСтрока.СуммаНДСБаза += СуммаНДСБаза;
                }
                break;

            case "СуммаНДСВычет":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаНДСВычет -= old_summa;
                    КнигаСтрока.СуммаНДСВычет += СуммаНДСВычет;
                }
                break;

            case "СуммаНДССтоимость":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаНДССтоимость -= old_summa;
                    КнигаСтрока.СуммаНДССтоимость += СуммаНДССтоимость;
                }
                break;

            case "СуммаНДС19Входящий":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаНДС19Входящий -= old_summa;
                    КнигаСтрока.СуммаНДС19Входящий += СуммаНДС19Входящий;
                }
                break;

            case "СуммаНДС19Списано":
                old_summa = (Decimal)oldValue;
                if (КнигаСтрока != null)
                {
                    КнигаСтрока.СуммаНДС19Списано -= old_summa;
                    КнигаСтрока.СуммаНДС19Списано += СуммаНДС19Списано;
                }
                break;
            }
        }