Example #1
0
 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");
             }
         }
     }
 }
Example #2
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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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");
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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);
                }
            }
        }