/// <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;
        }
Esempio n. 2
0
        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();
     }
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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();
        }
Esempio n. 11
0
        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>();
        }
Esempio n. 13
0
        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);
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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);
        }
Esempio n. 16
0
        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);
            }
        }
Esempio n. 18
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);
        }
Esempio n. 19
0
 public ContractLineDisplayItem(Contract contract, ContractLine contractLine)
 {
     parentContract   = contract;
     contractLineItem = contractLine;
 }
Esempio n. 20
0
 public void AddContractLine(int contractId, ContractLine contractLine)
 {
     dbController.AddContractLine(contractId, contractLine);
 }