Uso da rotina automática FINA280 - Faturas a Receber

Produto:

Microsiga Protheus

Versões:

12.1.7, 12.1.16 e 12.1.17

Ocorrência:

Exemplo de Execauto para utilizar a rotina Faturas a Receber (FINA280)

Passo a passo:

A rotina FINA280 possui três parâmetros a serem informados, porém para o funcionamento em Execauto. O terceiro parâmetro necessita ser preenchido como um array, pois as informações utilizadas neste array são essenciais para a conclusão do processo.

Parâmetros utilizados pela FINA280:

1 - nOpc: Opção que está sendo realizada no fonte, como por exemplo: Gerar Fatura ou Cancelamento.

Conteúdos do nOpc: 3 - Gerar Fatura, 4 - Cancelamento de fatura
 

2 - Parâmetro reservado: Sempre informar Falso(.F.)
 

3 - xAutoCab: É possível informar o array com os títulos que irão compor a fatura e as informações necessárias para geração/cancelamento da fatura, como por exemplo numero da fatura, tipo, etc.

*** Dados para geração da Fatura ***
AUTPREFIXO - Prefixo;
AUTTIPO - Tipo;
AUTNUMFAT - Numero da fatura;
AUTNATUR - Natureza;
AUTMOEDA - Moeda;
AUTCLIGER - Cliente;
AUTLOJGER - Loja;
AUTCONDPG - Condição de Pagamento; 

*** Títulos selecionados para geração da Fatura ***
 AUTSELTIT - Array contendo os RECNOS dos títulos utilizados para compor a geração da Fatura;

*** Títulos de Fatura *** 
 AUTTITCAN - RECNO de um dos títulos originados pela geração da Fatura;

Caso os campos abaixo sejam informados com valor zero no array da rotina automática, o 4o. elemento no array (lógico) deve retornar .T. para que seja considerado o valor informado. Se o 4o. elemento não for informado o sistema assume os valores padrão do sistema: 

*** 

Observação:

Quando utilizamos rotinas automáticas, a interação com o usuário através de interfaces deixa de existir, ou seja, o processo não será feito através de telas e botões. Desta forma, a tela padrão de marcação de títulos (markbrowse) em que será selecionado os títulos que irão compor a Fatura não estará disponível e a rotina irá considerar todos os títulos referenciados no array (variável aArray).



Exemplo


#Include 'Protheus.ch'
#INCLUDE "TBICONN.CH"
 
USER FUNCTION F280AUTO()
LOCAL aCab := {} // array enviado para a rotina
LOCAL aTit := {} // array com os títulos a faturar
LOCAL nOpc := 0
 
//Dados do título
LOCAL cPreFat	:= "FAT"
LOCAL cFil1		:= "D MG 01 "
LOCAL cNumFat	:= "FT001    "
LOCAL cTipo		:= "FT "
Local cParFat	:= "001"
LOCAL cCliFat	:= "001   "
LOCAL cLoja		:= "01"
LOCAL cNatFat	:= "001       "
LOCAL cCondFat	:= "003"
LOCAL cRecno	:= "3"
LOCAL dDataBase	:= STOD("20160612")
Private lMsErroAuto := .F.

While .T.
	aCab := {}
	aTit := {}
    nOpc := Aviso("TESTE EXECAUTO DO FINA280", "Escolha a opção do menu da rotina FINA280 a ser executada via EXECAUTO",{"FAT","CANC","SAIR"})
	lMsErroAuto := .F.
	
	If nOpc == 1
		
		//|---------------------------------|
		//| Dados para Fatura               |
		//|---------------------------------|
		AADD(aCab, {"AUTPREFIXO"	, cPreFat	, Nil})
		AADD(aCab, {"AUTTIPO" 		, cTipo		, Nil})
		AADD(aCab, {"AUTNUMFAT"		, cNumFat	, Nil})
		AADD(aCab, {"AUTNATUR"		, cNatFat	, Nil})
		AADD(aCab, {"AUTMOEDA"		, "01"		, Nil}) 
		AADD(aCab, {"AUTCLIGER"		, cCliFat	, Nil})
		AADD(aCab, {"AUTLOJGER"		, cLoja		, Nil})
		AADD(aCab, {"AUTCONDPG"		, cCondFat , Nil})
		
		//|---------------------------------|
		//| SELECIONA TÍTULOS               |
		//|---------------------------------|
		DbSelectArea("SE1")
		SE1->(DbSetOrder(1))
		SE1->(DbSeek(xFilial("SE1")+"MAN001         NF 00101")) // Título
		cRecno := cValToChar(SE1->(Recno()))
		aTit := {}
		AADD(aTit, {"RECNO"		, cRecno, Nil}) // R_E_C_N_O_ do registro selecionado
		aAdd(aCab,{"AUTSELTIT",aTit,Nil}) // Adicionando os Títulos a serem Faturados;
		MsExecAuto( { |x,y,z| FINA280(x,y,z)} , 3, .F. , aCab)
		
		If lMsErroAuto
		    MostraErro()
		Else
		    Alert("Fatura gerada com sucesso!")
		Endif
		
	ElseIf nOpc == 2
		
		//|---------------------------------|
		//| SELECIONA FATURA À CANCELAR     |
		//|---------------------------------|
		DbSelectArea("SE1")
		SE1->(DbSetOrder(1))
		SE1->(DbSeek(xFilial("SE1")+cPreFat+cNumFat+cParFat+cTipo+cCliFat+cLoja)) // Título
		cRecno := cValToChar(SE1->(Recno()))
		aAdd(aCab,{"AUTTITCAN",cRecno,Nil}) // Adicionando recno da Fatura a ser cancelada;
		MsExecAuto( { |x,y,z| FINA280(x,y,z)} , 4, .F., aCab)
		
		If lMsErroAuto
		    MostraErro()
		Else
		    Alert("Fatura cancelada com sucesso!")
		Endif
	
	ElseIf nOpc == 3
		Exit
	EndIf
EndDo

Return