Árvore de páginas


CONTEÚDO

  1. Dados Gerais
  2. Visão Geral
  3. Exemplos
  4. 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