CONTEÚDO
- Dados Gerais
- Visão Geral
- Exemplos
- Tabelas Utilizadas
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
O modelo abaixo inclui uma solicitação com 4 itens.
Rotina Automática Inclusã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 = 3 Inclusão de Solicitação de Armazém -------------- nOpcx := 3 nSaveSx8:= GetSx8Len() cNumero := GetSx8Num( 'SCP', 'CP_NUM' ) dbSelectArea( 'SB1' ) SB1->( dbSetOrder( 1 ) ) dbSelectArea( 'SCP' ) SCP->( dbSetOrder( 1 ) ) If nOpcx == 3 While SCP->( dbSeek( xFilial( 'SCP' ) + cNumero ) ) ConfirmSx8() cNumero := GetSx8Num('SCP', 'CP_NUM') EndDo EndIf Aadd( aCab, { "CP_NUM" ,cNumero , Nil }) Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil }) Aadd( aItens, {} ) 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_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_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_ITEM" , '04' , Nil } ) Aadd( aItens[ Len( aItens ) ],{"CP_PRODUTO" ,'PRD_004' , Nil } ) Aadd( aItens[ Len( aItens ) ],{"CP_QUANT" ,40 , Nil } ) //---------- nOpcx = 5 Exclusão de Solicitação de Armazém -------------- 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
O modelo abaixo altera uma solicitação com 4 itens
Rotina Automática alteraçã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 ' ) //---------- nOpcx = 4 Alteração de Solicitação de Armazém ------------- //-----------------------------------------------------------------------------// // AUTDELETA - Opcional // Atributo para Definir se o Item que pertence a Solicitação de Armazém deve // ser Excluído ou Não no processo de Alteração. // - N = Não Deve Ser Excluído // - S = Sim Deve Ser Excluído //-----------------------------------------------------------------------------// nOpcx := 4 Aadd( aCab, { "CP_NUM" ,cNumero , Nil }) Aadd( aCab, { "CP_EMISSAO" ,dDataBase , Nil }) Aadd( aItens, {} ) Aadd( aItens[ Len( aItens ) ],{"CP_ITEM" , '01' , Nil } ) Aadd( aItens[ Len( aItens ) ],{"CP_NUM" , 'cNumero' , 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 } ) Aadd( aItens, {} ) 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[ Len( aItens ) ],{"AUTDELETA" ,'N' , Nil } ) Aadd( aItens, {} ) 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 } ) Aadd( aItens, {} ) 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 } ) 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' )
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_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_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_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_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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas