Árvore de páginas

Versões comparadas

Chave

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

MATA650 - Cadastro de Ordem de Produção

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):

NomeTipoDescriçãoDefaultObrigatório Referência
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Todos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

Cadastramento de Ordens de Produção que é um documento que inicia o processo de fabricação do produto relacionando todos os componentes e as etapas de fabricação determinadas por sua estrutura, além disso, é essencial na geração das requisições dos materiais.

Importante: o sistema administra as OPs de sua geração ao seu término. A ordem de produção pode ser incluída manualmente, OPs por Pedidos de Venda (através da geração de OPs) e por ponto de pedido (através do MRP - projeção de estoque).
É possível identificar as OPs incluídas manualmente e as geradas automaticamente por meio de seus códigos.

As OPs são referenciadas nas atualizações e consultas através da seguinte composição de código:

  • Número da OP + Item + Sequência.

As atualizações das OPs são efetuadas pela informação das movimentações internas (baixa). Uma OP é encerrada quando o sistema detecta uma movimentação do Tipo Produção para o valor total da OP ou quando a soma de movimentações do Tipo Produção totaliza a quantidade original da OP.

O custeio de uma OP é calculado através da soma dos custos dos componentes por nível até o nível do produto pai.

É possível visualizar o andamento do processo de execução das OPs através da opção Gráfico na janela de manutenção de Ordens de Produção.

Quando uma ordem de produção é incluída, o sistema verifica automaticamente tudo o que é necessário para que esta produção possa ser executada e efetua o empenho de todos os materiais necessários conforme determinado em sua estrutura.

Programa Fonte:MATA650.PRX

Sintaxe:

MATA650 - Cadastro de Ordem de Produção ( aRotAuto, nOpcAuto ) --> Nil

Retorno:

Nil (Nulo)

Observações:

O parâmetro AUTEXPLODE, demonstrado no exemplo abaixo, é preenchido na execução da rotina automática para definir se as OPs intermediárias e as solicitações de compras, que ainda não foram geradas, devem ser geradas automaticamente ou não.

Para cadastros manuais, é apresentada uma mensagem ao sair do ambiente de cadastro da Ordem de Produção perguntando se as OPs intermediárias e as solicitações de compras devem ser geradas.

O segundo parâmetro da rotina Mata650 refere-se as opções de execução considerando os seguintes critérios:

1 = Pesquisa

2 = Visualização

3 = Inclusão

4 = Alteração

5 = Exclusão

Bloco de código
titleBloco de Código
linenumberstrue
#Include "Protheus.ch"
#include "rwmake.ch"
#include "TbiConn.ch"
 
User Function Tmata650()
Local aMATA650      := {}       //-Array com os campos
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ 3 - Inclusao     ³
//³ 4 - Alteracao    ³
//³ 5 - Exclusao     ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Local nOpc              := 5
Private lMsErroAuto     := .F.
 
PREPARE ENVIRONMENT EMPRESA "01" FILIAL "0101"
 
aMata650  := {  {'C2_FILIAL'   ,"0101"              ,NIL},;
                {'C2_PRODUTO'  ,"PROD001        "       ,NIL},;          
                {'C2_NUM'      ,"000097"                ,NIL},;          
                {'C2_ITEM'     ,"01"                    ,NIL},;          
                {'C2_SEQUEN'   ,"002"                   ,NIL}}             
                 
ConOut("Inicio  : "+Time())
 
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Se alteracao ou exclusao, deve-se posicionar no registro     ³
//³ da SC2 antes de executar a rotina automatica                 ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
If nOpc == 4 .Or. nOpc == 5
    SC2->(DbSetOrder(1)) // FILIAL + NUM + ITEM + SEQUEN + ITEMGRD
    SC2->(DbSeek(xFilial("SC2")+"000097"+"01"+"002"))
EndIf
     
msExecAuto({|x,Y| Mata650(x,Y)},aMata650,nOpc)
If !lMsErroAuto
    ConOut("Sucesso! ")
Else
    ConOut("Erro!")
    MostraErro()
EndIf
 
ConOut("Fim  : "+Time())
 
RESET ENVIRONMENT
 
Return Nil