Ir para conteúdo
  • 0
Jack Oliveira

Cobrança por hora

Pergunta

Ola pessoal boa noite...

 

É o seguinte estou desenvolvendo um projeto que tem uns planos e cada plano suas funções..

 

Neste planos eles sera cobrado por horas de uso do sistema...

 

Porém quando eles adicionar um crédito que será um valor mínimo 25,00 reais 

 

Este valor definir quantos dias sera

 

Por exemplo 

Plano1

21,90 valido por 30 dias 

R$: 0,0304 por hora

 

Plano2

40,00 valido por 30 dias 

R$: 0, 556 por hora 

 

E assim segue os demais planos 

 

Caso o cliente queira  mudar de plano será    possível alterar o plano  a qualquer momento de uma forma muito prática.  Quando eles  escolher um novo plano o sistema passará a ser cobrada automaticamente de hora em hora com o novo valor.

 

E quando estes créditos se acabarem ele dar um prazo no máximo de 7 dias úteis para q a empresa do cliente fica visível no sistema..

 

caso ele coloca novo crédito o sistema voltará mostrar a empresa..

 

 

Espero que possam ter conseguido entender o que eu digo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

5 respostas a esta questão

Recommended Posts

  • 0

E qual a dúvida?

Bom, tudo questão de matemática, concentrando-se apenas nos cálculos do tempo de uso:

  • Valor atual menos valor da hora usada = resultado a atualizar em um banco de dados.
  • Valor atual é menor que tempo atual = fim do acesso a atualizar em um banco de dados.
  • O prazo de validade é simples data de adesão ao plano + 30 dias.
  • Acesso fora do prazo de validade conta como vencido.

 

21,90 / 0,0304 = se minha matemática de cabeça está correta é cerca de 720 horas o que equivale a 24 horas dia durante 30 dias.

Então não sei se acertei digamos 0,0304 / 60 = 0,00506 por minuto & 0,00506 / 60 = 0,000843 por segundo.

E é isso é melhor usar o sistema para calcular precisamente lembrando que aqui fiz de cabeça, então para cada segundo ou minuto ou hora que o usuário usar você desconta esse valor no total atual que ele possui seja 21,90 ou 10,00 ou 5,99 etc...

 

Você pode está usando o php para realizar os cálculos e atualizar os registros, porém em hora de uso você deve detectar esse tempo de atividade, se fosse eu optaria pelo https://socket.io/ para está constantemente realizando o cálculo no servidor e atualizando os descontos no crédito. Você pode até adicionar um intervalo em que o socket irá se comunicar caso esse sistema possa conter milhares de usuários simultaneamente, assim poupa estresse do servidor porém os registros podem ficar imprecisos caso o usuário saia antes da comunicação ser executada.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
2 horas atrás, Omar~ disse:

E qual a dúvida?

Bom, tudo questão de matemática, concentrando-se apenas nos cálculos do tempo de uso:

  • Valor atual menos valor da hora usada = resultado a atualizar em um banco de dados.
  • Valor atual é menor que tempo atual = fim do acesso a atualizar em um banco de dados.
  • O prazo de validade é simples data de adesão ao plano + 30 dias.
  • Acesso fora do prazo de validade conta como vencido.

 

21,90 / 0,0304 = se minha matemática de cabeça está correta é cerca de 720 horas o que equivale a 24 horas dia durante 30 dias.

Então não sei se acertei digamos 0,0304 / 60 = 0,00506 por minuto & 0,00506 / 60 = 0,000843 por segundo.

E é isso é melhor usar o sistema para calcular precisamente lembrando que aqui fiz de cabeça, então para cada segundo ou minuto ou hora que o usuário usar você desconta esse valor no total atual que ele possui seja 21,90 ou 10,00 ou 5,99 etc...

 

Você pode está usando o php para realizar os cálculos e atualizar os registros, porém em hora de uso você deve detectar esse tempo de atividade, se fosse eu optaria pelo https://socket.io/ para está constantemente realizando o cálculo no servidor e atualizando os descontos no crédito. Você pode até adicionar um intervalo em que o socket irá se comunicar caso esse sistema possa conter milhares de usuários simultaneamente, assim poupa estresse do servidor porém os registros podem ficar imprecisos caso o usuário saia antes da comunicação ser executada.

Ola Omar 

 

Como posso fazer ela da forma correta 

$Credito='21,90';// valor do crédito 
$PrecoPorHora = 0,0304;// valor por hora
$dia='30'; //quantidade de dias
$ValorDisponível = 550;

// 5.5
$HoraDisponivel = ($ValorDisponível/$PrecoPorHora);

// 05:30:00 ~ Deve ter um jeito melhor
$HoraFormatada = sprintf("%02d:%02d:%02d", 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0

A forma de calculo já disse como proceder, agora se for questão de recalcular a data em base do tempo de uso, o php já possui isso a mão pronto para uso:

$periodoA = date('Y-m-d H:i:s', strtotime('-1 minute'));
var_dump( $periodoA ); // resultado = sua data atual menos 1 minuto

echo "<hr />";

$periodoB = new DateTime('2022-12-27 17:55:00');
$periodoB->modify('-1 minute');
var_dump( $periodoB->format('Y-m-d H:i:s') ); // resultado = 2022-12-27 17:54:00

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
Em 27/12/2022 at 13:27, Omar~ disse:

A forma de calculo já disse como proceder, agora se for questão de recalcular a data em base do tempo de uso, o php já possui isso a mão pronto para uso:


$periodoA = date('Y-m-d H:i:s', strtotime('-1 minute'));
var_dump( $periodoA ); // resultado = sua data atual menos 1 minuto

echo "<hr />";

$periodoB = new DateTime('2022-12-27 17:55:00');
$periodoB->modify('-1 minute');
var_dump( $periodoB->format('Y-m-d H:i:s') ); // resultado = 2022-12-27 17:54:00

 

Ola orma

 

Eu fiz aqui..

 

Preciso pegar quantidade de dias conforme for este plano....

 

Em dias úteis do crédito 

 

So q não esta batendo o resultado esperado 

 

Veja

Aquii

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • 0
<select id="calculo" onchange="calcular()">
    <option value="" selected="">Selecione o tempo de uso</option>
    <option value="1">1 minuto</option>
    <option value="10">10 minutos</option>
    <option value="60">60 minutos</option>
    <option value="213">213 minutos</option>
</select>

<script>
    var seletor = document.getElementById('calculo'); // apenas para fins de exemplo
    seletor.selectedIndex = 0; // apenas para fins de exemplo

    var saldoAtual = parseFloat(21.90);
    var valorHora = parseFloat(0.0304);

    // 60 minutos é 1 hora, então sabemos quanto vale um minuto
    var valorMinuto = parseFloat(valorHora / 60);

    console.log(
        'Saldo atual: (' + saldoAtual + ')\n',
        'Valor por hora: (' + valorHora + ')\n',
        'Valor por minuto: (' + valorMinuto + ')\n'
    );

    function calcular() {
        var minutosUsados = parseInt(seletor.value);
        var valorUsado = parseFloat(minutosUsados * valorMinuto);

        // Retirando do saldo atual
        saldoAtual = parseFloat(saldoAtual - valorUsado);

        console.log(
            'Minutos usados: (' + minutosUsados + ')\n',
            'Valor usado: (' + valorUsado + ')\n',
            'Saldo atual: (' + saldoAtual + ')\n'
        );
        console.log(
            'Ainda te restam: '
            + saldoAtual.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})
            + ' de saldo disponível'
        );
    }
</script>


<?php
function parseFloat($parametro) {
    return (float) $parametro;
}

$saldoAtual = parseFloat(21.90);
$valorHora = parseFloat(0.0304);
$valorMinuto = parseFloat($valorHora / 60);

$minutosUsados = 60; // usou 60 minutos
$valorUsado = parseFloat($minutosUsados * $valorMinuto);

$saldoAtual = parseFloat($saldoAtual - $valorUsado);

var_dump($saldoAtual);

 

Citar

Vale um ressalto sobre a técnica usada para saber o quanto o usuário usou, independente do uso do node js através de um socket que seria o método menos invasivo para o servidor.

O uso do javascript será o gatilho de tudo, mesmo que cálculos sejam realizados no servidor a máquina/hardware do usuário que irá dizer o quanto ele usou portanto pode e será usado para burlar o sistema.

 

Na minha opinião para um serviço web a melhor alternativa é uma data definida para término de uso de algum serviço e não cobrar o tempo de uso que é ineficaz.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por eduuamorim
      Boa noite! Sou novo aqui no fórum e tenho umas dúvidas de como implementar um simulador de linha de crédito passado pelo cliente.

      Vou deixar as informações que ele precisa ter no simulador, se alguém puder me ajudar ou me dar uma luza vou ser grato de coração.
       
      Obs: Não entendo nada sobre esse tipo de simulador, peguei o projeto na raça e quero terminar ele logo, conto com  a ajuda de todos, grato desde já!
       
       
      Informações do cliente nos prints abaixo:
       




×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.