public static Proposals Insert(string sessionId, Proposals jsonObject)
        {
            if (PrimaveraEngine.InitializeCompany() == false)
            {
                throw new DatabaseConnectionException();
            }

            var proposalInfo   = new CrmBEPropostaOPV();
            var proposalsTable = PrimaveraEngine.Engine.CRM.PropostasOPV;

            /*if (opportunitiesTable.Existe(opportunityId))
             * {
             *  throw new EntityExistsException("oportunidade", true);
             * }*/

            SetFields(proposalInfo, jsonObject);
            proposalsTable.Actualiza(proposalInfo);

            /* for (int i = 0; i < jsonObject.ProposalsLines.Count; i++)
             * {
             *   ProposalLinesIntegration.Insert(jsonObject.ProposalsLines[i]);
             * }*/

            return(GenerateProposal(proposalInfo, jsonObject.ProposalsLines));
        }
示例#2
0
        public static RespostaErro RemoveProduto(OportunidadeDTO dto)
        {
            Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro();
            CrmBEPropostaOPV objProp = new CrmBEPropostaOPV();

            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(dto.IdOportunidade))
                    {
                        erro.Erro      = 1;
                        erro.Descricao = "Nao existe oportunidade";
                        return(erro);
                    }
                    //proposta
                    objProp = PriEngine.Engine.CRM.PropostasOPV.Edita(dto.IdOportunidade, dto.NumProposta, true);
                    objProp.set_EmModoEdicao(true);

                    //vai buscar os artigos desta proposta
                    CrmBELinhasPropostaOPV objLinhas = objProp.get_Linhas();
                    for (short j = 1; j <= objLinhas.NumItens; j++)
                    {
                        var objLinha = objLinhas.get_Edita(j);
                        var artigo   = objLinha.get_Artigo();
                        if (artigo == dto.IdArtigo)
                        {
                            //artigo a eliminar
                            objLinhas.Remove(objLinha.get_Linha());
                            break;
                        }
                    }

                    //update proposta
                    objProp.set_Linhas(objLinhas);
                    PriEngine.Engine.CRM.PropostasOPV.Actualiza(objProp);

                    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);
            }
        }
示例#3
0
        //so faz update das quantidades
        public static RespostaErro UpdOportunidade(PropostaDTO proposta)
        {
            Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro();
            CrmBEPropostaOPV objProp = new CrmBEPropostaOPV();

            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(proposta.IdOportunidade))
                    {
                        erro.Erro      = 1;
                        erro.Descricao = "Nao existe oportunidade";
                        return(erro);
                    }
                    //proposta
                    objProp = PriEngine.Engine.CRM.PropostasOPV.Edita(proposta.IdOportunidade, proposta.Proposta.NumProposta, true);
                    objProp.set_EmModoEdicao(true);

                    //vai buscar os artigos desta proposta
                    CrmBELinhasPropostaOPV   objLinhas = objProp.get_Linhas();
                    List <OportunidadeLinha> artigos   = proposta.Proposta.Artigos;
                    foreach (var art in artigos)
                    {
                        short n = art.Linha;
                        n--;
                        var objLinha = objLinhas.get_Edita(n);
                        objLinha.set_Quantidade(art.Quantidade);
                    }

                    //update
                    objProp.set_Linhas(objLinhas);
                    PriEngine.Engine.CRM.PropostasOPV.Actualiza(objProp);

                    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);
            }
        }
示例#4
0
        public static RespostaErro CreateProposta(Oportunidade oportunidade)
        {
            Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro();
            StdBELista props = PriEngine.Engine.Consulta(@"SELECT Count(*) AS N FROM PropostasOPV
                                                            WHERE IdOportunidade = '" + oportunidade.ID + "' ;");
            int        n     = props.Valor("N");

            //maximo 4 propostas
            if (n >= 4)
            {
                erro.Erro      = 1;
                erro.Descricao = "The maximum of proposals is four.";
                return(erro);
            }

            CrmBEPropostaOPV prop = new CrmBEPropostaOPV();

            try
            {
                if (PriEngine.InitializeCompany(FirstREST.Properties.Settings.Default.Company.Trim(), FirstREST.Properties.Settings.Default.User.Trim(), FirstREST.Properties.Settings.Default.Password.Trim()) == true)
                {
                    prop.set_IdOportunidade(oportunidade.ID);
                    prop.set_IdCabecOrigem(oportunidade.ID);
                    short x = (short)n;
                    x++;
                    prop.set_NumProposta(x);
                    prop.set_Valor(0);

                    //var opp = PriEngine.Engine.CRM.OportunidadesVenda.EditaID(oportunidade.ID);
                    PriEngine.Engine.CRM.PropostasOPV.Actualiza(prop);

                    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);
            }
        }
 private static void SetFields(CrmBEPropostaOPV proposalInfo, Proposals jsonObject)
 {
     proposalInfo.set_IdOportunidade(jsonObject.idOportunidade);
     proposalInfo.set_DescontoEntidade(jsonObject.EntityDiscount);
     proposalInfo.set_NumProposta(jsonObject.ProposalNumber);
     proposalInfo.set_Descricao(jsonObject.Description);
     proposalInfo.set_ModoPagamento(jsonObject.PaymentMethod);
     proposalInfo.set_CondPagamento(jsonObject.PaymentCondition);
     proposalInfo.set_Custo(jsonObject.Cost);
     proposalInfo.set_Valor(jsonObject.Value);
     proposalInfo.set_ValorDesconto(jsonObject.DiscountValue);
     proposalInfo.set_Rentabilidade(jsonObject.Rentability);
     proposalInfo.set_Margem(jsonObject.Margin);
     proposalInfo.set_NaoTotalizadora(jsonObject.Totalize);
     proposalInfo.set_Observacoes(jsonObject.Observations);
 }
 private static Proposals GenerateProposal(CrmBEPropostaOPV proposalInfo, List <ProposalsLine> lines)
 {
     return(new Proposals()
     {
         ProposalNumber = proposalInfo.get_NumProposta(),
         Description = proposalInfo.get_Descricao(),
         PaymentMethod = proposalInfo.get_ModoPagamento(),
         PaymentCondition = proposalInfo.get_CondPagamento(),
         Cost = proposalInfo.get_Custo(),
         Value = proposalInfo.get_Valor(),
         DiscountValue = proposalInfo.get_ValorDesconto(),
         Observations = proposalInfo.get_Observacoes(),
         Margin = proposalInfo.get_Margem(),
         EntityDiscount = proposalInfo.get_DescontoEntidade(),
         Rentability = proposalInfo.get_Rentabilidade(),
         ProposalsLines = lines,
         Totalize = proposalInfo.get_NaoTotalizadora()
     });
 }
示例#7
0
        public static RespostaErro AdicionaProduto(OportunidadeDTO dto)
        {
            Lib_Primavera.Model.RespostaErro erro = new Model.RespostaErro();
            CrmBEPropostaOPV objProp = new CrmBEPropostaOPV();

            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(dto.IdOportunidade))
                    {
                        erro.Erro      = 1;
                        erro.Descricao = "Nao existe oportunidade";
                        return(erro);
                    }
                    //proposta
                    objProp = PriEngine.Engine.CRM.PropostasOPV.Edita(dto.IdOportunidade, dto.NumProposta, true);
                    objProp.set_EmModoEdicao(true);

                    //vai buscar os artigos desta proposta
                    CrmBELinhasPropostaOPV objLinhas = objProp.get_Linhas();

                    //nova linha a ser criada
                    CrmBELinhaPropostaOPV objLinha = new CrmBELinhaPropostaOPV();

                    //artigo que vamos adicionar
                    GcpBEArtigo objArtigo = PriEngine.Engine.Comercial.Artigos.Edita(dto.IdArtigo);

                    objLinha.set_IdOportunidade(dto.IdOportunidade);
                    objLinha.set_NumProposta(dto.NumProposta);
                    objLinha.set_Artigo(dto.IdArtigo);
                    short n = objLinhas.NumItens;
                    n++;
                    objLinha.set_Linha(n);
                    objLinha.set_Descricao(objArtigo.get_Descricao());
                    objLinha.set_Quantidade(1);
                    objLinha.set_Unidade(objArtigo.get_UnidadeVenda());
                    objLinha.set_PrecoCusto(objArtigo.get_PCMedio());
                    objLinha.set_Desconto(objArtigo.get_Desconto());

                    var objArtigoPreco = PriEngine.Engine.Comercial.ArtigosPrecos.Edita(dto.IdArtigo, "EUR", objArtigo.get_UnidadeVenda());
                    objLinha.set_PrecoVenda(objArtigoPreco.get_PVP1());

                    //update proposta
                    objLinhas.Insere(objLinha);
                    objProp.set_Linhas(objLinhas);
                    PriEngine.Engine.CRM.PropostasOPV.Actualiza(objProp);

                    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);
            }
        }