CONTEÚDO
- Dados Gerais
- Visão Geral
- Exemplos
- Tabelas Utilizadas
- Demais Informações
01. DADOS GERAIS
| Produto: | TOTVS Backoffice |
|---|---|
| Linha de Produto: | Linha Protheus |
| Segmento: | Backoffice SP |
| Módulo: | ESTOQUE E CUSTOS (SIGAEST) |
| Função: | SOLICITAÇÃO AO ARMAZEM (MATA105) |
02. VISÃO GERAL
Exemplo de rotina automática para incluir, alterar e excluir solicitação ao armazem.
03. EXEMPLOS
Abertura de ambiente sem usuário
O usuario se faz obrigatorio, caso controle de Alçadas estiver habilitado. Saiba mais na seção 5. Demais informações.
O modelo abaixo inclui uma solicitação com 4 itens, altera as quantidades ou exclui a solicitação, dependendo do parametro passado em Opcx.
Rotina Automática Inclusão
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function mymata105(Opcx)
Local lRet := .T.
Local aCab := {}
Local aItens := {}
Local nSaveSx8 := 0
Local cNumero := 'EXEAUT'
Local N := 0
Local nOpcx := 0
Private lMsErroAuto := .F.
Private lMsErroHelp := .T.
RpcClearEnv()
RpcSetType( 3 )
lRet := RpcSetEnv( 'T1', 'D MG 01 ' )
If ( !lRet )
ConOut( 'Problemas na Inicialização do Ambiente' )
Else
iF Opcx = '3'
nOpcx := 3
// Inclusão de Solicitação de Armazém --------------
/* nSaveSx8:= GetSx8Len()
cNumero := GetSx8Num( 'SCP', 'CP_NUM' )
*/
dbSelectArea( 'SB1' )
SB1->( dbSetOrder( 1 ) )
dbSelectArea( 'SCP' )
SCP->( dbSetOrder( 1 ) )
Aadd( aCab, { "CP_NUM" ,cNumero , Nil })
Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil })
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '01' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_001' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,10 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '02' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_002' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,20 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '03' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_003' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,30 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '04' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_004' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,40 , Nil } )
SB1->( dbSetOrder( 1 ) )
SCP->( dbSetOrder( 1 ) )
MsExecAuto( { | x, y, z | Mata105( x, y , z ) }, aCab, aItens , nOpcx )
If lMsErroAuto
If !__lSX8
RollBackSx8()
EndIf
MsgStop( 'Erro ao Executar o Processo' )
MostraErro()
lRet := .F.
Else
While ( GetSx8Len() > nSaveSx8 )
ConfirmSx8()
End
CONOUT ( 'Processo Executado' )
/*
CP_FILIAL CP_NUM CP_ITEM CP_PRODUTO CP_UM CP_QUANT CP_CONTA CP_DESCRI D_E_L_E_T_
--------- ------ ------- ------------------------------ ----- ---------------------- -------------------- -------------------------------------------------- ----------
D MG 01 EXEAUT 01 PRD_001 UN 10 PRD_001
D MG 01 EXEAUT 02 PRD_002 CT 20 PRD_002
D MG 01 EXEAUT 03 PRD_003 L 30 PRD_003
D MG 01 EXEAUT 04 PRD_004 TL 40 1110210 PRD_004
*/
EndIf
EndiF
iF Opcx = '5'
nOpcx := 5
// exclusão em laço de documento
Aadd( aCab, { "CP_NUM" ,cNumero , Nil })
Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil })
for N := 1 to 4
aItens := {}
Aadd( aItens, {} )
If n = 1
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '01' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_001' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,10 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
elseif n = 2
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '02' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_002' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" , 20 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
elseif n = 3
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '03' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_003' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,30 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'S' , Nil } )
elseiF N = 4
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '04' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_004' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,40 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
EndIf
//----------------------------------------------------------------------
SB1->( dbSetOrder( 1 ) )
SCP->( dbSetOrder( 1 ) )
MsExecAuto( { | x, y, z | Mata105( x, y , z ) }, aCab, aItens , nOpcx )
If lMsErroAuto
If !__lSX8
RollBackSx8()
EndIf
MsgStop( 'Erro ao Executar o Processo' )
MostraErro()
lRet := .F.
Else
While ( GetSx8Len() > nSaveSx8 )
ConfirmSx8()
End
CONOUT ( 'Processo Executado' )
/*
CP_FILIAL CP_NUM CP_ITEM CP_PRODUTO CP_UM CP_QUANT CP_CONTA CP_DESCRI D_E_L_E_T_
--------- ------ ------- ------------------------------ ----- ---------------------- -------------------- -------------------------------------------------- ----------
D MG 01 EXEAUT 01 PRD_001 UN 110 PRD_001
D MG 01 EXEAUT 02 PRD_002 CT 120 PRD_002
D MG 01 EXEAUT 03 PRD_003 L 130 PRD_003
D MG 01 EXEAUT 04 PRD_004 TL 140 1110210 PRD_004
*/
EndIf
NEXT N
EndIf
If Opcx = '4'
nOpcx := 4
// alteração de Solicitação de Armazém --------------
Aadd( aCab, { "CP_NUM" ,cNumero , Nil })
Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil })
aItens := {}
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '01' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_001' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,110 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '02' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_002' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,120 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '03' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_003' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,130 , Nil } )
Aadd( aItens, {} )
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" ,cNumero , Nil })
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '04' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_004' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,140 , Nil } )
//----------------------------------------------------------------------
SB1->( dbSetOrder( 1 ) )
SCP->( dbSetOrder( 1 ) )
MsExecAuto( { | x, y, z | Mata105( x, y , z ) }, aCab, aItens , nOpcx )
If lMsErroAuto
If !__lSX8
RollBackSx8()
EndIf
MsgStop( 'Erro ao Executar o Processo' )
MostraErro()
lRet := .F.
Else
While ( GetSx8Len() > nSaveSx8 )
ConfirmSx8()
End
CONOUT ( 'Processo Executado' )
/*
CP_FILIAL CP_NUM CP_ITEM CP_PRODUTO CP_UM CP_QUANT CP_CONTA CP_DESCRI D_E_L_E_T_
--------- ------ ------- ------------------------------ ----- ---------------------- -------------------- -------------------------------------------------- ----------
D MG 01 EXEAUT 01 PRD_001 UN 110 PRD_001 *
D MG 01 EXEAUT 02 PRD_002 CT 120 PRD_002 *
D MG 01 EXEAUT 03 PRD_003 L 130 PRD_003 *
D MG 01 EXEAUT 04 PRD_004 TL 140 1110210 PRD_004 *
*/
EndIf
endif
EndIf
O modelo abaixo Exclui 1 ou mais itens de uma solicitação com 4 itens.
IMPORTANTE!
Ao utilizar a rotina automatica MATA105 como exclusão, deve-se levar em consideração que a exclusão se dá apenas por item, não é possivel excluir por documento.
Rotina Automática Exclusão
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function mymata105()
Local lRet := .T.
Local aCab := {}
Local aItens := {}
Local nSaveSx8 := 0
Local cNumero := ''
Local N := 0
Local nOpcx := 0
Private lMsErroAuto := .F.
Private lMsErroHelp := .T.
RpcClearEnv()
RpcSetType( 3 )
lRet := RpcSetEnv( 'T1', 'D MG 01 ' )
If ( !lRet )
ConOut( 'Problemas na Inicialização do Ambiente' )
Else
//---------- nOpcx = 5 Exclusão de Solicitação de Armazém --------------
SB1->( dbSetOrder( 1 ) )
SCP->( dbSetOrder( 1 ) )
nOpcx := 5
Aadd( aCab, { "CP_NUM" ,cNumero , Nil })
Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil })
for N := 1 to 4
aItens := {}
Aadd( aItens, {} )
If n = 1
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" , 'cNumero' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '01' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_001' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,10 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
elseif n = 2
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" , 'cNumero' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '02' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_002' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" , 20 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
elseif n = 3
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" , 'cNumero' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '03' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_003' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,30 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'S' , Nil } )
elseiF N = 4
Aadd( aItens[ Len( aItens ) ],{"CP_NUM" , 'cNumero' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '04' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_004' , Nil } )
Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,40 , Nil } )
Aadd( aItens[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } )
EndIf
//----------------------------------------------------------------------
SB1->( dbSetOrder( 1 ) )
SCP->( dbSetOrder( 1 ) )
MsExecAuto( { | x, y, z | Mata105( x, y , z ) }, aCab, aItens , nOpcx )
If lMsErroAuto
If !__lSX8
RollBackSx8()
EndIf
MsgStop( 'Erro ao Executar o Processo' )
MostraErro()
lRet := .F.
Else
While ( GetSx8Len() > nSaveSx8 )
ConfirmSx8()
End
CONOUT ( 'Processo Executado' )
EndIf
NEXT N
EndIf
04. TABELAS UTILIZADAS
- SCP
05. DEMAIS INFORMAÇÕES
- PCOM09002 - Configuração para Controle de Alçadas por Entidade Contábil - Solicitação de Compras e Armazém
- RpcSetEnv
Import HTML Content
Visão Geral
Conteúdo das Ferramentas