Á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

M_MAN_PCP002

IRM1

PCREQ-7969

Requisito1

PCREQ-7971

Subtarefa1

 

Chamado2

 

Release de Entrega Planejada

11.80.14

Réplica

 

País

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

(  ) USA  (  ) Colombia   ( X ) Outro _TODOS___________.

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

 

  • Criação de rotina automática para os programas de apontamento de produção do chão de fábrica.
  • Permitir que o programa de importação de apontamentos seja utilizado via schedule.

 


Definição da Regra de Negócio

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

SFCA310

Alteração

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

-

SFCA313Alteração  
SFCA314Alteração  

SFCA316

Alteração

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

-

SFCA319Alteração  

SFCA320

Alteração

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

-

UPSFC010Criação  

 

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.

 

Update para alteração de dicionário

Criar update para as atualizações de dicionário descritas nesta engenharia.

 

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

 


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.