Versões: | Protheus 10 |
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível às Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Português (Brasil) |
OBJETIVO: Esta rotina é executada toda vez que for identificada a necessidade de algum produto/material. Observação: A solicitação ao armazém permite gerar requisições de materiais (Pré-requisições), não vinculadas a uma ordem de produção. A rotina Solicitação ao Armazém controla os produtos solicitados por um determinado departamento ou usuário ao armazém. O Sistema permite o acompanhamento dos saldos, quantidades e compra do material. Identificada a necessidade, o usuário deve incluir a solicitação ao armazém, o que desencadeará a execução de uma série de processos controlados pelo sistema.
MATA105.PRX
MATA105 - Solicitação ao Almoxarifado ( [ PARAMIXB1 ] [ PARAMIXB2 ] [ PARAMIXB3 ] ) --> NIL
Exemplos
User Function ROTMATA105()
Local lRet := .T.
Local aCab := {}
Local aItens := {}
Local nSaveSx8 := 0
Local cNumero := ''
Local nOpcx := 0
Private lMsErroAuto := .F.
Private lMsErroHelp := .T.
RpcClearEnv()
RpcSetType( 3 )
lRet := RpcSetEnv( '99', '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 = 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 } )
//---------- nOpcx = 5 Exclusão de Solicitação de Armazém --------------
nOpcx := 5
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 } )
//----------------------------------------------------------------------
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
MsgInfo( 'Processo Executado' )
EndIf
EndIf
Return lRet
Nome | Tipo | Descrição | Default | Obrigatório | Referência | ||||||||||||
PARAMIXB1 | Array of Record | Cabeçalho da Solicitação ao Almoxarifado | |||||||||||||||
PARAMIXB2 | array_of_record | Itens da Solicitação ao Almoxarifado | |||||||||||||||
PARAMIXB3 | numerico | Opção escolhida: 3-Inclusão 4-Alteração 5-Exclusão |