Ir para conteúdo
  • Cadastre-se

Rodrigo - Digibyte

Membros Pro
  • Total de ítens

    337
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Rodrigo - Digibyte postou

  1. O Isaque conseguiu "captar" extamente o que eu quiz dizer. Se decidirem mudar eu me proponho a fazer isso, é só avisar.
  2. Boa tarde. Alguns dias atrás estava com uma dúvida em relação a utilização do acbr e foi respondida minha dúvida nesse link: viewtopic.php?f=12&t=2162 Hoje porém estou vendo que isto não é uma solução correta pra muitos casos. Por exemplo os campos CST_PIS e CST_COFINS não tem os códigos numerados a partir do zero em sequência (0, 1, 2, 3, etc) portanto se eu utilizar CST_COFINS := TAcbrSituacaoTribCofins(sp_c185.FieldByName('CST_COFINS').AsInteger) pra puxar o valor do baco de dados não vai funcionar. Quando o BD retornar "01" que é alíquota normal o acbr vai retornar "02" que é alíquota diferenciada. Perguntas: Por que criar um tipo específico (ex. TACBrSituacaoTribCOFINS) ao invés de simplesmente ler o valor que o banco de dados retorna? Não seria muito mais fácil? Qual a solução pra isso? Abrir cada classe a ser utilizada e fazer um "case" ou "if" gigante pra converter os valores em tipos do acbr? case CST_COFINS of stcofinsValorAliquotaNormal : strCST_COFINS := '01'; stcofinsValorAliquotaDiferenciada : strCST_COFINS := '02'; stcofinsQtdeAliquotaUnidade : strCST_COFINS := '03'; stcofinsMonofaticaAliquotaZero : strCST_COFINS := '04'; stcofinsValorAliquotaPorST : strCST_COFINS := '05'; stcofinsAliquotaZero : strCST_COFINS := '06'; stcofinsIsentaContribuicao : strCST_COFINS := '07'; stcofinsSemIncidenciaContribuicao : strCST_COFINS := '08'; stcofinsSuspensaoContribuicao : strCST_COFINS := '09'; stcofinsOutrasOperacoesSaida : strCST_COFINS := '49'; stcofinsOperCredExcRecTribMercInt : strCST_COFINS := '50'; stcofinsOperCredExcRecNaoTribMercInt : strCST_COFINS := '51'; stcofinsOperCredExcRecExportacao : strCST_COFINS := '52'; stcofinsOperCredRecTribNaoTribMercInt : strCST_COFINS := '53'; stcofinsOperCredRecTribMercIntEExportacao : strCST_COFINS := '54'; stcofinsOperCredRecNaoTribMercIntEExportacao : strCST_COFINS := '55'; stcofinsOperCredRecTribENaoTribMercIntEExportacao : strCST_COFINS := '56'; stcofinsCredPresAquiExcRecTribMercInt : strCST_COFINS := '60'; stcofinsCredPresAquiExcRecNaoTribMercInt : strCST_COFINS := '61'; stcofinsCredPresAquiExcExcRecExportacao : strCST_COFINS := '62'; stcofinsCredPresAquiRecTribNaoTribMercInt : strCST_COFINS := '63'; stcofinsCredPresAquiRecTribMercIntEExportacao : strCST_COFINS := '64'; stcofinsCredPresAquiRecNaoTribMercIntEExportacao : strCST_COFINS := '65'; stcofinsCredPresAquiRecTribENaoTribMercIntEExportacao : strCST_COFINS := '66'; stcofinsOutrasOperacoes_CredPresumido : strCST_COFINS := '67'; stcofinsOperAquiSemDirCredito : strCST_COFINS := '70'; stcofinsOperAquiComIsensao : strCST_COFINS := '71'; stcofinsOperAquiComSuspensao : strCST_COFINS := '72'; stcofinsOperAquiAliquotaZero : strCST_COFINS := '73'; stcofinsOperAqui_SemIncidenciaContribuicao : strCST_COFINS := '74'; stcofinsOperAquiPorST : strCST_COFINS := '75'; stcofinsOutrasOperacoesEntrada : strCST_COFINS := '98'; stcofinsOutrasOperacoes : strCST_COFINS := '99'; end;
  3. O CFOP está declarado de forma diferente conforme abaixo: Nos registros c181/c185 o CFOP é string. Nos registros c191/c195 o CFOP é integer.
  4. Aqui não estava gerando o registro M410, filho do 400. Comparei com o 800/810 e existe a diferença destacada abaixo, a não ser que seja por algum motivo específico creio que seja um erro. procedure TBloco_M.WriteRegistroM400(RegM001: TRegistroM001) ; var intFor : integer; strCST_PIS : AnsiString; begin if Assigned(RegM001.RegistroM400) then begin for intFor := 0 to RegM001.RegistroM400.Count - 1 do begin with RegM001.RegistroM400.Items[intFor] do begin case CST_PIS of stpisValorAliquotaNormal : strCST_PIS := '01'; stpisValorAliquotaDiferenciada : strCST_PIS := '02'; stpisQtdeAliquotaUnidade : strCST_PIS := '03'; stpisMonofaticaAliquotaZero : strCST_PIS := '04'; stpisValorAliquotaPorST : strCST_PIS := '05'; stpisAliquotaZero : strCST_PIS := '06'; stpisIsentaContribuicao : strCST_PIS := '07'; stpisSemIncidenciaContribuicao : strCST_PIS := '08'; stpisSuspensaoContribuicao : strCST_PIS := '09'; stpisOutrasOperacoesSaida : strCST_PIS := '49'; stpisOperCredExcRecTribMercInt : strCST_PIS := '50'; stpisOperCredExcRecNaoTribMercInt : strCST_PIS := '51'; stpisOperCredExcRecExportacao : strCST_PIS := '52'; stpisOperCredRecTribNaoTribMercInt : strCST_PIS := '53'; stpisOperCredRecTribMercIntEExportacao : strCST_PIS := '54'; stpisOperCredRecNaoTribMercIntEExportacao : strCST_PIS := '55'; stpisOperCredRecTribENaoTribMercIntEExportacao : strCST_PIS := '56'; stpisCredPresAquiExcRecTribMercInt : strCST_PIS := '60'; stpisCredPresAquiExcRecNaoTribMercInt : strCST_PIS := '61'; stpisCredPresAquiExcExcRecExportacao : strCST_PIS := '62'; stpisCredPresAquiRecTribNaoTribMercInt : strCST_PIS := '63'; stpisCredPresAquiRecTribMercIntEExportacao : strCST_PIS := '64'; stpisCredPresAquiRecNaoTribMercIntEExportacao : strCST_PIS := '65'; stpisCredPresAquiRecTribENaoTribMercIntEExportacao : strCST_PIS := '66'; stpisOutrasOperacoes_CredPresumido : strCST_PIS := '67'; stpisOperAquiSemDirCredito : strCST_PIS := '70'; stpisOperAquiComIsensao : strCST_PIS := '71'; stpisOperAquiComSuspensao : strCST_PIS := '72'; stpisOperAquiAliquotaZero : strCST_PIS := '73'; stpisOperAqui_SemIncidenciaContribuicao : strCST_PIS := '74'; stpisOperAquiPorST : strCST_PIS := '75'; stpisOutrasOperacoesEntrada : strCST_PIS := '98'; stpisOutrasOperacoes : strCST_PIS := '99'; end; Add( LFill('M400') + LFill( strCST_PIS ) + LFill( VL_TOT_REC,0,2 ) + LFill( COD_CTA ) + LFill( DESC_COMPL ) ) ; end; // Registros FILHOS WriteRegistroM410( RegM001.RegistroM400.Items[intFor] ); ********* faltavam as duas linhas acima destacadas em vermelho *********** /// RegistroM990.QTD_LIN_M := RegistroM990.QTD_LIN_M + 1; end; /// Variavél para armazenar a quantidade de registro do tipo. FRegistroM400Count := FRegistroM400Count + RegM001.RegistroM400.Count; end; end;
  5. Quando instalei o demo também observei alguns erros. Agora está corrido mas assim que der um tempinho (alguns dias) e ninguém fizer mando um demo atualizado.
  6. As áreas de sintegra, pis/cofins, fiscal, etc poderiam ser separadas
  7. O meu gera vazio, será que seu acbr está atualizado?
  8. Aqui gera normal, creio que os zeros estão retornando do seu banco de dados. Para quem é de fora informe em branco ( '' ).
  9. Muito obrigado, isso mesmo que precisava, esqueçi que poderia usar o cast
  10. Olá, estou começando a usar o AcbrPisCofins e surgiu uma dúvida a respeito de sua implementação no delphi. Por exemplo, o registro 0200, vejam meu código: with ACBrSPEDPisCofins1.Bloco_0.Registro0200New do begin COD_ITEM := sp_0200.FieldByName('COD_ITEM').AsString; DESCR_ITEM := sp_0200.FieldByName('DESCR_ITEM').AsString; TIPO_ITEM := sp_0200.FieldByName('TIPO_ITEM').AsString; end; Claro, a linha destacada retornou erro pois TIPO_ITEM não é TString, é TAcbrTipoItem. Consultando os fontes achei no código abaixo os valores válidos para TIPO_ITEM, então bastaria informar corretamente ( case TIPO_ITEM of tiMercadoriaRevenda : strTIPO_ITEM := '00'; tiMateriaPrima : strTIPO_ITEM := '01'; tiEmbalagem : strTIPO_ITEM := '02'; etc ) Minhas perguntas: Porque não é utilizado no componente o valor (em string por ex.) já definido no manual, não seria mais lógico e fácil? (apenas uma curiosidade sobre o funcionamento do Acbr) Terei que fazer um "case ao contrário" para converter as string retornada do banco de dados em TAcbrTipoItem, existe uma forma mais "inteligente" pra resolver essa questão? Isso aconteçe com vários outros tipos do Acbr... Obs: encontrei alguns erros no projeto de exemplo, vou atualizar o Acbr e se ainda estiverem lá espero contribuir com a correção.
×
×
  • 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...