Ir para conteúdo
  • Cadastre-se

carlosmarian

Membros
  • Total de ítens

    235
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que carlosmarian postou

  1. Olá, será que isso pode ajudar? adicionai a conversão no ACBrEPCBlocos.pas. talvez poderia melhorar passando a StrToEnumerado que hj esta no Monitor para o Comuns, mas daí teria mais manutenção. se for necessário posso gerar o código que faz o inverso. ... function StrToSituacaoTribICMS(var ok: boolean; const s: string): TACBrSituacaoTribICMS; function StrToSituacaoTribIPI(var ok: boolean; const s: string): TACBrSituacaoTribIPI; function StrToSituacaoTribPIS(var ok: boolean; const s: string): TACBrSituacaoTribPIS; function StrToSituacaoTribCOFINS(var ok: boolean; const s: string): TACBrSituacaoTribCOFINS; implementation uses Windows; { TOpenBlocos } function StrToEnumerado(var ok: boolean; const s: string; const AString: array of string; const AEnumerados: array of variant): variant; var i: integer; begin result := -1; for i := Low(AString) to High(AString) do if AnsiSameText(s, AString[i]) then result := AEnumerados[i]; ok := result <> -1; if not ok then result := AEnumerados[0]; end; function StrToSituacaoTribICMS(var ok: boolean; const s: string): TACBrSituacaoTribICMS; begin result := StrToEnumerado(ok, s, ['000', '010', '020', '030', '040', '041', '050', '051', '060', '070', '090', '100', '110', '120', '130', '140', '141', '150', '151', '160', '170', '190', '200', '210', '220', '230', '240', '241', '250', '251', '260', '270', '290', '101', '102', '103', '201', '202', '203', '300', '400', '500', '900'], [sticmsTributadaIntegralmente,sticmsTributadaComCobracaPorST,sticmsComReducao,sticmsIsentaComCobracaPorST ,sticmsIsenta, sticmsNaoTributada,sticmsSuspensao ,sticmsDiferimento ,sticmsCobradoAnteriormentePorST ,sticmsComReducaoPorST ,sticmsOutros, sticmsEstrangeiraImportacaoDiretaTributadaIntegralmente ,sticmsEstrangeiraImportacaoDiretaTributadaComCobracaPorST , sticmsEstrangeiraImportacaoDiretaComReducao ,sticmsEstrangeiraImportacaoDiretaIsentaComCobracaPorST,sticmsEstrangeiraImportacaoDiretaIsenta , sticmsEstrangeiraImportacaoDiretaNaoTributada ,sticmsEstrangeiraImportacaoDiretaSuspensao,sticmsEstrangeiraImportacaoDiretaDiferimento, sticmsEstrangeiraImportacaoDiretaCobradoAnteriormentePorST,sticmsEstrangeiraImportacaoDiretaComReducaoPorST, sticmsEstrangeiraImportacaoDiretaOutros ,sticmsEstrangeiraAdqMercIntTributadaIntegralmente ,sticmsEstrangeiraAdqMercIntTributadaComCobracaPorST , sticmsEstrangeiraAdqMercIntComReducao ,sticmsEstrangeiraAdqMercIntIsentaComCobracaPorST,sticmsEstrangeiraAdqMercIntIsenta , sticmsEstrangeiraAdqMercIntNaoTributada ,sticmsEstrangeiraAdqMercIntSuspensao,sticmsEstrangeiraAdqMercIntDiferimento, sticmsEstrangeiraAdqMercIntCobradoAnteriormentePorST,sticmsEstrangeiraAdqMercIntComReducaoPorST,sticmsEstrangeiraAdqMercIntOutros , sticmsSimplesNacionalTributadaComPermissaoCredito ,sticmsSimplesNacionalTributadaSemPermissaoCredito , sticmsSimplesNacionalIsencaoPorFaixaReceitaBruta,sticmsSimplesNacionalTributadaComPermissaoCreditoComST, sticmsSimplesNacionalTributadaSemPermissaoCreditoComST,sticmsSimplesNacionalIsencaoPorFaixaReceitaBrutaComST , sticmsSimplesNacionalImune,sticmsSimplesNacionalNaoTributada ,sticmsSimplesNacionalCobradoAnteriormentePorST ,sticmsSimplesNacionalOutros]); end; function StrToSituacaoTribIPI(var ok: boolean; const s: string): TACBrSituacaoTribIPI; begin result := StrToEnumerado(ok, s, ['00', '01', '02', '03', '04', '05', '49', '50', '51', '52', '53', '54', '55', '99'], [stipiEntradaRecuperacaoCredito, stipiEntradaTributradaZero, stipiEntradaIsenta, stipiEntradaNaoTributada, stipiEntradaImune, stipiEntradaComSuspensao, stipiOutrasEntradas, stipiSaidaTributada, stipiSaidaTributadaZero, stipiSaidaIsenta, stipiSaidaNaoTributada, stipiSaidaImune, stipiSaidaComSuspensao, stipiOutrasSaidas]); end; function StrToSituacaoTribPIS(var ok: boolean; const s: string): TACBrSituacaoTribPIS; begin result := StrToEnumerado(ok, s, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '49', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '67', '70', '71', '72', '73', '74', '75', '98', '99'], [stpisValorAliquotaNormal, stpisValorAliquotaDiferenciada, stpisQtdeAliquotaUnidade, stpisMonofaticaAliquotaZero, stpisValorAliquotaPorST, stpisAliquotaZero, stpisIsentaContribuicao, stpisSemIncidenciaContribuicao, stpisSuspensaoContribuicao, stpisOutrasOperacoesSaida, stpisOperCredExcRecTribMercInt, stpisOperCredExcRecNaoTribMercInt, stpisOperCredExcRecExportacao, stpisOperCredRecTribNaoTribMercInt, stpisOperCredRecTribMercIntEExportacao, stpisOperCredRecNaoTribMercIntEExportacao, stpisOperCredRecTribENaoTribMercIntEExportacao, stpisCredPresAquiExcRecTribMercInt, stpisCredPresAquiExcRecNaoTribMercInt, stpisCredPresAquiExcExcRecExportacao, stpisCredPresAquiRecTribNaoTribMercInt, stpisCredPresAquiRecTribMercIntEExportacao, stpisCredPresAquiRecNaoTribMercIntEExportacao, stpisCredPresAquiRecTribENaoTribMercIntEExportacao, stpisOutrasOperacoes_CredPresumido, stpisOperAquiSemDirCredito, stpisOperAquiComIsensao, stpisOperAquiComSuspensao, stpisOperAquiAliquotaZero, stpisOperAqui_SemIncidenciaContribuicao, stpisOperAquiPorST, stpisOutrasOperacoesEntrada, stpisOutrasOperacoes]); end; function StrToSituacaoTribCOFINS(var ok: boolean; const s: string): TACBrSituacaoTribCOFINS; begin result := StrToEnumerado(ok, s, ['01', '02', '03', '04', '05', '06', '07', '08', '09', '49', '50', '51', '52', '53', '54', '55', '56', '60', '61', '62', '63', '64', '65', '66', '67', '70', '71', '72', '73', '74', '75', '98', '99'], [stcofinsValorAliquotaNormal, stcofinsValorAliquotaDiferenciada, stcofinsQtdeAliquotaUnidade, stcofinsMonofaticaAliquotaZero, stcofinsValorAliquotaPorST, stcofinsAliquotaZero, stcofinsIsentaContribuicao, stcofinsSemIncidenciaContribuicao, stcofinsSuspensaoContribuicao, stcofinsOutrasOperacoesSaida, stcofinsOperCredExcRecTribMercInt, stcofinsOperCredExcRecNaoTribMercInt, stcofinsOperCredExcRecExportacao, stcofinsOperCredRecTribNaoTribMercInt, stcofinsOperCredRecTribMercIntEExportacao, stcofinsOperCredRecNaoTribMercIntEExportacao, stcofinsOperCredRecTribENaoTribMercIntEExportacao, stcofinsCredPresAquiExcRecTribMercInt, stcofinsCredPresAquiExcRecNaoTribMercInt, stcofinsCredPresAquiExcExcRecExportacao, stcofinsCredPresAquiRecTribNaoTribMercInt, stcofinsCredPresAquiRecTribMercIntEExportacao, stcofinsCredPresAquiRecNaoTribMercIntEExportacao, stcofinsCredPresAquiRecTribENaoTribMercIntEExportacao, stcofinsOutrasOperacoes_CredPresumido, stcofinsOperAquiSemDirCredito, stcofinsOperAquiComIsensao, stcofinsOperAquiComSuspensao, stcofinsOperAquiAliquotaZero, stcofinsOperAqui_SemIncidenciaContribuicao, stcofinsOperAquiPorST, stcofinsOutrasOperacoesEntrada, stcofinsOutrasOperacoes]); end; .... Ai ele seria usado similar como é no NFe StrToSituacaoTribCOFINS(lok, QAux.FieldByName('cst').AsString) ; Até mais.
  2. Olá, estou fazendo alguns testes com a impressão do DACTE usando XML, e esta ocorrendo um vazamento de memória. estou somente lendo o xml e visualizando, após isso eu fecho o visualizador e depois de fechar a aplicação aparece a mensagem abaixo: "--------------------------- SII.exe: Vazamento de memória detectado --------------------------- Essa aplicação teve vazamentos de memória. Os vazamentos dos blocos pequenos são (excluindo os vazamentos esperados registrados por ponteiro): 21 - 36 bytes: TMemoryStream x 1 37 - 52 bytes: TQRStream x 1, TQRPageList x 1, TPrinter x 2, UnicodeString x 1 213 - 244 bytes: TPrinterSettings x 1, TQRPrinter x 1 1013 - 1124 bytes: Desconhecida x 3 O tamanho dos vazamentos dos blocos médios e grandes são (excluindo os vazamentos esperados registrados por ponteiro): 123044 Nota: O detalhe do vazamento de memória está logado em um arquivo texto na mesma pasta que essa aplicação. Para desabilitar essa checagem de vazamento de memória, desabilite o DEFINE "EnableMemoryLeakReporting". --------------------------- OK ---------------------------" OpenDialog1.Title := 'Selecione a CT-e'; OpenDialog1.DefaultExt := '*-CTe.XML'; OpenDialog1.Filter := 'Arquivos CTe (*-CTe.XML)|*-CTe.XML|Arquivos XML (*.XML)|*.XML|Todos os Arquivos (*.*)|*.*'; OpenDialog1.InitialDir := GCTe.Configuracoes.Geral.PathSalvar; if OpenDialog1.Execute then begin GCTe.Conhecimentos.Clear; GCTe.Conhecimentos.LoadFromFile(OpenDialog1.FileName); GCTe.Conhecimentos.Imprimir; end; Log em anexo.
  3. Bom dia, Fazendo alguns testes aqui, encontrei um pequeno ponto onde tive um vazamento de memória. Quando é efetuada a leitura do XML (TNotasFiscais.LoadFromFile), caso exista alguma erro no arquivo passado como parâmetro ele não libera a memória alocada para a leitura do arquivo. Quando alguém estiver revisando alguma coisa neste fonte(ACBrNFeNotasFiscais.pas), por favor só coloca o trecho abaixo do ArquivoXML := TStringList.Create;, um try e antes do except coloca um finally liberando a memória. Obrigado pela atenção. At+
  4. Boa tarde, Estou com um problema na validação do CNPJ na leitura do arquivo de retorno(TACBrCaixaEconomicaSICOB.LerRetorno240) do ACBrCaixaEconomicaSICOB. No layout que encontrei, diz que este campo tem 15 posições(19 até 33), conforme esta implementado no Acbr, mas depois de ler o CNPj o ACBr faz a validação do CNPJ ao atribuir esta informação para a classe Cedente(TACBrValidador.ValidarCNPJ), e lá ele gera erro caso o CNPJ não tiver 14 posições. Hoje ele esta lendo as 15 posições e passando para a rotina validar, ai gera exceção. Rotina que extrai o cnpj do arquivo rCNPJCPF := trim( Copy(ARetorno[1],19,15)) ; Na atribuição ele chama a validação(TACBrCedente.SetCNPJCPF) Cedente.CNPJCPF := rCNPJCPF; at+
  5. Resolvido. Obrigado pela alteração Daniel.
  6. Bom dia, a principio na ACBrValidador a rotina de validação ainda esta com os critérios antigos. at+
  7. Olá, não testei para estes dois estados pq não temos clientes lá, ainda. mas pelo log de alteração(SVN) no fonte ACBrValidador, não tivemos revisões nestas rotinas desde outubro de 2010. obs: em 05/10/2010 foi alterada a regra de RN para tratar IE com 10 dígitos.
  8. Não encontrei revisão nos fontes do UValidador.pas referente a esta nova regra de BA.
×
×
  • 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.