Cara, eu fiz algumas queries pro Mysql para um cliente, que bilheta as chamadas no fator 30/6, coisa bem básica. Pois não manjo muito (rs.rs). Só que não tem nada via web, no fim do mês rodo as queries e exporto pro Excel. É mais um quebra galho mesmo.
São 4 queries: Fixo-Local, Cel-Cel, Fixo-DDD, Cel-DDD. As DDI, como tem a questão dos códigos e valores para cada pais eu teria que ter uma outra tabela para fazer a consulta, e checar pelo número, ai complicou um pouco. Mas esse cliente quase não tem ligações DDI então nem faz diferença. Os valores do minutos você pode alterar no SELECT CASE WHEN billsec... onde o primeiro valor é metade do minuto, e outros dois são décimos de valor do minutos. Conforme na chamada local. O minuto custa R$ 0,10, então no primeiro ROUND coloco 0.05 e nos outros dois coloco 0.010 que é igual à 0,10/10=0,010). Lembrando que não usa virgula no valares e sim ponto. Espero que seja útil. Segue abaixo. -- LISTA TODAS AS LIGAÇOES LOCAIS, AGRUPANDO POR DATA, e ORIGEM SELECT data, origem, destino, SEC_TO_TIME(duracao) as 'duracao-sistema', CASE WHEN duracao <= 30 THEN '00:00:30' WHEN duracao > 30 THEN SEC_TO_TIME(duracao) END AS 'duracao-cliente', valor FROM (SELECT calldate AS data, src AS origem, dst AS destino, SEC_TO_TIME(billsec) AS duracao, (SELECT CASE WHEN billsec >= 1 AND billsec <= 30 THEN ROUND(0.05,2) WHEN billsec > 30 AND (billsec%6 = 0) THEN ROUND((billsec/6)*0.010,2) ELSE ROUND(FLOOR((billsec/6)+1)*0.010,2) END) AS valor FROM cdr WHERE DATE_FORMAT(calldate, '%Y-%m-%d') BETWEEN '2010-07-01' AND '2010-07-31' AND disposition = 'ANSWERED' AND channel LIKE 'S%' AND dstchannel LIKE 'D%' AND dcontext = 'from-internal' AND billsec >= 3 AND (dst LIKE '2_______' OR dst LIKE '3_______' OR dst LIKE '4_______' OR dst LIKE '5_______') ORDER BY origem, data) as g; -- LISTA TODAS AS LIGAÇOES CEL-LOCAL, AGRUPANDO POR DATA, e ORIGEM SELECT data, origem, destino, SEC_TO_TIME(duracao) as 'duracao-sistema', CASE WHEN duracao <= 30 THEN '00:00:30' WHEN duracao > 30 THEN SEC_TO_TIME(duracao) END AS 'duracao-cliente', valor FROM (SELECT calldate AS data, src AS origem, dst AS destino, SEC_TO_TIME(billsec) AS duracao, (SELECT CASE WHEN billsec >= 1 AND billsec <= 30 THEN ROUND(0.49,2) WHEN billsec > 30 AND (billsec%6 = 0) THEN ROUND((billsec/6)*0.098,2) ELSE ROUND(FLOOR((billsec/6)+1)*0.098,2) END) AS valor FROM cdr WHERE DATE_FORMAT(calldate, '%Y-%m-%d') BETWEEN '2010-07-01' AND '2010-07-31' AND disposition = 'ANSWERED' AND channel LIKE 'S%' AND dstchannel LIKE 'D%' AND dcontext = 'from-internal' AND billsec >= 3 AND (dst LIKE '6_______' OR dst LIKE '7_______' OR dst LIKE '8_______' OR dst LIKE '9_______') ORDER BY origem, data) as g; -- LISTA TODAS AS LIGAÇOES DDD-LOCAL, AGRUPANDO POR DATA, e ORIGEM SELECT data, origem, destino, SEC_TO_TIME(duracao) as 'duracao-sistema', CASE WHEN duracao <= 30 THEN '00:00:30' WHEN duracao > 30 THEN SEC_TO_TIME(duracao) END AS 'duracao-cliente', valor FROM (SELECT calldate AS data, src AS origem, dst AS destino, SEC_TO_TIME(billsec) AS duracao, (SELECT CASE WHEN billsec >= 1 AND billsec <= 30 THEN ROUND(0.22,2) WHEN billsec > 30 AND (billsec%6 = 0) THEN ROUND((billsec/6)*0.044,2) ELSE ROUND(FLOOR((billsec/6)+1)*0.044,2) END) AS valor FROM cdr WHERE DATE_FORMAT(calldate, '%Y-%m-%d') BETWEEN '2010-07-01' AND '2010-07-31' AND disposition = 'ANSWERED' AND channel LIKE 'S%' AND dstchannel LIKE 'D%' AND dcontext = 'from-internal' AND billsec >= 3 AND (dst LIKE '0____2_______' OR dst LIKE '0____3_______' OR dst LIKE '0____4_______' OR dst LIKE '0____5_______') ORDER BY origem, data) as g; -- LISTA TODAS AS LIGAÇOES DDD-CEL, AGRUPANDO POR DATA, e ORIGEM SELECT data, origem, destino, SEC_TO_TIME(duracao) as 'duracao-sistema', CASE WHEN duracao <= 30 THEN '00:00:30' WHEN duracao > 30 THEN SEC_TO_TIME(duracao) END AS 'duracao-cliente', valor FROM (SELECT calldate AS data, src AS origem, dst AS destino, SEC_TO_TIME(billsec) AS duracao, (SELECT CASE WHEN billsec >= 1 AND billsec <= 30 THEN ROUND(0.74,2) WHEN billsec > 30 AND (billsec%6 = 0) THEN ROUND((billsec/6)*0.148,2) ELSE ROUND(FLOOR((billsec/6)+1)*0.148,2) END) AS valor FROM cdr WHERE DATE_FORMAT(calldate, '%Y-%m-%d') BETWEEN '2010-07-01' AND '2010-07-31' AND disposition = 'ANSWERED' AND channel LIKE 'S%' AND dstchannel LIKE 'D%' AND dcontext = 'from-internal' AND billsec >= 3 AND (dst LIKE '0____6_______' OR dst LIKE '0____7_______' OR dst LIKE '0____8_______' OR dst LIKE '0____9_______') ORDER BY origem, data) as g; []s Beraldo De: asteriskbrasil-boun...@listas.asteriskbrasil.org [mailto:asteriskbrasil-boun...@listas.asteriskbrasil.org] Em nome de Fabiano Carlos Heringer Enviada em: quarta-feira, 11 de agosto de 2010 19:52 Para: asteriskbrasil@listas.asteriskbrasil.org Assunto: [AsteriskBrasil] Tarifador corporativo Pessoal, estou precisando implantar na minha empresa um bilhetador para monitorar o que cada uma está gastando (os ramais aqui sao liberados para ligações). Precisaria de algo simples, somente para controle interno das ligacoes (em reais). O A2Billing é excelente, mas complexo demais, existe algum outro front-end que possa me auxiliar nisso? Obrigado
_______________________________________________ KHOMP: qualidade em placas de E1, GSM, FXS e FXO para Asterisk. - Hardware com alta disponibilidade de recursos e qualidade KHOMP - Suporte técnico local qualificado e gratuito Conheça a linha completa de produtos KHOMP em www.khomp.com.br _______________________________________________ Temos tudo para seu projeto VoIP com Asterisk! Descontos especiais para assinantes da AsteriskBrasil.org. Registre-se e receba um cupom exclusivo de desconto! Acesse agora www.voipmania.com.br ______________________________________________ Lista de discussões AsteriskBrasil.org AsteriskBrasil@listas.asteriskbrasil.org http://listas.asteriskbrasil.org/mailman/listinfo/asteriskbrasil