-- manejo caracter especial
This commit is contained in:
@@ -1855,7 +1855,8 @@ Partial Class Compras_Compras
|
|||||||
|
|
||||||
If Validada And Not EnListadoEFOS Then
|
If Validada And Not EnListadoEFOS Then
|
||||||
Try
|
Try
|
||||||
XMLDoc.LoadXml(File.ReadAllText(Archivo).Replace("<br>", "").Replace("<", "").Replace("o;?", ""))
|
' &HFEFF, es el código ZERO WIDTH NO-BREAK SPACE
|
||||||
|
XMLDoc.LoadXml(File.ReadAllText(Archivo).Replace("<br>", "").Replace("<", "").Replace("o;?", "").Replace(ChrW(&HFEFF), ""))
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Try
|
Try
|
||||||
Dim oReader As New StreamReader(Archivo, Encoding.GetEncoding("ISO-8859-1"))
|
Dim oReader As New StreamReader(Archivo, Encoding.GetEncoding("ISO-8859-1"))
|
||||||
@@ -1865,411 +1866,416 @@ Partial Class Compras_Compras
|
|||||||
GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString())
|
GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString())
|
||||||
End Try
|
End Try
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
|
If XMLDoc.InnerXml = "" Then
|
||||||
|
Alert("No se pudo procesar el archivo xml.", TipoMensaje.MsgError)
|
||||||
|
Return ""
|
||||||
|
End If
|
||||||
|
|
||||||
CreaDTConceptos()
|
CreaDTConceptos()
|
||||||
CargaComprobanteXML(XMLDoc)
|
CargaComprobanteXML(XMLDoc)
|
||||||
|
|
||||||
If NuevaValidacionXML = 1 OrElse (Version = "3.3" OrElse Version = "4.0") Then
|
If NuevaValidacionXML = 1 OrElse (Version = "3.3" OrElse Version = "4.0") Then
|
||||||
Dim Xml As String
|
Dim Xml As String
|
||||||
Dim nodo As XmlNode = XMLDoc.DocumentElement
|
Dim nodo As XmlNode = XMLDoc.DocumentElement
|
||||||
Dim Version As String = ValorXML(nodo, "version")
|
Dim Version As String = ValorXML(nodo, "version")
|
||||||
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
|
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
|
||||||
Dim cfdVer As String = ""
|
Dim cfdVer As String = ""
|
||||||
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
|
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
|
||||||
|
|
||||||
If Version = "3.2" Then
|
If Version = "3.2" Then
|
||||||
Prefijo = "cfd"
|
Prefijo = "cfd"
|
||||||
cfdVer = "http://www.sat.gob.mx/cfd/2"
|
cfdVer = "http://www.sat.gob.mx/cfd/2"
|
||||||
ElseIf Version = "3.3" Then
|
ElseIf Version = "3.3" Then
|
||||||
cfdVer = "http://www.sat.gob.mx/cfd/3"
|
cfdVer = "http://www.sat.gob.mx/cfd/3"
|
||||||
Else ' se considera que es la version 4.0
|
Else ' se considera que es la version 4.0
|
||||||
cfdVer = "http://www.sat.gob.mx/cfd/4"
|
cfdVer = "http://www.sat.gob.mx/cfd/4"
|
||||||
|
End If
|
||||||
|
|
||||||
|
'If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
|
||||||
|
|
||||||
|
namespaces.AddNamespace(Prefijo, cfdVer)
|
||||||
|
namespaces.AddNamespace("aerolineas", "http://www.sat.gob.mx/aerolineas")
|
||||||
|
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
|
||||||
|
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
|
||||||
|
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
|
||||||
|
|
||||||
|
Dim nodeconceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces)
|
||||||
|
Xml = Replace(nodeconceptos.OuterXml, "<cfdi:", "<")
|
||||||
|
Xml = Xml.Replace("</cfdi:", "</")
|
||||||
|
Xml = Xml.Replace("xmlns:cfdi=""http://www.sat.gob.mx/cfd/3""", "")
|
||||||
|
Xml = Xml.Replace("xmlns:cfdi=""http://www.sat.gob.mx/cfd/4""", "")
|
||||||
|
Xml = Xml.Replace(""", "") 'comillas
|
||||||
|
Xml = System.Web.HttpUtility.HtmlDecode(Xml.ToString)
|
||||||
|
Xml = Xml.Replace(Chr(13), "") 'salto de linea
|
||||||
|
Xml = Xml.Replace(Chr(10), "")
|
||||||
|
Xml = Xml.Replace("<br />", "") 'salto de linea html
|
||||||
|
Xml = Xml.Replace("<br>", "")
|
||||||
|
Xml = Xml.Replace("<", "")
|
||||||
|
Xml = Xml.Replace("&", "") 'adicional, si hay otros
|
||||||
|
|
||||||
|
If ObjeFacturas.GetFacturasComparacionXML(Version, Xml, UsuarioActual.CveEmpresa) Then
|
||||||
|
TmpDT = ObjeFacturas.DtResultados
|
||||||
|
TmpDT.Columns.Add("CveSATPSActualizado")
|
||||||
|
SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL
|
||||||
|
|
||||||
|
If Not TmpDT.Columns.Contains("Amortizacion") Then
|
||||||
|
TmpDT.Columns.Add("Amortizacion", GetType(Decimal))
|
||||||
|
End If
|
||||||
|
|
||||||
|
AddPS2(False)
|
||||||
|
|
||||||
|
'VALIDA QUE EL XML SI VIENE CON EL CODIGO SAT 01010101
|
||||||
|
Dim ProductosCodigoSATNoPermitidos As New StringBuilder("")
|
||||||
|
For Each drr As DataRow In TmpDT.FiltraParametros("ClaveProdServ = '01010101'").Rows
|
||||||
|
ProductosCodigoSATNoPermitidos.AppendFormat("{0}</br>", drr("PS"))
|
||||||
|
Next
|
||||||
|
|
||||||
|
If TmpDT.MAX("RetISRPorcentaje").ToDecimal = 0.0125 Then RetISRResico = True
|
||||||
|
If TmpDT.MAX("RetIVAPorcentaje").ToDecimal = 0.04 Then RetIVAFlete = True
|
||||||
|
|
||||||
|
If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then
|
||||||
|
Dim mensajeAdvertencia As String = String.Format("El XML que intenta registrar contiene partidas o artículos con código SAT ‘01010101’ el cual no es aceptado, hable con su proveedor para cancelar y/o refacturar un XML válido.<br/> Partidas o artículos con código ‘01010101’: </br></br>{0}", ProductosCodigoSATNoPermitidos.ToString)
|
||||||
|
Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia)
|
||||||
|
If UsuarioActual.CveEmpresa.Contiene(119, 158) AndAlso Not UsuarioActual.CveUsuario.Contiene(1719, 1721) Then BtnGuardar.Enabled = False '' solo se activa para el usuario Sara.JAM
|
||||||
|
BtnGuardar.ToolTip = "No se permite registrar facturas con conceptos con código '01010101'. Solicite al proveedor un nuevo comprobante."
|
||||||
|
End If
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Dim SbValRet As New StringBuilder
|
||||||
|
For Each concepto As XmlNode In nodeconceptos
|
||||||
|
' Obtener la descripción del concepto
|
||||||
|
Dim descripcion As String = ValorXML(concepto, "Descripcion")
|
||||||
|
Dim importeValue As Decimal = Decimal.Parse(ValorXML(concepto, "Importe"))
|
||||||
|
|
||||||
|
' Seleccionar el nodo de Impuestos dentro de Concepto, si existe
|
||||||
|
Dim impuestosNode As XmlNode = concepto.SelectSingleNode("cfdi:Impuestos", namespaces)
|
||||||
|
|
||||||
|
If Not impuestosNode Is Nothing Then
|
||||||
|
' Seleccionar los nodos de Retencion dentro de Impuestos
|
||||||
|
Dim retenciones As XmlNodeList = impuestosNode.SelectNodes("cfdi:Retenciones/cfdi:Retencion", namespaces)
|
||||||
|
For Each retencion As XmlNode In retenciones
|
||||||
|
' Obtener los valores de los atributos Base e Importe
|
||||||
|
Dim baseValue As Decimal = Decimal.Parse(ValorXML(retencion, "Base"))
|
||||||
|
Dim impuesto As String = ValorXML(retencion, "Impuesto")
|
||||||
|
|
||||||
|
If impuesto = "001" Then
|
||||||
|
impuesto = "Retención ISR"
|
||||||
|
ElseIf impuesto = "002" Then
|
||||||
|
impuesto = "Retención IVA"
|
||||||
|
ElseIf impuesto = "003" Then
|
||||||
|
impuesto = "IEPS"
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
' Validar si Base coincide con Importe
|
||||||
|
If baseValue <> importeValue Then
|
||||||
|
'SbValRet.Append($"La base e importe de la retención del impuesto {impuesto} no coinciden para {descripcion}. Base: {baseValue.ToString()}, Importe: {importeValue.ToString()} <br>")
|
||||||
|
SbValRet.Append($"Producto: {descripcion} La base e importe del impuesto {impuesto} no coincide Base: {baseValue.ToString()}, Importe Producto: {importeValue.ToString()} <br>")
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
If SbValRet.ToString.Trim.Length > 0 Then
|
||||||
|
Alert(SbValRet.ToString, TipoMensaje.MsgAdvertencia)
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Else
|
||||||
|
CargaConceptosXML(XMLDoc)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
'If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
|
Select Case TipoComprobante
|
||||||
|
Case "ingreso" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
||||||
|
Case "egreso" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False
|
||||||
|
Case "I"
|
||||||
|
DdlTipoComprobante.SelectedValue = "Fac"
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC"))
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
||||||
|
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("6"))
|
||||||
|
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("11"))
|
||||||
|
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DdlTipoCompra.Items.Add(New ListItem("Recolección", "14"))
|
||||||
|
Case "E"
|
||||||
|
DdlTipoComprobante.SelectedValue = "NC"
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac"))
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant"))
|
||||||
|
ChkAplicaNotaCredito.Enabled = False
|
||||||
|
|
||||||
namespaces.AddNamespace(Prefijo, cfdVer)
|
DdlTipoCompra.Items.Clear()
|
||||||
namespaces.AddNamespace("aerolineas", "http://www.sat.gob.mx/aerolineas")
|
DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1"))
|
||||||
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
|
DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6"))
|
||||||
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
|
DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
|
||||||
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
|
DdlTipoCompra.Items.Add(New ListItem("NC Por Devolución", "11"))
|
||||||
|
DdlTipoCompra.Items.Add(New ListItem("Garantía", "12"))
|
||||||
|
Case "T"
|
||||||
|
DdlTipoCompra.Items.Clear()
|
||||||
|
DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
|
||||||
|
DdlTipoComprobante.SelectedValue = "Fac"
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC"))
|
||||||
|
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
||||||
|
|
||||||
Dim nodeconceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces)
|
End Select
|
||||||
Xml = Replace(nodeconceptos.OuterXml, "<cfdi:", "<")
|
|
||||||
Xml = Xml.Replace("</cfdi:", "</")
|
|
||||||
Xml = Xml.Replace("xmlns:cfdi=""http://www.sat.gob.mx/cfd/3""", "")
|
|
||||||
Xml = Xml.Replace("xmlns:cfdi=""http://www.sat.gob.mx/cfd/4""", "")
|
|
||||||
Xml = Xml.Replace(""", "") 'comillas
|
|
||||||
Xml = System.Web.HttpUtility.HtmlDecode(Xml.ToString)
|
|
||||||
Xml = Xml.Replace(Chr(13), "") 'salto de linea
|
|
||||||
Xml = Xml.Replace(Chr(10), "")
|
|
||||||
Xml = Xml.Replace("<br />", "") 'salto de linea html
|
|
||||||
Xml = Xml.Replace("<br>", "")
|
|
||||||
Xml = Xml.Replace("<", "")
|
|
||||||
Xml = Xml.Replace("&", "") 'adicional, si hay otros
|
|
||||||
|
|
||||||
If ObjeFacturas.GetFacturasComparacionXML(Version, Xml, UsuarioActual.CveEmpresa) Then
|
'DIV ALIAS
|
||||||
TmpDT = ObjeFacturas.DtResultados
|
CargaPSAlias()
|
||||||
TmpDT.Columns.Add("CveSATPSActualizado")
|
|
||||||
SubTotalConceptos = TmpDT.SUMD("Total").RoundSQL
|
RFC = dr("RFCDe").ToString
|
||||||
|
RFCProveedor = RFC
|
||||||
|
TxtFecha.Text = dr("FechaFactura").ToString.ToDate.ToShortDateString
|
||||||
|
TxtSerie.Text = dr("Serie").ToString
|
||||||
|
TxtFolio.Text = dr("Folio").ToString
|
||||||
|
DdlValidadaSAT.SelectedValue = If(dr("FueValidado").ToString.Contiene("Si", "1"), "Si", "No")
|
||||||
|
DdlValidadaSAT.Enabled = False
|
||||||
|
LblTipoFact.Text = dr("TipoFactura").ToString
|
||||||
|
SerieVieja = dr("Serie").ToString
|
||||||
|
LblMetodoPago.Text = MetodoPago
|
||||||
|
|
||||||
|
Dim SubTotal2, IVA, IEPS As Decimal
|
||||||
|
IVA = TrasladoIVA
|
||||||
|
|
||||||
|
If Not UsuarioActual.TienePermisoProceso(130) Then
|
||||||
|
TxtFolio.Enabled = False
|
||||||
|
TxtSerie.Enabled = False
|
||||||
|
End If
|
||||||
|
|
||||||
|
'PERMISO PARA MODIFICACIÓN DE FECHA AUN CON FACTURA
|
||||||
|
TxtFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
||||||
|
ImgFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
||||||
|
CEFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
||||||
|
|
||||||
|
TxtSubTotal.Enabled = False
|
||||||
|
TxtDescuento.Enabled = False
|
||||||
|
TxtSubTotal2.Enabled = False
|
||||||
|
TxtIVA.Enabled = False
|
||||||
|
TxtTotal.Enabled = False
|
||||||
|
DdlProveedor.Enabled = False
|
||||||
|
|
||||||
|
If TxtFolio.Text.Trim = "" Then TxtFolio.Enabled = True : TxtSerie.Enabled = True
|
||||||
|
|
||||||
|
If UsuarioActual.TienePermisoProceso(112) Then
|
||||||
|
PermisoEdicionManual = True
|
||||||
|
TxtSubTotal.Enabled = True
|
||||||
|
TxtDescuento.Enabled = True
|
||||||
|
TxtSubTotal2.Enabled = True
|
||||||
|
TxtIVA.Enabled = True
|
||||||
|
TxtTotal.Enabled = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
If UsuarioActual.Empresa.Funcionalidad(118) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Fac" Then
|
||||||
|
VerVales.Visible = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
If TieneAnticiposXML Then 'si tiene anticipos, limpia los descuentos
|
||||||
|
'LblAmortizacion.Text = ImporteAnticipo.FormatoNumero
|
||||||
|
TxtDescuento.Text = "0.00"
|
||||||
|
LblAmortizacion.Text = Descuentos.FormatoNumero
|
||||||
|
'limpia los descuentos
|
||||||
|
For Each drr As DataRow In TmpDT.Rows
|
||||||
|
'drr("Total") = drr("Total").ToString.ToDecimal + drr("Descuento").ToString.ToDecimal
|
||||||
|
drr("Amortizacion") = drr("Descuento") 'pasamos el importe de descuento a amortizacion
|
||||||
|
drr("Descuento") = 0.00
|
||||||
|
Next
|
||||||
|
Amortizaciones = Descuentos
|
||||||
|
Descuentos = 0
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim Msg As String = ""
|
||||||
|
If Version = "3.3" Or Version = "4.0" Then
|
||||||
|
|
||||||
If Not TmpDT.Columns.Contains("Amortizacion") Then
|
If Not TmpDT.Columns.Contains("Amortizacion") Then
|
||||||
TmpDT.Columns.Add("Amortizacion", GetType(Decimal))
|
TmpDT.Columns.Add("Amortizacion", GetType(Decimal))
|
||||||
End If
|
End If
|
||||||
|
TmpDT.AcceptChanges()
|
||||||
|
ValidacionesTotalesXml()
|
||||||
|
Else
|
||||||
|
'PRUEBA
|
||||||
|
'http://rm/Compras/Compras.aspx?CveFactura=122518 Emp: 48
|
||||||
|
|
||||||
AddPS2(False)
|
'tTotal = Math.Round(SubTotal2 + IVA - RetencionIVA - RetencionISR + IEPS + OtrosImpuestos, 2)
|
||||||
|
HdnCompraSaldo.Value = Total.ToString
|
||||||
|
CompraSaldo = Total
|
||||||
|
Dim AjustaUltimoConcepto As Boolean = False
|
||||||
|
|
||||||
'VALIDA QUE EL XML SI VIENE CON EL CODIGO SAT 01010101
|
'AGREGA IEPS COMO CONCEPTO
|
||||||
Dim ProductosCodigoSATNoPermitidos As New StringBuilder("")
|
If TrasladoIEPS > 0 And UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero > 0 Then
|
||||||
For Each drr As DataRow In TmpDT.FiltraParametros("ClaveProdServ = '01010101'").Rows
|
AgregarConceptoIEPS(TrasladoIEPS, UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero)
|
||||||
ProductosCodigoSATNoPermitidos.AppendFormat("{0}</br>", drr("PS"))
|
' TrasladoIEPS = 0
|
||||||
Next
|
End If
|
||||||
|
'en otro impuesto lo esta registrando en ajuste en automatico
|
||||||
If TmpDT.MAX("RetISRPorcentaje").ToDecimal = 0.0125 Then RetISRResico = True
|
If OtrosImpuestos > 0 Then
|
||||||
If TmpDT.MAX("RetIVAPorcentaje").ToDecimal = 0.04 Then RetIVAFlete = True
|
AjustaUltimoConcepto = True
|
||||||
|
|
||||||
If ProductosCodigoSATNoPermitidos.ToString.Length > 0 Then
|
|
||||||
Dim mensajeAdvertencia As String = String.Format("El XML que intenta registrar contiene partidas o artículos con código SAT ‘01010101’ el cual no es aceptado, hable con su proveedor para cancelar y/o refacturar un XML válido.<br/> Partidas o artículos con código ‘01010101’: </br></br>{0}", ProductosCodigoSATNoPermitidos.ToString)
|
|
||||||
Alert(mensajeAdvertencia, TipoMensaje.MsgAdvertencia)
|
|
||||||
If UsuarioActual.CveEmpresa.Contiene(119, 158) AndAlso Not UsuarioActual.CveUsuario.Contiene(1719, 1721) Then BtnGuardar.Enabled = False '' solo se activa para el usuario Sara.JAM
|
|
||||||
BtnGuardar.ToolTip = "No se permite registrar facturas con conceptos con código '01010101'. Solicite al proveedor un nuevo comprobante."
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
End If
|
If RFC = "CFE370814QI0" Then ' RFC de CFE, se hace un ajuste por diferencia para sacar el DAP
|
||||||
|
'OtrosImpuestos = Total - (SubTotal2 + IVA)
|
||||||
|
'este importe lo vamos a meter al gasto
|
||||||
|
'AjustaImporteUltimoConcepto(OtrosImpuestos)
|
||||||
Dim SbValRet As New StringBuilder
|
OtrosImpuestos = 1
|
||||||
For Each concepto As XmlNode In nodeconceptos
|
AjustaUltimoConcepto = True
|
||||||
' Obtener la descripción del concepto
|
'SubTotal2 = SubTotal
|
||||||
Dim descripcion As String = ValorXML(concepto, "Descripcion")
|
|
||||||
Dim importeValue As Decimal = Decimal.Parse(ValorXML(concepto, "Importe"))
|
|
||||||
|
|
||||||
' Seleccionar el nodo de Impuestos dentro de Concepto, si existe
|
|
||||||
Dim impuestosNode As XmlNode = concepto.SelectSingleNode("cfdi:Impuestos", namespaces)
|
|
||||||
|
|
||||||
If Not impuestosNode Is Nothing Then
|
|
||||||
' Seleccionar los nodos de Retencion dentro de Impuestos
|
|
||||||
Dim retenciones As XmlNodeList = impuestosNode.SelectNodes("cfdi:Retenciones/cfdi:Retencion", namespaces)
|
|
||||||
For Each retencion As XmlNode In retenciones
|
|
||||||
' Obtener los valores de los atributos Base e Importe
|
|
||||||
Dim baseValue As Decimal = Decimal.Parse(ValorXML(retencion, "Base"))
|
|
||||||
Dim impuesto As String = ValorXML(retencion, "Impuesto")
|
|
||||||
|
|
||||||
If impuesto = "001" Then
|
|
||||||
impuesto = "Retención ISR"
|
|
||||||
ElseIf impuesto = "002" Then
|
|
||||||
impuesto = "Retención IVA"
|
|
||||||
ElseIf impuesto = "003" Then
|
|
||||||
impuesto = "IEPS"
|
|
||||||
End If
|
|
||||||
|
|
||||||
|
|
||||||
' Validar si Base coincide con Importe
|
|
||||||
If baseValue <> importeValue Then
|
|
||||||
'SbValRet.Append($"La base e importe de la retención del impuesto {impuesto} no coinciden para {descripcion}. Base: {baseValue.ToString()}, Importe: {importeValue.ToString()} <br>")
|
|
||||||
SbValRet.Append($"Producto: {descripcion} La base e importe del impuesto {impuesto} no coincide Base: {baseValue.ToString()}, Importe Producto: {importeValue.ToString()} <br>")
|
|
||||||
End If
|
|
||||||
Next
|
|
||||||
End If
|
End If
|
||||||
Next
|
|
||||||
|
|
||||||
If SbValRet.ToString.Trim.Length > 0 Then
|
Dim SubTotalReal As Decimal = 0
|
||||||
Alert(SbValRet.ToString, TipoMensaje.MsgAdvertencia)
|
SubTotalReal = Math.Round(Total + RetencionISR + RetencionIVA - IVA + Descuentos - TrasladoIEPS, 2) ' NO se incluye otros impuestos para ajustar esa cifra
|
||||||
End If
|
Dim DiferenciaTotales As Decimal = SubTotalReal - Math.Round(SubTotalConceptos, 2)
|
||||||
|
|
||||||
|
If DiferenciaTotales <> 0 Then
|
||||||
|
'Verificamos IEPS y Otros Impuestos
|
||||||
|
'restricccion general, que si el subtotal de los conceptos no cuadra con Total + RetISR + RetIVA - IVA <> SubTotalConeptos, ajuste al final
|
||||||
|
If TrasladoIEPS > 0 OrElse OtrosImpuestos > 0 OrElse Math.Abs(DiferenciaTotales) < 1 Then
|
||||||
|
|
||||||
|
'Condicion necesaria cuando hay IVA pero no hay diferencia
|
||||||
|
If DiferenciaTotales <> 0 Then
|
||||||
|
|
||||||
Else
|
If DiferenciaTotales < 50 OrElse AjustaUltimoConcepto = True Then
|
||||||
CargaConceptosXML(XMLDoc)
|
Dim IA As Decimal = Total + RetencionISR + RetencionIVA - IVA - SubTotalConceptos - TrasladoIEPS + Descuentos
|
||||||
End If
|
AjustaImporteUltimoConcepto(IA, True)
|
||||||
|
|
||||||
Select Case TipoComprobante
|
ElseIf DiferenciaTotales > 50 Then
|
||||||
Case "ingreso" : DdlTipoComprobante.SelectedValue = "Fac" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
PnlAjusteProductos.Visible = True
|
||||||
Case "egreso" : DdlTipoComprobante.SelectedValue = "NC" : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac")) : DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant")) : ChkAplicaNotaCredito.Enabled = False
|
Dim Porcentaje As Double = Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2)
|
||||||
Case "I"
|
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
|
||||||
DdlTipoComprobante.SelectedValue = "Fac"
|
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC"))
|
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
|
||||||
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("6"))
|
|
||||||
DdlTipoCompra.Items.Remove(DdlTipoCompra.Items.FindByValue("11"))
|
|
||||||
If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then DdlTipoCompra.Items.Add(New ListItem("Recolección", "14"))
|
|
||||||
Case "E"
|
|
||||||
DdlTipoComprobante.SelectedValue = "NC"
|
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Fac"))
|
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("Ant"))
|
|
||||||
ChkAplicaNotaCredito.Enabled = False
|
|
||||||
|
|
||||||
DdlTipoCompra.Items.Clear()
|
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
||||||
DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1"))
|
For Each Row As GridViewRow In GvPS.Rows
|
||||||
DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6"))
|
Row.FCLinkButton("imgE").Visible = False
|
||||||
DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
|
Row.FCLinkButton("imgD").Visible = False
|
||||||
DdlTipoCompra.Items.Add(New ListItem("NC Por Devolución", "11"))
|
Next
|
||||||
DdlTipoCompra.Items.Add(New ListItem("Garantía", "12"))
|
End If
|
||||||
Case "T"
|
|
||||||
DdlTipoCompra.Items.Clear()
|
|
||||||
DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
|
|
||||||
DdlTipoComprobante.SelectedValue = "Fac"
|
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("NC"))
|
|
||||||
DdlTipoComprobante.Items.Remove(DdlTipoComprobante.Items.FindByValue("DEV"))
|
|
||||||
|
|
||||||
End Select
|
|
||||||
|
|
||||||
'DIV ALIAS
|
|
||||||
CargaPSAlias()
|
|
||||||
|
|
||||||
RFC = dr("RFCDe").ToString
|
|
||||||
RFCProveedor = RFC
|
|
||||||
TxtFecha.Text = dr("FechaFactura").ToString.ToDate.ToShortDateString
|
|
||||||
TxtSerie.Text = dr("Serie").ToString
|
|
||||||
TxtFolio.Text = dr("Folio").ToString
|
|
||||||
DdlValidadaSAT.SelectedValue = If(dr("FueValidado").ToString.Contiene("Si", "1"), "Si", "No")
|
|
||||||
DdlValidadaSAT.Enabled = False
|
|
||||||
LblTipoFact.Text = dr("TipoFactura").ToString
|
|
||||||
SerieVieja = dr("Serie").ToString
|
|
||||||
LblMetodoPago.Text = MetodoPago
|
|
||||||
|
|
||||||
Dim SubTotal2, IVA, IEPS As Decimal
|
|
||||||
IVA = TrasladoIVA
|
|
||||||
|
|
||||||
If Not UsuarioActual.TienePermisoProceso(130) Then
|
|
||||||
TxtFolio.Enabled = False
|
|
||||||
TxtSerie.Enabled = False
|
|
||||||
End If
|
|
||||||
|
|
||||||
'PERMISO PARA MODIFICACIÓN DE FECHA AUN CON FACTURA
|
|
||||||
TxtFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
|
||||||
ImgFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
|
||||||
CEFecha.Enabled = UsuarioActual.TienePermisoProceso(216)
|
|
||||||
|
|
||||||
TxtSubTotal.Enabled = False
|
|
||||||
TxtDescuento.Enabled = False
|
|
||||||
TxtSubTotal2.Enabled = False
|
|
||||||
TxtIVA.Enabled = False
|
|
||||||
TxtTotal.Enabled = False
|
|
||||||
DdlProveedor.Enabled = False
|
|
||||||
|
|
||||||
If TxtFolio.Text.Trim = "" Then TxtFolio.Enabled = True : TxtSerie.Enabled = True
|
|
||||||
|
|
||||||
If UsuarioActual.TienePermisoProceso(112) Then
|
|
||||||
PermisoEdicionManual = True
|
|
||||||
TxtSubTotal.Enabled = True
|
|
||||||
TxtDescuento.Enabled = True
|
|
||||||
TxtSubTotal2.Enabled = True
|
|
||||||
TxtIVA.Enabled = True
|
|
||||||
TxtTotal.Enabled = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
If UsuarioActual.Empresa.Funcionalidad(118) = "1" AndAlso DdlTipoComprobante.SelectedValue = "Fac" Then
|
|
||||||
VerVales.Visible = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
If TieneAnticiposXML Then 'si tiene anticipos, limpia los descuentos
|
|
||||||
'LblAmortizacion.Text = ImporteAnticipo.FormatoNumero
|
|
||||||
TxtDescuento.Text = "0.00"
|
|
||||||
LblAmortizacion.Text = Descuentos.FormatoNumero
|
|
||||||
'limpia los descuentos
|
|
||||||
For Each drr As DataRow In TmpDT.Rows
|
|
||||||
'drr("Total") = drr("Total").ToString.ToDecimal + drr("Descuento").ToString.ToDecimal
|
|
||||||
drr("Amortizacion") = drr("Descuento") 'pasamos el importe de descuento a amortizacion
|
|
||||||
drr("Descuento") = 0.00
|
|
||||||
Next
|
|
||||||
Amortizaciones = Descuentos
|
|
||||||
Descuentos = 0
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim Msg As String = ""
|
|
||||||
If Version = "3.3" Or Version = "4.0" Then
|
|
||||||
|
|
||||||
If Not TmpDT.Columns.Contains("Amortizacion") Then
|
|
||||||
TmpDT.Columns.Add("Amortizacion", GetType(Decimal))
|
|
||||||
End If
|
|
||||||
TmpDT.AcceptChanges()
|
|
||||||
ValidacionesTotalesXml()
|
|
||||||
Else
|
|
||||||
'PRUEBA
|
|
||||||
'http://rm/Compras/Compras.aspx?CveFactura=122518 Emp: 48
|
|
||||||
|
|
||||||
'tTotal = Math.Round(SubTotal2 + IVA - RetencionIVA - RetencionISR + IEPS + OtrosImpuestos, 2)
|
|
||||||
HdnCompraSaldo.Value = Total.ToString
|
|
||||||
CompraSaldo = Total
|
|
||||||
Dim AjustaUltimoConcepto As Boolean = False
|
|
||||||
|
|
||||||
'AGREGA IEPS COMO CONCEPTO
|
|
||||||
If TrasladoIEPS > 0 And UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero > 0 Then
|
|
||||||
AgregarConceptoIEPS(TrasladoIEPS, UsuarioActual.Empresa.Funcionalidad(112).ToString.ToEntero)
|
|
||||||
' TrasladoIEPS = 0
|
|
||||||
End If
|
|
||||||
'en otro impuesto lo esta registrando en ajuste en automatico
|
|
||||||
If OtrosImpuestos > 0 Then
|
|
||||||
AjustaUltimoConcepto = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
If RFC = "CFE370814QI0" Then ' RFC de CFE, se hace un ajuste por diferencia para sacar el DAP
|
|
||||||
'OtrosImpuestos = Total - (SubTotal2 + IVA)
|
|
||||||
'este importe lo vamos a meter al gasto
|
|
||||||
'AjustaImporteUltimoConcepto(OtrosImpuestos)
|
|
||||||
OtrosImpuestos = 1
|
|
||||||
AjustaUltimoConcepto = True
|
|
||||||
'SubTotal2 = SubTotal
|
|
||||||
End If
|
|
||||||
|
|
||||||
Dim SubTotalReal As Decimal = 0
|
|
||||||
SubTotalReal = Math.Round(Total + RetencionISR + RetencionIVA - IVA + Descuentos - TrasladoIEPS, 2) ' NO se incluye otros impuestos para ajustar esa cifra
|
|
||||||
Dim DiferenciaTotales As Decimal = SubTotalReal - Math.Round(SubTotalConceptos, 2)
|
|
||||||
|
|
||||||
If DiferenciaTotales <> 0 Then
|
|
||||||
'Verificamos IEPS y Otros Impuestos
|
|
||||||
'restricccion general, que si el subtotal de los conceptos no cuadra con Total + RetISR + RetIVA - IVA <> SubTotalConeptos, ajuste al final
|
|
||||||
If TrasladoIEPS > 0 OrElse OtrosImpuestos > 0 OrElse Math.Abs(DiferenciaTotales) < 1 Then
|
|
||||||
|
|
||||||
'Condicion necesaria cuando hay IVA pero no hay diferencia
|
|
||||||
If DiferenciaTotales <> 0 Then
|
|
||||||
|
|
||||||
If DiferenciaTotales < 50 OrElse AjustaUltimoConcepto = True Then
|
|
||||||
Dim IA As Decimal = Total + RetencionISR + RetencionIVA - IVA - SubTotalConceptos - TrasladoIEPS + Descuentos
|
|
||||||
AjustaImporteUltimoConcepto(IA, True)
|
|
||||||
|
|
||||||
ElseIf DiferenciaTotales > 50 Then
|
|
||||||
PnlAjusteProductos.Visible = True
|
|
||||||
Dim Porcentaje As Double = Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2)
|
|
||||||
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
|
|
||||||
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
|
||||||
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
|
||||||
|
|
||||||
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
|
||||||
For Each Row As GridViewRow In GvPS.Rows
|
|
||||||
Row.FCLinkButton("imgE").Visible = False
|
|
||||||
Row.FCLinkButton("imgD").Visible = False
|
|
||||||
Next
|
|
||||||
End If
|
End If
|
||||||
|
TrasladoIEPS = 0 : OtrosImpuestos = 0 : SubTotal2 = SubTotal
|
||||||
|
Else
|
||||||
|
PnlAjusteProductos.Visible = True
|
||||||
|
Dim Porcentaje As Double = If(SubTotalConceptos > 0, Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2), 0)
|
||||||
|
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
|
||||||
|
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
||||||
|
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
||||||
|
|
||||||
|
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
||||||
|
For Each Row As GridViewRow In GvPS.Rows
|
||||||
|
Row.FCLinkButton("imgE").Visible = False
|
||||||
|
Row.FCLinkButton("imgD").Visible = False
|
||||||
|
Next
|
||||||
End If
|
End If
|
||||||
TrasladoIEPS = 0 : OtrosImpuestos = 0 : SubTotal2 = SubTotal
|
|
||||||
Else
|
|
||||||
PnlAjusteProductos.Visible = True
|
|
||||||
Dim Porcentaje As Double = If(SubTotalConceptos > 0, Math.Round((SubTotalConceptos - SubTotalReal) / SubTotalConceptos * 100, 2), 0)
|
|
||||||
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero
|
|
||||||
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
|
||||||
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
|
||||||
|
|
||||||
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
|
||||||
For Each Row As GridViewRow In GvPS.Rows
|
|
||||||
Row.FCLinkButton("imgE").Visible = False
|
|
||||||
Row.FCLinkButton("imgD").Visible = False
|
|
||||||
Next
|
|
||||||
End If
|
End If
|
||||||
End If
|
'Si no hay diferencias pero tenemos descuento, se ofrece la opcion para ajustar el gasto
|
||||||
'Si no hay diferencias pero tenemos descuento, se ofrece la opcion para ajustar el gasto
|
If Descuentos > 0 Then
|
||||||
If Descuentos > 0 Then
|
|
||||||
|
|
||||||
'[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
|
'[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
|
||||||
If CveFactura = 286290 Then
|
If CveFactura = 286290 Then
|
||||||
|
|
||||||
Else
|
Else
|
||||||
PnlAjusteProductos.Visible = True
|
PnlAjusteProductos.Visible = True
|
||||||
Dim Porcentaje As Double = Math.Round((Descuentos) / (SubTotalConceptos) * 100, 4)
|
Dim Porcentaje As Double = Math.Round((Descuentos) / (SubTotalConceptos) * 100, 4)
|
||||||
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero(4)
|
TxtAjustePorcentaje.Text = Porcentaje.FormatoNumero(4)
|
||||||
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
Msg &= String.Format("La Factura presenta anomalias en los importes mostrados, estas anomalias impiden que se editen las partidas. Por favor realice el ajuste correspondiente <br>")
|
||||||
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
|
||||||
|
|
||||||
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
'Ocultamos la opcion de Editar y Eliminar hasta que se arreglen las anomalias
|
||||||
For Each Row As GridViewRow In GvPS.Rows
|
For Each Row As GridViewRow In GvPS.Rows
|
||||||
Row.FCLinkButton("imgE").Visible = False
|
Row.FCLinkButton("imgE").Visible = False
|
||||||
Row.FCLinkButton("imgD").Visible = False
|
Row.FCLinkButton("imgD").Visible = False
|
||||||
Next
|
Next
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
SubTotal2 = SubTotalReal - Descuentos
|
||||||
|
|
||||||
|
If Descuentos > 0 Then
|
||||||
|
TrDescuento.Visible = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
If Msg <> "" Then
|
||||||
|
Alert(Msg, TipoMensaje.MsgAdvertencia)
|
||||||
|
BtnGuardar.Enabled = False
|
||||||
|
End If
|
||||||
|
'AJUSTAMOS SUBTOTAL EN CASO DE SER DIFERENTE AL SUBTOTAL2 DEL XML (TOTAL - IVA)
|
||||||
|
If SubTotal2 <> SubTotal Then
|
||||||
|
SubTotal = SubTotalConceptos
|
||||||
|
End If
|
||||||
|
|
||||||
|
TxtSubTotal.Text = SubTotal.FormatoNumero
|
||||||
|
TxtDescuento.Text = Descuentos.FormatoNumero
|
||||||
|
TxtSubTotal2.Text = SubTotal2.FormatoNumero
|
||||||
|
TxtIVA.Text = IVA.FormatoNumero
|
||||||
|
TxtTotal.Text = Total.ToString.FormatoNumero
|
||||||
|
|
||||||
|
HfTotalCompra.Value = Total.ToString
|
||||||
|
CompraSaldo = Total
|
||||||
|
|
||||||
|
CalculaTotalPorDevengar()
|
||||||
|
TxtDocumentoImporteFE.Text = Total.ToString
|
||||||
|
RVDocumentoImporte.MaximumValue = Math.Round(Total, 2).ToString
|
||||||
|
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
|
||||||
|
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
|
||||||
|
TxtDocumentoImporte.Text = Total.FormatoNumero
|
||||||
|
TxtDocumentoImporteCaja.Text = Total.FormatoNumero
|
||||||
|
TxtRetIVA.Text = RetencionIVA.FormatoNumero
|
||||||
|
TxtRetISR.Text = RetencionISR.FormatoNumero
|
||||||
|
TxtIEPS.Text = IEPS.FormatoNumero
|
||||||
|
If IEPS > 0 Then TrIEPS.Visible = True
|
||||||
|
If RetencionIVA > 0 Then TrRetIVA.Visible = True
|
||||||
|
If RetencionISR > 0 Then TrRetISR.Visible = True
|
||||||
|
TxtOtrosImpuestos.Text = OtrosImpuestos.FormatoNumero
|
||||||
|
If OtrosImpuestos > 0 Then TrOtrosImpuestos.Visible = True
|
||||||
|
|
||||||
|
HFDiferenciaCompra.Value = TxtTotal.Text
|
||||||
|
'ASIGNA VALORES ORIGINALES PARA GUARDAR
|
||||||
|
AsignaValoresOriginales(SubTotal, SubTotal2, IVA, RetencionIVA, RetencionISR, Total)
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
TxtFechaPago.Text = (TxtFecha.Text.ToDate.AddDays(LblDiasCredito.Text.ToEntero)).ToShortDateString
|
||||||
|
|
||||||
SubTotal2 = SubTotalReal - Descuentos
|
Dim drMon As DataRow = GlobalDTMonedas.FiltroPrimero(String.Format(" (Abreviatura LIKE '%{0}%' OR Moneda LIKE '%{0}%' )", Moneda))
|
||||||
|
|
||||||
If Descuentos > 0 Then
|
|
||||||
TrDescuento.Visible = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
If Msg <> "" Then
|
|
||||||
Alert(Msg, TipoMensaje.MsgAdvertencia)
|
|
||||||
BtnGuardar.Enabled = False
|
|
||||||
End If
|
|
||||||
'AJUSTAMOS SUBTOTAL EN CASO DE SER DIFERENTE AL SUBTOTAL2 DEL XML (TOTAL - IVA)
|
|
||||||
If SubTotal2 <> SubTotal Then
|
|
||||||
SubTotal = SubTotalConceptos
|
|
||||||
End If
|
|
||||||
|
|
||||||
TxtSubTotal.Text = SubTotal.FormatoNumero
|
|
||||||
TxtDescuento.Text = Descuentos.FormatoNumero
|
|
||||||
TxtSubTotal2.Text = SubTotal2.FormatoNumero
|
|
||||||
TxtIVA.Text = IVA.FormatoNumero
|
|
||||||
TxtTotal.Text = Total.ToString.FormatoNumero
|
|
||||||
|
|
||||||
HfTotalCompra.Value = Total.ToString
|
|
||||||
CompraSaldo = Total
|
|
||||||
|
|
||||||
CalculaTotalPorDevengar()
|
|
||||||
TxtDocumentoImporteFE.Text = Total.ToString
|
|
||||||
RVDocumentoImporte.MaximumValue = Math.Round(Total, 2).ToString
|
|
||||||
RVDocumentoImporteFE.MaximumValue = RVDocumentoImporte.MaximumValue
|
|
||||||
RVDocumentoImporteCaja.MaximumValue = RVDocumentoImporte.MaximumValue
|
|
||||||
TxtDocumentoImporte.Text = Total.FormatoNumero
|
|
||||||
TxtDocumentoImporteCaja.Text = Total.FormatoNumero
|
|
||||||
TxtRetIVA.Text = RetencionIVA.FormatoNumero
|
|
||||||
TxtRetISR.Text = RetencionISR.FormatoNumero
|
|
||||||
TxtIEPS.Text = IEPS.FormatoNumero
|
|
||||||
If IEPS > 0 Then TrIEPS.Visible = True
|
|
||||||
If RetencionIVA > 0 Then TrRetIVA.Visible = True
|
|
||||||
If RetencionISR > 0 Then TrRetISR.Visible = True
|
|
||||||
TxtOtrosImpuestos.Text = OtrosImpuestos.FormatoNumero
|
|
||||||
If OtrosImpuestos > 0 Then TrOtrosImpuestos.Visible = True
|
|
||||||
|
|
||||||
HFDiferenciaCompra.Value = TxtTotal.Text
|
|
||||||
'ASIGNA VALORES ORIGINALES PARA GUARDAR
|
|
||||||
AsignaValoresOriginales(SubTotal, SubTotal2, IVA, RetencionIVA, RetencionISR, Total)
|
|
||||||
|
|
||||||
End If
|
|
||||||
TxtFechaPago.Text = (TxtFecha.Text.ToDate.AddDays(LblDiasCredito.Text.ToEntero)).ToShortDateString
|
|
||||||
|
|
||||||
Dim drMon As DataRow = GlobalDTMonedas.FiltroPrimero(String.Format(" (Abreviatura LIKE '%{0}%' OR Moneda LIKE '%{0}%' )", Moneda))
|
|
||||||
|
|
||||||
If drMon IsNot Nothing Then
|
|
||||||
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
|
|
||||||
CveMoneda = drMon("CveMoneda").ToString.ToEntero
|
|
||||||
Else
|
|
||||||
'sino busco en la tabla de alias
|
|
||||||
drMon = GlobalDTMonedasAlias.FiltroPrimero(String.Format("MonedaAlias LIKE '%{0}%' ", Moneda))
|
|
||||||
|
|
||||||
If drMon IsNot Nothing Then
|
If drMon IsNot Nothing Then
|
||||||
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
|
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
|
||||||
CveMoneda = drMon("CveMoneda").ToString.ToEntero
|
CveMoneda = drMon("CveMoneda").ToString.ToEntero
|
||||||
Else
|
Else
|
||||||
LblMoneda.Text = Moneda
|
'sino busco en la tabla de alias
|
||||||
LblMoneda.ForeColor = Drawing.Color.Red
|
drMon = GlobalDTMonedasAlias.FiltroPrimero(String.Format("MonedaAlias LIKE '%{0}%' ", Moneda))
|
||||||
End If
|
|
||||||
End If
|
|
||||||
|
|
||||||
If DdlMoneda.SelectedValue.ToEntero > 1 Then
|
If drMon IsNot Nothing Then
|
||||||
If TipoCambio <= 10 Then
|
DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
|
||||||
TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal
|
CveMoneda = drMon("CveMoneda").ToString.ToEntero
|
||||||
|
Else
|
||||||
|
LblMoneda.Text = Moneda
|
||||||
|
LblMoneda.ForeColor = Drawing.Color.Red
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
TxtFecha.Attributes.Remove("onblur")
|
If DdlMoneda.SelectedValue.ToEntero > 1 Then
|
||||||
If UsuarioActual.Empresa.UsaAC Then
|
If TipoCambio <= 10 Then
|
||||||
TxtFecha.Attributes.Add("onblur", "CambiaFecha();CambiaFechaTC();")
|
TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal
|
||||||
Else
|
End If
|
||||||
TxtFecha.Attributes.Add("onblur", "CambiaFechaTC();")
|
|
||||||
|
TxtFecha.Attributes.Remove("onblur")
|
||||||
|
If UsuarioActual.Empresa.UsaAC Then
|
||||||
|
TxtFecha.Attributes.Add("onblur", "CambiaFecha();CambiaFechaTC();")
|
||||||
|
Else
|
||||||
|
TxtFecha.Attributes.Add("onblur", "CambiaFechaTC();")
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
If TipoCambio > 0 And DdlMoneda.SelectedValue.ToEntero > 1 Then LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4"))
|
||||||
|
|
||||||
|
'DF - 10-04-17
|
||||||
|
If UsuarioActual.TienePermisoProceso(187) Then
|
||||||
|
TxtSerie.Enabled = True
|
||||||
|
End If
|
||||||
|
|
||||||
|
If LblMetodoPago.Text = "" AndAlso TipoComprobante <> "T" Then
|
||||||
|
Alert("El xml no contiene la etiqueta 'método de pago', favor de verificar la emisión con el proveedor.", TipoMensaje.MsgAdvertencia)
|
||||||
|
BtnGuardar.Visible = False
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
Else
|
||||||
If TipoCambio > 0 And DdlMoneda.SelectedValue.ToEntero > 1 Then LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4"))
|
|
||||||
|
|
||||||
'DF - 10-04-17
|
|
||||||
If UsuarioActual.TienePermisoProceso(187) Then
|
|
||||||
TxtSerie.Enabled = True
|
|
||||||
End If
|
|
||||||
|
|
||||||
If LblMetodoPago.Text = "" AndAlso TipoComprobante <> "T" Then
|
|
||||||
Alert("El xml no contiene la etiqueta 'método de pago', favor de verificar la emisión con el proveedor.", TipoMensaje.MsgAdvertencia)
|
|
||||||
BtnGuardar.Visible = False
|
|
||||||
End If
|
|
||||||
End If
|
|
||||||
Else
|
|
||||||
Alert("No se Encontró la Factura", TipoMensaje.MsgAdvertencia)
|
Alert("No se Encontró la Factura", TipoMensaje.MsgAdvertencia)
|
||||||
BtnGuardar.Visible = False
|
BtnGuardar.Visible = False
|
||||||
End If
|
End If
|
||||||
@@ -9265,7 +9271,7 @@ Partial Class Compras_Compras
|
|||||||
Dim CveProveedorConcepto As Integer = 0, CveIE As Integer = 0, CveCreditoDetalle As Integer = 0
|
Dim CveProveedorConcepto As Integer = 0, CveIE As Integer = 0, CveCreditoDetalle As Integer = 0
|
||||||
Dim ConceptoPersonal As String = "", Concepto As String = ""
|
Dim ConceptoPersonal As String = "", Concepto As String = ""
|
||||||
Dim tUsaInventarios As Boolean = UsuarioActual.Empresa.UsaInventarios
|
Dim tUsaInventarios As Boolean = UsuarioActual.Empresa.UsaInventarios
|
||||||
If (UsuarioActual.CveEmpresa.Contiene(13, 83)) Then tUsaInventarios = False
|
If (UsuarioActual.CveEmpresa.Contiene(13, 83, 7, 11, 12, 122, 145)) Then tUsaInventarios = False
|
||||||
|
|
||||||
If Not ObjConta.GetPrePolizasDetalleCompra(CveCompra, UsuarioActual.CveEmpresa) Then
|
If Not ObjConta.GetPrePolizasDetalleCompra(CveCompra, UsuarioActual.CveEmpresa) Then
|
||||||
ErrorPrepoliza = True
|
ErrorPrepoliza = True
|
||||||
@@ -18533,7 +18539,9 @@ Partial Class Compras_Compras
|
|||||||
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) Then
|
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) Then
|
||||||
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, CveCompra, 1) Then
|
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, CveCompra, 1) Then
|
||||||
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 6, CveCompra, 1) Then
|
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 6, CveCompra, 1) Then
|
||||||
TieneError = False
|
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 205, CveCompra, 1) Then
|
||||||
|
TieneError = False
|
||||||
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|||||||
Reference in New Issue
Block a user