Árvore de páginas

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

PROTHEUS

Módulo

SIGASFC

Segmento Executor

Manufatura

Projeto1

MANCORE1

IRM1

MANCORE1-391

Requisito1

MANCORE1-835

Subtarefa1

 

Chamado2

 

País

(  ) 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

 

  1. Criação de rotina automática para os programas de apontamento de produção do chão de fábrica.

  2. Permitir que o programa de importação de apontamentos seja utilizado via schedule.

  3. Permitir que o SIGASFC realize apontamentos de produção sem respeitar a rede-pert.


Definição da Regra de Negócio

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

SFCA313Alteração -

SFCA314

Alteração

 

-

SFCA318Alteração -

SFCA310

Alteração

Atualizações -> Movimentações -> Apont Produc Mod.1

-

SFCA316

Alteração

Atualizações -> Movimentações -> Apont Produc Mod.2

-

SFCA319Alteração  

SFCA320

Alteração

Atualizações -> Movimentações -> Importação

-

 

1. Criação Rotina Automática

Para que seja possível a utilização de rotina automática nos programas de apontamento de produção deverá ser feito tratamento nos programas para que possam receber o array com os dados e a ação para rotina automática. Foram definidas como ações para o apontamento de produção:

  1. Incluir Apontamento de Produção;
  2. Estornar Apontamento de Produção;
  3. Iniciar Apontamento de Produção;
  4. Finalizar Apontamento de Produção;
  5. Abandonar Apontamento de Produção.

As regras de negócio e gatilhos existentes nos apontamentos de produção também são executados via execução automática.

  • SFCA310 - Apontamento de produção modelo 1
    A chamada deverá ser feita da seguinte forma:

    SFCA310(,nAcao,aCYV,aCZP,aCY0,aCYW,aCZ0,aCZW), aonde os parâmetros são:
    1. Uso interno;
    2. Ação;
    3. Array do apontamento de produção - tabela CYV
    4. Array dos componentes consumidos - tabela CZP
    5. Array dos refugos/retrabalhos gerados - tabela CY0
    6. Array dos recursos utilizados - tabela CYW
    7. Array das ferramentas utilizadas - tabela CZ0
    8. Array dos CTs que geraram custo GGF - tabela CZW

  • SFCA316 - Apontamento de produção modelo 2
    A chamada deverá ser feita da seguinte forma:

    SFCA316(,nAcao,aCYV,aCZP,aCY0,aCYW,aCZ0,aCZW), aonde os parâmetros são os mesmos do apontamento de produção modelo 1.

 

Quais campos enviar para cada ação:

  1. É possível enviar todos os arrays com todos os campos que estão disponíveis em tela. Os principais campos devem ser enviados na correta sequencia: CYV_NRORPO, CYV_IDAT, CYV_IDATQO, CYV_CDMQ, CYV_DTBGSU, CYV_HRBGSU, CYV_DTEDSU, CYV_HREDSU, CYV_CDSU, CYV_NRBG, CYV_NRED, CYV_QTATRP CYV_DTRPBG, CYV_HRRPBG, CYV_DTRPED, CYV_HRRPED, os outros campos podem ser enviados a seguir.
  2. Apenas os campos CYV_NRSQRP e CYV_DTEO (data de estorno) no array da tabela CYV. Caso não seja enviado o CYV_DTEO, a integração assumirá a data atual como data de estorno.
  3. Apenas campos CYV_NRORPO, CYV_IDAT, CYV_IDATQO, CYV_CDMQ, CYV_NRBG (se apontamento por medição), CYV_DTRPBG, CYV_HRRPBG no array da tabela CYV
  4. Enviar o identificador do apontamento: CYV_NRSQRP e os outros campos referentes à finalização (igual incluir um apontamento, mas sem os campos utilizados no início, pois os mesmos não podem ser alterados)
  5. Enviar apenas o campo CYV_NRSQRP no array da tabela CYV.

 

Abaixo são exibidos alguns exemplos de cada ação:

Ação 1 - Incluir Apontamento de produção

Function SFC_EXECAUTO()
Local aCabec := {}
Local aDetalhe := {}
Local lRet := .T.
Local aCZP := {}
Local aCY0 := {}
Local aCYW := {}
Local aCZ0 := {}
Local aCZW := {}
PRIVATE lMsErroAuto := .F.

// Apontamento de Produção
aCabec := {} 
aadd(aCabec,{"CYV_NRORPO", "00038901001",}) // Ordem de Produção 
aadd(aCabec,{"CYV_IDAT" , "0000000001",}) // Identificador Operação 
aadd(aCabec,{"CYV_IDATQO", "00001",}) // Split 
aadd(aCabec,{"CYV_CDMQ" , "MAQ1",}) // Máquina 
aadd(aCabec,{"CYV_QTATRP", 2,}) // Quantidade Reportada
aadd(aCabec,{"CYV_DTRPBG", CTOD("05/10/2015"),}) // Data Inicial
aadd(aCabec,{"CYV_HRRPBG", "11:05:00",}) // Hora Inicial
aadd(aCabec,{"CYV_DTRPED", CTOD("05/10/2015"),}) // Data Final
aadd(aCabec,{"CYV_HRRPED", "11:10:00",}) // Hora Final

// Componentes
adetalhe := {}
aadd(adetalhe,{"CZP_CDMT" ,"B",}) 
aadd(adetalhe,{"CZP_QTRPPO",10,}) 
AADD(aCZP,adetalhe)

// Mão de Obra
adetalhe := {}
aadd(adetalhe,{"CYW_CDOE" ,"OPER1",}) 
aadd(adetalhe,{"CYW_DTBGRP",CTOD("05/10/2015"),}) 
aadd(adetalhe,{"CYW_HRBGRP","10:05:00",}) 
aadd(adetalhe,{"CYW_DTEDRP",CTOD("05/10/2015"),})
aadd(adetalhe,{"CYW_HREDRP","10:10:00",})
AADD(aCYW,adetalhe)

// Refugo e Retrabalho
adetalhe := {}
aadd(adetalhe,{"CY0_CDRF", "REF",}) 
aadd(adetalhe,{"CY0_QTRF", 1,}) 
aadd(adetalhe,{"CY0_QTRT", 0,})
AADD(aCY0,adetalhe)

adetalhe := {}
aadd(adetalhe,{"CY0_CDRF", "RET",}) 
aadd(adetalhe,{"CY0_QTRF", 0,}) 
aadd(adetalhe,{"CY0_QTRT", 1,})
AADD(aCY0,adetalhe)

// GGF
adetalhe := {}
aadd(adetalhe,{"CZW_CDCETR", "CT1",}) 
aadd(adetalhe,{"CZW_HRTEGF", 1,}) 
AADD(aCZW,adetalhe)

adetalhe := {}
aadd(adetalhe,{"CZW_CDCETR", "CT2",}) 
aadd(adetalhe,{"CZW_HRTEGF", 10,}) 
AADD(aCZW,adetalhe)

lRet := SFCA310(,1,aCabec,aCZP,aCY0,aCYW,aCZ0,aCZW)

IF lMsErroAuto
    MostraErro()
Else
    msginfo('apontamento criado com sucesso')
Endif

Return(.T.)

 

Ação 2 - Estornar Apontamento de produção

Function SFC_EXECAUTO()
Local aCabec := {}
PRIVATE lMsErroAuto := .F.

// Apontamento de Produção
aCabec := {}

aadd(aCabec,{"CYV_NRSQRP", "00000000000000003634",})

SFCA310(,2,aCabec)

IF lMsErroAuto
    MostraErro()
Else
    msginfo('apontamento estornado com sucesso')
Endif

Return .T.

 

Ação 3 - Iniciar Apontamento de Produção

Function SFC_EXECAUTO()
Local aCabec := {}
PRIVATE lMsErroAuto := .F.

// Apontamento de Produção
aCabec := {} 
aadd(aCabec,{"CYV_NRORPO", "00038901001",}) // Ordem de Produção 
aadd(aCabec,{"CYV_IDAT" , "0000000002",}) // Identificador Operação 
aadd(aCabec,{"CYV_IDATQO", "00001",}) // Split 
aadd(aCabec,{"CYV_CDMQ" , "MAQ1",}) // Máquina 
aadd(aCabec,{"CYV_DTRPBG", ctod("06/10/2015"),}) // Data Inicial
aadd(aCabec,{"CYV_HRRPBG", "11:05:00",}) // Hora Inicial

SFCA310(,3,aCabec)

IF lMsErroAuto
    MostraErro()
Else
    msginfo('inicio de apontamento com sucesso')
Endif

Return .T.

 

Ação 4 - Finalizar Apontamento de Produção

Function SFC_EXECAUTO()
Local aCabec := {}
Local aDetalhe := {}
Local lRet := .T.
Local aCZP := {}
Local aCY0 := {}
Local aCYW := {}
Local aCZ0 := {}
Local aCZW := {}
PRIVATE lMsErroAuto := .F.

// Apontamento de Produção
aCabec := {} 
aadd(aCabec,{"CYV_NRSQRP", "00000000000000003640",}) 
aadd(aCabec,{"CYV_QTATRP", 2,}) // Quantidade Reportada
aadd(aCabec,{"CYV_DTRPBG", CTOD("05/10/2015"),}) // Data Inicial
aadd(aCabec,{"CYV_HRRPBG", "11:05:00",}) // Hora Inicial
aadd(aCabec,{"CYV_DTRPED", CTOD("05/10/2015"),}) // Data Final
aadd(aCabec,{"CYV_HRRPED", "11:10:00",}) // Hora Final

// Componentes
adetalhe := {}
aadd(adetalhe,{"CZP_CDMT" ,"B",}) 
aadd(adetalhe,{"CZP_QTRPPO",10,}) 
AADD(aCZP,adetalhe)

// Mão de Obra
adetalhe := {}
aadd(adetalhe,{"CYW_CDOE" ,"OPER1",}) 
aadd(adetalhe,{"CYW_DTBGRP",CTOD("05/10/2015"),}) 
aadd(adetalhe,{"CYW_HRBGRP","10:05:00",}) 
aadd(adetalhe,{"CYW_DTEDRP",CTOD("05/10/2015"),})
aadd(adetalhe,{"CYW_HREDRP","10:10:00",})
AADD(aCYW,adetalhe)

// Refugo e Retrabalho
adetalhe := {}
aadd(adetalhe,{"CY0_CDRF", "REF",}) 
aadd(adetalhe,{"CY0_QTRF", 1,}) 
aadd(adetalhe,{"CY0_QTRT", 0,})
AADD(aCY0,adetalhe)

adetalhe := {}
aadd(adetalhe,{"CY0_CDRF", "RET",}) 
aadd(adetalhe,{"CY0_QTRF", 0,}) 
aadd(adetalhe,{"CY0_QTRT", 1,})
AADD(aCY0,adetalhe)

// GGF
adetalhe := {}
aadd(adetalhe,{"CZW_CDCETR", "CT1",}) 
aadd(adetalhe,{"CZW_HRTEGF", 1,}) 
AADD(aCZW,adetalhe)

adetalhe := {}
aadd(adetalhe,{"CZW_CDCETR", "CT2",}) 
aadd(adetalhe,{"CZW_HRTEGF", 10,}) 
AADD(aCZW,adetalhe)

lRet := SFCA310(,1,aCabec,aCZP,aCY0,aCYW,aCZ0,aCZW)

IF lMsErroAuto
    MostraErro()
Else
    msginfo('apontamento finalizado com sucesso')
Endif

Return(.T.)

Ação 5 - Abandonar Apontamento de Produção

Function SFC_EXECAUTO()
Local aCabec := {}
PRIVATE lMsErroAuto := .F.

// Apontamento de Produção
aCabec := {}

aadd(aCabec,{"CYV_NRSQRP", "00000000000000003635",})

SFCA310(,5,aCabec)

IF lMsErroAuto
    MostraErro()
Else
    msginfo('apontamento abandonado com sucesso')
Endif

Return .T.

 

Importação de apontamento via Schedule

Para que a importação funcione corretamente via schedule, deverá ser criado o pergunte SFCA320 para os parâmetros existentes no programa: Arquivo importação, delimitador, possibilidade de selecionar os tipos de apontamentos a serem importados. Também deverá ser incluído um campo para o nome do arquivo de resultado.

Os arquivos deverão ficar dentro da pasta system da instalação do protheus, por exemplo: 

Arquivo Entrada: 

O diretório completo do arquivo é C:\TOTVS 11\Microsiga\Protheus_Data\system\importacaoSFCA320.txt, mas ao preencher os parâmetros de importação colocar apenas importacaoSFCA320.txt.

Arquivo Resultado:

Caso queira que o arquivo  seja gerado dentro de uma pasta, por exemplo C:\TOTVS 11\Microsiga\Protheus_Data\system\resultadoSFCA320, colocar no parâmetro o valor resultadoSFCA320\resultado.txt


Com a existência do pergunte, o usuário poderá utilizar as fórmulas para calcular os parâmetros necessários.

 

2. Apontamento Fora de Ordem

Alterar o Chão de Fábrica para que realizar apontamentos de produção fora da sequência. Atualmente o SIGASFC olha a rede-pert, que é montada com base na ordem da operações ao criar a ordem de produção. O funcionamento deverá ser o mesmo do SIGAPCP.

Não serão alterados os indicadores, nem o gerencial da produção. Os semáforos e as horas disponíveis do Apontamento de Produção Modelo 1 (SFCA310) também não serão alterados e continuarão a olhar a rede-pert.

 

SFCA314

  1. Para que não existam parâmetros duplicados entre os dois módulos, o SIGASFC irá olhar os mesmos parâmetros do SIGAPCP:
    • MV_VLDOPER - Se ativado, sempre olha a rede-pert e então gera o acabado na última operação. Se desativado, pergunta ao usuário "O sistema não está validando as operações conforme selecionado através do parâmetro MV_VLDOPER. É preciso informar qual será o último apontamento. Confirma como último apontamento?". Essa pergunta será feita ao salvar o apontamento de produção.
    • Parâmetro 7 do pergunte MTA680 - Verif. Sld. Oper Anterior? (F12 da tela de apontamento modelo 2 do PCP) estiver 3=Não valida. - Vai permitir em tela informar qualquer sequência, sem validar saldo da operação anterior ao salvar.
  2. Quando o parâmetro parâmetro 7 do pergunte MTA680 estiver com valor 3=Não valida:
    1. Ao selecionar um split para apontamento de produção, não será feita sugestão de quantidade a apontar e sempre trará  0 (zero). Consequentemente não será calculado o tempo de operação e a data e hora fim do apontamento;
    2. Bloquear o uso do Dispatch List;
    3. Não finalizar a ordem de produção via apontamento de produção. A finaliza deverá ser feita via consulta ordem de produção - SFCA100.

 

SFCA313

Ao realizar o estorno de apontamentos, não deverá validar a rede-pert quando Parâmetro 7 do pergunte MTA680 - Verif. Sld. Oper Anterior? (F12 da tela de apontamento modelo 2 do PCP) estiver 3=Não valida.

 

SFCA318

Não será possível utilizar o dispatch list quando o Parâmetro 7 do pergunte MTA680 - Verif. Sld. Oper Anterior? (F12 da tela de apontamento modelo 2 do PCP) estiver 3=Não valida ou quando MV_VLDOPER estiver como N.


Tabelas Utilizadas

    • CYV - Apontamento de Produção

    • CZP - Reservas Usadas

    • CY0 - Apontamento de Refugo
    • CYW - Apontamento de Mão de Obra
    • CZ0 - Apontamento Ferramenta
    • CZW - Apontamento de GGF


Dicionário de Dados

 

Arquivo: CYV - Apontamento de Produção

  

Campo

CYV_LGGAAC

Tipo

L

Tamanho

1

Valor Inicial

 

Mandatório

Sim (  ) Não (  )

Descrição

Indica se foi gerado acabado

Título

Gerou acabado

Picture

Sim/Não

Help de Campo

Indica se foi gerado acabado no apontamento de produção.

 

 


Grupo de Perguntas

 

Nome: SFCA320

X1_ORDEM

01

X1_PERGUNT

Arquivo Entrada

X1_TIPO

C

X1_TAMANHO

99

X1_GSC

G

X1_VAR01

MV_PAR01

X1_DEF01

 

X1_CNT01

 

X1_HELP

Arquivo que será utilizado para importar os apontamentos

 

X1_ORDEM

02

X1_PERGUNT

Delimitador

X1_TIPO

C

X1_TAMANHO

1

X1_GSC

G

X1_VAR01

MV_PAR02

X1_DEF01

 

X1_CNT01

 

X1_HELP

Caracter utilizado para separadar os campos

 

X1_ORDEM

03

X1_PERGUNT

Importa Produção?

X1_TIPO

C

X1_TAMANHO

1

X1_GSC

C

X1_VAR01

MV_PAR03

X1_DEF01

 

X1_CNT01

 

X1_HELP

Define se a importação irá tratar apontamentos de produção

 

X1_ORDEM

04

X1_PERGUNT

Importa Parada?

X1_TIPO

C

X1_TAMANHO

1

X1_GSC

C

X1_VAR01

MV_PAR04

X1_DEF01

 

X1_CNT01

 

X1_HELP

Define se a importação irá tratar apontamentos de parada

 

X1_ORDEM

05

X1_PERGUNT

Importa Item Controle?

X1_TIPO

C

X1_TAMANHO

1

X1_GSC

C

X1_VAR01

MV_PAR05

X1_DEF01

 

X1_CNT01

 

X1_HELP

Define se a importação irá tratar apontamentos de item controle

 

X1_ORDEM

06

X1_PERGUNT

Arquivo Resultado

X1_TIPO

C

X1_TAMANHO

99

X1_GSC

G

X1_VAR01

MV_PAR06

X1_DEF01

 

X1_CNT01

 

X1_HELP

Nome do arquivo que será gerado com os resultados

 

 

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