private void createCFDI(CFDi cfdi) { //logger.Info("Proceso de timbrado iniciado. Emisor: " + cfdi.emisor.unidadOperativa.razonSocial.rfc + "; Receptor: " + cfdi.receptor.informacionFiscal.rfc); EmisorDAO emisorDAO = new EmisorDAO(); ConceptosDAO conDAO = new ConceptosDAO(); CFDiDAO cfdiDAO = new CFDiDAO(); UsuarioDAO uDAO = new UsuarioDAO(); Calculador calc = new Calculador(); //if (cfdi.pagos != null && cfdi.pagos.doctoRelacionados != null && cfdi.pagos.doctoRelacionados.Length > 0) //{ // getDoctoRelacionados(cfdi.pagos.doctoRelacionados, cfdiDAO); //} cfdi.emisor = emisorDAO.GetIssuerInfo(cfdi.emisor.unidadOperativa.idUnidadOperativa, cfdi.tipoCompra.Substring(0, 1)); cfdi.emisor.certificado = emisorDAO.GetIssuerCertInfo(cfdi.emisor.unidadOperativa.razonSocial.idRazonSocial); cfdi.receptor.usuario = uDAO.getUsuario(cfdi.receptor.usuario.id); cfdi.receptor.informacionFiscal = uDAO.getUsuarioFiscales(cfdi.receptor.usuario.id); cfdi.conceptos = conDAO.getConceptos(cfdi.idMov, cfdi.emisor.unidadOperativa.idUnidadOperativa); //if(cfdi.conceptos[0].fecha.ToString("yyyy/MM/dd").Equals(DateTime.Now.ToString("yyyy/MM/dd"))) //{ // throw new SameDayInvoiceException("No puedes hacer la factura el mismo día de la compra"); //} //if(!cfdi.conceptos[0].fecha.ToString("yyyy/MM/dd").Equals(cfdi.fecha.ToString("yyyy/MM/dd"))) //{ // throw new InvoiceDateMismatchException("La fecha que has ingresado no coincide con la fecha de la compra"); //} //if(DateTime.Now.Subtract(cfdi.conceptos[0].fecha).TotalDays >= 15) //{ // throw new ExpiredInvoiceException("Solo puedes facturar hasta 15 dias después de la compra"); //} //Validar si los conceptos no han sido facturados calc.calcularDescuentosConceptos(cfdi.conceptos); calc.calcularImpuestoConceptos(cfdi.conceptos, cfdi.emisor.unidadOperativa); calc.calcularTotal(cfdi); cfdi.importeLetra = ConvertidorImporte.enletras(cfdi.total, cfdi.moneda); cfdi.fechaCert = DateTime.Now; cfdiDAO.saveCFDI(cfdi, true); if (cfdi.folio > 0) { CfdiXmlBuilder xmlBuilder = new CfdiXmlBuilder(); cfdi.xml = xmlBuilder.BuildXml(cfdi); cfdiDAO.saveCFDI(cfdi, false); //timbrarFacturaWS(cfdi); //xmlBuilder.obtenerDatosTimbre(cfdi); cfdiDAO.saveCFDI(cfdi, false); logger.Info("Cadena original del complemento de certificacion digital del SAT: " + cfdi.cadenaCertificadoSat); sendMail(cfdi); } else { throw new InvalidCfdiDataException("No fue posible guardar los datos de la factura"); } }
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); }
private void validateCFDI(CFDi cfdi) { CFDiDAO cfdiDAO = new CFDiDAO(); cfdi.xml = cfdiDAO.getCFDIXml(cfdi.idFolio); if (cfdi.xml != null && cfdi.xml != "") { CfdiXmlBuilder xmlBuilder = new CfdiXmlBuilder(); xmlBuilder.obtenerDatosTimbre(cfdi); if (cfdi.folioFiscal != null && cfdi.folioFiscal.Length == 36) { sendMail(cfdi); } else { createCFDI(cfdi); } } }