Histórico da Página
Função: Rotina Automática ATFA036 - Baixa de Ativos Imobilizados
Características do Requisito
Linha de Produto: | Microsiga Protheus. |
Segmento: | Serviços e |
Jurídico. | |||||
Módulo: | Ativo Fixo (SIGAATF) | ||||
Rotina: |
| ||||
Cadastros Iniciais: | SN1 e SN3. | ||||
Chamado | TUFUWY | ||||
País(es): | Todos. | ||||
Banco(s) de Dados: | Todos. | ||||
Tabelas utilizadas: | FN6, FN7. | ||||
Sistema(s) operacional(is): | Todos. | ||||
Versões/Release: | 12.1. |
7 |
Aviso | ||
---|---|---|
| ||
Acesse a nova versão da documentação clicando aqui. |
Descrição
Exemplo de rotina automática baixa de Ativos (ATFA036).
Rotina Automática
Bloco de código | ||||||
---|---|---|---|---|---|---|
|
#INCLUDE "Protheus.ch" |
User Function MyATF036() |
Local aArea := GetArea() |
Local cBase := "0000000005" |
Local cItem := "0001" |
Local cTipo := "01" |
Local cTpSaldo := "1" |
Local cBaixa := "0 |
" Local nQtdAtu := 1 |
Local nQtdBaixa := 1 |
Local cMotivo := "08" |
Local cMetDepr := GetMV('MV_ATFDPBX') |
Local cNumNF := "" |
Local cSerieNF := "" |
Local nValNF := 0 |
Local aCab := {} |
Local aAtivo := {} |
Local aParam := {} |
Private lMsErroAuto := .F. |
Private lMsHelpAuto := .T. |
aCab := { {"FN6_FILIAL" ,XFilial("FN6") ,NIL},; |
{"FN6_CBASE" ,cBase ,NIL},; |
{"FN6_CITEM" ,cItem ,NIL},; |
{"FN6_MOTIVO" ,cMotivo ,NIL},; |
{"FN6_BAIXA" ,100 ,NIL},; |
{"FN6_QTDBX" ,nQtdBaixa ,NIL},; |
{"FN6_DTBAIX" ,dDatabase ,NIL},; |
{"FN6_DEPREC" ,cMetDepr ,NIL}} |
aAtivo := {{"N3_FILIAL" ,XFilial("SN3") ,NIL},; |
{"N3_CBASE" ,cBase ,NIL},; |
{"N3_ITEM" ,cItem ,NIL},; |
{"N3_TIPO" ,cTipo ,NIL},; |
{"N3_BAIXA" ,cBaixa ,NIL},; |
{"N3_TPSALDO" ,cTpSaldo ,NIL}} |
//Array contendo os parametros do F12 aAdd( aParam, {"MV_PAR01", 1} ) //Pergunta 01 - Mostra Lanc. Contab? 1 = Sim ; 2 = Não aAdd( aParam, {"MV_PAR02", 2} ) //Pergunta 02 - Aglutina Lancamento Contabil ? 1 = Sim ; 2 = Não aAdd( aParam, {"MV_PAR03", 1} ) //Pergunta 03 - Contabaliza On-Line? 1 = Sim ; 2 = Não aAdd( aParam, {"MV_PAR04", 2} ) //Pergunta 04 - Visualização ? 2 = Tipos de Ativos // deve se usar obrigatoriamente o número 2 Begin Transaction MsExecAuto({|a,b,c,d,e,f|ATFA036(a,b,c,d,e,f)},aCab,aAtivo,3,,.T./*lBaixaTodos*/,aParam) |
If lMsErroAuto |
MostraErro() |
DisarmTransaction() |
EndIf |
End Transaction |
RestArea(aArea) |
Return |
Bloco de código | ||||||
---|---|---|---|---|---|---|
|
| |
#INCLUDE "Protheus. |
ch" |
User |
Function MyATF036() Local aArea := GetArea() |
Local |
cBase := |
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
"0000000005"
Local cItem := "0001"
Local cTipo := "01"
Local cTpSaldo := "1"
Local cBaixa := "1"
Local cSeq := "001"
Local cSeqReav := ""
Local cFilOri := "D MG 01"
Local cMotivo := "08"
Local cMetDepr := GetMV('MV_ATFDPBX')
Local aCab := {}
Local aAtivo := {}
Local aParam := {}
Private lMsErroAuto := .F.
Private lMsHelpAuto := .T.
aCab := { {"FN6_FILIAL" ,XFilial("FN6") ,NIL},;
{"FN6_CBASE" ,cBase ,NIL},;
{"FN6_CITEM" ,cItem ,NIL},;
{"FN6_MOTIVO" ,cMotivo ,NIL},;
{"FN6_DEPREC" ,cMetDepr ,NIL}}
aAtivo := {{"N3_FILIAL" ,XFilial("SN3") ,NIL},;
{"N3_CBASE" ,cBase ,NIL},;
{"N3_ITEM" ,cItem ,NIL},;
{"N3_TIPO" ,cTipo ,NIL},;
{"N3_BAIXA" ,cBaixa ,NIL},;
{"N3_TPSALDO" ,cTpSaldo ,NIL},;
{"N3_SEQ" ,cSeq ,NIL},;
{"N3_SEQREAV" ,cSeqReav ,NIL},;
{"N3_FILORIG" ,cFilOri ,NIL}}
//Array contendo os parametros do F12
aAdd( aParam, {"MV_PAR01", 1} ) //Pergunta 01 - Mostra Lanc. Contab? 1 = Sim ; 2 = Não
aAdd( aParam, {"MV_PAR02", 2} ) //Pergunta 02 - Aglutina Lancamento Contabil ? 1 = Sim ; 2 = Não
aAdd( aParam, {"MV_PAR03", 1} ) //Pergunta 03 - Contabaliza On-Line? 1 = Sim ; 2 = Não
aAdd( aParam, {"MV_PAR04", 1} ) //Pergunta 04 - Visualização ? 1 = Baixas de Ativo // deve se usar obrigatoriamente o número 1
Begin Transaction
MsExecAuto({|a,b,c,d,e,f|ATFA036(a,b,c,d,e,f)},aCab,aAtivo,5,,.T./*lBaixaTodos*/,aParam)
If lMsErroAuto
MostraErro()
DisarmTransaction()
EndIf
End Transaction
RestArea(aArea)
Return |
Importante
Para utilização do 5º parâmetro lBaixaTodos como .F. é necessário informar no cabeçalho (aCab) o campo FN6_PERCBX (% baixado) devido validações
RestArea(aArea)
Return
Obs.: Nos casos em que ocorram mais de uma linha na tabela SN3, é obrigatório a passagem do campo N3_SEQ ( Conforme exemplo acima ).