Tempo aproximado para lectura: 00:05:00 min
Duda
¿Cuál es el punto de entrada para la adición de campos al XML en factura electrónica Colombia?
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Facturación (SIGAFAT) - 12
Solución
Con la finalidad de proporcionar al usuario un medio para agregar datos adicionales a la factura electrónica, se crea el punto de entrada M486CEXT para la incorporación de Campos Extensibles al documento electrónico XML/PDF. Los datos adicionales pueden ser por ejemplo campos de los registros de clientes: Teléfono, Teléfono 2, Dirección, etc.
El usuario creará el código y compilará la función de usuario M486CEXT con las estructuras de los campos extensibles a integrar en el XML/PDF que genera TFHKA, el Punto de Entrada constará de:
Parámetros recibidos, el nombre ParamIXB y tipo (arreglo) son fijos:
-
- ParamIXB[1,1] = Serie de documento
- ParamIXB[1,2] = Número de documento
- ParamIXB[1,3] = Código de cliente
- ParamIXB[1,4] = Tienda de cliente
- ParamIXB[1,5] = Fecha de emisión
- ParamIXB[1,6] = Filial (SF2/SF1)
- ParamIXB[2] = Tipo de documento: NF, NDC, NCC
Cada campo se debe definir en un arreglo de 6 elementos, donde:
-
- 1 = Descripción del campo para título en el PDF (controlInterno1).
- 2 = Consecutivo de campo (controlInterno2).
- 3 = Clave de campo (nombre).
- 4 = Incluir en PDF? 0=No, 1=Sí (pdf).
- 5 = Contenido del campo (valor).
- 6 = Incluir en XML? 1=Sí, siempre (xml).
Los textos entre paréntesis hacen referencia a identificadores del Servicio Web de TFHKA. Las descripciones y características de cada identificador, así como los códigos de campos posibles de utilizar (3° elemento), están descritos en el documento “Manual de Integración Directa - Emisión - V7.5.pdf” de TFHKA, sección Uso de Campos Extensibles y en la Tabla 11 respectivamente.
Importante: - Para los campos que no les corresponda alguno de los códigos considerados en la TABLA 11, denominados LIBRE, deberá informarse una clave única para cada campo, además, esas claves no deben estar asignadas en el catálogo indicado; se pueden utilizar por ejemplo “1”, "2", "3", etc.
- El indicador XML siempre deberá ser "1", el establecer "0" no tendría utilidad ya que no incluirá el campo en el documento electrónico y por lo tanto tampoco podría imprimirse en la representación gráfica.
Retorno:
-
- Matriz de arreglos de los campos extensibles.
- Matriz de arreglos de los campos extensibles.
a) Ejemplo de Punto de Entrada M486CEXT
#Include "Protheus.ch"
#Include "rwmake.ch"
User Function M486CEXT()
Local aArea := getArea()
Local aAreaSA1 := SA1->(GetArea())
Local aCampos := {}
Local cSerie := ParamIXB[1,1]
Local cFactura := ParamIXB[1,2]
Local cCliente := ParamIXB[1,3]
Local cLoja := ParamIXB[1,4]
Local cEspecie := ParamIXB[2]
dbSelectArea("SA1")
dbSetOrder(1) //A1_FILIAL+A1_COD+A1_LOJA
dbSeek(xFilial("SA1")+cCliente+cLoja)
If !Empty(SA1->A1_CONTATO)
aAdd( aCampos , {"Destinatario", "", "48", "1", Alltrim(SA1->A1_CONTATO), "1"} )
EndIf
If !Empty(SA1->A1_HPAGE)
aAdd( aCampos , {"Pagina web", "", "1", "1", Alltrim(SA1->A1_HPAGE), "1"} )
EndIf
SA1->(RestArea(aAreaSA1))
RestArea(aArea)
Return aCampos
0 Comentarios