Árvore de páginas

MATA390 - Pesquisa Lotes

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Nível de Acesso:Nível 1 (Acesso Clientes)

Idiomas:

Espanhol, Inglês

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

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.

Programa Fonte:

MATA390.PRW

Sintaxe:

MATA390 - Pesquisa Lotes ( ) --> Nil

Retorno:

Nil

    (nulo)
  • Nil
Observações:

Esta rotina pode ser utilizada via Rotina Automática.

Bloco de Código
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