Caros,  

Numa aplicação da empresa que estou trabalhando, precisei criar uma Stored 
Procedure no SQL Server para poder gerar boletos de pagamento.

A SP ficou no próprio SQL Server e eu só a chamei, passando os parâmetros via 
mssql_bind, para ela. Embora fique amarrada ao banco de dados, como não se 
cogita a mudança do mesmo, preferi fazer desse jeito.

No fim das contas, criei um helper para poder gerar os boletos em qualquer 
módulo que eu precisasse. Veja como o helper ficou, visitando o gist que criei 
(https://gist.github.com/2661607).

Att.,  

--  
Erick Patrick
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)


On Friday, May 11, 2012 at 3:02 PM, Daniel Passos Martins wrote:

> Macho, tu faz assim oh. Pega o model e coloca a instrução direto.
>  
> function recalcular_parcelas($plano_destino, $plano_origem,
> $cod_pessoa_contrato, $cod_servico_contrato, $novo_valor) {
> $sql = "select cod_lancamento, cod_parcela, case when dias > 0 then
> proporcional_antigo + proporcional_novo
> else
> $novo_valor
> end as proporcional,
> case when dias > 0 then
> historico || '<br>' || mensagem || '<br>' ||
> (select nome_produto_resumido from produtos_produto where
> cod_produto = '" . $plano_destino . "')
> || ' ' || dias_novo || ' dias no valor de R$ ' ||
> proporcional_novo || ' à partir da data ' ||
> to_char(current_date,'DD/MM/YYYY')
> else
> competencia || ' - Servico do mes todo R$ ' || (select
> round(preco_venda,2) from produtos_produto
> where cod_produto = '" . $plano_destino . "') || ' no vencimento '
> || data_vencimento
> end as historico,
> case when dias > 0 then
> historico || '<br>' || mensagem || '<br>' || (select
> nome_produto_resumido from produtos_produto
> where cod_produto = '" . $plano_destino . "') || ' ' || dias_novo
> || ' dias no valor de R$ ' || proporcional_novo ||
> ' à partir da data ' || to_char(current_date,'DD/MM/YYYY')
> else
> 'Parcela ' || numero_parcela || ' de ' || vigencia || ' de ' ||
> (select nome_produto_resumido from produtos_produto where
> cod_produto = '" . $plano_destino . "')
> end as descricao_lancamento
> from (
> select vigencia, numero_parcela, cod_lancamento, historico, competencia,
> (data_vencimento - date(now())) as dias_novo,
> cp.cod_parcela,round((30 - (data_vencimento - date(now()))) *
> round((valor/30),2),2) as proporcional_antigo,
> (data_vencimento - date(now())) * (select round(preco_venda/30,2) from
> produtos_produto where cod_produto = 3) as proporcional_novo ,
> 30 - (data_vencimento - date(now())) as dias,
> csc.cod_produto,cp.valor,data_vencimento,
> nome_produto_resumido || ' ' || 30 - (data_vencimento - date(now())) || '
> dias no valor de R$ ' ||
> round((30 - (data_vencimento - date(now()))) * round((valor/30),2),2) || '
> valor diario R$ ' ||
> round((valor/30),2) || ' na data ' || to_char(current_date,'DD/MM/YYYY') as
> mensagem, round((valor/30),2) as valor_diario
> from contratos_pessoa_contrato cpc
> inner join contratos_servicos_contrato csc on (csc.cod_pessoa_contrato =
> cpc.cod_pessoa_contrato)
> inner join contratos_servicos_ativacao csa on (csa.cod_servico_contrato =
> csc.cod_servico_contrato)
> inner join contratos_parcelas cp on (cp.cod_servico_contrato =
> csa.cod_servico_contrato)
> inner join produtos_produto pp on (pp.cod_produto = csc.cod_produto)
> inner join contratos_parcelas_lancamento cpl on (cpl.cod_parcela =
> cp.cod_parcela)
> inner join contratos_contrato cc on (cc.cod_contrato = cpc.cod_contrato)
> where cpc.cod_pessoa_contrato = '" . $cod_pessoa_contrato . "' and
> data_vencimento > date(now())
> and csc.cod_produto = '" . $plano_origem . "' and
> csc.cod_servico_contrato = '" . $cod_servico_contrato . "'
> and cod_instalacao_equipamento is null
> order by data_vencimento
> ) as tabs";
> $query = $this->db->query($sql);
> return $query->result();
> }
>  
> Repara ai que todo o select eh uma instrução.
>  
> Daniel
>  
> 2012/5/11 Marcelo Diniz <[email protected] 
> (mailto:[email protected])>
>  
> > A SP esta no MySQL.
> >  
> > Já tentei execultar de td quanto é forma e nada!
> >  
> > Resumindo, to FFFFFffffffffffffuuuuuuuuuuuuuuuuuuuu
> >  
> > o mais proximo q consegui foi seguindo isso
> > http://codeigniter.com/forums/viewthread/71141/#663206
> >  
> > Mas ainda assim da erro nessa linha if( get_class($result) == 'mysqli_stmt'
> > )
> > e fora isso, ainda eu tenho um hook rodando para gravar os logs e da erro
> > nessa parte!
> >  
> >  
> >  
> > 2012/5/11 Daniel Passos Martins <[email protected] 
> > (mailto:[email protected])>
> >  
> > > a store tah feita em que?
> > > MySql ou Postgres?
> > > Caso seja em MySql - call gerar_contrato_parcelas(parametros);
> > > Caso seja feito no PostGres - select from procedurte(parametros)
> > >  
> > > Daniel
> > > Natal/RN
> > >  
> > > Em 11 de maio de 2012 12:08, Marcelo Diniz <[email protected] 
> > > (mailto:[email protected])
> > > > escreveu:
> > >  
> > >  
> > > > Pessoal,
> > > >  
> > > > alguém já conseguiu rodar Sorte Procedure no CI;
> > > >  
> > > > estou tendo serios problemas, da uns erros muito estranhos mesmo !<
> > > >  
> > > > estou tentando achar alguma coisa, mas até agora nada q me ajuda, estou
> > > > olhando essa http://codeigniter.com/forums/viewthread/71141 e tbm
> > > >  
> > >  
> > >  
> >  
> > nada!
> > > >  
> > > > Se alguem souber de algo fala ae....
> > > >  
> > > > Valew
> > > >  
> > > > --
> > > > Marcelo Felipe Santiago Diniz
> > > > [image: t_mini-a.png] @marcelo_leo27 <
> > > >  
> > >  
> > > http://www.twitter.com/marcelo_leo27
> > > > >  
> > > >  
> > > > _______________________________________________
> > > > [email protected] (mailto:[email protected])
> > > > http://www.codeigniter.com.br
> > > >  
> > >  
> > >  
> >  
> > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >  
> > > > ---------------------------
> > > > Oportunidade de negócio
> > > > http://www.franquiasargohost.net
> > > > ---------------------------
> > > >  
> > >  
> > > _______________________________________________
> > > [email protected] (mailto:[email protected])
> > > http://www.codeigniter.com.br
> > > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >  
> > > ---------------------------
> > > Oportunidade de negócio
> > > http://www.franquiasargohost.net
> > > ---------------------------
> > >  
> >  
> >  
> >  
> >  
> > --
> > Marcelo Felipe Santiago Diniz
> > [image: t_mini-a.png] @marcelo_leo27 <http://www.twitter.com/marcelo_leo27
> > >  
> >  
> > _______________________________________________
> > [email protected] (mailto:[email protected])
> > http://www.codeigniter.com.br
> > http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >  
> > ---------------------------
> > Oportunidade de negócio
> > http://www.franquiasargohost.net
> > ---------------------------
> >  
>  
> _______________________________________________
> [email protected] (mailto:[email protected])
> http://www.codeigniter.com.br
> http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>  
> ---------------------------
> Oportunidade de negócio
> http://www.franquiasargohost.net
> ---------------------------
>  
>  


_______________________________________________
[email protected]
http://www.codeigniter.com.br
http://mail.codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

---------------------------
Oportunidade de negócio
http://www.franquiasargohost.net
---------------------------

Responder a