Home

Linha Microsiga Protheus

Páginas filhas
  • MATA710 - Ordens de Produção

Função: MATA710 - Ordens de Produção
Versões: Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Nível de Acesso: Nível 1 (Acesso Clientes)
Idiomas: Espanhol , Inglês
Descrição:

OBJETIVO :
O objetivo da função MATA710(MRP) é gerar ordens de produção e solicitações de compras baseado em uma Demanda (Pedido/Previsão).

IMPORTANTE:
Os números da Previsão de Vendas são conseguidos através do contato com a área comercial com os clientes, a fim de obter informações a respeito da intenção de compras de cada um, num determinado período. As informações, associadas aos dados históricos de vendas e à evolução do mercado, possibilitam quantificar os montantes a serem comercializados num determinado período.

Quando a produção tem demanda elevada, é repetitiva e os produtos têm aceitação no mercado, a empresa pode manter a produção à frente das vendas, deixando certa quantidade à disposição do mercado. É a produção feita para estoque.

Esse tipo de produção tem a vantagem de a venda ocorrer efetivamente tão logo o pedido seja feito pelo cliente, mas traz o inconveniente de exigir da empresa um maior capital de giro, devido ao investimento em produção para armazenamento. A capacidade financeira tem de ser compatível com os níveis de produção e estoque.

Quando o produto não apresenta venda uniforme, é requisitado pelo mercado de forma imprevista e com baixa demanda, a empresa não se arrisca a produzir algo que não sabe quando vai vender e a produção só é feita sob encomenda. Nesse caso, os pedidos se antecipam à produção, com planejamento e programação feitos em função do que está sendo encomendado, respeitando-se as especificações e características de cada pedido.

Ao contrário do que acontece com a produção para estoque, que tem o seu preço de venda previamente estabelecido, a produção sob encomenda normalmente quantifica o preço após apreciação prévia do que está sendo solicitado, por meio de levantamento do custo atualizado.

Um veículo é feito para estoque. Há sempre alguém querendo adquiri-lo e a concessionária informa seu preço imediatamente.

Um guarda-roupa residencial é feito sob encomenda. É difícil encontrá-lo nas dimensões desejadas. O preço só é definido depois que o fornecedor toma conhecimento das especificações.

Um produto com demanda elevada deve ter suas características e especificações simplificadas e padronizadas.

Programa Fonte:
MATA710.PRX
Sintaxe:

MATA710 - Ordens de Produção ( PARAMIXB1PARAMIXB2 ) --> Nil

Retorno:
    Nil(nulo)
  • Nil
Observações

Parâmetros:

O vetor PARAMIXB2 é composto pela estrutura abaixo:
 

PARAMIXB2[1]   // Tipo de periodo 1=Diario;2=Semanal;3=Quinzenal;4=Mensal;5=Trimestral;6=Semestral
PARAMIXB2[2]   // Quantidade de periodos
PARAMIXB2[3]   // Considera Pedidos em Carteira
PARAMIXB2[4]   // Array contendo Tipos  de produtos a serem considerados (se Nil, assume padrao)
PARAMIXB2[5]   // Array contendo Grupos de produtos a serem considerados (se Nil, assume padrao)
PARAMIXB2[6]   // Gera/Nao Gera OPs e SCs depois do calculo da necessidade.
PARAMIXB2[7]   // Indica se monta log do MRP
PARAMIXB2[8]   // Numero da Op Inicial


 


 

No exemplo abaixo, existe a preparação do ambiente para rodar esta rotina, 
que é feita através do comando Prepare Environment.

// aemp[1] = Empresa (Caracter)
// aemp[2] = Filial (Caracter)
// Administrador = Através de qual usuário irá executar a rotina. (Caracter)
// senha = Senha do usuário (Caracter)

PREPARE ENVIRONMENT EMPRESA aemp[1] ;
FILIAL aemp[2] ;
USER 'Administrador' ;
PASSWORD 'senha' ;
TABLES "SB1","SB2","SC2","SC3","SC4","SC6" ;
MODULO "PCP"


 


 

 


 

Exemplos
User Function jobm710()Local PARAMIXB1 := .T.          //-- .T. se a rotina roda em batch, senão .F.Local PARAMIXB2 := {}aAdd(PARAMIXB2,1)         //-- Tipo de periodo 1=Diario; 2=Semanal; 3=Quinzenal;                                                         //   4=Mensal; 5=Trimestral; 6=SemestralaAdd(PARAMIXB2,1)        //-- Quantidade de periodosaAdd(PARAMIXB2,.T.)      //-- Considera Pedidos em CarteiraaAdd(PARAMIXB2,{})       //-- Array contendo Tipos  de produtos a serem considerados                           //  (se Nil, assume padrao)aAdd(PARAMIXB2,{})       //-- Array contendo Grupos de produtos a serem considerados                           //  (se Nil, assume padrao)aAdd(PARAMIXB2,.T.)      //-- Gera/Nao Gera OPs e SCs depois do calculo da necessidade.aAdd(PARAMIXB2,.T.)      //-- Indica se monta log do MRPaAdd(PARAMIXB2,"000001")  //-- Numero da Op Inicial             aemp := {"99","01"}Prepare Environment Empresa aemp[1] filial aemp[2] USER 'Administrador' PASSWORD '' Tables "SB1","SB2","SC2","SC3","SC4","SC6" Modulo "PCP"//****************************//* Monta a Tabela de Tipos  * //****************************dbSelectArea("SX5")dbSeek(xFilial("SX5")+"02")Do While (X5_FILIAL == xFilial("SX5")) .AND. (X5_TABELA == "02") .and. !Eof()	cCapital := OemToAnsi(Capital(X5Descri()))	AADD(PARAMIXB2[4],{.T.,SubStr(X5_chave,1,2)+" "+cCapital})	dbSkip()EndDo//****************************//* Monta a Tabela de Grupos * //****************************dbSelectArea("SBM")dbSeek(xFilial("SBM"))AADD(PARAMIXB2[5],{.T.,Criavar("B1_GRUPO",.F.)+" "+"Grupo em Branco"})Do While (BM_FILIAL == xFilial("SBM")) .AND. !Eof()	cCapital := OemToAnsi(Capital(BM_DESC))	AADD(PARAMIXB2[5],{.T.,SubStr(BM_GRUPO,1,4)+" "+cCapital})	dbSkip()EndDo  MATA710(PARAMIXB1,PARAMIXB2)    RESET ENVIRONMENTReturn Nil
Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
PARAMIXB1 Lógico .T. se a rotina roda em batch, senão .F. X
PARAMIXB2 Vetor (Vide Observações) X