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:
MT105FIM
Versão:
12.1.33
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário FR_LACERDA FR_LACERDA em 24/05/2023, 11:54 h
Local: AM  Registro: 05/04/2023  Postagens: 8
Pessoal bom dia, estou com a seguinte duvida, quero que toda solicitação criada no armazém e que esteja com o Armazém ti, caiu como bloqueada, mas ai que começa meu problema, quando eu crio a solicitação so bloqueia o ultimo item da solicitação.

Segue código, se puderem me ajudar agradeço..

#INCLUDE ‘PROTHEUS.CH‘


User Function MT105FIM()


     Local _AreaCP          :=SCP->(getarea())


     Local nFilial
     Local cProduto
     Local nNumSa         := SCP->CP_NUM
     Local cArmazem
     Local cItem
     Local nOpcap           := PARAMIXB
   

     DbSelectArea(‘SCP‘)
     SCP->(DbSetOrder(2))

     While !SCP->(eof())
          nFilial        := SCP->CP_FILIAL
          cProduto     := SCP->CP_PRODUTO
          
          cArmazem      := SCP->CP_LOCAL
          cItem           := SCP->CP_ITEM

          IF SCP->(dbSeek(CP_FILIAL+CP_PRODUTO+nNumSa+CP_ITEM))
               IF cArmazem == ‘TI‘

                    IF nOpcap == 1

                         DbSelectArea("SCP")
                         (Reclock("SCP",.F.))

                         CP_STATSA := ‘B‘
                         Msunlock()
                         SCP->(DbCloseArea())

                         //     msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")
                    ELSEIF nOpcap == 2
                         DbSelectArea("SCP")
                         dbSetOrder(2)
                         SCP->(dbSeek(CP_FILIAL+CP_PRODUTO+CP_NUM+CP_ITEM))

                         DbSelectArea("SCP")
                         (Reclock("SCP",.F.))
                         CP_STATSA := ‘B‘
                         Msunlock()
                         SCP->(DbCloseArea())

                         //     msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")


                    ENDIF
               ENDIF
          ENDIF
          SCP->(DbSkip())
     ENDDO
     Restarea(_AreaCP)

Return

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 24/05/2023, 13:17 h
Local: SP  Registro: 20/08/2010  Postagens: 643
#INCLUDE 'PROTHEUS.CH'


User Function MT105FIM()
Local _AreaCP := SCP->(getarea())
Local nNumSa := SCP->CP_NUM
Local cFilSCP := xFilial("SCP")

     SCP->(dbSetOrder(1)) // CP_FILIAL+CP_NUM+CP_ITEM+CP_EMISSAO
     SCP->(dbSeek(cFilSCP+nNumSa))

     WHILE !SCP->(EOF()) .AND. (SCP->CP_FILIAL = cFilSCP) .AND. (SCP->CP_NUM = nNumSa)
          IF SCP->CP_LOCAL == 'TI'
               Reclock("SCP",.F.)
               SCP->CP_STATSA := 'B'
               SCP->(Msunlock())
               // msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")
          ENDIF
          SCP->(dbSkip())
     ENDDO

     Restarea(_AreaCP)

Return

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário FR_LACERDA FR_LACERDA em 24/05/2023, 14:06 h
Local: AM  Registro: 05/04/2023  Postagens: 8
Boa tarde amigo Emerson.


Deu tudo certinho, vou so aplicar a regra que estou fazendo aqui, muito obrigado por essa força, eu estava tendo dificuldade no while.


Vou validar os outros pontos aqui, e logo vou posta o codigo que fiz com base no seu.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário TPEREIRA TPEREIRA em 24/05/2023, 16:35 h
Local: PE  Registro: 18/07/2022  Postagens: 2
Tente assim


#include "PROTHEUS.CH"

User Function MT105FIM()
   Local _AreaCP := SCP->(getarea())
   Local nFilial
   Local cProduto
   Local nNumSa := SCP->CP_NUM
   Local cArmazem
   Local cItem
   Local nOpcap := PARAMIXB

   DbSelectArea("SCP")
   SCP->(DbSetOrder(2))

   While !SCP->(eof())
      nFilial := SCP->CP_FILIAL
      cProduto := SCP->CP_PRODUTO

      cArmazem := SCP->CP_LOCAL
      cItem := SCP->CP_ITEM

      IF SCP->(dbSeek(CP_FILIAL+CP_PRODUTO+nNumSa+CP_ITEM))
        IF cArmazem == "TI"
            IF nOpcap == 1
               DbSelectArea("SCP")
               (Reclock("SCP", .F.))

               CP_STATSA := "B"
               Msunlock()
               SCP->(DbCloseArea())

               // msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")
            ELSEIF nOpcap == 2
               DbSelectArea("SCP")
               dbSetOrder(2)
               SCP->(dbSeek(CP_FILIAL+CP_PRODUTO+CP_NUM+CP_ITEM))

               DbSelectArea("SCP")
               (Reclock("SCP", .F.))
               CP_STATSA := "B"
               Msunlock()
               SCP->(DbCloseArea())

               // msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")
            ENDIF
        ENDIF
      ENDIF
      SCP->(DbSkip())
   ENDDO
   Restarea(_AreaCP)

   Return

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário FR_LACERDA FR_LACERDA em 01/06/2023, 09:38 h
Local: AM  Registro: 05/04/2023  Postagens: 8
Bom dia, turma!

Com a solução do Emerson conseguir resolver meu problema, e a solução Pereira abriu mais minha logica, agradeço imensamente a ajuda dos amigos, segue codigo que eu usei para resolver meu problema:

User Function MT105FIM()
     Local AreaCP      := SCP->(getarea())
     Local nNumSa      := SCP->CP_NUM
     Local cFilSCP      := xFilial("SCP")
     Local cArmazem     := SuperGetMv("MV_AMZTI",.F., .F.)
     Local nOpcap        := PARAMIXB

     SCP->(dbSetOrder(1)) // CP_FILIAL+CP_NUM+CP_ITEM+CP_EMISSAO
     SCP->(dbSeek(cFilSCP+nNumSa))

     WHILE !SCP->(EOF()) .AND. (SCP->CP_FILIAL = cFilSCP) .AND. (SCP->CP_NUM = nNumSa)
          IF SCP->CP_LOCAL == cArmazem
               IF nOpcap == 1
                    Reclock("SCP",.F.)
                    SCP->CP_STATSA := ‘B‘
                    SCP->(Msunlock())
                    //SAINC(nNumSa)
                    // msginfo("Solicitação ao Armazem Nº " + nNumSa +" Bloqueada, solicite liberação do Gestor","Aviso")
               ELSEIF nOpcap == 2
                    Reclock("SCP",.F.)
                    SCP->CP_STATSA := ‘B‘
                    SCP->(Msunlock())
                    //SAALT(nNumSa)
               ENDIF
          //     TstEW(nNumSa)
          ELSEIF SCP->CP_LOCAL != cArmazem
               Reclock("SCP",.F.)
               SCP->CP_STATSA := ‘L‘
               SCP->(Msunlock())
          ENDIF
          SCP->(dbSkip())
     ENDDO

     Restarea(AreaCP)

Return

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