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);
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        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));
        }
예제 #7
0
        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);
            }
        }