PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
D2_ITEMPV
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário SRAFAEL SRAFAEL em 27/05/2021, 07:39 h
Local: CE  Registro: 08/07/2015  Postagens: 9
Bom dia.

Galera.. estou tentando posicionar o c6_item no DANFEII. Por algumas vezes, meu item se repete na nota fiscal, mudando apenas D2_ITEMPV(C6_ITEM), porem ja fiz algumas tentativas e nao tive sucesso.
Essa é uma informacao que nao precisa ir no XML, por isso nao fiz alteracao no NFESEFAZ.
Alguem ja fez alguma customizacao parecida que possa me dar uma ajuda?‘

Apenas preciso posicionar o C6_ITEM... conseguindo isso ja me ajuda demais.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 27/05/2021, 09:26 h
Local: SP  Registro: 20/08/2010  Postagens: 670
você precisa posicionar a SD2 e depois a SC6.

como você não postou qualquer trecho de código, fica difícil dizer onde você pode estar errando.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário SRAFAEL SRAFAEL em 27/05/2021, 09:40 h
Local: CE  Registro: 08/07/2015  Postagens: 9
xQuery:= "SELECT * FROM SD2010 WHERE D2_DOC=‘"+SF2->F2_DOC+"‘ AND D2_COD=‘"+ODET[_cont]:_PROD:_CPROD:TEXT+"‘ AND D_E_L_E_T_=‘‘"
If Select("xQuery") > 0                                                                                                                                                                    
    xQuery->(DbCloseArea())
EndIf
DbUseArea(.T.,"TOPCONN",TCGenQry(,,xQuery),"xQuery")

SC6->(dbSelectArea("SC6"))
SC6->(DbSetOrder(1))
SC6->(dbSeek(xFilial("SC6")+xQuery->D2_PEDIDO+xQuery->D2_ITEMPV+xQuery->D2_COD))


Esse é o momento que eu uso para posicionar... só que na query eu preciso do D2_ITEMPV, pois na impressao do danfe eu possuo produtos identicos..
codigo, descriçao, quantidade...

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 27/05/2021, 12:05 h
Local: SP  Registro: 20/08/2010  Postagens: 670

cNewAlias := GetNextAlias() // pega um nome de alias disponível

/*
xQuery := " SELECT D2_PEDIDO PEDIDO, D2_ITEMPV ITEM, D2_COD PRODUTO" //selecione somente os campos que vai utilizar
xQuery += " FROM "+RetSQLName("SD2")+" WHERE D_E_L_E_T_=‘‘ AND D2_FILIAL = ‘"+xFilial("SD2")+"‘" // sempre inicie a query filtrando os deletados e a tua filial
xQuery += " AND D2_DOC=‘"+SF2->F2_DOC+"‘ AND D2_SERIE = ‘"+SF2->F2_SERIE+"‘ AND D2_FORMUL = ‘"+SF2->D2_FORMUL+"‘"
xQuery += " AND D2_COD=‘"+ODET[_cont]:_PROD:_CPROD:TEXT+"‘" // procurando pelo código. note que, por padrão, pode ter mais de um pedido/item por produto da nota

dbUseArea(.T.,"TOPCONN",TCGenQry(,,xQuery),cNewAlias)
*/

BeginSQL Alias cNewAlias
     %noparser% // ignora qualquer parse do dbAccess e executa a query exatamente como será informada

     SELECT
          D2_PEDIDO PEDIDO, D2_ITEMPV ITEM, D2_COD PRODUTO //selecione somente os campos que vai utilizar
     FROM
          %table:SD2% // pegue o nome da tabela a partir do sistema. evite ‘chumbar‘ o nome
     WHERE
          %notdel% AND D2_FILIAL = %xFilial:SD2% // sempre inicie a query filtrando os deletados e a filial
          AND D2_DOC = %exp : (SF2->F2_DOC)% AND D2_SERIE = %exp : (SF2->F2_SERIE)% AND D2_FORMUL = %exp : (SF2->F2_FORMUL)%
          AND D2_COD = %exp : (ODET[_cont]:_PROD:_CPROD:TEXT)% // procurando pelo código (por padrão, pode ter mais de um pedido/item por produto da nota)
EndSQL

// já que você vai desposicionar a tabela SC6, guarde o estado atual dela,
// porque esse posicionamento pode der necessário na sequencia do processo
AreaSC6 := SC6->(GetArea())

// muda a ordenação da tabela
SC6->(dbSetOrder(1)) // C6_FILIAL, C6_NUM, C6_ITEM, C6_PRODUTO

while !(cNewAlias)->(EOF())
     // procura pelo item do pedido
     if SC6->(dbSeek(xFilial()+(cNewAlias)->(PEDIDO+ITEM+PRODUTO)))

          // faça o que for preciso com o item posicionado
          // note que, por padrão, pode ter mais de um pedido/item por produto da nota

     endif

     // vai para o próximo registro
     (cNewAlias)->(dbSkip())
enddo

(cNewAlias)->(dbCloseArea()) // fecha a área de trabalho criada para consultar os itens

SC6->(RestArea(AreaSC6)) // restaura o estado original da SC6 (o índice e ponteiro do registro)

// entre exp, o : (dois pontos) e o ( (parêntesis) não há espaços. fiz assim porque no fórum aparece um emoticon ( :( )

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário SRAFAEL SRAFAEL em 27/05/2021, 14:48 h
Local: CE  Registro: 08/07/2015  Postagens: 9
Muito obrigado pelas orientaçoes..
Está perfeito.

Mas pra resolver meu problema, eu preciso que a Query filtre o D2_ITEMPV por conta dos itens duplicados.
ex: d2_cod= papa1010 d2_quant= 100 d2_itempv= 01
    d2_cod= papa1010 d2_quant= 100 d2_itempv= 02


SELECT D2_PEDIDO PEDIDO, D2_ITEMPV ITEM, D2_COD PRODUTO
FROM
   %table:SD2%
WHERE
   %notdel% AND D2_FILIAL = %xFilial:SD2%
   AND D2_DOC = %exp : (SF2->F2_DOC)% AND D2_SERIE = %exp : (SF2->F2_SERIE)%
   AND D2_FORMUL = %exp : (SF2->F2_FORMUL)%
   AND D2_COD = %exp : (ODET[_cont]:_PROD:_CPROD:TEXT)%
   // procurando pelo código (por padrão, pode ter mais de um pedido/item
   por produto da nota)
   AND D2_ITEMPV= (_______________) AQUI EU PRECISO AMARRAR, POREM NAO
   ENCONTREI COMO FAZER AINDA


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário TOMZAO TOMZAO em 28/05/2021, 07:51 h
Local: SC  Registro: 12/02/2011  Postagens: 11
Bom dia.
Me chama no Skype que eu te ajudo.

Jailton_urbano@hotmail.com

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário SRAFAEL SRAFAEL em 01/06/2021, 13:55 h
Local: CE  Registro: 08/07/2015  Postagens: 9
para solucionar foi feito o seguinte na query..

SELECT
    D2_PEDIDO PEDIDO, D2_ITEMPV ITEM, D2_COD PRODUTO, D2_QUANT QUANTIDADE
FROM %table:SD2%
WHERE
    %notdel% AND D2_FILIAL = %xFilial:SD2%
    AND D2_DOC = %exp:(SF2->F2_DOC)% AND D2_SERIE = %exp:(SF2->F2_SERIE)%
    AND D2_FORMUL = %exp:(SF2->F2_FORMUL)%
    AND D2_COD = %exp:(ODET[_cont]:_PROD:_CPROD:TEXT)%
    AND D2_ITEM = %exp:strzero(_cont,tamsx3("D2_ITEM")[1])%


muito obg ao EMERSON.EN e tambem ao Jailton_urbano pela enorme atencao..

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal