Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Moderadores
Postado
29 minutos atrás, afnsldd disse:

Já dei um update na pasta do acbr mas nada. Será isto um problema de unit?

Esse problema ocorre no demo do ACBr?

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • 2 semanas depois ...
Postado
Em 10/05/2018 at 10:24, BigWings disse:

Esse problema ocorre no demo do ACBr?

Obrigado! já Resolvi. Mas agora não estou conseguindo adicionar itens no XML .

 

Meu código está assiM:

==============================================================================
 

while not cdsPedItens.Eof do       //================================================== Para cada item do pedido faremos este processo
  begin
    Inc(numItem);
    DadosProduto(cdsPedItensID_PRODUTO.AsInteger);
    dett.Add.Prod.nItem                 := numItem;
    dett.Add.Prod.cProd                 := IntToStr(cdsPedItensID_PRODUTO.AsInteger);
    dett.Add.Prod.cEAN                  := cdsPedItensEAN13.AsString;
    dett.Add.Prod.xProd                 := cdsPedItensDESCRICAO.AsString;
    dett.Add.Prod.NCM                   := cdsProdutosCODIGO_NCM.AsString;
    dett.Add. Prod.EXTIPI       := '';
    case cdsPedItensTIPOPROD.AsInteger of
     0,1,2,4: dett.Add.Prod.CFOP        := '5102';
     3:       dett.Add.Prod.CFOP        := '5403';
    end;
    dett.Add.Prod.uCom                  := cdsProdutosUNIDADE.AsString;
    dett.Add.Prod.qCom                  := cdsPedItensQUANTIDADE.AsCurrency;
    dett.Add.Prod.cEANTrib              := '';
    dett.Add.Prod.uTrib                 := cdsProdutosUNIDADE.AsString;
    if cdsPedItensTIPOPROD.AsInteger = 0 then
    dett.Add.Prod.qTrib                 := cdsPedItensQUANTIDADE.AsCurrency
    else
    dett.Add.Prod.qTrib                 := 0;
    dett.Add.Prod.vFrete                := 0;
    dett.Add.Prod.vSeg                  := 0;
    dett.Add.Prod.vDesc                 := cdsPedItensDESCONTO.AsCurrency;

    //IMPORTAÇÃO
    with dett.Add.Prod.DI               do begin end;
    //VEÍCULOS
    with dett.Add.Prod.veicProd         do begin end;
    //MEDICAMENTOS
    with dett.Add.Prod.med              do begin end;
    //MATERIAL BÉLICO
    with dett.Add.Prod.arma             do begin end;
    //COMBUSTÍVEL
    with dett.Add.Prod.comb             do begin end;
    //TRIBUTAÇÃO DOS ITENS
        //ICMS
  if cdsPedItensTIPOPROD.AsInteger = 0 then                                     //======== 0 - TRIBUTADO
  begin
    dett.Add.Imposto.ICMS.CST           := cst00;
    dett.Add.Imposto.ICMS.CSOSN         := csosn101;
    dett.Add.Imposto.ICMS.orig          := oeNacional;
    dett.Add.Imposto.ICMS.modBC         := dbiValorOperacao;
    dett.Add.Imposto.ICMS.vBC           := cdsPedItensVALOR_TOTAL.AsCurrency;
    dett.Add.Imposto.ICMS.pICMS         := cdsProdutosALIQUOTA_ICMS.AsFloat;    //======== PRODUTO TRIBUTADO COM BASE NAO REDUZIDA
    dett.Add.Imposto.ICMS.vICMS         := (cdsPedItensVALOR_TOTAL.AsFloat * cdsProdutosALIQUOTA_ICMS.AsFloat) / 100;
    dett.Add.Imposto.ICMS.modBCST       := dbisMargemValorAgregado;
    dett.Add.Imposto.ICMS.pMVAST        := 0;
    dett.Add.Imposto.ICMS.pRedBCST      := 0;
    dett.Add.Imposto.ICMS.vBCST         := 0;
    dett.Add.Imposto.ICMS.pICMSST       := 0;
    dett.Add.Imposto.ICMS.vICMSST       := 0;
    dett.Add.Imposto.ICMS.pRedBC        := 0;

  end;
  if cdsPedItensTIPOPROD.AsInteger = 3 then                                     //======== 3 - SUBS. TRIBUTARIA
  begin
    dett.Add.Imposto.ICMS.CST           := cst60;
    dett.Add.Imposto.ICMS.orig          := oeNacional;
    dett.Add.Imposto.ICMS.modBC         := dbiValorOperacao;
    dett.Add.Imposto.ICMS.vBC           := cdsPedItensVALOR_TOTAL.AsCurrency;
    dett.Add.Imposto.ICMS.pICMS         := 0;                                   //======== PRODUTO TRIBUTADO COM BASE NAO REDUZIDA
    dett.Add.Imposto.ICMS.vICMS         := 0;
    dett.Add.Imposto.ICMS.modBCST       := dbisMargemValorAgregado;
    dett.Add.Imposto.ICMS.pMVAST        := 0;
    dett.Add.Imposto.ICMS.pRedBCST      := 0;
    dett.Add.Imposto.ICMS.vBCST         := 0;
    dett.Add.Imposto.ICMS.pICMSST       := cdsProdutosALIQUOTA_ICMS.AsFloat;
    dett.Add.Imposto.ICMS.vICMSST       := (cdsPedItensVALOR_TOTAL.AsFloat * cdsProdutosALIQUOTA_ICMS.AsFloat) / 100;
    dett.Add.Imposto.ICMS.pRedBc        := 0;
  end;
        //II
  if (cdsPedItensTIPOPROD.AsInteger = 1) or                                     //======== 1 - PRODUTO ISENTO
     (cdsPedItensTIPOPROD.AsInteger = 2) then                                   //======== 2 - NÃO TRIBUTADO
     begin
       dett.Add.Imposto.II.vBc          := 0;
       dett.Add.Imposto.II.vDespAdu     := 0;
       dett.Add.Imposto.II.vII          := cdsPedItensVALOR_TOTAL.AsFloat;
       dett.Add.Imposto.II.vIOF         := 0;

     end;
        //ISSQN
  if cdsPedItensTIPOPROD.AsInteger = 4   then                                   //======== 4 - SERVIÇO
     begin
       dett.Add.Imposto.ISSQN.vBC       := cdsPedItensVALOR_TOTAL.AsFloat;
       dett.Add.Imposto.ISSQN.vAliq     := cdsProdutosALIQUOTA_ICMS.AsFloat;
       dett.Add.Imposto.ISSQN.vISSQN    := (cdsProdutosALIQUOTA_ICMS.AsFloat * cdsPedItensVALOR_TOTAL.AsFloat)/100;
       dett.Add.Imposto.ISSQN.cMunFG    := 0;
       dett.Add.Imposto.ISSQN.cListServ := '0';
     end;
     cdsPedItens.Next;
  end;

Por quê no meu XML não está vindo os itens?

 

Se quiserem posso enviar um demo do meu projeto para vcs com o BD junto. Estranho, acho que é na hora de ler o BD, mas quando debugo consigo ler os itens da tabela Pedido_itens.

Postado
1 hora atrás, afnsldd disse:

Por quê no meu XML não está vindo os itens?

Ola 

Tem um baita erro de logica no teu código.... 

Vc esta chamando det.add pra cada propriedade q vc alimenta... 

Det.add adiciona o novo item e deve ser chamado uma vez apenas para criar o item na lista de itens.

Confira novamente o código fonte do programa exemplo da NFe....

Att

Ricardo

  • Curtir 1
Postado
53 minutos atrás, RicardoVoigt disse:

Det.add adiciona o novo item e deve ser chamado uma vez apenas para o item na lista de itens.

 

Uma dúvida, a variável dett tem que ser do tipo TDetCollectionItem? Ou TDetCollection?

Citar

dett := TDetCollection.Create(nil);

 

 

Postado
13 horas atrás, afnsldd disse:

TDetCollection

Como nome diz, collection se refere a cuma coleção de itens...

Se não me engano a propriedade det eh um colection, e cada vez q chama a function det.add eh criado um novo item na lista e retornada a sua referencia pra vc fazer alguma coisa com ele...

Exemplo

With det.add do

Begin

Prod.nItem :=1;

...

End;

Postado
Citar

nota_fiscal : NotaFiscal;
dett: TDetCollectionItem;

nota_fiscal := ACBrNFe1.NotasFiscais.Add;

dett := nota_fiscal.NFe.Det.Add;

while not cdsPedItens.Eof do  
  begin
  with dett.Prod do

begin

....

end;

 

Obrigado. Já resolvi. a sua dica de olhar o exemplo do acbr foi útil.

 

Postado
22 horas atrás, afnsldd disse:

Obrigado. Já resolvi. a sua dica de olhar o exemplo do acbr foi útil.

Boa noite,

desculpa, não tinha visto tua resposta, mas uma sugestão para teu código, o correto seria o comando Det.Add estar dentro do laço "while not cdsPedItens.Eof do"

Att

Ricardo

  • Este tópico foi criado há 2370 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.