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); } } } }
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); }
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); }