BLOQUEAR UM MODULO DO SISTEMA NA REDE

MARCELOKROL 04/08/2014 21:04:32
#440185
Não sei como o seu sistema trabalha, mais considerando que esta boleto foi gerado a partir de uma negociação (venda ou serviço prestado), eu creio que ele possui um pedido de venda, uma ordem de serviço ou uma nota fiscal, então para toda essa movimentação crie uma um campo onde voce possa definir um código, que no momento que voce precisar verificar a nota que gerou o boleto pode pesquisar pelo código, e assim você pode definir o numero do boleto somente na hora da impressão, e se um dia a empresa mudar pra boletos automáticos fica mais facil
JCM0867 04/08/2014 22:22:31
#440190
São boletos de cobrança das mensalidades de colégios, somente numa escola são aprx. 1400 boletos mensais. Já tive dores de cabeça por causa de boletos com a mesma numeração, pepinão bem grande na hora da baixa automática de quase ganhar cartão vermelho do Cliente.
O sistema está em VB6 e access, somente um pode cadastrar os Boletos
Mas como estou refazendo o sistema em VB.NET e SQL Server (quase 3 anos de desenvolvimento), preciso arrumar esse negocio dos Boletos, o sistema novo está 80% pronto

sexta feira vou implantar no primeiro colégio para testes com 1400 alunos que se sujeitou a ser a cobaia e deixaram bem claro Cadastros, Históricos, Boletos e Contratos Multiusuário
Mas criar um campo a mais nos boletos como chave como o NILSONTRES sugeriu, funcionou 100%, mandei gerar boletos de 3 alunos o ano todo em 3 pcs diferentes e não repetiu nenhum boleto, fiz o processo 5x
FFCOUTO 04/08/2014 23:38:17
#440192
Bem, não sei como foi feito o planejamento do software nem o banco de dados mas a tarefa é até simples. Pegando carona na idéia do Professor, creio que a melhor solução seria um Job no próprio SQL Server. O Job tem funcionamento parecido com o serviço do Windows ou o Agendador de tarefas. Num horário determinado ele executa uma rotina determinada pelo usuário.

Na minha opinião, seria apenas necessário criar um Job rodando, por exemplo, a 00:00h de todos os dias e gerar as mensalidades conforme o dia em questão. Não haveria a necessidade de terminais para tal função.

Aqui na empresa utilizo muito disso para atualização de dados críticos, como atualização de pagamentos/recebimentos de banco; e envio de mensagens de alerta em geral.

Qualquer outra dúvida na criação do Job é só perguntar.
JCM0867 05/08/2014 20:21:26
#440212
FFCOUTO
Configuração dos boletos de mensalidades tem que sair na hora. Não posso configurar agora e botar imprimir a noite
Na época de matriculas o pai encosta o umbigo no balcão, faz a negociação, descontos, gratuidades, etc, Assina o contrato e sai com um ou os boletos do ano todo
Na verdade pode imprimir os boletos em blocos, por Aluno, por Turma, Por Serie, por Faixa, etc.
Na época das matriculas eles colocam 3 ou 4 pcs para atendimento e os 4 pcs, fazem ou alteram cadastros, Fazem contratos e Boletos, mandam dados para o site tudo junto ligado num servidor.
FFCOUTO 05/08/2014 22:32:16
#440214
JCM0867, boa noite,

Entendi o seu caso. De fato, a solução que eu postei não serve para o seu caso em específico.
Agora me tira uma dúvida. A geração do boleto segue é para pagamento via compensação bancária ou no próprio estabelecimento? Por que se for via compensação, basta você pegar o manual do banco em questão e aplicar uma regra específica para identificar o documento como único conforme o contrato com o banco. A partir daí, creio que não haverá duplicação de registro em relação a linha digitável do boleto.
Espero que tenha me compreendido.
JCM0867 06/08/2014 00:35:18
#440218
São boletos gerados pelo sistema que podem ser pagos no banco, casa loteria, internet ou no próprio colégio, é um boleto como qualquer outro.
Antes de o colégio adotar o boleto feito por terceiros, o boleto precisa ser homologado pelo banco e precisa seguir as regras descritas no manual de cobrança do banco.
Se for cobrança registrada (compensação bancária) precisa mandar um arquivo de remessa, não é ideal para escola pois muda muito o valor dos boletos, os pais vivem chorando e alterando valores...rs. O banco só emite relatórios meia boca e normalmente não são satisfatórios para a realidade de uma escola.

Normalmente são cobranças não registradas (compensação no estabelecimento). O colégio baixa diariamente o arquivo de retorno (TXT), o qual tem dia do pagamento, Valor Pago, juros, taxas, e logicamente o numero do boleto. Impresso é a tal da Francesinha.
o sistema faz a baixa automática no sistema pelo numero do boleto e faz todo o controle de Faturamento, Pagamentos efetuados e Devedores entre outros inúmeros relatórios contábeis muito mais detalhados que os emitidos quando a compensação é bancária.

Onde mora o perigo do boleto duplicado:
tem um boleto 12345 que é do João
e outro boleto 12345 da Maria
O retorno do banco não diz o nome do dono do boleto só o numero, aí vem uma baixa do boleto 12345, e agora baixa para o joão ou para maria, e se baixar para pessoa errada aí fodeu, o que realmente pagou é devedor e o outro registra pago algo que não ocorreu. E é uma situação extremamente desagradável.
FFCOUTO 06/08/2014 08:43:33
#440221
JCM0867, claro que esta situação é extramamente ruim.
Acho que tenho a solução certa pra você.
Como você está usando o SQL Server, você deve criar um índice com a opção UNIQUE para o campo que recebe o número do documento.
Dessa forma no momento em que inserir um novo registro, caso haja duplicação, será disparada uma exceção.
Creio que a única exceção seria se houver vários registros vazios (nulos ou em branco) na tabela.
Se for o caso minha sugestão é preencher o campo com um número negativo, dessa forma você sabe que o boleto ainda não foi gerado.
JCM0867 06/08/2014 10:07:59
#440224
Eu ja consegui resolver
criei um campo a mais onde tb recebe o numero do boleto e recebe um numero qualquer quando vazio e é campo chave
quando ele vai salvar o numero do boleto e vai tb tentar salvar nesse novo campo que, como é chave, não deixará repetir o numero dando erro de chave duplicada,, aí é só tratar o erro fazendo um loop acrescentando +1 no numero do boleto até ele conseguir salvar.

[txt-color=#0000f0]For i = 1 To 1000
SqlCobrancas = [Ô]Update Tabela...[Ô]
cx3.Conectar()
cdCobrancas.Connection = cx3.cSql
cdCobrancas.CommandText = SqlCobrancas

Try
cdCobrancas.ExecuteNonQuery()
BoletoJaExiste = False
Catch ex As Exception
If InStr(ex.Message, [Ô]insert duplicate key[Ô]) Then
BoletoJaExiste = True
NossoNumero = Trim(Str(Val(NossoNumero) + 1))
Else
MsgBox(ex.Message)
End If
End Try
cx3.Desconectar()

If BoletoJaExiste = False Then
Exit For
End If
Next
[/txt-color]
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas