Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) calcular atraso automaticamente e mostrar em uma pagina


Rafael Marinho

Pergunta

bom pessoal e o seguinte estou fazendo um sistema financeiro pra minha empresa eu consigui fazer com que calculasse se o cliente estivesse mais de um mês em atraso na hora de pagar porque ai seleciona por codigo de cada um ai fica facil foi so vê da data de cadastro dele com a data atual verificar a diferença e vê quantos meses ele é cliente e depois verificar quantos meses ele já pagou ai a diferença e a quantidade de mensalidades em atraso facinho...

mais o problema e o seguinte eu queria visualizar em uma pagina todos os clientes em atraso automaticamente por exemplo fulano de tal foi cadastrado hj dia 2009-01-23 e tipo por exemplo quando ele quiser vê quem esta em atraso a pagina verificar a data atual por exempo date (y-m-d) e ai verificar e listar os clientes que já completaram um mês e ainda n pagaram e ai fazer um update em algum campo tipo status='em atraso' e ai quando o cara for pagar se quando ele pagar n ficar nenhuma paga ele muda o status='sem atraso' essa parte do pagamento pra mudar o status eu consigui ok... so preciso saber como fazer pra vê automaticamente quando eu quiser em uma pagina todos os clientes inadimplentes beleza....

se alguém puder me ajudar ficarei muito grato...

Editado por ESerra
Usuário postou a mensagem toda em letra MAIÚSCULA.
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Banco de dados

CREATE TABLE `clientes` (
`clientes_id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`clientes_nome` VARCHAR( 100 ) NOT NULL ,
`clientes_dt_venc` DATE NOT NULL ,
`clientes_dt_pag` INT NOT NULL
)
PHP
$q = mysql_query("SELECT * FROM clientes WHERE 'clientes_dt_venc' != 'clientes_dt_pag'");

while ($l = mysql_fetch_assoc($q)) {
    echo $l['clientes_nome'];

}

espero que te dêe uma "luz"

Link para o comentário
Compartilhar em outros sites

  • 0

não cara acho que eu não expliquei direito o negocio e o seguinte e no proximo mês como e que vou saber se o cliente pagou ou não porque assim sempre a data de vencimento sempre vai ser diferente da data de pagamento...

o que eu queria era pegar todos os clientes e alterar o status dele para em atraso caso naquela data atual o cliente ainda tivesse pago a mensalidade

Banco de dados
CREATE TABLE `clientes` (
`clientes_id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`clientes_nome` VARCHAR( 100 ) NOT NULL ,
`clientes_dt_venc` DATE NOT NULL ,
`clientes_dt_pag` INT NOT NULL
)
PHP
$q = mysql_query("SELECT * FROM clientes WHERE 'clientes_dt_venc' != 'clientes_dt_pag'");

while ($l = mysql_fetch_assoc($q)) {
    echo $l['clientes_nome'];

}

espero que te dêe uma "luz"

Link para o comentário
Compartilhar em outros sites

  • 0

O problema está na modelagem do teu sistema, qualquer empresa vai lançar faturas, se existirem faturas em aberto com data de vencimento já passada, então o cara está pendente.

Tenho um negócio e desenvolvi um sistema (usando a lógica básica), todo mês lanço uma fatura para os meus clientes, a fatura tem data de vencimento e tem um status (0 e 1, 0 em aberto, 1 paga), basta fazer uma query, buscar as faturas com status = 0 e data de vencimento anteriora hoje, agrupar por usuário e pronto, já sei quem está pendente, essa a lógica mais simples a se usar.

Link para o comentário
Compartilhar em outros sites

  • 0

nesse caso não tera lançamento de faturas esse sistema e apenas para controle interno ele quer somente que tipo o cliente entrou hoje dia 24-01-2009 e quando completar um mês q ele entrou já deixar la ele com a pendencia e assim por diante ai quando ele for pagando vai diminuindo os meses em atraso se a quantidade de meses for igual a quantidade de mensalidades pagas ele esta sem atraso mais se a quantidade de meses for maior que a quantidade de parcelas pagas ele esta com mensalidade em atraso isso eu já consigui fazer mais para cada cliente no caso eu faço um select no cliente vejo a data de cadastro calculo quantos meses ele esta cadastrado comparando com a data atual e ai tenho os meses de permanencia do cliente e pra saber quantas parcelas ele pagou mais facil ainda quando vai dar baixa e so fazer um update no campo parcelas_pagas somando mais um...

o que eu quero e que o sistema faça um select em todos os clientes verifique quantos meses ele tem e quantas parcelas pagas tem e dai se algum estiver com atraso ele fazer um update no campo status='em atraso'... so o que falta e como fazer o select em todos os clientes...

vou deixar aqui a baixo o codigo que fiz pra descobrir se o cliente esta com atraso mais ai esse caso apenas serve para consultas individuais eu quero para todos os clientes em geral ok...

<? // antes disso tem uma pagina de busca para selecionar o cliente desejado ai com isso pego o id do cliente e faço o select 
include ("config.php");
$pagina="cad_clientes2.php?id=0";
$pgBusca="cliente1.php?id=";
$tabela="clientes";
?>
                  <?
$ac = $_REQUEST[acao];
if (!empty($ac))
{
$sql = mysql_query($ac);
$dados=mysql_fetch_array($sql);
}
$icodigo=$_REQUEST[id];
if (!empty($icodigo))
{
  if (is_numeric($icodigo))
     {
      $sql = mysql_query("SELECT * FROM clientes where codigo=$icodigo limit 1");
      $dados=mysql_fetch_array($sql);
     }
}
?>

<? 
// esse parte serve para verificar a data do cadastro do clientes
                   $ano=$datacadastro = explode("-",$dados[datacadastro]);  $datacadastro[0];
        $mes=$datacadastro = explode("-",$dados[datacadastro]);  $datacadastro[1];
            $dia=$datacadastro = explode("-",$dados[datacadastro]);  $datacadastro[2];

?>


<? 
// esse outra parte serve para saber quantos meses o cliente tem comparando a data de cadastro com a data atual
$ano1 = $datacadastro[0];
$mes1 = $datacadastro[1];
$dia1 = $datacadastro[2];

//defino data 2
$ano2 = date("Y");
$mes2 = date("m");
$dia2 = date("d");

//calculo timestam das duas datas
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);

//diminuo a uma data a outra
$segundos_diferenca = $timestamp1 - $timestamp2;
//echo $segundos_diferenca;

//converto segundos em dias
$dias_diferenca = $segundos_diferenca / (60 * 60 * 24);

//obtenho o valor absoluto dos dias (tiro o possível sinal negativo)
$dias_diferenca = abs($dias_diferenca);

//tiro os decimais aos dias de diferenca
$dias_diferenca = floor($dias_diferenca);

?>


<? 
// essa parte serve para verificar se o cliente já pagou alguma mensalidade se já armazena na variavel $mensa que vai servir mais na frente para calcular se   
//tem atraso
    $mensa=$dados['mensalidades_pg']; 
                 if ($mensa < '1') {
    echo 'NENHUMA MENSALIDADE PAGA';
                }
                if ($mensa >= '1') {
                    echo $mensa;
                        }
                                
?>


 <? 
//esse daqui serve para saber se o cliente esta com atraso e se estiver quantos meses tem em atraso eu quero que ele faça isso mais para todos os clientes
// automaticamente toda vez que eu chamar uma pagina para calcular isso
    $mensalidade_pagas=$dados['mensalidades_pg'];
    $atraso=$dias_permanencia-$mensalidade_pagas;
        if ($atraso >= 1) {
            echo $atraso;
                }
                    else {
            echo "NENHUMA MENSALIDADE EM ATRASO!";

    ?>

O problema está na modelagem do teu sistema, qualquer empresa vai lançar faturas, se existirem faturas em aberto com data de vencimento já passada, então o cara está pendente.

Tenho um negócio e desenvolvi um sistema (usando a lógica básica), todo mês lanço uma fatura para os meus clientes, a fatura tem data de vencimento e tem um status (0 e 1, 0 em aberto, 1 paga), basta fazer uma query, buscar as faturas com status = 0 e data de vencimento anteriora hoje, agrupar por usuário e pronto, já sei quem está pendente, essa a lógica mais simples a se usar.

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael Marinho, NUNCA, mas NUNCA MESMO escreva uma mensagem em LETRAS MAIÚSCULAS, dá a idéia de que se está gritando.

Quanto ao seu sistema, bom pra mim a lógica dele não tem lógica, mas como cada um faz do jeito que achar melhor, mas sinceramente, não vejo porque funciona com a busca em um cliente e não funciona com uma busca geral.

Link para o comentário
Compartilhar em outros sites

  • 0

legal... tudo bem mais seguindo a sua logica de fazer uma fatura para o cliente e o seguinte você faz a fatura pra o cliente a data de vencimento dele é 26 beleza fez o boleto o cliente não pagou esse mes e ai no proximo você faz de novo e o cliente não pagou novamente e ai o sistema so mostra no select os clientes com vencimento ate a data de hoje no caso 25 mais veja bem o cliente tem duas faturas em aberto e no entanto seu nome não vai aparecer na lista dos devedores pois o mesmo so tem data de vencimento dia 27... e ai como você faz pra tratar esse erro...

O problema está na modelagem do teu sistema, qualquer empresa vai lançar faturas, se existirem faturas em aberto com data de vencimento já passada, então o cara está pendente.

Tenho um negócio e desenvolvi um sistema (usando a lógica básica), todo mês lanço uma fatura para os meus clientes, a fatura tem data de vencimento e tem um status (0 e 1, 0 em aberto, 1 paga), basta fazer uma query, buscar as faturas com status = 0 e data de vencimento anteriora hoje, agrupar por usuário e pronto, já sei quem está pendente, essa a lógica mais simples a se usar.

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael Marinho, NOVAMENTE peço para que você escreva sem usar tudo em maiúsculas, peço sinceramente que me leve a sério, caso contrário estarei fechando o tópico e notificando os monitores do fórum para que tomem as providências cabíveis. Editei as suas mensagens para se enquandrar no padrão usado na web.

Quanto a sua dúvida, bom, assumindo que o sistema guarde todas as faturas bastaria fazer um select onde eu seleciono todas que estão em aberto com data de vencimento já ultrapassada, agrupando isso por usuário, se retornar algo o usuário está em atraso, caso contrário, ou seja, se não retornar nada ele até pode ter uma (ou mais) faturas em aberto, contudo ainda dentro do prazo para pagamento.

Link para o comentário
Compartilhar em outros sites

  • 0

ok pensei que você esta falando do uso de maiusculas dentro do script... bom eu fiz o seguinte esta funcionando sem problemas irei postar aqui para avaliação e caso algum outro usuario esteja com a mesma duvida. desde já quero agradecer ao ESerra pelas dicas.

bom eu fiz um lançamento de faturas onde cada cliente tem um data de vencimento o sistema mostra na tela todos os lançamentos em aberto se o cliente tiver mais de uma ou já estiver vencida o sistema mostra ao lado fatura em atraso caso apenas tenha uma e ainda não esteja vencida ele mostra fatura a vencer...

se alguém se interessar pelo codigo e so postar aqui que coloco o mesmo e explico como funciona...

valeu galerinha e ate a proxima

Link para o comentário
Compartilhar em outros sites

  • 0
ok pensei que você esta falando do uso de maiusculas dentro do script... bom eu fiz o seguinte esta funcionando sem problemas irei postar aqui para avaliação e caso algum outro usuario esteja com a mesma duvida. desde já quero agradecer ao ESerra pelas dicas.

bom eu fiz um lançamento de faturas onde cada cliente tem um data de vencimento o sistema mostra na tela todos os lançamentos em aberto se o cliente tiver mais de uma ou já estiver vencida o sistema mostra ao lado fatura em atraso caso apenas tenha uma e ainda não esteja vencida ele mostra fatura a vencer...

se alguém se interessar pelo codigo e so postar aqui que coloco o mesmo e explico como funciona...

valeu galerinha e ate a proxima

Paz, amado.

Estou batendo a cabeça para achar um código que faça isso, que verifica a data de cadastro e calcua data vencimento, e que quando está em atraso uma mensagem diz: "atrasado". Poste aí o código, e me auxilie na criação dentro do BD, só poste os códigos desda da criação dentro do banco de dados até o script na página de associado.

Fique na paz, aguardo respostas.

Link para o comentário
Compartilhar em outros sites

  • 0
ok pensei que você esta falando do uso de maiusculas dentro do script... bom eu fiz o seguinte esta funcionando sem problemas irei postar aqui para avaliação e caso algum outro usuario esteja com a mesma duvida. desde já quero agradecer ao ESerra pelas dicas.

bom eu fiz um lançamento de faturas onde cada cliente tem um data de vencimento o sistema mostra na tela todos os lançamentos em aberto se o cliente tiver mais de uma ou já estiver vencida o sistema mostra ao lado fatura em atraso caso apenas tenha uma e ainda não esteja vencida ele mostra fatura a vencer...

se alguém se interessar pelo codigo e so postar aqui que coloco o mesmo e explico como funciona...

valeu galerinha e ate a proxima

Amigo tem como você postar pra mim, cara estou tentando fazer isso um tempão.

Valeu

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...