01. DATOS GENERALES

Línea de producto:Microsiga Protheus®
Segmento:Servicios
Módulo:Fiscal


02. DESCRIPCIÓN

Este punto de entrada permite alternar la unidad de medida y respectiva cantidad del ítem del documento.

Por estándar se asume siempre la primera unidad de medida y la primera cantidad (registradas en la tabla SB1). Sin embargo, algunos registros del SPED FISCAL permiten la presentación utilizando una unidad de medida diferente de aquella definida como unidad de stock. Para utilizar la segunda unidad de medida y la segunda cantidad, es necesario realizar el tratamiento utilizando este punto de entrada.

Los siguientes registros/campos tienen soporte para la utilización del punto de entrada SPDFIS02:

  • 0190
  • 0220
  • C170
  • C425
  • G140
  • H010
  • K200

03. ESPECIFICACIÓN

Parámetros del punto de entrada:


Nombre

Tipo

Descripción

PARAMIXBArray of Record


Array con datos del procesamiento con 3 elementos

[1] = Alias de la tabla.

[2] = Tipo de movimiento - Que puede ser E de Entrada o S de Salida.

[3] = Registro en el que ocurre la modificación.


Observación

Es posible efectuar un tratamiento específico al marcar el producto, o simplemente devolver la segunda unidad de medida y la segunda cantidad de este documento (D1_SEGUM o D2_SEGUM). 

Importante

En la activación del SPDFIS02 para algunos registros K200, H010(SPED Fiscal) no ocurrirá el tratamiento para el Tipo de movimiento, pues estos registros no se generan con base en el movimiento de las facturas del período y sí con base en la producción(K200) y en el inventario(H010) del período respectivamente. 

Devolución:

Nombre

Tipo

Descripción


Array of Record

Devuelve Array con conversión de la unidad de medida.

Importante:


  • aRet[1] => Unidad de medida del ítem del documento (string)
  • aRet[2] => Cantidad del ítem del documento (numérico)
  • aRet[3] => Factor de conversión (numérico)
  • aRet[4] => Tipo de conversión M=Multiplicación/D=División (string)
  • aRet[5] => Código de barras (numérico)


La tercera posición del array es el Factor de conversión, esta posición del array es opcional.
La cuarta posición del array es el Tipo de conversión , esta posición del array es opcional.
La quinta posición del array es el Código de barras, esta posición del array es opcional
.


Importante

La devolución en formato array, debe realizarse de acuerdo con el tipo de dato en su posición.
La personalización de los P.E., deben adecuarse a la regla de negocio de cada cliente, siendo responsables por su utilización.

Importante

Si el cliente tuviera el parámetro MV_CSDXML (vínculo con el XML del proveedor) activado (.T.), algunas informaciones del punto de entrada no se consideran, priorizando los datos del XML de entrada.

Entradas y Salidas esperadas por registro:


  • 0190
    • No tenemos parámetros y devolución para este registro, este será un reflejo de la unidad de medida informada para los otros.


  • 0220
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 3 elementos

      [1] = SB1;

      [2] = " ";

      [3] = "0220";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción


      Array of Record

      En este registro solamente se utiliza la 5 posición del array, si existiera y estuviera completado se utilizará.

      Ejemplo:

      • aRet[1] => ""
      • aRet[2] => ""
      • aRet[3] => ""
      • aRet[4] => ""
      • aRet[5] => Código de barras (string)



  • C170
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 3 elementos

      [1] = cAliasSFT; (Alias de la query principal marcada en la SFT y otras tablas involucradas en la generación del archivo)

      [2] = "E" o "S";

      [3] = "C170";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción

      Opción 1Array of Record

      En este registro se espera un array con 4 posiciones.

      Ejemplo:

      • aRet[1] => Unidad de medida del ítem del documento (string)
      • aRet[2] => Cantidad del ítem del documento (numérico)
      • aRet[3] => Factor de conversión (numérico)
      • aRet[4] => Tipo de conversión M=Multiplicación/D=División (string)
      Opción 2String
      • cRet => Unidad de medida del ítem del (string)

      Observación

      Este registro verifica si es un array para utilizar las 4 posiciones o si es una string para utilizar solamente la unidad de medida.

  • C425
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 2 elementos

      [1] = cQryAlias; (Query marcado en las tablas, SFT, SD2, SB1, SLG, SFI)

      [2] = "S";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción

      Opción 1Array of Record

      En este registro se espera un array con 2 posiciones.

      Ejemplo:

      • aRet[1] => Unidad de medida del ítem del documento (string)
      • aRet[2] => Cantidad del ítem del documento (numérico)
      Opción 2String
      • cRet => Unidad de medida del ítem del documento (string)

      Observación

      Este registro verifica si es un array para utilizar las 2 posiciones o si es una string para utilizar solamente la unidad de medida.

  • G140
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 3 elementos

      [1] = SFT;

      [2] = "E" o "S";

      [3] = "G140";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción

      Opción 1Array of Record

      En este registro se espera un array con 2 posiciones.

      Ejemplo:

      • aRet[1] => Unidad de medida del ítem del documento (string)
      • aRet[2] => Cantidad del ítem del documento (numérico)
      Opción 2String
      • cRet => Unidad de medida del ítem del documento (string)

      Observación

      Este registro verifica si es un array para utilizar las 2 posiciones o si es una string para utilizar solamente la unidad de medida.

  • H010
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 3 elementos

      [1] = cAliBLH; (Tabla temporal, dependiendo del motivo del inventario traerá datos basados en las tablas CIL, F0M, SB1, SBZ)

      [2] = Nil;

      [3] = "H010";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción

      Opción 1Array of Record

      En este registro se espera un array con 2 posiciones.

      Ejemplo:

      • aRet[1] => Unidad de medida del ítem del documento (string)
      • aRet[2] => Cantidad del ítem del documento (numérico)
      • aRet[3] => Factor de conversión (numérico)
      • aRet[4] => Tipo de conversión M=Multiplicación/D=División (string)
      Opción 2String
      • cRet => Unidad de medida del ítem del documento (string)

      Observación

      Este registro verifica si es un array para utilizar las 4 posiciones o si es una string para utilizar solamente la unidad de medida.

  • K200
    • En la activación de este registro se transferirán los siguientes parámetros:

      Nombre

      Tipo

      Descripción

      PARAMIXBArray of Record

      Array con datos del procesamiento con 3 elementos

      [1] = cAliK200; (Tabla temporal basada en datos de SB9, D3E)

      [2] = Nil;

      [3] = "K200";

    • Siguiente devolución esperada:

      Nombre

      Tipo

      Descripción

      Opción 1Array of Record

      En este registro se espera un array con 2 posiciones.

      Exemplificação:

      • aRet[1] => Unidad de medida del ítem del documento (string)
      • aRet[2] => Cantidad del ítem del documento (numérico)
      • aRet[3] => Factor de conversión (numérico)
      • aRet[4] => Tipo de Conversão M=Multiplicação/D=Divisão (string)
      Opción 2String
      • cRet => Unidad de medida del ítem del documento (string)

      Observación

      Este registro verifica si es un array para utilizar las 4 posiciones o si es una string para utilizar solamente la unidad de medida.


Importante

Al utilizar este punto de entrada es importante observar el tipo de dato devuelto. Como este PE permite la utilización de tipos de devoluciones diferentes, array o string, se aconseja que utilicen este punto de entrada con cautela, pues este se activa en diferentes registros.

 

También es fundamental que se informe una Unidad de medida válida existente en la tabla SAH, pues si esta fuera inexistente o no informada, puede impactar en la generación de los registros, especialmente para los casos en los que se utiliza la opción 2 de devolución en formato string.

04. EJEMPLO DE UTILIZACIÓN


SPED1300
#include "rwmake.ch"
#include "Topconn.ch"
#include "protheus.ch"
 
User Function SPDFIS02()

Local aAliasIT  := ParamIXB[1]													// Recibe el Alias principal
Local cTipoMov  := ParamIXB[2]													// Recibe el tipo de movimiento - E = ENTRADA / S = SALIDA, para registros generados a partir de facturas. Para registros no originados de facturas esta posición tendrá contenido Nil.
Local cRegSped  := Iif  (Len(ParamIXB)  >  2,ParamIXB[3],"")					// Recibe el  nombre del registro, al transferirse(1105, G140, H010, K200).
Local aRet  	:= Array(4)														// Array para almacenar datos de la devolución de la función
Local cPrefix	:= Iif (ValType(cTipoMov)=='C',Iif (cTipoMov$"E","D1","D2"),"")	// Prefijo de la tabla - D1_ / D2_
Local aAreaAnt  := GetArea() 

If !Empty(cPrefix)

    aRet[1]  := "MM"  
    aRet[2]  :=  0
    aRet[3]  :=  4     //Factor
    aRet[4]  := "M"    //Tipo de conversión

Else
   If cRegSped  ==  "K200"

      If ("SB1")->(dbSeek(xFilial("SB1")+(aAliasIT)->COD_ITEM))

         aRet[1]  :=  ("SB1")->B1_SEGUM  
         aRet[2]  :=  (aAliasIT)->&("QTD")
         aRet[3]  :=  ("SB1")->B1_CONV           //Factor
         aRet[4]  :=  ("SB1")->B1_TIPCONV        //Tipo de conversión

      Else

         aRet[1]  :=  "MM"  
         aRet[2]  :=  0
         aRet[3]  :=  4     //Factor
         aRet[4]  :=  "M"   //Tipo de conversión

      Endif

   Endif

Endif
	
If cRegSped == "0220"
   Aadd(aRet,"8888888888888")  // Posición 05 código de barras
EndIf

RestArea(aAreaAnt)

Return aRet 


05. OTRAS INFORMACIONES

Importante

Se pusieron a disposición ejemplos de utilización de este punto de entrada en la página de soporte al cliente en RDMAKES de libros fiscales.