Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

 

Especificação

Produto

Microsiga Protheus

Módulo

SIGAWMS

Segmento Executor

Distribuição e Logística

Projeto1

M_DL_WMS002

IRM1

PCREQ-_

Requisito1

PCREQ-_

Subtarefa1

PDRDL-_

Chamado2

 

Release de Entrega Planejada

11.80.14

Réplica

 

País

(x) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>. 

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

 O plano de expedição consiste na aglutinação dos mesmos produtos de diferentes cargas/pedidos ao executar uma ordem de serviço de expedição. A ideia é que seja possível selecionar as ordens de serviço que serão consideradas na aglutinação. Neste primeiro momento, é levado em consideração apenas produtos de pedidos da mesma montagem de carga, posteriormente será criado uma tela para selecionar inclusive pedidos de cargas diferentes. Esta ação otimiza a busca de saldo no armazém priorizando a expedição de endereços de tipo pulmão quando a junção dos pedidos que compõe o plano solicitarem uma quantidade maior que uma norma do produto.

Definição da Regra de Negócio

 

Alteração:

A execução das ordens de serviço pelo WMSA150 realiza uma busca das DCF selecionadas e uma por uma posiciona no registro e chama o método ExecuteDCF, a ideia é logo após o posicionamento utilizar das características do registro para buscar as ordens que podem ser aglutinadas. Encontrado os dados, será somado a variável da quantidade do DCF posicionado no objeto com as quantidades de todas as ordens de serviço do array e a partir desse ponto segue o fluxo normal, mas será precisa alterar também o status de cada DCF, para que não seja executada em seguida, e a criação da DCR para respeitar o array de ordens aglutinadas encontradas, o que mantém o funcionamento do estorno.

Detalhes Alteração:

Primeiramente, deve conter no dicionário o parâmetro MV_WMSACEX que pode ser criado aplicando o update WMSU0033, acessado via WMSUMAIN.

Alterar ser alterado a classe WMSDTCOrdemServico com a criação dos atributos:

  • cPlnExp > Código do plano de expedição
  • aOrdAglu > Array de ordens de serviço aglutinadas

*Lembrando que a criação de cada atributo precisa vir com os métodos Getters e Setters correspondentes.

Como o atributo cPlnExp da classe corresponde ao campo DCF_PLNEXP, ele precisa ser considerado nos métodos LoadData (utilizar FieldPos ao atribuir o valor) , RecordDCF e UpdateDCF (utilizar o método Getter e Setter criado).

 

Quando o parâmetro MV_WMSACEX for diferente de '0' e o serviço em execução for de separação (Self:oServico:ChkSepara()), dentro do método ExecuteDCF da classe WMSDTCOrdemServicoExecute logo após a validação se o 'Self:cIdDCF' está preenchido, criar a chamada de um método que realizará a busca das ordens de serviço semelhantes e adicionará ao array aOrdAglu. Este método precisa ser criado na WMSDTCOrdemServico para futuras aplicações.

O select de busca precisa prever a informação do campo DCF_PLNEXP e para o filtro deve ser utilizado os atributos da classe.

Quando o atributo cPlnExp possuir valor diferente de vazio, o filtro precisa respeitar o plano de expedição, serviço, armazém, produto, lote, sub-lote, endereço e status diferente de '3=Executado', quando estiver vazio, precisa considerar a carga e a função WMSCarga() ao invés do plano de expedição. Quando MV_WMSACEX for '2', considerar no filtro o cliente e loja, conforme exemplo:

 

         DCF.DCF_FILIAL = '"+xFilial("DCF")+"'

AND DCF.DCF_SERVIC = '"+Self:oServico:GetServico()+"'

AND DCF.DCF_CODPRO = '"+Self:oProdLote:GetProduto()+"'

If MV_WMSACES == '2' // Se aglutina por cliente

AND DCF.DCF_CLIFOR = '"+Self:GetCliFor()+"'

AND DCF.DCF_LOJA   = '"+Self:GetLoja()+"'

EndIf

If !Empty(Self:GetPlnExp())

AND DCF.DCF_PLNEXP = '"+Self:GetPlnExp()+"'

ElseIf WmsCarga(Self:GetCarga())

AND DCF.DCF_CARGA = '"+Self:GetCarga()+"'

EndIf

AND DCF.DCF_LOCAL  = '"+Self:oOrdEndOri:GetArmazem()+"'

AND DCF.DCF_ENDER  = '"+Self:oOrdEndOri:GetEnder()+"'

AND DCF.DCF_LOTECT = '"+Self:oProdLote:GetLoteCtl()+"'

AND DCF.DCF_NUMLOT = '"+Self:oProdLote:GetNumLote()+"'

AND DCF.DCF_STSERV <> '3'

AND DCF.D_E_L_E_T_ = ' '

*Importante manter esta ordem no filtro do select para que o banco de dados utilize do índice mais apropriado. Deixar um comentário a respeito.

Retornar os campos DCF_ID, DCF_NUMSEQ, DCF_QUANT, R_E_C_N_O_ e adicionar cada linha no array aOrdAglu.

Incrementar em uma variável o DCF_QUANT para que depois seja substituído a quantidade do objeto Self:nQuant pela quantidade sumarizada.

 

Voltando para o método ExecuteDCF da classe WMSDTCOrdemServicoExecute, alterar o bloco que atualiza o status da DCF posicionada no objeto para repetir para cada recno do aOrdAglu quando Len(aOrdAglu) > 0.

O bloco que precisa repetir para atualizar o status é:

// Atualiza status

Self:SetStServ('3')

Self:SetOk("")

Self:UpdateDCF()

Self:UpdStatus()

*Importante manter o funcionamento atual do método quando o sistema não utilizar a funcionalidade, ou seja, quando o parâmetro MV_WMSACEX for igual a '0'.

Porém será preciso reposicionar o objeto para atualizar cada DCF. Utilizar o método GoToDCF(nRecno), passando o recno de cada DCF do array por parâmetro. Ao terminar o laço de atualização do status, é preciso voltar a DCF posicionada original para que o Self:UnLockDCF() realize sua função corretamente, assim como o restante do processo.

 

Assim como a atualização do status para cada ordem de serviço, é preciso criar os registros DCR. Na classe WMSDTCMovimentosServicoArmazem método RecordD12, alterar o bloco "Grava relacionamento movimento serviço armazém" para cada ordem de serviço do array quando Len(aOrdAglu) > 0, substituindo...

oRelacMov:SetIdDCF(cIdDCF)

oRelacMov:SetSequen(cSequen)

Pelos valores do array aOrdAglu, assim como a quantidade de cada DCF. Utilizar de uma variável auxiliar para atribuir a quantidade do array para não alterar a variável utilizada atualmente.

Os registros DCR desse movimento precisam ter o mesmo DCR_IDORI, que seria o iddcf do próprio objeto, não precisando ser alterado. DCR_IDMOV e DCR_IDOPER com o mesmo valor do original. DCR_QUANT, DCF_IDDCF e DCR_SEQUEN correspondente a cada registro do array.

Neste passo não é preciso voltar o objeto oRelacMov para o valor posicionado original, mas ele deve continuar com o funcionamento atual quando Len(aOrdAglu) == 0 e, como não estamos na classe WMSDTCOrdemServico, validar se o array tem sua definição correta (Type("Self:oOrdServ:aAgluDCF") == "A").

 

<Na tabela abaixo informe quais são as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina>.

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMSDTCOrdemServico

Alteração

 

 

WMSDTCOrdemServicoExecute

Alteração

 

 

WMSDTCMovimentosServicoArmazem

Alteração

 

 

 

Exemplo de Aplicação:


  • Criar o campo “% Mínimo Espécie” (AAA_PERESP) onde o usuário informará o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação.
  • Criar o campo “Referência Mínima para Cálculo” (AAA_REFCAL) onde o usuário informará um dos 4 valores disponíveis para pagamento das mensalidades  como a referência mínima para calcular o débito total do aluno.
  • Criar o parâmetro MV_ACPARNE que definirá se as informações de “% Mínimo Espécie” e “Referência Mínima para Cálculo” serão obrigatórias.
  • O parâmetro MV_ACPARNE deve ter as seguintes opções: 1=Obrigatório e 2=Opcional. Deve ser inicializado como opcional>.

 

Tabelas Utilizadas

  • DCF – Ordem de Serviço

Opcional

Protótipo de Tela

 

<Caso necessário inclua protótipos de telas com o objetivo de facilitar o entendimento do requisito, apresentar conceitos e funcionalidades do software>.

 

Protótipo 01

 

 

 Image Removed

 

 

 

 

 

 

  • D12 – Movimentos Serviço WMS
  • DCR – Relacionamento Movimentos Distribuição

 

Opcional

Fluxo do Processo

 

<Nesta etapa incluir representações gráficas que descrevam o problema a ser resolvido e o sistema a ser desenvolvido. Exemplo: Diagrama - Caso de Uso, Diagrama de Atividades, Diagrama de Classes, Diagrama de Entidade e Relacionamento e Diagrama de Sequência>. 

Opcional

Dicionário de Dados

 


Arquivo ou Código do Script: AAA – Negociação Financeira / *Versao=CP.2014.12_03*/

  

Índice

Chave

01

<FI9_FILIAL+FI9_IDDARF+FI9_STATUS>

02

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_EMISS+FI9_IDDARF>

03

<FI9_FILIAL+FI9_FORNEC+ FI9_LOJA+FI9_PREFIX+FI9_NUM+FI9_PARCEL+FI9_TIPO>

DCF – Ordem de Serviço

  

Campo

DCF_PLNEXP

Tipo

C

Tamanho

6

Valor Inicial

" "

Campo

<AAA_PERESP>

Tipo

<N>

Tamanho

<6>

Valor Inicial

<Varia de acordo com o tipo informado. Por exemplo, quando o campo “tipo” for date, neste campo pode ser informado uma data>. 

Mandatório

Sim (  ) Não (  x)

Descrição<Referência Mínima para Cálculo>

Plano de Expedição

Título

<RefPlano Exped.Calc.>

Picture<@E999.99>

@!

Help de Campo

<Informar o % que o aluno pagará em dinheiro. Esse % poderá ser alterado durante a negociação>

 

(Opcional)

Grupo de Perguntas

 

<Informações utilizadas na linha Protheus>.

 

Nome: FINSRF2

X1_ORDEM

01

X1_PERGUNT

Emissão De

X1_TIPO

D

X1_TAMANHO

8

X1_GSC

G

X1_VAR01

MV_PAR01

X1_DEF01

Comum

X1_CNT01

'01/01/08'

X1_HELP

Data inicial do intervalo de emissões das guias de DARF a serem consideradas na seleção dos dados para o relatório 

 

(Opcional)

Consulta Padrão

<Informações utilizadas na linha Protheus>

 

Consulta: AMB

Descrição

Configurações de Planejamento

Tipo

Consulta Padrão

Tabela

“AMB”

Índice

“Código”

Campo

“Código”; ”Descrição”

Retorno

AMB->AMB_CODIGO

 

Código do plano de expedição

 

 

 

 

(Opcional)

Estrutura de Menu

 

<Informações utilizadas na linha Datasul>.

 

Procedimentos

 

Procedimento

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Módulo

 

 

 

Programa base

 

 

 

Nome Menu

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Registro padrão

Sim

Sim

Sim

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Release de Liberação

 

 

 

 

 

 

Programas

 

Programa

 

 

 

Descrição

(Max 40 posições)

(Max 40 posições)

(Max 40 posições)

Nome Externo

 

 

 

Nome Menu/Programa

(Max 32 posições)

(Max 32 posições)

(Max 32 posições)

Nome Verbalizado[1]

(Max 254 posições)

(Max 254 posições)

(Max 254 posições)

Procedimento

 

 

 

Template

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

(Verificar lista de opções no man01211)

Tipo[2]

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Consulta/Manutenção/ Relatório/Tarefas

Interface

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

GUI/WEB/ChUI/Flex

Categoria[3]

 

 

 

Executa via RPC

Sim/Não

Sim/Não

Sim/Não

Registro padrão

Sim

Sim

Sim

Outro Produto

Não

Não

Não

Visualiza Menu

Sim/Não

Sim/Não

Sim/Não

Query on-line

Sim/Não

Sim/Não

Sim/Não

Log Exec.

Sim/Não

Sim/Não

Sim/Não

Rotina (EMS)

 

 

 

Sub-Rotina (EMS)

 

 

 

Localização dentro da Sub Rotina (EMS)

 

 

 

Compact[4]

Sim/Não

Sim/Não

Sim/Não

Home[5]

Sim/Não

Sim/Não

Sim/Não

Posição do Portlet[6]

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

0 – Top Left

1 – Top Right

2 – Bottom Left

3 – Bottom Right

Informar os papeis com os quais o programa deve ser vinculado

 

 

 

 

Cadastro de Papéis

<O cadastro de papéis é obrigatório para os projetos de desenvolvimento FLEX a partir do Datasul 10>.

<Lembrete: o nome dos papeis em inglês descrito neste ponto do documento, devem ser homologados pela equipe de tradução>.

 

Código Papel

(máx 3 posições)

Descrição em Português*

 

Descrição em Inglês*

 

[1] Nome Verbalizado é obrigatório para desenvolvimentos no Datasul 10 em diante.

[2] Tipo é obrigatório para desenvolvimento no Datasul 10 em diante

[3] Categorias são obrigatórias para os programas FLEX.

[4] Obrigatório quando o projeto for FLEX

[5] Obrigatório quando o projeto for FLEX

[6] Obrigatório quando o projeto for FLEX

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.