Pergunta

Eu preciso gerar facturas em grande lote que será transformado em EDI e transportados para o nosso HQ. Há uma mesa de ordem com todas as ordens chegando. Em algum ponto no dia em que eu tenho que pegar um conjunto (cerca de 1k) e gerar as faturas.

  1. Onde seria o melhor lugar para gerar os números de factura? No back-end SQL Server? Ou pegar o lote em um aplicativo .NET e, em seguida, gerar os números de factura lá? Os números de faturas pode ser aleatória, mas não deve repetir (por 3-4 anos). Eu tenho um máximo de 12 dígitos para brincar e pode ser alfa numérico. Onde posso encontrar informações sobre como gerar números de faturas.

Nota:. Enquanto eu estou gerando as facturas que eu preciso para calcular os totais da ordem e impostos

Eu apreciaria sua entrada.

Foi útil?

Solução

Os números de fatura pode ser regulada por exigências legais (onde eu moro eles precisam estar em ordem, e eu não acho que pode haver intervalos na seqüência).

Muitas vezes você vê que os números incluem um elemento que alcance vontade los no tempo (tal como o ano: 2009 03472). Dessa forma, você minimizar o risco de usar o mesmo número duas vezes.

Você diz que tem ~ 1K faturas por dia. Isso significa que o número da factura de 6 dígitos irão cobrir as suas necessidades. Então, no ano de 4 dígitos seguido por acolchoada zero número da factura de 6 dígitos deve provavelmente você ir.

Eu provavelmente teria o banco de dados gerá-los para garantir que eles são únicos.

Outras dicas

Adicionar uma tabela para o banco de dados que armazena o valor do último número da fatura usados, e um procedimento armazenado para incrementar este valor e retornar o novo valor para você usar na criação da sua factura.

Quando você salvar sua nova fatura, fazer a chamada para o SP para obter o próximo número da fatura uma das últimas coisas que você faz - após a validação passou, mas immdiately antes de escrever no disco -, a fim de tentar minimizar o risco de " buracos" na sua seqüência de numeração.

Usando IDs seqüenciais é provavelmente melhor a menos que você quer que eles sejam aleatória por algum motivo (como porque os clientes não deve ser capaz de adivinhar o código do pedido de outra ordem de aproximadamente o mesmo período de tempo). Usando IDs seqüenciais permite que você leia o máximo atual e, em seguida, verifique se nenhum foi escrito no intervalo que vai escrever um pouco antes de se comprometer as ordens do seu processo em lote.

Se você não quer o ônus de verificar a base de dados e pode ter certeza que outros processos não vão interferir, você pode ser capaz de alavancagem DateTime.UtcNow e uma conversão Base64. Uma ilustração muito desajeitado poderia ser algo como:

Convert.ToBase64String(new byte[] { (byte)DateTime.UtcNow.Year, 
                                    (byte)DateTime.UtcNow.Month,
                                    (byte)DateTime.UtcNow.Day,
                                    (byte)DateTime.UtcNow.Hour,
                                    (byte)DateTime.UtcNow.Minute,
                                    (byte)DateTime.UtcNow.Second,
                                    (byte)DateTime.UtcNow.Millisecond })

ou

Convert.ToBase64String(new byte[] { (byte)DateTime.UtcNow.Ticks })

Você provavelmente estaria mais interessado em uma Base32 conversão (ele usa letras AZ e dígitos 2-7), embora não há nenhuma conversão .Net nativo assim que você tem que procurar um fora.

Eu acho que se não existem leis para restringir as regras sobre gerar o ID de fatura, pode ser o que você quer ser.

Agora eu tenho um bom exemplo sobre: ??

Na verdade eu estou programando um sistema de facturação e eu tive gerar meu código id sequencialmente, e eu tenho algumas lacunas, porque quando o cliente, por exemplo, cancelar o contrato com a empresa, e eu já tinha gerar 12 faturas uma vez antes.

(porque aqui somos uma empresa ISP eo contrato deve ser de 6, 12 ou 24 meses)

Eu tenho a lacuna no meu banco de dados, porque os usuários do sistema excluídos das faturas canceladas. Se eu realmente precisa de um número sequencial Eu tenho um problema com a lei. E eu tenho muitas outras situações aqui que me deu uma lacuna no meu número da factura seqüencial.

Eu realmente não sei como evitar esse tipo de problema causa existem inúmeras situações em que isso acontecer. Alguma idéia?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top