Histórico da Página
CONTEÚDO
Índice | ||||||
---|---|---|---|---|---|---|
|
01. VISÃO GERAL
O cadastro de Serviços x Tarefas (WMSA070) permite configurar os serviços que serão informados obrigatoriamente em todos os documentos que geram integração com o WMS Protheus.
...
Informações | ||
---|---|---|
| ||
Essa documentação é válida apenas para o WMS com controle de estoque exclusivo (D14). |
02. CADASTRO
O cadastro de uma tarefa customizada, por ser realizado independentemente do tipo de serviço, pode ser uma saída, uma entrada ou um movimento interno.
...
Informações | ||
---|---|---|
| ||
Para que a função a executar seja exibida na consulta padrão do campo é necessário cadastrá-la por meio do módulo Configurador, no arquivo SX5 - Tabelas Genéricas (tabela L6). |
03. EXECUÇÃO
Toda função customizada receberá por parâmetro o objeto oMovimento e a variável cAcao, nesta ordem, onde:
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "RWMAKE.CH" /* +------------------------------------------------------------------------------+ |User Function Customizazada -> Recebe dois parâmetros, onde: | +------------------------------------------------------------------------------+ |oMovimento |Objeto que contém as informações da movimentação | | | Este objeto pode ser uma das instâncias das classes padrão: | | | Onde: | | | cAcao == '1' -> WMSBCCCustomizacao() herdada de da classe | | | WMSDTCMovimentosServicoArmazem() | | | cAcao == '2' -> WMSDTCMovimentosServicoArmazem() | +-----------+------------------------------------------------------------------+ |cAcao | Ponto onde foi chamada a função customizada: | | | '1' - Na execução da OS | | | '2' - Na execução do Coletor | +-----------+------------------------------------------------------------------+ */ /* ******************************************************************************** DE -> PARA = aParam150 -> oMovimento ******************************************************************************** aParam150 := Array(34) aParam150[01] -> oMovimento:oMovPrdLot:GetProduto() //-- Produto aParam150[02] -> oMovimento:oMovEndOri:GetArmazem() //-- Armazém Origem aParam150[03] -> oMovimento:oOrdServ:GetDocto() //-- Documento aParam150[04] -> oMovimento:oOrdServ:GetSerie() //-- Serie aParam150[05] -> oMovimento:oOrdServ:GetNumSeq() //-- Sequencial If cAcao == '1' aParam150[06] -> oMovimento:GetQuant() //-- Quantidade Ordem Serviço Else aParam150[06] -> oMovimento:GetQtdMov() //-- Quantidade Movimentação EndIf aParam150[07] -> Date() //-- Data da Movimentacao aParam150[08] -> Time() //-- Hora da Movimentacao aParam150[09] -> oMovimento:oMovServic:GetServico() //-- Servico aParam150[10] -> oMovimento:oMovTarefa:GetTarefa() //-- Tarefa aParam150[11] -> oMovimento:oMovTarefa:GetAtivid() //-- Atividade aParam150[12] -> oMovimento:oOrdServ:GetCliFor() //-- Cliente/Fornecedor aParam150[13] -> oMovimento:oOrdServ:GetLoja() //-- Loja aParam150[14] -> Nil //-- Tipo da Nota Fiscal - Obsoleto aParam150[15] -> Nil //-- Item da Nota Fiscal - Obsoleto aParam150[16] -> "0" //-- Tipo de Movimentacao - Obsoleto aParam150[17] -> oMovimento:oOrdServ:GetOrigem() //-- Origem de Movimentacao aParam150[18] -> oMovimento:oMovPrdLot:GetLoteCtl() //-- Lote aParam150[19] -> oMovimento:oMovPrdLot:GetNumLote() //-- Sub-Lote aParam150[20] -> oMovimento:oMovEndOri:GetEnder() //-- Endereco Origem aParam150[21] -> oMovimento:oMovEndOri:GetEstFis() //-- Estrutura Fisica Origem aParam150[22] -> oMovimento:oOrdServ:GetRegra() //-- Regra de Apanhe (1=LOTE/2=NUMERO DE SERIE/3=DATA) aParam150[23] -> oMovimento:oOrdServ:GetCarga() //-- Carga aParam150[24] -> oMovimento:GetIdUnit() //-- Nr. do Pallet aParam150[25] -> oMovimento:oMovEndDes:GetArmazem() //-- Armazém Destino aParam150[26] -> oMovimento:oMovEndDes:GetEnder() //-- Endereco Destino aParam150[27] -> oMovimento:oMovEndDes:GetEstFis() //-- Estrutura Fisica Destino aParam150[28] -> oMovimento:oMovServic:GetOrdem() //-- Ordem da Tarefa aParam150[29] -> oMovimento:oMovTarefa:GetOrdem() //-- Ordem da Atividade aParam150[30] -> oMovimento:oMovTarefa:GetFuncao() //-- Funcao do Recurso Humano aParam150[31] -> oMovimento:oMovTarefa:GetTpRec() //-- Recurso Fisico aParam150[32] -> oMovimento:oOrdServ:GetIdDCF() //-- Identificador do DCF aParam150[34] -> oMovimento:GetIdMovto() //-- Identificador exclusivo do Movimento no D12 */ User Function DLAponta(oMovimento,cAcao) Local lRet := .T. // Executa as ações complementares // Para efeito de teste esta função vai replicar o registro da ordem de serviço (DCF) para a tabela D12 // Ou seja, irá gerar um registro de movimentação (convocação) exatamente igual à DCF If cAcao == '1' // Na execução da OS // Se for um serviço de tipo 1 - Entrada, atribui o endereço destino igual ao origem, // pensando que a tarefa customizada será executada ainda na doca de entrada If oMovimento:oMovServic:GetTipo() == "1" .And. Empty(oMovimento:oMovEndDes:GetEnder()) oMovimento:oMovEndDes:SetEnder(oMovimento:oMovEndOri:GetEnder()) // Se for um serviço de tipo 2 - Saída, atribui o endereço origem igual ao destino, // pensando que a tarefa customizada será executada apenas na doca de saída ElseIf oMovimento:oMovServic:GetTipo() == "2" .And. Empty(oMovimento:oMovEndOri:GetEnder()) oMovimento:oMovEndOri:SetEnder(oMovimento:oMovEndDes:GetEnder()) EndIf //-- Status movimento oMovimento:cStatus := '4' //Copiando a quantidade para o movimento oMovimento:SetQtdMov(oMovimento:GetQuant()) If !oMovimento:AssignD12() lRet := .F. EndIf ElseIf cAcao == '2' // Na execução do Coletor lRet := U_AptColUsr(oMovimento) // Chama rotina customizada de coletor EndIf Return lRet // Função para simples apontamento de tempo. Abrirá no coletor uma tela para que o // usuário informe a hora de início da movimentação. User Function AptColUsr(oMovimento) Local lRet := .T. // Se o movimento não tiver sido iniciado If oMovimento:GetStatus() $ '3|4' .And. Empty(oMovimento:GetDataIni()) If (lRet := WmsQuestion("Confirma o inicio da atividade?")) oMovimento:SetRecHum(__cUserID) oMovimento:SetStatus("3") oMovimento:SetDataIni(Date()) oMovimento:SetHoraIni(Time()) oMovimento:UpdateD12() EndIf ElseIf oMovimento:GetStatus() == '3' .And. !Empty(oMovimento:GetDataIni()) If (lRet := WmsQuestion("Confirma a finalização da atividade?")) oMovimento:SetStatus("1") oMovimento:SetRecHum(__cUserID) oMovimento:SetDataFim(Date()) oMovimento:SetHoraFim(Time()) oMovimento:UpdateD12() EndIf Else WMSVTAviso("Atividade inconsistente.") lRet := .F. EndIf WMSAltSts(.F.) // Informa para o produto padrão que não deve alterar a situação do movimento Return lRet |
04. ASSUNTOS RELACIONADOS
Documento de Referência
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas