Pagetitle |
---|
| MATA250 - Produção |
---|
| MATA250 - Produção |
---|
|
Função: MATA250 - ProduçãoEsta 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ão5) Estorno7Inclusã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 parametro parâmetro ABREOP pode ser preenchido na rotina automática de Estorno, possibilitanto possibilitando estornar o apontamento da produção e permitindo ao usuário estornar ou não o empenho gerado na SD4. O parametro 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 parametrosparâmetros quais as opções possiveislMsErroAuto possíveis
lMsErroAuto := .F. RpcSetEnv( "99","01",,,,,,,,,) dData:=dDataBaseaVetordDataBase aVetor := {; {"D3_OP" ,"00000501001 " ,NIL},; {"D3_TM" ,"010" ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc ) If lMsErroAuto Mostraerro() else Alert("Ok")EndifReturn Endif Return //ESTORNO User Function REMAT250() Local aVetor := {} Local nOpc := 5 //-Opção de execução da rotina, informado nos parametrosparâmetros quais as opções possíveis possiveis 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 //-------------------------------------------------------------------------------------
Atenção: Para estorno de Ordens com mais de um apontamento é necessário indicar qual o registro a ser estornado. Para tal, deve-se criar a variável "nRegSD3" com o RECNO do registro a ser estornado. Exemplo: Public nRegSD3 nRegSD3 := SD3->(Recno()) Para que o sistema faça a baixa dos empenhos na chamada via ExecAuto, mesmo com o parâmetro Atu. Empenho está igual a Não, deve-se enviar um campo extra no array chamado "ATUEMP", com valor "T". 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}) |