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:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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. |
Nombre | Tipo | Descripción |
---|---|---|
Array of Record | Devuelve Array con conversión de la unidad de medida. Importante:
Importante La devolución en formato array, debe realizarse de acuerdo con el tipo de dato en su posició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.
No tenemos parámetros y devolución para este registro, este será un reflejo de la unidad de medida informada para los otros.
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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:
|
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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 1 | Array of Record | En este registro se espera un array con 4 posiciones. Ejemplo:
|
Opción 2 | 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.
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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 1 | Array of Record | En este registro se espera un array con 2 posiciones. Ejemplo:
|
Opción 2 | 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.
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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 1 | Array of Record | En este registro se espera un array con 2 posiciones. Ejemplo:
|
Opción 2 | 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.
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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 1 | Array of Record | En este registro se espera un array con 2 posiciones. Ejemplo:
|
Opción 2 | 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.
En la activación de este registro se transferirán los siguientes parámetros:
Nombre | Tipo | Descripción |
---|---|---|
PARAMIXB | Array 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 1 | Array of Record | En este registro se espera un array con 2 posiciones. Exemplificação:
|
Opción 2 | 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.
#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
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.