Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3468 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde

 

Estou com o seguinte problema, ao gerar o XML do CTe, passo por exemplo a "CST 90" ou "CST 90 outras UFs" e no xml fica consta CST 00. Isso independentemente se for dentro ou fora do estado.

 

Utilizo dessa forma:

         with Imp.ICMS do
         begin                                                                  
           if qryCTe.FieldByName('CTE_CST').AsString = '00' then
           begin
             ICMS00.CST   := cst00;                                             
             ICMS00.vBC   := qryCTe.FieldByName('CTE_BASE_ICMS').AsFloat;
             ICMS00.pICMS := qryCTe.FieldByName('CTE_ALIC_ICMS').AsFloat;
             ICMS00.vICMS := qryCTe.FieldByName('CTE_VALOR_ICMS').AsFloat;
           end
           else
           if qryCTe.FieldByName('CTE_CST').AsString = '20' then
           begin
             ICMS20.CST    := cst20;
             ICMS20.pRedBC := qryCTe.FieldByName('CTE_PERC_REDUCAO_BC').AsFloat;
             ICMS20.vBC    := qryCTe.FieldByName('CTE_BASE_ICMS').AsFloat;
             ICMS20.pICMS  := qryCTe.FieldByName('CTE_ALIC_ICMS').AsFloat;
             ICMS20.vICMS  := qryCTe.FieldByName('CTE_VALOR_ICMS').AsFloat;
           end
           else
           if (qryCTe.FieldByName('CTE_CST').AsString = '40') or
              (qryCTe.FieldByName('CTE_CST').AsString = '41') or
              (qryCTe.FieldByName('CTE_CST').AsString = '51') then
             ICMS45.CST := cst20
           else
           if qryCTe.FieldByName('CTE_CST').AsString = '60' then
           begin
             ICMS60.CST        := cst60;
             ICMS60.vBCSTRet   := qryCTe.FieldByName('CTE_BC_ICMS_ST_RET').AsFloat;
             ICMS60.vICMSSTRet := qryCTe.FieldByName('CTE_VALOR_ICMS_ST_RET').AsFloat;
             ICMS60.pICMSSTRet := qryCTe.FieldByName('CTE_ALIC_ICMS_ST_RET').AsFloat;
           end
           else
           if (qryCTe.FieldByName('CTE_CST').AsString = '90') and (CST90DentroDaUF) then
           begin
             ICMS90.CST    := cst90;
             ICMS90.pRedBC := qryCTe.FieldByName('CTE_PERC_REDUCAO_BC').AsFloat;
             ICMS90.vBC    := qryCTe.FieldByName('CTE_BASE_ICMS').AsFloat;
             ICMS90.pICMS  := qryCTe.FieldByName('CTE_ALIC_ICMS').AsFloat;
             ICMS90.vICMS  := qryCTe.FieldByName('CTE_VALOR_ICMS').AsFloat;
           end
           else
           if (qryCTe.FieldByName('CTE_CST').AsString = '90') and 
              (not(CST90DentroDaUF)) then // outra UF
           begin
             ICMSOutraUF.CST           := cstICMSOutraUF;
             ICMSOutraUF.pRedBCOutraUF := qryCTe.FieldByName('CTE_PERC_REDUCAO_BC').AsFloat;
             ICMSOutraUF.vBCOutraUF    := qryCTe.FieldByName('CTE_BASE_ICMS').AsFloat;
             ICMSOutraUF.pICMSOutraUF  := qryCTe.FieldByName('CTE_ALIC_ICMS').AsFloat;
             ICMSOutraUF.vICMSOutraUF  := qryCTe.FieldByName('CTE_VALOR_ICMS').AsFloat;
           end
           else
           if (qryCTe.FieldByName('CTE_CST').AsString = '1') then
           begin
             SituTrib := cstICMSSN;
             ICMSSN.indSN := 1;
           end;
         end;

Existe alguma condição que faz com o XML mude automaticamente para CST 00?

 

DADOS:

Emitente de SP. 

CTe: Inicio e Termino dentro ou fora do estado (Testei as duas situações)

 

Atualizei o componente antes dos testes.

 

 

  • Curtir 1
  • Moderadores
Postado

Boa tarde!

 

Tente assim:

case StrToInt(qryConhecimento['icm_codigocst']) of
                  00: begin
                      Imp.ICMS.SituTrib     := cst00;
                      Imp.ICMS.ICMS00.CST   := cst00; // Tributação Normal ICMS
                      Imp.ICMS.ICMS00.vBC   := qryConhecimento['ctr_basecalculoicms'];
                      Imp.ICMS.ICMS00.pICMS := qryConhecimento['ctr_aliquotaicms'];
                      Imp.ICMS.ICMS00.vICMS := qryConhecimento['ctr_valoricms'];
                     end;
                  20: begin
                      Imp.ICMS.SituTrib       := cst20;
                      Imp.ICMS.ICMS20.CST     := cst20; // Tributação com BC reduzida do ICMS
                      Imp.ICMS.ICMS20.pRedBC  := 0;
                      Imp.ICMS.ICMS20.vBC     := qryConhecimento['ctr_basecalculoicms'];
                      Imp.ICMS.ICMS20.pICMS   := qryConhecimento['ctr_aliquotaicms'];
                      Imp.ICMS.ICMS20.vICMS   := qryConhecimento['ctr_valoricms'];
                     end;
                  40: begin
                      Imp.ICMS.SituTrib       := cst40;
                      Imp.ICMS.ICMS45.CST     := cst40; // ICMS Isento
                     end;
                  41: begin
                      Imp.ICMS.SituTrib       := cst41;
                      Imp.ICMS.ICMS45.CST     := cst41; // ICMS não Tributada
                     end;
                  {51: begin
                      Imp.ICMS.SituTrib       := cst51;
                      Imp.ICMS.ICMS20.CST     := cst51; // ICMS diferido
                     end;
                  80: begin
                      Imp.ICMS.SituTrib       := cst80;
                      Imp.ICMS.CST80.CST      := cst90; // Tributação atribuida ao tomador ou 3. por ST
                      Imp.ICMS.CST80.vBC      := qryConhecimento['ctr_basecalculoicms'];
                      Imp.ICMS.CST80.pICMS    := qryConhecimento['ctr_aliquotaicms'];
                      Imp.ICMS.CST80.vICMS    := qryConhecimento['ctr_valoricms'];
                      Imp.ICMS.CST80.vCred    := 0;
                     end;
                  81: begin
                      Imp.ICMS.SituTrib       := cst81;
                      Imp.ICMS.CST81.CST      := cst90; // Tributação devido a outra UF
                      Imp.ICMS.CST81.pRedBC   := 0;
                      Imp.ICMS.CST81.vBC      := qryConhecimento['ctr_basecalculoicms'];
                      Imp.ICMS.CST81.pICMS    := qryConhecimento['ctr_aliquotaicms'];
                      Imp.ICMS.CST81.vICMS    := qryConhecimento['ctr_valoricms'];
                     end;}
                  90: begin
                      Imp.ICMS.SituTrib       := cst90;
                      Imp.ICMS.ICMS90.CST     := cst90; // ICMS Outros
                      Imp.ICMS.ICMS90.pRedBC  := 0;
                      Imp.ICMS.ICMS90.vBC     := qryConhecimento['ctr_basecalculoicms'];
                      Imp.ICMS.ICMS90.pICMS   := qryConhecimento['ctr_aliquotaicms'];
                      Imp.ICMS.ICMS90.vICMS   := qryConhecimento['ctr_valoricms'];
                      Imp.ICMS.ICMS90.vCred   := 0;
                     end;
                end;
  • Curtir 1

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

Postado

Obrigado... funcionou. 

O estranho era que antes da ultima atualização geral que fiz do ACBr (para atualizar o SAT/ NFSe), estava emitindo corretamente. 

  • Este tópico foi criado há 3468 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.