efacturasventas
This commit is contained in:
@@ -2681,7 +2681,7 @@ Namespace Modelos
|
|||||||
CveCuentaContabilizacion = 0
|
CveCuentaContabilizacion = 0
|
||||||
End If
|
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
|
ErrorPrepoliza = True
|
||||||
Else
|
Else
|
||||||
ObjFactura.SeGuardoPrePoliza = True
|
ObjFactura.SeGuardoPrePoliza = True
|
||||||
@@ -2750,8 +2750,8 @@ Namespace Modelos
|
|||||||
If idCuentaContabilizacion > 0 Then
|
If idCuentaContabilizacion > 0 Then
|
||||||
If ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=objContPaqi) Then
|
If ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=objContPaqi) Then
|
||||||
Else
|
Else
|
||||||
ErrorList.Add("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
|
'ErrorList.Add("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico")
|
||||||
ErrorPrepoliza = True
|
'ErrorPrepoliza = True
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
ErrorList.Add(String.Format("Falta asignación de las siguientes cuentas contables: {0}", CuentasContablesInvalidas))
|
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="portlet-title">
|
||||||
<div class="caption font-blue">
|
<div class="caption font-blue">
|
||||||
<i class="fa fa-file-text-o font-blue"></i>
|
<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>
|
||||||
<div class="tools">
|
<div class="tools">
|
||||||
<a href="javascript:;" class="collapse"></a>
|
<a href="javascript:;" class="collapse"></a>
|
||||||
</div>
|
</div>
|
||||||
<div style="float: right;">
|
<div style="float: right;"><label id="Contador"></label>
|
||||||
<input type="text" id="TxtBusqueda" class="form-control input-sm" onkeyup="FiltrarTabla('TxtBusqueda','GVConciliacionemitidasSAT')" style="display: inline-block; margin-right: -20px; width: 150px;">
|
<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')" style="margin-top: -3px;" class="btn btn-circle btn-sm font-bold blue"><i class="icon-magnifier" style="font-weight: bold;"></i></a>
|
<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>
|
</div>
|
||||||
<div class="portlet-body ">
|
<div class="portlet-body ">
|
||||||
@@ -101,11 +101,12 @@
|
|||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
<asp:TemplateField HeaderText="">
|
<asp:TemplateField HeaderText="">
|
||||||
<ItemTemplate>
|
<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>
|
<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>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
</Columns>
|
</Columns>
|
||||||
|
<HeaderStyle CssClass ="SearchADHeader" />
|
||||||
</asp:GridView>
|
</asp:GridView>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -153,6 +154,15 @@
|
|||||||
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
<asp:Content ID="Content8" ContentPlaceHolderID="JS" runat="Server">
|
||||||
<script>
|
<script>
|
||||||
$('#DModalDefaults').modal();
|
$('#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>
|
</script>
|
||||||
</asp:Content>
|
</asp:Content>
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ using Extensiones;
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using ADSistemaLibrary.SatXml;
|
using ADSistemaLibrary.SatXml;
|
||||||
|
//using ADS_CFDI_SAT;
|
||||||
|
|
||||||
public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
||||||
{
|
{
|
||||||
@@ -52,6 +53,8 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
ClsVentas ObjV = new ClsVentas();
|
ClsVentas ObjV = new ClsVentas();
|
||||||
ObjV.ConciliacionemitidasSATGet(UsuarioActual.CveEmpresa);
|
ObjV.ConciliacionemitidasSATGet(UsuarioActual.CveEmpresa);
|
||||||
GVConciliacionemitidasSAT.DataSource = ObjV.DtResultados.FiltraParametros("", "CveVenta");
|
GVConciliacionemitidasSAT.DataSource = ObjV.DtResultados.FiltraParametros("", "CveVenta");
|
||||||
|
Ltlsinregistrar.Text = $"{ObjV.DtResultados.COUNT("FolioFiscal","CveVenta IS NULL")}";
|
||||||
|
ltlTotal.Text = $"{ObjV.DtResultados.Rows.Count}";
|
||||||
ObjV.Dispose();
|
ObjV.Dispose();
|
||||||
GVConciliacionemitidasSAT.DataBind();
|
GVConciliacionemitidasSAT.DataBind();
|
||||||
UpDatosReporte.Update();
|
UpDatosReporte.Update();
|
||||||
@@ -229,6 +232,39 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
int CvePsReconstruccion = DdlPS.SelectedValue.ToEntero();
|
int CvePsReconstruccion = DdlPS.SelectedValue.ToEntero();
|
||||||
int CveSubProyectoReconstruccion = DdlSubProyectoDatos.SelectedValue.ToEntero();
|
int CveSubProyectoReconstruccion = DdlSubProyectoDatos.SelectedValue.ToEntero();
|
||||||
//Modelos.Factura.MMensajeFactura resp;
|
//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)
|
Modelos.Factura objfact = new Modelos.Factura(UsuarioActual)
|
||||||
{
|
{
|
||||||
TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.TextoLimpio,//?que es esto
|
TipoMensajeRespuesta = Modelos.TipoMensajeRespuesta.TextoLimpio,//?que es esto
|
||||||
@@ -242,8 +278,8 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
TipoCambio = objxml.comprobante.TipoCambio,
|
TipoCambio = objxml.comprobante.TipoCambio,
|
||||||
//ConvertirPesos =false,//?para que sirve
|
//ConvertirPesos =false,//?para que sirve
|
||||||
MonedaSAT = objxml.comprobante.Moneda,
|
MonedaSAT = objxml.comprobante.Moneda,
|
||||||
CveMoneda = GlobalDTMonedas.FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT= '{objxml.comprobante.Moneda}' ").ToEntero(),
|
CveMoneda = GlobalDTMonedas.FiltroPrimeroValor("CveMoneda", $" AbreviaturaSAT= '{Moneda}' ").ToEntero(),
|
||||||
Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $" AbreviaturaSAT= '{objxml.comprobante.Moneda}' "),
|
Moneda = GlobalDTMonedas.FiltroPrimeroValor("Moneda", $" AbreviaturaSAT= '{Moneda}' "),
|
||||||
TipoDocto = objxml.comprobante.TipoDeComprobanteSIG,
|
TipoDocto = objxml.comprobante.TipoDeComprobanteSIG,
|
||||||
RefDocto = "",
|
RefDocto = "",
|
||||||
CveMesa = -1,
|
CveMesa = -1,
|
||||||
@@ -292,11 +328,11 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
}
|
}
|
||||||
|
|
||||||
objfact.CveAlmacen = -1;
|
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.FormaPagoSAT33 = objxml.comprobante.FormaPago;
|
||||||
objfact.FormaPago33 = objxml.comprobante.FormaPagoTexto;
|
objfact.FormaPago33 = objxml.comprobante.FormaPagoTexto;
|
||||||
objfact.CveMetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{objxml.comprobante.MetodoPago}'").ToEntero();
|
objfact.CveMetodoPago33 = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero();
|
||||||
objfact.CveMetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{objxml.comprobante.MetodoPago}'").ToEntero();
|
objfact.CveMetodoPago = GlobalDTVtaMetodoPago.FiltroPrimeroValor("CveMetodoPago", $" ClaveMetodoPagoSAT = '{metododepago}'").ToEntero();
|
||||||
objfact.ClaveMetodoPagoSAT = objxml.comprobante.MetodoPago;
|
objfact.ClaveMetodoPagoSAT = objxml.comprobante.MetodoPago;
|
||||||
objfact.MetodoPago33 = objxml.comprobante.MetodoPagoTexto;
|
objfact.MetodoPago33 = objxml.comprobante.MetodoPagoTexto;
|
||||||
objfact.CveUsoCFDI = get_GlobalDTSATUsosCFDI(-1).FiltroPrimeroValor("CveUsoCFDI", $"UsoCFDI = '{objxml.receptor.UsoCFDI}'").ToEntero();
|
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.ClaveUsoCFDI = objxml.receptor.UsoCFDI;
|
||||||
objfact.CveClienteSucursal = -1;
|
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.SubTotal = objxml.comprobante.SubTotal;
|
||||||
objfact.Descuento = objxml.comprobante.Descuento;
|
objfact.Descuento = objxml.comprobante.Descuento;
|
||||||
objfact.Amortizacion = 0;
|
objfact.Amortizacion = 0;
|
||||||
objfact.IVA = objxml.Impuestos.Where(x => x.Impuesto == "002" && x.Tipo == "Traslados").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.Tipo == "Retenciones").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.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").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.Total = objxml.comprobante.Total;
|
||||||
objfact.TotalOtrosConceptos = 0;
|
objfact.TotalOtrosConceptos = 0;
|
||||||
|
|
||||||
@@ -328,7 +364,7 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
}
|
}
|
||||||
return objfact;
|
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;
|
bool continuar = true;
|
||||||
var TmpDT = new DataTable();
|
var TmpDT = new DataTable();
|
||||||
@@ -433,14 +469,29 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
|
|
||||||
}
|
}
|
||||||
DrSubProyecto = get_GlobalDTSubProyectos(-1, CveSubProyecto, UsuarioActual.CveEmpresa).Rows[0];
|
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));
|
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)
|
if (continuar)
|
||||||
{
|
{
|
||||||
DrUm = get_GlobalDTUnidadesMedida(UsuarioActual.CveEmpresa).FiltroPrimero(string.Format("CveUnidadMedidaSAT={0}", DrUmSat["CveSATUnidadMedida"]));
|
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)
|
if (continuar)
|
||||||
{
|
{
|
||||||
//no se encontro una undidad de medida para
|
//no se encontro una undidad de medida para
|
||||||
@@ -475,24 +526,34 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
Row["CveTipoPS"] = DrPS["CveTipoPS"];
|
Row["CveTipoPS"] = DrPS["CveTipoPS"];
|
||||||
Row["CveTipoInvPS"] = DrPS["Inv_CveMetodoInventario"];
|
Row["CveTipoInvPS"] = DrPS["Inv_CveMetodoInventario"];
|
||||||
Row["CveTamaño"] = DrPS["CveTamaño"];
|
Row["CveTamaño"] = DrPS["CveTamaño"];
|
||||||
ADSistemaLibrary.SatXml.CFDIConceptoImpuesto impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Traslado");
|
CFDIConceptoImpuesto impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "002" && x.Tipo == "Traslado");
|
||||||
decimal sumaimpuesto=0;
|
decimal sumaimpuesto = 0;
|
||||||
decimal PorcentajeIVA = 0;
|
decimal PorcentajeIVA = 0;
|
||||||
if (impuesto != null)
|
if (impuesto != null)
|
||||||
{
|
{
|
||||||
decimal decimpuesto = 0;
|
decimal decimpuesto = 0;
|
||||||
decimal.TryParse(impuesto.TasaOCuota, out decimpuesto);
|
decimal.TryParse(impuesto.TasaOCuota, out decimpuesto);
|
||||||
PorcentajeIVA = decimpuesto/100;
|
PorcentajeIVA = decimpuesto / 100;
|
||||||
Row["PorcentajeIVA"] = decimpuesto / 100;
|
Row["PorcentajeIVA"] = PorcentajeIVA;
|
||||||
Row["ImporteIVA"] = decimpuesto / 100;// impuesto.Importe;//Math.Round(item.Importe * (decimpuesto/100), 2);
|
Row["ImporteIVA"] = impuesto.Importe ;// impuesto.Importe;//Math.Round(item.Importe * (decimpuesto/100), 2);
|
||||||
sumaimpuesto += impuesto.Importe;
|
sumaimpuesto += impuesto.Importe;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Row["PorcentajeIVA"] = 0;
|
Row["PorcentajeIVA"] = 0;
|
||||||
Row["ImporteIVA"] = 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");
|
impuesto = item.Impuestos.FirstOrDefault(x => x.Impuesto == "003" && x.Tipo == "Traslado");
|
||||||
if (impuesto != null)
|
if (impuesto != null)
|
||||||
{
|
{
|
||||||
@@ -541,7 +602,7 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
Row["TipoDescuento"] = "2";
|
Row["TipoDescuento"] = "2";
|
||||||
|
|
||||||
//Row["Total"] = item.Importe - sumaimpuesto;
|
//Row["Total"] = item.Importe - sumaimpuesto;
|
||||||
Row["Total"] = item.Importe /(1+ PorcentajeIVA);
|
Row["Total"] = item.Importe / (1 + PorcentajeIVA);
|
||||||
Row["TotalImporte"] = item.Importe;
|
Row["TotalImporte"] = item.Importe;
|
||||||
|
|
||||||
Row["SATClaveProdServ"] = item.ClaveProdServ;
|
Row["SATClaveProdServ"] = item.ClaveProdServ;
|
||||||
@@ -579,14 +640,12 @@ public partial class Ventas_RepConciliacionEmitidosSat : ClsPaginas
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
//SatCFDI
|
|
||||||
namespace ADS_CFDI_SAT
|
namespace ADS_CFDI_SAT
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// clase para contener los valores de un xml CFDI
|
/// clase para contener los valores de un xml CFDI cambio norama
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class XmlSatCFDI
|
public class XmlSatCFDI
|
||||||
{
|
{
|
||||||
@@ -660,6 +719,7 @@ namespace ADS_CFDI_SAT
|
|||||||
|
|
||||||
return lcon;
|
return lcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static XmlSatCFDI readXML(string fileUrl)
|
public static XmlSatCFDI readXML(string fileUrl)
|
||||||
{
|
{
|
||||||
XmlSatCFDI xmlCFDI = new XmlSatCFDI();
|
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
|
//(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))
|
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))
|
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)
|
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;
|
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.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
||||||
while (canread && xtr.Depth > Nivel)
|
while (canread && xtr.Depth > Nivel)
|
||||||
{
|
{
|
||||||
@@ -727,8 +791,18 @@ namespace ADS_CFDI_SAT
|
|||||||
{
|
{
|
||||||
if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyCfdiRelacionados)
|
if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyCfdiRelacionados)
|
||||||
{
|
{
|
||||||
string TipoRelacion = xtr.GetAttribute("TipoRelacion");
|
|
||||||
int cDepth = xtr.Depth;
|
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.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
||||||
while (canread && xtr.Depth > cDepth)
|
while (canread && xtr.Depth > cDepth)
|
||||||
{
|
{
|
||||||
@@ -745,22 +819,40 @@ namespace ADS_CFDI_SAT
|
|||||||
}
|
}
|
||||||
if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyEmisor)
|
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)
|
if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyReceptor)
|
||||||
{
|
{
|
||||||
xmlCFDI.receptor.Rfc = xtr.GetAttribute("Rfc");
|
int curentNivel = xtr.Depth;
|
||||||
xmlCFDI.receptor.Nombre = xtr.GetAttribute("Nombre");
|
cont = xtr.MoveToFirstAttribute();
|
||||||
xmlCFDI.receptor.ResidenciaFiscal = xtr.GetAttribute("ResidenciaFiscal");
|
while (cont)
|
||||||
xmlCFDI.receptor.NumRegIdTrib = xtr.GetAttribute("NumRegIdTrib");
|
{
|
||||||
xmlCFDI.receptor.UsoCFDI = xtr.GetAttribute("UsoCFDI");
|
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)
|
if (xtr.NodeType == XmlNodeType.Element && xtr.Name == keyConceptos)
|
||||||
{
|
{
|
||||||
@@ -770,25 +862,27 @@ namespace ADS_CFDI_SAT
|
|||||||
{
|
{
|
||||||
if (xtr.Name == "cfdi:Concepto")
|
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;
|
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.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
||||||
while (canread && xtr.Depth > cDepthb)
|
while (canread && xtr.Depth > cDepthb)
|
||||||
{
|
{
|
||||||
@@ -850,14 +944,14 @@ namespace ADS_CFDI_SAT
|
|||||||
while (canread && xtr.Depth > cDepth)
|
while (canread && xtr.Depth > cDepth)
|
||||||
{
|
{
|
||||||
CFDIImpuesto impuest = new CFDIImpuesto();
|
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.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.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 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;
|
impuest.Importe = ImImporte;
|
||||||
xmlCFDI.Impuestos.Add(impuest);
|
xmlCFDI.Impuestos.Add(impuest);
|
||||||
}
|
}
|
||||||
@@ -871,7 +965,7 @@ namespace ADS_CFDI_SAT
|
|||||||
while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
||||||
while (canread && xtr.Depth > cDepth)
|
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.xmlns_tfd = xtr.GetAttribute("xmlns:tfd");
|
||||||
xmlCFDI.complemento.xsi_schemaLocation = xtr.GetAttribute("xsi:schemaLocation");
|
xmlCFDI.complemento.xsi_schemaLocation = xtr.GetAttribute("xsi:schemaLocation");
|
||||||
@@ -879,9 +973,9 @@ namespace ADS_CFDI_SAT
|
|||||||
xmlCFDI.complemento.UUID = xtr.GetAttribute("UUID");
|
xmlCFDI.complemento.UUID = xtr.GetAttribute("UUID");
|
||||||
xmlCFDI.complemento.FechaTimbrado = xtr.GetAttribute("FechaTimbrado");
|
xmlCFDI.complemento.FechaTimbrado = xtr.GetAttribute("FechaTimbrado");
|
||||||
xmlCFDI.complemento.RfcProvCertif = xtr.GetAttribute("RfcProvCertif");
|
xmlCFDI.complemento.RfcProvCertif = xtr.GetAttribute("RfcProvCertif");
|
||||||
xmlCFDI.complemento.SelloCFD = xtr.GetAttribute("SelloCFD");
|
xmlCFDI.complemento.SelloCFD = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloCFD") : xtr.GetAttribute("selloCFD");
|
||||||
xmlCFDI.complemento.NoCertificadoSAT = xtr.GetAttribute("NoCertificadoSAT");
|
xmlCFDI.complemento.NoCertificadoSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("NoCertificadoSAT") : xtr.GetAttribute("noCertificadoSAT");
|
||||||
xmlCFDI.complemento.SelloSAT = xtr.GetAttribute("SelloSAT");
|
xmlCFDI.complemento.SelloSAT = xmlCFDI.comprobante.Version == "3.3" ? xtr.GetAttribute("SelloSAT") : xtr.GetAttribute("selloSAT");
|
||||||
|
|
||||||
}
|
}
|
||||||
while ((canread = xtr.Read()) && xtr.NodeType != XmlNodeType.Element) { }
|
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;
|
return xmlCFDI;
|
||||||
}
|
}
|
||||||
@@ -914,7 +1006,7 @@ namespace ADS_CFDI_SAT
|
|||||||
public void ImprimirPDF(string NombreArchivo)
|
public void ImprimirPDF(string NombreArchivo)
|
||||||
{
|
{
|
||||||
XmlSatCFDI objxml = this;
|
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();
|
ClbNegBICFDv3_2.ClsNegCBBGenerar QR = new ClbNegBICFDv3_2.ClsNegCBBGenerar();
|
||||||
@@ -1081,44 +1173,6 @@ namespace ADS_CFDI_SAT
|
|||||||
public decimal Descuento { get; set; }
|
public decimal Descuento { get; set; }
|
||||||
public decimal TipoCambio { get; set; }
|
public decimal TipoCambio { get; set; }
|
||||||
public string TipoDeComprobante { 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
|
public string TipoDeComprobanteTexto
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -1149,6 +1203,89 @@ namespace ADS_CFDI_SAT
|
|||||||
break;
|
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; }
|
else { retorno = TipoDeComprobante; }
|
||||||
return retorno;
|
return retorno;
|
||||||
}
|
}
|
||||||
@@ -1184,6 +1321,7 @@ namespace ADS_CFDI_SAT
|
|||||||
case "30": retorno = "Aplicación de anticipos"; break;
|
case "30": retorno = "Aplicación de anticipos"; break;
|
||||||
case "31": retorno = "Intermediario pagos"; break;
|
case "31": retorno = "Intermediario pagos"; break;
|
||||||
case "99": retorno = "Por definir"; break;
|
case "99": retorno = "Por definir"; break;
|
||||||
|
default: retorno = FormaPago; break;
|
||||||
|
|
||||||
}
|
}
|
||||||
return retorno;
|
return retorno;
|
||||||
@@ -1200,6 +1338,7 @@ namespace ADS_CFDI_SAT
|
|||||||
{
|
{
|
||||||
case "PUE": retorno = "Pago en una sola exhibición"; break;
|
case "PUE": retorno = "Pago en una sola exhibición"; break;
|
||||||
case "PPD": retorno = "Pago en parcialidades o diferido"; break;
|
case "PPD": retorno = "Pago en parcialidades o diferido"; break;
|
||||||
|
default: retorno = MetodoPago; break;
|
||||||
}
|
}
|
||||||
return retorno;
|
return retorno;
|
||||||
}
|
}
|
||||||
@@ -1487,4 +1626,8 @@ namespace ADS_CFDI_SAT
|
|||||||
public decimal Impuesto_Importe { get; set; }
|
public decimal Impuesto_Importe { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
}*/
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user