efacturasventas
This commit is contained in:
@@ -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))
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -40,14 +40,14 @@
|
||||
<div class="portlet-title">
|
||||
<div class="caption font-blue">
|
||||
<i class="fa fa-file-text-o font-blue"></i>
|
||||
<span class="caption-subject bold uppercase">Facturas emitidas en el sat sin registrar (<%= GVConciliacionemitidasSAT.Rows.Count %>)</span>
|
||||
<span class="caption-subject bold uppercase">Facturas emitidas en el sat sin registrar <asp:Literal ID="Ltlsinregistrar" runat="server"></asp:Literal> de <asp:Literal ID="ltlTotal" runat="server"></asp:Literal></span>
|
||||
</div>
|
||||
<div class="tools">
|
||||
<a href="javascript:;" class="collapse"></a>
|
||||
</div>
|
||||
<div style="float: right;">
|
||||
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="FiltrarTabla('TxtBusqueda','GVConciliacionemitidasSAT')" style="display: inline-block; margin-right: -20px; width: 150px;">
|
||||
<a href="javascript:;" onclick="FiltrarTabla('TxtBusqueda','GVConciliacionemitidasSAT')" style="margin-top: -3px;" class="btn btn-circle btn-sm font-bold blue"><i class="icon-magnifier" style="font-weight: bold;"></i></a>
|
||||
<div style="float: right;"><label id="Contador"></label>
|
||||
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="FiltrarTabla('#TxtBusqueda','.GVConciliacionemitidasSAT','#Contador')" style="display: inline-block; margin-right: -20px; width: 150px;">
|
||||
<a href="javascript:;" onclick="FiltrarTabla('#TxtBusqueda','.GVConciliacionemitidasSAT','#Contador')" style="margin-top: -3px;" class="btn btn-circle btn-sm font-bold blue"><i class="icon-magnifier" style="font-weight: bold;"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portlet-body ">
|
||||
@@ -98,14 +98,15 @@
|
||||
<ItemTemplate>
|
||||
<%--<asp:Label ID="lblrutaXml" runat="server" Text='<%# Eval("RutaXml")%>'> </asp:Label>--%>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</asp:TemplateField>
|
||||
<asp:TemplateField HeaderText="">
|
||||
<ItemTemplate>
|
||||
<asp:HyperLink runat="server" NavigateUrl='<%# Eval("CveVenta","/Ventas/Ventas.aspx?CveVenta={0}") %>' CssClass="btn btn-circle btn-sm btn-success" Visible='<%# (Eval("CveVenta").ToString() =="" ? false :true) %>' ><i class="fa fa-info"></i>r</asp:HyperLink>
|
||||
<asp:HyperLink runat="server" NavigateUrl='<%# Eval("CveVenta","/Ventas/Ventas.aspx?CveVenta={0}") %>' CssClass="btn btn-circle btn-sm btn-success" Visible='<%# (Eval("CveVenta").ToString() =="" ? false :true) %>'><i class="fa fa-info"></i>r</asp:HyperLink>
|
||||
<asp:LinkButton ID="LnkRegistrar" Visible='<%# Eval("CveVenta").ToString() =="" %>' runat="server" data-toggle="tooltip" ToolTip="Registrar" CssClass="btn btn-circle btn-sm blue" OnClick="LnkRegistrar_Click"><i class="fa fa-plus"></i></asp:LinkButton>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
<HeaderStyle CssClass ="SearchADHeader" />
|
||||
</asp:GridView>
|
||||
</div>
|
||||
</div>
|
||||
@@ -153,6 +154,15 @@
|
||||
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
||||
<script>
|
||||
$('#DModalDefaults').modal();
|
||||
|
||||
function FiltrarTabla(idtxt, idtable, idcontador) {
|
||||
if ($('' + idtxt).val() == '') { $('table' + idtable + ' tr').css('display', 'table-row'); }
|
||||
else { $('table' + idtable + ' tr:not(.ADtr):not(.SearchADHeader)').css('display', 'none'); $('table' + idtable + ' tr:contains("' + $('' + idtxt).val() + '")').css('display', 'table-row'); }
|
||||
if ($('' + idcontador).length > 0) {
|
||||
$('' + idcontador).html('(' + $('' + idtable + ' tr:not(.ADtr):not(.SearchADHeader):visible').length +'/'+ $('' + idtable + ' tr:not(.ADtr):not(.SearchADHeader)').length + ')');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
</asp:Content>
|
||||
|
||||
|
||||
@@ -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<CFDIConcepto> conceptos, int CveSubProyecto, int CvePsReconstruccion)
|
||||
private DataTable CreaDTDetalle(Usuario UsuarioActual, List<CFDIConcepto> 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
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// clase para contener los valores de un xml CFDI
|
||||
/// clase para contener los valores de un xml CFDI cambio norama
|
||||
/// </summary>
|
||||
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; }
|
||||
}
|
||||
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user