Histórico da Página
01. DATOS GENERALES
Producto |
| ||||||
---|---|---|---|---|---|---|---|
Línea de producto: |
| ||||||
Segmento: |
| ||||||
Módulo: | SIGAFAT - Facturación | ||||||
Función: |
| ||||||
Ticket: | 9236182 | 9309315 | ||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-9641 | DMINA-9771 |
02. SITUACIÓN/REQUISITO
Inicialmente en los archivos de configuración para Generación de XML para Documentos de Salida (FATSMEX.INI) y para la Generación de XML para Documentos de Entrada (FATEMEX.INI ), se utilizaban las varias funciones para la Generación de la estructura y cadena origina original para nodo Conceptos, Impuestos e Impuestos Locales (fGetImps, fGetInfAdu, fCtaPredio, fGetPartes, fTotalImps) localizadas en la rutina de Funciones Genéricas de Localizaciones (LOCXFUNA). El uso de estas funciones permitía que la sección de Conceptos del XML pudiera ser modificada por el usuario.
En las ultimas últimas actualizaciones de la rutina, las funciones encargadas de la Generación de la estructura y cadena origina original para nodo Conceptos, Impuestos e Impuestos Locales (fGetImps, fGetInfAdu, fCtaPredio, fGetPartes, fTotalImps ) fueron reemplazadas por la función fXMLFun.
03. SOLUCIÓN
Se realiza la activación del crea el Punto de Entrada LOCXCONCEP, mediante el cual el usuario podrá definir la información que retornará para el algunos atributos del nodo Conceptos.
Conforme a lo reportado en el issue DMINA-9771, se realiza una validación que considera a las Notas de Crédito(NCC) , que permite enviar correctamente los parámetros que serán usados en el punto de entrada (Ver 04. INFORMACIÓN ADICIONAL), ya que se tenía problemas con el tamaño del campo Ítem(D1_ITEM).
Totvs custom tabs box | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
|
04. INFORMACIÓN ADICIONAL
El Punto de Entrada
...
LOCXCONCEP recibe 2 parámetros,
...
que es el código del producto y el número de ítem, debe retornar un arreglo
...
que contiene todos los campos que se pueden modificar a nivel
...
ítem.
El array
...
de retorno tiene la siguiente estructura:
aArray[1] := Clave de Producto o Servicio
aArray[2] := No. Identificación
aArray[3] := Cantidad
aArray[4] := Clave de Unidad *Si es nulo omitir el atributo Unidad
aArray[5] := Unidad
aArray[6] := Descripción
Ejemplo 1
Se utiliza la tabla de Clientes (SA1) en donde se agregá un nuevo campo llamado A1_IDENT.
El arreglo PARAMIXB recibe los parámetros de la función fXMLFun(), en este caso el código de producto, el cual se asigna a la variable cCodProd.
Se crea el arreglo aDetFac en el que se asignan los valores del ítem a reemplazar.
#include 'protheus.ch'
User Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local aDetFac := {"","",0,"","",""} // Arreglo que contiene la información del producto.
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/
aDetFac[2] := AllTrim(SA1-> A1_IDENT)
aDetFac[6] := AllTrim(SA1 -> A1_IDENT)
RestArea(cArea)
Return aDetFac
Ejemplo 2 : Búsqueda en tabla SB1
#include 'protheus.ch'
User Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/
DbSelectArea("SB1")
SB1->(dbSetorder(1)) // B1_FILIAL + B1_COD
SB1->(Dbseek(XFilial("SB1")+cCodProd))
aDetFac[2] := AllTrim(SB1-> B1_ID)
aDetFac[6] := AllTrim(SB1 -> B1_ID)
RestArea(cArea)
Return aDetFac
En los ejemplos se observa que solo se informan el No.identificación y la Descripción del producto, si es requerido modificar algún otro campo sólo es necesario informar un valor en la posición del arreglo aDetFac dependiendo del campo que se quiera modificar.
Ejemplo 3: Búsqueda en tabla SD2
#include 'protheus.ch'
User Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local cItem := PARAMIXB[2] // Número del Item.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
Local nRecSD2 := 0
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/
BeginSQL Alias "SD2TMP"
SELECT D2_ITEM,D2_DESCRI
FROM %Table:SD2% SD2
WHERE SD2.D2_FILIAL = %xFilial:SD2%
AND SD2.D2_SERIE = %Exp:SF2->F2_SERIE%
AND SD2.D2_DOC = %Exp:SF2->F2_DOC%
AND SD2.D2_CLIENTE = %Exp:SF2->F2_CLIENTE%
AND SD2.D2_LOJA = %Exp:SF2->F2_LOJA%
AND SD2.D2_TIPO = %Exp:SF2->F2_TIPO%
AND SD2.%NotDel%
EndSQL
DbSelectArea("SD2TMP")
While !SD2TMP ->(Eof())
If AllTrim(SD2TMP -> D2_ITEM) == AllTrim(cItem)
aDetFac[6] := AllTrim(SD2TMP -> D2_DESCRI)
EndIf
SD2TMP -> (dbskip())
EndDo
SD2TMP ->(dbCloseArea())
RestArea(cArea)
Return aDetFac
NOTA: Cabe mencionar que al momento de la ejecución del punto de entrada, se puede acceder a algunas tablas como la de Clientes (SA1), Productos (SB1), Ítems de factura (SD2 / SD1), por lo que se podrán utilizar campos que ya existen de estas tablas o campos nuevos que sean agregados y definir la regla para el armado de los atributos del nodo Conceptos.
Para las tablas de Ítems de factura (SD2 y SD1), se recomienda apegarse al ejemplo descrito usando SQL embebido (BeginSql ... EndSql), ya que las instrucciones como DbSetOrder() y DbSeek() sobre tales tablas, causan conflicto por el uso de un archivo temporal para la construcción del archivo XML.
Card documentos Informacao Utilice este box para resaltar información relevante y/o de destaqueEn el Punto de Entrada LOCXCONCEP el contenido de cada una de los campos en el arreglo aDetFac debe cumplir con lo establecido en el Anexo 20 Guía de llenado de los comprobantes fiscales digitales por Internet, referente a los atributos del nodo Conceptos considerando que dicha guía puede ser modificada en cualquier momento por el SAT. Titulo ¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
- Referencia del SAT, guía del Anexo 20 de CFDI:
http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/GuiaAnexo20.pdf
- Referencia Documento Técnico Factura electrónica MEX
DT_Factura_Electronica_Mexico_CFDI_Version_3_3
Templatedocumentos |
---|
HTML |
---|
<style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } .aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { background: #FF9900; !important } .menu-item.active-tab { border-bottom: none !important; } </style> |