Ajuda com lógica - PHP - Portugal-a-Programar
September 24, 2015 in PHP
Preciso com uma ajuda aqui com lógica.
Em meu projeto, tenho as tabelas de Administradores, Clientes e PlanosClientes.
Os planos dos Clientes são planos de acesso à internet de um provedor de internet via rádio aqui do vilarejo.
Tenho uma tabela Pagamentos com a seguinte estrutura SQL:
CREATE TABLE pagamentos (
idPagamentos int(10) unsigned NOT NULL AUTO_INCREMENT,
idPlanoClientes int(10) NOT NULL,
idAdmins int(1) NOT NULL,
mesReferencia char(7) NOT NULL,
dataPgto date NOT NULL,
valorPgto double NOT NULL,
multa double NOT NULL,
desconto double NOT NULL,
totalPago double NOT NULL,
formaPgto char(2) NOT NULL,
PRIMARY KEY (idPagamentos)
Obs.: O campo "mesReferencia" é um "char(7) NOT NULL" pois ele será populado com o mês e o ano da competência do lançamento.
Minha dificuldade é a seguinte: Se o cliente tivesse comprado um TV de LED financiada em 12 vezes por exemplo, bastava fazer 12 lançamentos de débitos para aquela compra que o cliente fez e ir dando ok no banco em cada parcela.
Mas nesse meu caso, isso não existe. Não dá para lançar todas as prestações porque não sabemos quanto tempo o cliente ficará com o plano. Na verdade, nem ele mesmo deve saber!
Como ficaria a tabela de pagamentos nesse caso?
Outra dúvida: como saber quais parcelas o cliente ainda não pagou nesse caso?
Edited September 24, 2015 by carcleo
ter um plano é independente de um plano de pagamento.
isso levaria a que comprasse a televisão a 12 meses, ao fim do primeiro desaparecia, e como o primeiro é de "borla" porque normalmente só começas a pagar no primeiro dia do segundo mês, tinha uma TV de graça.
Tentei fazer a consulta abaixo:
SELECT pagamentos.idPagamentos, pagamentos.mesReferencia FROM pagamentos, planosclientes
pagamentos.idPlanoClientes = planosclientes.idPlanosClientes AND
pagamentos.idPlanoClientes = 8 AND
pagamentos.mesReferencia BETWEEN DATE_FORMAT(planosclientes.dataInstalacao, '%Y%-%m') AND DATE_FORMAT(CURRENT_DATE(), '%Y%-%m') ;
Essa consulta me retorna todos os lançamentos dentro do período determinado por ***ano-mês***.
1) Dessa forma ela esta excluindo a saída caso alguma saída para mesReferencia coincida com planosclientes.dataInstalacao ou CURRENT_DATE()* Como fazer para incluir os extremos nesta consulta?
2) Outra coisa é que preciso listar, NÃO os valores de competência que estão lançados. Mas SIM os meses de competência que faltam para preencher todos os meses daquele intervalo.