Árvore de páginas


Produto:

Microsiga Protheus®

Ocorrência:

Como incluir um registro de ordem de serviço via execauto

Ambiente:

Microsiga Protheus - SIGATEC -  Gestão de Serviços

Solução:

Está solução é uma explicação de como é criado um registro via execauto na ordem de serviço

Passo a passo:

Vamos criar um exemplo de execauto para a inclusão de um registro para a ordem de serviço

Exemplo de Uso
 #INCLUDE "TOTVS.CH"
#INCLUDE "TBICONN.CH"

User Function MyTeca450()

Local lOk      := .T.
Local aCabec   := {}
Local aItem    := {}
Local aItens   := {}
Local aApont   := {}
Local aAponts  := {}
Local cNumOS   := ""

Private lMsErroAuto := .F.

ConOut(Repl("-",80))

PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "TEC" TABLES "SA1","SE4","DA0","AA3","AAG","AA5","SB1","AA5","AB6","AB7","AB8"

DbSelectArea("SA1")
DbSetOrder(1)

If !SA1->(DbSeek(xFilial("SA1")+"00000101"))	
	lOk := .F.	
	ConOut("Cadastrar Cliente: 000001 Loja: 01")
EndIf

DbSelectArea("SB1")
DbSetOrder(1)
//VERICAR TAMANHO DOS CAMPOS DE PRODUTO
If !SB1->(DbSeek(xFilial("SB1")+" COM00000000000000000000000011"))	
	lOk := .F.	
	ConOut("Cadastrar Produto:  COM00000000000000000000000011")
EndIf


DbSelectArea("SE4")
DbSetOrder(1)

If !SE4->(DbSeek(xFilial("SE4")+"001"))	
	lOk := .F.	
	ConOut("Cadastrar Condicao de Pagamento: 001")
EndIf

If !SE4->(DbSeek(xFilial("SE4")+"002"))	
	lOk := .F.	
	ConOut("Cadastrar Condicao de Pagamento: 002")
EndIf


DbSelectArea("AA3")
DbSetOrder(1)
//VERIFICAR TAMANHO DE CAMPO DE PRODUTO E NUMERO DE SERIE
If !AA3->(DbSeek(xFilial("AA3")+"00000101"+ " COM00000000000000000000000011"+"00000000544000000001"))	
	lOk := .F.	
	ConOut("Cadastrar Base Instalada Cliente/Loja: 000001/01 Produto: COM00000000000000000000000011 Série: 00030400029400000001")
EndIf

DbSelectArea("AAG")
DbSetOrder(1)

If !AAG->(DbSeek(xFilial("AAG")+"OC01  "))
	lOk := .F.	
	ConOut("Cadastrar Ocorrencia: OC01  ")
EndIf

DbSelectArea("AA5")
DbSetOrder(1)

If !AA5->(DbSeek(xFilial("AA5")+"000006"))
	lOk := .F.	
	ConOut("Cadastrar Servico: 000006")
EndIf

If lOk	
	
    ConOut(PadC("Teste de Inclusao da OS",80))
	ConOut("Inicio: "+Time())	
	cNumOS := GetSXENum("AB6","AB6_NUMOS")	
	RollBackSx8()	
	
    aAdd(aCabec,{"AB6_NUMOS",cNumOS,Nil})	
	aAdd(aCabec,{"AB6_CODCLI",SA1->A1_COD,Nil})	
	aAdd(aCabec,{"AB6_LOJA"  ,SA1->A1_LOJA,Nil})	
	aAdd(aCabec,{"AB6_EMISSA",dDataBase,Nil})	
	aAdd(aCabec,{"AB6_ATEND" ,cUserName,Nil})	
	aAdd(aCabec,{"AB6_CONPAG","001",Nil})	
	aAdd(aCabec,{"AB6_HORA"  ,Time(),Nil})	
	
	aAdd(aItem,{"AB7_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aItem,{"AB7_TIPO"  ,"1",Nil})	
	aAdd(aItem,{"AB7_CODPRO",AA3->AA3_CODPRO,Nil})	
	aAdd(aItem,{"AB7_NUMSER",AA3->AA3_NUMSER,Nil})	
	aAdd(aItem,{"AB7_CODPRB",AAG->AAG_CODPRB,Nil})	
	
    aAdd(aItens,aItem)	

	aAdd(aApont,{"AB8_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_SUBITE",StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_CODPRO",SB1->B1_COD,Nil})	
	aAdd(aApont,{"AB8_CODSER",AA5->AA5_CODSER,Nil})	
	aAdd(aApont,{"AB8_QUANT",1,Nil})	
	aAdd(aApont,{"AB8_VUNIT",100,Nil})	
	aAdd(aApont,{"AB8_PRCLIS",100,Nil})	
	
    aAdd(aAponts,aApont)	

	TECA450(,aCabec,aItens,aAponts,3)	

	If !lMsErroAuto		
		ConOut("Inclusao com sucesso! ")	
	Else		
		ConOut("Erro na inclusao!")	
	EndIf	

	aCabec := {}	
	aItem  := {}	
	aItens := {}	
	aApont := {}	
	aAponts:= {}	

	ConOut(PadC("Teste de Alteracao da OS",80))	
	
	aAdd(aCabec,{"AB6_NUMOS",cNumOS,Nil})	
	aAdd(aCabec,{"AB6_CODCLI",SA1->A1_COD,Nil})	
	aAdd(aCabec,{"AB6_LOJA"  ,SA1->A1_LOJA,Nil})	
	aAdd(aCabec,{"AB6_EMISSA",dDataBase,Nil})	
	aAdd(aCabec,{"AB6_ATEND" ,cUserName,Nil})	
	aAdd(aCabec,{"AB6_CONPAG","002",Nil})	
	aAdd(aCabec,{"AB6_HORA"  ,Time(),Nil})

	aAdd(aItem,{"LINPOS","AB7_ITEM","01"})	
	aAdd(aItem,{"AB7_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aItem,{"AB7_TIPO"  ,"1",Nil})	
	aAdd(aItem,{"AB7_CODPRO",AA3->AA3_CODPRO,Nil})	
	aAdd(aItem,{"AB7_NUMSER",AA3->AA3_NUMSER,Nil})	
	aAdd(aItem,{"AB7_CODPRB",AAG->AAG_CODPRB,Nil})		
	
    aAdd(aItens,aItem)	

	aAdd(aApont,{"AB8_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_SUBITE",StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_CODPRO",SB1->B1_COD,Nil})	
	aAdd(aApont,{"AB8_CODSER",AA5->AA5_CODSER,Nil})	
	aAdd(aApont,{"AB8_QUANT",2,Nil})	
	aAdd(aApont,{"AB8_VUNIT",100,Nil})	
	aAdd(aApont,{"AB8_PRCLIS",100,Nil})	
	
    aAdd(aAponts,aApont)	

	TECA450(,aCabec,aItens,aAponts,4)	

	If !lMsErroAuto		
		ConOut("Alteracao com sucesso! ")	
	Else		
		ConOut("Erro na Alteracao!")	
	EndIf	

	aCabec := {}	
	aItem  := {}	
	aItens := {}	
	aApont := {}	
	aAponts:= {}	

	ConOut(PadC("Teste de Exclusao da OS",80))	

	aAdd(aCabec,{"AB6_NUMOS",cNumOS,Nil})	
	aAdd(aCabec,{"AB6_CODCLI",SA1->A1_COD,Nil})	
	aAdd(aCabec,{"AB6_LOJA"  ,SA1->A1_LOJA,Nil})	
	aAdd(aCabec,{"AB6_EMISSA",dDataBase,Nil})	
	aAdd(aCabec,{"AB6_ATEND" ,cUserName,Nil})	
	aAdd(aCabec,{"AB6_CONPAG","002",Nil})	
	aAdd(aCabec,{"AB6_HORA"  ,Time(),Nil})

	aAdd(aItem,{"AB7_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aItem,{"AB7_TIPO"  ,"1",Nil})	
	aAdd(aItem,{"AB7_CODPRO",AA3->AA3_CODPRO,Nil})	
	aAdd(aItem,{"AB7_NUMSER",AA3->AA3_NUMSER,Nil})	
	aAdd(aItem,{"AB7_CODPRB",AAG->AAG_CODPRB,Nil})		
	
    aAdd(aItens,aItem)	

	aAdd(aApont,{"AB8_ITEM"  ,StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_SUBITE",StrZero(1,2),Nil})	
	aAdd(aApont,{"AB8_CODPRO",SB1->B1_COD,Nil})	
	aAdd(aApont,{"AB8_CODSER",AA5->AA5_CODSER,Nil})	
	aAdd(aApont,{"AB8_QUANT",2,Nil})	
	aAdd(aApont,{"AB8_VUNIT",100,Nil})	
	aAdd(aApont,{"AB8_PRCLIS",100,Nil})	
	
    aAdd(aAponts,aApont)	

	TECA450(,aCabec,aItens,aAponts,5)	

	If !lMsErroAuto		
		ConOut("Exclusao com sucesso! ")	
	Else		
		ConOut("Erro na Exclusao!")	
	EndIf	

	aCabec := {}	
	aItem  := {}	
	aItens := {}	
	aApont := {}	
	aAponts:= {}	

	ConOut("Fim  : "+Time())

EndIf

RESET ENVIRONMENT

Return 


Importante

Os dados enviados para exclusão devem existir, pois internamente é realizado um posicionamento no registro para a exclusão do mesmo



Observações: