Produto: | Protheus | ||||||||||||
Versões: | Todas | ||||||||||||
Ocorrência: | MATA261 - Rotina Automática (Execauto) | ||||||||||||
Ambiente: | SIGAEST - Estoque e Custos | ||||||||||||
Descrição: | Rotina automática que permite a inclusão de movimentos de transferências múltiplas. Objetivo: As transferências no segundo modelo, oferecido pelo Protheus, permite que vários produtos possam ser transferidos num único documento.
As transferências realizadas podem tratar casos particulares apresentados no "Ambiente de Inspeção de Entrada", no qual pode ocorrer "Devolução para o Controle de Qualidade". | ||||||||||||
Parâmetros: |
| ||||||||||||
Passo a passo: | #INCLUDE "PROTHEUS.CH" #include "rwmake.ch" #include "TbiConn.ch" User Function MyMata261() Local cProd := "PA001" Local cUM := "" Local cLocal := "" Local cDoc := "" Local cLote := "8888888888" Local dDatVal := "" Local nQuant := 0 Local lOk := .T. Local aItem := {} Local nOpcAuto:= 3 // Indica qual tipo de ação será tomada (Inclusão/Exclusão) PRIVATE lMsHelpAuto := .T. PRIVATE lMsErroAuto := .F. //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Abertura do ambiente | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ PREPARE ENVIRONMENT EMPRESA "YY" FILIAL "01" MODULO "EST" DbSelectArea("SB1") DbSetOrder(1) If !SB1->(MsSeek(xFilial("SB1")+cProd)) lOk := .F. ConOut(OemToAnsi("Cadastrar produto: " + cProd)) Else cProd := B1_COD cDescri := B1_DESC cUM := B1_UM cLocal := B1_LOCPAD EndIf DbSelectArea("SD5") DbSetOrder(1) If !SD5->(MsSeek(xFilial("SD5")+ " " + cProd )) lOk := .F. ConOut(OemToAnsi("Cadastrar lote: " + cLote )) Else cLote := D5_LOTECTL dDataVl := D5_DTVALID nQuant := D5_QUANT EndIf If lOk cDoc := GetSxENum("SD3","D3_DOC",1) ConOut(Repl("-",80)) ConOut(PadC("Teste de Transf. Mod2",80)) ConOut("Inicio: "+Time()) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Begin Transaction //Cabecalho a Incluir aAuto := {} aadd(aAuto,{cDoc,dDataBase}) //Cabecalho //Itens a Incluir aAdd(aItem[Len(aItem)],{"D3_COD" , cProd ,NIL})// 01.Produto Origem aAdd(aItem[Len(aItem)],{"D3_DESCRI" , cDescri ,NIL})// 02.Descricao aAdd(aItem[Len(aItem)],{"D3_UM" , cUM ,NIL})// 03.Unidade de Medida aAdd(aItem[Len(aItem)],{"D3_LOCAL" , cLocal ,NIL})// 04.Armazem Origem aAdd(aItem[Len(aItem)],{"D3_LOCALIZ" , "" ,NIL})// 05.Endereco Origem aAdd(aItem[Len(aItem)],{"D3_COD" , cProd ,NIL})// 06.Produto Destino aAdd(aItem[Len(aItem)],{"D3_DESCRI" , cDescri ,NIL})// 07.Descricao aAdd(aItem[Len(aItem)],{"D3_UM" , cUM ,NIL})// 08.Unidade de Medida aAdd(aItem[Len(aItem)],{"D3_LOCAL" , cLocal ,NIL})// 09.Armazem Destino aAdd(aItem[Len(aItem)],{"D3_LOCALIZ" , "" ,NIL})// 10.Endereco Destino aAdd(aItem[Len(aItem)],{"D3_NUMSERI" , "" ,NIL})// 11.Numero de Serie aAdd(aItem[Len(aItem)],{"D3_LOTECTL" , cLote ,NIL})// 12.Lote Origem aAdd(aItem[Len(aItem)],{"D3_NUMLOTE" , "" ,NIL})// 13.Sub-Lote aAdd(aItem[Len(aItem)],{"D3_DTVALID" , dDataVl ,NIL})// 14.Data de Validade aAdd(aItem[Len(aItem)],{"D3_POTENCI" , 0 ,NIL})// 15.Potencia do Lote aAdd(aItem[Len(aItem)],{"D3_QUANT" , nQuant ,NIL})// 16.Quantidade aAdd(aItem[Len(aItem)],{"D3_QTSEGUM" , 0 ,NIL})// 17.Quantidade na 2 UM aAdd(aItem[Len(aItem)],{"D3_ESTORNO" , "" ,NIL})// 18.Estorno aAdd(aItem[Len(aItem)],{"D3_NUMSEQ" , "" ,NIL})// 19.NumSeq aAdd(aItem[Len(aItem)],{"D3_LOTECTL" , cLote ,NIL})// 20.Lote Destino aAdd(aItem[Len(aItem)],{"D3_DTVALID" , dDataVl ,NIL})// 21.Data de Validade Destino aadd(aAuto,aItem) MSExecAuto({|x,y| mata261(x,y)},aAuto,nOpcAuto) If !lMsErroAuto ConOut("Incluido com sucesso! " + cDoc) Else ConOut("Erro na inclusao!") MostraErro() EndIf ConOut("Fim : "+Time()) End Transaction EndIf RESET ENVIRONMENT Return Nil //=================================================================================== // Exemplo Estorno: //=================================================================================== User Function Tmata261() Local aAUTO := {} Local cDoc := "000113001" Local cProd := "TESTE " Private lMsErroAuto := .F. RpcSetEnv("99","01",,,,,,,,,) DbSelectArea("SD3") DbSetOrder(2) DbSeek(xFilial("SD3")+cDoc+cProd) aAuto := {} MSExecAuto({|x,y| mata261(x,y)},aAuto,6) If !lMsErroAuto ALERT("Incluido com sucesso! ") ALERT(CVALTOCHAR(LMSERROAUTO)) Else ALERT("Erro na inclusao!") MostraErro() EndIf Return
|