Pues ahora el programa validador del SAT (un applet de Java) para factura electrónica, invalida los archivos que emites y los que has emitido ya que busca que los archivos de XML tengan un BOM (Byte order mark) que especifica que el archivo está en UTF-8 y así pueda procesarlo.
Pero no entren en pánico, la solución es sencilla (BOM.pl):
#!/usr/bin/perl
#===================================================================#
# Program => BOM.pl (In Perl 5.0) version 0.0.1 #
#===================================================================#
# Autor => Fernando "El Pop" Romo (pop@cofradia.org) #
# Creation date => 11/jul/2011 #
#-------------------------------------------------------------------#
# Info => This program take a XML file and put a Byte order mark to #
# indicate UTF-8 is the encode of the data #
#-------------------------------------------------------------------#
# (c) 2011 - Fernando Romo #
#-------------------------------------------------------------------#
# Release under the GNU/GPL License v3.0 #
#===================================================================#
use UTF8BOM;
UTF8BOM->insert_into_file($ARGV[0]);
print "BOM en UTF8 $ARGV[0]\n";
Con este script en Perl usando el módulo de CPAN UTF8BOM solucionamos el problema. No necesitan re-hacer la factura solo hacer lo siguiente:
$ ./BOM.pl Fac_INC101109Q36_A0054_MCM960926B49_20110711.xml
BOM en UTF8 Fac_INC101109Q36_A0054_MCM960926B49_20110711.xml
Adicionalmente podemos usar un script en bash para corregir todas las facturas electrónicas en XML que esten en un directorio:
#!/bin/bash
for a in *.xml
do
./BOM.pl `echo $a`
done
y ya esta 🙂
Leave a Reply
You must be logged in to post a comment.