× Linguagem de Programação ADVPL

Perguntas Ajuda para criar botão de aprovaçao

Mais
10 anos 5 meses atrás #23172 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.

Mais
10 anos 5 meses atrás #23179 por lalberto
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.

Mais
10 anos 5 meses atrás #23196 por Lucas.Ferreira
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

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23198 por lalberto
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.

Mais
10 anos 5 meses atrás - 10 anos 5 meses atrás #23200 por Lucas.Ferreira
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.

Mais
10 anos 5 meses atrás #23201 por Lucas.Ferreira
#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

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.109 segundos
Joomla templates by a4joomla