- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ponto de entrada M410LIOK
×
Linguagem de Programação ADVPL
Perguntas Ponto de entrada M410LIOK
- plautojr
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
11 anos 5 meses atrás #14165
por plautojr
Ponto de entrada M410LIOK foi criado por plautojr
Seguinte amigos, eu criei uma função no ponto de entrada M410LIOK, para agregar insumos aos produtos do pedido,
preciso de uma ajuda nos seguintes pontos,
se eu deletar a linha do pedido, como faço pra não chamar o ponto de entrada ?
e quando confirmo o pedido ele chama novamente o ponto de entrada no ultimo item ... como faço pra não chamar na confirmação, o pessoal do suporte da totvs disse para tratar na função.
alguem me dá uma ajuda ?
preciso de uma ajuda nos seguintes pontos,
se eu deletar a linha do pedido, como faço pra não chamar o ponto de entrada ?
e quando confirmo o pedido ele chama novamente o ponto de entrada no ultimo item ... como faço pra não chamar na confirmação, o pessoal do suporte da totvs disse para tratar na função.
alguem me dá uma ajuda ?
Por favor Acessar ou Registrar para participar da conversa.
- vision
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 8
- Obrigados Recebidos: 0
- plautojr
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
11 anos 5 meses atrás #14170
por plautojr
Respondido por plautojr no tópico Ponto de entrada M410LIOK
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'FONT.CH'
#INCLUDE 'COLORS.CH'
User Function M410LIOK
Local nOpc := GD_INSERT+GD_DELETE+GD_UPDATE
Private aColsIni := {}
Private aHeader := {}
Private noBrw1 := 0
Private oGet := 0
Private cItem := Space(TamSx3("Z4_NITEM")[1])
Private cDesc := Space(TamSx3("Z4_DESC")[1])
//Private nPosItem := Space(3)
//Private nPosDesc := Space(30)
//nPosItem := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_ITEM" })
//nPosDesc := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_DESCRI"})
//cItem := aCols[N,nPosItem]
//cDesc := aCols[N,nPosDesc]
dbSelectarea ("SB1")
//aqui nao tá funcionando 100 por cento, nao consegui fazer funcionar a função de cima
cItem := SB1->B1_COD
cDesc := SB1->B1_DESC
SetPrvt("oJanela","oSay1","oSay2","oGet1","oGet2","oGet")
oJanela := MSDialog():New( 100,232,586,972,"Insumos",,,.F.,,,,,,.T.,,,.T. )
oJanela:bInit := {||EnchoiceBar(oJanela,{|| GravDad()},{|| oJanela:End()},.F.,)}
oSay1 := TSay():New( 016,024,{||"Código"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)
oSay2 := TSay():New( 016,120,{||" Item"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)
oGet1 := TGet():New( 028,024,{|u| If(PCount()>0,cItem:=u,cItem)},oJanela,060,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cGrupo",,)
oGet2 := TGet():New( 028,144,{|u| If(PCount()>0,cDesc:=u,cDesc)} ,oJanela,152,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cDesc",,)
// Funcao monta aheader
MHoBrw1()
//Funcao monta aColsIni
MCoBrw1()
oGet := MsNewGetDados():New(084,5,238,412,nOpc,'AllwaysTrue()','AllwaysTrue()','',,0,99,'AllwaysTrue()','','AllwaysTrue()',oJanela,aHeader,aColsIni )
oGet:Disable()
oGet:delline()
oGet:Enable()
oJanela:Activate(,,,.T.)
Return .T.
/*
user function DelLinha()
dbSelectarea("SZ4")
SZ4->(dbSetOrder(1))
SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM ))
IF aCols[nAt][Len (aHeader) +1]
BEGIN TRANSACTION
while !SZ4->(EOF()) .AND. M->C5_NUM == M->Z4_NPED TENTEI ISSO AQUI MAS NAO DEU CERTO,
RecLock( "SZ4" , .F. )
SZ4->(dbdelete())
4 SZ4->(MsUnLock())
SZ4->(DBSKIP())
ENDDO
END TRANSACTION
MsgAlert("Insumos Excluidos")
oJanela:Refresh()
oJanela:end()
else
oJanela:Refresh()
oJanela:end()
Return (.t.)*/
Static Function MHoBrw1()
DbSelectArea("SX3")
DbSetOrder(2)
DbSeek("Z4_COD")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_DESC")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_QTD")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_UM")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_VLRU")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE , SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_VLRT")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
Return
Static Function MCoBrw1()
Local aAux := {}
dbSelectarea("SZ4")
dbSetorder(2)
IF SZ4->(dbSeek(xfilial("SZ4") + M->C5_NUM + aCols[n,1])) //PROCURA DADOS, CASO EXISTA
while M->C5_NUM = SZ4->Z4_NPED .and. SZ4->Z4_NITEM = aCols[n,1] // COMPARA A INCIDENCIA DOS DADOS,
AADD (aColsIni , {SZ4->Z4_COD ,SZ4->Z4_DESC , SZ4->Z4_QTD, SZ4->Z4_UM, SZ4->Z4_VLRU, SZ4->Z4_VLRT,.F.}) // CARREGA CAMPOS ENCONTRADOS ENQUANTO O WHILE FOR .T.
SZ4->(DBSKIP()) // TROCA LINHA
enddo
else
AADD (aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , 0,;
Space(TamSx3("Z4_UM")[1]), 0, 0,.F.})
endif
Return
Static Function GravDad
DbSelectArea("SZ4")
SZ4->(DbSetOrder(1))
For nI := 1 To Len(oGet:Acols)
IF SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM + oGet:aCols[nI][1] )) // IF PROCURA SE EXISTE, E RETORNA TRUE, SE TRUE
// Altera // RECLOCK .F. ALTERA OU EXCLUI.
// oGetDados:aCols [ Linha que voce quer ] [ Len(oGetDados:aHeader) + 1 ]
RecLock( "SZ4" , .F. )
IF oGet:aCols[nI][Len (aHeader) +1] // LINHAS X COLUNAS + 1 EXCLUIDO (DBDELETE)
SZ4->(dbdelete())
ELSE // ELSE = ALTERA CAMPOS DETERMINADOS.
SZ4->Z4_QTD := oGet:aCols[nI][3]
SZ4->Z4_VLRU := oGet:aCols[nI][5]
SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5])
ENDIF
Else // SE DBSEED NAO RETORNA, RECLOCK .T.
// INCLUSÃO
// Inclui
RecLock( "SZ4" , .T. )
//AADD(aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , Space(TamSx3("Z4_QTD")[1]),;
//Space(TamSx3("Z4_UM")[1]), Space(TamSx3("Z4_VLRU")[1]), Space(TamSx3("Z4_VLRT")[1]),.F.})
SZ4->Z4_FILIAL := xFilial("SZ4")
SZ4->Z4_COD := oGet:aCols[nI][1]
SZ4->Z4_DESC := oGet:aCols[nI][2]
SZ4->Z4_QTD := oGet:aCols[nI][3]
SZ4->Z4_UM := oGet:aCols[nI][4]
SZ4->Z4_VLRU := oGet:aCols[nI][5]
SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5])
SZ4->Z4_NITEM := aCols[n,1]
SZ4->Z4_NPED := M->C5_NUM
SZ4->(MsUnLock())
EndIf
Next nI
msginfo("Alterado com Sucesso")
oJanela:Refresh()
oJanela:end()
u_DelLinha
u_partediaria()
Return
user function extot(cCampo)
Local nValor := 0
Local nI := 0
IF cCampo = "Z4_QTD"
nValor := M->Z4_QTD * oGet:aCols[oGet:nAt][5]
else
nValor := M->Z4_VLRU * oGet:aCols[oGet:nAt][3]
ENDIF
oGet:refresh()
Return (nValor)
User Function valexist() //ESSA FUNÇÇÃO NAO ESTÁ FUNCIONANDO, EU CHAMEI ELA NA VALIDAÇÃO DO CAMPO MAS NÃO
// TÁ DANDO CERTO
// ELA DEVERIA IMPEDIR QUE REPITA ITENS NA TELA.
DbSelectArea("SZ4")
SZ4->(DbSetOrder(1))
//Z4_FILIAL+Z4_COD+Z4_NPED
For nI := 1 To Len( oGET:aCols )
Private cTxt := ""
cTxt := AllTrim(M->Z4_COD)
//If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM ))
If SZ4->(dbSeek(xFilial("SZ4")+M->cTxt+M->C5_NUM ))
MsgAlert ("Insumo Já Cadastrado")
Return .F.
oGet:disable()
Else
Return .T.
EndIf
Next nI
Return ()
/*User Function valexist()
DbSelectArea("SZ4")
SZ4->(DbSetOrder(3))
//Z4_FILIAL+Z4_COD+Z4_NPED
For nI := 1 To Len( oGET:aCols )
//If SZ4->(dbSeek(xFilial("SZ4")+oGet:aCols[nI][1]+M->C5_NUM ))
If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM ))
MsgAlert ("Insumo Já Cadastrado")
Return .F.
oGet:disable()
Else
Return .T.
oGet:enable()
EndIf
NEXT
Return ()
TÁ AI... vou anexar o txt tbm... agradeço a ajuda.
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'FONT.CH'
#INCLUDE 'COLORS.CH'
User Function M410LIOK
Local nOpc := GD_INSERT+GD_DELETE+GD_UPDATE
Private aColsIni := {}
Private aHeader := {}
Private noBrw1 := 0
Private oGet := 0
Private cItem := Space(TamSx3("Z4_NITEM")[1])
Private cDesc := Space(TamSx3("Z4_DESC")[1])
//Private nPosItem := Space(3)
//Private nPosDesc := Space(30)
//nPosItem := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_ITEM" })
//nPosDesc := aScan(aHeader,{|X| Alltrim(X[2])=="M->C6_DESCRI"})
//cItem := aCols[N,nPosItem]
//cDesc := aCols[N,nPosDesc]
dbSelectarea ("SB1")
//aqui nao tá funcionando 100 por cento, nao consegui fazer funcionar a função de cima
cItem := SB1->B1_COD
cDesc := SB1->B1_DESC
SetPrvt("oJanela","oSay1","oSay2","oGet1","oGet2","oGet")
oJanela := MSDialog():New( 100,232,586,972,"Insumos",,,.F.,,,,,,.T.,,,.T. )
oJanela:bInit := {||EnchoiceBar(oJanela,{|| GravDad()},{|| oJanela:End()},.F.,)}
oSay1 := TSay():New( 016,024,{||"Código"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)
oSay2 := TSay():New( 016,120,{||" Item"},oJanela,,,.F.,.F.,.F.,.T.,CLR_BLACK,CLR_WHITE,032,008)
oGet1 := TGet():New( 028,024,{|u| If(PCount()>0,cItem:=u,cItem)},oJanela,060,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cGrupo",,)
oGet2 := TGet():New( 028,144,{|u| If(PCount()>0,cDesc:=u,cDesc)} ,oJanela,152,008,'',,CLR_BLACK,CLR_WHITE,,,,.T.,"",,,.F.,.F.,,.F.,.F.,"","cDesc",,)
// Funcao monta aheader
MHoBrw1()
//Funcao monta aColsIni
MCoBrw1()
oGet := MsNewGetDados():New(084,5,238,412,nOpc,'AllwaysTrue()','AllwaysTrue()','',,0,99,'AllwaysTrue()','','AllwaysTrue()',oJanela,aHeader,aColsIni )
oGet:Disable()
oGet:delline()
oGet:Enable()
oJanela:Activate(,,,.T.)
Return .T.
/*
user function DelLinha()
dbSelectarea("SZ4")
SZ4->(dbSetOrder(1))
SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM ))
IF aCols[nAt][Len (aHeader) +1]
BEGIN TRANSACTION
while !SZ4->(EOF()) .AND. M->C5_NUM == M->Z4_NPED TENTEI ISSO AQUI MAS NAO DEU CERTO,
RecLock( "SZ4" , .F. )
SZ4->(dbdelete())
4 SZ4->(MsUnLock())
SZ4->(DBSKIP())
ENDDO
END TRANSACTION
MsgAlert("Insumos Excluidos")
oJanela:Refresh()
oJanela:end()
else
oJanela:Refresh()
oJanela:end()
Return (.t.)*/
Static Function MHoBrw1()
DbSelectArea("SX3")
DbSetOrder(2)
DbSeek("Z4_COD")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_DESC")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_QTD")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_UM")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO, SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_VLRU")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE , SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
DbSeek("Z4_VLRT")
Aadd(aHeader,{Trim(X3Titulo()), SX3->X3_CAMPO,SX3->X3_PICTURE, SX3->X3_TAMANHO, SX3->X3_DECIMAL, "", "", SX3->X3_TIPO, "", "" } )
Return
Static Function MCoBrw1()
Local aAux := {}
dbSelectarea("SZ4")
dbSetorder(2)
IF SZ4->(dbSeek(xfilial("SZ4") + M->C5_NUM + aCols[n,1])) //PROCURA DADOS, CASO EXISTA
while M->C5_NUM = SZ4->Z4_NPED .and. SZ4->Z4_NITEM = aCols[n,1] // COMPARA A INCIDENCIA DOS DADOS,
AADD (aColsIni , {SZ4->Z4_COD ,SZ4->Z4_DESC , SZ4->Z4_QTD, SZ4->Z4_UM, SZ4->Z4_VLRU, SZ4->Z4_VLRT,.F.}) // CARREGA CAMPOS ENCONTRADOS ENQUANTO O WHILE FOR .T.
SZ4->(DBSKIP()) // TROCA LINHA
enddo
else
AADD (aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , 0,;
Space(TamSx3("Z4_UM")[1]), 0, 0,.F.})
endif
Return
Static Function GravDad
DbSelectArea("SZ4")
SZ4->(DbSetOrder(1))
For nI := 1 To Len(oGet:Acols)
IF SZ4->(dbSeek(xFilial("SZ4") + M->C5_NUM + oGet:aCols[nI][1] )) // IF PROCURA SE EXISTE, E RETORNA TRUE, SE TRUE
// Altera // RECLOCK .F. ALTERA OU EXCLUI.
// oGetDados:aCols [ Linha que voce quer ] [ Len(oGetDados:aHeader) + 1 ]
RecLock( "SZ4" , .F. )
IF oGet:aCols[nI][Len (aHeader) +1] // LINHAS X COLUNAS + 1 EXCLUIDO (DBDELETE)
SZ4->(dbdelete())
ELSE // ELSE = ALTERA CAMPOS DETERMINADOS.
SZ4->Z4_QTD := oGet:aCols[nI][3]
SZ4->Z4_VLRU := oGet:aCols[nI][5]
SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5])
ENDIF
Else // SE DBSEED NAO RETORNA, RECLOCK .T.
// INCLUSÃO
// Inclui
RecLock( "SZ4" , .T. )
//AADD(aColsIni , {Space(TamSx3("Z4_COD")[1]) ,Space(TamSx3("Z4_DESC")[1]) , Space(TamSx3("Z4_QTD")[1]),;
//Space(TamSx3("Z4_UM")[1]), Space(TamSx3("Z4_VLRU")[1]), Space(TamSx3("Z4_VLRT")[1]),.F.})
SZ4->Z4_FILIAL := xFilial("SZ4")
SZ4->Z4_COD := oGet:aCols[nI][1]
SZ4->Z4_DESC := oGet:aCols[nI][2]
SZ4->Z4_QTD := oGet:aCols[nI][3]
SZ4->Z4_UM := oGet:aCols[nI][4]
SZ4->Z4_VLRU := oGet:aCols[nI][5]
SZ4->Z4_VLRT := (oGet:aCols[nI][3]*oGet:aCols[nI][5])
SZ4->Z4_NITEM := aCols[n,1]
SZ4->Z4_NPED := M->C5_NUM
SZ4->(MsUnLock())
EndIf
Next nI
msginfo("Alterado com Sucesso")
oJanela:Refresh()
oJanela:end()
u_DelLinha
u_partediaria()
Return
user function extot(cCampo)
Local nValor := 0
Local nI := 0
IF cCampo = "Z4_QTD"
nValor := M->Z4_QTD * oGet:aCols[oGet:nAt][5]
else
nValor := M->Z4_VLRU * oGet:aCols[oGet:nAt][3]
ENDIF
oGet:refresh()
Return (nValor)
User Function valexist() //ESSA FUNÇÇÃO NAO ESTÁ FUNCIONANDO, EU CHAMEI ELA NA VALIDAÇÃO DO CAMPO MAS NÃO
// TÁ DANDO CERTO
// ELA DEVERIA IMPEDIR QUE REPITA ITENS NA TELA.
DbSelectArea("SZ4")
SZ4->(DbSetOrder(1))
//Z4_FILIAL+Z4_COD+Z4_NPED
For nI := 1 To Len( oGET:aCols )
Private cTxt := ""
cTxt := AllTrim(M->Z4_COD)
//If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM ))
If SZ4->(dbSeek(xFilial("SZ4")+M->cTxt+M->C5_NUM ))
MsgAlert ("Insumo Já Cadastrado")
Return .F.
oGet:disable()
Else
Return .T.
EndIf
Next nI
Return ()
/*User Function valexist()
DbSelectArea("SZ4")
SZ4->(DbSetOrder(3))
//Z4_FILIAL+Z4_COD+Z4_NPED
For nI := 1 To Len( oGET:aCols )
//If SZ4->(dbSeek(xFilial("SZ4")+oGet:aCols[nI][1]+M->C5_NUM ))
If SZ4->(dbSeek(xFilial("SZ4")+M->Z4_COD+M->C5_NUM ))
MsgAlert ("Insumo Já Cadastrado")
Return .F.
oGet:disable()
Else
Return .T.
oGet:enable()
EndIf
NEXT
Return ()
TÁ AI... vou anexar o txt tbm... agradeço a ajuda.
Por favor Acessar ou Registrar para participar da conversa.
- adalbertom
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
3 anos 9 meses atrás #32974
por adalbertom
Respondido por adalbertom no tópico Ponto de entrada M410LIOK
Meu amigo, vc teve solução para este seu problema? Esta acontecendo a mesma coisa aqui comigo.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ponto de entrada M410LIOK
Tempo para a criação da página:0.084 segundos