Cette version est devenue obsolète; Pour implémenter la signature de la version de validation précédente, utilisez le module efacturacolombia_v2.v2 .
Efacturacolombie. Il s'agit d'une librairie non officielle développée en C #, qui permet des documents XML (factures et billets de débit) qui sont présentés au Dian de Colombie pour le processus de facturation électronique.
Depuis le 1er janvier 2019, la facturation électronique pour les contribuables en Colombie sera obligatoire, et actuellement de nombreuses entreprises et personnes obligatoires ne l'ont pas mis en œuvre.
Bien que les informations techniques fournies par le Dian soient suffisantes, la recherche de ressources .NET pour ce processus s'avère assez difficile. La génération de documents XML et de services Web peut être laborieuse mais peut être fait sans inconvénient, mais l'entreprise requise par le Dian peut être extrêmement difficile à faire, au point d'être nécessaire d'acquérir des solutions coûteuses.
Cette librairie est publiée dans le but de faciliter la mise en œuvre sur les plates-formes .NET.
Afin de générer, de signer et d'émettre des documents électroniques (factures et billets de débit / crédit) avant le Dian, les exigences suivantes doivent être remplies:
Pour plus d'informations, consultez les ressources disponibles dans Dian - facturation électronique.
La classe FirmaElectronica contient une méthode simple (en trois variantes) pour signer les documents électroniques, qui renvoie le tableau des octets résultant:
using eFacturacionColombia ;
using eFacturacionColombia . Firma ;
// crear instancia
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here"
} ;
// usar horario colombiano
var fecha = DateTimeHelper . GetColombianDate ( ) ;
// variante 1:
// firmar archivo
var archivoXml = new FileInfo ( "path/to/unsigned-factura.xml" ) ;
var bytesArchivoFirmado = firma . Firmar ( archivoXml , TipoDocumento . FACTURA , fecha ) ;
// variante 2:
// firmar contenido
var contenidoXml = "<?xml ..." ;
var bytesContenidoFirmado = firma . Firmar ( contenidoXml , TipoDocumento . FACTURA , fecha ) ;
// variante 3:
// firmar bytes
var bytesXml = new byte [ 13042 ] ;
var bytesXmlFirmado = firma . Firmar ( bytesXml , TipoDocumento . FACTURA , fecha ) ;
// guardar xml (opcional)
File . WriteAllBytes ( "path/to/signed-factura.xml" , bytesXmlFirmado ) ;Si la validation technique de l'entreprise génère l'erreur suivante (à partir du service Web):
com.indra.mmdd.signature.exceptions.ValidateException: xades4j.verification.CertRefUtils$1: Verification failed for property 'SigningCertificate': Invalid issue name
Cela signifie que le certificateissuername - généré par la bibliothèque - de l'entreprise n'est pas valide, dans ce cas, la demande du fournisseur du certificat la chaîne valide et l'attribue manuellement à l'aide de la propriété EmisorCertificado de la classe FirmaElectronica :
var firma = new FirmaElectronica
{
RolFirmante = RolFirmante . FACTURANTE ,
RutaCertificado = "path/to/certificate.p12" ,
ClaveCertificado = "password here" ,
EmisorCertificado = "C=CO,L=Bogota D.C.,O=..."
} ; Remarque: Le processus résultant ne doit pas être modifié (les transmettre à un autre codage ou les charger dans un XmlDocument ) avant de les enregistrer ou de les comprimer pour les envoyer au Dian car ils invalideront l'entreprise.
Ce projet utilise les librairies suivantes:
Bien que ce référentiel ne provienne pas de la contribution ouverte , il peut être contribué:
Miguel Huertas [email protected]
Examiner les détails dans les archives de baccalauréat.
L'auteur de ce projet, pour des raisons de temps, ne fournira pas le soutien de la mise en œuvre à moins que ce soit quelque chose de simple (sans être obligé).
D'un autre côté, l'auteur de ce projet met à votre disposition une solution de paiement .NET pour l'ensemble du processus de facturation électronique ainsi que des conseils pour sa mise en œuvre .