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 }
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 }