Função: MATA250 - Produção
Esta rotina possibilita a execução do apontamento de produção, estorno do apontamento de produção e encerramento da ordem de produção, na rotina Produção, de forma automática.
MATA250 - Produção ( < aVetor>, < nOpc> ) --> Nil
Nome | Tipo | Descrição | Obrigatório | Referência |
aVetor | Array of Record | Array contendo os campos que serão enviados para a Produção | X | |
nOpc | Numérico | Opção escolhida: 3) Inclusão 5) Estorno 7) Encerramento | X |
O parâmetro AUTPRTOTAL pode ser preenchido na execução da rotina automática de Encerramento, quando o MV_PRODPR0 estiver configurado como 3, para definir se o campo D3_PARCTOT será atualizado com o conteúdo T no encerramento.
Para encerramentos manuais, é apresentada uma pergunta para confirmação ou não da alteração do campo para apropriação de custo.
O parâmetro deve ser preenchido com:
"S" -> Altera o conteúdo do campo D3_PARCTOT para T
"N" -> Não altera o conteúdo do campo D3_PARCTOT, deixando o campo preenchido com P
O parâmetro ABREOP pode ser preenchido na rotina automática de Estorno, possibilitando estornar o apontamento da produção e permitindo ao usuário estornar ou não o empenho gerado na SD4.
O parâmetro deve ser preenchido como:
"N" -> Estornará o apontamento da produção, porem, não estornará o empenho do SD4
"S" -> Fara o estorno do apontamento e o estorno do empenho gerado no SD4
Para realizar a operação de estorno via Rotina Automática é OBRIGATÓRIO posicionar no registro desejado antes da chamada da MsExecAuto.
//INCLUSAO
User Function RMATA250()
Local aVetor := {}
Local dDataLocal nOpc := 3 //-Opção de execução da rotina, informado nos parâmetros quais as opções possíveis
lMsErroAuto := .F.
RpcSetEnv( "99","01",,,,,,,,,)
dData:=dDataBase
aVetor := {;
{"D3_OP" ,"00000501001 " ,NIL},;
{"D3_TM" ,"010" ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc )
If lMsErroAuto
Mostraerro()
else
Alert("Ok")
Endif
Return
//ESTORNO
User Function REMAT250()
Local aVetor := {}
Local nOpc := 5 //-Opção de execução da rotina, informado nos parâmetros quais as opções possíveis
Local cOp := "00000301001 "
Local cCod := "2396 "
Local cLocal:= "01"
Local cChave:= ""
lMsErroAuto := .F.
RpcSetEnv( "99","01",,,,,,,,,)
cChave:= xFilial("SD3") + cOp + cCod + cLocal
SD3->(DbSetOrder(1))
If SD3->(DbSeek(cChave))
While !(SD3->(Eof())) .And. SD3->(D3_FILIAL + D3_OP + D3_COD + D3_LOCAL) == cChave
If SD3->D3_ESTORNO == " "
aVetor := { {"D3_OP" ,cOp ,NIL},;
{"D3_QUANT" ,10 ,NIL},;
{"D3_TM" ,"001" ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc )
If lMsErroAuto
Mostraerro()
Else
Alert("Ok")
Endif
Exit
EndIf
SD3->(DbSkip())
EndDo
EndIf
Return
//--------------------------- ENCERRA APONTAMENTO --------------------------------------------------------------------------------------
User Function RMATA250()
Local aVetor := {}
Local nOpc := 7 //-Opção de execução da rotina, informado nos parametros quais as opções possiveis
Local cOp := "00029701001 "
Local cCod := "0045 "
Local cLocal := "01"
Local cChave := ""
lMsErroAuto := .F.
RpcSetEnv( "99","01",,,,,,,,,)
cChave := xFilial("SD3") + cOp + cCod + cLocal
DbSelectArea("SD3")
SD3->(DbSetOrder(1))
If SD3->(DbSeek(cChave))
//Estou montando meu array aVetor com os campos do índice enviado na última posição, no caso 1.
aVetor := {;
{"D3_FILIAL",xFilial("SD3") ,NIL},;
{"D3_OP" ,cOp ,NIL},;
{"D3_COD" ,cCod ,NIL},;
{"D3_LOCAL" ,cLocal ,NIL},;
{"INDEX" ,1 ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc )
If lMsErroAuto
Mostraerro()
Else
Alert("Ok")
Endif
EndIf
Return
//-------------------------------------------------------------------------------------
Quando receber este campo no array, o sistema fará a baixa do empenho, simulando a resposta da pergunta "O tipo de movimento da producao esta configurado para nao atualizar empenhos.No encerramento devem ser atualizados ?"
Exemplo:aVetor := { ;
{"D3_OP" , "00018001001 " , NIL},;
{"D3_TM" , "020" , NIL},;
{"D3_QUANT" , 10 , NIL},;
{"D3_PERDA" , 0 , NIL},;
{"D3_PARCTOT", "T" , NIL},;
{"ATUEMP" , "T" , NIL};
}
Para Utilizar o apontamento Pendente, deverá ser passado o campo "PENDENTE", com valor conforme parâmetros:
"1" | Não Faz apontamento Pendente |
---|---|
"2" | Faz Apontamento Pendente somente se houver Erros. |
"3" | Sempre Pendente - Todos apontamentos ficam como pendentes. |
Exemplos:
aAdd(aVetor,{"PENDENTE","2",Nil})