Árvore de páginas



CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
    1. Inclusão
    2. Múltiplas Inclusões
    3. Alteração
    4. Exclusão
  3. Tabelas utilizada

01. VISÃO GERAL


Exemplos de execução via rotina automática na rotina de cadastro de ativos(ATFA012), mostrando exemplos de utilização e tabelas relacionadas.


02. EXEMPLO DE UTILIZAÇÃO

Abaixo mostraremos exemplos de utilização.



Observação


Nos casos em que ocorram mais de uma linha na tabela SN3, é obrigatório a passagem do campo N3_SEQ.



Na inclusão, o programa irá considerar as taxas de depreciação informadas no cadastro de grupo de bens, desde que o código do Grupo seja informado na variável cGrupo e os campos de taxas correspondentes não sejam informados no array de itens do ExecAuto da rotina Cadastro de Ativos (ATFA012).


Inclusão:

Inclusão
#INCLUDE "Protheus.CH"
#include "rwmake.ch"
#include "TOTVS.ch"
#include "TBICONN.ch"

User Function MyAtfa012
    Local aArea := GetArea()
	Local cBase := "ATFX01"//"0000000000"
	Local cItem := "0002"
	Local nQtd := 1
	Local cChapa := "AJEDS10"//"00000"
	Local cPatrim := "N"
	Local cTipo := "01"//"01"

	Local cGrupo := ""
	Local dAquisic //:= dDataBase //:= CTOD("01/06/20")//dDataBase
	Local dIndDepr //:= RetDinDepr(dDataBase)
	Local cDescric := "Teste 01"

	Local cHistor := "TESTE "
	Local cContab := "11101"
	Local cCusto := "CDL"
	Local cSubCon := "000000001"
	Local cClvlCon := "000000000"

	Local nValor := 1000
	Local nTaxa := 10
	Local nTamBase //:= TamSX3("N3_CBASE")[1]
	Local nTamChapa //:= TamSX3("N3_CBASE")[1]

	Local aParam := {}
	Local aCab := {}
	Local aItens := {}

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

	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "ATF" TABLES "SN1","SN3"

		dAquisic := dDataBase //:= CTOD("01/06/20")//dDataBase
		dIndDepr := RetDinDepr(dDataBase)

		DBSelectArea(aArea)
		nTamBase := TamSX3("N3_CBASE")[1]
		nTamChapa := TamSX3("N3_CBASE")[1]

		aCab := {}
		AAdd(aCab,{"N1_CBASE" , cBase ,NIL})
		AAdd(aCab,{"N1_ITEM" , cItem ,NIL})
		AAdd(aCab,{"N1_AQUISIC", dDataBase ,NIL})
		AAdd(aCab,{"N1_DESCRIC", cDescric ,NIL})
		AAdd(aCab,{"N1_QUANTD" , nQtd ,NIL})
		AAdd(aCab,{"N1_CHAPA" , cChapa ,NIL})
		AAdd(aCab,{"N1_PATRIM" , cPatrim ,NIL})
		AAdd(aCab,{"N1_GRUPO" , cGrupo ,NIL})
		//Coloque os campos desejados aqui 

		aItens := {}
		//-- Preenche itens


		AAdd(aItens,{;
		{"N3_CBASE" , cBase ,NIL},;
		{"N3_ITEM" , cItem ,NIL},;
		{"N3_TIPO" , cTipo ,NIL},;
		{"N3_BAIXA" , "0" ,NIL},;
		{"N3_HISTOR" , cHistor ,NIL},;
		{"N3_CCONTAB" , cContab ,NIL},;
		{"N3_CUSTBEM" , cCusto ,NIL},;
		{"N3_CDEPREC" , cContab ,NIL},;
		{"N3_CDESP" , cContab ,NIL},;
		{"N3_CCORREC" , cContab ,NIL},;
		{"N3_CCUSTO" , cCusto ,NIL},;
		{"N3_DINDEPR" , dIndDepr ,NIL},;
		{"N3_VORIG1" , nValor ,NIL},;
		{"N3_TXDEPR1" , nTaxa ,NIL},;
		{"N3_VORIG2" , nValor ,NIL},;
		{"N3_TXDEPR2" , nTaxa ,NIL},;
		{"N3_VORIG3" , nValor ,NIL},;
		{"N3_TXDEPR3" , nTaxa ,NIL},;
		{"N3_VORIG4" , nValor ,NIL},;
		{"N3_TXDEPR4" , nTaxa ,NIL},;
		{"N3_VORIG5" , nValor ,NIL},;
		{"N3_SUBCCON" , cSubCon ,NIL},;
		{"N3_CLVLCON" , cClvlCon ,NIL},;
		{"N3_TXDEPR5" , nTaxa ,NIL};
		})
		//Coloque os campos desejados aqui

		Begin Transaction

			MSExecAuto({|x,y,z| Atfa012(x,y,z)},aCab,aItens,3,aParam)
			If lMsErroAuto 

			MostraErro()
				DisarmTransaction()
			Endif
		End Transaction

		RestArea(aArea)
	RESET ENVIRONMENT

Return




Múltiplas Inclusões:

Múltiplas inclusões
#include "rwmake.ch"
#include "TOTVS.ch"
#include "TBICONN.ch"

User Function MyA012

  Local aArea
  Local cBase, cItem ,cGrupo, cChapa , cDescric:= " "
  Local cTipo := "13"
  Local cPatrim := "N"
  Local dIndDepr 
  Local cHistor := "TESTE EXEC"
  Local cContab := "PLANODECONTA00000000"

  Local cCusto := "CENTR0001"
  Local cSubCon :="000000001"
  Local cClvlCon:="000000000"

  Local nQtd := 1
  Local nValor := 10
  Local nTaxa := 1
  Local nTaxa2:= 1  

  Local nX
  Local aParam := {}
  Local aCab := {}
  Local aItens := {}
  Private lMsErroAuto := .F.
  Private lMsHelpAuto := .T.

  PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "ATF" TABLES "SN1","SN3"
        
    /*lançamento para inclusao de mais Ativos 
    ----------------------------------------------*/
    For nX :=1 To 2//Quantos registros serão incluídos

      aArea := GetArea()

      cBase   :=PadR("AG"+cValToChar(nX),TamSX3("A3_COD")[1])
      cItem   :=PadR("AG"+cValToChar(nX),TamSX3("N1_ITEM")[1],"")
      cChapa  :=PadR("AG"+cValToChar(nX),TamSX3("N1_CHAPA")[1])
      cDescric:=PadR("EXECAUT : "+ cValToChar(nX), TamSX3("N1_CHAPA")[1])
      dIndDepr := RetDinDepr(dDataBase)

      aCab := {}
      AAdd(aCab,{"N1_CBASE"   , cBase     ,NIL})
      AAdd(aCab,{"N1_ITEM"    , cItem     ,NIL})
      AAdd(aCab,{"N1_AQUISIC" , dDataBase ,NIL})
      AAdd(aCab,{"N1_DESCRIC" , cDescric  ,NIL})
      AAdd(aCab,{"N1_QUANTD"  , nQtd      ,NIL})
      AAdd(aCab,{"N1_CHAPA"   , cChapa    ,NIL})
      AAdd(aCab,{"N1_PATRIM"  , cPatrim   ,NIL})
      AAdd(aCab,{"N1_GRUPO"   , cGrupo    ,NIL})
      AAdd(aCab,{"N1_MARGEM"   ,"000000"  ,NIL})
      //adicione aqui os campos desejados
      
      aItens := {}
      //-- Preenche item 1
      AAdd(aItens,{;
                  {"N3_CBASE"   , cBase       ,NIL},;
                  {"N3_ITEM"    , cItem       ,NIL},;
                  {"N3_TIPO"    , cTipo       ,NIL},;
                  {"N3_BAIXA"   , "0"         ,NIL},;
                  {"N3_HISTOR"  , cHistor     ,NIL},;
                  {"N3_CCONTAB" , cContab     ,NIL},;
                  {"N3_CUSTBEM" , cCusto      ,NIL},;
                  {"N3_CDEPREC" , cContab     ,NIL},;
                  {"N3_CDESP"   , cContab     ,NIL},;
                  {"N3_CCORREC" , cContab     ,NIL},;
                  {"N3_CCUSTO"  , cCusto      ,NIL},;
                  {"N3_DINDEPR" , dIndDepr    ,NIL},;
                  {"N3_VORIG1"  , nValor      ,NIL},;
                  {"N3_TXDEPR1" , nTaxa       ,NIL},;
                  {"N3_VORIG2"  , nValor      ,NIL},;
                  {"N3_TXDEPR2" , nTaxa       ,NIL},;
                  {"N3_VORIG3"  , nValor      ,NIL},;
                  {"N3_TXDEPR3" , nTaxa       ,NIL},;
                  {"N3_VORIG4"  , nValor      ,NIL},;
                  {"N3_TXDEPR4" , nTaxa       ,NIL},;
                  {"N3_VORIG5"  , nValor      ,NIL},;
                  {"N3_TXDEPR5" , nTaxa       ,NIL},;
                  {"N3_VRDACM1" , nTaxa2      ,NIL},;
                  {"N3_SUBCCON" , cSubCon     ,NIL},;
                  {"N3_SEQ"     , SN3->N3_SEQ ,NIL},;
                  {"N3_CLVLCON" , cClvlCon    ,NIL};
                  })
                  //adicione acima os campos desejados

      //Controle de transacao
      Begin Transaction

        conOut('Inicio da rotina Automatica '+ Time())
        MSExecAuto({|x,y,z| Atfa012(x,y,z)},aCab,aItens,3,aParam)
        conOut('FIM' +Time())

        If lMsErroAuto 
             MostraErro()
             DisarmTransaction()
        else
          ConfirmSx8()
          conOut('INCLUIDO ATIVO N3_CBASE: '+ cBase + ", N3_ITEM : "+cItem+ ", N3_CUSTBEM : "+cCusto+ ", N3_SUBCCON : "+cSubCon+ ", N3_CLVLCON : "+cClvlCon)
        ENDIF    

        RestArea(aArea)
      End Transaction

      //Modificando campos para segunda execução
      cCusto  :="CENTR0002"
      cSubCon :="000000002"
      cClvlCon:="000000002"
      
    Next nX

  RESET ENVIRONMENT

Return 




Alteração:

Alteração
#INCLUDE "Protheus.CH"

User Function AltAtfa012()

	Local aArea := GetArea()
	Local nQtd := 1
	Local dAquisic := dDataBase
	Local dIndDepr := RetDinDepr(dDataBase)
	Local nQtd := 2
	Local nValor := 1000
	Local nTaxa := 10
	Local nTamBase := TamSX3("N3_CBASE")[1]
	Local nTamChapa := TamSX3("N3_CBASE")[1]
	Local cGrupo := "0001"
	Local aParam := {}

	Local aCab := {}
	Local aItens := {}

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

	 
	SN1->(DbSetOrder(1)) //N1_FILIAL+N1_CBASE+N1_ITEM
	If SN1->(DbSeek(xFilial("SN1")+"0000000000"+"0001"))

		aCab := {}
		AAdd(aCab,{"N1_CBASE" , SN1->N1_CBASE ,NIL})
		AAdd(aCab,{"N1_ITEM" , SN1->N1_ITEM ,NIL})
		AAdd(aCab,{"N1_AQUISIC", SN1->N1_AQUISIC ,NIL})
		AAdd(aCab,{"N1_DESCRIC", "TESTE MYAATF012 2" ,NIL})
		AAdd(aCab,{"N1_QUANTD" , SN1->N1_QUANTD ,NIL})
		AAdd(aCab,{"N1_CHAPA" , SN1->N1_CHAPA ,NIL})
		AAdd(aCab,{"N1_PATRIM" , SN1->N1_PATRIM ,NIL})
		AAdd(aCab,{"N1_GRUPO" , SN1->N1_GRUPO ,NIL})

		aItens := {}
		//-- Preenche itens
		SN3->(DbSetOrder(1))//N3_FILIAL+N3_CBASE+N3_ITEM+N3_TIPO+N3_BAIXA+N3_SEQ
		If SN3->(DbSeek(xFilial("SN3")+"0000000000"+"0001"+"01"+"0"+"001"))

			AAdd(aItens,{;
			{"N3_CBASE" , SN3->N3_CBASE ,NIL},;
			{"N3_ITEM" , SN3->N3_ITEM ,NIL},;
			{"N3_TIPO" , SN3->N3_TIPO ,NIL},;
			{"N3_BAIXA" , SN3->N3_BAIXA ,NIL},;
			{"N3_HISTOR" , "TESTE MYAATF012 2" ,NIL},;
			{"N3_CCONTAB" , SN3->N3_CCONTAB ,NIL},;
			{"N3_CUSTBEM" , SN3->N3_CUSTBEM ,NIL},;
			{"N3_CDEPREC" , SN3->N3_CDEPREC ,NIL},;
			{"N3_CDESP" , SN3->N3_CDESP ,NIL},;
			{"N3_CCORREC" , SN3->N3_CCORREC ,NIL},;
			{"N3_CCUSTO" , SN3->N3_CCUSTO ,NIL},;
			{"N3_DINDEPR" , SN3->N3_DINDEPR ,NIL},;
			{"N3_VORIG1" , SN3->N3_VORIG1 ,NIL},;
			{"N3_TXDEPR1" , SN3->N3_TXDEPR1 ,NIL},;
			{"N3_VORIG2" , SN3->N3_VORIG2 ,NIL},;
			{"N3_TXDEPR2" , SN3->N3_TXDEPR2 ,NIL},;
			{"N3_VORIG3" , SN3->N3_VORIG3 ,NIL},;
			{"N3_TXDEPR3" , SN3->N3_TXDEPR3 ,NIL},;
			{"N3_VORIG4" , SN3->N3_VORIG4 ,NIL},;
			{"N3_TXDEPR4" , SN3->N3_TXDEPR4 ,NIL},;
			{"N3_VORIG5" , SN3->N3_VORIG5 ,NIL},;
			{"N3_TXDEPR5" , SN3->N3_TXDEPR5 ,NIL}})

		EndIf

		Begin Transaction

			MSExecAuto({|x,y,z| Atfa012(x,y,z)},aCab,aItens,4,aParam)

			If lMsErroAuto
				MostraErro()
				DisarmTransaction()
			Endif

		End Transaction
	EndIf

	RestArea(aArea)
Return




Exclusão:

Exclusão
#INCLUDE "Protheus.CH"

User Function Exc012

	Local aArea := GetArea()
	Local nQtd := 1
	Local dAquisic := dDataBase
	Local dIndDepr := RetDinDepr(dDataBase)
	Local nQtd := 2
	Local nValor := 1000
	Local nTaxa := 10
	Local nTamBase := TamSX3("N3_CBASE")[1]
	Local nTamChapa := TamSX3("N3_CBASE")[1]
	Local cGrupo := "0001"
	Local aParam := {}

	Local aCab := {}
	Local aItens := {}

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

	SN1->(DbSetOrder(1)) //N1_FILIAL+N1_CBASE+N1_ITEM
	If SN1->(DbSeek(xFilial("SN1")+"0000000000"+"0001")) 

        aCab := {}
        AAdd(aCab,{"N1_CBASE" , SN1->N1_CBASE ,NIL})
        AAdd(aCab,{"N1_ITEM" , SN1->N1_ITEM ,NIL})
        AAdd(aCab,{"N1_AQUISIC", SN1->N1_AQUISIC ,NIL})
        AAdd(aCab,{"N1_DESCRIC", "TESTE MYAATF012" ,NIL})
        AAdd(aCab,{"N1_QUANTD" , SN1->N1_QUANTD ,NIL})
        AAdd(aCab,{"N1_CHAPA" , SN1->N1_CHAPA ,NIL})
        AAdd(aCab,{"N1_PATRIM" , SN1->N1_PATRIM ,NIL})
        AAdd(aCab,{"N1_GRUPO" , SN1->N1_GRUPO ,NIL})

	EndIf

	Begin Transaction

        MSExecAuto({|x,y,z| Atfa012(x,y,z)},aCab,Nil,5,aParam)

        If lMsErroAuto

            MostraErro()
            DisarmTransaction()

        Endif

	End Transaction

	RestArea(aArea)

Return 



05. TABELAS UTILIZADAS

  • SN3 - Saldos e Valores
  • SN1 - Ativo Imobilizado
  • SN4 - Movimentações do Ativo Fixo
  • SN5 - Arquivos de Saldos
  • SN8 - Inventário
  • CT1 - Plano de Contas
  • CTT - Centro de Custo
  • CTD - Item Contábil
  • CTH - Classes de Valores