Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Produto:

Microsiga Protheus

Versões:

11.80 em diante

Ocorrência:

Como utilizar rotina automática ExecAuto da Planilha Orçamentária (PCOA100) ?

Ambiente:

SIGAPCO - Planejamento e Controle Orçamentário

Passo a passo:

A rotina automática (ExecAuto) do cadastro de planilha orçamentaria (PCOA100) pode ser utilizado de duas formas:

1) Primeira Situação:  Para incluir a Planilha Orçamentaria (AK1) e o nó principal da estrutura (AK3).

Para este caso, deve ser passado para a função PCOA100 apenas a estrutura xAutoCab, contendo os campos da tabela "Planilha Orçamentaria" (AK1).

A estrutura do xAutoItens não deve ser passado para a função.

Bloco de código
languagexml
themeFadeToGrey
titleExemplo de Inclusão da Planilha Orçamentária
collapsetrue
Local aAutoCab
aAutoCab := { ;
			{"AK1_CODIGO", "TSTPCOA100TESTEPLAN000001" 							, nil},;
			{"AK1_VERSAO", "0001" 									, nil},;
			{"AK1_DESCRI", "TESTE DO PCOA100 PARA INCLUIR PLANILHA" , nil},;
			{"AK1_TPPERI", "3" 										, nil},;
			{"AK1_INIPER", CTOD("01/01/16") 						, nil},;
			{"AK1_FIMPER", CTOD("31/12/16") 						, nil},;
			{"AK1_CTRUSR", "1" 										, nil},;
			{"AK1_STATUS", "1" 										, nil};
			}


2) Segunda Situação: Para alteração de itens do orçamento (AK2).

Para este caso, deve ser passado para a função PCOA100 as estruturas xAutoCab e xAutoItens.

Na estrutura xAutoCab deve ser passado o código da planilha, a versão e a conta orçamentária analítica,  analítica que receberá os itens passado na estrutura xAutoItens.

Os períodos devem ser preenchidos com a estrutura P99, onde 99 é o dígito numérico que representa o período desejado.

Exemplo: P01 para primeiro período, P02 para segundo segundo período e assim deve seguir até o último período desejado.2.1) Alterando um item já existente:


Aviso
titleImportante


A rotina automática (Execauto) não fará o cadastro da estrutura analítica da planilha orçamentária.

Este cadastro deverá ser feito diretamente na rotina "Orçamentos" (Atualizações/Planilhas/Orçamentos).

Para incluir essa estrutura, altere a planilha desejada e selecione a opção: Outras Ações/Estrut./Incluir C.O..


2.1) Alterando um item já existente:

Para alterar um item já existente, deve ser usado a Para alterar um item já existente, deve ser usado a clausula LINPOS.

Nesta clausula, o primeiro elemento é o texto LINPOS, o segundo elemento é o campo referente ao item e no terceiro elemento deve ser o código do item da planilha.

Observação: para alterar os valores deve ser enviado toda a estrutura xAutoItens e modificar com os novos dados as posições desejadas.


Bloco de código
languagexml
themeFadeToGrey
titleAlteração de um item existente
collapsetrue
//exemplo de alteração de um item já existente na planilha 
xAutoCab := {;
			{"AK2_ORCAME", "MYPLANORCTESTEPLAN000001" 	, nil},;
			{"AK2_VERSAO", "0001" 			 , nil},;
			{"AK2_CO" 	 , "1010111" 		 , nil}; // Mesma conta analítica do xAutoItens
			}



xAutoItens := {} 
aAdd(xAutoItens,{;
				{'AK2_ORCAME' , 'MYPLANORCTESTEPLAN000001' , NIL   },; 
				 {'AK2_VERSAO' , '0001' 	 ,	 	  , NIL   },;
				 {'AK2_CO' 	   , '1111010111'	 		  , NIL   },;
				 {'AK2_ID' 	   , '0001'		 	  , NIL   },;
				 {'AK2_CLASSE' , '000001'	 	  , NIL   },;
				 {'LINPOS' 	   , 'AK2_ID'	 	  , '0001'},; //estruturaEstrutura do elemento LINPOS
				 {'P01' 	   	  , 11000 		 	  , NIL   },; //P01 - primeiro período
				 {'P02' 	   	  , 12000 			  , NIL   },; //P02 - segundo período
				 {'P03' 	   	  , 13000 			  , NIL   },;
				 {'P04' 	   	  , 14000 			  , NIL   },;
				 {'P05' 	   	  , 15000 			  , NIL   },;
				 {'P06' 	   	  , 16000 			  , NIL   },;
				 {'P07' 	   	  , 17000 			  , NIL   },;
				 {'P08' 	   	  , 18000 		 	  , NIL   },;
				 {'P09' 	   	  , 19000 		 	  , NIL   },;
				 {'P10' 	   	  , 20000 		 	  , NIL   },;
				 {'P11' 	   	  , 21000 		 	  , NIL   },;
				 {'P12' 	   	  , 22000 		 	  , NIL   };
				 })


2.2) Criando um novo item na em uma planilha existente:

Para incluir um novo item na planilha, no conteúdo do campo AK2_ID deve ser passado "*".


Bloco de código
languagexml
themeFadeToGrey
titleInclusão de novo item na Planilha
collapsetrue
//exemplo de inclusão de novo item na planilha 
aAdd(xAutoItens,{ {'xAutoCab := {;
			{"AK2_ORCAME' ,'MYPLANORC'", "TESTEPLAN000001" , NILnil},; 
				{'"AK2_VERSAO'", ,'"0001'" 			 , NILnil},;
				{'"AK2_CO'" 	 ,'111' , NIL}, "1010111" 		 , nil}; // Mesma conta analítica do xAutoItens
			}

xAutoItens := {}
aAdd(xAutoItens,{;
				{'AK2_IDORCAME' ,'*TESTEPLAN000001' , NIL},; 
				{'AK2_CLASSEVERSAO' ,'0000010001' 	   		 , NIL},;
				{'P01AK2_CO' ,11000	  ,'1010111' 		 , NIL},; //primeiro período 
				{'P02AK2_ID' ,12000	  ,'*'				 , NIL},; //segundo período
				{'P03' ,13000 , NIL},;AKD_ID com '*' para criar um novo registro na AK2
				{'P04AK2_CLASSE' ,14000'000001' 		 , NIL},;
				{'P05P01' ,15000		  ,11000 			 , NIL},; //P01 - primeiro período 
				{'P06P02' 		  ,1600012000 			 , NIL},; //P02 = segundo período
				{'P07P03' ,17000		  ,13000 			 , NIL},;
				{'P08P04' ,18000		  ,14000 			 , NIL},;
				{'P09P05' ,19000		  ,15000 			 , NIL},;
				{'P10P06' 		  ,2000016000 			 , NIL},;
				{'P11P07' 		  ,2100017000 			 , NIL},;
				{'P12P08' ,22000		  ,18000 			 , NIL},;
				{'P09' 		  ,19000 			 , NIL} )

Abaixo exemplo de código fonte para incluir planilha (AK1) e para alterar itens da planilha (AK2):

,;
				{'P10' 		  ,20000 			 , NIL},;
				{'P11' 		  ,21000 			 , NIL},;
				{'P12' 		  ,22000 			 , NIL};
				})
Aviso
titleAviso


O tamanho dos campos chave (Exemplo: AK2_ORCAME, AK2_VERSAO) devem respeitar o tamanho do dicionário de dados.
Verifique a necessidade de utilizar funções como PADR() para esta padronização.


Abaixo exemplo de código fonte para incluir planilha (AK1) e para alterar itens da planilha (AK2):

Bloco de código
languagexml
themeFadeToGrey
titleExemplo de ExecAuto
collapsetrue
#include "Protheus.ch"

User Function TstPcoa100()
    Local aAutoCab   := {}
    Local aAutoItens := {}

    Private lMsHelpAuto := .T.
    Private lMsErroAuto := .F.

    If 
Bloco de código
languagexml
themeFadeToGrey
titleExemplo de ExecAuto
#include "Protheus.ch"

User Function TstPcoa100()

    Local aAutoCab
    Local aAutoItens

    Private lMsHelpAuto := .T.
    Private lMsErroAuto := .F.

    If MsgYesNo("Deseja Incluir planilha - Caso nao sera considerado alterar","Atencao")
        aAutoCab := { ;
                    {"AK1_CODIGO" , "TSTPCOA100TESTEPLAN000001"        , nil},;
                    {"AK1_VERSAO" , "0001"              , nil},;
                    {"AK1_DESCRI" , "TESTE DO PCOA100 PARA INCLUIR PLANILHA" , nil},;
                    {"AK1_TPPERI" , "3"                 , nil},;
                    {"AK1_INIPER" , CTOD("01/01/1619")    , nil},;
                    {"AK1_FIMPER" , CTOD("31/12/1619")    , nil},;
                    {"AK1_CTRUSR" , "1"                 , nil},;
                    {"AK1_STATUS" , "1"                 , nil};
                    }

        MSExecAuto( {|x, y, z, a, b, c| PCOA100(x, y, z, a, b, c)}, 3/*nCallOpcx*/,/*cRevisa*/, /*lRev*/, /*lSim*/, aAutoCab, /*xAutoItens*/) //inclusão na AK1

        If !lMsErroAuto
            msgalert("Incluido com sucesso! ")
        Else 
            msgalert("Erro na inclusao!")
            MostraErro()
        EndIf

    Else

     /   //alteracao da planilha - A estrutura analítica da planilha tem que estar prontopronta AK1 / AK3
        aAutoCab := { ;
                    {"AK2_ORCAME"   , "TSTPCOA100TESTEPLAN000001"  , nil },;
                    {"AK2_VERSAO"   , "0001"            , nil },;
                    {"AK2_CO"       , "1111010111"         , nil }; 
                    }

        aAutoItens := {}
        /*
        //exemplo de alteracao de um item ja existente na planilha 
        aAdd(aAutoItens,{   {'AK2_ORCAME'   , 'TSTPCOA100TESTEPLAN000001'  , NIL   },; 
                            {'AK2_VERSAO'   , '0001'            , NIL   },;
                            {'AK2_CO'       , '1111010111'         , NIL   },;
                            {'AK2_ID'       , '0001'            , NIL   },;
                            {'AK2_CLASSE'   , '000001'          , NIL   },;
                            {'LINPOS'       , 'AK2_ID'          , '0001'},;
                            {'P01'          , 11000             , NIL   },;
                            {'P02'          , 12000             , NIL   },;
                            {'P03'          , 13000             , NIL   },;
                            {'P04'          , 14000             , NIL   },;
                            {'P05'          , 15000             , NIL   },;
                            {'P06'          , 16000             , NIL   },;
                            {'P07'          , 17000         ,    , NIL   },;
                            {'P08'          , 18000             , NIL   },;
                            {'P09'          , 19000             , NIL   },;
                            {'P10'          , 20000             , NIL   },;
                            {'P11'          , 21000             , NIL   },;
                            {'P12'          , 22000             , NIL   };
                            } )
        */*

        //exemplo de inclusao de um novo item na planilha
        aAdd(aAutoItens,{   {'AK2_ORCAME'   ,  'TSTPCOA100TESTEPLAN000001' ,   NIL},; 
                            {'AK2_VERSAO'   ,  '0001'        ,    , NIL},;
                            {'AK2_CO'       ,  '1111010111'         ,   NIL},;
                            {'AK2_ID'       ,  '*'          ,     , NIL},; 
                            {'AK2_CLASSE'   ,  '000001'     ,     , NIL},;
                            {'P01'          , 111000   111000      ,   , NIL},;
                            {'P02'          , 112000   112000      ,   , NIL},;
                            {'P03'          , 113000  113000       ,   , NIL},;
                            {'P04'          , 114000  114000       ,   , NIL},;
                            {'P05'          , 115000  115000        ,  , NIL},;
                            {'P06'          , 116000   116000       ,  , NIL},;
                            {'P07'          , 117000  117000        ,  , NIL},;
                            {'P08'          , 118000  118000        ,  , NIL},;
                            {'P09'          , 119000   119000       ,  , NIL},;
                            {'P10'          , 120000   120000       ,  , NIL},;
                            {'P11'          , 121000  121000        ,  , NIL},;
                            {'P12'          , 122000  122000       ,   , NIL};
                        } )

    MSExecAuto( {|x, y, z, a, b, c| PCOA100(x, y, z, a, b, c)}, 4/*nCallOpcx*/, /*cRevisa*/, /*lRev*/, /*lSim*/, aAutoCab, aAutoItens) //4=alteração para manipular itens da planilha

    If !lMsErroAuto
        msgalert("Alterado os itens da planilha com sucesso! ")
    Else
        msgalert("Erro na alteracao dos itens da planilha!")
        MostraErro()
    EndIf

    EndIf

Return
     

#include "Protheus.ch"

User Function TstPcoa100()

Local aAutoCab
Local aAutoItens

Private lMsHelpAuto := .T.
Private lMsErroAuto := .F.

If MsgYesNo("Deseja Incluir planilha - Caso nao sera considerado alterar","Atencao")
aAutoCab := { ;
{"AK1_CODIGO", "TSTPCOA100" , nil},;
{"AK1_VERSAO", "0001" , nil},;
{"AK1_DESCRI" , "TESTE DO PCOA100 PARA INCLUIR PLANILHA" , nil},;
{"AK1_TPPERI" , "3" , nil},;
{"AK1_INIPER" , CTOD("01/01/16") , nil},;
{"AK1_FIMPER" , CTOD("31/12/16") , nil},;
{"AK1_CTRUSR" , "1" , nil},;
{"AK1_STATUS" , "1" , nil};
}
MSExecAuto( {|x,y,z,a,b,c| PCOA100(x,y,z, a, b, c)}, 3/*nCallOpcx*/,/*cRevisa*/, /*lRev*/, /*lSim*/,aAutoCab, /*xAutoItens*/) //inclusão AK1
If !lMsErroAuto
msgalert("Incluido com sucesso! ")
Else
msgalert("Erro na inclusao!")
MostraErro()
EndIf
Else
//alteracao da planilha - estrutura tem que estar pronto AK1 / AK3
aAutoCab := { ;
{"AK2_ORCAME", "TSTPCOA100" , nil},;
{"AK2_VERSAO", "0001" , nil},;
{"AK2_CO" , "111" , nil};
}
aAutoItens := {}
//exemplo de alteracao de um item ja existente na planilha
aAdd(aAutoItens,{ {'AK2_ORCAME' ,'TSTPCOA100' , NIL},;
{'AK2_VERSAO' ,'0001' , NIL},;
{'AK2_CO' ,'111' , NIL},;
{'AK2_ID' ,'0001', NIL},;
{'AK2_CLASSE' ,'000001' , NIL},;
{'LINPOS' ,'AK2_ID' , '0001'},;
{'P01' ,11000 , NIL},;
{'P02' ,12000 , NIL},;
{'P03' ,13000 , NIL},;
{'P04' ,14000 , NIL},;
{'P05' ,15000 , NIL},;
{'P06' ,16000 , NIL},;
{'P07' ,17000 , NIL},;
{'P08' ,18000 , NIL},;
{'P09' ,19000 , NIL},;
{'P10' ,20000 , NIL},;
{'P11' ,21000 , NIL},;
{'P12' ,22000 , NIL};
} )
//exemplo de inclusao de um novo item na planilha
aAdd(aAutoItens,{ {'AK2_ORCAME' ,'TSTPCOA100' , NIL},;
{'AK2_VERSAO' ,'0001' , NIL},;
{'AK2_CO' ,'111' , NIL},;
{'AK2_ID' ,'*', NIL},; //para inclusão de novo item da planilha deve ser passado no conteúdo "*" e nao deve ser utilizado LINPOS
{'AK2_CLASSE' ,'000001' , NIL},;
{'P01' ,111000 , NIL},;
{'P02' ,112000 , NIL},;
{'P03' ,113000 , NIL},;
{'P04' ,114000 , NIL},;
{'P05' ,115000 , NIL},;
{'P06' ,116000 , NIL},;
{'P07' ,117000 , NIL},;
{'P08' ,118000 , NIL},;
{'P09' ,119000 , NIL},;
{'P10' ,120000 , NIL},;
{'P11' ,121000 , NIL},;
{'P12' ,122000 , NIL};
} )
MSExecAuto( {|x,y,z,a,b,c| PCOA100(x,y,z, a, b, c)},
         } ) 

        MSExecAuto( {|x, y, z, a, b, c| PCOA100(x, y, z, a, b, c)}, 4/*nCallOpcx*/, /*cRevisa*/, /*lRev*/, /*lSim*/, aAutoCab, aAutoItens) //4=alteração para manipular itens
da planilha
If !lMsErroAuto
 da planilha

        If !lMsErroAuto
            msgalert("Alterado os itens da planilha com sucesso! ")

Else

        Else
            msgalert("Erro na alteracao dos itens da planilha!")


            MostraErro()

EndIf
EndIfReturn

        EndIf

    EndIf

Return 
     





Observações:

Não existe rotina automática para inclusão ou alteração da estrutura da planilha (AK3).

Sintaxe da função PCOA100:

PCOA100(3/*nCallOpcx*/,/*cRevisa*/, /*lRev*/, /*lSim*/,aAutoCab, /*xAutoItens*/) //3=inclusão 4=alteração


Aviso
titleAtenção


Não existe rotina automática para inclusão ou alteração da estrutura da planilha (AK3).

Conforme explicado anteriormente, essa estrutura deverá ser cadastrada previamente na rotina Orçamentos (PCOA100) (Atualizações / Planilhas / Orçamentos).