Como identificar facturas electrónicas de servicios de Uber

0
(0)

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





How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave a Reply