public Boolean Cancelar(ref string error, ref Modelo.Factura factura, string rutaCertificado, string rutaKey)
        {
            var _rutaCertificadoPem = String.Format("{0}{1}", rutaCertificado, ".pem");
            var _rutaKeyPem         = String.Format("{0}{1}", rutaKey, ".pem");
            ServicioCertificado _servicioCertificado = new ServicioCertificado(this._logger);

            _servicioCertificado.CreaArchivoExtPEM(rutaCertificado, _rutaCertificadoPem);
            _servicioCertificado.CreaArchivoKeyPEM(rutaKey, _rutaKeyPem, factura.Sucursal.ClavePrivada);
            cancelResponse _respuestaCancelacion = null;

            try
            {
                CancelSOAP cancela = new CancelSOAP();
                cancel     can     = new cancel();
                can.username    = Resources.UsuarioFinkokP;
                can.password    = Resources.ContraFinkok;
                can.taxpayer_id = factura.Sucursal.Rfc;
                can.cer         = RegresaEN64(File.ReadAllText(_rutaCertificadoPem));
                can.key         = RegresaEN64(File.ReadAllText(_rutaKeyPem));
                UUIDS    nim        = new UUIDS();
                string[] uuidString = new string[] { factura.FolioFiscal };
                nim.uuids             = uuidString.ToArray();
                can.UUIDS             = nim;
                _respuestaCancelacion = cancela.cancel(can);
                if ((_respuestaCancelacion != null) && (_respuestaCancelacion.cancelResult != null))
                {
                    factura.AcuseCancelacion = _respuestaCancelacion.cancelResult.Acuse;
                    factura.FechaCancelacion = DateTime.Now;
                    factura.Estatus          = "Cancelada";
                }
                return(true);
            }
            catch (Exception e)
            {
                this._logger.EscribirError(e.ToString());
                return(false);
            }
        }
 public Boolean GeneraCFDI(ref string error, Modelo.Factura factura, string rutaGuardadoCFDI, string rutaCertificado, string rutaKey, string rutaXSLT, string rutaCarpetaTemp, ICollection <DetalleTicket> productos = null)
 {
     try
     {
         ServicioCertificado _servicioCertificado = new ServicioCertificado(_logger);
         factura.NoCertificadoEmisor = _servicioCertificado.GetNumeroCertificado(ref error, rutaCertificado);
         if (String.IsNullOrEmpty(factura.NoCertificadoEmisor))
         {
             return(false);
         }
         this.Certificado = _servicioCertificado.GetCertificado(rutaCarpetaTemp, rutaCertificado, factura.Sucursal.RutaCer);
         if (String.IsNullOrEmpty(this.Certificado))
         {
             return(false);
         }
         GenerarXML(ref error, rutaGuardadoCFDI, factura);
         factura.CadenaOriginal = _servicioCertificado.GetCadenaOriginal(ref error, rutaGuardadoCFDI, rutaXSLT);
         if (String.IsNullOrEmpty(factura.CadenaOriginal))
         {
             return(false);
         }
         this.SelloDigital = _servicioCertificado.GetSelloDigital(ref error, rutaKey, factura.Sucursal.ClavePrivada, factura.CadenaOriginal);
         if (String.IsNullOrEmpty(this.SelloDigital))
         {
             return(false);
         }
         GenerarXML(ref error, rutaGuardadoCFDI, factura);
         return(true);
     }
     catch (Exception e)
     {
         GenerarFin();
         _logger.EscribirError(e.ToString());
         return(false);
     }
 }