Ir para conteúdo
  • Cadastre-se

Rodrigo - Digibyte

Membros Pro
  • Total de ítens

    284
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por Rodrigo - Digibyte

  1. 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;

  2. 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.