bigdata-mx / factura-electronica

Librería de componentes Java para el desarrollo de aplicaciones de Factura Electrónica (CFDI)
Apache License 2.0
94 stars 107 forks source link

Validar que el CFDi ha sido entregado a SAT. #59

Open elmer-garduno opened 12 years ago

elmer-garduno commented 12 years ago

Original author: jcaflori...@gmail.com (June 12, 2012 03:00:46)

BigData, ¿de qué forma se podría validar si el CFDi ya ha sido entregado a SAT?, de forma que se pueda validar el UUID.

Saludos.

Original issue: http://code.google.com/p/factura-electronica/issues/detail?id=59

JhovGon commented 10 years ago

Hola MarcooValle por correo no hay problema jhovgon@outlook.com

marcoovalle commented 10 years ago

Olvídalo, no sé usar GitHub para subir el proyecto... Te lo mando por correo. Confirma de que te llegó. Saludos

rbemmanuel commented 10 years ago

Que tal @marcoovalle, yo tambien estoy interesado en el código, ¿podrías enviarmelo tambien?, Saludos!

marcoovalle commented 10 years ago

Se tiene una clase llamada: VerificaCFDI.cs que es la que hace todo el trabajo. Esta clase hace una llamada al WebService del SAT. Aclaro que para propósitos de debug, no funciona en la linea ( oAcuse = oConsulta.Consulta(sCadena); ) que hace la llamada al SAT, debido a que (creo yo) el SAT no tiene el acceso remoto habilitado para debug. Si alguien sabe mejor esto, favor de complementar esto. Por lo demás, si se corre sin debug y funciona muy bien... =D No explico como se hace una conexión al WebService, porque ya existen varios tutoriales en google.

Archivo:

VerificaCFDI.cs

using System;
using System.Collections.Generic;
using System.Web;

/// <summary>
/// Descripción breve de VerificaCFDI
/// </summary>
public class VerificaCFDI
{
  string sCadena;
  string sCodigoEstatus;
  string sEstado;

  public VerificaCFDI(string sCadena)
  {
    //
    // TODO: Agregar aquí la lógica del constructor
    //
    this.sCadena = sCadena;

    // CONSULTA EL WEBSERVICE
    ConsultaCFDI.Acuse oAcuse = new ConsultaCFDI.Acuse();
    ConsultaCFDI.ConsultaCFDIServiceClient oConsulta = new ConsultaCFDI.ConsultaCFDIServiceClient();
    oAcuse = oConsulta.Consulta(sCadena);
    sCodigoEstatus = oAcuse.CodigoEstatus.ToString();
    sEstado = oAcuse.Estado.ToString();
  }
  public string CodigoEstatus
  {
    get
    {
      return sCodigoEstatus;
    }
    set
    {
      sCodigoEstatus = value;
    }
  }
  public string Estado
  {
    get
    {
      return sEstado;
    }
    set
    {
      sEstado = value;
    }
  }
}

La factura que emite el proveedor es un archivo XML que tiene que ser leído tanto en sus nodos como en sus propiedades. El procedimiento abajo lee este archivo XML, compara los montos y accesa a la clase que consulta al SAT y regresa los datos error o solo un OK.

sValida_XML_SAT_Y_Pesos

  protected string sValida_XML_SAT_Y_Pesos(string pRuta_Archivos)
  {
    string sComprobante_Total = string.Empty;
    string sEmisor_RFC = string.Empty;
    string sReceptor_RFC = string.Empty;
    string sUUID = string.Empty;
    decimal nMontoFactura = 0;

    string sResultado = "OK";
    try
    {
      // SACA EL MONTO DE LA FACTURA
      nMontoFactura = Convert.ToDecimal(Session["MontoFactura"].ToString());

      // LEE XML PARA OBTENER LOS DATOS
      XmlDocument oXDoc = new XmlDocument();
      oXDoc.Load(pRuta_Archivos);

      XmlNamespaceManager oNameSpaceMgr = new XmlNamespaceManager(oXDoc.NameTable);
      oNameSpaceMgr.AddNamespace("cfdi", "http://www.sat.gob.mx/cfd/3");
      oNameSpaceMgr.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");

      // SE RECORREN TODOS LOS ATRIBUTOS DEL NODO: Comprobante
      XmlNode oNodoComprobante = oXDoc.SelectSingleNode("/cfdi:Comprobante", oNameSpaceMgr);
      if (oNodoComprobante.Attributes != null)
        foreach (XmlAttribute oAtributo in oNodoComprobante.Attributes)
          if (oAtributo.Name == "total")
            sComprobante_Total = oAtributo.Value;

      // SE RECORREN TODOS LOS ATRIBUTOS DEL NODO: TimbreFiscalDigital
      XmlNode oNodoTimbreFiscal = oXDoc.SelectSingleNode("/cfdi:Comprobante/cfdi:Complemento/tfd:TimbreFiscalDigital", oNameSpaceMgr);
      if (oNodoTimbreFiscal.Attributes != null)
        foreach (XmlAttribute oAtributo in oNodoTimbreFiscal.Attributes)
          if (oAtributo.Name == "UUID")
            sUUID = oAtributo.Value;

      // SE RECORREN TODOS LOS ATRIBUTOS DEL NODO: Emisor
      XmlNode oNodoEmisor = oXDoc.SelectSingleNode("/cfdi:Comprobante/cfdi:Emisor", oNameSpaceMgr);
      if (oNodoEmisor.Attributes != null)
        foreach (XmlAttribute oAtributo in oNodoEmisor.Attributes)
          if (oAtributo.Name == "rfc")
            sEmisor_RFC = oAtributo.Value;

      // SE RECORREN TODOS LOS ATRIBUTOS DEL NODO: Receptor
      XmlNode oNodoReceptor = oXDoc.SelectSingleNode("/cfdi:Comprobante/cfdi:Receptor", oNameSpaceMgr);
      if (oNodoReceptor.Attributes != null)
        foreach (XmlAttribute oAtributo in oNodoReceptor.Attributes)
          if (oAtributo.Name == "rfc")
            sReceptor_RFC = oAtributo.Value;

      if (nMontoFactura != Convert.ToDecimal(sComprobante_Total))
        sResultado = "Error en la factura. Los totales no coinciden: " + nMontoFactura + ".  Factura que se sube: " + sComprobante_Total;
      else
      {
        /////////////////////////////////////////////////////////////////////////////////////////////////
        // VERIFICA QUE LA FACTURA ESTÉ TODAVÍA VIGENTE, CHECA SOBRE SAT.
        // EJEMPLO: ?re=GIM921022NC3&rr=MSF700212ASE&tt=70024.00&id=D7EE50A7-8A8D-4E46-978B-2657C1186FB6
        /////////////////////////////////////////////////////////////////////////////////////////////////
        VerificaCFDI oVerificaCFDI = new VerificaCFDI("?re=" + sEmisor_RFC + "&rr=" + sReceptor_RFC + "&tt=" + sComprobante_Total + "&id=" + sUUID + "");
        string sCodigoEstatus = oVerificaCFDI.CodigoEstatus.Trim();
        string sEstado = oVerificaCFDI.Estado.Trim();

        string sEstatus_OK = "S - Comprobante obtenido satisfactoriamente";
        string sEstado_OK = "Vigente";
        string sError_1 = " Error en factura. Factura Inválida o Cancelada. No se envió al Sistema. ";

        if (!sCodigoEstatus.ToLower().Contains(sEstatus_OK.ToString().ToLower()))
          sResultado = sError_1 + sCodigoEstatus  ;

        if(!sEstado.ToLower().Contains(sEstado_OK.ToString().ToLower()))
          sResultado += " " + sEstado;
      }
    }
    catch (Exception ex)
    {
      string sMensaje = ex.Message.ToString();
      sResultado = "Error.  " + sMensaje;
    }
    return sResultado;
  }

Gracias a todos los de arriba por ayudarme a sacar este proyecto; y también tómense el tiempo de agradecer todos los que vayan a usar este código. Saludos marcoovalle

gsantoshgmx commented 10 years ago

muchas gracias por compartir, saludos!

rbemmanuel commented 10 years ago

Gracias por compartir, Saludos!

masterkratos commented 10 years ago

Muchas gracias por compartir @marcoovalle

andresbe commented 10 years ago

Hola disculpen,de casualidad no sabra alguien si hay algun servicio como este, pero solamente para conocer el estatus de un certificado (.cer) ? se los agradeceria mucho .Saludos!

marcoovalle commented 10 years ago

Nop; y no sabía que se podía validar un certificado (.cer) que el mismo SAT proporciona... ¿Alguien?...

andresbe commented 10 years ago

por ahora la unica opcion que tengo es la de bajar los archivitos del ftp://ftp2.sat.gob.mx/agti_servicio_ftp/verifica_comprobante_ftp/ donde tengo que estar bajando los archivitos de LCO todos los dias y c/u pesa como 400 mb :s y se requiere mucho tiempo para estarlos descargando, actualizarlos en una base de datos y de ahi ver el estatus del certificado, :s

jorgenaranjoVauxoo commented 10 years ago

http://solucionfactible.com/sfic/capitulos/timbrado/CSD.jsp

Ellos tienen ese servicio pero desconozco la url del webservices a donde se conecten para extraer esa información.

Si saben de esa url se los agradecería

betocaballo commented 9 years ago

hola marcovalle disculpe la molestia estoy tratando de validar los CFDI ante el SAT estoy probando el código que publico pero me marca error me podría mandar el código ami correo para verificarlo por favor .

caba_gallo.01@hotmail.com este es mi correo espero y me pueda ayudar gracias....saludos

marcoovalle commented 9 years ago

Ok ... Y que tipo de error te marca?

El sábado, 13 de diciembre de 2014, betocaballo notifications@github.com escribió:

hola marcovalle disculpe la molestia estoy tratando de validar los CFDI ante el SAT estoy probando el código que publico pero me marca error me podría mandar el código ami correo para verificarlo por favor .

caba_gallo.01@hotmail.com javascript:_e(%7B%7D,'cvml','caba_gallo.01@hotmail.com'); este es mi correo espero y me pueda ayudar gracias....saludos

— Reply to this email directly or view it on GitHub https://github.com/bigdata-mx/factura-electronica/issues/59#issuecomment-66901898 .

Saludos cordiales,

_Ing. Marco Enrique Ovalle Núñez_marco.ovalle@gmail.com

marco.ovalle@gmail.com

www.cci.org.mx www.cci-world.org www.richardhays.com www.itlvc.org.mx www.profetas.org.mx www.unadosisdiaria.com www.oremospormexico.org www.interadio.org www.myspace.com/ccimedios www.youtube.com/pmelendez77

betocaballo commented 9 years ago

disculpe es que soy nuevo en lo de servicios web me marca error en esta parte del código que le muestro solamente en la parte donde dice ConsultaCFDI

// CONSULTA EL WEBSERVICE ConsultaCFDI.Acuse oAcuse = new ConsultaCFDI.Acuse (); ConsultaCFDI.ConsultaCFDIServiceClient oConsulta = new ConsultaCFDI.ConsultaCFDIServiceClient (); oAcuse = oConsulta.Consulta (sCadena); sCodigoEstatus = oAcuse.CodigoEstatus.ToString (); sEstado = oAcuse.Estado.ToString ();

esto es lo que me dice el error la llama tipo nameespace ConsultaCFDI no se pudo encontrar (¿falta una directiva using o una referencia de ensamblado.

lo que ice fue crear mi proyecto en Visual Studio con c# le puse como nombre VerificaCFDI después agregue la referencia y le puse como nombre ConsultaCFDIServiceClient.

otra pregunta los dos códigos que publica se meten en un solo proyecto o son separados disculpe espero y me entienda saludos...

Jerohan commented 9 years ago

betocaballo, un ejemplo de como quedaria la cadena y las importaciones.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ValidaCFDI.ConsultaCFDISat;

namespace ValidaCFDI { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

    private void btnConsulta_Click(object sender, EventArgs e)
    {

        ValidaCFDI.ConsultaCFDISat.Acuse acuse= new Acuse();
        ValidaCFDI.ConsultaCFDISat.ConsultaCFDIServiceClient cliente = new ConsultaCFDIServiceClient();
        acuse = cliente.Consulta("?re=BNM840515VB1&rr=CPE840918UU7&tt=348&id=4083AD8C-65F6-42D6-A91F-D9B1DBBAD7FE");

        MessageBox.Show(acuse.CodigoEstatus + " - " + acuse.Estado + " -  " + acuse.ExtensionData.ToString() + " - " + acuse.ToString(), "ooks");

        cliente.Open();

    }
}

}

Jerohan commented 9 years ago

He notado que algunos PAC's, están ofreciendo utilerias gratuitas, para descargar los XMLS's Recibidos y Emitidos?, alguien sabe si existe algún webservice que haga esto.

Por medio de mi firewall, he notado que se conecta en la siguiente dirección : cfdiau.sat.gob.mx

Antes de a aplicar un poco de ingeniería inversa, ¿si alguien sabe, donde obtienen los archivos?.

Saludos.

marcoovalle commented 9 years ago

Nop, yo solo pruebo que los XML sean válidos. Por otro lado, sería bueno ( si pudieras enseñarnos y ) conocer tus métodos de ingen-ieria in-vers-a.... Por aquello de... geeks... amaestrados y dominados por la tecnología .... ejejejje... !!!... =D Saludos.

gerardoDelarosa commented 9 years ago

Hola Jerohan Hace unos dias descargue un programa que hace la descarga de los xml recibidos, lo que pude notar es que dentro de este programa abre una windowsForm con la pagina del SAT:

https://cfdiau.sat.gob.mx/nidp/wsfed/ep?id=SATx509Custom&sid=0&option=credential&sid=0

Posteriormente el usuario ingresa con su FIEL o en su defecto con su SIEC, posteriormente te vas al apartado de comprobantes recibidos o enviados, en este caso el que nos interesaria seria recibidos.

Hice la prueba y seleccione un mes y desde la aplicacion tiene un boton que dice descargar CFDi, por lo que pude observar es que el programa intercepta los links de la pagina del sat y despues los invoca para descargar los xml, como soy muy novato no encuentro la forma de hacerlo.

Aclaro todo esto es desde un windowsForm (el abrir la direccion del SAT que les menciono y el boton de descarga) ya que si ingresamos a la direccion que les di desde el navegador y nos logueamos, solo nos permite bajar de uno en uno los comprobantes y lo que hizo el desarrollador de este programa, pues se me hace interesante, tambien creo que el desarrollo esta hecho en Java.

Pues vien queda el comentqario al aire a ver si entre todos podemos hacer el desarrollo.

Gracias

gerardoDelarosa commented 9 years ago

Hola Jerohan

Avanzando en la descarga masiva

Estos son los divid que se generan despues de la consulta en la pagina del SAT

div id="DivPaginas" style="height: auto;" 'estos son por cada pagina de consulta div class="pgActual" id="masivapg0" table tbody tr td div style="width: 100px; text-align: center; vertical-align: middle; display: block;"

          'Si observas estos son los links de descarga, o sea que desde programacion se tiene que interceptar todos estos links
          img name="BtnVerDetalle" width="25" height="25" title="Ver detalle" class="BtnVerDetalle" id="BtnVerDetalle" style="cursor: pointer;" onclick="AccionCfdi('Detalle.aspx?Datos=sdZSP9crZEMWf5J0bKKx1xMfW6/1MRViZtfFpyg3EVnX92w9wptR2N30Dww6WaxCvPiDulAh0Q+/pUGF/EMxNIaXIDkxwErniBCXVjTKwEJoL6BgDV7FdwrjG2q4vPz3TkX3Z3f5C/wiOZ9CyeCFQChGPIXe0jF6HjM5oG6545u4XfHRlPNwQHqgkzFBvR5pxKZBxc0tt/W13Xg1VQvFh/gSAit2UegGrq12oCOEKT79LMU0nur2ZJ0W3JrN4U28JqnztzIXx6ZmNBiM04oDgVjKgAuBgDbR2lrRmjuS8wf8ewxUvvysVy5eRzsRvQouCnXARtz0qD5u5ylVRiqJgHYiOfF5XKieow5WuoBkWet09pB/yubID3s/R95j8J7YEtQ33UiExH3NQWKQHZl4U4WEWdLUUSZnH09KgM+dcalrVybvNf0pYdgDZIic7k1HH6+tqe12ycjEt1NEl+lPJ14hwuqxekAKT64ZUATE3nFm31pvkeyEdABvQpKSu4ug','Detalle');" src="Images/Sitemap - Flowchart.png"/
          img name="BtnDescarga" width="25" height="25" title="Descargar" class="BtnDescarga" id="BtnDescarga" style="cursor: pointer;" onclick="return AccionCfdi('RecuperaCfdi.aspx?Datos=IdbAUxv9lbK+z7edNrOmcXOfN+rtkWII1VdhOQoSpugeTyzyfceTgQq9pt+dUl4sgaMcku6qXX/SztpJhesU/wRq0RdfLXwIX0XgFZR2k4rlCeN2PameVgZ/EJoDqvnKM7vzgl7b5Unf8Pym+tEyIid3l6AC2EjDq/oXZF7GFGUtiHzp77oAT4xcYjAhpvpHybPAmH94nP8L6rRaCVY+EbuO8U1GXhe4KIR/lk9ulZqsT/OquvpadtMyhOoiDO5Z4pTTbDR9/Do4Ta1vgy6uq3DytSl3avNnSsKxgfI6gH0U2NaH5fhsdC7wVGY4aRVxh/BQ4/4LURpX0tIB/MdAC9XMaT8d9cb5X6lQHTyUyFdXeHnGC0QmphEITDnZqifvE71cfkgTctvuTz7uwBNwUWfQXHgRWEzTDFcQeDPKdm8DiaXcsPMjJTlrebf7C41oCwuzXbQ3BgZimEfjBxDH6vUEc4uLnqI6+gQnR90QDUA=','Recuperacion');" src="Images/World-download.png"/

div class="pgOculta" id="masivapg1" div class="pgOculta" id="masivapg2"

Como se podra hacer para leerlos y descargarlos automaticamante??????

Saludos a todos y seguimos investigando

gerardoDelarosa commented 9 years ago

Buenas a todos

Por fin pude hacer la descarga

codigo VB

  1. Creamos un Formulario con WebBrowser
  2. Le damos la siguiente direccion: https://cfdiau.sat.gob.mx/nidp/app/login?id=SATUPCFDiCon&sid=1&option=credential&sid=0 Nos solicita FIEL y CLAVE o bien si cambiamos el ultimo parametro "sid=1" lo podemos hacer por la CIEC
  3. Seleccionamos la opcion de Recibido
  4. Creamos el filtro y filtramos
  5. Creamos un HtmlDocument desde el WebBrowser.Dcoument 'Para leer en texto
  6. Creamos un HtmlElementCollection con los elementos de tipo imagen HtmlDocument.Images
  7. Recorremos todos los elementos de la coleccion por cada Elemento as HtmlElement in htmlCollection y solo seleccionamos los que en la etiqueta id tengan "BtnDescarga" despues seleccionamos el contenido del evento onclik algo asi como "RecuperaCfdi.aspx?Datos=Q+9v6QYXY..........." a esto le concatenamos al principio con: "https://portalcfdi.facturaelectronica.sat.gob.mx/"

    para que quede: "https://portalcfdi.facturaelectronica.sat.gob.mx/RecuperaCfdi.aspx?Datos=Q+9v6QYXY..........." ' esto nos servira despues para el WebClient

creamos un WebClient wc as new webClient Headers.Add(HttpRequestHeader.Cookie, webbrowser.data.cookie) wc.DownloadFile(la cadena que generamos anteriormente, ruta y nombre donde descargamos)

Listo a bajar los xml de la pagina del SAT

genioDominguez commented 9 years ago

Gerardo una pregunta,

¿cómo extraes la cookie para agregarla al encabezado?

gerardoDelarosa commented 9 years ago

Buenas Genio

Visita este link, ya que aquí no puedo poner código. http://www.lawebdelprogramador.com/foros/Visual-Basic.NET/1478397-Descarga-Masiva-XML-SAT.html

Saludos

genioDominguez commented 9 years ago

Gracias Gerardo !!!!

muy buen aporte te comparto mi aplicación como quedo por si le quieres echar un vistazo

http://erpdoz.com/herramientas/descarga-masiva-de-xml-del-sat/

Saludos

marcoovalle commented 9 years ago

Gracias genioDominguez... perooooo.... sería bueno si también compartieras el código; y si es en C#, mucho mejor.

Saludos.

gerardoDelarosa commented 9 years ago

hola marco

Visita el link que poste

http://www.lawebdelprogramador.com/foros/Visual-Basic.NET/1478397-Descarga-Masiva-XML-SAT.html

y veras que tambien alguien compartio primero en C# de ahi fue como se paso a VB.

Ahora el problema es que solo te permite descargar hasta 500 si son mas tienes que hacerlo por bloques, pero si se puede ya que por ahi alguien comenta que puede bajar mas de 500, solo que son de las personas que no comparten, si alguien sabe como bajar mas de 500 que comparta.

saludos GRC

gerardoDelarosa commented 9 years ago

hola genio

Trate de descargar tu aplicacion, pero no funciona la descarga se rompe al momento de iniciar, enviamela por correo para revisarla y comentame si pudiste bajar mas de 500

Saludos GRC

genioDominguez commented 9 years ago

en la noche lo subo a mi git

gerardoDelarosa commented 9 years ago

Buenas a todos

Alguien ya puede bajar mas de 500 comprobantes en una sola descarga

Por favor compartan

Jerohan commented 9 years ago

Buenas, hablando sobre la contabilidad Electrónica (y cambiando un poco el tema), He publicado una aplicación ,que genera los catálogos de cuentas y balanza de comprobación desde un layout de excel, esto lo publico para los que les interese ver como se generan los xml ,estructura y namespaces, que actualmente esta aceptando el validador del sat https://ceportalvalidacionprod.clouda.sat.gob.mx/ , que por cierto solo me funciona en Chrome.

El ejemplo lo pueden encontrar en : http://jer-jero.blogspot.mx/2015/03/generar-xml-de-excel.html

JNajera commented 9 years ago

Hola a todos, de casualidad alguien sabe de algún Web Service para obtener la razón social a partir de un RFC. Saludos JN

RodolfoReyes commented 9 years ago

Que tal.

Por si a alguien le interesa , encontré en internet una librería que permite integrar a tu desarrollo la descarga masiva, directamente de los servidores del SAT, de los comprobantes que emites o recibes, funciona para diferentes lenguajes de programación, http://www.facturando.mx/productos/libreria-descargar-cfdi-sat/ espero les sirva, es fácil de integrar y funciona sin problema.

Con ella no solo verificas la existencia de las facturas al realizar la consulta, sino también descargas los XML y en su caso el acuse de cancelación de los comprobantes que tengan éste estado.

Saludos

marcoovalle commented 9 years ago

RodolfoReyes, muchas gracias... Descargando... :)

ghost commented 9 years ago

Los invitamos mejor a unirse al desarrollo de la nuestra, que es software libre: https://github.com/LinuxCabal/admin-cfdi

Saludos

ouisho commented 9 years ago

Muchas gracias, ya pude hacer la implementación en C#, no sabia que el valor expresionimpresa era el contenido del código de barras del CFDI.

IvanRedOmen commented 9 years ago

Que tal, una duda, saben cuales son los web services que permitan descargar los XML's del contribuyente y que datos requiere para hacerlo?? y aparte si pueden generar el PDF del CFDI?

mariana-madrigal commented 9 years ago

Preguntas: ¿cuánto demoran los CFD.txt t FoliosCFD.txt en descargar? Además, alguna idea de porque algunas veces me accesa al FTP sin problemas y otras me envia el error 505?

ftp://ftp2.sat.gob.mx/agti_ftp/cfds_ftp/CSD.txt ftp://ftp2.sat.gob.mx/agti_ftp/cfds_ftp/FoliosCFD.txt ftp://ftp2.sat.gob.mx/agti_servicio_ftp/verifica_comprobante_ftp/CSD.txt ftp://ftp2.sat.gob.mx/agti_servicio_ftp/verifica_comprobante_ftp/FoliosCFD.txt

Esos links son los que uso, principalmente el primero, pero aún así.

gerardoDelarosa commented 9 years ago

Que tal Rodolfo Reyes

Quien te garantiza que esa libreria no tomara tus datos para hacer mal uso (si ingresas con tu fiel o con tu CIEC)

Coincido con Mauricio Baeza es mejor integrarte a un proyecto y tener tu la certeza de que no te robaran nada.

IvanRedOmen No se de algun webservice que te permita descargar las XML de los CFDI's, por eso se estan haciendo varios proyectos dentro de la red para hacer lo que mencionas.

http://www.lawebdelprogramador.com/foros/Visual-Basic.NET/1478397-Descarga-Masiva-XML-SAT.html#i1501252

Pero si sabes de alguno pues compartelo.

kochas40 commented 9 years ago

Buenas tardes a todos. He podido llamar al web service alojado en https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl

Alguien sabe como puedo saber la fecha en que fue cancelado un CFDI?

De antemano muchas gracias.

Saludos

mariana-madrigal commented 9 years ago

Buen día a todos,

La fecha de cancelación la puedes obtener cuando realizas la validación.

Saludos,

Date: Tue, 28 Jul 2015 10:26:51 -0700 From: notifications@github.com To: factura-electronica@noreply.github.com CC: mariana_madrigal@hotmail.com Subject: Re: [factura-electronica] Validar que el CFDi ha sido entregado a SAT. (#59)

Buenas tardes a todos.

He podido llamar al web service alojado en https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl

Alguien sabe como puedo saber la fecha en que fue cancelado un CFDI?

De antemano muchas gracias.

Saludos

— Reply to this email directly or view it on GitHub.

GerardoGarciaR commented 9 years ago

Disculpen mi grado de novatez, Ya cree el archivo Py que sugieren para validar la factura ante el SAT.

luego le asigné permisos de ejecución: chmod 777 validar.py

Y luego lo ejecuté, y esto me arroja: Non-ASCII character '\xe2' in file ./validar.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

En que estoy mal?

Este es el contenido de validar.py:

!/usr/bin/env python

import base64
from suds.client import Client
url = 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl'
client = Client(url) print client.service.Consulta(""""?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075""")

ghost commented 9 years ago

Todo script python se ejecuta:

python script.py

o si es python3, en algunos sistemas ya es el predeterminado

python3 script.py

o, si esta bien configurado y tiene permisos de ejecución

./script.py

pero... yo no veo el archivo que mencionas...

Saludos

amartin3z commented 9 years ago

Amigo @GerardoGarciaR checa la codificacion de tu archivo, intenta establecer la misma en tu script, en la cabecera o primera linea del codigo # - encoding: utf-8 - Ademas en tu script se te ha ido unas comillas dobles de más, (""""?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075""")

GerardoGarciaR commented 9 years ago

Gracias @amartin3z, he modificado mi archivo, quedando asi de este modo:

- encoding: utf-8 -

!/usr/bin/env python

import base64
from suds.client import Client
url = 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl'
client = Client(url) print client.service.Consulta(""""?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075""")

Lo guardè como validar.py ,con codificaction UTF-8 y le asigné permisos de ejecución con chmod 777.

Ahora en vez de error 3, me manda error 9, esto es lo que dice: python3 validar.py File "validar.py", line 9 print client.service.Consulta(""""?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075""") ^ SyntaxError: invalid syntax

amartin3z commented 9 years ago

@GerardoGarciaR tienes comillas dobles de mas amigo en tu script, en el metodo que llama al webservice. si lo tienes todo en una linea utiliza una comilla simple, o una comilla doble. "?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075"

ghost commented 9 years ago

Que yo sepa suds no tiene soporte para Python3, usa request como lo hacemos aquí: https://github.com/LinuxCabal/admin-cfdi/blob/develop/admincfdi/pyutil.py#L72

GerardoGarciaR commented 9 years ago

Le quité las comillas, dejandolo así: print client.service.Consulta("?re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075") y aun asi me da "sintaxis invalida"

amartin3z commented 9 years ago

Checa tu codigo amigo @GerardoGarciaR reescribiendolo, o bien prueba con el de @mauriciobaeza

papipiss commented 9 years ago

les comparto un post donde podran validar si el CSD con el que intentan sellar esta vigente ante el SAT, espero sea de su ayuda http://voleos.com.mx/web-service-consulta-estado-actual-del-csd-con-php/

kochas40 commented 8 years ago

Buenas tardes a Todos.

Al consumir el web service alojado en https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl , en algunas ocasiones no me responde y mi sistema se queda esperando una respuesta, pero esta nunca llega.

Como puedo asignar un tiempo de espera?

Mi implementacion es en Java, el codigo es el siguinte: // //Aqui mando llamar el metodo Acuse ac = consulta(expresion);

//Este es mi metodo private static org.datacontract.schemas._2004._07.sat_cfdi_negocio_consultacfdi.Acuse consulta(java.lang.String expresionImpresa) { org.tempuri.ConsultaCFDIService service = new org.tempuri.ConsultaCFDIService(); org.tempuri.IConsultaCFDIService port = service.getBasicHttpBindingIConsultaCFDIService(); return port.consulta(expresionImpresa); }

Lo que necesito es asignarle un tiempo de espera (creo que con 30 segundos estaria bien), para que al pasar ese tiempo termine y no se quede esperando indefinidamente.

Alguien me puede indicar si esto es posible, y de que forma seria por favor?

Mi proyecto lo tengo en netbeans.

De entemano muchas gracias Saludos

voldemortkein commented 8 years ago

Hola Gerardo de la Rosa, veo que obtienes las propiedades del elemento "onclick" de la imagen del botón de descarga de cada cfdi para hacer la descarga masiva.

tu utilizas VB.net con la clase HTMLElement Collection. pero yo estoy usando javascript. porque veo que javascript también tiene clases para obtener elementos del código web.

cuando busco por clase así: window.status= document.getElementsByClassName("masivapg0");" obtengo el siguiente resultado: [Object Node List]

y cuando busco por id así: window.status= document.getElementById(""masivapg0"");") obtengo lo siguiente: [HTMLDIVElement].

Sabes como podría capturar correctamente con javascript el valor del link, para después recorrerlos con un bucle y almacenarlos a una matriz?

Saludos y gracias