diff --git a/App_Code/ClsContratos.vb b/App_Code/ClsContratos.vb
index a5899031b..3c0f7b656 100644
--- a/App_Code/ClsContratos.vb
+++ b/App_Code/ClsContratos.vb
@@ -3246,7 +3246,7 @@ Public Class ClsContratos
Return Retorno
End Function
- Public Function GetPresupuestosRepDetalleCompras(CveProyecto As Integer, CveSubProyecto As Integer, CveAgrupador As Integer, CveTipoGasto As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer, CveUsuario As Integer) As Boolean
+ Public Function GetPresupuestosRepDetalleCompras(CveProyecto As Integer, CveSubProyecto As Integer, CveAgrupador As Integer, CveTipoGasto As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer, CveUsuario As Integer, Optional Comprometido As Boolean = False) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Con_PresupuestosRepDetalleCompra")
@@ -3259,6 +3259,7 @@ Public Class ClsContratos
.Add("@FechaF", SqlDbType.Date).Value = FechaF
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
.Add("@CveUsuarioConsulta", SqlDbType.Int).Value = CveUsuario
+ .Add("@Comprometido", SqlDbType.Bit).Value = Comprometido
End With
Try
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb
index d9e795b6f..7d5dc99d7 100644
--- a/Compras/Compras.aspx.vb
+++ b/Compras/Compras.aspx.vb
@@ -1855,7 +1855,8 @@ Partial Class Compras_Compras
If Validada And Not EnListadoEFOS Then
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
Try
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())
End Try
End Try
+
+ If XMLDoc.InnerXml = "" Then
+ Alert("No se pudo procesar el archivo xml.", TipoMensaje.MsgError)
+ Return ""
+ End If
+
CreaDTConceptos()
CargaComprobanteXML(XMLDoc)
-
If NuevaValidacionXML = 1 OrElse (Version = "3.3" OrElse Version = "4.0") Then
- Dim Xml As String
- Dim nodo As XmlNode = XMLDoc.DocumentElement
- Dim Version As String = ValorXML(nodo, "version")
- Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
- Dim cfdVer As String = ""
- Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
+ Dim Xml As String
+ Dim nodo As XmlNode = XMLDoc.DocumentElement
+ Dim Version As String = ValorXML(nodo, "version")
+ Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
+ Dim cfdVer As String = ""
+ Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
- If Version = "3.2" Then
- Prefijo = "cfd"
- cfdVer = "http://www.sat.gob.mx/cfd/2"
- ElseIf Version = "3.3" Then
- cfdVer = "http://www.sat.gob.mx/cfd/3"
- Else ' se considera que es la version 4.0
- cfdVer = "http://www.sat.gob.mx/cfd/4"
+ If Version = "3.2" Then
+ Prefijo = "cfd"
+ cfdVer = "http://www.sat.gob.mx/cfd/2"
+ ElseIf Version = "3.3" Then
+ cfdVer = "http://www.sat.gob.mx/cfd/3"
+ Else ' se considera que es la version 4.0
+ 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, "
Partidas o artículos con código ‘01010101’: {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()}
")
+ SbValRet.Append($"Producto: {descripcion} La base e importe del impuesto {impuesto} no coincide Base: {baseValue.ToString()}, Importe Producto: {importeValue.ToString()}
")
+ 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
- '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)
- 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")
+ DdlTipoCompra.Items.Clear()
+ DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1"))
+ DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6"))
+ DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
+ 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)
- Xml = Replace(nodeconceptos.OuterXml, "
Partidas o artículos con código ‘01010101’: {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."
+ '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
- 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()}
")
- SbValRet.Append($"Producto: {descripcion} La base e importe del impuesto {impuesto} no coincide Base: {baseValue.ToString()}, Importe Producto: {importeValue.ToString()}
")
- End If
- Next
+ 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
- Next
- If SbValRet.ToString.Trim.Length > 0 Then
- Alert(SbValRet.ToString, TipoMensaje.MsgAdvertencia)
- 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
- Else
- CargaConceptosXML(XMLDoc)
- End If
+ If DiferenciaTotales < 50 OrElse AjustaUltimoConcepto = True Then
+ Dim IA As Decimal = Total + RetencionISR + RetencionIVA - IVA - SubTotalConceptos - TrasladoIEPS + Descuentos
+ AjustaImporteUltimoConcepto(IA, True)
- 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
+ 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
")
+ ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
- DdlTipoCompra.Items.Clear()
- DdlTipoCompra.Items.Add(New ListItem("Seleccione", "-1"))
- DdlTipoCompra.Items.Add(New ListItem("NC Con Productos", "6"))
- DdlTipoCompra.Items.Add(New ListItem("Apoyo Logístico", "9"))
- 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"))
-
- 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
")
- 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
+ '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
")
+ 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
- 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
")
- 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
- 'Si no hay diferencias pero tenemos descuento, se ofrece la opcion para ajustar el gasto
- If Descuentos > 0 Then
+ 'Si no hay diferencias pero tenemos descuento, se ofrece la opcion para ajustar el gasto
+ If Descuentos > 0 Then
- '[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
- If CveFactura = 286290 Then
+ '[IPP] PARCHE: Factura TELMEX para APH 12/ENERO/2018
+ If CveFactura = 286290 Then
- Else
- PnlAjusteProductos.Visible = True
- Dim Porcentaje As Double = Math.Round((Descuentos) / (SubTotalConceptos) * 100, 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
")
- ImgBtnBuscarOC.Visible = False : TxtOC.Enabled = False
+ Else
+ PnlAjusteProductos.Visible = True
+ Dim Porcentaje As Double = Math.Round((Descuentos) / (SubTotalConceptos) * 100, 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
")
+ 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
+ '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
+
+ 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
+ TxtFechaPago.Text = (TxtFecha.Text.ToDate.AddDays(LblDiasCredito.Text.ToEntero)).ToShortDateString
- 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
- 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))
+ 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
- LblMoneda.Text = Moneda
- LblMoneda.ForeColor = Drawing.Color.Red
- End If
- End If
+ 'sino busco en la tabla de alias
+ drMon = GlobalDTMonedasAlias.FiltroPrimero(String.Format("MonedaAlias LIKE '%{0}%' ", Moneda))
- If DdlMoneda.SelectedValue.ToEntero > 1 Then
- If TipoCambio <= 10 Then
- TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal
+ If drMon IsNot Nothing Then
+ DdlMoneda.SelectedValue = drMon("CveMoneda").ToString
+ CveMoneda = drMon("CveMoneda").ToString.ToEntero
+ Else
+ LblMoneda.Text = Moneda
+ LblMoneda.ForeColor = Drawing.Color.Red
+ End If
End If
- TxtFecha.Attributes.Remove("onblur")
- If UsuarioActual.Empresa.UsaAC Then
- TxtFecha.Attributes.Add("onblur", "CambiaFecha();CambiaFechaTC();")
- Else
- TxtFecha.Attributes.Add("onblur", "CambiaFechaTC();")
+ If DdlMoneda.SelectedValue.ToEntero > 1 Then
+ If TipoCambio <= 10 Then
+ TipoCambio = GlobalTipoCambio(TxtFecha.Text.ToDate).ToDecimal
+ End If
+
+ 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
-
- 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
+ Else
Alert("No se Encontró la Factura", TipoMensaje.MsgAdvertencia)
BtnGuardar.Visible = False
End If
@@ -4181,20 +4187,17 @@ Partial Class Compras_Compras
Protected Sub BtnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click
-
-
If Not ValidaPresupuesto(2) Then
Exit Sub
End If
'------------------ INICIA VALIDACIONES ------------------
- If MetodoPagoOC = 0 AndAlso RBLPago.SelectedValue.ToEntero <> 2 Then
+ If MetodoPagoOC = 0 AndAlso RBLPago.SelectedValue.ToEntero <> 2 AndAlso LblSaldoFactura.Text.ToDecimal > 0 Then
Alert("La orden de compra se definió de contado, favor de especificar la compra de contado.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
-
Dim CveSubProyectoPrincipal As Integer = AsignarSubProyectoPrincipal()
If Not CveSubProyectoPrincipal > 0 Then
@@ -4202,7 +4205,7 @@ Partial Class Compras_Compras
End If
If Not ValidaVinculacionNotaFactura() Then
- Alert("Se requiere que la nota este aplciada a las facturas", TipoMensaje.MsgAdvertencia)
+ Alert("Se requiere que la nota este aplicada a las facturas", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
@@ -8609,7 +8612,6 @@ Partial Class Compras_Compras
'PORCENTAJE IVA
Dim PorcentajeIVA As Decimal = TmpDT.MAX("IVAPorcentaje").ToDecimal
-
Dim TmpCveRetIVAConcepto As Integer = If(CveRetIVAConceptoOriginal <> DdlRetIVAConcepto.SelectedValue.ToEntero, DdlRetIVAConcepto.SelectedValue.ToEntero, -1)
Dim TmpCveRetISRConcepto As Integer = If(CveRetISRConceptoOriginal <> DdlRetISRConcepto.SelectedValue.ToEntero, DdlRetISRConcepto.SelectedValue.ToEntero, -1)
Dim tNoDeducible As Integer = If(ChkEsNoDeducible.Checked, 1, 0)
@@ -9265,7 +9267,7 @@ Partial Class Compras_Compras
Dim CveProveedorConcepto As Integer = 0, CveIE As Integer = 0, CveCreditoDetalle As Integer = 0
Dim ConceptoPersonal As String = "", Concepto As String = ""
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
ErrorPrepoliza = True
@@ -18533,7 +18535,9 @@ Partial Class Compras_Compras
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 49, CveCompra, 1) Then
If ObjConta.RemovePrePolizasDetalle(CvePrePoliza, 68, 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
diff --git a/Contabilidad/RegPrePolizaS.aspx.vb b/Contabilidad/RegPrePolizaS.aspx.vb
index ae28bb9d7..8fa667a29 100644
--- a/Contabilidad/RegPrePolizaS.aspx.vb
+++ b/Contabilidad/RegPrePolizaS.aspx.vb
@@ -321,7 +321,7 @@ Partial Class ContabilidadC_RegPrePolizaS
TxtFechaDocumento.Text = NowADS().ToString("dd/MM/yyyy")
TxtFechaelaboracion.Text = NowADS().ToString("dd/MM/yyyy")
TxtConcepto.Enabled = True
- TxtUsuarioElaboro.Text = UsuarioActual.Usuario
+ TxtUsuarioElaboro.Text = UsuarioActual.Nombre
End If
@@ -448,7 +448,7 @@ Partial Class ContabilidadC_RegPrePolizaS
Folio = dr("FolioPoliza").ToString
TxtFolio.Text = dr("FolioPoliza").ToString
- TxtUsuarioElaboro.Text = dr("Usuario").ToString
+ TxtUsuarioElaboro.Text = dr("UsuarioNombre").ToString
TxtFechaelaboracion.Text = dr("FechaIng").ToString.ToDate.ToString("dd/MM/yyyy")
TxtFechaelaboracion.ToolTip = dr("FechaIng").ToString.ToDate.ToString("HH:mm:ss")
CvePlantillaPoliza = dr("CvePlantillaPoliza").ToString.ToEntero
diff --git a/Contratos/RepPresupuestos.aspx b/Contratos/RepPresupuestos.aspx
index ebe5ac5bd..62963dcf3 100644
--- a/Contratos/RepPresupuestos.aspx
+++ b/Contratos/RepPresupuestos.aspx
@@ -208,7 +208,7 @@