Execauto MATA261 - Transferências Múltiplas.
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. Importante: Este modelo de transferência é semelhante à transferência normal, possui os mesmos parâmetros relacionados, campos, e tem como única diferença o fato de que a data de emissão e o documento se aplicam a todas as transferências. 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 Importante: O Modelo acima está baseado em campos padrões sem nenhuma integração ativa ou campos adicionais. Sugere-se que o desenvolvedor efetue uma simulação manual, com as integrações ativas, e observe todos os campos que poderão ser obrigatórios e deverão ser adicionados em suas respectivas posições para evitar erro no momento da execução pela falta de campos. O modelo acima não necessariamente é funcional e trata-se apenas de um exemplo orientativo de utilização. |