public static cfdi33.Comprobante TranslateToCFDI(BindingModels.Comprobante from)
        {
            bool MetodoPagoSpecified = false;
            bool formaPagoSpecified  = false;

            var cfdi33 = new cfdi33.Comprobante()
            {
                // TODO: revisar si se aplican descuento,
                Emisor = new Invoicing.cfdi33.ComprobanteEmisor()
                {
                    Rfc           = from.Emisor.RFC,
                    RegimenFiscal = TranslateModelsToCatalogosCFDI.TranslateRegimenFiscal(from.Emisor.RegimenFiscal),
                    Nombre        = from.Emisor.Nombre
                },
                Receptor = new Invoicing.cfdi33.ComprobanteReceptor()
                {
                    Rfc     = from.Receptor.RFC,
                    Nombre  = from.Receptor.Nombre,
                    UsoCFDI = TranslateModelsToCatalogosCFDI.TranslateUsoCFDI(from.UsoCFDI),
                    ResidenciaFiscalSpecified = false
                                                // TODO : Revisar si se implementa la resencia fiscal y el No. de registro tributario para extranjeros
                },
                Complemento = new Invoicing.cfdi33.ComprobanteComplemento()
                {
                    Items = new object[] { TranslateModelsValesDeDespensa.TranslateTo(from.ValesDespensa), TranslatesModelsToPagos.TranslateTo((from).Pagos) }
                },
                Impuestos                  = TranslateModelsToTotalImpuestos.TranslateCuadroImpuesto(from.Conceptos),
                Conceptos                  = TranslateModelConceptosToCFDI.TranslateConceptos(from.Conceptos).ToArray(),
                LugarExpedicion            = from.LugarExpedicion, // TranslateModelsToCatalogosCFDI.TranslateCodigoPostal(from.LugarExpedicion),
                TipoDeComprobante          = TranslateModelsToCatalogosCFDI.TranslateTipoComprobante(from.TipoComprobante),
                FormaPago                  = TranslateModelsToCatalogosCFDI.TranslateFormaPago(from.FormaPago, ref formaPagoSpecified),
                FormaPagoSpecified         = formaPagoSpecified,
                Certificado                = from.Certificado,
                NoCertificado              = from.noCertificado,
                CondicionesDePago          = from.CondicionesDePago,
                CondicionesDePagoSpecified = !String.IsNullOrEmpty(from.CondicionesDePago),
                Serie               = from.Serie,
                Folio               = from.Folio,
                Moneda              = TranslateModelsToCatalogosCFDI.TranslateMoneda(from.Moneda),
                MetodoPago          = TranslateModelsToCatalogosCFDI.TranslateMetodoPago(from.MetodoPago, ref MetodoPagoSpecified),
                MetodoPagoSpecified = MetodoPagoSpecified,
                Version             = "3.3",
                SubTotal            = from.SubTotal,
                Total               = from.Total,
                Fecha               = TranslateModelsToCatalogosCFDI.TranslateFecha(from.Fecha),
            };

            return(cfdi33);
        }
        public static cfdi33.PagosPagoDoctoRelacionado TranslateToDoctosRelacionados(BindingModels.DoctosRelacionados from)
        {
            bool MetodoPagoSpecified = false;

            var to = new cfdi33.PagosPagoDoctoRelacionado()
            {
                Folio                     = from.Folio.ToString(),
                Serie                     = from.Serie,
                IdDocumento               = from.idDocumento.ToString(),
                MonedaDR                  = TranslateModelsToCatalogosCFDI.TranslateMoneda(from.MonedaDR),
                NumParcialidad            = from.NumParcialidad.ToString(),
                TipoCambioDR              = from.TipoCambioDR,
                TipoCambioDRSpecified     = (from.TipoCambioDR > 0),
                MetodoDePagoDR            = TranslateModelsToCatalogosCFDI.TranslateMetodoPago(from.MetodoDePagoDR, ref MetodoPagoSpecified),
                ImpPagado                 = from.ImpPagado,
                ImpPagadoSpecified        = (from.ImpPagado > 0),
                ImpSaldoAnt               = from.ImpSaldoAnt,
                ImpSaldoAntSpecified      = (from.ImpSaldoAnt > 0),
                ImpSaldoInsoluto          = from.ImpSaldoInsoluto,
                ImpSaldoInsolutoSpecified = (from.ImpSaldoInsoluto > 0)
            };

            return(to);
        }