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

            var proposalLineInfo   = new CrmBELinhaPropostaOPV();
            var opportunitiesTable = PrimaveraEngine.Engine.CRM.PropostasOPV;
            var proposalInfo       = opportunitiesTable.Edita(jsonObject.idOportunidade, jsonObject.ProposalNumber);
            var proposalLines      = proposalInfo.get_Linhas();

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

            proposalInfo.set_EmModoEdicao(true);
            SetFields(proposalLineInfo, jsonObject);
            proposalLines.Insere(proposalLineInfo);
            proposalInfo.set_Linhas(proposalLines);
            opportunitiesTable.Actualiza(proposalInfo);

            return(GenerateProposal(proposalLineInfo));
        }
        /*private static Proposals GenerateProposal(CrmBELinhasPropostaOPV opportunityInfo)
         * {
         *      return new Proposals()
         *          {
         *              ProposalNumber = TypeParser.String(opportunityInfo.get_NumProposta()),
         *              Description = opportunityInfo.get_Descricao(),
         *              PaymentMethod = opportunityInfo.get_ModoPagamento(),
         *              PaymentCondition = opportunityInfo.get_CondPagamento(),
         *              Cost = opportunityInfo.get_Custo(),
         *              Value = opportunityInfo.get_Valor(),
         *              DiscountValue = opportunityInfo.get_ValorDesconto(),
         *              Rentability = opportunityInfo.get_Rentabilidade(),
         *              Margin = opportunityInfo.get_Margem()
         *          };
         * }*/

        private static void SetFields(CrmBELinhaPropostaOPV proposalLineInfo, ProposalsLine jsonObject)
        {
            proposalLineInfo.set_IdOportunidade(jsonObject.idOportunidade);
            proposalLineInfo.set_NumProposta(jsonObject.ProposalNumber);
            proposalLineInfo.set_Linha(jsonObject.Line);
            proposalLineInfo.set_Artigo(jsonObject.Article);
            proposalLineInfo.set_Descricao(jsonObject.Description);
            proposalLineInfo.set_Quantidade(jsonObject.Quantity);
            proposalLineInfo.set_Unidade(jsonObject.Unit);
            proposalLineInfo.set_FactorConv(jsonObject.FactorConv);
            proposalLineInfo.set_PrecoCusto(jsonObject.CostPrice);
            proposalLineInfo.set_PrecoVenda(jsonObject.SellsPrice);
            proposalLineInfo.set_Desconto1(jsonObject.Discount1);
            proposalLineInfo.set_Desconto2(jsonObject.Discount2);
            proposalLineInfo.set_Desconto3(jsonObject.Discount3);
            proposalLineInfo.set_Desconto(jsonObject.Discount);
            proposalLineInfo.set_ValorDesconto(jsonObject.DiscountValue);
            proposalLineInfo.set_Rentabilidade(jsonObject.Rentability);
            proposalLineInfo.set_Margem(jsonObject.Margin);
            proposalLineInfo.set_Observacoes(jsonObject.Observations);
        }
 private static ProposalsLine GenerateProposal(CrmBELinhaPropostaOPV proposalLineInfo)
 {
     return(new ProposalsLine()
     {
         idOportunidade = proposalLineInfo.get_IdOportunidade(),
         ProposalNumber = proposalLineInfo.get_NumProposta(),
         Line = proposalLineInfo.get_Linha(),
         Article = proposalLineInfo.get_Artigo(),
         Description = proposalLineInfo.get_Descricao(),
         Quantity = proposalLineInfo.get_Quantidade(),
         Unit = proposalLineInfo.get_Unidade(),
         FactorConv = proposalLineInfo.get_FactorConv(),
         CostPrice = proposalLineInfo.get_PrecoCusto(),
         SellsPrice = proposalLineInfo.get_PrecoVenda(),
         Discount1 = proposalLineInfo.get_Desconto1(),
         Discount2 = proposalLineInfo.get_Desconto2(),
         Discount3 = proposalLineInfo.get_Desconto3(),
         Discount = proposalLineInfo.get_Desconto(),
         DiscountValue = proposalLineInfo.get_ValorDesconto(),
         Rentability = proposalLineInfo.get_Rentabilidade(),
         Margin = proposalLineInfo.get_Margem(),
         Observations = proposalLineInfo.get_Observacoes(),
     });
 }
示例#4
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);
            }
        }