private static void SetFields(CrmBEOportunidadeVenda opportunityInfo, Opportunity jsonObject) { opportunityInfo.set_Entidade(jsonObject.Entity); opportunityInfo.set_Campanha(jsonObject.Campaign); opportunityInfo.set_CicloVenda(jsonObject.SellCycle); opportunityInfo.set_DataEncomenda(jsonObject.DateOrdered); opportunityInfo.set_DataExpiracao(jsonObject.ExpirationDate); opportunityInfo.set_DataRealEncomenda(jsonObject.RealBillingDate); opportunityInfo.set_Descricao(jsonObject.Description); opportunityInfo.set_MargemOV(jsonObject.MarginOV); opportunityInfo.set_Origem(jsonObject.Origin); opportunityInfo.set_ValorEncomendaOV(jsonObject.OrderValueOV); opportunityInfo.set_ValorPropostoOV(jsonObject.ProposedValueOV); opportunityInfo.set_Zona(jsonObject.Zone); opportunityInfo.set_EstadoVenda(jsonObject.Status); opportunityInfo.set_Vendedor(jsonObject.Seller); opportunityInfo.set_CriadoPor(jsonObject.CreatedBy); opportunityInfo.set_DataRealFacturacao(jsonObject.RealBillingDate); opportunityInfo.set_DataFecho(jsonObject.ClosureDate); opportunityInfo.set_MotivoPerda(jsonObject.LossMotive); opportunityInfo.set_Moeda(jsonObject.Currency); opportunityInfo.set_Resumo(jsonObject.Brief); opportunityInfo.set_TipoEntidade(jsonObject.EntityType); opportunityInfo.set_ValorTotalOV(jsonObject.TotalValueOV); }
private static OpportunityInfo GenerateOpportunity(CrmBEOportunidadeVenda opportunityInfo) { return(new OpportunityInfo() { DataCriacao = opportunityInfo.get_DataCriacao(), Entity = opportunityInfo.get_Entidade(), Campaign = opportunityInfo.get_Campanha(), SellCycle = opportunityInfo.get_CicloVenda(), ExpirationDate = opportunityInfo.get_DataExpiracao(), RealDateOrdered = opportunityInfo.get_DataRealEncomenda(), Description = opportunityInfo.get_Descricao(), MarginOV = opportunityInfo.get_MargemOV(), ProposedValueOV = opportunityInfo.get_ValorPropostoOV(), Origin = opportunityInfo.get_Origem(), Seller = opportunityInfo.get_Vendedor(), CreatedBy = opportunityInfo.get_CriadoPor(), RealBillingDate = opportunityInfo.get_DataRealFacturacao(), ClosureDate = opportunityInfo.get_DataFecho(), LossMotive = opportunityInfo.get_MotivoPerda(), OpportunityId = opportunityInfo.get_Oportunidade(), Currency = opportunityInfo.get_Moeda(), Brief = opportunityInfo.get_Resumo(), Zone = opportunityInfo.get_Zona(), Status = opportunityInfo.get_EstadoVenda(), EntityType = opportunityInfo.get_TipoEntidade(), TotalValueOV = opportunityInfo.get_ValorTotalOV(), Identificador = opportunityInfo.get_ID() }); }
private static bool CheckPermissions(CrmBEOportunidadeVenda opportunityInfo, string sessionId) { if (opportunityInfo.get_EstadoVenda() == -1) { return(false); } var representativeId = opportunityInfo.get_Vendedor(); if (representativeId != null && representativeId != sessionId) { return(false); } return(true); }
public static RespostaErro CreateOportunidade(Model.Oportunidade oportunidade) { Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro(); CrmBEOportunidadeVenda objOport = new CrmBEOportunidadeVenda(); try { if (PriEngine.InitializeCompany(FirstREST.Properties.Settings.Default.Company.Trim(), FirstREST.Properties.Settings.Default.User.Trim(), FirstREST.Properties.Settings.Default.Password.Trim()) == true) { objOport.set_ID(Guid.NewGuid().ToString()); StdBELista opps = PriEngine.Engine.Consulta("SELECT COUNT(*) AS N FROM CabecOportunidadesVenda"); int next = opps.Valor("N") + 1; objOport.set_Oportunidade("OPV" + next); objOport.set_Descricao(oportunidade.Descricao); objOport.set_Resumo(oportunidade.Resumo); objOport.set_DataCriacao(DateTime.Now); objOport.set_Entidade(oportunidade.CodCliente); objOport.set_Vendedor(oportunidade.Vendedor); objOport.set_EstadoVenda(0); objOport.set_TipoEntidade("C"); //obrigatorio objOport.set_DataExpiracao(new DateTime(2020, 1, 1)); //obrigatorio objOport.set_CicloVenda("CV_HW"); //obrigatorio objOport.set_Moeda("EUR"); //quando cria ainda nao tem propostas PriEngine.Engine.CRM.OportunidadesVenda.Actualiza(objOport); erro.Erro = 0; erro.Descricao = "Sucesso"; return(erro); } else { erro.Erro = 1; erro.Descricao = "Erro ao abrir empresa"; return(erro); } } catch (Exception ex) { erro.Erro = 1; erro.Descricao = ex.Message; return(erro); } }
public static RespostaErro PerderOportunidade(Oportunidade oportunidade) { Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro(); try { if (PriEngine.InitializeCompany(FirstREST.Properties.Settings.Default.Company.Trim(), FirstREST.Properties.Settings.Default.User.Trim(), FirstREST.Properties.Settings.Default.Password.Trim()) == true) { //oportunidade if (!PriEngine.Engine.CRM.OportunidadesVenda.ExisteID(oportunidade.ID)) { erro.Erro = 1; erro.Descricao = "Nao existe oportunidade"; return(erro); } CrmBEOportunidadeVenda objOport = PriEngine.Engine.CRM.OportunidadesVenda.EditaID(oportunidade.ID); objOport.set_EstadoVenda(2); PriEngine.Engine.CRM.OportunidadesVenda.Actualiza(objOport); erro.Erro = 0; erro.Descricao = "Success"; return(erro); } else { erro.Erro = 1; erro.Descricao = "Erro ao abrir empresa"; return(erro); } } catch (Exception ex) { erro.Erro = 1; erro.Descricao = ex.Message; return(erro); } }
public static OpportunityInfo Insert(string sessionId, Opportunity jsonObject) { if (PrimaveraEngine.InitializeCompany() == false) { throw new DatabaseConnectionException(); } var opportunityInfo = new CrmBEOportunidadeVenda(); var opportunityId = PrimaveraEngine.GenerateHash(); var opportunitiesTable = PrimaveraEngine.Engine.CRM.OportunidadesVenda; if (opportunitiesTable.Existe(opportunityId)) { throw new EntityExistsException("oportunidade", true); } SetFields(opportunityInfo, jsonObject); opportunityInfo.set_CriadoPor(sessionId); opportunityInfo.set_Oportunidade(opportunityId); opportunityInfo.set_DataCriacao(DateTime.Now); opportunitiesTable.Actualiza(opportunityInfo); return(GenerateOpportunity(opportunityInfo)); }
public static Model.Oportunidade GetOportunidade(string id) { CrmBEOportunidadeVenda objLead = new CrmBEOportunidadeVenda(); CrmBEPropostasOPV objOpp = new CrmBEPropostasOPV(); CrmBELinhasPropostaOPV objLinhas = new CrmBELinhasPropostaOPV(); Model.Oportunidade opportunity = new Model.Oportunidade(); List <Model.Proposta> propostas = new List <Model.Proposta>(); if (PriEngine.InitializeCompany(FirstREST.Properties.Settings.Default.Company.Trim(), FirstREST.Properties.Settings.Default.User.Trim(), FirstREST.Properties.Settings.Default.Password.Trim()) == true) { if (PriEngine.Engine.CRM.OportunidadesVenda.ExisteID(id) == false) { return(null); } else { //vai buscar a lead objLead = PriEngine.Engine.CRM.OportunidadesVenda.EditaID(id); opportunity.ID = id; opportunity.NomeOport = objLead.get_Oportunidade(); opportunity.Descricao = objLead.get_Descricao(); opportunity.Resumo = objLead.get_Resumo(); opportunity.DataCriacao = objLead.get_DataCriacao(); opportunity.Vendedor = objLead.get_Vendedor(); var idCliente = objLead.get_Entidade(); opportunity.CodCliente = idCliente; opportunity.NomeCliente = PriEngine.Engine.Comercial.Clientes.DaValorAtributo(idCliente, "Nome"); opportunity.ContactoCliente = PriEngine.Engine.Comercial.Clientes.DaValorAtributo(idCliente, "Fac_Tel"); opportunity.DescontoCliente = PriEngine.Engine.Comercial.Clientes.DaValorAtributo(idCliente, "Desconto"); opportunity.EstadoVenda = objLead.get_EstadoVenda(); //vai buscar as proposta correspondente objOpp = PriEngine.Engine.CRM.OportunidadesVenda.EditaPropostasOPV(id); for (short i = 1; i <= objOpp.NumItens; i++) { var objProposta = objOpp.get_Edita(i); var proposta = new Model.Proposta(); var linhas = new List <Model.OportunidadeLinha>(); proposta.NumProposta = objProposta.get_NumProposta(); proposta.Valor = objProposta.get_Valor(); proposta.Desconto = objProposta.get_ValorDesconto(); proposta.Rentabilidade = objProposta.get_Rentabilidade(); proposta.Margem = objProposta.get_Margem() * 100; //vai buscar os artigos desta proposta objLinhas = objProposta.get_Linhas(); for (short j = 1; j <= objLinhas.NumItens; j++) { var objLinha = objLinhas.get_Edita(j); var numProposta = objLinha.get_NumProposta(); if (numProposta == proposta.NumProposta) { var linha = new Model.OportunidadeLinha(); linha.Linha = objLinha.get_Linha(); linha.IdArtigo = objLinha.get_Artigo(); linha.NomeArtigo = objLinha.get_Descricao(); linha.Quantidade = objLinha.get_Quantidade(); linha.Unidade = objLinha.get_Unidade(); linha.Custo = objLinha.get_PrecoCusto() * linha.Quantidade; linha.PrecoVenda = objLinha.get_PrecoVenda() * linha.Quantidade; linha.Desconto = objLinha.get_ValorDesconto() * linha.Quantidade; linha.PrecoFinal = linha.PrecoVenda - linha.Desconto * linha.Quantidade; linha.Rentabilidade = objLinha.get_Rentabilidade() * linha.Quantidade; linha.Margem = objLinha.get_Margem() * 100; linhas.Add(linha); } } proposta.Artigos = linhas; propostas.Add(proposta); } opportunity.propostas = propostas; return(opportunity); } } else { return(null); } }