public static List <cfdi33.ComprobanteConcepto> TranslateConceptos(List <BindingModels.Concepto> from) { List <cfdi33.ComprobanteConcepto> to = new List <cfdi33.ComprobanteConcepto>(); foreach (var item in from) { List <cfdi33.ComprobanteConceptoImpuestosRetencion> Retenciones = new List <cfdi33.ComprobanteConceptoImpuestosRetencion>(); List <cfdi33.ComprobanteConceptoImpuestosTraslado> Traslados = new List <cfdi33.ComprobanteConceptoImpuestosTraslado>(); if (item.ConceptosImpuestos != null) { if (item.ConceptosImpuestos.Count > 0) { foreach (var itemImpuesto in item.ConceptosImpuestos) { if (itemImpuesto.RetencionOTraslado == "Retencion") { Retenciones.Add(TranslateModelImpuestosToCFDI.TranslateConceptoImpuestoRetencion(itemImpuesto)); } else if (itemImpuesto.RetencionOTraslado == "Traslado") { Traslados.Add(TranslateModelImpuestosToCFDI.TranslateConceptoImpuestoTraslado(itemImpuesto)); } else { throw new InvalidCastException("Tipo de impuesto no definido / soportado"); } } } } cfdi33.ComprobanteConceptoImpuestos listaImpuestos = null; if (Retenciones.Count > 0 || Traslados.Count > 0) { listaImpuestos = new cfdi33.ComprobanteConceptoImpuestos() { Retenciones = (Retenciones.Count > 0 ? Retenciones.ToArray() : null), Traslados = (Traslados.Count > 0 ? Traslados.ToArray() : null) }; } cfdi33.ComprobanteConcepto concepto = new cfdi33.ComprobanteConcepto() { Cantidad = item.Cantidad, ClaveProdServ = item.ClaveProductoServicio, //TranslateModelsToCatalogosCFDI.TranslateClaveProdServ(item.ClaveProductoServicio), ClaveUnidad = TranslateModelsToCatalogosCFDI.TranslateClaveUnidad(item.ClaveUnidad), Descripcion = item.Descripcion, Importe = item.Importe, NoIdentificacion = item.noIdentificador, Unidad = item.Unidad, ValorUnitario = item.ValorUnitario, Impuestos = listaImpuestos }; to.Add(concepto); } return(to); }
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); }
public static cfdi33.PagosPago TranslateToPago(BindingModels.Pago from) { bool formaPagoSpecified = false; byte[] certPago = null; byte[] selloPago = null; if (!String.IsNullOrEmpty(from.CertPago)) { certPago = Encoding.ASCII.GetBytes(from.CertPago); } if (!String.IsNullOrEmpty(from.SelloPago)) { selloPago = Encoding.ASCII.GetBytes(from.SelloPago); } var listaDoctosRelacionados = new List <PagosPagoDoctoRelacionado>(); if (from.ListaDocumentos != null) { foreach (var item in from.ListaDocumentos) { listaDoctosRelacionados.Add(TranslateToDoctosRelacionados(item)); } } else { throw new Exception("No existen facturas relacionadas con el pago"); } var to = new cfdi33.PagosPago() { FechaPago = TranslateModelsToCatalogosCFDI.TranslateFecha(from.FechaPago.LocalDateTime), // from.FechaPago.LocalDateTime, MonedaP = TranslateModelsToCatalogosCFDI.TranslateMoneda(from.MonedaP), FormaDePagoP = TranslateModelsToCatalogosCFDI.TranslateFormaPago(from.FormaDePagoP, ref formaPagoSpecified), Monto = from.Monto, CtaBeneficiario = from.CtaBeneficiario, CadPago = from.CadPago, CertPago = certPago, CtaOrdenante = from.CtaOrdenante, NomBancoOrdExt = from.NomBancoOrdExt, NumOperacion = from.NumOperation, RfcEmisorCtaBen = from.RfcEmisorCtaBen, RfcEmisorCtaOrd = from.RfcEmisorCtaOrd, SelloPago = selloPago, TipoCadPagoSpecified = !String.IsNullOrEmpty(from.TipoCadPago), TipoCambioP = from.TipoCambioP, TipoCambioPSpecified = (from.TipoCambioP > 0), DoctoRelacionado = listaDoctosRelacionados.ToArray() // Impuestos = from.ListaImpuestos }; var TipoCadPago = TranslateModelsToCatalogosCFDI.TranslateToCadenaPago(from.TipoCadPago, out bool isNullValue); if (!isNullValue) { to.TipoCadPago = TipoCadPago; } return(to); }