public CFDi cancelarTimbre(CFDi cfdi) { logger.Info("Proceso de cancelación de factura iniciado. Serie: " + cfdi.serie + "; Folio: " + cfdi.folio); CFDiDAO cfdiDAO = new CFDiDAO(); if (!cfdiDAO.validateInvoiceStatus(cfdi.serie, cfdi.folio)) { throw new InvalidInvoiceStatusException("El estatus actual de la factura no permite cancelar"); } cfdi = cfdiDAO.getInvoiceInfo(cfdi.serie, cfdi.folio); CfdiXmlBuilder builder = new CfdiXmlBuilder(); cfdi.xml = builder.BuildCancelacionXml(cfdi); //WS cancelar timbrarFacturaWS(cfdi); cfdiDAO.cancelarTimbre(cfdi); return(cfdi); }