diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx
index 8a90c05d3..1a0cb50c6 100644
--- a/Compras/Compras.aspx
+++ b/Compras/Compras.aspx
@@ -1141,7 +1141,7 @@
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb
index 387658028..221bee630 100644
--- a/Compras/Compras.aspx.vb
+++ b/Compras/Compras.aspx.vb
@@ -4560,9 +4560,17 @@ Partial Class Compras_Compras
Exit Sub
End If
- 'If Not AjustaIVA() Then
- ' Exit Sub
- 'End If
+ If Not AjustaIVA() Then
+ Exit Sub
+ End If
+
+ If Not AjustaRetIVA() Then
+ Exit Sub
+ End If
+
+ If Not AjustaRetISR() Then
+ Exit Sub
+ End If
If DdlFolioGarantia.Visible AndAlso DdlFolioGarantia.SelectedValue <> "-1" Then
If Not ValidaFolioGarantia() Then Exit Sub
@@ -8042,7 +8050,7 @@ Partial Class Compras_Compras
Dim DiferenciaIVas As Decimal = TxtIVA.Text.ToDecimal - IVADetalles
If Math.Abs(DiferenciaIVas) > 0 Then
- If Math.Abs(DiferenciaIVas) > 0.05 Then
+ If Math.Abs(DiferenciaIVas) <= 0.05 Then
Dim DTConsulta As New DataTable
DTConsulta = TmpDT.FiltraParametros(" IVA > 0 ")
@@ -8113,6 +8121,185 @@ Partial Class Compras_Compras
Alert("existe una diferencia de más de 0.05 entre el IVA de la compra y los detalles.", TipoMensaje.MsgAdvertencia)
Respuesta = False
End If
+ Else
+ Respuesta = True
+ End If
+
+ Return Respuesta
+
+ End Function
+
+ Private Function AjustaRetIVA() As Boolean
+
+ Dim Respuesta As Boolean = False
+
+ Dim RetIVADetalles As Decimal = TmpDT.SUMD("RetIVA", " RetIVA > 0 ")
+ Dim DiferenciaRetIVA As Decimal = TxtRetIVA.Text.ToDecimal - RetIVADetalles
+
+ If Math.Abs(DiferenciaRetIVA) > 0 Then
+ If Math.Abs(DiferenciaRetIVA) <= 0.05 Then
+
+ Dim DTConsulta As New DataTable
+ DTConsulta = TmpDT.FiltraParametros(" RetIVA > 0 ")
+
+ If DTConsulta.Rows.Count > 0 Then
+
+ Dim IndiceContador As Integer = 0
+ Dim IndiceUltimo As Integer = 0
+ Dim CantidadRegistroConRetIVA As Decimal
+
+ For Each dRow As DataRow In TmpDT.Rows
+ If dRow("RetIVA").ToString.ToDecimal > 0 Then
+ IndiceUltimo = IndiceContador
+ CantidadRegistroConRetIVA = CantidadRegistroConRetIVA + 1
+ End If
+ IndiceContador = IndiceContador + 1
+ Next
+
+ RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ")
+ DiferenciaRetIVA = TxtRetIVA.Text.ToDecimal - RetIVADetalles
+
+ If Math.Abs(DiferenciaRetIVA) > 0.0D Then
+
+ If (TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA) < 0 Then
+
+ Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetIVA) / CantidadRegistroConRetIVA
+
+ For Each dRow As DataRow In TmpDT.Rows
+ dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal - AjusteteDividido
+ Next
+
+ Else
+ TmpDT.Rows(IndiceUltimo)("RetIVA") = TmpDT.Rows(IndiceUltimo)("RetIVA").ToString.ToDecimal + DiferenciaRetIVA
+ End If
+
+ TmpDT.AcceptChanges()
+
+ End If
+
+ End If
+
+ 'Revalidacion de ajuste
+ RetIVADetalles = TmpDT.SUMD("RetIVA", " RetIVA > 0 ")
+ DiferenciaRetIVA = TxtRetIVA.Text.ToDecimal - RetIVADetalles
+
+ If Math.Abs(DiferenciaRetIVA) > 0.01D Then
+ Respuesta = False
+ If RetIVADetalles > 0 Then
+
+ For Each dRow As DataRow In TmpDT.Rows
+ If dRow("RetIVA").ToString.ToDecimal > 0 Then
+ dRow("RetIVA") = dRow("RetIVA").ToString.ToDecimal + DiferenciaRetIVA
+ TmpDT.AcceptChanges()
+ Respuesta = True
+ Exit For
+ End If
+ Next
+
+ Else
+ Alert("Los productos especificados en el listado no tienen asignado impuesto RetIVA, favor de realizar la corrección en el producto que aplique el impuesto.", TipoMensaje.MsgAdvertencia)
+ Respuesta = False
+ End If
+ Else
+ Respuesta = True
+ End If
+
+ Else
+ Alert("existe una diferencia de más de 0.05 entre el RetIVA de la compra y los detalles.", TipoMensaje.MsgAdvertencia)
+ Respuesta = False
+ End If
+ Else
+ Respuesta = True
+
+ End If
+
+ Return Respuesta
+
+ End Function
+
+
+
+ Private Function AjustaRetISR() As Boolean
+
+ Dim Respuesta As Boolean = False
+
+ Dim RetISRDetalles As Decimal = TmpDT.SUMD("RetISR", " RetISR > 0 ")
+ Dim DiferenciaRetISR As Decimal = TxtRetISR.Text.ToDecimal - RetISRDetalles
+
+ If Math.Abs(DiferenciaRetISR) > 0 Then
+ If Math.Abs(DiferenciaRetISR) <= 0.05 Then
+
+ Dim DTConsulta As New DataTable
+ DTConsulta = TmpDT.FiltraParametros(" RetISR > 0 ")
+
+ If DTConsulta.Rows.Count > 0 Then
+
+ Dim IndiceContador As Integer = 0
+ Dim IndiceUltimo As Integer = 0
+ Dim CantidadRegistroConRetISR As Decimal
+
+ For Each dRow As DataRow In TmpDT.Rows
+ If dRow("RetISR").ToString.ToDecimal > 0 Then
+ IndiceUltimo = IndiceContador
+ CantidadRegistroConRetISR = CantidadRegistroConRetISR + 1
+ End If
+ IndiceContador = IndiceContador + 1
+ Next
+
+ RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ")
+ DiferenciaRetISR = TxtRetISR.Text.ToDecimal - RetISRDetalles
+
+ If Math.Abs(DiferenciaRetISR) > 0.0D Then
+
+ If (TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR) < 0 Then
+
+ Dim AjusteteDividido As Decimal = Math.Abs(DiferenciaRetISR) / CantidadRegistroConRetISR
+
+ For Each dRow As DataRow In TmpDT.Rows
+ dRow("RetISR") = dRow("RetISR").ToString.ToDecimal - AjusteteDividido
+ Next
+
+ Else
+ TmpDT.Rows(IndiceUltimo)("RetISR") = TmpDT.Rows(IndiceUltimo)("RetISR").ToString.ToDecimal + DiferenciaRetISR
+ End If
+
+ TmpDT.AcceptChanges()
+
+ End If
+
+ End If
+
+ 'Revalidacion de ajuste
+ RetISRDetalles = TmpDT.SUMD("RetISR", " RetISR > 0 ")
+ DiferenciaRetISR = TxtRetISR.Text.ToDecimal - RetISRDetalles
+
+ If Math.Abs(DiferenciaRetISR) > 0.01D Then
+ Respuesta = False
+ If RetISRDetalles > 0 Then
+
+ For Each dRow As DataRow In TmpDT.Rows
+ If dRow("RetISR").ToString.ToDecimal > 0 Then
+ dRow("RetISR") = dRow("RetISR").ToString.ToDecimal + DiferenciaRetISR
+ TmpDT.AcceptChanges()
+ Respuesta = True
+ Exit For
+ End If
+ Next
+
+ Else
+ Alert("Los productos especificados en el listado no tienen asignado impuesto RetISR, favor de realizar la corrección en el producto que aplique el impuesto.", TipoMensaje.MsgAdvertencia)
+ Respuesta = False
+ End If
+ Else
+ Respuesta = True
+ End If
+
+ Else
+ Alert("existe una diferencia de más de 0.05 entre el RetISR de la compra y los detalles.", TipoMensaje.MsgAdvertencia)
+ Respuesta = False
+ End If
+ Else
+ Respuesta = True
End If
Return Respuesta
@@ -20309,18 +20496,99 @@ Partial Class Compras_Compras
End Sub
+
+
+#End Region
+
+
+#Region "PRORATEAR DEDUCIBLE"
+
Private Sub ProratearDeducible()
ChkEsNoDeducible_CheckedChanged1(Nothing, Nothing)
- Dim DTProtateo As DataTable = TmpDT.Clone
-
-
Dim Consec As Integer = 1
- For Each dRowOriginal As DataRow In TmpDT.Rows
+ Dim DT_Agrupado As DataTable = TmpDT.Clone
+ Dim DTProtateo As DataTable = TmpDT.Clone
+
+ Dim DT_IVAS As DataTable = TmpDT.FiltraParametros("", "", {"IVAPorcentaje", "RetIVAPorcentaje", "RetISRPorcentaje", "IEPSPSPorcentaje", "IEPSPSIVAPorcentaje"})
+
+ For Each drIva As DataRow In DT_IVAS.Rows
+ drIva("IVAPorcentaje") = drIva("IVAPorcentaje").ToString.ToDecimal
+ drIva("RetIVAPorcentaje") = drIva("RetIVAPorcentaje").ToString.ToDecimal
+ drIva("RetISRPorcentaje") = drIva("RetISRPorcentaje").ToString.ToDecimal
+ drIva("IEPSPSPorcentaje") = drIva("IEPSPSPorcentaje").ToString.ToDecimal
+ drIva("IEPSPSIVAPorcentaje") = drIva("IEPSPSIVAPorcentaje").ToString.ToDecimal
+ Next
+ DT_IVAS.AcceptChanges()
+
+ For Each dRow As DataRow In TmpDT.Rows
+ dRow("IVAPorcentaje") = dRow("IVAPorcentaje").ToString.ToDecimal
+ dRow("RetIVAPorcentaje") = dRow("RetIVAPorcentaje").ToString.ToDecimal
+ dRow("RetISRPorcentaje") = dRow("RetISRPorcentaje").ToString.ToDecimal
+ dRow("IEPSPSPorcentaje") = dRow("IEPSPSPorcentaje").ToString.ToDecimal
+ dRow("IEPSPSIVAPorcentaje") = dRow("IEPSPSIVAPorcentaje").ToString.ToDecimal
+ Next
+ TmpDT.AcceptChanges()
+
+
+ Dim psCvePs As Integer = 700562
+ Dim rowPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, psCvePs).Rows(0)
+
+ Dim psPSCodigo As String = rowPS("PSCodigo").ToString
+ Dim psCveClasificacion As Integer = rowPS("CveClasificacion").ToString.ToEntero
+ Dim psClasificacion As String = rowPS("Clasificacion").ToString
+ Dim psCveUM As Integer = rowPS("CveUM").ToString.ToEntero
+ Dim psUM As String = rowPS("UnidadMedida").ToString
+
+ For Each drIva As DataRow In DT_IVAS.Rows
+
+ Dim nRowAgrupado As DataRow = DT_Agrupado.NewRow
+
+ Dim drIVAPorcentaje As Decimal = drIva("IVAPorcentaje").ToString.ToDecimal
+ Dim drRetIVAPorcentaje As Decimal = drIva("RetIVAPorcentaje").ToString.ToDecimal
+ Dim drRetISRPorcentaje As Decimal = drIva("RetISRPorcentaje").ToString.ToDecimal
+ Dim drIEPSPSPorcentaje As Decimal = drIva("IEPSPSPorcentaje").ToString.ToDecimal
+ Dim drIEPSPSIVAPorcentaje As Decimal = drIva("IEPSPSIVAPorcentaje").ToString.ToDecimal
+
+ nRowAgrupado("Consec") = Consec
+
+ nRowAgrupado("Cantidad") = 1
+ nRowAgrupado("CveUM") = psCveUM
+ nRowAgrupado("UM") = psUM
+ nRowAgrupado("CvePS") = psCvePs
+ nRowAgrupado("PS") = psPSCodigo
+ nRowAgrupado("CveClasificacion") = psCveClasificacion
+ nRowAgrupado("Clasificacion") = psClasificacion
+
+ nRowAgrupado("IVAPorcentaje") = drIva("IVAPorcentaje")
+ nRowAgrupado("RetIVAPorcentaje") = drIva("RetIVAPorcentaje")
+ nRowAgrupado("RetISRPorcentaje") = drIva("RetISRPorcentaje")
+ nRowAgrupado("IEPSPSPorcentaje") = drIva("IEPSPSPorcentaje")
+ nRowAgrupado("IEPSPSIVAPorcentaje") = drIva("IEPSPSIVAPorcentaje")
+
+ nRowAgrupado("PU") = TmpDT.SUMD("PU", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("IVA") = TmpDT.SUMD("IVA", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("RetIVA") = TmpDT.SUMD("RetIVA", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("RetISR") = TmpDT.SUMD("RetISR", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("IEPSPS") = TmpDT.SUMD("IEPSPS", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("IEPSPSIVA") = TmpDT.SUMD("IEPSPSIVA", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("Descuento") = TmpDT.SUMD("Descuento", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("Total") = TmpDT.SUMD("Total", $" IVAPorcentaje={drIVAPorcentaje} AND RetIVAPorcentaje = {drRetIVAPorcentaje} AND RetISRPorcentaje= {drRetISRPorcentaje} AND IEPSPSPorcentaje = {drIEPSPSPorcentaje} AND IEPSPSIVAPorcentaje = {drIEPSPSIVAPorcentaje} ")
+ nRowAgrupado("NoDeducible") = 0
+
+ Consec = Consec + 1
+
+ DT_Agrupado.Rows.Add(nRowAgrupado)
+
+ Next
+ DT_Agrupado.AcceptChanges()
+
+ Consec = 1
+ For Each dRowOriginal As DataRow In DT_Agrupado.Rows
@@ -20330,23 +20598,11 @@ Partial Class Compras_Compras
dRow91_5.ItemArray = dRowOriginal.ItemArray
dRow8_5.ItemArray = dRowOriginal.ItemArray
- Dim Mul91_5 As Decimal = 0.915D
Dim Mul85 As Decimal = 0.085D
+ Dim Mul91_5 As Decimal = 0.915D
- dRow91_5("Consec") = Consec
- dRow91_5("PU") = dRow91_5("PU").ToString.ToDecimal * Mul91_5
- dRow91_5("IVA") = dRow91_5("IVA").ToString.ToDecimal * Mul91_5
- dRow91_5("RetIVA") = dRow91_5("RetIVA").ToString.ToDecimal * Mul91_5
- dRow91_5("RetISR") = dRow91_5("RetISR").ToString.ToDecimal * Mul91_5
- dRow91_5("IEPSPS") = dRow91_5("IEPSPS").ToString.ToDecimal * Mul91_5
- dRow91_5("IEPSPSIVA") = dRow91_5("IEPSPSIVA").ToString.ToDecimal * Mul91_5
- dRow91_5("Descuento") = dRow91_5("Descuento").ToString.ToDecimal * Mul91_5
- dRow91_5("Total") = dRow91_5("Total").ToString.ToDecimal * Mul91_5
- dRow91_5("NoDeducible") = 1
-
-
- dRow8_5("Consec") = Consec + 1
+ dRow8_5("Consec") = Consec
dRow8_5("PU") = dRow8_5("PU").ToString.ToDecimal * Mul85
dRow8_5("IVA") = dRow8_5("IVA").ToString.ToDecimal * Mul85
dRow8_5("RetIVA") = dRow8_5("RetIVA").ToString.ToDecimal * Mul85
@@ -20358,8 +20614,40 @@ Partial Class Compras_Compras
dRow8_5("NoDeducible") = 0
- DTProtateo.Rows.Add(dRow91_5)
+
+
+ psCvePs = 700563
+ rowPS = GlobalDTPS(UsuarioActual.CveEmpresa, psCvePs).Rows(0)
+
+ psPSCodigo = rowPS("PSCodigo").ToString
+ psCveClasificacion = rowPS("CveClasificacion").ToString.ToEntero
+ psClasificacion = rowPS("Clasificacion").ToString
+ psCveUM = rowPS("CveUM").ToString.ToEntero
+ psUM = rowPS("UnidadMedida").ToString
+
+
+ dRow91_5("CveUM") = psCveUM
+ dRow91_5("UM") = psUM
+ dRow91_5("CvePS") = psCvePs
+ dRow91_5("PS") = psPSCodigo
+ dRow91_5("CveClasificacion") = psCveClasificacion
+ dRow91_5("Clasificacion") = psClasificacion
+
+ dRow91_5("Consec") = Consec + 1
+ dRow91_5("PU") = dRow91_5("PU").ToString.ToDecimal * Mul91_5
+ dRow91_5("IVA") = dRow91_5("IVA").ToString.ToDecimal * Mul91_5
+ dRow91_5("RetIVA") = dRow91_5("RetIVA").ToString.ToDecimal * Mul91_5
+ dRow91_5("RetISR") = dRow91_5("RetISR").ToString.ToDecimal * Mul91_5
+ dRow91_5("IEPSPS") = dRow91_5("IEPSPS").ToString.ToDecimal * Mul91_5
+ dRow91_5("IEPSPSIVA") = dRow91_5("IEPSPSIVA").ToString.ToDecimal * Mul91_5
+ dRow91_5("Descuento") = dRow91_5("Descuento").ToString.ToDecimal * Mul91_5
+ dRow91_5("Total") = dRow91_5("Total").ToString.ToDecimal * Mul91_5
+ dRow91_5("NoDeducible") = 1
+
+
DTProtateo.Rows.Add(dRow8_5)
+ DTProtateo.Rows.Add(dRow91_5)
+
Consec = Consec + 2
@@ -20378,12 +20666,9 @@ Partial Class Compras_Compras
ProratearDeducible()
End Sub
-
#End Region
-
-
End Class