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

Ajuda com data


Samara

Pergunta

Olá Pessoal.

Estou aqui novamente, com novas dúvidas, e preciso também de sugestões...

Bom, primeiro vou tentar explicar o que estou fazendo no momento.

Criei um ambiente local em meu computador para trabalhar com PHP e MySQL, pra fazer meus testes e tals... Tudo funciona perfeitamente...

Agora estou tentando montar um pequeno programa, para uso local mesmo, segue abaixo uma descrição básica dele.

*Fiz um sistema de Log-in de maneira bem simples, Nome, Senha,e um nível de acesso para definir quais membros podem alterar configurações no programa e quais podem apenas fazer consultas... senhas gravadas no MySQL e criptografadas com MD5.

*Em seguida fiz o cadastro de clientes. 2 tipos de formulários diferentes, um para pessoa Física, outro para pessoa Jurídica, informações essas, são adicionadas em 2 tabelas separadas no banco de dados, e também uma terceira tabela ligadas via “ID” para gravar históricos de negociação com cada cliente... nessa mesma parte do programa inclui alteração de cadastros, caso seja preciso alterar informações sobre o cliente, e também opção para remover o cliente do sistema.

*Fiz também, o cadastro de produtos, e serviços... onde cada produto possui nome, família, descrição, localização do mesmo, preço de compra, preço de venda, ao finalizar o cadastro mostra margem de lucro e tals.... também junto ao cadastro se define a quantidade mínima que esse produto pode chegar, e a quantidade atual disponível.... tudo informado na hora de cadastrar o produto....

*Bom, em seguida fiz uma sessão onde o usuário encontra diversos tipos de relatórios, entre eles, um que informa os produtos que estão em baixa no estoque, também relatório de contas a receber, ordem de serviços em aberto, e essas coisas...

*Para orçamento e venda, fiz uma tabela temporária da mesma forma que carrinhos de compras em sites de venda online.... fiz uma tabela na qual recebe o nome do cliente para o qual esta sendo processada a compra ou orçamento, nesta tabela leva o nome do cliente, o nome dos produtos escolhidos na compra, ID do cliente, ID do produto, a própria venda ou orçamento recebe um ID para ser representada e tals... ao finalizar a escolha dos produtos, mostra o valor total, e o valor individual de cada produto juntamente com o nome do mesmo.. também é possível devolver produtos, ou seja remover da lista de compras...após isso, surgem 2 escolhas, processar a venda, caso isso seja feito, é dado baixa no estoque de acordo com a quantia vendida de cada produto,e assim por diante... e também surge a segunda opção, que é o orçamento , apenas imprimir o orçamento e em seguida é possível arquivá-lo juntamente com o nome do cliente e a data e hora do dia em que foi feito, mais tarde esse mesmo orçamento pode ser transformado em venda caso o cliente retorne, mas isso é uma opção que deve ser definida pelo operador do programa. Tah e se acaso a venda é confirmada após a baixa no estoque vem a forma de pagamento, a vista, ou parcelamento e tudo mais...apos concluir toda a operação, sai a impressão com os dados da venda e tals, e essa venda é arquivada em uma tabela de “vendas concluídas”.

*E na sessão de contas a receber é possível ver e filtrar de acordo com a data, nome do cliente, ou outro filtro desejado, o operador do programa pode dar baixa quando a conta for quitada, e imprimir relatório disso tudo também.

*todas as impressões do programa eu fiz sem formatação por que pretendo fazer testes em impressoras com fita, aquelas mais usadas no comercio, fiz de maneira simples e objetiva, cabeçalho da empresa, em seguida o conteúdo dentro de tabelas, ahh e esse cabeçalho é configurado no próprio programa, nas configurações do programador, lá eu fiz um sistema pra cadastrar a empresa que ira utilizar o programa e tals...

* por ultimo fiz um sistema básico que trás a frente do programa tudo que for relacionado a data do dia... por exemplo, hoje eu entro no programa, e ele busca tudo que for com data de vencimento pra hoje e me trás a frente em uma lista de ações para o dia de hoje.

Bom não vou falar tudo por que tem mais boa parte de coisas, cadastro de fornecedores, cadastro de contas bancarias, despesas com funcionários, comissão , e muito mais.... faz alguns meses que estou me dedicando a isso , sei que não vai ter uso, pois nem pretendo registrar isso , tem muita complicação até poder ser usado como sistema comercial...

Fiz tudo isso ate agora como forma de passar o tempo e poder aplicar em alguma coisa o que venho aprendendo ... esse pequeno sistema já esta funcionando perfeitamente mas apenas para vendas com forma de pagamento a vista =/ estou com uma grande dificuldade com as vendas a prazo, alguém tem idéia , ou sabe uma forma de estimar o dia do vencimento de cada parcela? To perdida nisso estou até desanimando =[ por que não encontro saída... veja o que tentei fazer por ultimo

function addDayIntoDate($date,$days) {

$thisyear = substr ( $date, 0, 4 );

$thismonth = substr ( $date, 4, 2 );

$thisday = substr ( $date, 6, 2 );

$nextdate = mktime ( 0, 0, 0, $thismonth, $thisday + $days, $thisyear );

return strftime("%Y%m%d", $nextdate);

}

$nextdate = addDayIntoDate($date,30); //Tah aqui no 30 eu especifico o numero de dias, do intervalo entre uma parcela e outra.

Ou seja to tentando adicionar dias na data atual pra gerar um resultado na variável $nextdate e assim gravar no banco a data do vencimento de cada parcela, mas ta muito difícil fazer isso , já pensou se o operador do programa querer fazer em umas 12 vezes? =/... alem disso tenho que adicionar juro e tudo mais... alguém já fez algo parecido com isso? Preciso de uma luz , to com 1000 duvidas, e também preciso de sugestões... não é uma obrigação minha terminar isso tudo, mas já que fiz boa parte ate o momento, gostaria muito de acabar o que comecei... se alguém puder me ajudar fico muito grata....

Obrigada pela atenção de todos, e desculpa pelo texto =/

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
faz alguns meses que estou me dedicando a isso , sei que não vai ter uso, pois nem pretendo registrar isso , tem muita complicação até poder ser usado como sistema comercial...

Fiz tudo isso ate agora como forma de passar o tempo e poder aplicar em alguma coisa o que venho aprendendo ...

Parabéns, não é comum isso. Você é de verdade?

Brincadeiras à parte, o formato do problema que está tentando abstrair é bem típico de orientação a objetos. Conhece alguma coisa sobre OOP (Programação Orientada a Objetos)?

Aquele abraço.

Vai dormir!! Olha a hora...

Link para o comentário
Compartilhar em outros sites

  • 0

Algumas observações,

*Em seguida fiz o cadastro de clientes. 2 tipos de formulários diferentes, um para pessoa Física, outro para pessoa Jurídica, informações essas, são adicionadas em 2 tabelas separadas no banco de dados, e também uma terceira tabela ligadas via “ID” para gravar históricos de negociação com cada cliente... nessa mesma parte do programa inclui alteração de cadastros, caso seja preciso alterar informações sobre o cliente, e também opção para remover o cliente do sistema.

Você precisa de duas tabelas, uma pra pessoa física e outra pra jurídica? Todos sistemas que fiz onde haveria registro de PJ/PF eu usava apenas uma tabela, ai pela quantidade de caracteres do cadastro (CPF/CNPJ tem um número certo de caracteres) eu sabia se era PJ ou PF, ou se poderia haver a possibilidade de se cadastrar sem CPF/CNPJ colocava um campo do tipo ENUM onde definiria que tipo de pessoa era...

*Para orçamento e venda, fiz uma tabela temporária da mesma forma que carrinhos de compras em sites de venda online.... fiz uma tabela na qual recebe o nome do cliente para o qual esta sendo processada a compra ou orçamento, nesta tabela leva o nome do cliente, o nome dos produtos escolhidos na compra, ID do cliente, ID do produto, a própria venda ou orçamento recebe um ID para ser representada e tals...

Você precisa guardar o nome do cliente e produto? Se você está trabalhando com um SGBD relacional, apenas com o ID do cliente e do produto, você já consegue achar o nome do produto e do cliente, não precisa colocar essa informação nessa tabela, veja que pra estudo, tudo bem, mas aplique isso na prática em um grande e-commerce...

___________

Quanto ao seu problema, somar dias a uma data não é problema... vou aproveitar um trecho de um código que eu já tenho pronto aqui...

<?php
$parcela = 6;
$cont = 1;
while($cont <= $parcela){
    $data = date('d/m/Y',strtotime('+'.$cont.' month'));
    echo $data.'<BR>';
    $cont++;
    }
?>
Mas você vai ver que se o dia for 31 de algum mês, ele vai dar problema... se você colocar:
<?php
$parcela = 6;
$cont = 1;
while($cont <= $parcela){
     $dias = 30*$cont;
    $data = date('d/m/Y',strtotime('+'.$dias.' days'));
    echo $data.'<BR>';
    $cont++;
    }
?>

Também vai dar problema pela diferença de dias nos meses...

Basicamente, se a pessoa compra algo no dia 31 em uma loja, ele vai ter que pagar em todos os "dias 31", só que nem todos os meses tem isso, ai tem ver qual é a regra de negócio que a empresa tem, algumas simplesmente vão jogar os pagamentos pro dia primeiro (então se o cara comprar em 31/05, ele só vai pagar a parcela em 01/07), outras vão querer que o cara pague no último dia do mês (então se ele comprar em 31/05, ele vai pagar a parcela em 30/06), mas como disse, isso é questão da regra de negócio que a empresa tem... tem uma que eu atendi que simplesmente tem pagamento situados apenas entre o dia 1º e o dia 28, qual o motivo? Todos os meses tem esses dias, ai os caras só adicionam meses a data sem se preocupar se o mês seguinte vai ou não ter dia correspondente, só não sei como eles fazem com a contabilidade...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá ESerra... Tudo bem?

Essa do dia 31 eu já estava pensando também, mas pode ser de maneira mais simples, o próprio utilizador do programa pode ter uma noção disso, andei pensando em fazer uma variável com o dia atual e comparar ela com o valor 31... se o dia for = 31, o dia do vencimento é remarcado, um dia antes ou no primeiro dia do próximo mês. E junto com essa comparação da data com o dia 31. já retornar um aviso, explicando o por que, da data ser remarcada....sei lá acho que vai dar bastante trabalho, pretendo fazer um formulário onde pede o intervalo entre os vencimentos e a quantidade de parcelas e a porcentagem de juro... mas vou fazer, hehehe

Meee e quanto ao cadastro de clientes, la eu fiz besteira =/

Só após terminar, é que me toquei... pra que duas tabelas? Hehehe dificultou até nas consultas em busca de clientes.... o que fiz foi unir as duas tabelas para realizar as consultas,juntando os campos Nome e Razão Social, para que o mesmo formulário consulte nas duas tabelas ... mas pretendo mudar isso , acredito que não vale apena complicar as coisas se existe maneira mais fácil e pratica.

Ahh! Outra coisa, lá na parte do orçamento e vendas, você pediu sobre guardar o nome do cliente junto com a lista de compra, é apenas modo de dizer, eu relaciono as IDs, e só na hora de exibir é que eu consulto a tabela de clientes filtrando por ID e assim mostrar informações sobre o mesmo.No inicio eu ia fazer sem tabela sabe, só com sessão... mas na verdade esse sistema é apenas para um utilizador ou atendente, em caso de site acredito que seja preciso separar tudo através de ID da sessão também, no caso de ter varias pessoas comprando ao mesmo tempo, no meu caso, apenas 1 utilizador, até me ajuda, caso ocorrer qualquer problema , que a pagina seja fachada, ao retornar no programa, ele pode continuar a venda, a ID dos produtos e do cliente, ainda estarão lá, e se acaso quiser iniciar uma nova venda, fiz uma opção para limpar a tabela =]

Eu pensei em parar com isso, 2 vezes hehehe... meee mas falando serio mesmo, vicia! Quando da certo, eu não consigo mais parar, é muito legal trabalhar com isso, ou melhor, aprender néh oO

Editado por Samara
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
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...