NO?ÕES PARA CONTROLE DE FILA
Boa tarde galera.
Estou montando meu gerenciador de documentos S@T e estou com algumas duvidas em como faze-lo.
Fiz uma pasta com as seguintes sub pastas
[Ô]Entrada>Processo[Ô] - em entrada sera a recepção de novos arquivos e processo é a fila de arquivos sendo processados.
[Ô]Autorizados>MMAAAA[Ô] - aqui salvarei em pastas com o nome do mes e ano de autorização dos cupons
Dei uma pesquisada e vi que o controle FileSystemWatcher é o ideal para isto.
Então pensei no seguinte para resolver essa questão:
Meu sistema cria o arquivo em Entrada, o sistema identifica e o joga(apenas o arquivo mais recente) para a pasta processos. Neste momento a [Ô]vigilia[Ô] na pasta entrada é desativada. E um outro filewatcher é acionado para processar o arquivo movido de entrada para processo. Assim que esse arquivo for autorizado ou rejeitado eu aciono o primeiro filewatchar e o jogo para a pasta processos e assim sucessivamente.
Minha pergunta é:
Isso é o jeito correto de fazer, pois foi o jeito que consegui imaginar para gerenciar os arquivos?
PS: Meu sistema é de pequeno porte então serão no máximo 3 pdv[ô]s fazendo isso.
Que dicas vocês me dariam para isso ?
Estou montando meu gerenciador de documentos S@T e estou com algumas duvidas em como faze-lo.
Fiz uma pasta com as seguintes sub pastas
[Ô]Entrada>Processo[Ô] - em entrada sera a recepção de novos arquivos e processo é a fila de arquivos sendo processados.
[Ô]Autorizados>MMAAAA[Ô] - aqui salvarei em pastas com o nome do mes e ano de autorização dos cupons
Dei uma pesquisada e vi que o controle FileSystemWatcher é o ideal para isto.
Então pensei no seguinte para resolver essa questão:
Meu sistema cria o arquivo em Entrada, o sistema identifica e o joga(apenas o arquivo mais recente) para a pasta processos. Neste momento a [Ô]vigilia[Ô] na pasta entrada é desativada. E um outro filewatcher é acionado para processar o arquivo movido de entrada para processo. Assim que esse arquivo for autorizado ou rejeitado eu aciono o primeiro filewatchar e o jogo para a pasta processos e assim sucessivamente.
Minha pergunta é:
Isso é o jeito correto de fazer, pois foi o jeito que consegui imaginar para gerenciar os arquivos?
PS: Meu sistema é de pequeno porte então serão no máximo 3 pdv[ô]s fazendo isso.
Que dicas vocês me dariam para isso ?
Boa noite!
Eu desenvolvi da seguinte forma:
Três pastas: [Ô]Envio[Ô], [Ô]Retorno[Ô], [Ô]Aprovadas[Ô] (dentro de aprovadas é separado da mesma forma que você faz, [Ô]MMAAAA[Ô]).
No PDV eu crio o arquivo dentro da pasta [Ô]Envio[Ô] com a nomenclatura [Ô]Venda[Ô] + Nº PDV quando for venda e [Ô]Cancelar[Ô] + Nº PDV quando o for o caso, o gerenciador identifica e começa o processo. Já o PDV fica esperando o arquivo na pasta Retorno com a nomenclatura Retorno + Número do PDV, já que o gerenciador vai somente processar as requisições e [ô]solta-las[ô] de acordo com o resultado, sendo assim todos os pdv's podem gerar vendas ao mesmo tempo que não terá problemas e também não corre o perigo de sobrescrever nenhum arquivo ou ocasionar algum tipo de perda de processo.
Dentro do arquivo de retorno eu envio a maior quantidade de informações possÃveis, por exemplo...
Linha 1 = 0 ou 1 (0 para correto 1 para erro)
Linha 2 = Quando for erro Erro (Descrição do erro) / Quando for Correto (Nº Sessão)
Linha 3 = Correto (Data E hora Autorizalção)
linha 4 = Correto (Chave da Consulta)
Linha 5 = correto (Valor da CFe)
Linha 6 = Correto (XML, para gravar ou imprimir.)
O PDV recebe o arquivo de retorno e processa as informações, sendo false ou true ...
Fora o tratamento de erro quando o gerenciador esta desativado, ou não encontra o SAT.. etc..
Obs: Testei este gerenciador com 4 pdv's simultaneamente e levou cerca de 3/4 segundos o processamento da venda (com rede e tudo)
[]'s
Eu desenvolvi da seguinte forma:
Três pastas: [Ô]Envio[Ô], [Ô]Retorno[Ô], [Ô]Aprovadas[Ô] (dentro de aprovadas é separado da mesma forma que você faz, [Ô]MMAAAA[Ô]).
No PDV eu crio o arquivo dentro da pasta [Ô]Envio[Ô] com a nomenclatura [Ô]Venda[Ô] + Nº PDV quando for venda e [Ô]Cancelar[Ô] + Nº PDV quando o for o caso, o gerenciador identifica e começa o processo. Já o PDV fica esperando o arquivo na pasta Retorno com a nomenclatura Retorno + Número do PDV, já que o gerenciador vai somente processar as requisições e [ô]solta-las[ô] de acordo com o resultado, sendo assim todos os pdv's podem gerar vendas ao mesmo tempo que não terá problemas e também não corre o perigo de sobrescrever nenhum arquivo ou ocasionar algum tipo de perda de processo.
Dentro do arquivo de retorno eu envio a maior quantidade de informações possÃveis, por exemplo...
Linha 1 = 0 ou 1 (0 para correto 1 para erro)
Linha 2 = Quando for erro Erro (Descrição do erro) / Quando for Correto (Nº Sessão)
Linha 3 = Correto (Data E hora Autorizalção)
linha 4 = Correto (Chave da Consulta)
Linha 5 = correto (Valor da CFe)
Linha 6 = Correto (XML, para gravar ou imprimir.)
O PDV recebe o arquivo de retorno e processa as informações, sendo false ou true ...
Fora o tratamento de erro quando o gerenciador esta desativado, ou não encontra o SAT.. etc..
Obs: Testei este gerenciador com 4 pdv's simultaneamente e levou cerca de 3/4 segundos o processamento da venda (com rede e tudo)
[]'s
Eu criei um servidor usando socket... PDV manda o xml por mensagem com o nome do micro, o gerenciador envia e retorna o XML assinado para o PDV que imprime o cupom,se por acaso o cupom não for validado ele nao finaliza a venda, ja utilizei em varios terminais e funcionou perfeitamente
Valeu pela resposta galera.
A minha dúvida era com relação a mais de um arquivo na pasta de entrada simultaneos. Tambem chamarei o arquivo com um nome que nao poderá ser alterado.
Vou continuar a implementação e vamos nos falando.
A minha dúvida era com relação a mais de um arquivo na pasta de entrada simultaneos. Tambem chamarei o arquivo com um nome que nao poderá ser alterado.
Vou continuar a implementação e vamos nos falando.
Tranquilo! Qualquer dúvida dá um grito!
Bom trabalho!!
[]'s
Bom trabalho!!
[]'s
Bem , eu criei um WebService com chamadas sÃncrona dos webmethods , ou seja, na mesma conexão já retorna o resultado e que executa algumas funções como :
EnvioDadosVenda
CancelamentoVenda
ConsultaStatusOperacional
ReImpressao
ConsultaSat
Além de armazenamento dos arquivos separando apenas por Gerados, Cancelados e Enviados.
Até pensei em separar por MMAAAA , mas como faço reimpressão tendo apenas a chave de acesso como parâmetro não posso searar por DDMMAAAA.
EnvioDadosVenda
CancelamentoVenda
ConsultaStatusOperacional
ReImpressao
ConsultaSat
Além de armazenamento dos arquivos separando apenas por Gerados, Cancelados e Enviados.
Até pensei em separar por MMAAAA , mas como faço reimpressão tendo apenas a chave de acesso como parâmetro não posso searar por DDMMAAAA.
FOXMAN, obrigado pela resposta.
Mas uma coisa, se você tem apenas a chave de acesso porque não concatenar com a pasta MMYYYY do seu path ao chamar a reimpressão ?
Mas uma coisa, se você tem apenas a chave de acesso porque não concatenar com a pasta MMYYYY do seu path ao chamar a reimpressão ?
Citação::
FOXMAN, obrigado pela resposta.
Mas uma coisa, se você tem apenas a chave de acesso porque não concatenar com a pasta MMYYYY do seu path ao chamar a reimpressão ?
Porque eu teria que Informar MMYYYY para achar o arquivo. E se fosse um arquivo do mês passado por exemplo, eu teria que setar MMYYYY = 112015, ou seja em algum momento o usuário teria que informar o mês e ano. Já da forma que estou fazendo ele apenas informa a chave(selecionando em um grid por ordem de data).
Ainda não tive a necessidade de separar os arquivos por mês, uma vez que não há necessidade de fazer o envio dos arquivos como no PAF-ECF.
Entendi. Eu gerencio isso simplesmente pela data de validação do cupom
Não sabia que o sat nao precisa enviar no fim do mês.
Não sabia que o sat nao precisa enviar no fim do mês.
Não precisa ser enviado à controles como incluir na NFP, etc.
Porém aqui foi preciso separarmos por YYYYMM pois todos os escritórios de contabilidade estão pedindo os arquivos para serem importados em seus sistemas.
[]'s
Porém aqui foi preciso separarmos por YYYYMM pois todos os escritórios de contabilidade estão pedindo os arquivos para serem importados em seus sistemas.
[]'s
No gerenciador que desenvolvi ele grava em uma pasta MMAAAA na maquina que o Gerenciador esta instalado e no final do mês a pessoa consegue ordenar os CFe por data e enviar para a contabilidade...
Tópico encerrado , respostas não são mais permitidas