Compras valdiacion base retenciones

This commit is contained in:
rakcsle
2024-02-26 11:56:28 -07:00
parent 05fef06447
commit dd4ba99ad0
3 changed files with 139 additions and 53 deletions

View File

@@ -10,6 +10,7 @@ Imports System.Threading.Tasks
Imports Newtonsoft.Json Imports Newtonsoft.Json
Imports Extensiones Imports Extensiones
Imports MoreLinq Imports MoreLinq
Imports ClbNegBICFDv3_3
Partial Class Compras_Compras Partial Class Compras_Compras
Inherits ClsPaginas Inherits ClsPaginas
@@ -1341,7 +1342,7 @@ Partial Class Compras_Compras
CambiaEjercicioAC() CambiaEjercicioAC()
End If End If
UpConsignaciones.Update() UpConsignaciones.Update()
UpINV.Update() UpInv.Update()
'DdlIVA.Visible = True ' cuando es compra manual 'DdlIVA.Visible = True ' cuando es compra manual
'If UsuarioActual.CveEmpresa = 126 Then 'If UsuarioActual.CveEmpresa = 126 Then
' CargaOrdenCorte() ' CargaOrdenCorte()
@@ -1735,6 +1736,50 @@ Partial Class Compras_Compras
End If End If
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 Else
CargaConceptosXML(XMLDoc) CargaConceptosXML(XMLDoc)
End If End If
@@ -20085,6 +20130,10 @@ Partial Class Compras_Compras
DdlRefacturacionFacturas.Items.Insert(0, New ListItem("Seleccione", "-1")) DdlRefacturacionFacturas.Items.Insert(0, New ListItem("Seleccione", "-1"))
End Sub End Sub
Protected Sub BtnRecolecciónAplicar_Click(sender As Object, e As EventArgs)
End Sub
End Class End Class

View File

@@ -39,6 +39,8 @@
<asp:RadioButtonList runat="server" ID="RblFormato"> <asp:RadioButtonList runat="server" ID="RblFormato">
<asp:ListItem Value="1" Text="Proveedores" Selected="True"></asp:ListItem> <asp:ListItem Value="1" Text="Proveedores" Selected="True"></asp:ListItem>
<asp:ListItem Value="3" Text="Factura - Proveedor"></asp:ListItem> <asp:ListItem Value="3" Text="Factura - Proveedor"></asp:ListItem>
<asp:ListItem Value="18" Text="Factura - Proveedor Detalle"></asp:ListItem>
<asp:ListItem Value="13" Text="Anticipo Proveedores"></asp:ListItem> <asp:ListItem Value="13" Text="Anticipo Proveedores"></asp:ListItem>
<asp:ListItem Value="2" Text="Clientes"></asp:ListItem> <asp:ListItem Value="2" Text="Clientes"></asp:ListItem>
<asp:ListItem Value="4" Text="Factura - Cliente"></asp:ListItem> <asp:ListItem Value="4" Text="Factura - Cliente"></asp:ListItem>

View File

@@ -225,7 +225,7 @@ Partial Class General_SaldosIniciales
ElseIf RblFormato.SelectedValue = "3" Or RblFormato.SelectedValue = "4" Or RblFormato.SelectedValue = "17" Then ElseIf RblFormato.SelectedValue = "3" Or RblFormato.SelectedValue = "4" Or RblFormato.SelectedValue = "17" Or Or RblFormato.SelectedValue = "18" Then
If Not dt.Columns(0).ColumnName = "Sucursal" Then If Not dt.Columns(0).ColumnName = "Sucursal" Then
Alert("El nombre de la primera columna debe ser 'Sucursal'. Favor de corregirlo", TipoMensaje.MsgError) Alert("El nombre de la primera columna debe ser 'Sucursal'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub Exit Sub
@@ -293,54 +293,84 @@ Partial Class General_SaldosIniciales
Exit Sub Exit Sub
End If End If
If Not dt.Columns(15).ColumnName = "Folio Fiscal" Then
Alert("El nombre de la decimosexta columna debe ser 'Folio Fiscalo'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(16).ColumnName = "PorcentajeIVA" Then If RblFormato.SelectedValue = "3" Or RblFormato.SelectedValue = "18" Then
Alert("El nombre de la decimoséptima columna debe ser 'PorcentajeIVA'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
'If RblFormato.SelectedValue = "4" Then If Not dt.Columns(15).ColumnName = "PorcentajeIVA" Then
' If Not dt.Columns(15).ColumnName = "ImpuestoLocal" Then Alert("El nombre de la quinceava columna debe ser 'PorcentajeIVA'. Favor de corregirlo", TipoMensaje.MsgError)
' Alert("El nombre de la diesciseisava columna debe ser 'ImpuestoLocal'. Favor de corregirlo", TipoMensaje.MsgError)
' Exit Sub
' End If
' If Not dt.Columns(16).ColumnName = "Amort.Ant" Then
' Alert("El nombre de la diescisieteava columna debe ser 'Amort.Ant'. Favor de corregirlo", TipoMensaje.MsgError)
' Exit Sub
' End If
'End If
If RblFormato.SelectedValue = "17" Then
If Not dt.Columns(17).ColumnName = "Cantidad" Then
Alert("El nombre de la Decimoctava columna debe ser 'Cantidad'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub Exit Sub
End If End If
If Not dt.Columns(18).ColumnName = "PU" Then If Not dt.Columns(16).ColumnName = "ImpuestosLocales" Then
Alert("El nombre de la Decimonovena columna debe ser 'PU'. Favor de corregirlo", TipoMensaje.MsgError) Alert("El nombre de la quinceava columna debe ser 'ImpuestosLocales'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub Exit Sub
End If End If
If Not dt.Columns(19).ColumnName = "IVA" Then If RblFormato.SelectedValue = "18" Then
Alert("El nombre de la Vigésima columna debe ser 'IVA'. Favor de corregirlo", TipoMensaje.MsgError) If Not dt.Columns(17).ColumnName = "Cantidad" Then
Exit Sub Alert("El nombre de la Decimoctava columna debe ser 'Cantidad'. Favor de corregirlo", TipoMensaje.MsgError)
End If Exit Sub
End If
If Not dt.Columns(18).ColumnName = "Codigo" Then
If Not dt.Columns(20).ColumnName = "IEPS" Then Alert("El nombre de la Decimonovena columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError)
Alert("El nombre de la Vigésimo primera columna debe ser 'IEPS'. Favor de corregirlo", TipoMensaje.MsgError) Exit Sub
Exit Sub End If
If Not dt.Columns(19).ColumnName = "PU" Then
Alert("El nombre de la Vigésima columna debe ser 'PU'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(20).ColumnName = "IVADetalle" Then
Alert("El nombre de la Vigésimo primera columna debe ser 'IVADetalle'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(21).ColumnName = "IEPS" Then
Alert("El nombre de la Vigésimo segunda columna debe ser 'IEPS'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
End If End If
End If End If
If RblFormato.SelectedValue = "4" Or RblFormato.SelectedValue = "17" Then
If Not dt.Columns(15).ColumnName = "Folio Fiscal" Then
Alert("El nombre de la decimosexta columna debe ser 'Folio Fiscalo'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(16).ColumnName = "PorcentajeIVA" Then
Alert("El nombre de la decimoséptima columna debe ser 'PorcentajeIVA'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If RblFormato.SelectedValue = "17" Then
If Not dt.Columns(17).ColumnName = "Cantidad" Then
Alert("El nombre de la Decimoctava columna debe ser 'Cantidad'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(18).ColumnName = "Codigo" Then
Alert("El nombre de la Decimonovena columna debe ser 'Codigo'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(19).ColumnName = "PU" Then
Alert("El nombre de la Vigésima columna debe ser 'PU'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(20).ColumnName = "IVADetalle" Then
Alert("El nombre de la Vigésimo primera columna debe ser 'IVADetalle'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
If Not dt.Columns(21).ColumnName = "IEPS" Then
Alert("El nombre de la Vigésimo segunda columna debe ser 'IEPS'. Favor de corregirlo", TipoMensaje.MsgError)
Exit Sub
End If
End If
End If
ElseIf RblFormato.SelectedValue = "5" Then ElseIf RblFormato.SelectedValue = "5" Then
If Not dt.Columns(0).ColumnName = "Codigo" Then If Not dt.Columns(0).ColumnName = "Codigo" Then
@@ -1688,7 +1718,7 @@ Partial Class General_SaldosIniciales
Dim CodigoDetalle As String = Row("Codigo").ToString Dim CodigoDetalle As String = Row("Codigo").ToString
If CodigoDetalle.Trim.Length > 0 Then If CodigoDetalle.Trim.Length > 0 Then
Dim DrDetalles As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo = {CodigoDetalle}") Dim DrDetalles As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa).FiltroPrimero($"Codigo = '{CodigoDetalle}'")
If DrDetalles IsNot Nothing Then If DrDetalles IsNot Nothing Then
CvePS = DrDetalles("CvePS").ToString().ToEntero() CvePS = DrDetalles("CvePS").ToString().ToEntero()
@@ -1811,9 +1841,6 @@ Partial Class General_SaldosIniciales
Dim ConceptoContable As Integer = 1 Dim ConceptoContable As Integer = 1
Dim ConceptoContablePago As Integer = 2 Dim ConceptoContablePago As Integer = 2
If TipoDocto = "Egs" Then If TipoDocto = "Egs" Then
@@ -1844,6 +1871,11 @@ Partial Class General_SaldosIniciales
If RetIVA > 0 Then If RetIVA > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetIVA, RetIVA, 8, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetIVA, RetIVA, 8, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If End If
'If RetISR > 0 Then
' If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, RetISR, RetISR, 9, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=Porce, Contabilizable:=False) Then ErrorVentas = True : Exit For
'End If
If ImpuestoLocal > 0 Then If ImpuestoLocal > 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImpuestoLocal, ImpuestoLocal, 27, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImpuestoLocal, ImpuestoLocal, 27, Folio.ToString(), String.Format("{0}-{1}", Serie, Folio), CveVenta:=CveVenta, CveCliente:=CveCliente, PorcentajeImpuesto:=PorcentajeIVA, Contabilizable:=False) Then ErrorVentas = True : Exit For
End If End If
@@ -2387,7 +2419,7 @@ Partial Class General_SaldosIniciales
Dim AlmacenRef As DataTable = GlobalDTAlmacen(UsuarioActual.CveEmpresa) Dim AlmacenRef As DataTable = GlobalDTAlmacen(UsuarioActual.CveEmpresa)
Dim contadorMovimientos As Integer = 0 Dim contadorMovimientos As Integer = 0
Dim listadoMovimientos As String = "" Dim listadoMovimientos As String = ""
Dim mensajeError As String = "" Dim mensajeError As New StringBuilder
Dim Fecha As DateTime = (TxtFecha.Text).ToDate Dim Fecha As DateTime = (TxtFecha.Text).ToDate
Try Try
For Each almacenSinRepetir As DataRow In dt.FiltraParametros("Almacen <> ''", DistinctColumns:={"Almacen"}).Rows For Each almacenSinRepetir As DataRow In dt.FiltraParametros("Almacen <> ''", DistinctColumns:={"Almacen"}).Rows
@@ -2403,6 +2435,7 @@ Partial Class General_SaldosIniciales
contadorMovimientos += 1 contadorMovimientos += 1
Dim RowPS As DataRow = ProductosServiciosRef.FiltroPrimero($"Codigo = '{nuevaEntrada("CodigoPS")}' ") Dim RowPS As DataRow = ProductosServiciosRef.FiltroPrimero($"Codigo = '{nuevaEntrada("CodigoPS")}' ")
If RowPS IsNot Nothing Then If RowPS IsNot Nothing Then
Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero() Dim CvePS As Integer = RowPS("CvePS").ToString().ToEntero()
Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero() Dim CveUM As Integer = RowPS("CveUnidadMedida").ToString().ToEntero()
If CveUM > 0 Then If CveUM > 0 Then
@@ -2415,47 +2448,47 @@ Partial Class General_SaldosIniciales
Dim PU As Decimal = If(Valor = 0, 0, (Valor / Cantidad)) Dim PU As Decimal = If(Valor = 0, 0, (Valor / Cantidad))
If Not ObjMovimientos.AddMovimientoDetalle(movimientoCabecera, Cantidad, CveUM, CvePS, PU, -1, -1, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then If Not ObjMovimientos.AddMovimientoDetalle(movimientoCabecera, Cantidad, CveUM, CvePS, PU, -1, -1, Serie:=Serie, Lote:=Lote, FechaCaducidad:=FechaCaducidad) Then
mensajeError = "No se logró generar el detalle del movimiento" mensajeError.Append("No se logró generar el detalle del movimiento")
Throw New Exception() Throw New Exception()
End If End If
Else Else
mensajeError = $"La unidad de medida no se reconoce para el producto servicio:{nuevaEntrada("CodigoPS")}" mensajeError.Append($"La unidad de medida no se reconoce para el producto servicio:{nuevaEntrada("CodigoPS")}")
Throw New Exception() Throw New Exception()
End If End If
Else Else
mensajeError = "" '$"No se encontró el producto o servicio con código ""{nuevaEntrada("CodigoPS")}""" mensajeError.Append($"No se encontró el producto o servicio con código ""{nuevaEntrada("CodigoPS")}"" <br>")
'Throw New Exception() ' Throw New Exception()
End If End If
Next Next
If contadorMovimientos = 0 Then If contadorMovimientos = 0 Then
mensajeError = $"No se encontraros registros del almacen: ""{almacenActual}""" mensajeError.Append($"No se encontraros registros del almacen: ""{almacenActual}""")
Throw New Exception() Throw New Exception()
Exit For Exit For
End If End If
Else Else
mensajeError = $"No se registró el encabezado ""{almacenActual}""" mensajeError.Append($"No se registró el encabezado ""{almacenActual}""")
Throw New Exception() Throw New Exception()
Exit For Exit For
End If End If
Else Else
mensajeError = $"No se encontró el almacén con nombre ""{almacenActual}""" mensajeError.Append($"No se encontró el almacén con nombre ""{almacenActual}""")
Throw New Exception() Throw New Exception()
Exit For Exit For
End If End If
Next Next
Catch ex As Exception Catch ex As Exception
If mensajeError = "" Then If mensajeError.ToString = "" Then
mensajeError = "Error técnico, informar a soporte" & ex.Message mensajeError.Append("Error técnico, informar a soporte" & ex.Message)
End If End If
ObjMovimientos.RollBack() ObjMovimientos.RollBack()
End Try End Try
If mensajeError = "" Then If mensajeError.ToString = "" Then
ObjMovimientos.Commit() ObjMovimientos.Commit()
Alert($"Se cargaron correctamente {contadorMovimientos} movimientos<br/><br/>{listadoMovimientos}") Alert($"Se cargaron correctamente {contadorMovimientos} movimientos<br/><br/>{listadoMovimientos}")
Else Else
Alert(mensajeError, TipoMensaje.MsgError) Alert(mensajeError.ToString, TipoMensaje.MsgError)
ObjMovimientos.RollBack() ObjMovimientos.RollBack()
End If End If
@@ -3083,6 +3116,8 @@ Partial Class General_SaldosIniciales
Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\SaldosIniciales\FormatoClasificaciones.xlsx" Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\SaldosIniciales\FormatoClasificaciones.xlsx"
ElseIf RblFormato.SelectedValue = "17" Then ElseIf RblFormato.SelectedValue = "17" Then
Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\SaldosIniciales\FormatoClientes-Facturas-Detalles.xlsx" Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\SaldosIniciales\FormatoClientes-Facturas-Detalles.xlsx"
ElseIf RblFormato.SelectedValue = "18" Then
Directorio = ModExtensiones.DirectorioBaseEmpresas & "Empresas\Grales\SaldosIniciales\FormatoProveedores-Facturas-Detalles.xlsx"
End If End If
If Not (Directorio = "") Then If Not (Directorio = "") Then