Beispiel #1
0
        protected virtual csMaterial Prepare_csMaterial(Session ssn, string modificator, csNomenclatureType nomenclatureType, csUnit unit, fmCostItem costItem)
        {
            csMaterial material1 = new csMaterial(ssn);

            material1.NomenclatureType = nomenclatureType;
            material1.Code             = "Мат" + modificator;
            material1.NameShort        = "Мт" + modificator;
            material1.NameFull         = "Материал" + modificator;
            material1.BaseUnit         = unit;
            material1.CostItem         = costItem;
            return(material1);
        }
        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);
        }
Beispiel #3
0
        public void CreateAllReferencesOnlyTest([Values("", "0", "1", "2", "3", "4")]  string modificator)
        {
            //Session ssn = session1;
            UnitOfWork ssn = new UnitOfWork(Common.dataLayer);

            crmContractCategory contractCategory = Prepare_crmContractCategory(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(contractCategory, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            crmCostModel costModel = Prepare_crmCostModel(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(costModel, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csCountry country = Prepare_csCountry(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(country, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csUnit unit = Prepare_csUnit(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(unit, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csNomenclatureType nomenclatureType = Prepare_csNomenclatureType(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(nomenclatureType, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            fmCostItem costItem = Prepare_fmCostItem(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(costItem, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csMaterial material = Prepare_csMaterial(ssn, modificator, nomenclatureType, unit, costItem);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(material, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csService service = Prepare_csService(ssn, modificator, nomenclatureType, unit, costItem);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(service, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csValuta valuta = Prepare_csValuta(ssn, modificator, nomenclatureType, unit, costItem);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(valuta, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            csAddress address = Prepare_csAddress(ssn, modificator, country);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(address, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            crmPhysicalPerson physicalPersonRu = Prepare_crmPhysicalPerson(ssn, modificator, address);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(physicalPersonRu, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            crmCBusinessman businessmanRu = Prepare_crmBusinessmanRu(ssn, modificator, physicalPersonRu, address);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(businessmanRu, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            crmCLegalPerson legalPersonRussianRu = Prepare_crmCLegalPerson(ssn, modificator, address);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(legalPersonRussianRu, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            //crmPartyRu partyRu = Prepare_crmPartyRu(ssn, modificator, address, legalPersonRussianRu);
            //if (Common.CheckValidationRule) {
            //    ruleResult = ruleSet.ValidateTarget(partyRu, DefaultContexts.Save);
            //    Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            //}

            fmCSubject subject = Prepare_fmSubject(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(subject, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            hrmDepartment department = Prepare_hrmDepartment(ssn, modificator);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(department, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            hrmStaff staff = Prepare_hrmStaff(ssn, modificator, physicalPersonRu, department);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(staff, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            crmUserParty userParty = Prepare_crmUserParty(ssn, modificator, legalPersonRussianRu.Party);

            if (Common.CheckValidationRule)
            {
                ruleResult = ruleSet.ValidateTarget(userParty, DefaultContexts.Save);
                Assert.AreEqual(ValidationState.Valid, ruleResult.State);
            }

            ssn.CommitChanges();
        }