Á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, 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'"AK2_VERSAO", "0001" 			 , nil},;
			{"AK2_CO" 	 , "1010111" 		 , nil}; // Mesma conta analítica do xAutoItens
			}

xAutoItens := {}
aAdd(xAutoItens,{;
				{'AK2_ORCAME' ,'TESTEPLAN000001' , NIL},; 
				{'AK2_VERSAO' ,'0001' 	   		 , NIL},;
				{'AK2_CO' 	  ,'1111010111' 		 , NIL},;
				{'AK2_ID' 	  ,'*'				 , NIL},; //AKD_ID com '*' para criar um novo registro na AK2
				{'AK2_CLASSE' ,'000001' 		 , NIL},;
				{'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};
				} ))
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 ExecAuto
collapsetrue
#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   , 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    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
   Else
            msgalert("Erro na alteracao dos itens da planilha!")
            MostraErro()
        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).