/// <summary> /// Transpose model object to value object /// </summary> /// <param name="contractLine">The contractline Model</param> /// <param name="userId">The user id</param> //public ContractLineVO(MODEL.ContractLine contractLine, int? userId) //{ // ContractLineID = contractLine.ID; // ContractID = contractLine.ContractID; // LineStatus = contractLine.LineStatus; // LineDescription = contractLine.LineDescription; // ActivityCategoryId = contractLine.ActivityCategoryId; // ActivityCategory = contractLine.ActivityCategory; // ActivityCodeId = contractLine.ActivityCodeId; // OAActivityCodeId = contractLine.OAActivityCodeId; // ActivityCode = contractLine.ActivityCode; // ActivityCodeName = contractLine.ActivityCode + '-' + contractLine.OAActivityCodeId; // AccountId = contractLine.AccountId; // OAAccountId = contractLine.OAAccountId; // OAAccountCode = contractLine.OAAccountCode; // Account = contractLine.OAAccountCode + '-' + contractLine.OAAccountId; // JobCodeId = contractLine.JobCodeId; // OAJobCodeId = contractLine.OAJobCodeId; // JobCode = contractLine.JobCode; // JobCodeName = contractLine.JobCode + '-' + contractLine.OAJobCodeId; // CostCenterId = contractLine.CostCenterId; // OACostCenterId = contractLine.OACostCenterId; // CostCenter = contractLine.CostCenter; // CostCenterName = contractLine.CostCenter + '-' + contractLine.OACostCenterId; // //QTY = contractLine.QTY; // IsDeleted = contractLine.IsDeleted; // ContractLineDetails = ActivityCode + '|' + OAJobCodeId + '|' + Account + '|' + CostCenter; // CreatedByUserId = userId; // LastUpdatedByUserId = userId; //} /// <summary> /// Constructor /// </summary> /// <param name="contractLine">The contractLine LINQ object</param> public ContractLineVO(ContractLine contractLine) { ContractLineID = contractLine.ID; ContractID = contractLine.ContractID; LineStatus = contractLine.LineStatus; LineDescription = contractLine.LineDescription; ActivityCategoryId = contractLine.ActivityCategoryID; ActivityCategory = contractLine.ActivityRestriction.Description; ActivityCodeId = contractLine.ActivityCodeID; OAActivityCodeId = contractLine.OAActivityCode.ActivityID; ActivityCode = contractLine.OAActivityCode.ActivityName; ActivityCodeName = contractLine.OAActivityCode.ActivityName + '-' + contractLine.OAActivityCode.ActivityID; AccountId = contractLine.AccountCodeID; OAAccountCode = contractLine.OAAccountCode.AccountName; OAAccountId = contractLine.OAAccountCode.AccountID; Account = contractLine.OAAccountCode.AccountName + '-' + contractLine.OAAccountCode.AccountID; JobCodeId = contractLine.JobCodeID; OAJobCodeId = contractLine.OAJobCode.JobCodeID; JobCode = contractLine.OAJobCode.JobCodeName; JobCodeName = contractLine.OAJobCode.JobCodeName + '-' + contractLine.OAJobCode.JobCodeID; CostCenterId = contractLine.CostCentreID; OACostCenterId = contractLine.OACostCentre.CostCentreID; CostCenter = contractLine.OACostCentre.CostCentreName; CostCenterName = contractLine.OACostCentre.CostCentreName + '-' + contractLine.OACostCentre.CostCentreID; //QTY = contractLine.QTY; IsDeleted = contractLine.IsDeleted; Contract = contractLine.Contract; //ContractLineDetails = ActivityCode + '|' + OAJobCodeId + '|' + Account + '|' + CostCenter + '|' + QTY; CreatedByUserId = contractLine.CreatedBy; LastUpdatedByUserId = contractLine.LastUpdatedBy; }
public void AddContractLine(int contractId, Material material, decimal price, int amount, string comment) { ContractLine c = new ContractLine(material, price, amount, comment); listOfContracts.Find(x => x.Id == contractId).ContractLines.Add(c); dal.AddContractLine(contractId, c); }
/// <summary> /// Save contractLines for copied contract /// </summary> /// <param name="contractLineVOList">contractLineVO List</param> /// <param name="contractId">contract Id</param> /// <param name="userId">login userId</param> public void SaveCopyContractLine(List <ContractLineVO> contractLineVOList, int contractId, int?userId) { foreach (var contractLineVO in contractLineVOList) { ContractMaintenanceDAL contractMaintenanceDAL = new ContractMaintenanceDAL(); List <ContractMaintenanceVO> contractMaintenanceVOList = contractMaintenanceDAL.GetContractMaintenanceListbyContractLineId(contractLineVO.ContractLineID); ContractLine copyContractLine = new ContractLine(); copyContractLine.ContractID = contractId; copyContractLine.ActivityCategoryID = contractLineVO.ActivityCategoryId; copyContractLine.ActivityCodeID = contractLineVO.ActivityCodeId; copyContractLine.AccountCodeID = contractLineVO.AccountId; copyContractLine.JobCodeID = contractLineVO.JobCodeId; copyContractLine.CostCentreID = contractLineVO.CostCenterId; copyContractLine.CreationDate = DateTime.Now; copyContractLine.CreatedBy = userId; mdbDataContext.ContractLines.InsertOnSubmit(copyContractLine); mdbDataContext.SubmitChanges(); //If contractMaintenance List is not null then copy contractMaintenance if (contractMaintenanceVOList != null) { int contractLineId = copyContractLine.ID; contractMaintenanceDAL.SaveCopyContractMaintenanceForContract(contractMaintenanceVOList, contractId, contractLineId, userId); } } }
/// <summary> /// Save the Contract Line /// </summary> /// <param name="contractLineVO">Value object of Contract Line</param> public void ContractLineSave(ContractLineVO contractLineVO) { if (contractLineVO.ContractLineID == 0) { //Insert New Record ContractLine newContractLine = new ContractLine(); newContractLine.ContractID = contractLineVO.ContractID; newContractLine.ActivityCategoryID = contractLineVO.ActivityCategoryId; newContractLine.ActivityCodeID = contractLineVO.ActivityCodeId; newContractLine.AccountCodeID = contractLineVO.AccountId; newContractLine.JobCodeID = contractLineVO.JobCodeId; newContractLine.CostCentreID = contractLineVO.CostCenterId; //newContractLine.QTY = contractLineVO.QTY; newContractLine.CreationDate = DateTime.Now; newContractLine.CreatedBy = contractLineVO.CreatedByUserId; mdbDataContext.ContractLines.InsertOnSubmit(newContractLine); mdbDataContext.SubmitChanges(); } else { //Update Existing Record ContractLine selectedContractLine = mdbDataContext.ContractLines.SingleOrDefault(c => c.ID == contractLineVO.ContractLineID); selectedContractLine.ActivityCategoryID = contractLineVO.ActivityCategoryId; selectedContractLine.ActivityCodeID = contractLineVO.ActivityCodeId; selectedContractLine.AccountCodeID = contractLineVO.AccountId; selectedContractLine.JobCodeID = contractLineVO.JobCodeId; selectedContractLine.CostCentreID = contractLineVO.CostCenterId; // selectedContractLine.QTY = contractLineVO.QTY; selectedContractLine.LastUpdatedBy = contractLineVO.LastUpdatedByUserId; selectedContractLine.LastUpdatedDate = DateTime.Now; mdbDataContext.SubmitChanges(); } }
public void AddAmount(int contractId, int contractLineId, int amount) { Contract selectedContract = listOfContracts.Find(x => x.Id == contractId); ContractLine selectedContractLine = selectedContract.ContractLines.Find(x => x.Id == contractLineId); selectedContractLine.DeliveredAmount += amount; dal.AddAmount(contractLineId, amount); }
public void Database_AddAmount_DeliveredAmountIncreased() { ContractLine actual = dbc.GetContractLines(4).Last(); Assert.AreEqual(0, actual.DeliveredAmount); dbc.AddAmount(actual.Id, 500); actual = dbc.GetContractLines(4).Last(); Assert.AreEqual(500, actual.DeliveredAmount); dbc.AddAmount(actual.Id, -500); }
/// <summary> /// Gets the ContractLine details by contractLine id. /// </summary> /// <param name="contractLineId">contractLine Id</param> /// <returns>ContractLine details</returns> public ContractLineVO GetContractLineById(int contractLineId) { ContractLine contractLine = mdbDataContext.ContractLines.SingleOrDefault(c => c.ID == contractLineId); ContractLineVO contractLineVO = new ContractLineVO(); if (contractLine != null) { contractLineVO = new ContractLineVO(contractLine); contractLineVO.Contract = contractLine.Contract; } return(contractLineVO); }
public void ContractCreation_AddContractLine_NewContractLine() { Material testMaterial = new Material(1, "Jern", "J"); Contract testContract = cr.GetContracts().Last(); cr.AddContractLine(testContract.Id, testMaterial, 10, 1000, "TestComment"); ContractLine actual = cr.GetContracts().Last().ContractLines.Last(); Assert.AreEqual("Jern", actual.Material.Type); Assert.AreEqual(10, actual.Price); Assert.AreEqual(1000, actual.TotalAmount); Assert.AreEqual("TestComment", actual.Comment); }
public void Database_GetContractLine_LineFound() { Material expectedMaterial = new Material("Jern", "J"); List <ContractLine> lines = dbc.GetContractLines(1); ContractLine actual = lines.First(); Assert.AreEqual(expectedMaterial.Type, actual.Material.Type); Assert.AreEqual(expectedMaterial.Designation, actual.Material.Designation); Assert.AreEqual(0.50m, actual.Price); Assert.AreEqual(1000, actual.TotalAmount); Assert.AreEqual(0, actual.DeliveredAmount); Assert.AreEqual(true, actual.Active); Assert.AreEqual("Hej", actual.Comment); }
/// <summary> /// Delete contractLines /// </summary> /// <param name="Ids">Ids of contactLine to be deleted</param> /// <param name="userId">The logged in user id</param> public void ContractLineDelete(List <int> Ids, int?userId) { foreach (var id in Ids) { if (id != 0) { ContractLine contractLine = new ContractLine(); contractLine = mdbDataContext.ContractLines.SingleOrDefault(c => c.ID == id); //get contract maintenance lines by contract Line id List <ContractMaintenance> contractMaintenanceLines = mdbDataContext.ContractMaintenances.Where(c => c.ContractLineID == id && c.IsDeleted == false).ToList(); if (contractMaintenanceLines.Count == 0) { //Delete contract line contractLine.IsDeleted = true; contractLine.LastUpdatedDate = DateTime.Now; contractLine.LastUpdatedBy = userId; } //foreach (var contractMaintenance in contractMaintenanceLines) //{ // contractMaintenance.IsDeleted = true; // contractMaintenance.LastUpdatedDate = DateTime.Now; // contractMaintenance.LastUpdatedBy = userId; //} ////Delete milestones lines //List<MilestoneLine> milestoneLines = mdbDataContext.MilestoneLines.Where(c => c.ContractID == id).ToList(); //foreach (var milestoneLine in milestoneLines) //{ // milestoneLine.IsDeleted = true; // milestoneLine.LastUpdatedDate = DateTime.Now; // milestoneLine.LastUpdatedBy = userId; //} ////Delete milestones //List<Milestone> milestones = mdbDataContext.Milestones.Where(c => c.ContractID == id).ToList(); //foreach (var milestone in milestones) //{ // milestone.IsDeleted = true; // milestone.LastUpdatedDate = DateTime.Now; // milestone.LastUpdatedBy = userId; //} } } mdbDataContext.SubmitChanges(); }
public void Database_DeactivateContractLine() { Material m = new Material(1, "Jern", "J"); ContractLine cl = new ContractLine(m, 5.00m, 100, 0, true, ""); dbc.AddContractLine(84, cl); Contract c = dbc.GetContract(84); ContractLine actualLine = c.ContractLines.Last(); Assert.AreEqual(true, actualLine.Active); dbc.DeactivateContractLine(actualLine.Id); c = dbc.GetContract(84); actualLine = c.ContractLines.Last(); Assert.AreEqual(false, actualLine.Active); }
/// <summary> /// Constructor for generating invoice billing details /// </summary> public InvoiceGLDetailVO(ContractLine contractLine) { Fields = new string[16]; ContractLineId = contractLine.ID; ContractId = contractLine.ContractID; RecordType = "N"; CostCentre = contractLine.OACostCentre.CostCentreID; AccountCode = contractLine.OAAccountCode.AccountID; JobCode = contractLine.OAJobCode.JobCodeID; JobCodeId = contractLine.JobCodeID; ActivityCode = contractLine.OAActivityCode.ActivityID; Value = 0; TaxCode = string.Empty; Field = String.Join("|", Fields); InvoiceBillingLines = new List <InvoiceBillingLineVO>(); }
public void ContractUpdate_AddAmount_DeliveredAmountIncreased() { Material testMaterial = new Material("E1", "Jern"); Customer testCustomer = new Customer(1, "STENA", "Danmark"); ContractLine testContractLine = new ContractLine(1, testMaterial, 1000, 0, 0, true, "test comment"); cr.AddContract(testCustomer, DateTime.Now, 0, "SH"); Contract actual = cr.GetContracts()[0]; actual.Id = 1; actual.ContractLines.Add(testContractLine); Assert.AreEqual(0, actual.ContractLines.First().DeliveredAmount); cr.AddAmount(actual.Id, testContractLine.Id, 25); actual = cr.GetContracts()[0]; Assert.AreEqual(25, actual.ContractLines.First().DeliveredAmount); cr.AddAmount(actual.Id, testContractLine.Id, -25); }
public void Database_RemoveContractLine() { Material m = new Material(2, "Kobber", "K"); ContractLine cl = new ContractLine(m, 20.00m, 1000, 50, true, ""); dbc.AddContractLine(84, cl); Contract c = dbc.GetContract(84); ContractLine actualLine = c.ContractLines.Last(); Assert.AreEqual("K", actualLine.Material.Designation); Assert.AreEqual(20.00m, actualLine.Price); Assert.AreEqual(1000, actualLine.TotalAmount); Assert.AreEqual(50, actualLine.DeliveredAmount); dbc.RemoveContractLine(actualLine.Id); c = dbc.GetContract(84); actualLine = c.ContractLines.Last(); Assert.AreNotEqual("K", actualLine.Material.Designation); Assert.AreNotEqual(20.00m, actualLine.Price); Assert.AreNotEqual(1000, actualLine.TotalAmount); Assert.AreNotEqual(50, actualLine.DeliveredAmount); }
public void Database_CreateContract_ContractInDatabase() { Customer customer = new Customer(3, "TestCust", "Denmark"); Material material = new Material(1, "Jern", "J"); ContractLine contractLine = new ContractLine(material, 0.50m, 1000, 0, true, "Nothing"); DateTime date = new DateTime(2017, 5, 16); Contract contract = new Contract(4, customer, date, Currency.DKK, "MR"); contract.ContractLines.Add(contractLine); dbc.AddContract(contract); Contract actual = dbc.GetContract(4); Assert.AreEqual("TestCust", actual.Customer.Name); //Assert.AreEqual(1, actual.ContractLines.Count); Assert.AreEqual("Jern", actual.ContractLines[0].Material.Type); Assert.AreEqual(1000, actual.ContractLines[0].TotalAmount); Assert.AreEqual(0, actual.ContractLines[0].DeliveredAmount); Assert.AreEqual(1000, actual.ContractLines[0].RemainingAmount); Assert.AreEqual(0.50m, actual.ContractLines[0].Price); Assert.AreEqual(2017, actual.Date.Year); Assert.AreEqual(5, actual.Date.Month); Assert.AreEqual(16, actual.Date.Day); }
private void findContracts() { pb_updateTable.Value = 0; List <Contract> foundContracts = new List <Contract>(); bool contractNumberCriterium = tb_contractNumber.Text != string.Empty; string contractNumber = tb_contractNumber.Text.ToLower(); Provider providerSelect = (Provider)cb_provider.SelectedItem; bool providerCriterium = false; int PK_Provider = -1; if (providerSelect != null) { providerCriterium = true; PK_Provider = providerSelect.PK_Provider; } Resource resourceSelect = (Resource)cb_resource.SelectedItem; bool resourceCriterium = false; if (resourceSelect != null) { resourceCriterium = true; } bool conclusionCityCriterium = tb_conclusionCity.Text != ""; string conclusionCity = tb_conclusionCity.Text; bool conclusionCriterium = dtp_conclusionDate.CustomFormat.ToString() != " "; string conclusionDate = dtp_conclusionDate.Value.ToString("dd-MM-yyyy"); bool startFromCriterium = dtp_startDateFrom.CustomFormat.ToString() != " "; DateTime startFromDate = DateTime.Parse(dtp_startDateFrom.Value.ToString("dd-MM-yyyy")); bool expiredFromCriterium = dtp_expiredDateFrom.CustomFormat.ToString() != " "; DateTime expiredFromDate = DateTime.Parse(dtp_expiredDateFrom.Value.ToString("dd-MM-yyyy")); bool startToCriterium = dtp_startDateTo.CustomFormat.ToString() != " "; DateTime startToDate = DateTime.Parse(dtp_startDateTo.Value.ToString("dd-MM-yyyy")); bool expiredToCriterium = dtp_expiredDateTo.CustomFormat.ToString() != " "; DateTime expiredToDate = DateTime.Parse(dtp_expiredDateTo.Value.ToString("dd-MM-yyyy")); bool statusCriterium = !rb_any.Checked; bool hasUnderdeliveryCriterium = cb_hasUnderdelivery.Checked; List <Contract> cycleContracts = Program.db.Contracts.ToList(); int pb_value = (contracts.Count / 100); int pb_unitValue = 0; foreach (Contract contract in cycleContracts) { pb_unitValue++; if (pb_unitValue >= pb_value && pb_updateTable.Value < 100) { pb_updateTable.Value += 1; pb_unitValue = 0; } bool contractNumberFound = !contractNumberCriterium; bool providerFound = !providerCriterium; bool resourceFound = !resourceCriterium; bool conclusionCityFound = !conclusionCityCriterium; bool conclusionFound = !conclusionCriterium; bool startFromFound = !startFromCriterium; bool expiredFromFound = !expiredFromCriterium; bool startToFound = !startToCriterium; bool expiredToFound = !expiredToCriterium; bool statusFound = !statusCriterium; bool hasUnderdeliveryFound = !hasUnderdeliveryCriterium; // ContractNumber criterium if (contractNumberCriterium && contract.ContractNumber.Contains(contractNumber)) { contractNumberFound = true; } // Provider criterium if (providerCriterium && contract.Provider.PK_Provider == PK_Provider) { providerFound = true; } // Resource criterium if (resourceCriterium && contract.checkResourceInContract(resourceSelect)) { resourceFound = true; } // ConclusionCity criterium if (conclusionCityCriterium && contract.ConclusionCity.Contains(conclusionCity)) { conclusionCityFound = true; } // Conclusion criterium if (conclusionCriterium && contract.ConclusionDateWithoutTime.Contains(conclusionDate)) { conclusionFound = true; } // Start criterium if (startFromCriterium && DateTime.Compare(contract.StartDate, startFromDate) >= 0) { startFromFound = true; } if (startToCriterium && DateTime.Compare(contract.StartDate, startToDate) <= 0) { startToFound = true; } // Expired criterium if (expiredFromCriterium && DateTime.Compare(contract.ExpiredDate, expiredFromDate) >= 0) { expiredFromFound = true; } if (expiredToCriterium && DateTime.Compare(contract.ExpiredDate, expiredToDate) <= 0) { expiredToFound = true; } // Status criterium if (statusCriterium && (contract.IsOpened && rb_opened.Checked) || (!contract.IsOpened && rb_closed.Checked)) { statusFound = true; } // Hasundetdelivery criterium if (hasUnderdeliveryCriterium) { List <ContractLine> contractLines = contract.getContractLines(); List <ReceiptOrderLine> receiptLines = Program.db.ReceiptOrderLines.ToList() .Where(b => b.ReceiptOrder.PK_Contract == contract.PK_Contract) .OrderBy(b => b.ReceiptOrder.DeliveryDate) .ToList(); for (int i = 0; i < contractLines.Count; i++) { ContractLine line = contractLines[i]; ReceiptOrderLine thisLine = receiptLines.FindAll(b => b.PK_Resource == line.PK_Resource) .Where(b => b.ReceiptOrder.DeliveryDate <= line.DeliveryDate) .FirstOrDefault(); if (thisLine == null) { hasUnderdeliveryFound = true; break; } else { if (line.Amount - thisLine.AcceptedAmount > 0) { hasUnderdeliveryFound = true; break; } receiptLines.Remove(thisLine); } } } // Add this contract to foundContracts if it passed all criteriums if (contractNumberFound && providerFound && conclusionFound && startFromFound && expiredFromFound && statusFound && startToFound && expiredToFound && conclusionCityFound && resourceFound && hasUnderdeliveryFound) { foundContracts.Add(contract); } } contracts = foundContracts; }
//сохранение контракта в БД private bool saveModel() { if (validateInput()) { if (currContract != null) { currContract.ContractNumber = tb_actNumber.Text; currContract.ConclusionCity = tb_conclusionCity.Text; currContract.CustomerAgentName = tb_customerAgentName.Text; currContract.CustomerAgentRole = tb_customerAgentRole.Text; currContract.ProviderAgentName = tb_providerAgentName.Text; currContract.ProviderAgentRole = tb_providerAgentRole.Text; currContract.PK_Provider = ((Provider)cb_provider.SelectedItem).PK_Provider; currContract.ConclusionDate = dtp_conclusionDate.Value; currContract.ExpiredDate = dtp_expiredDate.Value; currContract.StartDate = dtp_startDate.Value; currContract.SupplierPenalty = nud_supplierPenalty.Value; currContract.CustomerPenalty = nud_customerPenalty.Value; Program.db.Contracts.Update(currContract); //refresh contract lines List <ContractLine> lines = currContract.getContractLines(); for (int i = 0; i < dgv_contractlines.Rows.Count - 1; i++) { //добавляем в бд, если нет ключа if (dgv_contractlines.Rows[i].Cells[0].Value == null) { float amount = 0; if (dgv_contractlines.Rows[i].Cells["Amount"].Value != null) { float.TryParse(dgv_contractlines.Rows[i].Cells["Amount"].Value.ToString(), NumberStyles.Float, CultureInfo.InvariantCulture, out amount); } Decimal unitPrice = 0; if (dgv_contractlines.Rows[i].Cells["UnitPrice"].Value != null) { Decimal.TryParse(dgv_contractlines.Rows[i].Cells["UnitPrice"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out unitPrice); } ContractLine line = new ContractLine() { PK_Contract = currContract.PK_Contract, Amount = amount, UnitPrice = unitPrice, DeliveryDate = DateTime.Parse(dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value == null ? DateTime.Now.ToString() : dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value.ToString()), PK_Resource = (int)dgv_contractlines.Rows[i].Cells["Resource"].Value }; Program.db.ContractLines.Add(line); Program.db.SaveChanges(); } else { //иначе обновляем существующий contractline int pk_line = int.Parse(dgv_contractlines.Rows[i].Cells[0].Value.ToString()); int pk_resource = (int)dgv_contractlines.Rows[i].Cells[1].Value; float amount = 0; if (dgv_contractlines.Rows[i].Cells["Amount"].Value != null) { float.TryParse(dgv_contractlines.Rows[i].Cells["Amount"].Value.ToString(), NumberStyles.Float, CultureInfo.InvariantCulture, out amount); } Decimal unitPrice = 0; if (dgv_contractlines.Rows[i].Cells["UnitPrice"].Value != null) { Decimal.TryParse(dgv_contractlines.Rows[i].Cells["UnitPrice"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out unitPrice); } DateTime deliveryDate = DateTime.Parse(dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value.ToString() == String.Empty ? DateTime.Now.ToString() : dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value.ToString()); ContractLine singleLine = lines.Find((item) => item.PK_ContractLine == pk_line); singleLine.PK_Resource = pk_resource; singleLine.Amount = amount; singleLine.UnitPrice = unitPrice; singleLine.DeliveryDate = deliveryDate; Program.db.ContractLines.Update(singleLine); Program.db.SaveChanges(); } } // Delete deleted lines foreach (int id in deletedLines) { ContractLine line = lines.Find((item) => item.PK_ContractLine == id); Program.db.ContractLines.Remove(line); Program.db.SaveChanges(); } } else { Contract newContract = new Contract() { IsOpened = true, ContractNumber = tb_actNumber.Text, ConclusionCity = tb_conclusionCity.Text, ConclusionDate = dtp_conclusionDate.Value, StartDate = dtp_startDate.Value, ExpiredDate = dtp_expiredDate.Value, ProviderAgentName = tb_providerAgentName.Text, ProviderAgentRole = tb_providerAgentRole.Text, CustomerAgentName = tb_customerAgentName.Text, CustomerAgentRole = tb_customerAgentRole.Text, SupplierPenalty = nud_supplierPenalty.Value, CustomerPenalty = nud_customerPenalty.Value, PK_Provider = ((Provider)cb_provider.SelectedItem).PK_Provider, PK_OrganizationDescription = Program.db.OrganizationDescriptions.FirstOrDefault().PK_OrganizationDescription }; Program.db.Contracts.Add(newContract); Program.db.SaveChanges(); //add contractLines for (int i = 0; i < dgv_contractlines.Rows.Count - 1; i++) { float amount = 0; if (dgv_contractlines.Rows[i].Cells["Amount"].Value != null) { float.TryParse(dgv_contractlines.Rows[i].Cells["Amount"].Value.ToString(), NumberStyles.Float, CultureInfo.InvariantCulture, out amount); } Decimal unitPrice = 0; if (dgv_contractlines.Rows[i].Cells["UnitPrice"].Value != null) { Decimal.TryParse(dgv_contractlines.Rows[i].Cells["UnitPrice"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out unitPrice); } ContractLine currLine = new ContractLine() { PK_Resource = (int)dgv_contractlines.Rows[i].Cells["Resource"].Value, Amount = amount, UnitPrice = unitPrice, DeliveryDate = DateTime.Parse(dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value == null ? DateTime.Now.ToString() : dgv_contractlines.Rows[i].Cells["DeliveryDate"].Value.ToString()), PK_Contract = newContract.PK_Contract }; Program.db.ContractLines.Add(currLine); } } Program.db.SaveChanges(); return(true); } else { return(false); } }
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 ContractLineDisplayItem(Contract contract, ContractLine contractLine) { parentContract = contract; contractLineItem = contractLine; }
public void AddContractLine(int contractId, ContractLine contractLine) { dbController.AddContractLine(contractId, contractLine); }