Versões: | Microsiga Protheus 8.11 , Protheus 10 |
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível às Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Espanhol , Inglês |
OBJETIVO:
Esta rotina tem como objetivo pesquisar e visualizar lotes já existentes e incluir/excluir lotes novos (somente lotes incluídos manualmente poderão ser excluídos). A inclusão de lotes deve ser utilizada quando um produto com saldo em estoque e sem controle de rastreabilidade passa a utilizar este controle.
Neste caso, deve-se um lote com a quantidade em estoque para o produto, através do cadastro de produtos, com conteúdo “S” (Sublote). Caso deseje utilizar controle tipo “L” = Lote, deve-se alterar o campo manualmente.
Outra função desta rotina é a alteração da data de validade do Lote/Sublote.
IMPORTANTE:
Esta rotina permite a inclusão de saldos para rastreabilidade em produtos que já possuam saldo em estoque.
MATA390.PRW
MATA390 - Pesquisa Lotes ( ) --> Nil
-
Nil(nulo)
- Nil
Esta rotina pode ser utilizada via Rotina Automática.
User Function MyMata390()Local aCabec := {}Local cLoteFor := ""Local cProduto := ""Local cArmazem := ""Local cDoc := ""Local cSerie := ""Local dDatMov := ""Local nQuant := 0Local nLote := ""Local dDatVal := "" Local lOk := .T.Private lMsHelpAuto := .T.PRIVATE lMsErroAuto := .F.//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Abertura do ambiente |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙPREPARE ENVIRONMENT EMPRESA "YY" FILIAL "01" MODULO "EST" TABLES "SD5" DbSelectArea("SB1")DbSetOrder(1)If !SB1->(MsSeek(xFilial("SB1")+"PA001")) lOk := .F. ConOut(OemToAnsi("Cadastrar produto: PA001"))EndIfDbSelectArea("SF1")DbSetOrder(1)If !SF1->(MsSeek(xFilial("SF1")+"000000001"+"UNI")) lOk := .F. ConOut(OemToAnsi("Cadastrar NF: PA001"))EndIfIf lOk cDoc := SF1->F1_DOC cSerie := SF1->F1_SERIE DbSelectArea("SD1") DbSetOrder(1) dbSeek(xFilial("SD1")+cDoc+cSerie) cProduto := SD1->D1_COD nQuant := D1_QUANT cArmazem := Posicione("SB1",1,xFilial("SB1")+cProduto,"B1_LOCPAD") dDatMov := dDataBase cLoteFor := "00001" dDatVal := CtoD("31/12/2008") nLote := SD5->D5_LOTECTL If Empty(nLote) nLote := StrZero(1,Len(SD1->D1_DOC)) Else nLote := Soma1(nLote) EndIf ConOut(Repl("-",80)) ConOut(PadC("Teste de Manutencoes nas Movimentacoes de Lote",80)) ConOut("Inicio: "+Time()) //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ //| Teste de Inclusao | //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Begin Transaction aCabec := {} aadd(aCabec,{"D5_LOTEFOR",cLoteFor,}) aadd(aCabec,{"D5_PRODUTO",cProduto,}) aadd(aCabec,{"D5_LOCAL",cArmazem,}) aadd(aCabec,{"D5_DOC",cDoc,}) aadd(aCabec,{"D5_SERIE",cSerie,}) aadd(aCabec,{"D5_DATA",dDatMov,}) aadd(aCabec,{"D5_QUANT",nQuant,}) aadd(aCabec,{"D5_LOTECTL",nLote,}) aadd(aCabec,{"D5_DTVALID",dDatVal,}) MSExecAuto({|x,y| mata390(x,y)},aCabec,3) If !lMsErroAuto ConOut("Incluido com sucesso! "+nLote) Else ConOut("Erro na inclusao!") EndIf ConOut("Fim : "+Time()) End TransactionEndIfRESET ENVIRONMENTReturn Nil