public ContractViewModel UpdatePrices(UpdateContractPricesRequest updPriceRequest) { ContractViewModel contract; var tmpContract = DBContracts.GetByIdAndVersion(updPriceRequest.ContractNo, updPriceRequest.VersionNo); if (tmpContract == null) { contract = new ContractViewModel(); contract.eReasonCode = 2; contract.eMessage = "Não foi possivel obter os dados do contrato."; return(contract); } contract = ArchiveContract(DBContracts.ParseToViewModel(tmpContract, string.Empty, string.Empty)); if (contract.eReasonCode == 1) { contract.LoadLines(); contract.DueDate = updPriceRequest.DueDate; contract.ClientRequisitionNo = updPriceRequest.ClientRequisitionNo; contract.NextInvoiceDate = updPriceRequest.NextInvoiceDate; contract.ReceiptDateRequisition = updPriceRequest.RequisitionReceiveDate; contract.StartData = updPriceRequest.StartDate; using (var transaction = ctx.Database.BeginTransaction()) { try { var updatedContract = ctx.Contratos.Update(DBContracts.ParseToDB(contract)); contract.Lines.ForEach(x => { if (updPriceRequest.percentageToApllyInLines > (-100)) { x.UnitPrice = x.UnitPrice + ((updPriceRequest.percentageToApllyInLines * x.UnitPrice) / 100); ctx.LinhasContratos.Update(DBContractLines.ParseToDB(x)); } }); ctx.SaveChanges(); transaction.Commit(); contract.eReasonCode = 1; contract.eMessage = "Preços atualizados com sucesso."; } catch { contract.eReasonCode = 2; contract.eMessage = "Ocorreu um erro ao atualizar o contrato."; } } } return(contract); }
public ErrorHandler CreateProposalFromContract(string contractId, int version, decimal percentageToApllyInLines = decimal.MinValue) { ErrorHandler result = new ErrorHandler() { eReasonCode = 2, eMessage = "Não foi possivel criar a proposta", }; //Get contract data var contractDb = DBContracts.GetByIdAndVersion(contractId, version); ContractViewModel contract = DBContracts.ParseToViewModel(contractDb, string.Empty, string.Empty); contract.LoadLines(); //Get Numeration Configuração conf = DBConfigurations.GetById(1); int entityNumerationConfId = conf.NumeraçãoPropostas.Value; string proposalId = DBNumerationConfigurations.GetNextNumeration(entityNumerationConfId, true, false); if (!string.IsNullOrEmpty(proposalId) && contract != null) { contract.ContractNo = proposalId; contract.ContractType = (int)ContractType.Proposal; contract.VersionNo = 1; contract.Status = 1; contract.RelatedContract = contractId; contract.CreateDate = DateTime.Now.ToString(); contract.CreateUser = changedByUserName; contract.UpdateDate = string.Empty; contract.UpdateUser = string.Empty; //Add Proposal Header var proposal = ctx.Contratos.Add(DBContracts.ParseToDB(contract)); //Add Proposal Lines contract.Lines.ForEach(x => { x.ContractType = (int)ContractType.Proposal; x.ContractNo = proposalId; x.VersionNo = 1; x.LineNo = 0; if (percentageToApllyInLines > (-100)) { x.UnitPrice = x.UnitPrice + ((percentageToApllyInLines * x.UnitPrice) / 100); proposal.Entity.LinhasContratos.Add(DBContractLines.ParseToDB(x)); } else { proposal.Entity.LinhasContratos.Add(DBContractLines.ParseToDB(x)); } }); ctx.SaveChanges(); result.eReasonCode = 1; result.eMessage = "Foi criada a proposta " + proposalId + "."; try { //Update Last Numeration Used ConfiguraçãoNumerações configNumerations = DBNumerationConfigurations.GetById(entityNumerationConfId); if (configNumerations != null) { configNumerations.ÚltimoNºUsado = proposalId; configNumerations.UtilizadorModificação = changedByUserName; DBNumerationConfigurations.Update(configNumerations); } } catch { result.eMessage += " Ocorreu um erro ao atualizar a numeração."; } } return(result); }