Diferencia entre revisiones de «Manual DLL hkafact21 - Emisión V4»
(No se muestran 7 ediciones intermedias de 3 usuarios) | |||
Línea 67: | Línea 67: | ||
(11 Campos, 9 pipes “|”): | (11 Campos, 9 pipes “|”): | ||
<center> | <center> | ||
− | <pre> | + | <pre>ID01A=01A|CanalDeEntrega|email|fechaProgramada|mensajePersonalizado|nitProveedorReceptor |
|telefono|Extensible1.controlInterno1|Extensible1.controlInterno2 | |telefono|Extensible1.controlInterno1|Extensible1.controlInterno2 | ||
|Extensible1.nombre|Extensible1.valor | |Extensible1.nombre|Extensible1.valor | ||
Línea 99: | Línea 99: | ||
<pre>ID01F=01F|obligaciones|regimen|Extensible1.controlInterno1|Extensible1.controlInterno2 | <pre>ID01F=01F|obligaciones|regimen|Extensible1.controlInterno1|Extensible1.controlInterno2 | ||
|Extensible1.nombre|Extensible1.valor | |Extensible1.nombre|Extensible1.valor | ||
− | |||
</pre> | </pre> | ||
</center> | </center> | ||
Línea 358: | Línea 357: | ||
=== String MpOcTe === | === String MpOcTe === | ||
Esta cadena contiene la información referente a Medios de pagos, Orden de compra y términos de entrega. | Esta cadena contiene la información referente a Medios de pagos, Orden de compra y términos de entrega. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<br> | <br> | ||
Línea 525: | Línea 513: | ||
Esta cadena contiene los campos extras que se deseen agregar al objeto factura. | Esta cadena contiene los campos extras que se deseen agregar al objeto factura. | ||
<br> | <br> | ||
− | <u><center>'''Extras = '''<font color="Blue>04</font> | + | <u><center>'''Extras = '''<font color="Blue>04</font>|controlInterno1|controlInterno2|nombre|pdf|valor|xml</u></center> |
'''Observaciones:''' | '''Observaciones:''' | ||
*El string Extras es repetible. | *El string Extras es repetible. | ||
Línea 563: | Línea 551: | ||
</center> | </center> | ||
<br/> | <br/> | ||
− | '''Nota:'''Los camposGenerales se encuentran numerados según el orden establecido en la resolución. | + | '''Nota:'''Los camposGenerales se encuentran numerados según el orden establecido en la resolución. Para los campos que se envian vacios se debe finalizar la cadena con pipe (|) adicional. |
*El string CamposGenerales es repetible. | *El string CamposGenerales es repetible. | ||
<u><center>'''Separación entre Pacientes:'''</u> <span style="color:#000000; background:#FFFF00">“¬”</span> <span style="color:#000000; background:#FFFF00">(Ejemplo: Paciente1¬Paciente2)</span> | <u><center>'''Separación entre Pacientes:'''</u> <span style="color:#000000; background:#FFFF00">“¬”</span> <span style="color:#000000; background:#FFFF00">(Ejemplo: Paciente1¬Paciente2)</span> | ||
Línea 597: | Línea 585: | ||
− | :01|codigo|consecutivoDocumento|cufe|fechaRespuesta|hash|mensaje|resultado|tipoCufe| | + | :01|codigo|consecutivoDocumento|cufe|fechaRespuesta|hash|mensaje|resultado|tipoCufe|esValidoDian|nombre|fechaAceptacionDIAN |
+ | |||
+ | :esValidoDian =1 True (Documento Aceptado) - esValidoDian = 0 False (Documento no Aceptado) | ||
:01A|mensajeValidacion | :01A|mensajeValidacion | ||
Línea 655: | Línea 645: | ||
<big>'''String tipo '''</big> | <big>'''String tipo '''</big> | ||
<br/> | <br/> | ||
− | “2” Cuando se | + | “1” Declaramos en la Clase Adjunto (Class.Adjunto) en Tipo "1" cuando queremos generar la representación gráfica obtenida por el ERP.<br/> |
+ | “2” Declaramos en la Clase Adjunto (Class.Adjunto) en Tipo "2" Cuando se van a enviar otros documentos adicionales a la factura, es decir, que estos documentos van a quedar en una cola sin que se haga ningún tipo de envío sin antes indicárselo a la plataforma. Para esto, el<strong> parámetro <enviar> </strong>se debe declarar en cero '0', para indicarle a nuestra plataforma que sincronice el adjunto pero sin enviarlo. Finalmente cuando se declare el último adjunto se debe declarar el <strong>parámetro <enviar></strong> en "1", así nuestra plataforma entiende que es el último adjunto, por tanto envía este último documento más los anteriores que se encontraban en la cola. | ||
+ | |||
<br/> | <br/> | ||
Línea 722: | Línea 714: | ||
=== Respuesta método EstadoDocumento=== | === Respuesta método EstadoDocumento=== | ||
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult.txt con la siguiente estructura: | Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult.txt con la siguiente estructura: | ||
+ | |||
Línea 727: | Línea 720: | ||
:|esValidoDIAN|estatusDocumento|fechaDocumento|mensaje|mensajeDocumento|poseeAdjuntos|poseeRepresentacionGrafica|resultado | :|esValidoDIAN|estatusDocumento|fechaDocumento|mensaje|mensajeDocumento|poseeAdjuntos|poseeRepresentacionGrafica|resultado | ||
:|tipoCufe|tipoDocumento|trackID|fechaAceptacionDIAN | :|tipoCufe|tipoDocumento|trackID|fechaAceptacionDIAN | ||
+ | |||
+ | :esValidoDian =1 True (Documento Aceptado) - esValidoDian = 0 False (Documento no Aceptado) | ||
+ | |||
:01A|ambienteDIAN|codigo|comentario|cufe|descripcionEvento|emisorNumeroDocumento|emisorNumeroDocumentoDV|emisorRazonSocial | :01A|ambienteDIAN|codigo|comentario|cufe|descripcionEvento|emisorNumeroDocumento|emisorNumeroDocumentoDV|emisorRazonSocial | ||
Línea 733: | Línea 729: | ||
:tipoEvento|versionUBL|xml | :tipoEvento|versionUBL|xml | ||
− | :01A1|codigoInterno1|codigoInterno2|nombre|valor | + | |
+ | :01A1|codigoInterno1|codigoInterno2|nombre|valor | ||
+ | |||
:01B|canalDeEntrega|email|entregaEstatus|entregaEstatusDescripcion|entregaFecha|fechaProgramada|mensajePersonalizado | :01B|canalDeEntrega|email|entregaEstatus|entregaEstatusDescripcion|entregaFecha|fechaProgramada|mensajePersonalizado | ||
:|nitProveedorReceptor|recepcionEmailComentario|recepcionEmailEstatus|recepcionEmailFecha|recepcionEmailIPAddress|telefono | :|nitProveedorReceptor|recepcionEmailComentario|recepcionEmailEstatus|recepcionEmailFecha|recepcionEmailIPAddress|telefono | ||
+ | |||
:01C|reglasValidacionDIAN | :01C|reglasValidacionDIAN | ||
+ | |||
<br/> | <br/> | ||
Línea 1096: | Línea 1096: | ||
<br> | <br> | ||
<br/> | <br/> | ||
− | * ID06= "06|01|SS-CUFE| | + | * ID06= "06|01|SS-CUFE|2" |
* ID06A= "06A|Fulano|Sutano|1|POXBOX01|Principal|Los Chaimas|Bogotá, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||" | * ID06A= "06A|Fulano|Sutano|1|POXBOX01|Principal|Los Chaimas|Bogotá, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||" | ||
<br> | <br> | ||
− | <big><center><font color="Green">**Los camposGenerales se encuentran numerados según el orden establecido en la resolución.</font></center></big> | + | <big><center><font color="Green">**Los camposGenerales se encuentran numerados según el orden establecido en la resolución 2275.</font></center></big> |
<br> | <br> | ||
− | <pre>ID06B = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2| | + | <pre>ID06B = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"</pre> |
<br> | <br> | ||
<big><center><font color="Orange">*** Varios pacientes:</font></center></big> | <big><center><font color="Orange">*** Varios pacientes:</font></center></big> | ||
<br/> | <br/> | ||
− | <pre> | + | <pre>ID06B = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"</pre> |
<br/> | <br/> | ||
− | <pre> | + | <pre>ID06B1 = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"</pre> |
<br/> | <br/> | ||
− | <big><center><font color="Orange">Pacientes= | + | <big><center><font color="Orange">Pacientes= Concatenacion de todos los Pacientes separados por el caracter "¬"= ID06B + "¬" + ID06B1</font></center></big> |
<br/> | <br/> | ||
− | <pre>ID06C = "06C|||5170000|1|100.50|1" | + | <pre>Pacientes= ID06B + "¬" + ID06B1 |
− | SectorSalud= ID06 + "%" + ID06A + "%%" + | + | ID06C = "06C|||5170000|1|100.50|1" |
− | + | SectorSalud= ID06 + "%" + ID06A + "%%" + Pacientes | |
+ | </pre> | ||
<br/> | <br/> | ||
<font color="Blue">Adjuntos</font>= "0" | <font color="Blue">Adjuntos</font>= "0" |
Revisión actual del 21:11 8 abr 2024
Sumario
- 1 Objetivo
- 2 Alcance
- 3 Definiciones y Términos
- 4 Procedimiento
- 5 MÉTODO ENVIAR
- 5.1 Declaración
- 5.2 String URL
- 5.3 String tokenEmpresa
- 5.4 String tokenPassword
- 5.5 String datosCliente
- 5.6 String FacturaGlobalL
- 5.7 String AnticAutCargDesc
- 5.8 String CpDr
- 5.9 String EntMerc (Este indientificador no es obligatorio)
- 5.10 String ImpuestosFactura
- 5.11 String MpOcTe
- 5.12 String TcTcaIa
- 5.13 String DetalleDeFactura
- 5.14 String Extras
- 5.15 String SectorSalud
- 5.16 String Adjunto
- 5.17 String debugMode
- 5.18 Respuesta de método Enviar
- 6 Método EnviarArchivo
- 7 Método EstadoDocumento
- 8 Método FoliosRestantes
- 9 Método EnvioCorreoAdjuntos
- 10 Método DescargarXML
- 11 Método DescargarPDF
- 12 Método GenerarContenedor
- 13 Ejemplo Strings Método Enviar
- 14 Ejemplo Strings Método EnviarArchivo
- 15 Personalización del Correo
- 16 Generación De Notas Con Y Sin Referencia a Documentos
- 17 Transmisión De Documentos De Contingencia Tipo 03
- 18 Radicar Documentos Electrónicos En Plataformas De Recepción
- 19 Ambiente De Habilitación
Objetivo
El presente manual tiene como propósito dar a conocer los detalles de los cambios a nivel del consumo de la librería HKAFACT21 para validación previa respecto a la versión del modelo de facturación de validación posterior (HKAFACT).
Alcance
Nota: En el mismo se describen cada uno de los strings que constituyen el objeto factura. Para obtener mayor información sobre la obligatoriedad de los campos (requeridos/opcionales) ver MANUAL DE INTEGRACION DIRECTA (EMISIÓN - VAL. PREVIA)
Definiciones y Términos
- C++: lenguaje de programación diseñado para extender al lenguaje de programación C con mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido, con la particularidad de poder redefinir los operadores, y de crear nuevos tipos que se comporten como tipos fundamentales.
- DLL: Biblioteca de enlace dinámico o más comúnmente DLL (sigla en inglés de dynamic-link library) es el término con el que se refiere a los archivos con código ejecutable que se cargan bajo demanda de un programa por parte del sistema operativo.
- SDK: Un kit de desarrollo de software es un conjunto de herramientas de desarrollo de software que le permite al programador o desarrollador de software crear una aplicación informática para un sistema concreto.
- Servicio Web de Integración: Servicio Web de The Factory HKA Colombia SAS puesto a disposición a propietarios de software administrativos o de gestión para la generación de factura electrónica.
Procedimiento
- Creamos una nueva carpeta.
- Descomprimimos el contenido del SDK en la capeta previamente creada.
- Copiamos la librería hkafact21.dll.
- Pegamos la librería en la carpeta System32 de Windows.
- Finalmente, declaramos las distintas funciones a utilizar de la librería.
@IMPORTANTE:
- En el caso de que al final de la cadena (Identificador), el campo se encuentre vacío se debe agregar un pipe “|” al final.
- Si el identificador no es obligatorio, este pueden enviarse con el identificador seguido de un pipe (Ejemplo: ID02A = "02A|").
- Si los identificadores son repetibles puede concatenarse con el separador “% “seguido del identificador con los campos correspondientes a la cadena que desea repetir.
MÉTODO ENVIAR
Función que permite generar el documento electrónico.
Declaración
INT Enviar (string URL, string tokenEmpresa, string tokenPassword, string DatosCliente, string FacturaGlobal, string AnticAutCargDesc, string CpDr, string EntMerc, string ImpuestosFactura, string MpOcTe, string TcTcaIa, string Extras, string DetalleDeFactura, string Adjuntos, string SectorSalud, bool debugMode)
String URL
- URL del servicio de emisión.
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String datosCliente
- Datos que componen la información del adquiriente.
Cliente_DatosGenerales
(20 Campos, 19 pipes “|”):
ID01=01|nombreRazonSocial|tipoPersona|segundoNombre|apellido|numeroDocumento|tipoIdentificacion |email|telefono|notificar|actividadEconomicaCIIU|nombreComercial|nombreContacto |nota|numeroIdentificacionDV |telefax|Extensible1.controlInterno1| Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Cliente_Destinatario
(11 Campos, 9 pipes “|”):
ID01A=01A|CanalDeEntrega|email|fechaProgramada|mensajePersonalizado|nitProveedorReceptor |telefono|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Cliente_DetallesTributarios
(6 Campos, 5 pipes “|”):
ID01B=01B|codigoImpuesto|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Cliente_InformacionLegal
(8 Campos, 7 pipes “|”):
ID01E=01E|codigoEstablecimiento|nombreRegistroRUT|numeroIdentificacion|numeroIdentificacionDV| numeroMatriculaMercantil|prefijoFacturacion|tipoIdentificacion
Cliente_ResponsabilidadesRut
(7 Campos, 6 pipes “|”):
ID01F=01F|obligaciones|regimen|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
DireccionCliente
(30 Campos, 29 pipes “|”):
ID01C=01C|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad|codigoDepartamento| correccionHusoHorario|departamento|departamentoOrg|direccion|distrito|habitacion|lenguaje |municipio|nombreEdificio|numeroEdificio|numeroParcela|pais|piso|region|subDivision|ubicación |zonaPostal|Extensible1.controlInterno1|Extensible1.controlInterno2| Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
DireccionFiscalCliente
(30 Campos, 29 pipes “|”):
ID01D=01D|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad|codigoDepartamento |correccionHusoHorario|departamento|departamentoOrg|direccion|distrito|habitacion|lenguaje |municipio|nombreEdificio|numeroEdificio|numeroParcela|pais|piso|region|subDivision|ubicación |zonaPostal|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Observaciones:
- Los identificadores 01A, 01B, 01F son repetibles
String FacturaGlobalL
Datos generales del objeto factura.
FacturaGlobal
(23 Campos, 22 pipes “|”):
datos_factura=02|tipoDocumento|consecutivoDocumento|rangoNumeracion|fechaEmision|fechaVencimiento|moneda |propina|totalDescuentos|totalSinImpuestos|totalMonto|cantidadDecimales|fechaFinPeriodoFacturacion |fechaInicioPeriodoFacturacion|fechaPagoImpuestos|redondeoAplicado|tipoOperacion| totalAnticipos|totalBaseImponible|totalBrutoConImpuesto|totalCargosAplicados |totalProductos|tipoSector
String AnticAutCargDesc
Anticipos, autorizaciones, Cargos y descuentos aplicados en el comprobante.
Anticipos
(11 Campos, 10 pipes “|”):
ID02A=02A|fechaDeRecibido|fechadePago|horaDePago|id|instrucciones|montoPagado| Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Autorizado
(15 Campos, 14 pipes “|”):
ID02B=02B|email|nombreComercial|nombreContacto|nota|numeroDocumento|numeroDocumentoDV |razonSocial|telefax|telefono|tipoIdentificacion|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
cargosDescuentos
(12 Campos, 11 pipes “|”):
ID02C=02C|codigo|descripcion|indicador|monto|montoBase|porcentaje|secuencia|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Observaciones:
- Los identificadores 02A, 02B son repetibles
String CpDr
Condiciones de pago y documentos referenciados para el comprobante.
CondicionPago
(20 Campos, 19 pipes “|”):
ID02D=02D|codigoEvento|comentario|duracionPeriodo|duracionPeriodoMedida|fechaVencimiento|identificador |medioPagoAsociado|monto|montoMulta|montoPenalidad|periodoDesde|periodoHasta|porcentajeDescuento |porcentajePago|referenciaAnticipo|Extensible1.controlInterno1| Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
DocumentosReferenciados
(18 Campos, 17 pipes “|”): Puedo no enviarse 02E1
ID02E=02E|codigoEstatusDocumento|codigoInterno|cufeDocReferenciado|fecha|fechaFinValidez|fechaInicioValidez |numeroDocumento|tipoCUFE|tipoDocumento|tipoDocumentoCodigo|Extensible1.controlInterno1| Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor|conceptoRecaudo| monto|numeroIdentificacion ¬02E1|descripción
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Observaciones:
- Los identificadores 02D, 02E son repetibles
String EntMerc (Este indientificador no es obligatorio)
Datos referentes a la entrega de la mercancía.Anticipos, autorizaciones, Cargos y descuentos aplicados en el comprobante.
entregaMercancia
ID02F=02F|fechaEfectivaSalida|fechaEstimada|fechaReal|fechaSolicitada|identificacionTransporte| matriculaTransporte|Extensible1.controlInterno1|Extensible1.controlInterno2| Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
datosTransportista
ID02F1=02F1|email|indicadordeAtencion|indicadordeCuidado|nombreContacto|nombreResponsableEntrega |nota|numeroIdentificacion|numeroIdentificacionDV|numeroMatriculaMercantil|prefijoFacturacion |telefax|telefono|tipoIdentificacion|transportadorNombre|transportadorNumeroDocumento |transportadorNumeroDocumentoDV|transportadorTipoIdentificacion|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
detallesTributariosTransportista
ID02F1A=02F1A|codigoImpuesto|Extensible1.controlInterno1|Extensible1.controlInterno2|Extensible1.nombre |Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
direccionTransportista
ID02F1B=02F1B|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad|codigoDepartamento |correccionHusoHorario|departamento|departamentoOrg|direccion|distrito|habitacion |lenguaje|municipio|nombreEdificio|numeroEdificio|numeroParcela|pais|piso|region |subDivision|ubicación|zonaPostal|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
responsabilidadRUT
ID02F1C=02F1C|obligaciones|regimen|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
transportadorDireccion
ID02F1D=02F1D|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad |codigoDepartamento|correccionHusoHorario|departamento|departamentoOrg |direccion|distrito|habitacion|lenguaje|municipio|nombreEdificio|numeroEdificio |numeroParcela|pais|piso|region|subDivision|ubicación|zonaPostal|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
direccionDespacho
ID02F2=02F2|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad |codigoDepartamento|correccionHusoHorario|departamento|departamentoOrg |direccion|distrito|habitacion|lenguaje|municipio|nombreEdificio|numeroEdificio |numeroParcela|pais|piso|region|subDivision|ubicación|zonaPostal| Extensible1.controlInterno1|Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
direccionEntrega
ID02F3=02F3aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad|codigoDepartamento |correccionHusoHorario|departamento|departamentoOrg|direccion|distrito|habitacion |lenguaje|municipio|nombreEdificio|numeroEdificio|numeroParcela|pais|piso |region|subDivision|ubicación|zonaPostal|Extensible1.controlInterno1| Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Si se envía:
EntMerc = ID02F%%ID02F1%%
Si no se desea envía:
EntMerc = ""
Observaciones:
- Los identificadores ID02F1A, 02F1B1, 02F1C, 02F1D1, 02F2A, 02F3A son repetibles
String ImpuestosFactura
Esta cadena contiene la información referente a los impuestos aplicados en el documento.
ImpuestosGenerales
(13 Campos, 12 pipes “|”):
ID02G=02G|baseImponibleTOTALImp|codigoTOTALImp|controlInterno|porcentajeTOTALImp |unidadMedida|unidadMedidaTributo|valorTOTALImp|valorTributoUnidad|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
ImpuestosTotales
(8 Campos, 7 pipes “|”):
ID02H=02H|codigoTOTALImp|montoTotal|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor|redondeoAplicado
Nota: En caso de enviar el campo redondeoAplicado vacío se tomará por defecto 0.00
Nota: Si el campo redondeoAplicado se encuentra vacío debe enviar un pipe (|) al final de la cadena.
Obsercaciones:
- Los identificadores ID02G, ID02H son repetibles
String MpOcTe
Esta cadena contiene la información referente a Medios de pagos, Orden de compra y términos de entrega.
MediosPago
(15 Campos, 14 pipes “|”):
ID02J=02J|codigoBanco|codigoCanalPago|codigoReferencia|fechaDeVencimiento|medioPago|metodoDePago |nombreBanco|numeroDeReferencia|numeroDias|numeroTransferencia|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Orden_Compra
(12 Campos, 11 pipes “|”):
ID02K=02K|codigoCliente|fecha|numeroOrden|numeroPedido|tipoCUFE|tipoOrden |uuid|Extensible1.controlInterno1|Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Terminos_Entrega
(10 Campos, 9 pipes “|”):
ID02N=02N|codigoCondicionEntrega|costoTransporte|identificacion|monto |responsableEntrega|Extensible1.controlInterno1|Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
Observaciones:
- Los identificadores ID02J, ID02K son repetibles
String TcTcaIa
Esta cadena contiene la información referente a la tasa de cambio, tasa de cambio alternativa e información adicional.
TasaCambio
(13 Campos, 12 pipes “|”):
ID02L=02L|baseMonedaDestino|baseMonedaOrigen|fechaDeTasaDeCambio|indicadorDeTasa |monedaDestino|monedaOrigen|operadorCalculo|tasaDeCambio|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
TasaCambioAlternativa
(13 Campos, 12 pipes “|”):
ID02M=02M|baseMonedaDestino|baseMonedaOrigen|fechaDeTasaDeCambio|indicadorDeTasa |monedaDestino|monedaOrigen|operadorCalculo|tasaDeCambio|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
InformacionAdicional
(2 Campos, 1 pipes “|”):
ID02I=02I|Texto
Observaciones:
- Los identificadores ID02I son repetibles
String DetalleDeFactura
Esta cadena contiene la información referente a los items
DetalleDeFactura
(43 Campos, 42 pipes “|”):
ID03=03|cantidaPorEmpaque|CantidadReal|CantidadRealUnidadMedida|cantidadUnidades |codigoFabricante|codigoIdentificacionPais|codigoProducto|codigoTipoPrecio|descripcion |descripcionTecnica|estandarCodigo|estandarCodigoID|estandarCodigoIdentificador|estandarCodigoProducto |estandarOrganizacion|estandarSubcodigoProducto|mandatorioNumeroIdentificacion|mandatorioNumeroIdentificacionDV |mandatorioTipoIdentificacion|marca|modelo|muestraGratis|NombreFabricante|nota|precioReferencia |precioTotal|precioTotalSinImpuestos|PrecioVentaUnitario|secuencia|seriales|subCodigoFabricante |subcodigoProducto|tipoAIU|unidadMedida|informacionAdicional|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor|descripcion2|descripcion3| idEsquema
Nota: Si envía vacío el campo idEsquema se debe enviar un pipe (|) al final de la cadena
DF_CargosDescuentos
(12 Campos, 11 pipes “|”):
ID03A=03A|codigo|descripcion|indicador|monto|montoBase|porcentaje|secuencia |Extensible1.controlInterno1|Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
DF_ImpDet
(13 Campos, 12 pipes “|”):
ID03C=03C|baseImponibleTOTALImp|codigoTOTALImp|controlInterno|porcentajeTOTALImp |unidadMedida|unidadMedidaTributo|valorTOTALImp|valorTributoUnidad|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
Nota: Si Extensible1.valor se debe enviar un pipe (|) al final de la cadena
DF_ImpTot
(8 Campos, 7 pipes “|”):
ID03D=03D|codigoTOTALImp|montoTotal|Extensible1.controlInterno1|Extensible1.controlInterno2 |Extensible1.nombre|Extensible1.valor|redondeoAplicado
Nota: En caso de enviar el campo redondeoAplicado vacio se tomara por defecto 0.00
Nota: Si el campo redondeoAplicado se encuentra vacío debe enviar un pipe (|) al final de la cadena
Observaciones:
- Separación entre campos del ítem: $$
DF_InformacionAdicional
(7 Campos, 6 pipes “|”):
ID03E=03E|nombre|valor|código|cantidad|secuencia|unidadMedidaTransporte
Nota:Si el campo unidadMedidaTransporte se encuentra vacío debe enviar un pipe (|) al final de la cadena
Observaciones:
- Separación entre ítems: ¬(Ejemplo: item1¬item2)
String Extras
Esta cadena contiene los campos extras que se deseen agregar al objeto factura.
Observaciones:
- El string Extras es repetible.
String SectorSalud
Esta cadena contiene la información referente al sector salud:
sectorSalud
(4 Campos, 3 pipes “|”):
ID06=06|TipoIdentificacion|IdPersonalizacion|TipoEscenario
DireccionResidencia
(30 Campos, 29 pipes “|”):
ID06A=06A|aCuidadoDe|aLaAtenciónDe|bloque|buzon|calle|calleAdicional|ciudad |codigoDepartamento|correccionHusoHorario|departamento|departamentoOrg|direccion |distrito|habitacion|lenguaje|municipio|nombreEdificio|numeroEdificio|numeroParcela |pais|piso|region|subDivision|ubicación|zonaPostal|Extensible1.controlInterno1 |Extensible1.controlInterno2|Extensible1.nombre|Extensible1.valor
CamposGenerales
(3 Campos, 2 pipes “|”):
Esta cadena contiene la información referente a los Pacientes.
ID06B=06B|Nombre|Valor
Nota:Los camposGenerales se encuentran numerados según el orden establecido en la resolución. Para los campos que se envian vacios se debe finalizar la cadena con pipe (|) adicional.
- El string CamposGenerales es repetible.
Sextras
(7 Campos, 6 pipes “|”):
ID06C=06C|controlInterno1|controlInterno2|nombre|pdf|valor|xml
- El string Extras es repetible.
String Adjunto
Caracter que establece si el documento que se emite contendrá o no adjuntos. Valores posibles:
- “0” No se admiten adjuntos. Se genera XML y representación Gráfica estándar por The Factory HKA.
- “1” Admite archivos adjuntos. Se genera XML y representación Gráfica estándar por The Factory HKA.
- “10” No se admiten adjuntos. Se genera solo XML sin representación Gráfica estándar por The Factory HKA.
- “11” Admite archivos adjuntos. Se genera solo XML sin representación gráfica estándar por The Factory HKA.
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta de método Enviar
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult.txt con la siguiente estructura:
- 01|codigo|consecutivoDocumento|cufe|fechaRespuesta|hash|mensaje|resultado|tipoCufe|esValidoDian|nombre|fechaAceptacionDIAN
- esValidoDian =1 True (Documento Aceptado) - esValidoDian = 0 False (Documento no Aceptado)
- 01A|mensajeValidacion
- 01B|reglasValidacionDIAN
Nota:El string del QR se escribe en un archivo de texto llamado string_QR.txt
Nota:La dll también dispone del método EnviarCustom, similar al anterior con la diferencia de que este método permite generar el archivo plano de resultado con un nombre diferente y en un directorio distinto al local mediante el parámetro NombreArchivo. Para más detalles ver código ejemplo suministrado en el SDK.
Método EnviarArchivo
Función que permite adjuntar o enviar archivos (anexos) por email durante la emisión del documento electrónico. Este método se ejecuta después de consumir el método Enviar con el parámetro adjuntos en “1” o en “11”.
Declaración
INT EnviarArchivo (string URLAdj, string tokenEmpresa, string tokenPassword, string ndocumento, string enviar, string formato, string nombre, string tipo, string email, string ruta, bool debugMode).
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String ndocumento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento al cual se adjuntará el archivo).
String enviar
Parámetro que indica la finalización de la carga de adjuntos. Posee dos valores:
- “0” Adjunta el archivo y lo asocia al documento electrónico sin enviar el email al Adquiriente.
- “1” Adjunta el archivo y lo asocia al documento electrónico y envía el email al Adquiriente.
String formato
Extension del archivo adjunto, formatos permitidos: png, bmp, jpg, pdf, doc, docx, xsl, xlsx, ppt, pptx.
String nombre
Nombre que tomará el archive adjunto.
String tipo
“1” Declaramos en la Clase Adjunto (Class.Adjunto) en Tipo "1" cuando queremos generar la representación gráfica obtenida por el ERP.
“2” Declaramos en la Clase Adjunto (Class.Adjunto) en Tipo "2" Cuando se van a enviar otros documentos adicionales a la factura, es decir, que estos documentos van a quedar en una cola sin que se haga ningún tipo de envío sin antes indicárselo a la plataforma. Para esto, el parámetro <enviar> se debe declarar en cero '0', para indicarle a nuestra plataforma que sincronice el adjunto pero sin enviarlo. Finalmente cuando se declare el último adjunto se debe declarar el parámetro <enviar> en "1", así nuestra plataforma entiende que es el último adjunto, por tanto envía este último documento más los anteriores que se encontraban en la cola.
String email
Correo al cual se dese enviar el XML (AttachedDocument), la Representación Gráfica y los anexos o adjuntos.
String ruta
Cadena de caracteres con la ubicación del archivo que será enviado a través del servicio.
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
@IMPORTANTE:
Al emitir un documento electrónico con el parámetro Adjunto en “1” u “11” el email no se enviará al adquiriente hasta no consumir el método EnviarArchivo.
Respuesta de método EnviarArchivo
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult.txt con la siguiente estructura:
- 01|codigo| mensaje|resultado
Método EstadoDocumento
Función que permite consultar el estado de un documento emitido previamente.
Declaración
INT EstadoDocumento (string URL, string tokenEmpresa, string tokenPassword, string documento, bool debugMode)
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String ndocumento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento al cual se adjuntará el archivo).
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método EstadoDocumento
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult.txt con la siguiente estructura:
- 01|codigo|estatusDocumento|ambiente|cadenaCufe|consecutivo|cufe|descripcionDocumento|descripcionEstatusDocumento|entregaMetodoDIAN
- |esValidoDIAN|estatusDocumento|fechaDocumento|mensaje|mensajeDocumento|poseeAdjuntos|poseeRepresentacionGrafica|resultado
- |tipoCufe|tipoDocumento|trackID|fechaAceptacionDIAN
- esValidoDian =1 True (Documento Aceptado) - esValidoDian = 0 False (Documento no Aceptado)
- 01A|ambienteDIAN|codigo|comentario|cufe|descripcionEvento|emisorNumeroDocumento|emisorNumeroDocumentoDV|emisorRazonSocial
- |emisorTipoIdentificacion|fechaEmision|fechaRecepcion|hash|idPerfilDIAN|mensaje|nombreArchivoXML|nota|numeroDelEvento
- |receptorNumeroDocumento|receptorNumeroDocumentoDV|receptorRazonSocial|receptorTipoIdentificacion|resultado|tipoCufe|
- tipoEvento|versionUBL|xml
- 01A1|codigoInterno1|codigoInterno2|nombre|valor
- 01B|canalDeEntrega|email|entregaEstatus|entregaEstatusDescripcion|entregaFecha|fechaProgramada|mensajePersonalizado
- |nitProveedorReceptor|recepcionEmailComentario|recepcionEmailEstatus|recepcionEmailFecha|recepcionEmailIPAddress|telefono
- 01C|reglasValidacionDIAN
Nota:El string del QR se escribe en un archivo de texto llamado string_QR.txt
Nota:La dll también dispone del método EstadoDocumentoCustom, similar al anterior con la diferencia de que este método permite generar el archivo plano de resultado con un nombre diferente y en un directorio distinto al local mediante el parámetro NombreArchivo. Para más detalles ver código ejemplo suministrado en el SDK.
Método FoliosRestantes
Función que permite consultar la cantidad de folios disponibles
Declaración
INT FoliosRestantes (string URL, string tokenEmpresa, string tokenPassword, string otro, bool debugMode)
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
<bi> String otro
Actualmente en desuso, campo reservado para futuras versiones.
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método FoliosRestantes:
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:
- código|foliosRestantes|mensaje|resultados.
Método EnvioCorreoAdjuntos
Función que permite reenviar el correo de notificación que se emite cuando se genera un documento electrónico con adjuntos
Declaración
INT EnvioCorreoAdjuntos (string URL, string tokenEmpresa, string tokenPassword, string documento, string correo, string adjunto, bool debugMode)
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String documento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento que se quiere reenviar).
String correo
Correo al cual se dese enviar el XML (AttachedDocument) y la Representación Gráfica Estándar si aplica.
String adjunto
Carácter que establece si el documento será reenviado con adjuntos. Valores posibles:
- “0” Realiza el reenvió del correo sin adjuntos
- “1” Realiza el reenvió del correo con los adjuntos almacenados durante la emisión del documento.
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método EnvioCorreoAdjuntos
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:
- código|mensaje|resultados.
'Nota:La dll también dispone del método EnvioCorreo, similar al anterior con la diferencia de que este no contiene el parámetro adjunto.
Método DescargarXML
Función que permite descargar el XML Fiscal de un documento emitido previamente (solo el documento electrónico Invoice, CreditNote y DebitNote). El archivo XML es creado en el directorio local de la aplicación.
Declaración
INT DescargarXML (string URL, string tokenEmpresa, string tokenPassword, string documento, bool debugMode))
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String documento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento que se quiere consultar).
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método DescargarXML
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:
código|mensaje|resultados.
Método DescargarPDF
Función que permite descargar la Representación Gráfica Estándar de un documento emitido previamente. El archivo PDF es creado en el directorio local de la aplicación.
Declaración
INT DescargarPDF (string URL, string tokenEmpresa, string tokenPassword, string documento, bool debugMode)
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String documento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento que se quiere consultar).
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método DescargarPDF
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:
código|mensaje|resultados.
@IMPORTANTE:
Si durante la emisión del documento (método Enviar) el parámetro adjuntos se asignó en “10” u “11”, la plataforma The Factory HKA - DFACTURE no generará representación gráfica (PDF) estándar, por lo tanto no se puede consumir éste método ya que el servicio arrojará un error indicando que NO existe PDF asociado, ya que se asume que la representación gráfica ha sido generada de manera local por el software de facturación (ERP).
Método GenerarContenedor
Función que permite descargar el XML AttachedDocument de un documento emitido previamente (Este archivo contiene el XML de un documento electrónico (Invoice, CreditNote ó DebitNote) y todos los eventos (ApplicationResponse) generados hasta la fecha). El archivo XML es creado en el directorio local de la aplicación.
Declaración
INT GenerarContenedor (string URL, string tokenEmpresa, string tokenPassword, string documento, bool debugMode)
String URLAdj
- URL del servicio de carga de Adjuntos (Sin ?wsdl).
String tokenEmpresa
- Token asignado por la plataforma de TFHKA.
String tokenPassword
- Token asignado por la plataforma de TFHKA.
String documento
Prefijo y consecutivo del Documento electrónico concatenado sin separadores (Documento que se quiere consultar).
String debugMode
Flag para indicar a la dll que registre el log de debug en pruebas.
Respuesta método GenerarContenedor
Las respuestas se darán en un archivo de texto plano con nombre hkafact21fresult con la siguiente estructura:
código|mensaje|Fecha|Hash|resultados.
Ejemplo Strings Método Enviar
* Url= http://demoemision21.thefactoryhka.com.co/ws/v1.0/Service.svc ' * TokenEmp='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' * TokenPas='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
GESTION DE STRINGS PARA PARAMETRO: datos_Cliente
- ID01="01|Cristche|1|Evardho|ParedesMarquina|746260|31|email@gmail.com|3185853106|SI|0812|CHEV DEV|Cristche Paredes|cliente importante|0|123123123|||||"
- ID01A = "01A|0|email1@thefactoryhka.com;email2@gmail.com|2019-07-31 13:01:01|Mensaje programadito||1235467|||||"
- ID01B = "01B|01|||||"
- ID01E = "01E|1|Cristche Paredes|746260|0|456456|FE1|31"
- ID01F = "01F|O-13|04|||||"
- ID01C = "01C|Fulano|Sutano|1|POXBOX01|Principal|Los Chaimas|Bogotá, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los :Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
- ID01D = "01D|Fulano|Sutano|1|POXBOX01|Principal|Los Chaimas|Bogotá, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los :Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
- datos_Cliente = ID01 + "%" + ID01A + "%" + ID01B + "%" + ID01E + "%" + ID01F + "%%" + ID01C + "%%" + ID01D
GESTION DE STRINGS PARA PARAMETRO: datos_factura
- datos_factura= " 02|01|CONSECUTIVO|RANGO-CAMPODESDE|2019-11-29 00:00:00|2019-10-29|COP|0.00|0.00|5980.00|7116.20|2||||0.00|10|0.00|5980.00|7116.20|0.00|1|"
- **datos_factura ="02|01|CONSECUTIVO|RANGO-CAMPODESDE|2019-11-29 00:00:00|2019-10-29|COP|0.00|0.00|5980.00|7116.20|2||||0.00|10|0.00|5980.00|7116.20|0.00|1|2" (Con el campo tipoSector)
GESTION DE STRINGS PARA PARAMETRO: anticAutorizado_CargDesc'
- ID02A = "02A|2019-07-21|2019-07-21|12:12:12|1|instruccion|||||" (No es obligatorio)
- ID02A = "02A|"
- ID02B = "02B|" (No es obligatorio para nada)
- ID02B = "02B|"
- ID02C = "02C|11|descripcion del descuento|0|100.00|1980.00|5.00|1|||||" (No es obligatorio)
- ID02C = "02C|"
- anticAutorizado_CargDesc = ID02A + "%%" + ID02B + "%%" + ID02C
GESTION DE STRINGS PARA PARAMETRO: CP_DR'
- ID02D = "02D||nota en codicion de pago|10|1|2019-07-31|1|1|100.00|50.00|150.00|2019-07-21|2019-07-31|10.00|90.00|111222333" (No es obligatorio)
- ID02D = "02D|"
- ID02E="02E|6|4|4191110db1f3c8060a4ce34e40c6ec6541ac1bd248264624bfe1b60fdf02aea7e15c5a49969cc08f498b938a9e3cd954|2019-07-29|2019-07-29|2019-07-29|PRUE21|CUFE-SHA384|Factura de Ventas|01|||||| || ¬02E1|descipcion documento referenciado" (Condicionado)
- ID02E="02E|5|4|4191110db1f3c8060a4ce34e40c6ec6541ac1bd248264624bfe1b60fdf02aea7e15c5a49969cc08f498b938a9e3cd954|2019-07-29|2019-07-29|2019-07-29|PRUE21|CUFE-SHA384|Factura de Ventas|01|||||Copago|100.00|900895784 (con los campos conceptoRecaudo,monto,numeroIdentificacion)
- ID02E = "02E|"
- CP_DR = ID02D + "%%" + ID02E
GESTION DE STRINGS PARA PARAMETRO: EntMerc
- ID02F = "02F|2019-06-27 11:32:30|2019-06-29 11:32:30|2019-07-01 11:32:30|2019-07-01 11:32:30|1|ABCD123|||||"
- ID02F1 = "02F1|mail@gmail.com|1|1|Fulanito Gonzales|Pedrito Perez|Mercancia delicada|800123456|2|QWERT|PRUE|123456789|3451269|31|Juan Lopez|40012365|1|13|||||"
- ID02F1A = "02F1A|01|||||"
- ID02F1B = "02F1B|ResponsableEntrega|Sutano|1|POXBOX01|Principal|Los Chaimas|BOGOTÁ, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
- ID02F1C = "02F1C|O-12|04|||||"
- ID02F1D = "02F1D|TransportadorDireccion|Sutano|1|POXBOX01|Principal|Los Chaimas|BOGOTÁ, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
- ID02F2 = "02F2|direccionDespacho|Sutano|1|POXBOX01|Principal|Los Chaimas|BOGOTÁ, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
- ID02F3 = "02F3|direccionEntrega|Sutano|1|POXBOX01|Principal|Los Chaimas|BOGOTÁ, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||%02F3A|4|74|41|4|N|O|"
- EntMerc = ID02F + "%%" + ID02F1 + "%%" + ID02F1A + "%%" + ID02F1B + "%%" + ID02F1C + "%%" + ID02F1D + "%%" + ID02F2 + "%%" + ID02F3
GESTION DE STRINGS PARA PARAMETRO: ImpuestosFactura
- ID02G = "02G|1980|01||19.00|KGM|94|376.20|0.00|||||"
- ID02H ="02H|01|1136.20|||||0.00"
- **ID02H ="02H|01|1136.20||||||" (sin el campo redondeoAplicado)
- ImpuestosFactura = ID02G + "%%" + ID02H
GESTION DE STRINGS PARA PARAMETRO: MPOCTE
- ID02J = "02J|3356|0312|123QBCV|2019-01-01|10|1|Bancolombia|Referencia de pago 1|22|982467|||||"
- ID02K = "02K|987654|2019-04-29 00:00:00|1233456|321456|CUFE-SHA384|1|85b5cfa4-16af-48a0-9388-501e519ed659|||||" (No es obligatorio)
- ID02K = "02K|"
- ID02N = "02N|CFR|100.00|200311301|100.00|cliente|||||" (Condicionado)
- ID02N = "02N|"
- MPOCTE = ID02J + "%%" + ID02K + "%%" + ID02N
GESTION DE STRINGS PARA PARAMETRO: TC_TCA_IA
- ID02L = "02L|0000001.00|0000001.00|2019-01-01|123456|USD|COP|Division|000000.50|||||" (Condicionado)
- ID02L = "02L|"
- 'ID02M = "02M|0000001.00|0000001.00|2019-01-01|123456|USD|COP|Division|000000.50|||||" (No es obligatorio)
- ID02M = "02M|"
- 'ID02I = "02I|Informacion Adicional de Pruebita" (No es obligatorio)
- ID02I = "02I|"
- TC_TCA_IA = ID02L + "%%" + ID02M + "%%" + ID02I
GESTION DE STRINGS PARA PARAMETRO: Extras
- Extras = "04|||443|1|pedro picapiedra|1"
GESTION DE STRINGS PARA PARAMETRO: DetalleDeFactura
- ID03 = "03|1|1|94|1|||ABC123||Productico de prueba 1|primer producto para enviar al web service|999|||123||||||||0||nota en el producto01||2356.20|1980.00|1980.00|1|||||94||||||descripcion2|descripcion3||" (sin el campo idEsquema)
- ID03 = "03|1|1|94|1|||ABC123||Productico de prueba 1|primer producto para enviar al web service|999|||123||||||||0||nota en el producto01||2356.20|1980.00|1980.00|1|||||94||||||descripcion2|descripcion3|1" (con el campo idEsquema)
- 'ID03A = "03A|00|descuento comercial 123456789|0|0.00|0.00|0.00|1|||||"(Descuento en el detalle)
- ID03C = "03C|1980.00|01||19.00|KGM|94|376.20||||||"
- ID03D = "03D|01|376.20|||||0.00"
- ID03E = "03E|03|24350| |2500000|1|WSD "
- 'DetalleDeFactura = ID03 + "$$" + ID03A + "$$" + ID03C + "$$" + ID03D + "$$" + ID03E (con Descuento Detalle)
- DetalleDeFactura = ID03 + "$$" + ID03C + "$$" + ID03D + "$$" + ID03E
GESTION DE STRINGS PARA PARAMETRO: SectorSalud
- ID06= "06|01|SS-CUFE|2"
- ID06A= "06A|Fulano|Sutano|1|POXBOX01|Principal|Los Chaimas|Bogotá, D.C.|11|-66.01|Bogotá|Soporte|Kr #71D 76-15|Los Andes|Principal|es|11001|Chaima|16a|78|CO|2|sur|parcela||111061|||||"
ID06B = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"
ID06B = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"
ID06B1 = "06B|1|CODIGO_PRESTADOR"+ "%" + "06B|2||" + "%" + "06B|3||" + "%" + "06B|4||" + "%" + "06B|5||"+ "%" + "06B|6||" + "%" + "06B|7||" + "%" + "06B|8||" + "%" + "06B|9|MODALIDAD_PAGO" + "%" + "06B|10|COBERTURA_PLAN_BENEFICIOS" + "%" + "06B|11||" + "%" + "06B|12||" + "%" + "06B|13||" + "%" + "06B|14|NUMERO_CONTRATO" + "%" + "06B|15|NUMERO_POLIZA" + "%" + "06B|16|COPAGO" + "%" + "06B|17|CUOTA_MODERADORA" + "%" + "06B|18||" + "%" + "06B|19|PAGOS_COMPARTIDOS"
Pacientes= ID06B + "¬" + ID06B1 ID06C = "06C|||5170000|1|100.50|1" SectorSalud= ID06 + "%" + ID06A + "%%" + Pacientes
Adjuntos= "0"
Enviar (url, tokenEmp, tokenPas, datos_Cliente, Factura_Global, Antic_Autorizado_CargDesc, CondPago_DocReferencia, Entrega_Mercancia, Impuestos_Factura, MedPago_OC_TermEntrega, TasaCamb_TasaCambAlt_InfAdic, Extras, Detalle_De_Factura, Adjuntos, SectorSalud, debugMode)
Ejemplo Strings Método EnviarArchivo
* Url= 'http://demoemision21.thefactoryhka.com.co/ws/adjuntos/Service.svc' * TokenEmp='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' * TokenPas='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
- Ndocumento = “PRUE1”
- Enviar = “1”
- Formato =”pdf”
- Nombre = “Adjunto”
- Tipo = “2”
- Email = “integracion_fel_co@thefactoryhka.com”
- Ruta = “C:\Adjunto.PDF”
Personalización del Correo
El arreglo “extras” también permite manejar algunas funcionalidades especiales de la plataforma, como la de correo electrónico personalizado mediante el uso de los campos extensibles 11, 13 y 14. Para obtener más detalles, referirse al MANUAL DE INTEGRACION DIRECTA (EMISIÓN - VAL. PREVIA) sección PERSONALIZACIÓN DEL CORREO
Generación De Notas Con Y Sin Referencia a Documentos
En el anexo técnico V1.8 se plantea la emisión de notas de crédito y débito bajo los siguientes escenarios:
- Emisión de notas de Val. previa con referencia a facturas de Val. Previa
- Emisión de notas de Val. previa con referencia a facturas de Val. Posterior
- Emisión de notas de Val. previa sin referencia
Para ello se debe tener en cuenta la estructura de la clase documentosReferenciados y el campo tipoOperación para cada escenarios. Para obtener más detalles, referirse al MANUAL DE INTEGRACION DIRECTA (EMISIÓN - VAL. PREVIA)] sección GENERACIÓN DE NOTAS CON Y SIN REFERENCIA A DOCUMENTOS donde se ejemplifica cada uno de estos casos.
Transmisión De Documentos De Contingencia Tipo 03
La transmisión de documentos de contingencia está sujeta a la estructura de la clase documentosReferenciados y el campo tipoDocumento. Este escenario junto con las condiciones en las cuales aplica y la respuesta obtenida por parte de la DIAN se especifican en el MANUAL DE INTEGRACION DIRECTA (EMISIÓN - VAL. PREVIA) sección TRANSMISIÓN DE DOCUMENTOS DE CONTINGENCIA TIPO 03 (ATRIBUIBLE AL EMISOR).
Radicar Documentos Electrónicos En Plataformas De Recepción
El XML que se debe radicar en las plataformas de recepción es el que envía nuestro servicio en la notificación de correo llamado AttachedDocument (Contenedor de Documentos), la estructura de este documento tiene por objetivo contener en un único archivo XML un documento electrónico (Invoice, CreditNote ó DebitNote) y todos los eventos (ApplicationResponse) registrados hasta la fecha, este XML también puede ser descargado a través del método GenerarContenedor.
La estructura de este archivo se ejemplifica en en el MANUAL DE INTEGRACION DIRECTA (EMISIÓN - VAL PREVIA) sección RADICAR DOCUMENTOS ELECTRÓNICOS EN PLATAFORMAS DE RECEPCIÓN
Ambiente De Habilitación
El ambiente de pruebas liberado (ambiente demo) corresponde a un entorno de pruebas propio del proveedor tecnológico (The Factory HKA) con el objetivo de que los desarrolladores y Casas de Software puedan realizar pruebas de los ajustes realizados a los ERP bajo el modelo de facturación con validación previa. Las pruebas realizadas en este ambiente NO serán enviadas al web service de habilitación de la DIAN.
Copyright © 2016 The Factory HKA. Todos los derechos reservados.