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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas