Árvore de páginas

Produto:

Protheus

Ocorrência:

Como utilizar a rotina de geração de Ordens de Produção por pedidos de vendas (MATA650c) via execução automática (MsExecAuto)?

Passo a passo:

Para realizar a geração das ordens de produção por pedido de vendas é possível utilizar a opção Outras Ações → Vendas. Por meio da execução automática, do programa MATA650c, é possível realizar a geração das ordens de produção em lotes.

Cada execução da rotina automática, assim como a rotina padrão de geração de ordens de produção por vendas, permite gerar as OPs conforme os parâmetros informados. A execução automática do programa MATA650c recebe 5 parâmetros, sendo obrigatórios apenas os dois últimos, conforme abaixo.

  • Parâmetro 1 → Apenas compatibilidade (Não preencher);
  • Parâmetro 2 → Apenas compatibilidade (Não preencher);
  • Parâmetro 3 → Apenas compatibilidade (Não preencher);
  • Parâmetro 4 → lAuto, variável lógica que determina que a rotina esta sendo executada via ExecAuto (.T. ou .F.);
  • Parâmetro 5 → Array no formato {{MV_PARXX, Conteúdo}} contendo a parametrização para filtragem dos Pedidos de Vendas que devem ser considerados para gerar as Ordens de Produção;


1. Exemplo para inclusão de Ordens de Produção por Pedidos de Vendas:

O array com as informações dos filtros, deve seguir o conceito das perguntas do padrão, conforme exemplo abaixo:

IdentificadorDescriçãoTipo
MV_PAR01Mostra Pedido com OP ? 1- Sim 2- NãoNumérico
MV_PAR02Produto Sem Estrutura Gera ? 1- Ordem de Prod. 2- Solic. Compra 3- NenhumNumérico
MV_PAR03Do Cliente?Caracter
MV_PAR04Até o Cliente?Caracter
MV_PAR05Do Produto?Caracter
MV_PAR06Até o Produto?Caracter
MV_PAR07Da Data de Entrega?Data
MV_PAR08Até a Data de Entrega?Data
MV_PAR09Da TES?Caracter
MV_PAR10Até a TES?Caracter
MV_PAR11Considerar Armazém Padrão? 1- Sim 2- NãoNumérico
MV_PAR12Liberar Bloqueio de Crédito? 1- Sim 2- NãoNumérico
MV_PAR13Numero Inicial OP?Caracter
MV_PAR14Do Pedido?Caracter
MV_PAR15Até o Pedido?Caracter
MV_PAR16Do Armazém?Caracter
MV_PAR17Até o Armazém?Caracter
MV_PAR18Avalia o Pedido de Venda? 1- Individualmente 2- AgrupadamenteNumérico
MV_PAR19Qtd da Geração OPs e SCs? 1- LE Padrão 2- Sem LE 3- LE SomadosNumérico
MV_PAR20Mostra apenas PV liber. cred? 1- Sim 2- NãoNumérico
MV_PAR21Cons. Saldos de Armazéns? 1- Sim 2- NãoNumérico
MV_PAR22Exibe PV c/ Fat. Parcial? 1- Sim 2- NãoNumérico
MV_PAR23Avaliar os PVs Priorizando? 1- Num. Pedido 2- Data de EntregaNumérico
MV_PAR24Considera Est. Segurança? 1- Sim 2- NãoNumérico
MV_PAR25Considera Qtd Liberada PV? 1- Sim 2- NãoNumérico
MV_PAR26Considera Est de Segurança PI? 1- Sim 2- NãoNumérico

Importante

Se algum dos parâmetros não for enviado no array, ou com o tipo ou tamanho do conteúdo fora do especificado, será considerado o último valor utilizado na execução manual da geração de Ordens de Produção por Pedidos de Vendas;
Se for enviado algum parâmetro fora do range acima, este será desconsiderado;
A manutenção das ordens de produção por pedido de vendas, inseridas via ExecAuto, devem ser realizadas por meio da rotina padrão de Ordens de Produção (MATA650), que também pode ser executada via rotina automática conforme descrito em: https://tdn.totvs.com/x/Jk2eI

Exemplo de geração de Ordens de Produção por Pedidos de Vendas.
#INCLUDE 'TOTVS.CH'
#INCLUDE 'PROTHEUS.CH'
#INCLUDE 'PARMTYPE.CH'
#INCLUDE "RWMAKE.CH"

User Function MyMata650c()
Local lAuto       := .T.
Local aParams     := {}
Local lMsErroAuto := .F.

// Seta job para empresa e filial desejadas caso não seja chamada via menu do Protheus
If !(Type("cFilAnt") == "C" .and. TCIsConnected())
    RPCSetEnv("T1","D MG 01 ",,,'PCP') //https://tdn.totvs.com/x/z-xn
EndIf

aadd(aParams,{"MV_PAR01",                  1})//Mostra Pedido com OP ? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR02",                  1})//Produto Sem Estrutura Gera ? 1- Ordem de Prod. 2- Solic. Compra 3- Nenhum
aadd(aParams,{"MV_PAR03",                " "})//Do Cliente? 
aadd(aParams,{"MV_PAR04",           "ZZZZZZ"})//Ate o Cliente? 
aadd(aParams,{"MV_PAR05",                " "})//Do Produto?
aadd(aParams,{"MV_PAR06",  "ZZZZZZZZZZZZZZZ"})//Ate o Produto?
aadd(aParams,{"MV_PAR07", CTOD("01/01/2018")})//Da Data de Entrega?
aadd(aParams,{"MV_PAR08", CTOD("30/12/2018")})//Ate a Data de Entrega?
aadd(aParams,{"MV_PAR09",              "500"})//Da TES?
aadd(aParams,{"MV_PAR10",              "999"})//Ate a TES?
aadd(aParams,{"MV_PAR11",                  1})//Considerar Armazem Padrao? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR12",                  2})//Liberar Bloqueio de Credito? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR13",                " "})//Numero Inicial OP?
aadd(aParams,{"MV_PAR14",           "pcp114"})//Do Pedido?
aadd(aParams,{"MV_PAR15",           "pcp114"})//Ate o Pedido?
aadd(aParams,{"MV_PAR16",                " "})//Do Armazem?
aadd(aParams,{"MV_PAR17",               "ZZ"})//Ate o Armazem?
aadd(aParams,{"MV_PAR18",                  1})//Avalia o Pedido de Venda? 1- Individualmente 2- Agrupadamente
aadd(aParams,{"MV_PAR19",                  1})//Qtd da Geracao OPs e SCs? 1- LE Padrao 2- Sem LE 3- LE Somados
aadd(aParams,{"MV_PAR20",                  2})//Mostra apenas PV liber. cred? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR21",                  2})//Cons. Saldos de Armazens? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR22",                  2})//Exibe PV c/ Fat. Parcial? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR23",                  1})//Avaliar os PVs Priorizando? 1- Num. Pedido 2- Data de Entrega
aadd(aParams,{"MV_PAR24",                  2})//Considera Est. Seguranca? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR25",                  2})//Considera Qtd Liberada PV? 1- Sim 2- Nao
aadd(aParams,{"MV_PAR26",                  1})//Considera Est Seguranca PI? 1- Sim 2- Nao

MSExecAuto({|x,y,z,b,c| MATA650C(x,y,z,b,c)},,,,lAuto,aParams)

If lMsErroAuto
    Alert("Erro")
    MostraErro()
EndIf
    
Return .T.

Observações:

Para o correto funcionamento, a versão do fonte MATA650c deve ser igual ou superior a data de