PROJETO S@T-FISCAL

FOXMAN 15/07/2015 19:38:26
#448899
Citação:

:
Grande problema é a queda de comunicação com o servidor.
Nesse caso, para também o banco de dados, e ai o problema é maior ainda, nem NFC-E resolve.
O problema seria o SAT queimar e o cliente só ter hum na loja, nesse caso vamos ter aqui um de reserva para atender de imediato o cliente(vender para ele), isso caso não esteja na garantia.
Então nesse caso sim entra a NFC-E.
Acontece que meus poucos neuronios já estão cansados demais, haja, agora NFC-E, o problema não é nem enviar, mas imprimir.



Nilson, por questões de queda de servidor é que resolvi mudar a forma com que meus caixas irão trabalhar.
Irão trabalhar independentemente de servidor de banco de dados.
Estou estudando uma forma de utilizar meus pdvs off-line(um requisito que no PAF-ECF já contempla este cenário).
Já com relação a uma possível queima do SAT, ai entra a NFC-e.

Eu já estou é de saco cheio de tudo, vontade de largar tudo e mudar de profissão, mas qual ????


LEANTRONIC 15/07/2015 23:23:53
#448907
Citação:

:
:
Opa, então essa semana tbm começo a desenvolver o gerenciador...
Eu não tenho o grande conhecimento que você tem!!! rs
de inicio eu pensei tambem em criar um serviço para isso que ficasse aguardando as vendas serem gravadas no banco de dados mas pensei q eu teria q criar um loop pra ficar verificando essas vendas e fiquei preocupado em sobrecarregar o banco em fazer varias consultas ( Se minha logica estiver errada desculpe como falei em relação a conhecimento)

Agora estou pensando em criar um aplicativo que será instalado no servidor que fique ansioso aguardando XMLs e os PDVs vão gerar o XML diretamente na pasta do servidor, ao encontrar um arquivo XML o mesmo faz toda a validação e emissão do CFe e logo apos envia uma resposta (Gerando um TXT) informando se foi emitido ou não... O PDV lê essa resposta e caso negativo ele mostra o erro na tela e bloqueia a finalização da venda...

Nesse processo que vc vai desenvolver o seu vc me indicaria algo? obrigado



Leandro, por questões obvias em meu pdv, vou utilizar a geração de arquivos xml. Uma vez que preciso apenas ao final da venda gerar o xml sem muitas complicações.
Meu sistema já gera um arquivo txt para cada venda então somente preciso alterar e passar a gerar um XML.

Grande problema é a queda de comunicação com o servidor.
E por esta razão penso em alguma solução que possa substituir este servidor em caso de pane. E a única que me vem a cabeça seria NFC-e.
Indo totalmente contrário ao que foi determinado pela secretaria da fazenda, penso em ter o SAT como emissor e NFC-e em contingência.
Mas ainda não decidi se arrisco confiar no servidor, ou já desenvolvo essa válvula de escape (NFC-e).



Entendo... pensei na NFC-e tbm mas sinceramente ter q manter atualizado (SAT, NF-e, NFC-e) e outras obrigações como Farmacia Popular e + uma porrada de coisas eu desencanei de NFC-e... vou desenvolver mesmo esse gerenciador e vamos trabalhando mas em breve imagino que a gente vai ter q ter programadores trabalhando pra gente em escritorio... pois ter todas essas obrigações só vai deixar a gente de cabelo branco ou talvez sem cabelo e sem vida social
NILSONTRES 16/07/2015 00:08:05
#448908
Citação:

Estou estudando uma forma de utilizar meus pdvs off-line(um requisito que no PAF-ECF já contempla este cenário)


FOX, Esse é meu pesadelo, como seria esse off-line ? Já pensei em coisas tipo salvar em txt as querys e depois atualizar no servidor após ele ser restaurado, mas ai entra o risco por falta de não poder utilizar as transações.
Como seria esse seu, da para dar uma dica básica ?
Sabe que até um Tópico próprio daria esse assunto: [Ô]COMO SE LIVRAR DA FALTA DO SERVIDOR DE BANCO DE DADOS ?[Ô]
Espelhamento de HD foi uma boa pratica que encontrei, mas depende de nossa manutenção presencial, precisaria de algo em que o sistema ou o cliente mesmo redirecione.
Que o sistema não pare.
FOXMAN 17/07/2015 09:12:17
#448963
Citação:

:
Estou estudando uma forma de utilizar meus pdvs off-line(um requisito que no PAF-ECF já contempla este cenário)
FOX, Esse é meu pesadelo, como seria esse off-line ? Já pensei em coisas tipo salvar em txt as querys e depois atualizar no servidor após ele ser restaurado, mas ai entra o risco por falta de não poder utilizar as transações.
Como seria esse seu, da para dar uma dica básica ?
Sabe que até um Tópico próprio daria esse assunto: [Ô]COMO SE LIVRAR DA FALTA DO SERVIDOR DE BANCO DE DADOS ?[Ô]
Espelhamento de HD foi uma boa pratica que encontrei, mas depende de nossa manutenção presencial, precisaria de algo em que o sistema ou o cliente mesmo redirecione.
Que o sistema não pare.



Nilson, você pode usar banco de dados local o que irá garantir suas transações( eu não as utilizo). Não pesquisei nada ainda, mas irei implementar com certeza.

Vamos trocando figurinha.

Eu criei um grupo para desenvolvedores no whatsapp para ter um contato mais próximo, iniciei esse grupo hoje, quem quiser participar manda email para zap@satfiscal.net que eu adiciono. Importante ressaltar que durante a semana iremos tratar apenas de assuntos sobre programação e nos finais de semana assuntos livres.


MARCIOHR 17/07/2015 09:14:24
#448964
Pessoal bom dia!
Tentei achar o caminho das pedras pra postar o seguinte código no site, mas não achei o botão do tipo [Ô]postar código fonte, postar dica[Ô], continuo procurando com fé rsrsrs
Pra quem precisar de uma ajuda pro arredondamento usado pelo SAT, baseado nas normas ABNT NBR 5891, segue exemplo de uma função minha em VB6, bem explicadinha:


[ô]////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
[ô]FUNÇÃO PARA FAZER O ARREDONDAMENTO DE VALORES, BASEADO NAS REGRAS DE ARREDONDAMENTO DA NORMA ABNT NBR 5891 DE 1977
[ô]TRABALHA COM 4 DIGITOS NA DECIMAL DE ENTRADA
[ô]DEVOLVERÁ O VALOR ARREDONDADO COM 2 DECIMAIS
[ô]////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Public Function Arredondamento_ABNT_NBR5891(Valor As Currency) As Currency
On Error GoTo Trata_Erros


[ô]TRANSFORMA E FORMATA O VALOR PARA STRING E 4 DECIMAIS
Dim StrValor_Trabalhar As String
StrValor_Trabalhar = Format(Valor, [Ô]############0.0000[Ô])

[ô]DESCOBRE A POSIÇÃO DA VIRGULA
Dim Posicao_Virgula As Integer
Posicao_Virgula = InStr(1, CStr(StrValor_Trabalhar), [Ô],[Ô])
Dim StrDecimal As String
StrDecimal = Mid(StrValor_Trabalhar, Posicao_Virgula + 1, Len(StrValor_Trabalhar))

[ô]VERIFICA SE NA DECIMAL OS 2 ULTIMOS DIGITOS SÃO IGUAIS A [Ô]00[Ô], SE FOREM, NÃO SERÁ NECESSÁRIO ARREDONDAR
[ô]POR EXEMPLO 2,5500
If Mid(StrDecimal, 3, 2) = [Ô]00[Ô] Then
Arredondamento_ABNT_NBR5891 = Format(CCur(StrValor_Trabalhar), [Ô]############0.00[Ô])
Exit Function
End If


[ô]DEFAULT
Dim StrValor_Retornar As String
StrValor_Retornar = CStr(Format(Valor, [Ô]#############0.00[Ô]))


[ô]********************************************************************************************************************************************
[ô]1- Quando o algarismo seguinte a 2ª CASA for INFERIOR a 5, A 2ª CASA permanecerá SEM modificação.
[ô]ENTÃO SE NA 3ª CASA O NUMERO FOR < 5 (MENOR QUE 5) ENTÃO NÃO ARREDONDA, MANTEM O VALOR ORIGINAL
[ô]EXEMPLO 2,5501 FICARÁ SOMENTE 2,55 POIS A TERCEIRA CASA (0) é MENOR QUE 5
[ô]********************************************************************************************************************************************
If CInt(Mid(StrDecimal, 3, 1)) < 5 Then
StrValor_Retornar = Mid(StrValor_Trabalhar, 1, Len(StrValor_Trabalhar) - 2) [ô]PEGA O VALOR SEM AS 2 ULTIMAS CASAS, EX: 2,5501 REMOVERÁ O 01 DO FINAL, RETORNANDO SOMENTE O 2,55
Arredondamento_ABNT_NBR5891 = Format(StrValor_Retornar, [Ô]############0.00[Ô])
Exit Function

End If

[ô]********************************************************************************************************************************************
[ô]2 - Quando o algarismo seguinte A 2ª CASA for SUPERIOR a 5 ENTÃO AUMENTARA EM UMA UNIDADE A 2ª CASA, EXEMPLO: 2,556 (FICA 2,56)
[ô]********************************************************************************************************************************************

[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ô]VERIFICA SE A TERCEIRA CASA é MAIOR QUE 5
[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If CInt(Mid(StrDecimal, 3, 1)) > 5 Then
[ô]SE FOR MAIOR QUE 5, ENTÃO ARREDONDA PRA MAIS O VALOR, EXEMPLO: 2,556 FICARÁ 2,56
StrValor_Retornar = Mid(StrValor_Trabalhar, 1, Len(StrValor_Trabalhar) - 2) [ô]PEGA O VALOR SEM AS 2 ULTIMAS CASAS, EX: 2,5501 REMOVERÁ O 01 DO FINAL, RETORNANDO SOMENTE O 2,55
StrValor_Retornar = CCur(StrValor_Retornar) + CCur([Ô]0,01[Ô])
Arredondamento_ABNT_NBR5891 = Format(StrValor_Retornar, [Ô]############0.00[Ô])
Exit Function
End If


[ô]************************************************************************************************************************************************************************
[ô]3 - Quando a TERCEIRA CASA é IGUAL A CINCO, TEREMOS 2 OPCOES (A e B):
[ô]************************************************************************************************************************************************************************

[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ô](A) - SE A SEGUNDA CASA FOR IMPAR ENTÃO ARREDONDA PRA MAIS O VALOR, EXEMPLO: 2,3751 (o 7 dos 37 centavos é IMPAR, neste caso arredonda pra mais)
[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If EImpar(CLng(Mid(StrDecimal, 2, 1))) = True Then
StrValor_Retornar = Mid(StrValor_Trabalhar, 1, Len(StrValor_Trabalhar) - 2) [ô]PEGA O VALOR SEM AS 2 ULTIMAS CASAS, EX: 2,3751 REMOVERÁ O 51 DO FINAL, RETORNANDO SOMENTE O 2,37
StrValor_Retornar = CCur(StrValor_Retornar) + CCur([Ô]0,01[Ô])
Arredondamento_ABNT_NBR5891 = Format(StrValor_Retornar, [Ô]############0.00[Ô])
Exit Function
End If

[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[ô](B) - SE A SEGUNDA CASA FOR PAR, ENTÃO:
[ô]SE A QUARTA CASA FOR ALGARISMO ZERO, NÃO HAVERÁ ALTERAÇÃO NAS DECIMAIS, RETORNANDO O VALOR SEM ARREDONDAR, EXEMPLO: 2,5450 (FICARA 2,54)
[ô]SE A QUARTA CASA FOR ALGARISMO DIFERENTE DE ZERO, A 2ª CASA deverá ser AUMENTADA EM UMA unidade, EXEMPLO: 2,5451 (FICARÁ 2,55)
[ô]++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[ô]SE A QUARTA CASA FOR IGUAL A ZERO
If CInt(Mid(StrDecimal, 4, 1)) = 0 Then
StrValor_Retornar = Mid(StrValor_Trabalhar, 1, Len(StrValor_Trabalhar) - 2) [ô]PEGA O VALOR SEM AS 2 ULTIMAS CASAS, EX: 2,5450 REMOVERÁ O 50 DO FINAL, RETORNANDO SOMENTE O 2,54
Arredondamento_ABNT_NBR5891 = Format(StrValor_Retornar, [Ô]############0.00[Ô])
Exit Function

[ô]SE A QUARTA CASA FOR MAIOR QUE ZERO, ACRESCENTA EM 0,01 ARREDONDANDO PRA MAIS O VALOR DECIMAL COM 2 CASAS
Else
StrValor_Retornar = Mid(StrValor_Trabalhar, 1, Len(StrValor_Trabalhar) - 2) [ô]PEGA O VALOR SEM AS 2 ULTIMAS CASAS, EX: 2,3451 REMOVERÁ O 51 DO FINAL, RETORNANDO SOMENTE O 2,34
StrValor_Retornar = CCur(StrValor_Retornar) + CCur([Ô]0,01[Ô]) [ô]SOMA MAIS 1 CENTAVO
Arredondamento_ABNT_NBR5891 = Format(StrValor_Retornar, [Ô]############0.00[Ô])
Exit Function
End If


Trata_Erros:
If Err.Number <> 0 Then
MsgBox [Ô]Erro na funcao de ARREDONDAMENTO ABNT NBR 5891: [Ô] & Err.Source & [Ô] [Ô] & Err.Description, vbCritical
Exit Function
End If
End Function
MARCIOHR 17/07/2015 09:18:57
#448965
Faltou a função pra informar se é impar :
 Function EImpar(ByVal iNum As Long) As Boolean
[ô]Verifica se o número é impar
[ô]Se for impar a função retorna True.
[ô]Se for par a função retorna False.
EImpar = (iNum Mod 2)
End Function


Abraços
MARCIOHR 17/07/2015 09:44:15
#448969
Pessoal, se alguém puder me ajudar, estou me debatendo com a impressora SI300 da Sweda, tentando imprimir um QRCode de um cupom fiscal eletronico, ocorre que a impressora simplesmente imprime alguns textos, mas nada do bendito QR Code, o pessoal da Sweda já até desisti, pelo visto nem eles sabem, andei fuçando na internet, lendo manuais da EPSON, percebi que os comandos são os mesmos desta sweda, SE ALGUEM conseguiu fazer a impressão diretamente na porta serial e puder ajudar agradecemos (EU e MUITOS) que devem estar quebrando a cabeça.
Segue o código que estou usando em VB6:

Dim StrCodigo as String
StrCodigo = [Ô]CFe35700153485215000106599000032240000049527319|20150714164608|100.00||pLptLMeLB50r7WPs178odovBcSan4KfTOJ58bwbW1WVRiDVKzjDi2xpCxokJtT+17V6OIkmBF2/AoAGBv6H7GC2rjsZt7tDPeCnlS8GmTylKu7HSivnpmNCpbos8hkvVz66/xWODKBRNVI+PVdyTmUYXOkguQWCTJydaRYStpRDSNT6aN8Gnm8IOOLUSkizlP6q3DMWK3+pl0wdaL/yS72S5kPuzohxn0bnTO9PS6aJQvjqq45mCMrUPn7hwUvLA+mgYNaekFRcNFfj59huiBuiZluFxDbcYANAySPV+N0cVvfmShE888ZHrPANHoYUf6DSm0r/WANUH72lISuVLuw==[Ô]

Dim store_len As Integer
store_len = Len(StrCodigo) + 3

Dim store_pL As Byte
store_pL = CByte(store_len Mod 256)

Dim store_pH As Byte
store_pH = CByte(store_len / 256)

Dim ModeloQR As String
ModeloQR = Chr(29) & Chr(40) & Chr(107) & Chr(4) & Chr(0) & Chr(49) & Chr(65) & Chr(50) & Chr(0)

Dim TamanhoQR As String
TamanhoQR = Chr(29) & Chr(40) & Chr(107) & Chr(3) & Chr(0) & Chr(49) & Chr(67) & Chr(3)

Dim NivelCorrecaoQR As String
NivelCorrecaoQR = Chr(29) & Chr(40) & Chr(107) & Chr(3) & Chr(0) & Chr(49) & Chr(69) & Chr(48)

Dim DadosQR As String
DadosQR = Chr(29) & Chr(40) & Chr(107) & store_pL & store_pH & Chr(49) & Chr(80) & StrCodigo

Dim ImprimeQR As String
ImprimeQR = Chr(29) & Chr(40) & Chr(107) & Chr(3) & Chr(0) & Chr(49) & Chr(81) & Chr(48)


[ô]ENVIA DIRETO NA PORTA - ComImpressora é o componente MSComm
ComImpressoraNF.Output = ModeloQR
ComImpressoraNF.Output = TamanhoQR
ComImpressoraNF.Output = NivelCorrecaoQR
ComImpressoraNF.Output = DadosQR
ComImpressoraNF.Output = ImprimeQR
FUTURA 17/07/2015 11:56:04
#448981
Pessoal, pegando este esquema do qrcode, tenho um cliente que quer comprar os equipamentos, minha duvida é em relação à impressora, qualquer impressora térmica imprime o qrcode ?, seria como enviar uma imagem ?, e no caso do .net, da pra fazer isso tranquilo ?, no caso ele esta vendo a bematech mp2500th, sera que rola ?
NILSONTRES 17/07/2015 12:15:14
#448982
Citação:

qualquer impressora térmica imprime o qrcode ?


As novas sim, antigas precisa se informar com o fabricante se tem atualizações para ela.
Mas sempre bom perguntar antes de comprar.
Citação:

e no caso do .net, da pra fazer isso tranquilo ?


é tudo muito novo ainda, gerar o qrcode tem controles que geram, o problema é imprimir e ajustar os tamanhos, o minimo permitido é o modulo 4(4 centimetros), imprimindo nesse tamanho a maioria dos celulares que testamos não leram, só leram mesmo o modulo 6.
E tem ainda o codebar 128, por essas e outras é que a principio, principalmente devido a pressa, decide me amarrar da dr700 da daruma que já facilita em tudo isso, mas tem outras marcas tambem, eu não recomendo porque não utilizei ainda, não conheço.
FUTURA 17/07/2015 12:24:03
#448984
Nilson, vc esta optando pela dr700 da daruma, e no caso do aparelho sat, vc adquiriu algum pra testar ?, esta usando dlls do fabricante ou montando um sat [Ô]genérico[Ô] ?, eu estou pensando em ir de bematech, pois parece que a dll deles é compatível com o vb6 , no caso meu frente de loja é em vb6, e esta dll faz tudo, desde gerar o xml, até a impressão, pelo menos é o que ando vendo na net.
Página 44 de 91 [908 registro(s)]
Faça seu login para responder