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 | - |
SFCA313 | Alteração | ||
SFCA314 | Alteração | ||
SFCA316 | Alteração | Atualizações -> Movimentações -> Apont Produc Mod.2 | - |
SFCA319 | Alteração | ||
SFCA320 | Alteração | Atualizações -> Movimentações -> Importação | - |
UPSFC010 | Criaçã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:
- Incluir Apontamento de Produção;
- Estornar Apontamento de Produção;
- Iniciar Apontamento de Produção;
- Finalizar Apontamento de Produção;
- 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:- Uso interno;
- Ação;
- Array do apontamento de produção - tabela CYV
- Array dos componentes consumidos - tabela CZP
- Array dos refugos/retrabalhos gerados - tabela CY0
- Array dos recursos utilizados - tabela CYW
- Array das ferramentas utilizadas - tabela CZ0
- 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:
- É 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.
- 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.
- 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
- 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)
- 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')
EndifReturn(.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')
EndifReturn .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 InicialSFCA310(,3,aCabec)
IF lMsErroAuto
MostraErro()
Else
msginfo('inicio de apontamento com sucesso')
EndifReturn .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')
EndifReturn(.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')
EndifReturn .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. |
---|