private void fillDocument()
        {
            Provider provider = contract.Provider;
            OrganizationDescription orgDesc = Program.db.OrganizationDescriptions.First();

            Dictionary <string, string> replace = new Dictionary <string, string>
            {
                { "[ConclusionCity]", contract.ConclusionCity },
                { "[ConclusionDate]", contract.ConclusionDate.ToString(dateFormat) },
                { "[ProviderName]", provider.Name },
                { "[ProviderAgentRole]", contract.ProviderAgentRole },
                { "[CustomerName]", orgDesc.Name },
                { "[CustomerAgentRole]", contract.CustomerAgentRole },
                { "[SupplierPenalty]", contract.SupplierPenalty.ToString() },
                { "[CustomerPenalty]", contract.CustomerPenalty.ToString() },
                { "[StartDate]", contract.StartDate.ToString(dateFormat) },
                { "[ExpiredDate]", contract.ExpiredDate.ToString(dateFormat) },
                { "[ProviderAddress]", provider.Address },
                { "[ProviderINN]", provider.INN },
                { "[ProviderPhoneNumber]", provider.PhoneNumber },
                { "[ProviderCheckingAccount]", provider.CheckingAccount },
                { "[ProviderCorrespondentAccount]", provider.CorrespondentAccount },
                { "[ProviderBIK]", provider.BIK },
                { "[ProviderAgentName]", contract.ProviderAgentName },
                { "[CustomerAddress]", orgDesc.Address },
                { "[CustomerINN]", orgDesc.INN },
                { "[CustomerPhoneNumber]", orgDesc.PhoneNumber },
                { "[CustomerCheckingAccount]", orgDesc.CheckingAccount },
                { "[CustomerCorrespondentAccount]", orgDesc.CorrespondentAccount },
                { "[CustomerBIK]", orgDesc.BIK },
                { "[CustomerAgentName]", contract.CustomerAgentName },
            };

            rtb_document.LoadFile(templateContractPath);

            foreach (KeyValuePair <string, string> keyValue in replace)
            {
                int found = 1;

                while (true)
                {
                    found = rtb_document.Find(keyValue.Key);

                    if (found == -1)
                    {
                        break;
                    }

                    if (keyValue.Value == null || keyValue.Value == String.Empty)
                    {
                        rtb_document.SelectedText = rtb_document.SelectedText.Replace(keyValue.Key, " ");
                    }
                    else
                    {
                        rtb_document.SelectedText = rtb_document.SelectedText.Replace(keyValue.Key, keyValue.Value);
                    }
                }
            }
        }
示例#2
0
        public bool generateContracts()
        {
            try
            {
                int amountCities = cities.Length;
                int amountRoles  = roles.Length;

                OrganizationDescription description = db.OrganizationDescriptions.FirstOrDefault();
                if (description == null)
                {
                    return(false);
                }

                List <int> PK_Providers = new List <int>();
                List <int> PK_Resources = new List <int>();

                foreach (var provider in db.Providers)
                {
                    PK_Providers.Add(provider.PK_Provider);
                }

                foreach (var resource in db.Resources)
                {
                    PK_Resources.Add(resource.PK_Resource);
                }

                int amountResources = PK_Resources.Count;
                int amountProviders = PK_Providers.Count;

                List <ContractLine> generatedContractLines = new List <ContractLine>();
                DateTime            conclusionDate, startDate, expiredDate;

                //генерация контрактов и ордеров
                for (int i = 0; i < CONTRACTS_COUNT; i++)
                {
                    conclusionDate = randomDay();
                    startDate      = conclusionDate.AddDays(1);
                    expiredDate    = randomDay(startDate);

                    //генерация контракта
                    Contract generatedContract = new Contract()
                    {
                        ContractNumber = "0000" + (i + 1).ToString(),

                        ConclusionDate = conclusionDate,
                        StartDate      = startDate,
                        ExpiredDate    = expiredDate,

                        ConclusionCity    = cities[rand.Next(amountCities)],
                        ProviderAgentName = "Оформитель_" + (i + 1).ToString(),
                        ProviderAgentRole = roles[rand.Next(amountRoles)],
                        CustomerAgentName = "Оформитель_" + (i + 1).ToString(),
                        CustomerAgentRole = roles[rand.Next(amountRoles)],

                        SupplierPenalty            = Decimal.Parse((rand.Next(10) + rand.NextDouble()).ToString()),
                        CustomerPenalty            = Decimal.Parse((rand.Next(10) + rand.NextDouble()).ToString()),
                        IsOpened                   = expiredDate >= DateTime.Now,
                        PK_Provider                = PK_Providers[rand.Next(amountProviders)],
                        PK_OrganizationDescription = description.PK_OrganizationDescription,
                    };
                    db.Contracts.Add(generatedContract);
                    db.SaveChanges();

                    //генерация строк контракта
                    generatedContractLines.Clear();
                    int pk_contract         = generatedContract.PK_Contract;
                    int amountContractLines = (rand.Next(5) + 1) * 2;

                    for (int j = 0; j < amountContractLines; j++)
                    {
                        ContractLine line = new ContractLine()
                        {
                            PK_Contract  = pk_contract,
                            PK_Resource  = PK_Resources[rand.Next(amountResources)],
                            Amount       = rand.Next(1, 100),
                            UnitPrice    = Decimal.Parse(rand.Next(1, 10000).ToString()),
                            DeliveryDate = randomDay(startDate, expiredDate),
                        };
                        db.ContractLines.Add(line);
                        generatedContractLines.Add(line);
                    }
                    db.SaveChanges();

                    //генерация приходных ордеров
                    int amountReceiptOrders;

                    Warehouse warehouse = db.Warehouses.FirstOrDefault();
                    if (warehouse == null)
                    {
                        return(false);
                    }

                    generatedContractLines = generatedContractLines.OrderBy(b => b.DeliveryDate).ToList();
                    amountReceiptOrders    = generatedContractLines.Count / 2;

                    if (rand.Next(6) > 4)
                    {
                        //генерация с недопоставками
                        DateTime provisionDate;
                        for (int k = 0; k < amountReceiptOrders; k++)
                        {
                            if (rand.Next(2) > 0)
                            {
                                provisionDate = generatedContractLines[k * 2].DeliveryDate;
                            }
                            else
                            {
                                provisionDate = generatedContractLines[k * 2 + 1].DeliveryDate;
                            }

                            ReceiptOrder receiptOrder = new ReceiptOrder()
                            {
                                ReceiptOrderNumber = i.ToString() + k.ToString(),
                                PK_Warehouse       = warehouse.PK_Warehouse,
                                PK_Provider        = generatedContract.PK_Provider,
                                PK_Contract        = generatedContract.PK_Contract,
                                DeliveryDate       = provisionDate,
                            };

                            db.ReceiptOrders.Add(receiptOrder);
                            db.SaveChanges();

                            ReceiptOrderLine receiptLineUnderdeliveryOK = new ReceiptOrderLine()
                            {
                                PK_ReceiptOrder = receiptOrder.PK_ReceiptOrder,
                                UnitPrice       = Decimal.Parse(rand.Next(1, 10000).ToString()),
                                PK_Resource     = generatedContractLines[k * 2].PK_Resource,
                                DocumentAmount  = generatedContractLines[k * 2].Amount + rand.Next(10),
                                AcceptedAmount  = generatedContractLines[k * 2].Amount,
                            };

                            ReceiptOrderLine receiptLineUnderdeliveryWrong = new ReceiptOrderLine()
                            {
                                PK_ReceiptOrder = receiptOrder.PK_ReceiptOrder,
                                UnitPrice       = Decimal.Parse(rand.Next(1, 10000).ToString()),
                                PK_Resource     = generatedContractLines[k * 2 + 1].PK_Resource,
                                DocumentAmount  = generatedContractLines[k * 2 + 1].Amount + rand.Next(10),
                                AcceptedAmount  = rand.Next(2) > 0 ? generatedContractLines[k * 2 + 1].Amount :
                                                  generatedContractLines[k * 2 + 1].Amount - 1,
                            };

                            db.AddRange(receiptLineUnderdeliveryOK, receiptLineUnderdeliveryWrong);
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        //без недопоставок
                        for (int k = 0; k < amountReceiptOrders; k++)
                        {
                            ReceiptOrder receiptOrder = new ReceiptOrder()
                            {
                                ReceiptOrderNumber = i.ToString() + k.ToString(),
                                PK_Warehouse       = warehouse.PK_Warehouse,
                                PK_Provider        = generatedContract.PK_Provider,
                                PK_Contract        = generatedContract.PK_Contract,
                                DeliveryDate       = generatedContractLines[k * 2].DeliveryDate,
                            };

                            db.ReceiptOrders.Add(receiptOrder);
                            db.SaveChanges();

                            ReceiptOrderLine receiptLineFirst = new ReceiptOrderLine()
                            {
                                PK_ReceiptOrder = receiptOrder.PK_ReceiptOrder,
                                UnitPrice       = Decimal.Parse(rand.Next(1, 10000).ToString()),
                                PK_Resource     = generatedContractLines[k * 2].PK_Resource,
                                DocumentAmount  = generatedContractLines[k * 2].Amount + rand.Next(10),
                                AcceptedAmount  = generatedContractLines[k * 2].Amount,
                            };

                            ReceiptOrderLine receiptLineSecond = new ReceiptOrderLine()
                            {
                                PK_ReceiptOrder = receiptOrder.PK_ReceiptOrder,
                                UnitPrice       = Decimal.Parse(rand.Next(1, 10000).ToString()),
                                PK_Resource     = generatedContractLines[k * 2 + 1].PK_Resource,
                                DocumentAmount  = generatedContractLines[k * 2 + 1].Amount + rand.Next(10),
                                AcceptedAmount  = generatedContractLines[k * 2 + 1].Amount,
                            };

                            db.AddRange(receiptLineFirst, receiptLineSecond);
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }

            return(true);
        }
示例#3
0
        public bool generateDictionaries()
        {
            try
            {
                OrganizationDescription desc = db.OrganizationDescriptions.Find(1);
                if (desc != null)
                {
                    db.OrganizationDescriptions.Remove(desc);
                    db.SaveChanges();
                }

                OrganizationDescription description = new OrganizationDescription()
                {
                    PK_OrganizationDescription = 1,
                    Name                 = "ООО 'Тестировщики'",
                    DirectorName         = "Тестировщик А.А.",
                    INN                  = getINN(),
                    PhoneNumber          = getPhoneNumber(),
                    CheckingAccount      = getCheckingAccount(),
                    CorrespondentAccount = getCorrespondentAccount(),
                    Address              = getAddress(),
                    BIK                  = getBIK(),
                };
                db.OrganizationDescriptions.Add(description);
                db.SaveChanges();

                //создание типа ресурса
                ResourceType typeMaterial = new ResourceType()
                {
                    Name = "Материал",
                };

                ResourceType typeTool = new ResourceType()
                {
                    Name = "Оборудование",
                };

                db.AddRange(typeMaterial, typeTool);
                db.SaveChanges();

                //создание складов
                for (int i = 0; i < 50; i++)
                {
                    db.Warehouses.Add(
                        new Warehouse()
                    {
                        Name   = "СКЛАД_" + (i + 1).ToString(),
                        Cipher = "0000" + (i + 1).ToString(),
                    }
                        );
                }
                db.SaveChanges();

                //создание ед. измерения
                Unit testUnit = new Unit()
                {
                    Name   = "Шт.",
                    Cipher = "796"
                };

                Program.db.Units.Add(testUnit);
                db.SaveChanges();


                //создание поставщиков
                for (int i = 0; i < 100; i++)
                {
                    db.Providers.Add(
                        new Provider()
                    {
                        Name                 = "Поставщик_" + (i + 1).ToString(),
                        INN                  = getINN(),
                        PhoneNumber          = getPhoneNumber(),
                        CheckingAccount      = getCheckingAccount(),
                        CorrespondentAccount = getCorrespondentAccount(),
                        Address              = getAddress(),
                        BIK                  = getBIK(),
                    }
                        );
                }
                db.SaveChanges();

                //создание ресурсов
                for (int i = 0; i < 500; i++)
                {
                    //материалы
                    db.Resources.Add(
                        new Resource()
                    {
                        Name            = "Материал_" + (i + 1).ToString(),
                        Cipher          = getResourcesCipher(),
                        PK_ResourceType = typeMaterial.PK_ResourceType,
                        PK_Unit         = testUnit.PK_Unit,
                    }
                        );
                }
                db.SaveChanges();

                for (int i = 0; i < 500; i++)
                {
                    //оборудование
                    db.Resources.Add(
                        new Resource()
                    {
                        Name            = "Оборудование_" + (i + 1).ToString(),
                        Cipher          = getResourcesCipher(),
                        PK_ResourceType = typeTool.PK_ResourceType,
                        PK_Unit         = testUnit.PK_Unit,
                    }
                        );
                }
                db.SaveChanges();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return(false);
            }

            return(true);
        }