01. DATOS GENERALES

Producto:

TOTVS Backoffice

Línea de producto:

Línea Protheus

Segmento:

Serviços

Módulo:

TOTVS Backoffice (Línea Protheus) - Activo fijo (SIGAATF)

Función:

ATFA251 - Adquisición por transferencia / PE - AF251GrImp 

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

02. SITUACIÓN/REQUISITO

Este documento tiene por objetivo explicar sobre el punto de entrada AF251GrImp.


03. SOLUCIÓN

El punto de entrada AF251GrImp tiene como objetivo permitir el manejo de los tipos de impuestos en la solapa GRID ( Detalles de los impuestos ) de la rutina Adquisición por transferencia ( ATFA251 ) que no sean el impuesto de ICMS.


Importante

Las modificaciones realizadas en el punto de entrada son de total responsabilidad del cliente que las implementa.

Código y ejemplos

Ejemplo del punto de entrada
#include 'totvs.ch'
#include "rwmake.ch"     

User Function AF251GrImp()

    Local cArrRot := Paramixb[1] //Utilizar para validaciones diversas necesarias con los tipos de impuestos presentes en el bien
    Local aTeste := {}
    //Es importante resaltar que el array enviado a la rutina debe ser 
    //un array con X posiciones y cada una de esta debe tener 6 subposiciones con los tipos de valor definidos de acuerdo con el siguiente ejemplo
    
    ///Ejemplo describiendo las posiciones del array para verificación y entendimiento
    // ArrayExemplificado[Tamaño X del array con base en cuántos impuestos se prorratearán]:
    // ArrayExemplificado[1][1]:  =  "ICMS" - Carácter
    // ArrayExemplificado[1][2]:  =  "2" - Carácter
    // ArrayExemplificado[1][3]:  =  0 - Numérico
    // ArrayExemplificado[1][4]:  = .F. - Lógico
    // ArrayExemplificado[1][5]:  =  0 - Numérico
    // ArrayExemplificado[1][6]:  =  0 - Numérico

    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   

Puntos para tomar atención

  1. Es importante resaltar que el array enviado a la rutina debe ser un array con X posiciones y cada una de esta debe tener 6 subposiciones con los tipos de valor definidos de acuerdo con el siguiente ejemplo.
  2. El tipo de impuesto ICMS no puede modificarse por este PE.
  3. Es importante estar atento a los tipos de impuestos y a cada posición en el array descrito, porque los tipos se derivan del sistema o se manejan de acuerdo con la regla implementada.
  4. El punto de entrada puede manejar las estructuras de impuestos, inclusive valores ya existentes que no sean el impuesto de ICMS y líneas nuevas.




Llamada del PE en el Sistema
If lAF251GrImp
	
	aAF251GrImp := ExecBlock( 'AF251GrImp', .F., .F., aClone(aAF251Imp) )
	If ValType( aAF251GrImp ) == "A"
		For nA := 1 To Len( aAF251GrImp )
			// Verifica si todos los tipos de datos están correctos y si ya
			// no existe la misma línea devuelta en el 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!

Los ejemplos utilizados en este documento son meramente ilustrativos.

04. OTRAS INFORMACIONES


Parámetros

Parámetros

Tipo

Descripción

PARAIXB[1]

Array

Un array clonado en la memoria de la estructura que elaborará la grid de detalles de los impuestos del bien seleccionado y su manejo de acuerdo con el array devuelto del PE.

Devolución

Nombre

Tipo

Descripción

aAF251GrImp

Lógico

Array con los impuestos que se manejarán y agregarán a la solapa Detalles de los impuestos, pudiendo sustituir los valores por prorratear si existieran o incluir una nueva línea nueva.


05. ASUNTOS RELACIONADOS

  • No se aplica.