Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Calculo de costo de llamada MYSQL

Estas en el tema de Calculo de costo de llamada MYSQL en el foro de Mysql en Foros del Web. Soy nuevo en mysql necesito realizar un store preocedure q me calcule el costo de las llamadas telefonicas segun una tarifa. Las llamadas se almacenan ...
  #1 (permalink)  
Antiguo 15/04/2009, 20:45
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Calculo de costo de llamada MYSQL

Soy nuevo en mysql necesito realizar un store preocedure q me calcule el costo de las llamadas telefonicas segun una tarifa. Las llamadas se almacenan en segundos en la base de datos, pero se debe cobrar por minuto. Por ejemplo si tengo 30 segundos debo cobrar 1 minuto a 0.16 por minuto, si tengo 110 segundos debo cobrar 2 minutos y asi dependiendo de la cantidad de segundos

Gracias por la ayuda de antemano
  #2 (permalink)  
Antiguo 16/04/2009, 05:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Calculo de costo de llamada MYSQL

chicorio,

no sé si será necesario un store procedure para eso; danos más datos, es decir, dices que tienes los segundos almacenados, de qué manera, en un campo de tipo time o de tipo int. Dinos también cuál es el rango para el cobro, es decir el precio o precios aplicados en cada situación con todos los detalles. Si el precio es siempre 0.16 y se aplicará por minuto, es decir 00:00:30 se pagaría como un minuto completo
  #3 (permalink)  
Antiguo 17/04/2009, 14:54
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Respuesta: Calculo de costo de llamada MYSQL

la duracion esta alamcenada en un campo smallint(6) por ejemplo una llamada de 1.5 minutos esta almacenada como 90. La tarifa puede ser 0.16 para un rango de numeros telefonicos q empiezan con 1 , 0.50 si empiezan con 00 o 01 , 0.05 si empieza con 22 y si empiezan con 8 es de 0.10
la manera de cobrar es como dices en tu respuesta 00:00:30 se pagaría como un minuto completo 00:01:30 se pagaria como dos minutos etc

Esto con el fin de generar un reporte que lo consulta la gente de contabilidad para hacer los cobros
  #4 (permalink)  
Antiguo 17/04/2009, 15:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Calculo de costo de llamada MYSQL

ponnos 5 o seis ejemplos de número de teléfono, tarifa aplicable, tiempo de llamada y total a pagar, para que lo veamos claramente. Piensa que esta consulta, SELECT CEIL( camposduracion /60 ) tiempo
FROM `tabla` te dará el número de minutos que habrá que multiplicar por la tarifa según el comienzo del número telefónico (con CASE WHEN según los primeros dígitos del número telefónico) podrás hacerlo y sacar el total sin problemas. Prueba esto:
Código sql:
Ver original
  1. SELECT telefono, camposegundos, CEIL( camposegundos /60 ) cuentaminutos , (
  2. CEIL( camposegundos /60 ) *
  3. CASE WHEN LEFT( telefono, 1 ) = '1'
  4. THEN 0.16
  5. WHEN LEFT( telefono, 1 ) = '0'
  6. THEN 0.50
  7. WHEN LEFT( telefono, 2 ) = '22'
  8. THEN 0.05
  9. WHEN LEFT( telefono, 1 ) = '8'
  10. THEN 0.10
  11. END
  12. )totalpagar
  13. FROM `tabla`
No he puesto redondeo de decimales ni tampoco he contemplado la posibilidad de otro inicio de número de teléfono. Para mostrar el precio de cada minuto para el registro, puedes hacerlo así:
Código sql:
Ver original
  1. SELECT telefono, camposegundos,
  2. (CASE WHEN LEFT( telefono, 1 ) = '1'
  3. THEN 0.16
  4. WHEN LEFT( telefono, 1 ) = '0'
  5. THEN 0.50
  6. WHEN LEFT( telefono, 2 ) = '22'
  7. THEN 0.05
  8. WHEN LEFT( telefono, 1 ) = '8'
  9. THEN 0.10
  10. END) AS preciominuto, (
  11. CEIL( camposegundos /60 ) *
  12. CASE WHEN LEFT( telefono, 1 ) = '1'
  13. THEN 0.16
  14. WHEN LEFT( telefono, 1 ) = '0'
  15. THEN 0.50
  16. WHEN LEFT( telefono, 2 ) = '22'
  17. THEN 0.05
  18. WHEN LEFT( telefono, 1 ) = '8'
  19. THEN 0.10
  20. END
  21. )totalpagar
  22. FROM `tabla`

Hay otra opción, que es crear una tabla donde tengas dos campos, el de los precios y el inicio de los números para cada precio, y luego hagas un inner join de ese número de esa nueva tabla con el inicio de telefono de la tabla principal. Te evitarias todo ese case when...
Saludos

Última edición por jurena; 18/04/2009 a las 02:39
  #5 (permalink)  
Antiguo 18/04/2009, 11:59
 
Fecha de Ingreso: abril-2009
Mensajes: 67
Antigüedad: 15 años
Puntos: 0
Respuesta: Calculo de costo de llamada MYSQL

Demasiadas gracias, ya pude realizar el reporte super excelente tu ayuda gracias de verdad jurena
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.