Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Serviços

Módulo:

TOTVS Backoffice (Linha Protheus) - Ativo Fixo (SIGAATF)

Função:

ATFA251 - Aquisição Por Transferência / PE - AF251GrImp 

País:Brasil
Ticket:Interno
Requisito/Story/Issue :DSERCTR1-41668

02. SITUAÇÃO/REQUISITO

Essa documentação visa esclarecer e exemplificar sobre o ponto de entrada AF251GrImp.

03. SOLUÇÃO

O ponto de entrada AF251GrImp tem o objetivo de permitir a manipulação dos tipos de impostos na aba de GRID ( Detalhes dos Impostos ) da rotina de Aquisição por Transferência ( ATFA251 ) que não sejam o imposto de ICMS.


Importante

As alterações realizadas no ponto de entrada são de total responsabilidade do cliente que o implementa.

Codigo e exemplos

Exemplo do ponto de Entrada
#include 'totvs.ch'
#include "rwmake.ch"     

User Function AF251GrImp()

    Local cArrRot := Paramixb[1] //Utilizar para validacoes diversas necessarias com os tipos de impostos ja presentes no bem
    Local aTeste := {}
    //Importante ressaltar que o array enviado para a rotina deve ser 
    //um array com X posições e cada uma delas deve conter 6 sub-posicoes com os tipos de valor definidos conforme exemplo abaixo
    
    ///Exemplo descrevendo as posições do array para conferencia e entendimento
    // ArrayExemplificado[Tamanho X do array com base em quantos impostos a ratear]:
    // ArrayExemplificado[1][1]:  =  "ICMS" - Caractere
    // ArrayExemplificado[1][2]:  =  "2" - Caractere
    // ArrayExemplificado[1][3]:  =  0 - Numerico
    // ArrayExemplificado[1][4]:  = .F. - Logico
    // ArrayExemplificado[1][5]:  =  0 - Numerico
    // ArrayExemplificado[1][6]:  =  0 - Numerico

    aTeste := Array(3,6)
    // aTeste := Array(6)

    aTeste[1][1] := "IPI"
    aTeste[1][2] := "2"
    aTeste[1][3] := 0
    aTeste[1][4] := .F.
    aTeste[1][5] := 100
    aTeste[1][6] := 100

    aTeste[2][1] := "CIAP"
    aTeste[2][2] := "2"
    aTeste[2][3] := 0
    aTeste[2][4] := .F.
    aTeste[2][5] := 100
    aTeste[2][6] := 100

Return aTeste   

Pontos a se atentar

  1. Importante ressaltar que o array enviado para a rotina deve ser um array com X posições e cada uma delas deve conter 6 sub-posições com os tipos de valor definidos conforme exemplo abaixo;
  2. O tipo de imposto ICMS não pode ser alterado por esse PE;
  3. Importante se atentar aos tipos de impostos e cada posição no array descrito, pois os tipos são derivados do sistema ou manipulados conforme a regra implementada.
  4. O ponto de Entrada pode manipular as estruturas de impostos, assim sendo os valores de um existente que não seja o imposto de ICMS e linhas novas.




Chamada do PE no Sistema
If lAF251GrImp
	
	aAF251GrImp := ExecBlock( 'AF251GrImp', .F., .F., aClone(aAF251Imp) )
	If ValType( aAF251GrImp ) == "A"
		For nA := 1 To Len( aAF251GrImp )
			// Verifica se todos os tipos de dados estao corretos e se ja
			// nao existe a mesma linha retornada no array aAF251Imp
			If 	Len( aAF251GrImp[nA] ) == 6 .and.;
				ValType(aAF251GrImp[nA,1]) == 'C' .and.;
				ValType(aAF251GrImp[nA,2]) == 'C' .and.;
				ValType(aAF251GrImp[nA,3]) == 'N' .and.;
				ValType(aAF251GrImp[nA,4]) == 'L' .and.;
				ValType(aAF251GrImp[nA,5]) == 'N' .and.;
				ValType(aAF251GrImp[nA,6]) == 'N' .and.;
				!('ICMS' $ Upper(aAF251GrImp[nA,1]) )
				nPosImp :=  aScan( aAF251Imp, {|Imp| 	Imp[1] == aAF251GrImp[nA,1] .and. Imp[2] == aAF251GrImp[nA,2] .and.;
				Imp[3] == aAF251GrImp[nA,3] .and. Imp[4] == aAF251GrImp[nA,4] } )
				If nPosImp == 0
					Aadd( aAF251Imp, aClone( aAF251GrImp[nA] ) )
				Else
					aAF251Imp[nPosImp][5] := aAF251GrImp[nA][5]
					aAF251Imp[nPosImp][6] := aAF251GrImp[nA][6]
				EndIF
			EndIf
		Next nA
	EndIf
EndIf

Importante !!

Os exemplos utilizados nessa documentação são meramente ilustrativos.

04. DEMAIS INFORMAÇÕES


Parâmetros

ParâmetrosTipoDescrição
PARAIXB[1]ArrayUm array clonado na memoria da estrutura que montará a grid de detalhes dos impostos do bem posicionado e sua manipulação conforme array retornado do PE.

Retorno

NomeTipoDescrição
aAF251GrImpLógicoArray contendo os impostos a serem manipulados e adicionados a aba de Detalhes dos impostos, podendo ser substituídos os valores a ratear se existirem ou incluindo uma linha nova.


05. ASSUNTOS RELACIONADOS

  • Não se aplica.