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:
EXECAUTO MATA103
Versão:
12.1.2210
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ELTON93 ELTON93 em 15/02/2024, 11:02 h
Local: SP  Registro: 12/02/2024  Postagens: 10
Pessoal fiz um EXECAUTO na MATA103 e e está funcionando bem, exceto as informações de lote, o sistema está substituindo as informações do Lote que estão no array por informações automaticas tipo AUTO20983.

Alguém sabe me dizer pq ?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GERARDO GERARDO em 15/02/2024, 11:17 h
Local: SP  Registro: 28/11/2005  Postagens: 88
Elton, bom dia.

Verifica se tem fórmula cadastrada no parâmetro:
MV_FORMLOT - Código da formula default utilizada para preenchimento dos lotes

At.te,

Gerardo Lobos
Athenas Solutions.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ELTON93 ELTON93 em 15/02/2024, 11:19 h
Local: SP  Registro: 12/02/2024  Postagens: 10
Já olhei, esse parametro está vazio. Não tinha só que acatar o Lote do array?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GERARDO GERARDO em 15/02/2024, 11:34 h
Local: SP  Registro: 28/11/2005  Postagens: 88
Estranho, pois o sistema só preenche o campo D1_LOTECTL, iniciando com "AUTO" quando se tem formula no parametro.

Seria interessante, você colocar o fonte para análise, pois pode ser outra coisa.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ELTON93 ELTON93 em 15/02/2024, 12:40 h
Local: SP  Registro: 12/02/2024  Postagens: 10
pIOR QUE É UM PROgrama simples, não tem muito segredo.


               WHILE cAlias->(!Eof()) //.and. cDoc == cAlias->D2_DOC .and. cSerie == cAlias->D2_SERIE
                    cCodigo    := cAlias->ZY_COD
                    nQuant     := IIF(cAlias->ZY_QTCONV > 0 ,cAlias->ZY_QTCONV, cAlias->D2_QUANT)
                    cLotectl   := cAlias->ZY_LOTECTL
                    nCusto     := cAlias->D2_CUSTO1
                    dDValidad := Stod(cAlias->D2_DTVALID)
                    cD2Total   := cAlias->D2_TOTAL
                    nPrcVend   := iiF(cAlias->ZY_QTCONV > 0, cD2Total/nQuant, cAlias->D2_PRCVEN)
                    cPC        := cAlias->ZY_PC
                                       cItemZy    := StrZero(Val(cAlias->ZY_ITEM), 4)
                    nIPI       := Posicione("SB1",1,xFilial("SB1")+cCodigo,"SB1->B1_IPI" )
                        
                          If cEmpOri <> cEmpDest
                             IF nIPI > 0
                               cTE := aEntrs[4]
                              Else
                               cTE := aEntrs[5]
                              Endif

                          ElseIF cEmpOri == cEmpDest
                               cTE := aEntrs[3]
                          Endif
                    
                   aadd(aLotes,{cLotectl})
                    nItem++
                    aItem := {}
                    aAdd(aItem,{‘D1_ITEM‘,      sTRzero(nItem,4)          ,NIL})
                    aAdd(aItem,{‘D1_COD‘,       cCodigo,NIL})
                    aAdd(aItem,{‘D1_DESCRI‘,    Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘SB1->B1_DESC‘),NIL})
                    aAdd(aItem,{‘D1_UM‘,        Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘SB1->B1_UM‘),NIL})
                    aAdd(aItem,{"D1_QUANT",      nQuant,Nil})
                    aAdd(aItem,{"D1_VUNIT",      nPrcVend,Nil})
                    aAdd(aItem,{"D1_TOTAL",      nPrcVend*nQuant,Nil})

                    IF Posicione(‘SB1‘,1,xFilial(‘SB1‘)+cCodigo, ‘SB1->B1_RASTRO‘) == "L"
                    aAdd(aItem,{"D1_LOTECTL",    cLotectl,Nil})
                    aAdd(aItem,{"D1_DTVALID",    dDValidad,Nil})
                    Endif

                    aAdd(aItem,{"D1_DOC",        cDoc ,Nil})
                    aAdd(aItem,{"D1_SERIE",      cSerie,Nil})
                    aAdd(aItem,{"D1_FORNECE",    cFornece,Nil})
                    aAdd(aItem,{"D1_CUSTO",      nCusto,Nil})
                     If lClass
                       aAdd(aItem,{"D1_TES",      cTE,Nil})
                     Endif
                       
                    

                    aadd(aItens,aItem)

                    
       
        IF !Empty(cPC )
                   Aadd(aItens[Len(aItens)], {‘D1_PEDIDO ‘,cPC ,nil}) // Número do Pedido de Compras
               aadd(aItens[Len(aItens)], {‘D1_ITEMPC ‘, cItemZy ,nil}) // Item do Pedido de Compras
        Endif

                    aadd(aUpdate,{cDoc,cSerie,cFornece,cCodigo,sTRzero(nItem,4),cLotectl,dDValidad,nCusto})

                    cAlias->(DBSKIP())

               EndDo

               /// Enddo
          Endif
          Conout("GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG"+cValTochar(lClass))
     
          
               aAdd(aParamAux, {"MV_PAR01", 2}) //-- Mostra Lanc. Contabil? 1 = Sim, 2 = Não
               aAdd(aParamAux, {"MV_PAR06", 2}) //-- Contabilizacao Online? 1 = Sim, 2 = Não

               MSExecAuto({|x,y,z,k,a,b| MATA103(x,y,z,,,,k,a,,,b)},aCabec,aItens,nOpc,aParamAux,aItensRat,aCodRet)

Mensagem do Enviar e-mail Abrir o Perfil do usuário ROBERTOMEN ROBERTOMEN em 15/02/2024, 13:04 h
Local: PR  Registro: 04/07/2017  Postagens: 450

Boa tarde:

Tente assim:

aItem := {}
   aAdd(aItem,{"D1_DOC",        cDoc ,Nil})
   aAdd(aItem,{"D1_SERIE",      cSerie,Nil})
   aAdd(aItem,{"D1_FORNECE",    cFornece,Nil})
   aAdd(aItem,{"D1_CUSTO",      nCusto,Nil})
   aAdd(aItem,{'D1_ITEM',      sTRzero(nItem,4)          ,NIL})
   aAdd(aItem,{'D1_COD',       cCodigo,NIL})
   aAdd(aItem,{'D1_DESCRI',    Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘B1_DESC‘),NIL})
   aAdd(aItem,{'D1_UM',        Posicione(‘SB1‘,1,xFilial("SB1")+cCodigo, ‘B1_UM‘),NIL})
   aAdd(aItem,{"D1_QUANT",      nQuant,Nil})
   aAdd(aItem,{"D1_VUNIT",      nPrcVend,Nil})
   aAdd(aItem,{"D1_TOTAL",      nPrcVend*nQuant,Nil})

   If lClass
       aAdd(aItem,{"D1_TES",      cTE,Nil})
   Endif

   IF Posicione(‘SB1‘,1,xFilial(‘SB1‘)+cCodigo, ‘B1_RASTRO‘) == "L"
        aAdd(aItem,{"D1_LOTECTL",    cLotectl,Nil})
        aAdd(aItem,{"D1_DTVALID",    dDValidad,Nil})
   Endif

   aadd(aItens,aItem)

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 15/02/2024, 15:43 h
Local: SP  Registro: 20/08/2010  Postagens: 670
evite usar Posicione() várias vezes para a mesma finalidade. perda de performance.
evite fazer a soma para o conteúdo de campos caractere de conteúdo sequencial. para isto utilize a função Soma1()
para fácil entendimento, avalie cPC antes de incluir o item no array de itens do documento de entrada.


     aItens := {}
     cItemD1 := ‘0000‘ // criada como caractere para utilizar a função Soma1()

     WHILE cAlias->(!Eof()) //.and. cDoc == cAlias->D2_DOC .and. cSerie == cAlias->D2_SERIE
          cCodigo    := cAlias->ZY_COD
          nQuant     := IIF(cAlias->ZY_QTCONV > 0, cAlias->ZY_QTCONV, cAlias->D2_QUANT)
          cLotectl   := cAlias->ZY_LOTECTL
          nCusto     := cAlias->D2_CUSTO1
          dDValidad := Stod(cAlias->D2_DTVALID)
          cD2Total   := cAlias->D2_TOTAL
          nPrcVend   := iiF(cAlias->ZY_QTCONV > 0, cD2Total/nQuant, cAlias->D2_PRCVEN)
          cPC        := cAlias->ZY_PC
          cItemZy    := StrZero(Val(cAlias->ZY_ITEM), 4)

          // posiciona a tabela de produtos
          SB1->(dbSetOrder(1)) // B1_FILIAL, B1_COD
          SB1->(dbSeek(xFilial()+cCodigo))

          nIPI       := SB1->B1_IPI
               
          IF cEmpOri == cEmpDest
               cTE := aEntrs[3]
          Else
               cTE := aEntrs[ if(nIPI > 0, 4, 5) ]
          Endif
          
          aadd(aLotes,{cLotectl})

          cItemD1 := Soma1(cItemD1) // utilize a Soma1() - função padrão do Protheus

          aItem := {}
          aAdd(aItem,{‘D1_ITEM‘,   cItemD1,          Nil})
          aAdd(aItem,{‘D1_COD‘,    cCodigo,          Nil})
          aAdd(aItem,{‘D1_DESCRI‘, SB1->B1_DESC,     Nil})
          aAdd(aItem,{‘D1_UM‘,     SB1->B1_UM,       Nil})
          aAdd(aItem,{"D1_QUANT", nQuant,           Nil})
          aAdd(aItem,{"D1_VUNIT", nPrcVend,        Nil})
          aAdd(aItem,{"D1_TOTAL", nPrcVend*nQuant, Nil})

          IF SB1->B1_RASTRO == "L"
               aAdd(aItem,{"D1_LOTECTL", cLotectl, Nil})
               aAdd(aItem,{"D1_DTVALID", dDValidad, Nil})
          Endif

          aAdd(aItem,{"D1_DOC",        cDoc,     Nil})
          aAdd(aItem,{"D1_SERIE",      cSerie,   Nil})
          aAdd(aItem,{"D1_FORNECE",    cFornece, Nil})
          aAdd(aItem,{"D1_CUSTO",      nCusto,   Nil})

          If lClass
               aAdd(aItem,{"D1_TES",    cTE,      Nil})
          Endif

          IF !empty(cPC)
               aAdd(aItem,{‘D1_PEDIDO‘, cPC,     nil}) // Número do Pedido de Compras
               aAdd(aItem,{‘D1_ITEMPC‘, cItemZy, nil}) // Item do Pedido de Compras
          Endif

          aAdd(aItens,aItem)

          aAdd(aUpdate,{cDoc,cSerie,cFornece,cCodigo,sTRzero(nItem,4),cLotectl,dDValidad,nCusto})

          cAlias->(DBSKIP())

     ENDDO




Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ELTON93 ELTON93 em 19/02/2024, 09:23 h
Local: SP  Registro: 12/02/2024  Postagens: 10
Pessoal,

Muito obrigado pelas dicas, me ajudaram a resolver o problema.

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