Painel de líderes
Conteúdo popular
Showing content with the highest reputation on 23-10-2024 em todas as áreas
-
Bom dia pessoal tudo bem? Estou implementando o CTe simplificado substituto e me deparei com um problema na hora de alimentar as tags do XML, ao tentar emitir o CT-e retorna o erro: Analisado o XML realmente não gerou as tags de infCteSub (XML em anexo), debugando identifiquei que no componente não está alimentando essas tags porque verifica apenas se o CT-e é tcSubstituto, porém como é simplificado ele é tcSubstCTeSimpl. Na Use pcteCTeW na procedure "TCTeW.GerarInfCTeSub" tem uma verificação procedure TCTeW.GerarInfCTeSub(infCTeSub: TInfCteSub); begin if CTe.Ide.tpCTe = tcSubstituto then begin Mudei o if para if CTe.Ide.tpCTe in [tcSubstituto, tcSubstCTeSimpl] then e funcionou corretamente gerando as tags de infCteSub. Poderiam verificar por favor? Muito obrigado. 42241003916076000400570990000066731535293387-cte.xml2 pontos
-
No Software espandimos o campo de ItemLista para ficar igual a prefeitura e o codigo de tributação com os pontos adionados. O restante foi o o suporte da prefeitura que foi fazendo os ajustes. <ItemListaServico>04.07.00</ItemListaServico> <CodigoCnae>4771702</CodigoCnae> <CodigoTributacaoMunicipio>04.07.00</CodigoTributacaoMunicipio> Anexei o xml autorizado espero que possa ajudar. Grata pelo auxilio. <ItemListaServico>04.07.00</ItemListaS ervico> <CodigoCnae>4771702</CodigoCnae> <CodigoTributacaoMunicipio>04.07.00</CodigoTributacaoMunicipio> 1022UNICA-nfse.xml2 pontos
-
Anexo componente atualizado para a versão 1.3 e programa exemplo. Todos os eventos modificados foram testados através da geração e validação no programa exemplo. Os eventos S-5001, S-5002, S-5003 e S-5011 foram modificados e não testados. ACBreSocial.zip Programa Exemplo.zip XSD veS01_03_00.zip O programa exemplo em Delphi foi sem o arquivo dpr. Programa Exemplo.zip1 ponto
-
humm.. isso é uma falta de declaração de uma Unit.. Simples de corrigir, mas precisa de recompilação @Diego Foliene, veja esse link: https://wiki.freepascal.org/Multithreaded_Application_Tutorial#Units_needed_for_a_multi-threaded_application1 ponto
-
1 ponto
-
Daniel, eu verifico no log de retorno e não consta nada referente ao pagamento do boleto, vou passar para o banco.1 ponto
-
Por favor atualize seus fontes, pelo SVN do ACBr... Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico... Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido... Dúvidas, sobre o uso do SVN ? Clique aqui e veja um vídeo1 ponto
-
Ola, Quando você usa o botão avanço no painel a impressora ela pula corretamente as etiquetas?1 ponto
-
Da forma q esta so vai funcionar pelo consultaDetalhe... Criado a TK-6154 para analise e correção1 ponto
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.1 ponto
-
Consegui reinstalar. Tinha arquivos do Fastreport numa outra pasta que estava dando conflito. Removi os arquivos, apaguei os paths, reinstalei tudo do zero e funcionou. Vou tentar rodar meu sistema com o trunk 2 depois. Pode fechar o tópico. Obrigado Juliomar1 ponto
-
Conseguimos resolver trocando o serviço de internet. Uma das operadoras estava bloqueado a comunicação.1 ponto
-
1 ponto
-
Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico.1 ponto
-
Bom dia, Problema identificado. Drive de CH340, do conversor USBxRS232. O driver mais recente de 2023, que é o instalado automaticamente pelo windows 11, apresenta o problema relatado acima. Solucionamos utilizando um driver CH340 instalável, versão de 2019, através de um executável. Vou disponibilizar no link abaixo, caso mais alguém esteja com problemas neste conversor. DRIVER CH3401 ponto
-
Grato, resolvido. PS. Só para informação: a noite houve um retorno da Sefaz MT, pedindo para verificar se o problema estava resolvido. parece que era algo errado por lá. de qualquer forma vou deixar com estas alterações efetuadas.1 ponto
-
Ok obrigado amigos vou migrar caso tenha problema para Rio Preto vou pedindo ajuda aqui1 ponto
-
Boa tarde! Muito obrigado pela contribuição.1 ponto
-
Boa tarde, Tá temos a TK-5666-1 para essa implementação. Anexei este tópico para referencia. Obrigado pela contribuição.1 ponto
-
Obrigado @Italo Giurizzato Junior Isso vai nos ajudar bastante porque como o cte simplificado já está em produção, vai ser necessário um documento fiscal impresso para poder circular com a mercadoria. Agradeço a atenção!1 ponto
-
Boa tarde @C4Dev, Muito obrigado pela colaboração, já foi criado a TK-6144 a analise.1 ponto
-
Boa tarde! Que bom que deu certo de encontrar a solução do problema! Por favor, se possível, compartilhe qual foi a solução para que possa ajudar outros membros que possam vir a enfrentar o mesmo problema futuramente.1 ponto
-
Boa tarde! Por favor, faça um teste lendo de: ACBrCTe.WebServices.Enviar.dhRecto; ACBrCTe.webServices.Enviar.Protocolo; //Se as propriedades acima estiverem vazias, tente: ACBrCTe.WebServices.Enviar.CTeRetornoSincrono.dhRecbto; ACBrCTe.WebServices.Enviar.CTeRetornoSincrono.chCTe; //Em última instância: ACBrCTe.WebServices.Enviar.CTeRetornoSincrono.protCTe.dhRecbto; ACBrCTe.WebServices.Enviar.CTeRetornoSincrono.protCTe.chDFe;1 ponto
-
1 ponto
-
Bom dia, @Atalias Estou com o mesmo problema de TimeOut em Jundiaí, conseguiu uma resolução pra esse caso? Até um tempo atrás o WSDL do endereço https://ws-jundiai.giss.com.br/service-ws/nf/nfse-ws?wsdl abria normalmente no navegador com um certificado configurado e agora já não abre mais, acredito que possa estar relacionado. Questionei ao suporte da Eicon o motivo do WSDL não estar mais funcionando e disseram que é porque não estou utilizando o certificado, mesmo que eu esteja.1 ponto
-
Bom dia! Sim. Fiz um teste em meu ambiente e também tive problemas carregando o arquivo XML que disponibilizou. Em uma análise inicial o que pude observar é: 1º O problema só ocorre com o LoadFromFile, utilizando o LoadFromString ele abriu normal aqui. 2º O problema ocorre, porque quando é feito o LoadFromFile, a string lida tem alguns elementos a mais: Isso faz com que depois de passar por um processo para extrair o XML que fato será lido, removendo tags como <?xml version="1.0" encoding="UTF-8"?> ou <nfeProc>, a string resultante seja um arquivo XML quebrado: 3º Estes caracteres a mais que são lidos, é o BOM do XML. Se você abrir o seu arquivo com o notedpad++ e selecionar no menu "Formatar", vai ver que ele está como "Codificação em UTF-8 BOM". Neste mesmo menu, ao selecionar a opção "Codificação em UTF-8" e depois selecionar a opção "Converter para UTF-8", o arquivo XML foi lido pelo LoadFromFile sem apresentar problemas. Foi criada #TK-6139 para análise do caso e parecer por parte da equipe de consultores. Qualquer novidade será divulgada aqui. Durante este meio tempo, se possível, peço que utilize as sugestões propostas acima.1 ponto
-
Olá pessoal! O comportamento da quebra de linha nos impressos do ACBr será alterado! Como é hoje? Atualmente os impressos do ACBr fazem uso do caractere de ponto e vírgula para quebra de linha. Isso quer dizer que se o seu XML tiver um conteúdo como este: <infCpl>Teste Linha 1; Teste Linha 2 ;; Teste Linha 3 </infCpl> No momento em que for impresso, o conteúdo fica desta forma: Teste Linha1 Teste Linha2 Teste Linha3 No entanto, entendemos que ao manter fixo o ponto e vírgula, limitamos as possibilidades no momento de criar a informação. Se o cliente solicitasse que aparecesse o ponto e vírgula no impresso, não importa quantas vezes fosse adicionado o mesmo, só iria quebrar a linha. Por isso, este comportamento foi alterado. Como ficou? Os componentes de documentos fiscais possuem uma configuração chamada QuebraDeLinha em sua classe de web service. Esta configuração será utilizada ao invés do ponto e vírgula, fornecendo uma maior variedade de customização. Com isso, será possível definir o caractere que deseja para usar como quebra de linha. Em um exemplo, vamos considerar que desejo que o caractere de quebra seja \r\n. Para isso, vou definir a configuração desta forma: ACBrDFe.Configuracoes.WebServices.QuebraDeLinha := '\r\n'; Definindo a configuração desta forma, o conteúdo: <infCpl>Teste Linha 1; Teste Linha 2 ;; Teste Linha 3 </infCpl> Vai ser exibido no impresso: Teste Linha 1; Teste Linha 2 ;; Teste Linha 3 E caso eu queira que seja feita a quebra de linha vou precisar alterar o conteúdo para: <infCpl>Teste Linha 1\r\n Teste Linha 2 \r\n\r\n Teste Linha 3 </infCpl> Para que seja exibido: Teste Linha1 Teste Linha2 Teste Linha3 E se eu uso o ACBrMonitor ou a Lib, onde vou definir a configuração? Caso utilize a Lib, basta alterar a configuração QuebradeLinha no arquivo de configurações ACBrLib.ini. No exemplo da NFe que foi mencionado seria: [NFe] QuebradeLinha= Caso utilize o ACBrMonitorPLUS, foi adicionada uma config na aba DFe > WebServices > Configurações. Quais componentes se espera que sejam afetados por esta mudança? Os seguintes componentes serão modificados: ACBrBPe. ACBrCTe. ACBrMDFe. ACBrNF3e. ACBrNFe. Quais componentes já está em vigor a alteração? Até o presente momento foram alterados os impressos dos componentes: ACBrNFe. ACBrCTe. ACBrMDFe. Este tópico será atualizado a medida que os demais componentes forem atualizados. Porque isso é importante para mim? Neste processo de padronização, foi definido que será utilizado esta propriedade de quebra de linha e também foi decidido que o valor default para quebra será o pipe(este carinha aqui: | ). Isso acarreta uma mudança de comportamento. O ponto e vírgula, não vai mais quebrar linha a menos que seja definido ele na propriedade.1 ponto
-
Aqui pra mim estava dando o mesmo erro com Windows 11 no cliente e na minha maquina com o certificado A3, e consegui resolver da seguinte forma: 1- Vá até o Painel de Controle do Windows. 2- Escolha a Opção "Opções da Internet"; 3- Vá até a aba “Avançadas”; 4- No bloco “Configurações”, vá até as últimas opções e deixe configurado como na imagem abaixo: 5- Vá em executar, digite certlm.msc para abrir a interface de certificados, caso esse comando não funcione, utilize o comando certmgr.msc. Remova estes certificados listados na imagem abaixo: 6- Execute como Administrador o InstaladorCadeias_1.0.2.0.exe, clique em Instalar e aguarde até que o processo seja finalizado. 7- Execute o FixCrypto_TLS1_2_Windows.reg. 8- Descompacte o CA.zip e execute o ac soluti ssl ev.cer e o Raiz-icp-brasil v10.cer. 9- Reinicie a máquina e teste novamente a comunicação com a Sefaz.1 ponto
-
Olá! Recentemente houve a necessidade por parte de meus clientes de uma forma mais detalhada de auditoria de inserções, atualizações e deleções de informações. Depois de muita dedicação consegui uma estrutura de fácil manuseio para aqueles que utilizam o FireBird da versão 2.5 em diante. A auditoria é feita em uma database externa, dessa forma o banco de dados continua independente e não sofre uma expansão referente a esses dados. Fato importante é que o banco da empresa não é afetado com possíveis exceções provenientes do banco de auditoria, ou seja, caso algo dê errado externamente o fluxo de dados na empresa não é afetado. Segue procedimento: 1) Criar banco de dados para auditoria (LOGGERAL.FDB). 2) Criação das tabelas de auditoria, etc: CREATE GENERATOR GEN_LOGOPERACAO_ID; CREATE TABLE LOGOPERACAO ( CD_LOGOPERACAO BIGINT NOT NULL, DS_TABELA VARCHAR(31) NOT NULL, FG_OPERACAO CHAR(1) NOT NULL, CD_USUARIO VARCHAR(10) NOT NULL, DT_OPERACAO TIMESTAMP NOT NULL, DS_CHAVE VARCHAR(255) NOT NULL ); ALTER TABLE LOGOPERACAO ADD CONSTRAINT PK_LOGOPERACAO PRIMARY KEY (CD_LOGOPERACAO); SET TERM ^ ; /* Trigger: LOGOPERACAO_BI */ CREATE OR ALTER TRIGGER LOGOPERACAO_BI FOR LOGOPERACAO ACTIVE BEFORE INSERT POSITION 0 as begin if (new.cd_logoperacao is null) then new.cd_logoperacao = gen_id(gen_logoperacao_id,1); end ^ SET TERM ; ^ CREATE GENERATOR GEN_LOGDATA_ID; CREATE TABLE LOGDATA ( CD_LOGDATA BIGINT NOT NULL, CD_LOGOPERACAO BIGINT NOT NULL, DS_CAMPO VARCHAR(31) NOT NULL, DS_OLD VARCHAR(4000), DS_NEW VARCHAR(4000) ); ALTER TABLE LOGDATA ADD CONSTRAINT PK_LOGDATA PRIMARY KEY (CD_LOGDATA); ALTER TABLE LOGDATA ADD CONSTRAINT FK_LOGDATA_LOGOPERACAO FOREIGN KEY (CD_LOGOPERACAO) REFERENCES LOGOPERACAO (CD_LOGOPERACAO); SET TERM ^ ; /* Trigger: LOGDATA_BI */ CREATE OR ALTER TRIGGER LOGDATA_BI FOR LOGDATA ACTIVE BEFORE INSERT POSITION 0 as begin if (new.cd_logdata is null) then new.cd_logdata = gen_id(gen_logdata_id,1); end ^ SET TERM ; ^ Explicações rápidas: 1) A tabela LOGOPERACAO registra: qual tabela (DS_TABELA) passou por uma inserção (FG_OPERACAO = 'I'), atualização (FG_OPERACAO = 'U') ou deleção (FG_OPERACAO = 'D'), qual foi o usuário responsável (CD_USUARIO), quando ocorreu a operação (DT_OPERACAO), e qual foi a PK (DS_CHAVE) afetada. 2) Vocês vão perceber que nesse processo não importa quantas chaves primárias sua tabela tem, pois o código foi pensado para concatenar as chaves separadas por pipe ('|'). 3) A tabela LOGDATA armazena informações mais detalhadas sobre a LOGOPERACAO. Nesse caso seus registros contemplam qual foi o campo afetado na tabela (DS_CAMPO) apresentando seu valor antigo (DS_OLD) e o novo (DS_NEW). 3) Criação das procedures para auditoria no banco da empresa: SET TERM ^ ; create or alter procedure PROC_LOG ( DS_TABELA varchar(31) not null) as declare variable "TYPE" smallint; declare variable DS_CAMPO varchar(31); declare variable SQL varchar(32765); declare variable AUXOPERACAO varchar(255); declare variable DS_CHAVEAUX varchar(31); declare variable DS_CHAVENEW varchar(255); declare variable DLL blob sub_type 1 segment size 256; declare variable DS_CHAVEOLD varchar(255); begin if (user = 'BACKUP') then exit; sql = ''; ds_chavenew = ''; ds_chaveold = ''; auxoperacao = ''; dll = ''; for select upper(trim(F.RDB$FIELD_NAME)), FS.RDB$FIELD_TYPE from RDB$RELATION_FIELDS F left join RDB$FIELDS FS on FS.RDB$FIELD_NAME = F.RDB$FIELD_SOURCE where F.RDB$RELATION_NAME = :ds_tabela order by F.RDB$FIELD_POSITION into :ds_campo, :type do begin if ((:type <> 261) and (:ds_campo not in ('CD_USRINCALT', 'DT_INCALT'))) then /* IGNORAR 261 = BLOB */ begin sql = sql || ' if (new.' || :ds_campo || ' is distinct from old.' || :ds_campo || ') then' || ascii_char(13) || ' execute procedure proc_logdata(' || ascii_char(13) || ' :cd_logoperacao, ' || ascii_char(13) || ' ''' || :ds_campo || ''',' || ascii_char(13) || ' old.' || :ds_campo || ',' || ascii_char(13) || ' new.' || :ds_campo || ');' || ascii_char(13); end end auxoperacao = ' if (inserting) then fg_operacao = ''I'';' || ascii_char(13) || ' else if (updating) then fg_operacao = ''U'';' || ascii_char(13) || ' else if (deleting) then fg_operacao = ''D'';' || ascii_char(13); for select trim(I.RDB$FIELD_NAME) from RDB$RELATION_CONSTRAINTS RC join RDB$INDEX_SEGMENTS I on (I.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) join RDB$INDICES IDX on (IDX.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) where (RC.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') and (RC.RDB$RELATION_NAME = :ds_tabela) order by I.RDB$FIELD_POSITION into :ds_chaveaux do begin ds_chavenew = ds_chavenew || 'new.' || :ds_chaveaux || '||''|''||'; ds_chaveold = ds_chaveold || 'old.' || :ds_chaveaux || '||''|''||'; end ds_chavenew = substring(ds_chavenew from 1 for char_length(ds_chavenew) - 7); ds_chaveold = substring(ds_chaveold from 1 for char_length(ds_chaveold) - 7); dll = 'CREATE OR ALTER TRIGGER LOG_' || :ds_tabela || ' for ' || :ds_tabela || ascii_char(13) || 'ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 32767' || ascii_char(13) || 'as' || ascii_char(13) || ' declare variable fg_operacao char(1) = null;' || ascii_char(13) || ' declare variable cd_logoperacao bigint;' || ascii_char(13) || 'begin' || ascii_char(13) || auxoperacao || ascii_char(13) || ' if (:fg_operacao is null) then exit;' || ascii_char(13) || ascii_char(13) || ' if (:fg_operacao = ''I'') then' || ascii_char(13) || ' execute procedure proc_logoperacao(' || ascii_char(13) || ' ''' || :ds_tabela || ''',' || ascii_char(13) || ' ''I'',' || ascii_char(13) || ' ' || :ds_chavenew || ')' || ascii_char(13) || ' returning_values :cd_logoperacao;' || ascii_char(13) || ' else' || ascii_char(13) || ' execute procedure proc_logoperacao(' || ascii_char(13) || ' ''' || :ds_tabela || ''',' || ascii_char(13) || ' :fg_operacao,' || ascii_char(13) || ' ' || :ds_chaveold || ')' || ascii_char(13) || ' returning_values :cd_logoperacao;' || ascii_char(13) || ascii_char(13) || sql || ascii_char(13) || ' when any do' || ascii_char(13) || ' begin' || ascii_char(13) || ascii_char(13) || ' end' || ascii_char(13) || 'end'; if (sql <> '') then execute statement :dll; end^ SET TERM ; ^ SET TERM ^ ; create or alter procedure PROC_LOGOPERACAO ( DS_TABELA varchar(31) not null, FG_OPERACAO char(1) not null, DS_CHAVE varchar(255) not null) returns ( CD_LOGOPERACAO bigint) as declare variable SQL varchar(16384); begin sql = 'insert into logoperacao(' || 'ds_tabela, ' || 'fg_operacao, ' || 'cd_usuario, ' || 'dt_operacao, ' || 'ds_chave) ' || 'values(' || ':ds_tabela, ' || ':fg_operacao, ' || ':cd_usuario, ' || ':dt_operacao, ' || ':ds_chave) ' || 'returning ' || 'cd_logoperacao'; execute statement (:sql) ( ds_tabela := :ds_tabela, fg_operacao := :fg_operacao, cd_usuario := user, dt_operacao := current_timestamp, ds_chave := :ds_chave) on external 'c:\sysfire\loggeral.fdb' as user 'SYSDBA' password 'sys@#$' with common transaction into :cd_logoperacao; end^ SET TERM ; ^ SET TERM ^ ; create or alter procedure PROC_LOGDATA ( CD_LOGOPERACAO bigint not null, DS_CAMPO varchar(31) not null, DS_OLD varchar(4000), DS_NEW varchar(4000)) as declare variable SQL varchar(16384); begin sql = 'insert into logdata(' || 'cd_logoperacao, ' || 'ds_campo, ' || 'ds_old, ' || 'ds_new) ' || 'values(' || ':cd_logoperacao, ' || ':ds_campo, ' || ':ds_old, ' || ':ds_new)'; execute statement (:sql) ( cd_logoperacao := :cd_logoperacao, ds_campo := :ds_campo, ds_old := :ds_old, ds_new := :ds_new) on external 'c:\sysfire\loggeral.fdb' as user 'SYSDBA' password 'sys@#$' with common transaction; end^ SET TERM ; ^ Explicações rápidas: 1) A PROC_LOGOPERACAO insere os registros no banco externo na tabela LOGOPERACAO. 2) A PROC_LOGDATA insere os registros no banco externo na tabela LOGDATA. 3) A PROC_LOG gera automaticamente uma trigger para after insert, update e delete (na última posição possível 32767) em uma tabela que seja necessário a auditoria. Aqui não importa quais são os campos da tabela, a geração é autônoma e independe do tipo, tamanho, etc. 3.1) Caso a tabela possua campos tipo BLOB (261) eles serão ignorados. 3.2) Se for necessário auditar campos VARCHAR com tamanho superior a 4000 será necessário rever a criação da tabela LOGDATA e da procedure PROC_LOGDATA pois na forma atual esse é o limite (o maior campo da minha estrutura de dados possui 4000 posições, esse é o motivo da minha escolha). 3.3) Os campos CD_USRINCALT e DT_INCALT estão sendo ignorados pois fazem parte das minhas tabelas e não precisam ser auditados, retirar ou deixá-los no código não afetará em nada no funcionamento. Caso existam campos que você quer ignorar, faça a inserção manual no código, a mesma coisa para tipos de campos, atualmente apenas BLOB é ignorado (você pode pesquisar no fonte para ver os códigos referentes a outros tipos). 4) Na PROC_LOGOPERACAO e PROC_LOGDATA verificar o caminho do banco de auditoria, como teste está fixo c:\sysfire\loggera.fdb. Verificar também a senha do user master SYSDBA, pois a conexão com o banco externo será feita por ele. Após realizar os passos acima só será necessário escolher as tabelas que precisam ser auditadas e chamar a PROC_LOG para geração das triggers (o nome da tabela deve ser exato, com letras maiúsculas e minúsculas, caso seja informada uma tabela que não existe em sua database uma exceção é lançada). execute procedure PROC_LOG('nome_da_tabela'); A partir daqui qualquer tipo de insert, update e delete nas tabelas executas com a PROC_LOG vão gerar registros no banco de auditoria. Bom proveito, obrigado! Edit1: caso uma tabela que já está sendo auditada sofra alterações de campos (novos campos ou drop de campos antigos) é só fazer a chamadada mesma com a PROC_LOG que as triggers serão atualizadas automaticamente. Processo fácil e rápido para manutenção.1 ponto