- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda para criar botão de aprovaçao
×
Linguagem de Programação ADVPL
Perguntas Ajuda para criar botão de aprovaçao
- Lucas.Ferreira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 7
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23172
por Lucas.Ferreira
Ajuda para criar botão de aprovaçao foi criado por Lucas.Ferreira
Boa Noite , eu queria saber como q eu faço um botão de aprovação do estoque e que ele só libere do estoque quando for aprovado
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 5 meses atrás #23179
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ajuda para criar botão de aprovaçao
Lucas poderia detalhar melhor sua necessidade, aonde deseja criar este botão, é uma tela customizada ? aprovado aonde ? no crédito ?
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Lucas.Ferreira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 7
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23196
por Lucas.Ferreira
Respondido por Lucas.Ferreira no tópico Ajuda para criar botão de aprovaçao
eu preciso q quando o usuário clicar em "ok" na modelo 2 ela salve e faça ZXC_quant:=ZXC_quant-ZZZ_quant
ZXC seria o saldo do produto
ZZZ seria a quantidade a requisitar
ZXC seria o saldo do produto
ZZZ seria a quantidade a requisitar
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
10 anos 5 meses atrás #23198
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ajuda para criar botão de aprovaçao
Lucas vc já tem o fonte ? compacta e anexa aqui.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Lucas.Ferreira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 7
- Obrigados Recebidos: 0
10 anos 5 meses atrás - 10 anos 5 meses atrás #23200
por Lucas.Ferreira
Respondido por Lucas.Ferreira no tópico Ajuda para criar botão de aprovaçao
ta ai o fonte
Ultima edição: 10 anos 5 meses atrás por Lucas.Ferreira.
Por favor Acessar ou Registrar para participar da conversa.
- Lucas.Ferreira
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 7
- Obrigados Recebidos: 0
10 anos 5 meses atrás #23201
por Lucas.Ferreira
Respondido por Lucas.Ferreira no tópico Ajuda para criar botão de aprovaçao
#include "protheus.ch"
USER FUNCTION CrtmB01()
Local cAlias:= "ZC6"
Private cCadastro:= "Pedido de vendas"
Private aRotina:= {}
AADD(aRotina,{"Pesquisar","AxPesqui" ,0,1})
AADD(aRotina,{"Visualizar","AxVisual" ,0,2})
AADD(aRotina,{"Incluir","U_CrtM2Pv01" ,0,3})
AADD(aRotina,{"Alterar","AxAltera" ,0,4})
AADD(aRotina,{"Excluir","AxDeleta" ,0,5})
dbSelectArea(cAlias)
dbSetOrder(1)
mBrowse( 6,1,22,75,cAlias)
Return
User Function CrtM2Pv01()
aAdvSize := MsAdvSize( NIL ,.F. )
aCordW := Array(Len(aAdvSize))
aCordW[1] := aAdvSize[7]
aCordW[2] := 0
aCordW[3] := aAdvSize[6]
aCordW[4] := aAdvSize[5]
nOpcx:=3
//+
+
//¦ Montando aHeader para a Getdados ¦
//+
+
dbSelectArea("Sx3")
dbSeek("ZC6")
nUsado:=0
aHeader:={}
While !Eof().And.(x3_arquivo == "ZC6")
IF X3USO(x3_usado) .And. cNivel >= x3_nivel
nUsado:=nUsado+1
AADD(aHeader,{ TRIM(x3_titulo),x3_campo,;
x3_picture,;
x3_tamanho,;
x3_decimal,;
"ExecBlock('Md2valid',.f.,.f.)",;
x3_usado,;
x3_tipo,;
x3_arquivo,;
x3_context } )
Endif
dbSkip()
End
//+
+
//¦ Montando aCols para a GetDados ¦
//+
+
aCols:=Array(1,nUsado+1)
dbSelectArea("Sx3")
dbSeek("ZC6")
nUsado:=0
While !Eof().And.(x3_arquivo == "ZC6")
IF X3USO(x3_usado) .And. cNivel >= x3_nivel
nUsado:=nUsado+1
IF nOpcx == 3
IF x3_tipo == "C"
aCOLS[1][nUsado] := SPACE(x3_tamanho)
Elseif x3_tipo == "N"
aCOLS[1][nUsado] := 0
Elseif x3_tipo == "D"
aCOLS[1][nUsado] := dDataBase
Elseif x3_tipo == "M"
aCOLS[1][nUsado] := ""
Else
aCOLS[1][nUsado] := .T.
Endif
Endif
Endif
DbSkip()
End
aCOLS[1][nUsado+1] := .F.
//+
+
//¦ Variaveis do Cabecalho do Modelo 2 ¦
//+
+
cNumero:=GETSXENUM('ZC6','ZC6_COD')
cRequerente:= cUserName
dData :=Date()
dData2 :=Date()
cTime :=TIME()
cDesc :=Space(15)
cCodCli:= space(34)
nCpf :=Space(12)
cLoja :=Space(2)
cCodTrans:=Space(4)
cTransp:=Space(25)
cCodVend:=Space(4)
cVend:=Space(15)
//+
+
//¦ Variaveis do Rodape do Modelo 2
//+
+
nLinGetD:=0
//+
+
//¦ Titulo da Janela ¦
//+
+
cTitulo:="Pedido de vendas"
//+
+
//¦ Array com descricao dos campos do Cabecalho ¦
//+
+
aC:={}
#IFDEF WINDOWS
AADD(aC,{"cNumero",{15,01},'Número','999999',,,})
AADD(aC,{"cRequerente",{15,100},"Requerente","@!",,,})
AADD(aC,{"cTime",{15,250},"Hora",,,,})
AADD(aC,{"dData",{15,350} ,"Data de Emissao",,,,})
AADD(aC,{"dData2",{15,470} ,"Nessecidade",,,,})
AADD(aC,{"cCodCli",{30,01},"Cod. Fornecedor",'999999',,,})
AADD(aC,{"cLoja",{30,120},"Loja",'99',,,})
AADD(aC,{"cDesc",{30,200},"Descrição","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
AADD(aC,{"nCpf",{30,400} ,"CPF","999.999.999-99",,,})
AADD(aC,{"cCodTrans",{45,01} ,"Código","9999",,,})
AADD(aC,{"cTransp",{45,80} ,"Transportadora","@A",,,})
AADD(aC,{"cCodVend",{45,320},"Cod. vendedor","9999",,,})
AADD(aC,{"cVend",{45,420},"Vendedor","@A",,,})
#ELSE
AADD(aC,{"cNumero" ,{6,5} ,'Número','@E',,,})
AADD(aC,{"crequerente",{6,50},"Requerente","@!",,,})
AADD(aC,{"dData",{7,5} ,"Data de Emissao",,,,})
AADD(aC,{"cCliente",{6,5} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
#ENDIF
//+
+
//¦ Array com descricao dos campos do Rodape ¦
//+
+
aR:={}
#IFDEF WINDOWS
AADD(aR,{"nLinGetD" ,{01,01},"Itens", "@E 999",,,.F.})
#ELSE
AADD(aR,{"nLinGetD" ,{01,01},"Linha na GetDados","@E 999",,,.F.})
#ENDIF
//+
+
//¦ Array com coordenadas da GetDados no modelo2 ¦
//+
+
#IFDEF WINDOWS
aCGD:={44,5,118,315}
#ELSE
aCGD:={80,005,050,300}
#ENDIF
//+
+
//¦ Validacoes na GetDados da Modelo 2 ¦
//+
+
cLinhaOk := "ExecBlock('Md2LinOk',.f.,.f.)"
cTudoOk := "ExecBlock('Md2TudOk',.f.,.f.)"
//+
+
//¦ Chamada da Modelo2 ¦
//+
+
// lRet = .t. se confirmou
// lRet = .f. se cancelou
lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk,,nil,,,aCordW, .T., .T., )
Return
User Function Md2LinOk()
Local aArea:= GetArea()
Local nI:= 0
Local nX:= 0
dbSelectArea("ZC6")
dbSetOrder(1)
For nI:= 1 To Len( aCOLS)
If ! aCOLS[nI,Len(aHeader)+1]
RecLock("ZC6",.T.)
ZC6->ZC6_FILIAL := xFilial("ZC6")
ZC6->ZC6_CODIGO := cCodigo
ZC6->ZC6_DATA := dData
For nX:= 1 To Len( aHeader)
FieldPut( FieldPos( aHeader[nX, 2] ), aCOLS[nI, nX] )
Next nX
MsUnLock()
Endif
Next nI
RestArea(aArea)
Return
User Function Md2TudOk()
Return .T.
User Function Md2Valid()
Return
USER FUNCTION CrtmB01()
Local cAlias:= "ZC6"
Private cCadastro:= "Pedido de vendas"
Private aRotina:= {}
AADD(aRotina,{"Pesquisar","AxPesqui" ,0,1})
AADD(aRotina,{"Visualizar","AxVisual" ,0,2})
AADD(aRotina,{"Incluir","U_CrtM2Pv01" ,0,3})
AADD(aRotina,{"Alterar","AxAltera" ,0,4})
AADD(aRotina,{"Excluir","AxDeleta" ,0,5})
dbSelectArea(cAlias)
dbSetOrder(1)
mBrowse( 6,1,22,75,cAlias)
Return
User Function CrtM2Pv01()
aAdvSize := MsAdvSize( NIL ,.F. )
aCordW := Array(Len(aAdvSize))
aCordW[1] := aAdvSize[7]
aCordW[2] := 0
aCordW[3] := aAdvSize[6]
aCordW[4] := aAdvSize[5]
nOpcx:=3
//+
+
//¦ Montando aHeader para a Getdados ¦
//+
+
dbSelectArea("Sx3")
dbSeek("ZC6")
nUsado:=0
aHeader:={}
While !Eof().And.(x3_arquivo == "ZC6")
IF X3USO(x3_usado) .And. cNivel >= x3_nivel
nUsado:=nUsado+1
AADD(aHeader,{ TRIM(x3_titulo),x3_campo,;
x3_picture,;
x3_tamanho,;
x3_decimal,;
"ExecBlock('Md2valid',.f.,.f.)",;
x3_usado,;
x3_tipo,;
x3_arquivo,;
x3_context } )
Endif
dbSkip()
End
//+
+
//¦ Montando aCols para a GetDados ¦
//+
+
aCols:=Array(1,nUsado+1)
dbSelectArea("Sx3")
dbSeek("ZC6")
nUsado:=0
While !Eof().And.(x3_arquivo == "ZC6")
IF X3USO(x3_usado) .And. cNivel >= x3_nivel
nUsado:=nUsado+1
IF nOpcx == 3
IF x3_tipo == "C"
aCOLS[1][nUsado] := SPACE(x3_tamanho)
Elseif x3_tipo == "N"
aCOLS[1][nUsado] := 0
Elseif x3_tipo == "D"
aCOLS[1][nUsado] := dDataBase
Elseif x3_tipo == "M"
aCOLS[1][nUsado] := ""
Else
aCOLS[1][nUsado] := .T.
Endif
Endif
Endif
DbSkip()
End
aCOLS[1][nUsado+1] := .F.
//+
+
//¦ Variaveis do Cabecalho do Modelo 2 ¦
//+
+
cNumero:=GETSXENUM('ZC6','ZC6_COD')
cRequerente:= cUserName
dData :=Date()
dData2 :=Date()
cTime :=TIME()
cDesc :=Space(15)
cCodCli:= space(34)
nCpf :=Space(12)
cLoja :=Space(2)
cCodTrans:=Space(4)
cTransp:=Space(25)
cCodVend:=Space(4)
cVend:=Space(15)
//+
+
//¦ Variaveis do Rodape do Modelo 2
//+
+
nLinGetD:=0
//+
+
//¦ Titulo da Janela ¦
//+
+
cTitulo:="Pedido de vendas"
//+
+
//¦ Array com descricao dos campos do Cabecalho ¦
//+
+
aC:={}
#IFDEF WINDOWS
AADD(aC,{"cNumero",{15,01},'Número','999999',,,})
AADD(aC,{"cRequerente",{15,100},"Requerente","@!",,,})
AADD(aC,{"cTime",{15,250},"Hora",,,,})
AADD(aC,{"dData",{15,350} ,"Data de Emissao",,,,})
AADD(aC,{"dData2",{15,470} ,"Nessecidade",,,,})
AADD(aC,{"cCodCli",{30,01},"Cod. Fornecedor",'999999',,,})
AADD(aC,{"cLoja",{30,120},"Loja",'99',,,})
AADD(aC,{"cDesc",{30,200},"Descrição","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
AADD(aC,{"nCpf",{30,400} ,"CPF","999.999.999-99",,,})
AADD(aC,{"cCodTrans",{45,01} ,"Código","9999",,,})
AADD(aC,{"cTransp",{45,80} ,"Transportadora","@A",,,})
AADD(aC,{"cCodVend",{45,320},"Cod. vendedor","9999",,,})
AADD(aC,{"cVend",{45,420},"Vendedor","@A",,,})
#ELSE
AADD(aC,{"cNumero" ,{6,5} ,'Número','@E',,,})
AADD(aC,{"crequerente",{6,50},"Requerente","@!",,,})
AADD(aC,{"dData",{7,5} ,"Data de Emissao",,,,})
AADD(aC,{"cCliente",{6,5} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})
#ENDIF
//+
+
//¦ Array com descricao dos campos do Rodape ¦
//+
+
aR:={}
#IFDEF WINDOWS
AADD(aR,{"nLinGetD" ,{01,01},"Itens", "@E 999",,,.F.})
#ELSE
AADD(aR,{"nLinGetD" ,{01,01},"Linha na GetDados","@E 999",,,.F.})
#ENDIF
//+
+
//¦ Array com coordenadas da GetDados no modelo2 ¦
//+
+
#IFDEF WINDOWS
aCGD:={44,5,118,315}
#ELSE
aCGD:={80,005,050,300}
#ENDIF
//+
+
//¦ Validacoes na GetDados da Modelo 2 ¦
//+
+
cLinhaOk := "ExecBlock('Md2LinOk',.f.,.f.)"
cTudoOk := "ExecBlock('Md2TudOk',.f.,.f.)"
//+
+
//¦ Chamada da Modelo2 ¦
//+
+
// lRet = .t. se confirmou
// lRet = .f. se cancelou
lRet:=Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk,,nil,,,aCordW, .T., .T., )
Return
User Function Md2LinOk()
Local aArea:= GetArea()
Local nI:= 0
Local nX:= 0
dbSelectArea("ZC6")
dbSetOrder(1)
For nI:= 1 To Len( aCOLS)
If ! aCOLS[nI,Len(aHeader)+1]
RecLock("ZC6",.T.)
ZC6->ZC6_FILIAL := xFilial("ZC6")
ZC6->ZC6_CODIGO := cCodigo
ZC6->ZC6_DATA := dData
For nX:= 1 To Len( aHeader)
FieldPut( FieldPos( aHeader[nX, 2] ), aCOLS[nI, nX] )
Next nX
MsUnLock()
Endif
Next nI
RestArea(aArea)
Return
User Function Md2TudOk()
Return .T.
User Function Md2Valid()
Return
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ajuda para criar botão de aprovaçao
Tempo para a criação da página:0.109 segundos