Esempio n. 1
0
        private void GeneraComprobante()
        {
            #region Información del comprobante

            _comprobante = new Schemasv32.Comprobante
            {
                version            = "3.2",
                serie              = _iniFac.Opcional("Generales", "serie"),
                folio              = _iniFac.Opcional("Generales", "folio"),
                fecha              = _iniFac.RequeridoFecha("Generales", "fecha"),
                formaDePago        = _iniFac.Requerido("Generales", "formaDePago"),
                noCertificado      = _iniFac.Requerido("Generales", "noCertificado"),
                condicionesDePago  = _iniFac.Opcional("Generales", "condicionesDePago"),
                subTotal           = _iniFac.RequeridoDecimal("Generales", "subTotal"),
                descuento          = _iniFac.OpcionalDecimal("Generales", "descuento"),
                descuentoSpecified = _iniFac.Existe("Generales", "descuento"),
                motivoDescuento    = null,
                // Opcional
                TipoCambio        = _iniFac.Opcional("Generales", "TipoCambio"),
                Moneda            = _iniFac.Opcional("Generales", "Moneda"),
                total             = _iniFac.RequeridoDecimal("Generales", "total"),
                tipoDeComprobante = _iniFac.RequeridoEnum <Schemasv32.ComprobanteTipoDeComprobante>(
                    "Generales", "tipoDeComprobante"),
                metodoDePago    = _iniFac.Requerido("Generales", "metodoDePago"),
                LugarExpedicion = _iniFac.Requerido("Generales", "LugarExpedicion"),
                // Datos opcionales para Ver32
                NumCtaPago           = _iniFac.Opcional("Generales", "NumCtaPago"),
                FolioFiscalOrig      = null,
                SerieFolioFiscalOrig = null,
                //FechaFolioFiscalOrig = null,
                FechaFolioFiscalOrigSpecified = false,
                MontoFolioFiscalOrig          = 0,
                MontoFolioFiscalOrigSpecified = false,
            };

            #endregion

            #region Emisor

            _comprobante.Emisor = new Schemasv32.ComprobanteEmisor
            {
                rfc    = _iniFac.Requerido("Emisor", "rfc"),
                nombre = _iniFac.Opcional("Emisor", "nombre"),     // de Requerido a Opcional

                DomicilioFiscal = new Schemasv32.t_UbicacionFiscal // Opcional
                {
                    calle      = _iniFac.Requerido("EmisorDomicilioFiscal", "calle"),
                    noExterior =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "noExterior"),
                    noInterior =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "noInterior"),
                    colonia   = _iniFac.Opcional("EmisorDomicilioFiscal", "colonia"),
                    localidad =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "localidad"),
                    referencia =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "referencia"),
                    municipio =
                        _iniFac.Requerido("EmisorDomicilioFiscal", "municipio"),
                    estado       = _iniFac.Requerido("EmisorDomicilioFiscal", "estado"),
                    pais         = _iniFac.Requerido("EmisorDomicilioFiscal", "pais"),
                    codigoPostal =
                        _iniFac.Requerido("EmisorDomicilioFiscal", "codigoPostal")
                },
                ExpedidoEn = new Schemasv32.t_Ubicacion // Opcional
                {
                    calle        = _iniFac.Opcional("EmisorExpedidoEn", "calle"),
                    noExterior   = _iniFac.Opcional("EmisorExpedidoEn", "noExterior"),
                    noInterior   = _iniFac.Opcional("EmisorExpedidoEn", "noInterior"),
                    colonia      = _iniFac.Opcional("EmisorExpedidoEn", "colonia"),
                    localidad    = _iniFac.Opcional("EmisorExpedidoEn", "localidad"),
                    referencia   = _iniFac.Opcional("EmisorExpedidoEn", "referencia"),
                    municipio    = _iniFac.Opcional("EmisorExpedidoEn", "municipio"),
                    estado       = _iniFac.Opcional("EmisorExpedidoEn", "estado"),
                    pais         = _iniFac.Requerido("EmisorExpedidoEn", "pais"),
                    codigoPostal = _iniFac.Opcional("EmisorExpedidoEn", "codigoPostal")
                }
            };
            int cantidadRegimenFiscal =     // Nuevo en Ver32
                                        Convert.ToInt32(_iniFac.Requerido("EmisorRegimenFiscal", "cantidadRegimenFiscal"));
            _comprobante.Emisor.RegimenFiscal = new Schemasv32.ComprobanteEmisorRegimenFiscal[cantidadRegimenFiscal];
            for (int i = 0; i < cantidadRegimenFiscal; i++)
            {
                string regimenFiscalSection = String.Format("regimenFiscal{0}", (i + 1));
                _comprobante.Emisor.RegimenFiscal[i] = new Schemasv32.ComprobanteEmisorRegimenFiscal
                {
                    Regimen = _iniFac.Requerido("EmisorRegimenFiscal", regimenFiscalSection)
                };
            }
            #endregion

            #region Receptor

            _comprobante.Receptor = new Schemasv32.ComprobanteReceptor
            {
                rfc       = _iniFac.Requerido("Receptor", "rfc"),
                nombre    = _iniFac.Opcional("Receptor", "nombre"),
                Domicilio = new Schemasv32.t_Ubicacion
                {
                    calle      = _iniFac.Opcional("ReceptorDomicilio", "calle"),
                    noExterior =
                        _iniFac.Opcional("ReceptorDomicilio", "noExterior"),
                    noInterior =
                        _iniFac.Opcional("ReceptorDomicilio", "noInterior"),
                    colonia      = _iniFac.Opcional("ReceptorDomicilio", "colonia"),
                    localidad    = _iniFac.Opcional("ReceptorDomicilio", "localidad"),
                    referencia   = _iniFac.Opcional("ReceptorDomicilio", "referencia"),
                    municipio    = _iniFac.Opcional("ReceptorDomicilio", "municipio"),
                    estado       = _iniFac.Opcional("ReceptorDomicilio", "estado"),
                    pais         = _iniFac.Requerido("ReceptorDomicilio", "pais"),
                    codigoPostal =
                        _iniFac.Opcional("ReceptorDomicilio", "codigoPostal")
                }
            };

            #endregion

            #region Conceptos

            int cantidadConceptos =
                Convert.ToInt32(_iniFac.Requerido("Conceptos", "cantidadConceptos"));
            _comprobante.Conceptos = new Schemasv32.ComprobanteConcepto[cantidadConceptos];
            for (int i = 0; i < cantidadConceptos; i++)
            {
                string conceptoSection = String.Format("Concepto{0}", (i + 1));
                _comprobante.Conceptos[i] = new Schemasv32.ComprobanteConcepto
                {
                    cantidad         = _iniFac.RequeridoDecimal(conceptoSection, "cantidad"),
                    unidad           = _iniFac.Requerido(conceptoSection, "unidad"),          // de Opcional a Requerido
                    noIdentificacion = _iniFac.Opcional(conceptoSection, "noIdentificacion"), // Opcional
                    descripcion      = _iniFac.Requerido(conceptoSection, "descripcion"),
                    valorUnitario    =
                        _iniFac.RequeridoDecimal(conceptoSection, "valorUnitario"),
                    importe = _iniFac.RequeridoDecimal(conceptoSection, "importe"),
                    Items   = GetInformacionAduanera(_iniFac, conceptoSection)
                };
            }

            #endregion

            #region Impuestos

            _comprobante.Impuestos = new Schemasv32.ComprobanteImpuestos
            {
                totalImpuestosRetenidos =
                    _iniFac.OpcionalDecimal("Impuestos", "totalImpuestosRetenidos"),
                totalImpuestosRetenidosSpecified =
                    _iniFac.Existe("Impuestos", "totalImpuestosRetenidos"),
                totalImpuestosTrasladados =
                    _iniFac.OpcionalDecimal("Impuestos", "totalImpuestosTrasladados"),
                totalImpuestosTrasladadosSpecified =
                    _iniFac.Existe("Impuestos", "totalImpuestosTrasladados"),
            };

            int cantidadRetenciones = _iniFac.OpcionalEntero("Traslados", "cantidadRetenciones");
            if (cantidadRetenciones > 0)
            {
                _comprobante.Impuestos.Retenciones =
                    new Schemasv32.ComprobanteImpuestosRetencion[cantidadRetenciones];

                for (int i = 0; i < cantidadRetenciones; i++)
                {
                    string retencionSection = String.Format("Retencion{0}", i + 1);
                    _comprobante.Impuestos.Retenciones[i] = new Schemasv32.ComprobanteImpuestosRetencion
                    {
                        impuesto = _iniFac.RequeridoEnum <Schemasv32.ComprobanteImpuestosRetencionImpuesto>
                                       (retencionSection, "impuesto"),
                        importe = _iniFac.RequeridoDecimal(retencionSection, "importe")
                    };
                }
            }

            int cantidadTraslados = _iniFac.OpcionalEntero("Traslados",
                                                           "cantidadTraslados");
            _comprobante.Impuestos.Traslados =
                new Schemasv32.ComprobanteImpuestosTraslado[cantidadTraslados];

            for (int i = 0; i < cantidadTraslados; i++)
            {
                string trasladoSection = String.Format("Traslado{0}", i + 1);
                _comprobante.Impuestos.Traslados[i] = new Schemasv32.ComprobanteImpuestosTraslado
                {
                    impuesto = _iniFac.RequeridoEnum <Schemasv32.ComprobanteImpuestosTrasladoImpuesto>
                                   (trasladoSection, "impuesto"),
                    tasa    = _iniFac.RequeridoDecimal(trasladoSection, "tasa"),
                    importe = _iniFac.RequeridoDecimal(trasladoSection, "importe")
                };
            }

            #endregion
        }
Esempio n. 2
0
        private void GeneraComprobante()
        {
            #region Información del comprobante

            _comprobante = new Schemasv3.Comprobante
            {
                version           = "3.0",
                serie             = _iniFac.Opcional("Generales", "serie"),
                folio             = _iniFac.Opcional("Generales", "folio"),
                fecha             = _iniFac.RequeridoFecha("Generales", "fecha"),
                formaDePago       = _iniFac.Requerido("Generales", "formaDePago"),
                noCertificado     = _iniFac.Requerido("Generales", "noCertificado"),
                condicionesDePago = null,
                // Opcional
                subTotal           = _iniFac.RequeridoDecimal("Generales", "subTotal"),
                descuento          = _iniFac.OpcionalDecimal("Generales", "descuento"),
                descuentoSpecified = _iniFac.Existe("Generales", "descuento"),
                motivoDescuento    = null,
                // Opcional
                TipoCambio        = _iniFac.Opcional("Generales", "TipoCambio"),
                Moneda            = _iniFac.Opcional("Generales", "Moneda"),
                total             = _iniFac.RequeridoDecimal("Generales", "total"),
                tipoDeComprobante = _iniFac.RequeridoEnum <Schemasv3.ComprobanteTipoDeComprobante>(
                    "Generales", "tipoDeComprobante")
            };

            #endregion

            #region Emisor

            _comprobante.Emisor = new Schemasv3.ComprobanteEmisor
            {
                rfc    = _iniFac.Requerido("Emisor", "rfc"),
                nombre = _iniFac.Requerido("Emisor", "nombre"),

                DomicilioFiscal = new Schemasv3.t_UbicacionFiscal // Requerido
                {
                    calle      = _iniFac.Requerido("EmisorDomicilioFiscal", "calle"),
                    noExterior =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "noExterior"),
                    noInterior =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "noInterior"),
                    colonia   = _iniFac.Opcional("EmisorDomicilioFiscal", "colonia"),
                    localidad =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "localidad"),
                    referencia =
                        _iniFac.Opcional("EmisorDomicilioFiscal", "referencia"),
                    municipio =
                        _iniFac.Requerido("EmisorDomicilioFiscal", "municipio"),
                    estado       = _iniFac.Requerido("EmisorDomicilioFiscal", "estado"),
                    pais         = _iniFac.Requerido("EmisorDomicilioFiscal", "pais"),
                    codigoPostal =
                        _iniFac.Requerido("EmisorDomicilioFiscal", "codigoPostal")
                },
                ExpedidoEn = new Schemasv3.t_Ubicacion // Opcional
                {
                    calle        = _iniFac.Opcional("EmisorExpedidoEn", "calle"),
                    noExterior   = _iniFac.Opcional("EmisorExpedidoEn", "noExterior"),
                    noInterior   = _iniFac.Opcional("EmisorExpedidoEn", "noInterior"),
                    colonia      = _iniFac.Opcional("EmisorExpedidoEn", "colonia"),
                    localidad    = _iniFac.Opcional("EmisorExpedidoEn", "localidad"),
                    referencia   = _iniFac.Opcional("EmisorExpedidoEn", "referencia"),
                    municipio    = _iniFac.Opcional("EmisorExpedidoEn", "municipio"),
                    estado       = _iniFac.Opcional("EmisorExpedidoEn", "estado"),
                    pais         = _iniFac.Requerido("EmisorExpedidoEn", "pais"),
                    codigoPostal = _iniFac.Opcional("EmisorExpedidoEn", "codigoPostal")
                }
            };

            #endregion

            #region Receptor

            _comprobante.Receptor = new Schemasv3.ComprobanteReceptor
            {
                rfc       = _iniFac.Requerido("Receptor", "rfc"),
                nombre    = _iniFac.Opcional("Receptor", "nombre"),
                Domicilio = new Schemasv3.t_Ubicacion
                {
                    calle      = _iniFac.Opcional("ReceptorDomicilio", "calle"),
                    noExterior =
                        _iniFac.Opcional("ReceptorDomicilio", "noExterior"),
                    noInterior =
                        _iniFac.Opcional("ReceptorDomicilio", "noInterior"),
                    colonia      = _iniFac.Opcional("ReceptorDomicilio", "colonia"),
                    localidad    = _iniFac.Opcional("ReceptorDomicilio", "localidad"),
                    referencia   = _iniFac.Opcional("ReceptorDomicilio", "referencia"),
                    municipio    = _iniFac.Opcional("ReceptorDomicilio", "municipio"),
                    estado       = _iniFac.Opcional("ReceptorDomicilio", "estado"),
                    pais         = _iniFac.Requerido("ReceptorDomicilio", "pais"),
                    codigoPostal =
                        _iniFac.Opcional("ReceptorDomicilio", "codigoPostal")
                }
            };

            #endregion

            #region Conceptos

            int cantidadConceptos =
                Convert.ToInt32(_iniFac.Requerido("Conceptos", "cantidadConceptos"));
            _comprobante.Conceptos = new Schemasv3.ComprobanteConcepto[cantidadConceptos];
            for (int i = 0; i < cantidadConceptos; i++)
            {
                string conceptoSection = String.Format("Concepto{0}", (i + 1));
                _comprobante.Conceptos[i] = new Schemasv3.ComprobanteConcepto
                {
                    cantidad         = _iniFac.RequeridoDecimal(conceptoSection, "cantidad"),
                    unidad           = _iniFac.Opcional(conceptoSection, "unidad"),
                    noIdentificacion = null,
                    // Opcional
                    descripcion   = _iniFac.Requerido(conceptoSection, "descripcion"),
                    valorUnitario =
                        _iniFac.RequeridoDecimal(conceptoSection, "valorUnitario"),
                    importe = _iniFac.RequeridoDecimal(conceptoSection, "importe"),
                    Items   = GetInformacionAduanera(_iniFac, conceptoSection)
                };
            }

            #endregion

            #region Impuestos

            _comprobante.Impuestos = new Schemasv3.ComprobanteImpuestos
            {
                totalImpuestosRetenidos =
                    _iniFac.OpcionalDecimal("Impuestos", "totalImpuestosRetenidos"),
                totalImpuestosRetenidosSpecified =
                    _iniFac.Existe("Impuestos", "totalImpuestosRetenidos"),
                totalImpuestosTrasladados =
                    _iniFac.OpcionalDecimal("Impuestos", "totalImpuestosTrasladados"),
                totalImpuestosTrasladadosSpecified =
                    _iniFac.Existe("Impuestos", "totalImpuestosTrasladados"),
            };

            int cantidadTraslados = _iniFac.OpcionalEntero("Traslados",
                                                           "cantidadTraslados");

            _comprobante.Impuestos.Traslados =
                new Schemasv3.ComprobanteImpuestosTraslado[cantidadTraslados];

            for (int i = 0; i < cantidadTraslados; i++)
            {
                string trasladoSection = String.Format("Traslado{0}", i + 1);
                _comprobante.Impuestos.Traslados[i] = new Schemasv3.ComprobanteImpuestosTraslado
                {
                    impuesto = _iniFac.RequeridoEnum <Schemasv3.ComprobanteImpuestosTrasladoImpuesto>
                                   (trasladoSection, "impuesto"),
                    tasa    = _iniFac.RequeridoDecimal(trasladoSection, "tasa"),
                    importe = _iniFac.RequeridoDecimal(trasladoSection, "importe")
                };
            }

            // TODO: Faltan los impuestos retenidos (opcional)

            #endregion
        }