Árvore de páginas

Versões comparadas

Chave

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

...

Abaixo mostraremos exemplos de utilização.


Informações
titleObservação


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


Cenário de inclusão normal de apenas 1 registro:

Bloco de código
languagepy
themeMidnight
titleInclusão
linenumberstrue
collapsetrue
#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


Inclusões múltiplas:

Nos casos em que ocorram mais de uma linha na tabela SN3, é obrigatório a passagem do campo N3_SEQ ( Conforme exemplo acima ). 
Bloco de código
languagepy
themeMidnight
titleInclusão MultiplaMúltiplas inclusões
linenumberstrue
collapsetrue
#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_CLVLCONSEQ" , cClvlCon   , 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
Informações
titleObservação
 





Exemplo de alteração normal.

Bloco de código
languagepy
themeMidnight
titleAlteração
linenumberstrue
collapsetrue
#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_SEQ" , SN3->N3_SEQ ,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

...