public ActionResult ComprobarLlave(Guid Id)
        {
            Utils         util    = new Utils();
            GetPAC_Result pac     = db.GetPAC(Id, 1).FirstOrDefault();
            string        Cer     = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".cer");
            string        Key     = Server.MapPath("~/Certificados/" + pac.RFC + "/" + pac.RFC + ".key");
            string        Dir     = Server.MapPath("~/Facturas/" + pac.RFC);
            string        Factura = Dir + "/Facturas/Prueba.xml";

            RVCFDI33.GeneraCFDI objCfdi = new RVCFDI33.GeneraCFDI();
            objCfdi.agregarCertificado(Cer);
            objCfdi.agregarComprobante33("A", "6172", System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss"), "01", "", 1, 0, "MXN", "1", 1.16, "I", "PUE", "39300", "");
            objCfdi.agregarEmisor(pac.RFC, pac.Nombre, pac.RegimenFiscal.Trim());
            objCfdi.agregarReceptor("XAXX010101000", "Cliente general", "", "", "P01");
            objCfdi.agregarConcepto("01010101", "1", 1.00, "EA", "Pieza", "Producto Generica", 1.00, 1.00, 0.00);
            objCfdi.agregarImpuestoConceptoTraslado(1, "002", "Tasa", 0.160000, 0.16);
            objCfdi.agregarImpuestos(0, 0.16);
            objCfdi.agregarTraslado("002", "Tasa", 0.160000, 0.16);
            objCfdi.GeneraXML(Key, pac.ContrasenaLlave);
            if (objCfdi.MensajeError != "")
            {
                return(Json(new { error = "Error", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet));
            }
            string XML = objCfdi.Xml.Replace("Sello=\"\"", "Sello=\"" + objCfdi.SelloEmisor + "\"").Replace(",", ".");

            System.IO.File.WriteAllText(Factura, XML);
            objCfdi.TimbrarCfdiArchivo(Factura, pac.Usuario, pac.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", Factura.Replace("Prueba.xml", ""), "Timbrado", true);
            if (objCfdi.MensajeError == "")
            {
                RVCFDI33.RVCancelacion.Cancelacion obj = new RVCFDI33.RVCancelacion.Cancelacion();
                string cadenaCancelacion = obj.crearXMLCancelacionCadena(Cer, Key, pac.ContrasenaLlave, objCfdi.UUID);
                if (obj.MensajeDeError == "")
                {
                    obj.enviarCancelacionCadena(cadenaCancelacion, pac.RFC, pac.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx", true);
                    if (obj.CodigoDeError == 0)
                    {
                        return(Json(new { error = "none", Message = "Se Timbro Correctamente" }, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(new { error = "error", Message = obj.CodigoDeError }, JsonRequestBehavior.AllowGet));
                    }
                }
                else
                {
                    return(Json(new { error = "error", Message = obj.MensajeDeError }, JsonRequestBehavior.AllowGet));
                }
            }
            else
            {
                return(Json(new { error = "error", Message = objCfdi.MensajeError }, JsonRequestBehavior.AllowGet));
            }
        }
예제 #2
0
 public ActionResult Cancelar(Guid Id)
 {
     try {
         CFDI          Factura = db.GetCFDI(Id, 1).FirstOrDefault();
         GetPAC_Result PAC     = db.GetPAC(null, 0).Where(x => x.Id == Factura.IdProveedor).First();
         RVCFDI33.RVCancelacion.Cancelacion Cancelar = new RVCFDI33.RVCancelacion.Cancelacion();
         string Certificado       = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".cer"),
                Llave             = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".key"),
                Cancelacion       = Server.MapPath("~/Facturas/" + PAC.RFC + "/Cancelaciones");
         string cadenaCancelacion = Cancelar.crearXMLCancelacionCadena(Certificado, Llave, PAC.ContrasenaLlave, Factura.Id.ToString());
         if (Cancelar.MensajeDeError == "")
         {
             //Cancelar.enviarCancelacionCadena(cadenaCancelacion, PAC.RFC, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx");
             if (Cancelar.CodigoDeError == 0)
             {
                 if (!System.IO.Directory.Exists(Cancelacion))
                 {
                     System.IO.Directory.CreateDirectory(Cancelacion);
                 }
                 System.IO.File.WriteAllText(Cancelacion + "\\Cancelacion_" + Factura.Folio + ".xml", cadenaCancelacion);
                 db.UpdateCFDI(Id, Factura.Tipo, Factura.Folio, Factura.XML, Factura.Ruta, Factura.IdCliente, Factura.IdEmpleado, Factura.IdProveedor, true);
                 return(Json(new { error = false }, JsonRequestBehavior.AllowGet));
             }
             else
             {
                 return(Json(new { error = "Error Al enviar la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet));
             }
         }
         else
         {
             return(Json(new { error = "Error Al hacer la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet));
         }
     }
     catch (Exception ex) {
         return(Json(new { error = "error", Message = ex.Message }, JsonRequestBehavior.AllowGet));
     }
 }