Imprimi Página | Fechar janela |
MT105FIM Impresso de: Helpfacil - Portal do conhecimento Nome do Forum: ADVPL Descrição do Forum: Dúvidas sobre a programação em ADVPL URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=44263 Data da Impressão: sábado, 3 de junho de 2023 at 01:42 Topico: MT105FIM Postado por: FR_LACERDA Assunto: MT105FIM Data Postagem: quarta-feira, 24 de maio de 2023 at 11:54 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 Respostas: Postado Por: EMERSON.EN Data Postagem: quarta-feira, 24 de maio de 2023 at 13:17 #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 Postado Por: FR_LACERDA Data Postagem: quarta-feira, 24 de maio de 2023 at 14:06 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. Postado Por: TPEREIRA Data Postagem: quarta-feira, 24 de maio de 2023 at 16:35 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 Postado Por: FR_LACERDA Data Postagem: quinta-feira, 1 de junho de 2023 at 09:38 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 |
Imprimir Página | Fechar Janela |