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 static void LoadLines(this ContractViewModel contract) { if (contract == null) { return; } var contractLines = DBContractLines.GetAllByActiveContract(contract.ContractNo, contract.VersionNo); if (contractLines != null) { contract.Lines = DBContractLines.ParseToViewModel(contractLines); } }
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); }
public ContractViewModel ArchiveContract(ContractViewModel data) { if (data != null) { if (data.ContractType == (int)ContractType.Proposal) { Contratos contract = DBContracts.GetByIdAndVersion(data.ContractNo, data.VersionNo); if (contract != null) { try { //Create new contract and update old contract.UtilizadorModificação = changedByUserName; contract.Arquivado = true; DBContracts.Update(contract); contract = DBContracts.ParseToDB(data); contract.NºVersão = contract.NºVersão + 1; contract.UtilizadorCriação = changedByUserName; contract.UtilizadorModificação = ""; if (contract.TipoContrato == 1) { contract.NºProposta = ""; } contract.DataHoraModificação = null; List <int> finishingStates = new List <int>() { 4, 5, 10 }; if (contract.Estado.HasValue) { if (finishingStates.Contains(contract.Estado.Value)) { contract.Arquivado = true; } else { contract.Arquivado = false; } } else { contract.Arquivado = false; } //if (data.ActionCode.HasValue && data.ActionCode.Value == 2) //{ // contract.Estado = 1; // contract.DataHoraModificação = DateTime.Now; // contract.UtilizadorModificação = changedByUserName; //} DBContracts.Create(contract); //Duplicate Contract Lines List <LinhasContratos> contractLines = DBContractLines.GetAllByActiveContract(data.ContractNo, data.VersionNo); contractLines.ForEach(x => { x.NºLinha = 0; x.NºVersão = contract.NºVersão; DBContractLines.Create(x); }); //data.VersionNo = contract.NºVersão; data = DBContracts.ParseToViewModel(contract, string.Empty, string.Empty); data.eReasonCode = 1; data.eMessage = "Arquivado com sucesso."; } catch (Exception) { data.eReasonCode = 2; data.eMessage = "Ocorreu um erro ao arquivar."; } } } else { data.eReasonCode = 2; data.eMessage = "O tipo de contrato é inválido."; } } else { data.eReasonCode = 2; data.eMessage = "Ocorreu um erro ao arquivar."; } return(data); }
public ContractViewModel ArchiveContract(ContractViewModel contractToArchive) { if (contractToArchive != null) { Contratos cContract = DBContracts.GetByIdAndVersion(contractToArchive.ContractNo, contractToArchive.VersionNo); var lastVersionContract = DBContracts.GetByIdLastVersion(contractToArchive.ContractNo); int lastVersionNumber = 0; if (lastVersionContract != null) { lastVersionNumber = lastVersionContract.NºVersão + 1; } else { lastVersionNumber = contractToArchive.VersionNo + 1; } if (cContract != null) { try { //Create new contract and update old cContract.Notas = cContract.Notas; cContract.RazãoArquivo = contractToArchive.ArchiveReason; cContract.UtilizadorModificação = changedByUserName; cContract.Arquivado = true; DBContracts.Update(cContract); //NR20181116 - Só faz se não for Oportunidade if (cContract.TipoContrato == (int)ContractType.Oportunity) { contractToArchive.eReasonCode = 1; contractToArchive.eMessage = "Arquivado com sucesso."; return(contractToArchive); } cContract.NºVersão = lastVersionNumber;// cContract.NºVersão + 1; cContract.UtilizadorCriação = changedByUserName; cContract.UtilizadorModificação = ""; if (cContract.TipoContrato == (int)ContractType.Oportunity) { cContract.NºProposta = ""; } else if (cContract.TipoContrato == (int)ContractType.Proposal) { cContract.NºContrato = ""; } cContract.DataHoraModificação = null; cContract.Arquivado = false; if (contractToArchive.ActionCode.HasValue && contractToArchive.ActionCode.Value == 2) { cContract.Estado = 1; cContract.DataHoraModificação = DateTime.Now; cContract.UtilizadorModificação = changedByUserName; } DBContracts.Create(cContract); //Duplicate Contract Lines List <LinhasContratos> ContractLines = DBContractLines.GetAllByActiveContract(contractToArchive.ContractNo, contractToArchive.VersionNo); ContractLines.ForEach(x => { x.NºVersão = lastVersionNumber;// cContract.NºVersão; DBContractLines.Create(x); }); contractToArchive.VersionNo = lastVersionNumber;// cContract.NºVersão; contractToArchive.eReasonCode = 1; contractToArchive.eMessage = "Arquivado com sucesso."; return(contractToArchive); } catch (Exception) { contractToArchive.eReasonCode = 2; contractToArchive.eMessage = "Ocorreu um erro ao arquivar."; } } } else { contractToArchive.eReasonCode = 2; contractToArchive.eMessage = "Ocorreu um erro ao arquivar."; } return(contractToArchive); }