Como identificar facturas electrónicas de servicios de Uber

En mi empresa facturamos casi todo lo que podemos y no es la excepción que pidamos a Uber (servicio de transporte) estos documentos.

Pero el problema radica en que Uber no factura, si no los choferes. Uber no cuenta con un solo taxi y no da recibos fiscales en México, por lo que su sistema de facturación obliga a cada chofer a emitir el comprobante.

Esto hace complicado la clasificación contable de este servicio, por lo que hice un script rápido (uber.pl) en perl para analizar los comprobantes fiscales CFDI (Comprobantes Fiscales Digitales por Internet) en su formato XML.

#!/usr/bin/perl -w
 
use strict;
use XML::Simple;
use File::Basename;  # Parser filenames
use File::Find;      # Search in directories
 
my %config = (
    VC_recibidas  => '/Users/pop/SAT_XML/VOI120502IH3/recibidas',
    Uber_str      => 'SERVICIO PRIVADO DE TRANSPORTE CON CHOFER',
);
 
sub Concepto {
    my $ref_concepto  = shift;
    my $uber = 0;
    if (ref($$ref_concepto) eq 'ARRAY') {
        for (my $i=0; $i <= (@{ $$ref_concepto } - 1) ; $i++) { 
            $uber = 1 if($$ref_concepto->[$i]->{descripcion} =~ /$config{Uber_str}/);
        }
    }
    else {
        $uber = 1 if($$ref_concepto->{descripcion} =~ /$config{Uber_str}/);
    }
    return $uber;
}
 
sub proc_files {
    # Find the Filename, Directory, extension and Date
    my ($file,$dir,$ext) = fileparse($File::Find::name, qr/\..*/);
    # If the extension of the file is ".xml"  do rutine
    if ($ext eq '.xml') {
        my $Fac = XMLin("$file$ext");
        if ( ( exists($Fac->{'cfdi:Complemento'}{'tfd:TimbreFiscalDigital'}{UUID}) ) 
            && ( exists($Fac->{'cfdi:Emisor'}{rfc} ) )
            && ( $Fac->{'cfdi:Receptor'}{rfc} ne '' )
            && ( $Fac->{version} =~ '3.' ) ) {
            if (Concepto(\$Fac->{'cfdi:Conceptos'}{'cfdi:Concepto'})) {
                print "UBER $Fac->{'cfdi:Emisor'}{rfc} " . uc($Fac->{'cfdi:Complemento'}{'tfd:TimbreFiscalDigital'}{UUID}) . "\n";
            }
        }
    } 
}
 
$File::Find::prune = 1;
find(\&proc_files, $config{VC_recibidas});

Tengo los CFDI’s en XML en el path “/Users/pop/SAT_XML/VOI120502IH3/recibidas” y notamos que varias facturas decían la leyenda “SERVICIO PRIVADO DE TRANSPORTE CON CHOFER”.

Con estos datos el script de perl busca en el directorio los XML’s itera en los conceptos y busca el string en la descripción.

Con este encontré 177 facturas rápidamente. Aquí un ejemplo de lo que manda:

pop$ ./uber.pl 
UBER MUSA580819US4 0177DF4A-1DB6-4FC6-A652-732033F91CAF
UBER OURD830628L97 024CB729-A66B-425E-88BE-B36EF48904DF
UBER GAME950429GY4 0314D11F-F312-46A1-BB0C-08C75680CFE6
UBER OOMA750822822 0778866F-01A1-47F5-9423-974F05B68506

El script lo libero como GPL y úsenlo para clasificar sus facturas 🙂


Donación





Recomendado


New From: $8.00 USD In Stock

Recomendado


New From: $11.29 USD In Stock


0 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 50 votes, average: 0.00 out of 5 (0 votes, average: 0.00 out of 5)
You need to be a registered member to rate this post.
Loading...
Perl, Programacion | RSS 2.0 |     303 views

RSS feed

Comments »

No comments yet.

Name (required)
E-mail (required - never shown publicly)
URI
Your Comment (smaller size | larger size)
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> in your comment.

Trackback responses to this post