public void getDoctoRelacionados(DoctoRelacionado[] doctoRelacionados, CFDiDAO cfdiDAO) { foreach (DoctoRelacionado docRelacionado in doctoRelacionados) { DoctoRelacionado relacion = null; relacion = cfdiDAO.getDoctoRelacionadoInfo(docRelacionado.folio, docRelacionado.serie); if (relacion != null) { docRelacionado.idDocumento = relacion.idDocumento; docRelacionado.impSaldoAnt = relacion.impSaldoAnt; docRelacionado.numParcialidad = relacion.numParcialidad; docRelacionado.idFactura = relacion.idFactura; if (docRelacionado.impPagado > docRelacionado.impSaldoAnt) { throw new PaymentGreaterThanBalanceException("El importe de pago no puede ser mayor a el saldo de la factura"); } docRelacionado.impSaldoInsoluto = docRelacionado.impSaldoAnt - docRelacionado.impPagado; if (docRelacionado.idDocumento == null || docRelacionado.idDocumento.Length <= 0) { throw new InvalidInvoiceTypeException("La factura a la que se quiere asignar el pago no es de tipo Pagos Parciales o Diferidos"); } if (docRelacionado.impSaldoAnt == 0.0) { throw new InvoiceAtZeroException("El saldo de la factura a la que se quiere asignar este pago está en 0"); } } } }
public Dictionary <string, Object> GetFactura(int idFactura) { CFDiDAO facDAO = new CFDiDAO(); var res = new Dictionary <string, Object>(); res.Add("cfdi", facDAO.GetFactura(idFactura)); return(res); }
public Dictionary <string, Object> GetMisFacturas(int userId, int pagina, int totalPag) { CFDiDAO facDAO = new CFDiDAO(); var res = new Dictionary <string, Object>(); res.Add("cfdis", facDAO.GetMisFacturas(userId, pagina, totalPag)); res.Add("total", facDAO.GetMisFacturasCount(userId)); return(res); }
public Dictionary <string, Object> GetCFDis(int pagina, int totalPag) { CFDiDAO facDAO = new CFDiDAO(); var res = new Dictionary <string, Object>(); res.Add("cfdis", facDAO.GetCFDis(pagina, totalPag)); res.Add("total", facDAO.GetCFDisCount()); return(res); }
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); } } }