#Include "totvs.ch"
#Include 'Protheus.ch'
#Include "TBICONN.CH"
//--------------------------- INCLUSÃO -----------------------------------------------------------------------------------------------
User Function RMATA250()
Local aVetor := {}
Local dData
Local nOpc := 3 //-Opção de execução da rotina, informado nos parametros quais as opções possiveisl
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 EXEMPLO 1 --------------------------------------------------------------------------------------
User Function RMATA250()
Local aVetor := {}
Local nOpc := 5 //-Opção de execução da rotina, informado nos parametros quais as opções possiveis
Local cOp := "00000301001 "
Local cCod := "PROD "
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_FILIAL" ,xFilial("SD3") ,NIL},;
{"D3_OP" ,cOp ,NIL},;
{"D3_QUANT" ,10 ,NIL},;
{"D3_TM" ,"001" ,NIL},;
{"D3_LOCAL" ,cLocal ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc )
If lMsErroAuto
Mostraerro()
Else
Alert("Ok")
Endif
Exit
EndIf
SD3->(DbSkip())
EndDo
EndIf
Return
//--------------------------------------------------------- Exemplo de Perda com refugos ---------------------------------------------------------//
#INCLUDE "TOTVS.CH"
#INCLUDE 'PROTHEUS.CH'
#INCLUDE "RWMAKE.CH"
#INCLUDE "TBICONN.CH"
User Function mymata250P()
Local xRotAuto := {}
Local aRefugos := {}
Local cRfProd := PadR('MP-21921-01' ,TamSX3("BC_PRODUTO")[1])
Local cRfLocOrig := PadR('01' ,TamSX3("BC_LOCORIG")[1])
Local cRfTipo := PadR('R' ,TamSX3("BC_TIPO")[1])
Local cRfMotivo := PadR('FH' ,TamSX3("BC_MOTIVO")[1])
Local cRfQuant := 1
Local cRfProdDes := PadR('MP-21921-02' ,TamSX3("BC_CODDEST")[1])
Local cRfLocDest := PadR('01' ,TamSX3("BC_LOCAL")[1])
Local nQtdPerd := 1
PRIVATE lMsErroAuto := .F.
OpenSm0()
RPCSetType(3)
RPCSetEnv("99" , "01",,,"PCP",,,,,,)
xRotAuto := {{"D3_OP" ,"00025201001 " ,NIL},;
{"D3_PERDA" ,nQtdPerd ,NIL},;
{"D3_TM" ,"010" ,NIL}}
aAdd(aRefugos, {{"BC_PRODUTO" , cRfProd ,Nil},;
{"BC_LOCORIG" , cRfLocOrig ,Nil},;
{"BC_TIPO" , cRfTipo ,Nil},;
{"BC_MOTIVO" , cRfMotivo ,Nil},;
{"BC_QUANT" , cRfQuant ,Nil},;
{"BC_CODDEST" , cRfProdDes ,Nil},;
{"BC_LOCAL" , cRfLocDest ,Nil}})
If Len(aRefugos) > 0
aAdd(xRotAuto, {"AUTREFUGO", aRefugos, Nil})
EndIf
msExecAuto({|x,y| MATA250(x,y)},xRotAuto,3)
If lMsErroAuto
ALERT("ERRO NA INCLUSÃO")
Mostraerro()
Else
ALERT("PROCESSAMENTO EFETUADO COM SUCESSO")
Endif
Return
//--------------------------- ESTORNO EXEMPLO 2 --------------------------------------------------------------------------------------
User Function RMATA250()
Local aVetor := {}
Local nOpc := 5 //-Opção de execução da rotina, informado nos parametros quais as opções possiveis
Local cCod := "PROD "
Local cLocal:= "01"
Local cNumSeq:= "001813"
Local cCf:= "PR0"
lMsErroAuto := .F.
RpcSetEnv( "99","01",,,,,,,,,)
//Estou montando meu array aVetor com os campos do índice enviado na última posição, no caso 3.
aVetor := {;
{"D3_FILIAL" ,xFilial("SD3") ,NIL},;
{"D3_COD" ,cCod ,NIL},;
{"D3_LOCAL" ,cLocal ,NIL},;
{"D3_NUMSEQ" ,cNumSeq ,NIL},;
{"D3_CF" ,cCf ,NIL},;
{"INDEX" ,3 ,NIL}}
MSExecAuto({|x, y| mata250(x, y)},aVetor, nOpc )
If lMsErroAuto
Mostraerro()
Else
Alert("Ok")
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
//-----------------------------------------------------------------------------------------------------------------------------------------