Exemple #1
0
        /// <summary>
        /// Список главных объектов для этапов, имеющих тип StageType.FINANCE в случае рекурсивного доступа.
        /// </summary>
        /// <param name="prmStage"></param>
        /// <returns></returns>
        private IList <crmStageMain> GetFinanceStageList(crmStage prmStage)
        {
            IList <crmStageMain> res = new List <crmStageMain>();

            foreach (crmStage stage in prmStage.SubStages)
            {
                if (stage.StageType != StageType.FINANCE)
                {
                    continue;
                }
                if (stage.StageMain == null)
                {
                    continue;
                }
                if (!res.Contains(stage.StageMain))
                {
                    res.Add(stage.StageMain);
                }
                IList <crmStageMain> res1 = GetFinanceStageList(stage);
                foreach (crmStageMain stageMain in res1)
                {
                    if (!res.Contains(stageMain))
                    {
                        res.Add(stageMain);
                    }
                }
            }

            return(res);
        }
Exemple #2
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);
        }
Exemple #3
0
        private bool IsChildOfFinanceStage(crmStage stage)
        {
            bool     res = false;
            crmStage stg = stage;

            if (stg.StageType == StageType.FINANCE)
            {
                return(true);
            }

            while (stg.TopStage != null)
            {
                if (stg.TopStage.StageType == StageType.FINANCE)
                {
                    return(true);
                }
                //if (stg == stg.TopStage) return false;
                stg = stg.TopStage;
            }

            return(res);
        }
Exemple #4
0
        private IList <crmStage> GetStageList(crmStage prmStage)
        {
            IList <crmStage> res = new List <crmStage>();

            foreach (crmStage stage in prmStage.SubStages)
            {
                if (res.IndexOf(stage) == -1)
                {
                    res.Add(stage);
                }
                IList <crmStage> res1 = GetStageList(stage);
                //if (res1.Count == 0) break;
                foreach (crmStage stage1 in res1)
                {
                    if (res1.IndexOf(stage) == -1)
                    {
                        res.Add(stage1);
                    }
                }
            }

            return(res);
        }
        public void Import(IObjectSpace os, String file_name)
        {
            FileHelperEngine <DealDataImport> engine = new FileHelperEngine <DealDataImport>();

            engine.Options.IgnoreFirstLines = 1;
            engine.Options.IgnoreEmptyLines = true;
            //            DealDataImport[] deal_data = engine.ReadStream(reader);
            DealDataImport[]        deal_data      = engine.ReadFile(file_name);
            IList <fmCOrder>        orders         = new List <fmCOrder>();
            IList <crmStage>        stages         = new List <crmStage>();
            IList <crmDeliveryUnit> delivery_units = new List <crmDeliveryUnit>();
            IList <crmDeliveryItem> delivery_items = new List <crmDeliveryItem>();
            IList <crmPaymentUnit>  payment_units  = new List <crmPaymentUnit>();
            IList <crmPaymentItem>  payment_items  = new List <crmPaymentItem>();
            IList <csMaterial>      materials      = os.GetObjects <csMaterial>();

            foreach (DealDataImport record in deal_data)
            {
                fmCOrder        order         = null;
                crmStage        stage         = null;
                crmDeliveryUnit delivery_unit = null;
                crmDeliveryItem delivery_item = null;
                crmPaymentUnit  payment_unit  = null;
                crmPaymentItem  payment_item  = null;
                if (String.IsNullOrEmpty(record.StageCode))
                {
                    throw new ArgumentException("Stage Code is Empty", "StageCode");
                }
                if (record.StageCode.Substring(0, 3) == "Adv")
                {
                    stage = StageStructure.FirstStage;
                }
                else
                {
                    stage = StageStructure.Stages.FirstOrDefault(x => x.Code == record.StageCode);
                    if (stage == null)
                    {
                        stage      = StageStructure.FirstStage.SubStagesCreate();
                        stage.Code = record.StageCode;
                    }
                    if (!stages.Contains(stage))
                    {
                        stage.StageType      = Contract.StageType.FINANCE;
                        stage.DeliveryMethod = DeliveryMethod.UNITS_SHEDULE;
                        stage.PaymentMethod  = PaymentMethod.SCHEDULE;
//                        stage.DateEnd = stage.DateBegin;
//                        stage.DateFinish = stage.DateEnd;
                        stages.Add(stage);
                    }
                }
                if (record.StageCode.Substring(0, 3) != "Adv")
                {
                    if (String.IsNullOrEmpty(record.OrderCode))
                    {
                        throw new ArgumentException("Order Code is Empty", "OrderCode");
                    }
                    order = orders.FirstOrDefault(x => x.Code == record.OrderCode);
                    if (order == null)
                    {
                        order = os.FindObject <fmCOrder>(new BinaryOperator("Code", record.OrderCode, BinaryOperatorType.Equal));
                        if (order == null)
                        {
                            throw new ArgumentException("Order unknow", "OrderCode");
                        }
                        else
                        {
                            orders.Add(order);
                        }
                        stage.Order = order;
                    }
                    if (record.DateContract == null)
                    {
                        throw new ArgumentException("Date Contract is Empty", "DateContract");
                    }
                    delivery_unit = stage.DeliveryPlan.DeliveryUnits.FirstOrDefault(x => x.DatePlane == record.DateContract);
                    if (record.DateContract > stage.DateEnd)
                    {
                        stage.DateEnd = (DateTime)record.DateContract;
                    }
                    if (delivery_unit == null)
                    {
                        delivery_unit           = stage.DeliveryPlan.DeliveryUnitCreate();
                        delivery_unit.DatePlane = (DateTime)record.DateContract;
                    }
                    if (!delivery_units.Contains(delivery_unit))
                    {
                        delivery_units.Add(delivery_unit);
                    }
                    delivery_unit.Order = order;
                    if (record.Count == null)
                    {
                        throw new ArgumentException("Count is Empty", "Count");
                    }
                    if (record.Price == null)
                    {
                        throw new ArgumentException("Price is Empty", "Price");
                    }
                    if (String.IsNullOrEmpty(record.NomenclatureCode))
                    {
                        throw new ArgumentException("Nomenclature Code is Empty", "NomenclatureCode");
                    }
                    if (!record.NomenclatureCode.Contains("*I") && !record.NomenclatureCode.Contains("*E"))
                    {
                        csMaterial material = materials.FirstOrDefault(x => x.CodeTechnical == record.NomenclatureCode);
                        if (material == null)
                        {
                            throw new ArgumentException("Nomenclature unknow", "NomenclatureCode");
                        }
                        delivery_item = delivery_unit.DeliveryItems.FirstOrDefault(x => x.Nomenclature == material);
                        if (delivery_item == null)
                        {
                            delivery_item = delivery_unit.DeliveryItemsCreateMaterial();
                            ((crmDeliveryMaterial)delivery_item).Material = material;
                        }
                        delivery_item.CostCalculateMethod = CostCalculateMethod.CALC_COST;
                        delivery_item.NDSCalculateMethod  = NDSCalculateMethod.FROM_COST;
                        delivery_item.FullCalculateMethod = FullCalculateMethod.CALC_FULL;
                        delivery_item.Price     = (Decimal)record.Price;
                        delivery_item.CountUnit = delivery_item.Nomenclature.BaseUnit;
                        if (delivery_items.Contains(delivery_item))
                        {
                            delivery_item.CountValue += (Decimal)record.Count;
                        }
                        else
                        {
                            delivery_item.CountValue = (Decimal)record.Count;
                            delivery_items.Add(delivery_item);
                        }
                    }
                }
                if (record.DateContract == null)
                {
                    throw new ArgumentException("Date Contract is Empty", "DateContract");
                }
                payment_unit = stage.PaymentPlan.PaymentUnits.FirstOrDefault(x => x.DatePlane == record.DateContract && x is crmPaymentCasheLess);
                if (payment_unit == null)
                {
                    payment_unit           = stage.PaymentPlan.PaymentCasheLessCreate();
                    payment_unit.DatePlane = (DateTime)record.DateContract;
                    if (payment_unit.DatePlane > stage.DateFinish)
                    {
                        stage.DateFinish = payment_unit.DatePlane;
                    }
                }
                if (!payment_units.Contains(payment_unit))
                {
                    ((crmPaymentCasheLess)payment_unit).SummFull = (Decimal)record.SummaPayment;
                    payment_units.Add(payment_unit);
                }
                else
                {
                    ((crmPaymentCasheLess)payment_unit).SummFull += (Decimal)record.SummaPayment;
                }

                //                payment_item = payment_unit.PaymentItems.FirstOrDefault(x => x.Order == order);
                //                if (payment_item == null) {
                //                    payment_item = payment_unit.PaymentItemsCreateMoney();
                //                }
                //if (payment_unit.PaymentItems.Count == 0) {
                //    payment_item = payment_unit.PaymentItemsCreateMoney();
                //}
                //else {
                //    payment_item = payment_unit.PaymentItems[0];
                //}
                //if (payment_items.Contains(payment_item)) {
                //    payment_item.SummFull += (Decimal)record.SummaPayment;
                //    payment_item.AccountSumma += (Decimal)record.SummaPayment;
                //}
                //else {
                //    payment_item.SummFull = (Decimal)record.SummaPayment;
                //    payment_item.AccountSumma = (Decimal)record.SummaPayment;
                //    payment_items.Add(payment_item);
                //}
            }
            IList <crmDeliveryUnit> del_delivery_units = new List <crmDeliveryUnit>();
            IList <crmPaymentUnit>  del_payment_units  = new List <crmPaymentUnit>();

            foreach (crmStage stage in stages)
            {
                foreach (crmDeliveryUnit delivery_unit in stage.DeliveryPlan.DeliveryUnits)
                {
                    if (!delivery_units.Contains(delivery_unit))
                    {
                        del_delivery_units.Add(delivery_unit);
                    }
                }
                foreach (crmPaymentUnit payment_unit in stage.PaymentPlan.PaymentUnits)
                {
                    if (!payment_units.Contains(payment_unit))
                    {
                        del_payment_units.Add(payment_unit);
                    }
                }
            }
            os.Delete(del_delivery_units);
            os.Delete(del_payment_units);
        }
Exemple #6
0
        public void Import(IObjectSpace os, String file_name)
        {
            FileHelperEngine <DealDataImport> engine = new FileHelperEngine <DealDataImport>();

            engine.Options.IgnoreFirstLines = 1;
            engine.Options.IgnoreEmptyLines = true;
            Int32 line = 0;

            //            DealDataImport[] deal_data = engine.ReadStream(reader);
            DealDataImport[]        deal_data      = engine.ReadFile(file_name);
            IList <fmCOrder>        orders         = new List <fmCOrder>();
            IList <crmStage>        stages         = new List <crmStage>();
            IList <crmDeliveryUnit> delivery_units = new List <crmDeliveryUnit>();
            IList <crmDeliveryItem> delivery_items = new List <crmDeliveryItem>();
            IList <crmPaymentUnit>  payment_units  = new List <crmPaymentUnit>();
            IList <crmPaymentItem>  payment_items  = new List <crmPaymentItem>();
            IList <csNomenclature>  materials      = os.GetObjects <csNomenclature>();

            foreach (DealDataImport record in deal_data)
            {
                fmCOrder        order         = null;
                crmStage        stage         = null;
                crmDeliveryUnit delivery_unit = null;
                crmDeliveryItem delivery_item = null;
                crmPaymentUnit  payment_unit  = null;
                line++;
                //                crmPaymentItem payment_item = null;
                if (!String.IsNullOrEmpty(record.OrderCode))
                {
                    order = orders.FirstOrDefault(x => x.Code == record.OrderCode);
                    if (order == null)
                    {
                        order = os.FindObject <fmCOrder>(new BinaryOperator("Code", record.OrderCode, BinaryOperatorType.Equal));
                        if (order == null)
                        {
                            throw new ArgumentException("Неизвестный заказ: " + record.OrderCode + " Строка: " + line, "OrderCode");
                        }
                        else
                        {
                            orders.Add(order);
                        }
                    }
                }
                if (String.IsNullOrEmpty(record.StageCode))
                {
                    throw new ArgumentException("Номер этапа пустой. Строка: " + line, "StageCode");
                }
                if (record.StageCode.Substring(0, 3) == "Adv")
                {
                    stage = StageStructure.FirstStage;
                }
                else
                {
                    stage = StageStructure.Stages.FirstOrDefault(x => x.Code == record.StageCode);
                    if (stage == null)
                    {
                        stage      = StageStructure.FirstStage.SubStagesCreate();
                        stage.Code = record.StageCode;
                    }
                    if (!stages.Contains(stage))
                    {
                        stage.Order          = order;
                        stage.StageType      = Contract.StageType.FINANCE;
                        stage.DeliveryMethod = DeliveryMethod.UNITS_SHEDULE;
                        stage.PaymentMethod  = PaymentMethod.SCHEDULE;
                        //                        stage.DateEnd = stage.DateBegin;
                        //                        stage.DateFinish = stage.DateEnd;
                        stages.Add(stage);
                    }
                }
                if (record.StageCode.Substring(0, 3) != "Adv")
                {
                    if (order == null)
                    {
                        throw new ArgumentException("Заказ не найден", "OrderCode");
                    }
                    if (record.DateContract == null)
                    {
                        throw new ArgumentException("Незаполнена плановая дата исполнения. Строка: " + line, "DateContract");
                    }
                    delivery_unit = stage.DeliveryPlan.DeliveryUnits.FirstOrDefault(x => x.DatePlane == record.DateContract);
                    if (record.DateContract > stage.DateEnd)
                    {
                        stage.DateEnd = (DateTime)record.DateContract;
                    }
                    if (delivery_unit == null)
                    {
                        delivery_unit           = stage.DeliveryPlan.DeliveryUnitCreate();
                        delivery_unit.DatePlane = (DateTime)record.DateContract;
                    }
                    if (!delivery_units.Contains(delivery_unit))
                    {
                        delivery_units.Add(delivery_unit);
                    }
                    delivery_unit.Order = order;
                    if (record.Count == null)
                    {
                        throw new ArgumentException("Кол-во пустое. Строка: " + line, "Count");
                    }
                    if (record.Price == null)
                    {
                        throw new ArgumentException("Цена пустая. Строка: " + line, "Price");
                    }
                    if (String.IsNullOrEmpty(record.NomenclatureCode))
                    {
                        throw new ArgumentException("Номенклатура пустая. Строка: " + line, "NomenclatureCode");
                    }
                    if (!record.NomenclatureCode.Contains("*I") && !record.NomenclatureCode.Contains("*E"))
                    {
//                        csMaterial material = ;
                        csNomenclature nomenclature = materials.FirstOrDefault(x => x.CodeTechnical == record.NomenclatureCode);
                        if (nomenclature == null)
                        {
                            throw new ArgumentException("Номенклатура: " + record.NomenclatureCode + " ненайдена. Строка: " + line, "NomenclatureCode");
                        }
                        delivery_item = delivery_unit.DeliveryItems.FirstOrDefault(x => x.Nomenclature == nomenclature);
                        if (delivery_item == null)
                        {
                            if (nomenclature is csMaterial)
                            {
                                delivery_item = delivery_unit.DeliveryItemsCreateMaterial();
                                ((crmDeliveryMaterial)delivery_item).Material = nomenclature as csMaterial;
                            }
                            else if (nomenclature is csService)
                            {
                                delivery_item = delivery_unit.DeliveryItemsCreateService();
                                ((crmDeliveryService)delivery_item).Service = nomenclature as csService;
                            }
                            else
                            {
                                throw new ArgumentException("Номенклатура: " + record.NomenclatureCode + " неверного типа. Строка: " + line, "NomenclatureCode");
                            }
                        }
                        delivery_item.CostCalculateMethod = CostCalculateMethod.CALC_COST;
                        delivery_item.NDSCalculateMethod  = NDSCalculateMethod.FROM_COST;
                        delivery_item.FullCalculateMethod = FullCalculateMethod.CALC_FULL;
                        delivery_item.Price     = (Decimal)record.Price;
                        delivery_item.CountUnit = delivery_item.Nomenclature.BaseUnit;
                        if (delivery_items.Contains(delivery_item))
                        {
                            delivery_item.CountValue += (Decimal)record.Count;
                        }
                        else
                        {
                            delivery_item.CountValue = (Decimal)record.Count;
                            delivery_items.Add(delivery_item);
                        }
                    }
                }
                if (record.DateContract == null)
                {
                    throw new ArgumentException("Дата плановая исполнения не заполнена. Строка: " + line, "DateContract");
                }
                payment_unit = stage.PaymentPlan.PaymentUnits.FirstOrDefault(x => x.DatePlane == record.DateContract && x is crmPaymentCasheLess);
                //if (payment_unit != null && !payment_units.Contains(payment_unit)) {
                //    os.Delete(payment_unit);
                //    payment_unit = null;
                //}
                if (payment_unit == null)
                {
                    payment_unit           = stage.PaymentPlan.PaymentCasheLessCreate();
                    payment_unit.DatePlane = (DateTime)record.DateContract;
                    if (payment_unit.DatePlane > stage.DateFinish)
                    {
                        stage.DateFinish = payment_unit.DatePlane;
                    }
                }
                payment_unit.Order = order;
                if (!payment_units.Contains(payment_unit))
                {
                    ((crmPaymentCasheLess)payment_unit).SummFull = (Decimal)record.SummaPayment;
                    payment_units.Add(payment_unit);
                }
                else
                {
                    ((crmPaymentCasheLess)payment_unit).SummFull += (Decimal)record.SummaPayment;
                }

                //                payment_item = payment_unit.PaymentItems.FirstOrDefault(x => x.Order == order);
                //                if (payment_item == null) {
                //                    payment_item = payment_unit.PaymentItemsCreateMoney();
                //                }
                //if (payment_unit.PaymentItems.Count == 0) {
                //    payment_item = payment_unit.PaymentItemsCreateMoney();
                //}
                //else {
                //    payment_item = payment_unit.PaymentItems[0];
                //}
                //if (payment_items.Contains(payment_item)) {
                //    payment_item.SummFull += (Decimal)record.SummaPayment;
                //    payment_item.AccountSumma += (Decimal)record.SummaPayment;
                //}
                //else {
                //    payment_item.SummFull = (Decimal)record.SummaPayment;
                //    payment_item.AccountSumma = (Decimal)record.SummaPayment;
                //    payment_items.Add(payment_item);
                //}
            }
            IList <crmDeliveryUnit> del_delivery_units = new List <crmDeliveryUnit>();
            IList <crmDeliveryItem> del_delivery_items = new List <crmDeliveryItem>();
            IList <crmPaymentUnit>  del_payment_units  = new List <crmPaymentUnit>();
            IList <crmPaymentItem>  del_payment_items  = new List <crmPaymentItem>();

            foreach (crmStage stage in stages)
            {
                foreach (crmDeliveryUnit delivery_unit in stage.DeliveryPlan.DeliveryUnits)
                {
                    if (!delivery_units.Contains(delivery_unit))
                    {
                        del_delivery_units.Add(delivery_unit);
                        foreach (crmDeliveryItem item in delivery_unit.DeliveryItems)
                        {
                            del_delivery_items.Add(item);
                        }
                    }
                    else
                    {
                        foreach (crmDeliveryItem item in delivery_unit.DeliveryItems)
                        {
                            if (!delivery_items.Contains(item))
                            {
                                del_delivery_items.Add(item);
                            }
                        }
                    }
                }
                foreach (crmPaymentUnit payment_unit in stage.PaymentPlan.PaymentUnits)
                {
                    if (!payment_units.Contains(payment_unit))
                    {
                        del_payment_units.Add(payment_unit);
                        foreach (crmPaymentItem item in payment_unit.PaymentItems)
                        {
                            del_payment_items.Add(item);
                        }
                    }
                    else
                    {
                        foreach (crmPaymentItem item in payment_unit.PaymentItems)
                        {
                            if (!payment_items.Contains(item))
                            {
                                del_payment_items.Add(item);
                            }
                        }
                    }
                }
            }
            // Не удаляем PaymentItems, поскольку не создаем их, а создаем PaymentUnitCashLess, который сам создает Item
            //            os.Delete(del_payment_items);
            os.Delete(del_payment_units);
            os.Delete(del_delivery_items);
            os.Delete(del_delivery_units);
        }
Exemple #7
0
        protected void Load(IObjectSpace os, crmDealVersion deal_version, crmStage stage, LineKey key, IDictionary <TrwBudgetKey, IList <TrwBudgetValue> > keys)
        {
            foreach (crmDeliveryUnit unit in stage.DeliveryPlan.DeliveryUnits)
            {
                foreach (crmDeliveryItem item in unit.DeliveryItems)
                {
//                    TrwBudgetPeriodValue period_value = TrwBudgetMaster.TrwPeriod.ValueGet(unit.DatePlane);
                    TrwBudgetValue budget_value = null;
                    TrwBudgetKey   budget_key   = keys.Keys.FirstOrDefault(
                        x => x.DealSale == key.Deal &&
                        x.Subject == key.Subject &&
                        x.Order == item.Order &&
                        x.Party == key.Party &&
                        x.ObligationValuta == item.Valuta &&
                        x.TrwContractSale == key.TrwContract &&
                        x.TrwOrderSale == key.TrwOrder &&
                        x.TrwSaleNomenclature == item.TrwSaleNomenclature
                        );
                    if (budget_key == null)
                    {
                        budget_key = os.CreateObject <TrwBudgetKey>();
                        BudgetMaster.BudgetKeys.Add(budget_key);
                        // budget_key.SubjectBudget = this;
                        // budget_key.BudgetBase = this;
                        budget_key.DealSale            = key.Deal;
                        budget_key.Party               = key.Party;
                        budget_key.Subject             = key.Subject;
                        budget_key.Order               = item.Order;
                        budget_key.ObligationValuta    = item.Valuta;
                        budget_key.TrwContractSale     = key.TrwContract;
                        budget_key.TrwOrderSale        = key.TrwOrder;
                        budget_key.TrwSaleNomenclature = item.TrwSaleNomenclature;
                        keys[budget_key]               = new List <TrwBudgetValue>();
                        foreach (TrwBudgetPeriodValue period_value in BudgetMaster.BudgetPeriod.PeriodValues)
                        {
                            budget_value = os.CreateObject <TrwBudgetValue>();
                            budget_key.TrwBudgetValues.Add(budget_value);
                            BudgetValues.Add(budget_value);
                            BudgetMaster.BudgetValues.Add(budget_value);
                            if (period_value.Month < 0 && period_value.Month < 13)
                            {
                                budget_value.Date = new DateTime(BudgetMaster.BudgetPeriod.Year, period_value.Month, 1);
                                budget_value.Date.AddMonths(1);
                                budget_value.Date.AddDays(-1);
                            }
                            else
                            {
                                if (period_value.Month == 0)
                                {
                                    budget_value.Date = new DateTime(BudgetMaster.BudgetPeriod.Year - 1, 12, 31);
                                }
                                else
                                {
                                    budget_value.Date = new DateTime(BudgetMaster.BudgetPeriod.Year + 1, 01, 01);
                                }
                            }
                            BudgetMaster.BudgetPeriod.ValueGet(budget_value.Date).BudgetValues.Add(budget_value);
                            if (BudgetMaster.BudgetPeriod.Valuta == budget_key.ObligationValuta)
                            {
                                budget_value.ObligationRate = 1;
                            }
                            else
                            {
                                budget_value.ObligationRate = BudgetMaster.BudgetPeriod.CurrencyExchanges.FirstOrDefault(x => x.Valuta == budget_key.ObligationValuta).Rate;
                            }
                            keys[budget_key].Add(budget_value);
                        }
                    }
                    budget_value = keys[budget_key].FirstOrDefault(
                        x => x.Date == unit.DatePlane &&
                        x.ObligationValuta == item.Valuta
                        );
                    if (budget_value == null)
                    {
                        budget_value = os.CreateObject <TrwBudgetValue>();
                        budget_key.TrwBudgetValues.Add(budget_value);
                        BudgetValues.Add(budget_value);
                        BudgetMaster.BudgetValues.Add(budget_value);
                        budget_value.Date = unit.DatePlane;
                        BudgetMaster.BudgetPeriod.ValueGet(budget_value.Date).BudgetValues.Add(budget_value);
                        keys[budget_key].Add(budget_value);
                    }
                    budget_value.SummCost += item.SummCost;
                    budget_value.SummVat  += item.SummNDS;
                    budget_value.SummAll   = budget_value.SummCost + budget_value.SummVat;
                }
            }
        }
Exemple #8
0
        private crmCashFlowRegister CreateCFRegister(Session ssn, crmDealWithStageVersion scVersion, crmStage stage, crmPaymentItem pi)
        {
            crmCashFlowRegister cfr = new crmCashFlowRegister(ssn);

            // Используем ((crmDealWithoutStage)scVersion.MainObject).Oid как token (метку для разспознавания набора связанных записей)
            Guid token = ((crmDealWithStage)scVersion.MainObject).Oid;

            cfr.Token = token;

            if (scVersion.ContractDeal != null)
            {
                cfr.Contract = scVersion.ContractDeal.Contract;
            }
            cfr.ContractDeal    = scVersion.ContractDeal;
            cfr.CostItem        = pi.CostItem;
            cfr.PrimaryParty    = scVersion.Customer.Party;
            cfr.ContragentParty = scVersion.Supplier.Party;
            cfr.fmOrder         = pi.Order;
            cfr.Subject         = (pi.Order != null) ? pi.Order.Subject : null;
            //cfr.PlaneFact = PlaneFact.PLAN;
            cfr.Section = CashFlowRegisterSection.CONTRACT_PLAN;

            //cfr.Stage = stage;
            cfr.PaymentItem            = pi;
            cfr.ObligationUnit         = pi.PaymentUnit;
            cfr.ObligationUnitDateTime = pi.PaymentUnit.DatePlane;

            //cfr.StageTech = ;
            //cfr.StageTech2 = ;

            //!Паша пока без финансовый сделок
            //if (scVersion.FinancialDeal != null) {
            //    cfr.FinancialDeal = pi.FinancialDeal.FinancialDeal;
            //}

            cfr.Valuta = pi.Valuta;
            cfr.Cost   = pi.SummFull;
            //cfr.CostInRUR = scVersion.Price;  // Надо вычислять с учётом прайса, курса по прайсу и т.п.

            cfr.PaymentCost   = pi.AccountSumma;
            cfr.PaymentValuta = pi.AccountValuta;

            return(cfr);
        }
Exemple #9
0
        /// <summary>
        /// Создание записи регистра План-Факт
        /// </summary>
        /// <param name="scVersion"></param>
        /// <param name="di"></param>
        /// <returns></returns>
        private crmPlaneFactRegister CreatePlaneFactCommonRegister(Session ssn, crmDealWithStageVersion scVersion, crmStage stage, crmObligationTransfer obligationItem)
        {
            crmPlaneFactRegister pfr = new crmPlaneFactRegister(ssn);

            // Используем ((crmDealWithoutStage)scVersion.MainObject).Oid как token (метку для разспознавания набора связанных записей)
            Guid token = ((crmDealWithStage)scVersion.MainObject).Oid;

            pfr.Token = token;

            pfr.Contract     = scVersion.ContractDeal.Contract;
            pfr.ContractDeal = scVersion.ContractDeal;
            pfr.CostItem     = scVersion.CostItem;
            pfr.Creditor     = scVersion.Customer.Party;
            pfr.Debitor      = scVersion.Supplier.Party;
            pfr.fmOrder      = scVersion.Order;
            pfr.Subject      = (scVersion.Order != null) ? scVersion.Order.Subject : null;
            pfr.PlaneFact    = PlaneFact.PLAN;
            pfr.Stage        = stage;

            // ??? pfr.CostInRUR = scVersion.;

            //pfr.FinancialDeal - заменяется на финансовый этап
            //!Паша пока без финансовых сделок
            //            if (scVersion.FinancialDeal != null) {
            //                pfr.FinancialDeal = di.FinancialDeal.FinancialDeal;
            //            }

            //pfr.Nomenclature = scVersion.DeliveryUnit.DeliveryItems;   // SHU!!! Не ясно, откуда брать номенклатуру
            //pfr.FinancialDeal = scVersion.FinancialDeal.FinancialDeal;

            //pfr.MeasureUnit = scVersion.Order;
            //pfr.Volume = scVersion.;

            //pfr.Valuta = scVersion.Valuta;
            //pfr.Cost = scVersion.Price;
            //pfr.CostInRUR = scVersion.Price;  // Надо вычислять с учётом прайса, курса по прайсу и т.п.

            pfr.Nomenclature = obligationItem.Nomenclature;

            crmDeliveryItem deliveryItem = obligationItem as crmDeliveryItem;

            if (deliveryItem != null)
            {
                pfr.MeasureUnit = deliveryItem.CountUnit;
                pfr.Volume      = deliveryItem.CountValue;

                pfr.Valuta = deliveryItem.Valuta;
                pfr.Cost   = deliveryItem.Price;
            }

            crmPaymentItem paymentItem = obligationItem as crmPaymentItem;

            if (paymentItem != null)
            {
                pfr.MeasureUnit = null;
                pfr.Volume      = 0;

                pfr.Valuta = paymentItem.Valuta;
                pfr.Cost   = paymentItem.SummFull;
            }

            return(pfr);
        }