From 0dc3e4c384760abc28296915719473a0e71bc20e Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Thu, 22 Aug 2019 02:28:37 -0700 Subject: [PATCH] efacturasventas --- App_Code/Modelos.vb | 6 +- Bin/APP_Code_CSharp.dll | Bin 58368 -> 60928 bytes Bin/APP_Code_CSharp.pdb | Bin 144896 -> 146944 bytes Ventas/RepConciliacionEmitidosSat.aspx | 22 +- Ventas/RepConciliacionEmitidosSat.aspx.cs | 419 +++++++++++++++------- 5 files changed, 300 insertions(+), 147 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 41b6f6116..58a1b50f4 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2681,7 +2681,7 @@ Namespace Modelos CveCuentaContabilizacion = 0 End If - If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto) Then + If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveSubProyecto:=CveSubProyectoContabilizar, PorcentajeImpuesto:=PorcentajeImpuesto, TipoCambio:=tipoCambio) Then ErrorPrepoliza = True Else ObjFactura.SeGuardoPrePoliza = True @@ -2750,8 +2750,8 @@ Namespace Modelos If idCuentaContabilizacion > 0 Then If ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=objContPaqi) Then Else - ErrorList.Add("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico") - ErrorPrepoliza = True + 'ErrorList.Add("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico") + 'ErrorPrepoliza = True End If Else ErrorList.Add(String.Format("Falta asignación de las siguientes cuentas contables: {0}", CuentasContablesInvalidas)) diff --git a/Bin/APP_Code_CSharp.dll b/Bin/APP_Code_CSharp.dll index 64377defa788d9e24e4002bd5c09fce5893ab47c..1eeb8c17ebfc4b4d21c6e80eb21101734709dded 100644 GIT binary patch literal 60928 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 Yz7w2S^*{XZo+0N}FxM|X|92et4~1v42><{9 literal 58368 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 diff --git a/Bin/APP_Code_CSharp.pdb b/Bin/APP_Code_CSharp.pdb index 16f4d3b4d184351ec8cb0bebb789855a0b35357c..dd15603d0e3a2ff84beb2675a04135dbdde581e6 100644 GIT binary patch delta 20272 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
- Facturas emitidas en el sat sin registrar (<%= GVConciliacionemitidasSAT.Rows.Count %>) + Facturas emitidas en el sat sin registrar de
-
- - +
+ +
@@ -98,14 +98,15 @@ <%-- --%> - + - r + r +
@@ -153,6 +154,15 @@ diff --git a/Ventas/RepConciliacionEmitidosSat.aspx.cs b/Ventas/RepConciliacionEmitidosSat.aspx.cs index 649c309c0..4e7ae76cd 100644 --- a/Ventas/RepConciliacionEmitidosSat.aspx.cs +++ b/Ventas/RepConciliacionEmitidosSat.aspx.cs @@ -11,6 +11,7 @@ using Extensiones; using System.Data; using System.Text; using ADSistemaLibrary.SatXml; +//using ADS_CFDI_SAT; public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas { @@ -44,7 +45,7 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas DdlPS.setEsWebService(false); DdlPS.ddl.DataSource = get_GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion: CveClasificacion, Estatus: 1, AplicaParaVenta: 1); DdlPS.ddl.DataBind(); - } + } } } protected void CargaConciliacionemitidasSATGet() @@ -52,6 +53,8 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas ClsVentas ObjV = new ClsVentas(); ObjV.ConciliacionemitidasSATGet(UsuarioActual.CveEmpresa); GVConciliacionemitidasSAT.DataSource = ObjV.DtResultados.FiltraParametros("", "CveVenta"); + Ltlsinregistrar.Text = $"{ObjV.DtResultados.COUNT("FolioFiscal","CveVenta IS NULL")}"; + ltlTotal.Text = $"{ObjV.DtResultados.Rows.Count}"; ObjV.Dispose(); GVConciliacionemitidasSAT.DataBind(); UpDatosReporte.Update(); @@ -229,6 +232,39 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas int CvePsReconstruccion = DdlPS.SelectedValue.ToEntero(); int CveSubProyectoReconstruccion = DdlSubProyectoDatos.SelectedValue.ToEntero(); //Modelos.Factura.MMensajeFactura resp; + + string Moneda = objxml.comprobante.Moneda; + if (objxml.comprobante.Version == "3.2") + { + switch (Moneda) + { + case "Peso Mexicano": Moneda = "MXN"; break; + case "Dolar Americano": Moneda = "USD"; break; + } + + } + string formadepago = objxml.comprobante.FormaPago; + string metododepago = objxml.comprobante.MetodoPago; + if (objxml.comprobante.Version == "3.2") + { + switch (objxml.comprobante.MetodoPago)//si es correcto estan invertidos + { + case "TRANSFERENCIA ELECTRONICA": formadepago = "03"; break; + default: formadepago = objxml.comprobante.MetodoPago; break; + } + + } + if (objxml.comprobante.Version == "3.2") + { + switch (objxml.comprobante.FormaPago)//si es correcto estan invertidos + { + case "PAGO EN UNA SOLA EXHIBICION": metododepago = "PUE"; break; + default: metododepago = objxml.comprobante.FormaPago; break; + } + + } + + Modelos.Factura objfact = new Modelos.Factura(UsuarioActual) { TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.TextoLimpio,//?que es esto @@ -242,8 +278,8 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas TipoCambio = objxml.comprobante.TipoCambio, //ConvertirPesos =false,//?para que sirve MonedaSAT = objxml.comprobante.Moneda, - CveMoneda = GlobalDTMonedas.FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT= '{objxml.comprobante.Moneda}' ").ToEntero(), - Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $" AbreviaturaSAT= '{objxml.comprobante.Moneda}' "), + CveMoneda = GlobalDTMonedas.FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT= '{Moneda}' ").ToEntero(), + Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $" AbreviaturaSAT= '{Moneda}' "), TipoDocto = objxml.comprobante.TipoDeComprobanteSIG, RefDocto = "", CveMesa = -1, @@ -292,11 +328,11 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas } objfact.CveAlmacen = -1; - objfact.CveFormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("CveFormaPago", $"ClaveFormaPagoSAT = '{objxml.comprobante.FormaPago}'").ToEntero(); + objfact.CveFormaPago33 = GlobalDTVtaFormaPago.FiltroPrimeroValor("CveFormaPago", $"ClaveFormaPagoSAT = '{formadepago}'").ToEntero(); objfact.FormaPagoSAT33 = objxml.comprobante.FormaPago; objfact.FormaPago33 = objxml.comprobante.FormaPagoTexto; - objfact.CveMetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{objxml.comprobante.MetodoPago}'").ToEntero(); - objfact.CveMetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{objxml.comprobante.MetodoPago}'").ToEntero(); + objfact.CveMetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero(); + objfact.CveMetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero(); objfact.ClaveMetodoPagoSAT = objxml.comprobante.MetodoPago; objfact.MetodoPago33 = objxml.comprobante.MetodoPagoTexto; objfact.CveUsoCFDI = get_GlobalDTSATUsosCFDI(-1).FiltroPrimeroValor("CveUsoCFDI", $"UsoCFDI = '{objxml.receptor.UsoCFDI}'").ToEntero(); @@ -304,16 +340,16 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas objfact.ClaveUsoCFDI = objxml.receptor.UsoCFDI; objfact.CveClienteSucursal = -1; - objfact.DtDetalle = CreaDTDetalle(UsuarioActual, objxml.conceptos, objfact.CveSubProyecto, CvePsReconstruccion); - + objfact.DtDetalle = CreaDTDetalle(UsuarioActual, objxml.conceptos, objfact.CveSubProyecto, CvePsReconstruccion, objxml); + objfact.TipoCambioDolares = objxml.comprobante.TipoCambio; objfact.SubTotal = objxml.comprobante.SubTotal; objfact.Descuento = objxml.comprobante.Descuento; objfact.Amortizacion = 0; - objfact.IVA = objxml.Impuestos.Where(x => x.Impuesto == "002" && x.Tipo == "Traslados").Sum(item => item.Importe); - objfact.RetIVA = objxml.Impuestos.Where(x => x.Impuesto == "002" && x.Tipo == "Retenciones").Sum(item => item.Importe); - objfact.RetISR = objxml.Impuestos.Where(x => x.Impuesto == "001" && x.Tipo == "Retenciones").Sum(item => item.Importe); - objfact.IEPS = objxml.Impuestos.Where(x => x.Impuesto == "003").Sum(item => item.Importe); + objfact.IVA = objxml.Impuestos.Where(x => (x.Impuesto == "002" || x.Impuesto == "IVA") && x.Tipo == "Traslados").Sum(item => item.Importe); + objfact.RetIVA = objxml.Impuestos.Where(x => (x.Impuesto == "002" || x.Impuesto == "IVA") && x.Tipo == "Retenciones").Sum(item => item.Importe); + objfact.RetISR = objxml.Impuestos.Where(x => (x.Impuesto == "001" || x.Impuesto == "ISR") && x.Tipo == "Retenciones").Sum(item => item.Importe); + objfact.IEPS = objxml.Impuestos.Where(x => (x.Impuesto == "003" || x.Impuesto == "IEPS")).Sum(item => item.Importe); objfact.Total = objxml.comprobante.Total; objfact.TotalOtrosConceptos = 0; @@ -328,7 +364,7 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas } return objfact; } - private DataTable CreaDTDetalle(Usuario UsuarioActual, List conceptos, int CveSubProyecto, int CvePsReconstruccion) + private DataTable CreaDTDetalle(Usuario UsuarioActual, List conceptos, int CveSubProyecto, int CvePsReconstruccion, XmlSatCFDI objxml) { bool continuar = true; var TmpDT = new DataTable(); @@ -433,14 +469,29 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas } DrSubProyecto = get_GlobalDTSubProyectos(-1, CveSubProyecto, UsuarioActual.CveEmpresa).Rows[0]; + + + if (objxml.comprobante.Version == "3.2") + { + item.ClaveUnidad = item.Unidad; + switch (item.ClaveUnidad) + { + case "TON": item.ClaveUnidad = "A75"; break; + case "No aplica": item.ClaveUnidad = "ACT"; break; + case "LITROS": item.ClaveUnidad = "E32"; break; + case "M3-KM": item.ClaveUnidad = "M73"; break; + } + + } + DrUmSat = GlobalDTPSATUM.FiltroPrimero(string.Format("SATClaveUnidadMedida='{0}'", item.ClaveUnidad)); } - if (continuar && DrUmSat == null ) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida en el catalogo del sat '{item.ClaveUnidad}', favor de contactar a soporte tecnico."); } + if (continuar && DrUmSat == null) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida en el catalogo del sat '{item.ClaveUnidad}', favor de contactar a soporte tecnico."); } if (continuar) { DrUm = get_GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero(string.Format("CveUnidadMedidaSAT={0}", DrUmSat["CveSATUnidadMedida"])); } - if (continuar && DrUm == null) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida relacionada a la clave del sat '{item.ClaveUnidad}', favor de asignarla en el catalogo de unidad de medida."); } + if (continuar && DrUm == null) { continuar = false; strErrores.AppendLine($"No se encontro la unidad de medida relacionada a la clave del sat '{item.ClaveUnidad}', favor de asignarla en el catalogo de unidad de medida."); } if (continuar) { //no se encontro una undidad de medida para @@ -475,24 +526,34 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas Row["CveTipoPS"] = DrPS["CveTipoPS"]; Row["CveTipoInvPS"] = DrPS["Inv_CveMetodoInventario"]; Row["CveTamaño"] = DrPS["CveTamaño"]; - ADSistemaLibrary.SatXml.CFDIConceptoImpuesto impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Traslado"); - decimal sumaimpuesto=0; + CFDIConceptoImpuesto impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Traslado"); + decimal sumaimpuesto = 0; decimal PorcentajeIVA = 0; if (impuesto != null) { decimal decimpuesto = 0; decimal.TryParse(impuesto.TasaOCuota, out decimpuesto); - PorcentajeIVA = decimpuesto/100; - Row["PorcentajeIVA"] = decimpuesto / 100; - Row["ImporteIVA"] = decimpuesto / 100;// impuesto.Importe;//Math.Round(item.Importe * (decimpuesto/100), 2); + PorcentajeIVA = decimpuesto / 100; + Row["PorcentajeIVA"] = PorcentajeIVA; + Row["ImporteIVA"] = impuesto.Importe ;// impuesto.Importe;//Math.Round(item.Importe * (decimpuesto/100), 2); sumaimpuesto += impuesto.Importe; } else { Row["PorcentajeIVA"] = 0; Row["ImporteIVA"] = 0; + if (objxml.comprobante.Version == "3.2") + { + if (item.Importe > 0) + { + PorcentajeIVA = .16M; + Row["PorcentajeIVA"] = PorcentajeIVA; + Row["ImporteIVA"] = item.Importe * PorcentajeIVA;//Math.Round(((item.Importe / (1 + PorcentajeIVA))*.16M),2); + + } + } } - Row["IVA"] = Row["PorcentajeIVA"]; + Row["IVA"] = Row["ImporteIVA"]; impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "003" && x.Tipo == "Traslado"); if (impuesto != null) { @@ -541,7 +602,7 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas Row["TipoDescuento"] = "2"; //Row["Total"] = item.Importe - sumaimpuesto; - Row["Total"] = item.Importe /(1+ PorcentajeIVA); + Row["Total"] = item.Importe / (1 + PorcentajeIVA); Row["TotalImporte"] = item.Importe; Row["SATClaveProdServ"] = item.ClaveProdServ; @@ -579,14 +640,12 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas } } /* -//SatCFDI namespace ADS_CFDI_SAT { - /// - /// clase para contener los valores de un xml CFDI + /// clase para contener los valores de un xml CFDI cambio norama /// public class XmlSatCFDI { @@ -660,6 +719,7 @@ namespace ADS_CFDI_SAT return lcon; } + public static XmlSatCFDI readXML(string fileUrl) { XmlSatCFDI xmlCFDI = new XmlSatCFDI(); @@ -677,7 +737,11 @@ namespace ADS_CFDI_SAT //(canread = xtr.Read()) para evitar ciclos infinitos, todos los .Read() los guardo en la variable Canread y en los while reviso primero esta variable if (File.Exists(fileUrl)) { - using (XmlTextReader xtr = new XmlTextReader(fileUrl)) + XmlReaderSettings settings = new XmlReaderSettings(); + settings.ConformanceLevel = ConformanceLevel.Fragment; + settings.IgnoreWhitespace = true; + settings.IgnoreComments = true; + using (XmlReader xtr = XmlReader.Create(fileUrl, settings)) { while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && xtr.Name == keyComprobante)) @@ -686,40 +750,40 @@ namespace ADS_CFDI_SAT } if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyComprobante) { - xmlCFDI.comprobante.xmlns_cfdi = xtr.GetAttribute("xmlns:cfdi"); - xmlCFDI.comprobante.xmlns_xsi = xtr.GetAttribute("xmlns:xsi"); - xmlCFDI.comprobante.xsi_schemaLocation = xtr.GetAttribute("xsi:schemaLocation"); - xmlCFDI.comprobante.Version = xtr.GetAttribute("Version"); - xmlCFDI.comprobante.Serie = xtr.GetAttribute("Serie"); - xmlCFDI.comprobante.Folio = xtr.GetAttribute("Folio"); - xmlCFDI.comprobante.Fecha = xtr.GetAttribute("Fecha"); - xmlCFDI.comprobante.Moneda = xtr.GetAttribute("Moneda"); - decimal SubTotal = 0; - decimal.TryParse(xtr.GetAttribute("SubTotal"), out SubTotal); - xmlCFDI.comprobante.SubTotal = SubTotal; - - decimal Total = 0; - decimal.TryParse(xtr.GetAttribute("Total"), out Total); - xmlCFDI.comprobante.Total = Total; - - decimal Descuento = 0; - decimal.TryParse(xtr.GetAttribute("Descuento"), out Descuento); - xmlCFDI.comprobante.Descuento = Descuento; - - decimal TipoCambio = 0; - decimal.TryParse(xtr.GetAttribute("TipoCambio"), out TipoCambio); - xmlCFDI.comprobante.TipoCambio = TipoCambio; - - xmlCFDI.comprobante.TipoDeComprobante = xtr.GetAttribute("TipoDeComprobante"); - xmlCFDI.comprobante.FormaPago = xtr.GetAttribute("FormaPago"); - xmlCFDI.comprobante.MetodoPago = xtr.GetAttribute("MetodoPago"); - xmlCFDI.comprobante.CondicionesDePago = xtr.GetAttribute("CondicionesDePago"); - xmlCFDI.comprobante.LugarExpedicion = xtr.GetAttribute("LugarExpedicion"); - xmlCFDI.comprobante.Confirmacion = xtr.GetAttribute("Confirmacion"); - xmlCFDI.comprobante.NoCertificado = xtr.GetAttribute("NoCertificado"); - xmlCFDI.comprobante.Sello = xtr.GetAttribute("Sello"); - xmlCFDI.comprobante.Certificado = xtr.GetAttribute("Certificado"); int Nivel = xtr.Depth; + bool cont = xtr.MoveToFirstAttribute(); + while (cont) + { + + switch (xtr.Name.ToUpper()) + { + case "XMLNS:CFDI": xmlCFDI.comprobante.xmlns_cfdi = xtr.Value; break; + case "XMLNS:XSI": xmlCFDI.comprobante.xmlns_xsi = xtr.Value; break; + case "XSI:SCHEMALOCATION": xmlCFDI.comprobante.xsi_schemaLocation = xtr.Value; break; + case "VERSION": xmlCFDI.comprobante.Version = xtr.Value; break; + case "SERIE": xmlCFDI.comprobante.Serie = xtr.Value; break; + case "FOLIO": xmlCFDI.comprobante.Folio = xtr.Value; break; + case "FECHA": xmlCFDI.comprobante.Fecha = xtr.Value; break; + case "MONEDA": xmlCFDI.comprobante.Moneda = xtr.Value; break; + case "SUBTOTAL": decimal SubTotal = 0; decimal.TryParse(xtr.Value, out SubTotal); xmlCFDI.comprobante.SubTotal = SubTotal; break; + case "TOTAL": decimal Total = 0; decimal.TryParse(xtr.Value, out Total); xmlCFDI.comprobante.Total = Total; break; + case "DESCUENTO": decimal Descuento = 0; decimal.TryParse(xtr.Value, out Descuento); xmlCFDI.comprobante.Descuento = Descuento; break; + case "TIPOCAMBIO": decimal TipoCambio = 0; decimal.TryParse(xtr.Value, out TipoCambio); xmlCFDI.comprobante.TipoCambio = TipoCambio; break; + case "TIPODECOMPROBANTE": xmlCFDI.comprobante.TipoDeComprobante = xtr.Value; break; + case "FORMAPAGO": xmlCFDI.comprobante.FormaPago = xtr.Value; break; + case "FORMADEPAGO": xmlCFDI.comprobante.FormaPago = xtr.Value; break; + case "METODOPAGO": xmlCFDI.comprobante.MetodoPago = xtr.Value; break; + case "METODODEPAGO": xmlCFDI.comprobante.MetodoPago = xtr.Value; break; + case "CONDICIONESDEPAGO": xmlCFDI.comprobante.CondicionesDePago = xtr.Value; break; + case "LUGAREXPEDICION": xmlCFDI.comprobante.LugarExpedicion = xtr.Value; break; + case "CONFIRMACION": xmlCFDI.comprobante.Confirmacion = xtr.Value; break; + case "NOCERTIFICADO": xmlCFDI.comprobante.NoCertificado = xtr.Value; break; + case "SELLO": xmlCFDI.comprobante.Sello = xtr.Value; break; + case "CERTIFICADO": xmlCFDI.comprobante.Certificado = xtr.Value; break; + } + cont = xtr.MoveToNextAttribute(); + } + cont = xtr.MoveToFirstAttribute(); while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } while (canread && xtr.Depth > Nivel) { @@ -727,8 +791,18 @@ namespace ADS_CFDI_SAT { if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyCfdiRelacionados) { - string TipoRelacion = xtr.GetAttribute("TipoRelacion"); int cDepth = xtr.Depth; + + string TipoRelacion = null; + cont = xtr.MoveToFirstAttribute(); + while (cont) + { + switch (xtr.Name.ToUpper()) + { + case "TIPORELACION": TipoRelacion = xtr.Value; break; + } + cont = xtr.MoveToNextAttribute(); + } while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } while (canread && xtr.Depth > cDepth) { @@ -745,22 +819,40 @@ namespace ADS_CFDI_SAT } if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyEmisor) { - xmlCFDI.emisor.RegimenFiscal = xtr.GetAttribute("RegimenFiscal"); - xmlCFDI.emisor.Nombre = xtr.GetAttribute("Nombre"); - xmlCFDI.emisor.Rfc = xtr.GetAttribute("Rfc"); - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } + int curentNivel = xtr.Depth; + cont = xtr.MoveToFirstAttribute(); + while (cont) + { + switch (xtr.Name.ToUpper()) + { + case "REGIMENFISCAL": xmlCFDI.emisor.RegimenFiscal = xtr.Value; break; + case "NOMBRE": xmlCFDI.emisor.Nombre = xtr.Value; break; + case "RFC": xmlCFDI.emisor.Rfc = xtr.Value; break; + } + cont = xtr.MoveToNextAttribute(); + } + while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && curentNivel >= xtr.Depth)) { }//continua hasta que no tenga nodos y (el nodo sea tipo elemnto y ete en el mismo nivel) } if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyReceptor) { - xmlCFDI.receptor.Rfc = xtr.GetAttribute("Rfc"); - xmlCFDI.receptor.Nombre = xtr.GetAttribute("Nombre"); - xmlCFDI.receptor.ResidenciaFiscal = xtr.GetAttribute("ResidenciaFiscal"); - xmlCFDI.receptor.NumRegIdTrib = xtr.GetAttribute("NumRegIdTrib"); - xmlCFDI.receptor.UsoCFDI = xtr.GetAttribute("UsoCFDI"); + int curentNivel = xtr.Depth; + cont = xtr.MoveToFirstAttribute(); + while (cont) + { + switch (xtr.Name.ToUpper()) + { + case "RFC": xmlCFDI.receptor.Rfc = xtr.Value; break; + case "NOMBRE": xmlCFDI.receptor.Nombre = xtr.Value; break; + case "RESIDENCIAFISCAL": xmlCFDI.receptor.ResidenciaFiscal = xtr.Value; break; + case "NUMREGIDTRIB": xmlCFDI.receptor.NumRegIdTrib = xtr.Value; break; + case "USOCFDI": xmlCFDI.receptor.UsoCFDI = xtr.Value; break; + } + cont = xtr.MoveToNextAttribute(); + } - while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } + while ((canread = xtr.Read()) && !(xtr.NodeType == XmlNodeType.Element && curentNivel >= xtr.Depth)) { }//continua hasta que no tenga nodos y (el nodo sea tipo elemnto y ete en el mismo nivel) } if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyConceptos) { @@ -770,25 +862,27 @@ namespace ADS_CFDI_SAT { if (xtr.Name == "cfdi:Concepto") { - CFDIConcepto concepto = new CFDIConcepto(); - concepto.ClaveProdServ = xtr.GetAttribute("ClaveProdServ"); - concepto.NoIdentificacion = xtr.GetAttribute("NoIdentificacion"); - concepto.Cantidad = xtr.GetAttribute("Cantidad"); - concepto.ClaveUnidad = xtr.GetAttribute("ClaveUnidad"); - concepto.Unidad = xtr.GetAttribute("Unidad"); - decimal ValorUnitario = 0; - decimal.TryParse(xtr.GetAttribute("ValorUnitario"), out ValorUnitario); - concepto.ValorUnitario = ValorUnitario; - decimal Importe = 0; - decimal.TryParse(xtr.GetAttribute("Importe"), out Importe); - concepto.Importe = Importe; - decimal DDescuento = 0; - decimal.TryParse(xtr.GetAttribute("Descuento"), out DDescuento); - concepto.Descuento = DDescuento; - concepto.Descripcion = xtr.GetAttribute("Descripcion"); - int cDepthb = xtr.Depth; + CFDIConcepto concepto = new CFDIConcepto(); + cont = xtr.MoveToFirstAttribute(); + while (cont) + { + switch (xtr.Name.ToUpper()) + { + case "CLAVEPRODSERV": concepto.ClaveProdServ = xtr.Value; break; + case "NOIDENTIFICACION": concepto.NoIdentificacion = xtr.Value; break; + case "CANTIDAD": concepto.Cantidad = xtr.Value; break; + case "CLAVEUNIDAD": concepto.ClaveUnidad = xtr.Value; break; + case "UNIDAD": concepto.Unidad = xtr.Value; break; + case "VALORUNITARIO": decimal ValorUnitario = 0; decimal.TryParse(xtr.Value, out ValorUnitario); concepto.ValorUnitario = ValorUnitario; ; break; + case "IMPORTE": decimal Importe = 0; decimal.TryParse(xtr.Value, out Importe); concepto.Importe = Importe; ; break; + case "DESCUENTO": decimal DDescuento = 0; decimal.TryParse(xtr.Value, out DDescuento); concepto.Descuento = DDescuento; ; break; + case "DESCRIPCION": concepto.Descripcion = xtr.Value; break; + } + cont = xtr.MoveToNextAttribute(); + } + xtr.MoveToFirstAttribute(); while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } while (canread && xtr.Depth > cDepthb) { @@ -850,14 +944,14 @@ namespace ADS_CFDI_SAT while (canread && xtr.Depth > cDepth) { CFDIImpuesto impuest = new CFDIImpuesto(); - if (xtr.Name == "cfdi:Traslado" || xtr.Name == "cfdi:Retencion") + if (xtr.Name == "cfdi:Traslado" || xtr.Name == "cfdi:Retencion" && xmlCFDI.comprobante.Version != null) { impuest.Tipo = xtr.LocalName == "Traslado" ? "Traslados" : (xtr.LocalName == "Retencion" ? "Retenciones" : ""); - impuest.Impuesto = xtr.GetAttribute("Impuesto"); + impuest.Impuesto = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("Impuesto") : xtr.GetAttribute("impuesto"); impuest.TipoFactor = xtr.GetAttribute("TipoFactor"); - impuest.TasaOCuota = xtr.GetAttribute("TasaOCuota"); + impuest.TasaOCuota = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("TasaOCuota") : xtr.GetAttribute("tasa"); decimal ImImporte = 0; - decimal.TryParse(xtr.GetAttribute("Importe"), out ImImporte); + decimal.TryParse((xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("Importe") : xtr.GetAttribute("importe")), out ImImporte); impuest.Importe = ImImporte; xmlCFDI.Impuestos.Add(impuest); } @@ -871,7 +965,7 @@ namespace ADS_CFDI_SAT while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } while (canread && xtr.Depth > cDepth) { - if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "TimbreFiscalDigital") + if (xtr.NodeType == XmlNodeType.Element && xtr.LocalName == "TimbreFiscalDigital" && xmlCFDI.comprobante.Version != null) { xmlCFDI.complemento.xmlns_tfd = xtr.GetAttribute("xmlns:tfd"); xmlCFDI.complemento.xsi_schemaLocation = xtr.GetAttribute("xsi:schemaLocation"); @@ -879,9 +973,9 @@ namespace ADS_CFDI_SAT xmlCFDI.complemento.UUID = xtr.GetAttribute("UUID"); xmlCFDI.complemento.FechaTimbrado = xtr.GetAttribute("FechaTimbrado"); xmlCFDI.complemento.RfcProvCertif = xtr.GetAttribute("RfcProvCertif"); - xmlCFDI.complemento.SelloCFD = xtr.GetAttribute("SelloCFD"); - xmlCFDI.complemento.NoCertificadoSAT = xtr.GetAttribute("NoCertificadoSAT"); - xmlCFDI.complemento.SelloSAT = xtr.GetAttribute("SelloSAT"); + xmlCFDI.complemento.SelloCFD = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloCFD") : xtr.GetAttribute("selloCFD"); + xmlCFDI.complemento.NoCertificadoSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("NoCertificadoSAT") : xtr.GetAttribute("noCertificadoSAT"); + xmlCFDI.complemento.SelloSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloSAT") : xtr.GetAttribute("selloSAT"); } while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { } @@ -897,10 +991,8 @@ namespace ADS_CFDI_SAT } } - - } - if (xmlCFDI.comprobante.Version == "3.3") + if (xmlCFDI.comprobante.Version == "3.3" || xmlCFDI.comprobante.Version == "3.2") { return xmlCFDI; } @@ -914,7 +1006,7 @@ namespace ADS_CFDI_SAT public void ImprimirPDF(string NombreArchivo) { XmlSatCFDI objxml = this; - string rutaReporte = string.Format("{0}{1}", Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName, "\\Empresas\\Grales\\Formatos\\CFDIV3.rdlc"); + string rutaReporte = string.Format("{0}{1}", Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).Parent.FullName, "\\Empresas\\Grales\\Formatos\\CFDIV3.rdlc"); ClbNegBICFDv3_2.ClsNegCBBGenerar QR = new ClbNegBICFDv3_2.ClsNegCBBGenerar(); @@ -1081,44 +1173,6 @@ namespace ADS_CFDI_SAT public decimal Descuento { get; set; } public decimal TipoCambio { get; set; } public string TipoDeComprobante { get; set; } - public string TipoDeComprobanteSIG - { - get - { - string retorno = ""; - - if (Version == "3.3") - { - - - - - switch (TipoDeComprobante) - { - case "I": - retorno = "Ing"; - break; - case "E": - retorno = "Egs"; - break; - case "P": - retorno = "PA"; - break; - //case "T": - // retorno = "Traslado"; - // break; - //case "N": - // retorno = "Nómina"; - // break; - - default: - break; - } - } - else { retorno = TipoDeComprobante; } - return retorno; - } - } public string TipoDeComprobanteTexto { get @@ -1149,6 +1203,89 @@ namespace ADS_CFDI_SAT break; } } + if (Version == "3.2") + { + switch (TipoDeComprobante) + { + case "ingreso": + retorno = "Ing"; + break; + case "egreso": + retorno = "Egs"; + break; + case "P": + retorno = "PA"; + break; + //case "T": + // retorno = "Traslado"; + // break; + //case "N": + // retorno = "Nómina"; + // break; + + default: + retorno = TipoDeComprobante; + break; + } + } + else { retorno = TipoDeComprobante; } + return retorno; + } + } + + public string TipoDeComprobanteSIG + { + get + { + string retorno = ""; + if (Version == "3.3") + { + switch (TipoDeComprobante) + { + case "I": + retorno = "Ing"; + break; + case "E": + retorno = "Egs"; + break; + case "P": + retorno = "PA"; + break; + //case "T": + // retorno = "Traslado"; + // break; + //case "N": + // retorno = "Nómina"; + // break; + + default: + break; + } + } + if (Version == "3.2") + { + switch (TipoDeComprobante) + { + case "ingreso": + retorno = "Ing"; + break; + case "egreso": + retorno = "Egs"; + break; + case "P": + retorno = "PA"; + break; + //case "T": + // retorno = "Traslado"; + // break; + //case "N": + // retorno = "Nómina"; + // break; + + default: + break; + } + } else { retorno = TipoDeComprobante; } return retorno; } @@ -1184,6 +1321,7 @@ namespace ADS_CFDI_SAT case "30": retorno = "Aplicación de anticipos"; break; case "31": retorno = "Intermediario pagos"; break; case "99": retorno = "Por definir"; break; + default: retorno = FormaPago; break; } return retorno; @@ -1200,6 +1338,7 @@ namespace ADS_CFDI_SAT { case "PUE": retorno = "Pago en una sola exhibición"; break; case "PPD": retorno = "Pago en parcialidades o diferido"; break; + default: retorno = MetodoPago; break; } return retorno; } @@ -1487,4 +1626,8 @@ namespace ADS_CFDI_SAT public decimal Impuesto_Importe { get; set; } } -}*/ \ No newline at end of file +} + + + + */ \ No newline at end of file