Ir para conteúdo
  • Cadastre-se

VEXCOM Sistemas - Valtair

Membros Pro
  • Total de ítens

    22
  • Registro em

  • Última visita

Sobre VEXCOM Sistemas - Valtair

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

VEXCOM Sistemas - Valtair's Achievements

  1. Consegui entender a situação do nosso amigo Leonardo e faz muito sentido a implementação dele Realmente, está correto o que o banco Sicoob informou, que nada muda (em partes) Partimos do principio que nos fontes atuais, o acbrBoleto sempre calcula o digito verificado do nosso numero. O que acontece é que quando é gerado CNAB 240, nós geramos o nosso numero, e o AcbrBoleto calcula o digito verificador do nosso numero, e enviamos para o sicoob através do arquivo CNAB, registra no banco e o processo está correto. Quando é por API, sobre o nosso numero há duas possibilidades 1) Nós informar o nosso numero + digito verificador, igualmente é feito no CNAB240, e que o boleto é registrado no Sicoob exatamente como é enviado. 2) Nós informar '' no campo nosso numero, neste cenário, após o registro no banco, o mesmo retorna o nosso numero, este é o cenário que eles implementaram, não há digito verificador para este caso, apenas o nosso numero, e neste caso não deve calcular o digito verificador, porque se calcular estará errado Fiz uma implementação, e fiz essa validação com boletos de alguns clientes (API e CNAB240) e agora ficou correto. criei a property fpGerarDV no TACBrBancoClass e essa modificação ao gerar o digito verificador function TACBrBancoSicoob.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String; var Num, Res :String; i, base, digito : Integer; const indice = '319731973197319731973'; begin Result := ''; if (not GerarDV) then Exit; Result := '0'; Num := PadLeft(ACBrTitulo.ACBrBoleto.Cedente.Agencia, 4, '0') + PadLeft(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente, 10, '0') + PadLeft(trim(ACBrTitulo.NossoNumero), 7, '0'); base := 0; for i := 1 to Length(Num) do base := base + ( StrToInt(copy(Num,i,1)) * StrToInt(copy(indice,i,1)) ); digito := 11-(( base )-( trunc(base/11) * 11)); //(Se o Resto for igual a 0 ou 1 então o DV é igual a 0) if (digito > 9) then digito := 0; Res := IntToStr(digito); Result := Res; { Para o cálculo do dígito verificador do nosso número, deverá ser utilizada a fórmula abaixo: Número da Cooperativa 9(4) – 3009 Código do Cliente 9(10) – cedente Nosso Número 9(7) – Iniciado contagem em 1 Constante para cálculo = 3197 a) Concatenar na seqüência completando com zero à esquerda. Ex.: Número da Cooperativa = 0001 Número do Cliente(cedente) = 1-9 Nosso Número = 21 000100000000190000021 b) Alinhar a constante com a seqüência repetindo de traz para frente. Ex.: 000100000000190000021 319731973197319731973 c) Multiplicar cada componente da seqüência com o seu correspondente da constante e somar os resultados. Ex.: 1*7 + 1*3 + 9*1 + 2*7 + 1*3 = 36 d) Calcular o Resto através do Módulo 11. Ex.: 36/11 = 3, resto = 3 e) O resto da divisão deverá ser subtraído de 11 achando assim o DV (Se o Resto for igual a 0 ou 1 então o DV é igual a 0). Ex.: 11 – 3 = 8, então Nosso Número + DV = 21-8 Memória de Cálculo Coop.(4)|Cliente(10) |Nosso Número(7) 3 0 0 9 0 0 0 0 1 3 6 3 5 2 5 9 3 1 1 5 1 3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3 1 9 7 3 9 0 0 63 0 0 0 0 3 3 54 21 15 2 45 63 9 1 9 35 3 = soma = 335 digito = 11-(( soma )-( resto inteiro (trunc) da divisao da soma por 11 * 11)) digito = 11-(( 335 )-(30*11)) digito = 6 } end; no meu caso isso resolveu para todos os cenários, controlo conforme a property no momento da geração, se é CNAB240 ou API ACBrBoleto.pas ACBrBancoSicoob.pas
  2. Estamos com o mesmo problema Por sorte, estou gravando o boleto PDF que o banco retorna em base 64, ai consegui reimprimir este. Mas para clientes que usam CNAB também está acontecendo, e ai ficou mais difícil resolver, alguém teve alguma solução, ou sabem se já foi submetido alguma solução pelo ACBr ?
  3. Houve mudanças no provedor IPM de São Carlos / SC já fiz o teste alterando o arquivo ACBrNFSeXServicos.ini e compilando o res após alterar esse bloco [4216008] ; Atualizado em 28/10/2024 Nome=Sao Carlos UF=SC Provedor=IPM Versao=1.01 Params=NaoGerarGrupoRps ProRecepcionar=https://ws-saocarlos.atende.net:7443/atende.php?pg=rest&service=WNERestServiceNFSe HomRecepcionar=https://treinamento.atende.net/?pg=rest&service=WNERestServiceNFSe&cidade=treina_saocarlos a Nota fiscal de serviço foi transmitida, testei apenas em ambiente de produção, somente segui a mesma regra de homologação para o mesmo cenário do mesmo provedor, porém de outras cidades.
  4. Olá a todos, Na impressão do DANFE da NFe e gostaria de saber se é possível ajustar o layout de impressão para que, ao final da lista de itens, sejam impressas as informações adicionais (dados complementares), sem a necessidade de preencher o espaço em branco até o final da página. Alguém poderia me orientar sobre como fazer essa personalização ou se há algum recurso nativo no ACBR que permita essa configuração? Agradeço desde já pela ajuda!
  5. Estou configurando com o meu ponto de captura e CNPJ como homologação, mas o mesmo erro está acontecendo em um cliente que estamos colocando neste momento como produção. Após informar a senha, está apresentando operação cancelada e o processo é abortado. Vou anexar aqui as impressões da configuração e instalação do Tef PayGo e os logs que foram gerados, tentei identificar o que pode estar de errado, porém não consegui identificação Meu pinpad é um PPC 920 (que será usado em homologação) pinpad da cliente é um PPC930 (que será usado em produção) O estranho é que chega chamar a operação no pinpad, pede para informar a senha, porém após confirmar a operação é cancelada. As Dlls tanto de produção como homologação foram baixadas do site https://projetoacbr.com.br/tef/#integracao e estão corretas. e abaixo está uma foto do pós configuração
  6. Tenho uma DLL que roda em apache, é o servidor de minha aplicação IntraWeb, nesta DLL irei colocar a integração com boleto, geração de boletos e leitura de retorno por API, o problema que a unit ACBrBoleto.pas possui uses da Graphics, impossibilitando o build, pois não há visual no projeto da DLL. O Acbr já tem a diretiva NOGUI (que eu utilizo) para resolver isso, porém na unit ACBRBoleto não tem essa tratativa, fiz o ajuste, vou encaminhar aqui a unit alterada. ACBrBoleto.pas
  7. O SVN faz o merge sempre que faço o update. Alterar apenas o arquivo ini que está em anexo, fiz o update agora dos meus fontes, e vi que o italo, já fez a correção recentemente do tratamento correto das mensagens de erro, tem o commit abaixo quer corrigiu: Revision: 31112 Author: italojjr Date: segunda-feira, 30 de outubro de 2023 17:01:12 Message: 30/10/2023 -- IPM.GravarXml/IPM.Provider -- [*] Possível solução para tratar corretamente as mensagens de erro. Por: Italo Giurizzato Junior ---- Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/ACBrNFSeX-change-log.txt Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/Provedores/IPM.GravarXml.pas Modified : /trunk2/Fontes/ACBrDFe/ACBrNFSeX/Provedores/IPM.Provider.pas ACBrNFSeXServicos.ini
  8. Contribuindo com o projeto ACBr, solicito, se possível alguns ajustes, tenho clientes que enviam NFSe nestas cidades, e após os ajustes abaixo, as NFSes estão sendo transmitidas com sucesso. Essas alterações não foram feitas hoje, faz um certo tempo já, então estão funcionando perfeitamente. no arquivo INI: "ACBr\trunk2\Fontes\ACBrDFe\ACBrNFSeX\ACBrNFSeXServicos.ini" A cidade São Carlos / SC que estava: [4216008] Nome=Sao Carlos UF=SC Provedor=Betha o correto é: [4216008] Nome=Sao Carlos UF=SC Provedor=IPM A Cidade de Nonoai / RS que estava [4312708] Nome=Nonoai UF=RS Provedor=DataSmart Versao=2.02 Params=AliasCidade:NONOAIRS o correto é: [4312708] Nome=Nonoai UF=RS Provedor=DataSmart Versao=2.02 Params=AliasCidade:NONOAI O Provedor IPM para a cidade de são carlos, está retornando o sucesso como '00001 - Sucesso' para ter o correto envio da NFSe para este provedor fiz o seguinte ajuste na unit: ACBr\trunk2\Fontes\ACBrDFe\ACBrNFSeX\Provedores\IPM.Provider.pas - Linha 280 Adicionando o "if ((Codigo <> '00001') and (Codigo <> '00001 - Sucesso')) then", pois caso não haja essa condição gera um erro como "Sucesso", pode verificar na imagem abaixo também. procedure TACBrNFSeProviderIPM.ProcessarMensagemErros( RootNode: TACBrXmlNode; Response: TNFSeWebserviceResponse; const AListTag, AMessageTag: string); var I: Integer; ANode: TACBrXmlNode; ANodeArray: TACBrXmlNodeArray; AErro: TNFSeEventoCollectionItem; aMsg, Codigo: string; begin ANode := RootNode.Childrens.FindAnyNs(AListTag); if (ANode = nil) then ANode := RootNode; ANodeArray := ANode.Childrens.FindAllAnyNs(AMessageTag); if not Assigned(ANodeArray) then Exit; for I := Low(ANodeArray) to High(ANodeArray) do begin Codigo := ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('codigo'), tcStr); aMsg := ACBrStr(ObterConteudoTag(ANodeArray[I].Childrens.FindAnyNs('Mensagem'), tcStr)); { Codigo = 00001 significa que o processamento ocorreu com sucesso, logo não tem erros. } if ((Codigo <> '00001') and (Codigo <> '00001 - Sucesso')) then begin AErro := Response.Erros.New; AErro.Codigo := Codigo; AErro.Descricao := aMsg; AErro.Correcao := ''; end; end; end;
  9. Estamos com um problema ao emitir NFSe com o ACBRNFSeX para o provedor Coplan, alguem já passou por essa situação? O tomador é uma pessoa fisica, se mando retenção retorna que não deve reter, se não mandamos retenção, pede retenção. Cód. do erro: E163 Erro: Aliquota nao informada para retencao do ISSQN no Simples Nacional Correção: Informe um percentual de acordo com o enquadramento na tabela de aliquota do simples nacional. Cód. do erro: X202 Erro: Lista de NFSe não encontrada! (ListaNfse) Correção: Cód. do erro: E243 Erro: Esta NFS-e nao devera ter o ISSQN Retido pelo tomador do servico. Correção: Consulte a legislacao vigente para saber as regras de retencao do ISSQN na fonte e selecione ISS Retido = 2 (NaO). Cód. do erro: X202 Erro: Lista de NFSe não encontrada! (ListaNfse) Correção:
  10. Obrigado pelo retorno como você apresentou está de acordo, só vamos notificar o cliente que solicitou que a descrição fosse "Emitente" que conforme o manual de orientação do contribuinte (MOC) não há essa possibilidade. Agradeço a sua explicação, Salvei o link do MOC para consultas antes de novos questionamentos.
  11. Estamos fazendo o envio de uma NFe, e mesmo preenchendo a tag modFrete como 0 (mfContaEmitente) está imprimindo no DANFE "REMETENTE", conforme imagens abaixo Verificamos que na UNIT "pcnConversaoNFe.pas" existe a função que faz a conversão de Enum to String: function modFreteToDesStr(const t: TpcnModalidadeFrete; versao: TpcnVersaoDF): string; begin case versao of ve200, ve300, ve310: case t of mfContaEmitente : result := '0 - EMITENTE'; mfContaDestinatario : result := '1 - DEST/REM'; mfContaTerceiros : result := '2 - TERCEIROS'; mfProprioRemetente : result := '3 - PROP/REMT'; mfProprioDestinatario : result := '4 - PROP/DEST'; mfSemFrete : result := '9 - SEM FRETE'; end; ve400: case t of mfContaEmitente : result := '0 - REMETENTE'; mfContaDestinatario : result := '1 - DESTINATARIO'; mfContaTerceiros : result := '2 - TERCEIROS'; mfProprioRemetente : result := '3 - PROP/REMT'; mfProprioDestinatario : result := '4 - PROP/DEST'; mfSemFrete : result := '9 - SEM FRETE'; end; end; end; Na primeira linha da ve400 onde descreve "0 - REMETENTE" não deveria ser "0 - EMITENTE" ?
  12. Estava tentando utilizar o ACBR Monitor Plus, pois não sabia que seria possível usar os componentes ACBR dentro da minha DLL. Estava sofrendo com as dependencias de Forms, Graphics e controls dentro da minha aplicação. O problema foi meu aqui mesmo, vi que podemos usar direto os componentes ACBr mesmo na DLL, há como remover estas dependencias utilizando uma diretiva na compilação, por exemplo na unit ACBrSocket.pas que tem: Uses math, StrUtils, synacode, ACBrUtil.Base, ACBrUtil.Strings, ACBrUtil.XMLHTML, synautil {$IFDEF UPDATE_SCREEN_CURSOR} ,Controls, Forms {$ENDIF}; e já está previsto que se não quiser fazer o uses, podemos colocar a diretiva na compilação NOGUI que já faz o undef {$IFDEF NOGUI} {$UNDEF UPDATE_SCREEN_CURSOR} {$ENDIF} Isso resolveu o meu problema, já estava previsto por vocês.
  13. Sim, irei realizar a chamada das funções de NFe / NFCe através de uma DLL que rodará em um apache, como não posso fazer o uses dos fontes do acbr nesta dll devido as units Graphics, Forms, .... pretendo realizar chamadas da DLL para o servidor que estará rodando o ACBR Monitor Plus. Se por acaso você já passou por uma situação semelhante, que precisou usar o acbr em uma dll, e utilizar os próprios fontes do acbr e não monitor plus ou as acbr lib, estou aberto a qualquer sugestão hehehe. Agradeço.
  14. Estou iniciando o uso do ACBrMonitorPlus, e irei utilizar como TCP/IP Já criei o meu exemplo em delphi (conforme exemplo do form que há em lazarus) para envio via socket dos comandos, assistindo o primeiro vídeo, vi que é possível enviar como parâmetro o arquivo, e também é possível o envio do conteúdo de um arquivo ini, como NFCe por exemplo. Meu App Acbr monitor estou fazendo a chamada corretamente? pois estou tendo erro de estrutura de XML. NFe.CriarEnviarNFe("[infNFe] versao=4.0 [Identificacao] natOp=Venda de Mercadoria indPag=0 mod=65 serie=1 nNF=000001021 dEmi=14/09/2018 11:43:00 tpNF=1 Finalidade=0 idDest=1 indFinal=1 indPres=1 tpimp=4 tpAmb=2 [Emitente] CRT=3 CNPJ=33053846000149 IE=260039357 Razao=FORMIGA GUINCHO & ILUMINAR MATERIAIS ELETRICOS LTDA Fantasia=ILUMINAR MATERIAIS ELETRICOS Fone=4991084267 CEP=89840000 Logradouro=AV SANTA CATARINA Numero=1200 Complemento=SALA 01 Bairro=Centro CidadeCod=4204400 Cidade=Coronel Freitas UF=SC [Produto001] CFOP=5102 Codigo=77902 cEAN=SEM GTIN Descricao=KIT INDIVIDUAL NCM=84719012 Unidade=UND Quantidade=1 ValorUnitario=100 ValorTotal=100 ValorDesconto=0,00 vFrete=0,00 vSeg=0,00 vOutro=0,00 indEscala=N CNPJFab=05481336000137 uTrib=UND cEANTrib=SEM GTIN [ICMS001] CSOSN=102 Ori=0 ValorBase=100 Aliquota=10 Valor=10 pCredSN=0,00 vCredICMSSN=0,00 ModalidadeST=4 ValorBaseST=0,00 AliquotaST=0,00 ValorST=0,00 PercentualReducao=0,00 vBCFCP=0 pFCP=0 vFCP=0 [PIS001] CST=01 ValorBase=0,00 Aliquota=0,00 Valor=0,00 [COFINS001] CST=01 ValorBase=0,00 Aliquota=0,00 Valor=0,00 [IPI001] CST=53 ValorBase=0,00 Aliquota=0,00 Valor=0,00 [Total] BaseICMS=100 ValorICMS=10 vICMSDeson=0.00 BaseICMSSubstituicao=0,00 ValorICMSSubstituicao=0,00 ValorProduto=100 ValorFrete=0,00 ValorSeguro=0,00 ValorDesconto=0,00 ValorIPI=0,00 ValorPIS=0,00 ValorCOFINS=0,00 ValorOutrasDespesas=0,00 ValorNota=100 vFCP=0 [DadosAdicionais] infAdFisco= infCpl=Tributos Incidentes Lei Federal 12.741/12 - Total R$00,00 Federal R$00,00 Estadual R$00,00 [Transportador] modFrete=9 [pag001] tPag=01 vPag=100 xPag=Descricao Pagamento vTroco=0 [infRespTec] CNPJ=33462939000127 xContato=VALTAIR GUARNIERI [email protected] fone=49991084267")
  15. O problema era no evento ACBrTEFDPayGoWebObtemCampo Deve haver o onlynumber quando há solicitação da DLL para valores, no meu caso estava retornando virgula, e estava abortando o processo ou não encontrando a venda o código abaixo resolveu o problema. if (AForm.TipoCampo = tcoCurrency) then // PayGoWeb não precisa de ponto decimal Resposta := OnlyNumber(Resposta);
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...