eFacturas RNC autovinculacion

This commit is contained in:
rakcsle
2025-02-25 09:42:40 -07:00
parent 4aad796406
commit 6887b8cecc

View File

@@ -6080,6 +6080,7 @@ Partial Class Compras_eFacturas
End Sub
Private Sub VinculacionAutomaticaRNC()
Dim ErrorProceso As Boolean = False
Dim ErrorProcesoStr As String = ""
Dim Contador As Integer = 0
@@ -6088,7 +6089,6 @@ Partial Class Compras_eFacturas
'DataKeyNames="CveFactura,CveCompra,CveProveedor,SerieFolio,NombreProveedor,UUID,RFCDe,RFCPara,TipoFactura,FueValidado,TipoComprobante,Version,RFCde,XML,PDF,BloquePorComplemento,Total,CveTipoProveedor,FechaFactura"
For Each GvRow As GridViewRow In GvD.Rows
If GvRow.DataKey("TipoComprobante") = "E" Then
@@ -6113,31 +6113,97 @@ Partial Class Compras_eFacturas
CompraActual.Descripcion = TxtDescripcionCompra.Text.Trim
CompraActual.NombreProveedor = GvRow.DataKey("NombreProveedor")
Dim listaRNC As New List(Of Integer)
Dim DT_RNC As New DataTable
DT_RNC.Columns.Add("CveCompra", GetType(Integer))
DT_RNC.Columns.Add("CveSubProyecto", GetType(Integer))
DT_RNC.Columns.Add("Saldo", GetType(Decimal))
For Each DR As String In CompraActual.DocumentosRelacionadosUUIDSList
If Objcompras.GetVinculacionRNC(UUID:=DR, CveEmpresa:=UsuarioActual.CveEmpresa) Then
For Each drRNC As DataRow In Objcompras.DtResultados.Rows
Dim DR_RNC As DataRow = DT_RNC.NewRow
DR_RNC("CveCompra") = drRNC("CveCompra").ToString.ToEntero
DR_RNC("CveSubProyecto") = drRNC("CveSubProyecto").ToString.ToEntero
DR_RNC("Saldo") = drRNC("Saldo").ToString.ToDecimal
DT_RNC.Rows.Add(DR_RNC)
Next
End If
Next
Dim Saldo As Decimal = DT_RNC.SUM("Saldo")
Dim CveSubProyectoPrincipal As Integer = DT_RNC.FiltroPrimeroValor("CveSubProyecto").ToEntero
If Saldo >= CompraActual.Total Then
Dim CvePSRNC As Integer = UsuarioActual.Empresa.Funcionalidad(580).ToEntero
Dim PSRow As DataRow = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CvePS:=CvePSRNC).FiltroPrimero("")
If CompraActual.ConfiguraRegistroCompra(CvePSRNC, CveSubProyectoPrincipal, -1, -1,
-1, -1, NumeroReembolso:="",
DTProrrateo:=New DataTable, DTPagosDeudores:=New DataTable, TipoComprobante:="E") Then
If CompraActual.AddCompra(Objcompras.IniciaTransacSQL()) Then
Contador = Contador + 1
Else
ErrorProceso = True
ErrorProcesoStr = CompraActual.MensajeError
Exit For
End If
Else
ErrorProceso = True
ErrorProcesoStr = CompraActual.MensajeError
Exit For
End If
If Not ErrorProceso Then
Dim ObjConta As New ClsContabilidad(Objcompras.IniciaTransacSQL())
Dim TotalSaldo As Decimal = CompraActual.Total
Dim Referencia As String = GvRow.DataKey("SerieFolio")
Dim Concepto As String = GvRow.DataKey("SerieFolio")
Dim TipoCambio As Decimal = GlobalTipoCambio(GvRow.DataKey("FechaFactura").ToDate).ToDecimal
For Each drRNC As GridViewRow In DT_RNC.Rows
Dim ImporteRNCSaldar As Decimal = drRNC.DataKey("Saldo").ToDecimal
Dim CveCompraRNC As Integer = drRNC.DataKey("CveCompra").ToEntero
If ImporteRNCSaldar > TotalSaldo Then ImporteRNCSaldar = TotalSaldo
If Not ErrorProceso Then
If Not ObjConta.AddPrePolizasDetalle(CompraActual.CvePrePoliza, False, ImporteRNCSaldar, ImporteRNCSaldar, 373, Referencia, Concepto, CveCompra:=CveCompraRNC, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio,
CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then
ErrorProceso = True
Exit For
End If
If Not ErrorProceso Then
Dim ConPrePNC As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(15, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor)
If Not ObjConta.AddPrePolizasDetalle(CompraActual.CvePrePoliza, True, ImporteRNCSaldar, ImporteRNCSaldar, ConPrePNC.CveConcepto, Referencia, Concepto, CveCompra:=CompraActual.CveCompra, CveProveedor:=Me.CveProveedor, ImporteME:=If(TipoCambio = 1, 0, ImporteRNCSaldar), TipoCambio:=TipoCambio,
CveClasificacion:=-1, CveSubProyecto:=CompraActual.CveSubProyecto, Contabilizable:=True) Then
ErrorProceso = True
Exit For
End If
End If
If Not ErrorProceso Then
TotalSaldo = TotalSaldo - ImporteRNCSaldar
End If
End If
Next
End If
End If
'If CompraActual.ConfiguraRegistroCompra(DdlPS.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, CveCajachica, CvePersonal,
' DdlRetIVAConcepto.SelectedValue.ToEntero, DdlRetISRConcepto.SelectedValue.ToEntero, NumeroReembolso:=TxtNumeroReembolso.Text,
' DTProrrateo:=DTProrrateo, DTPagosDeudores:=New DataTable) Then
' 'FIX ME OIC Recuerda cambiar el tipo de documento al registrar, actualmente tiene FAC y NC uno u otro, ajustar para que registre *** Egs *** cuado TipoComprobante = 'E'
' If CompraActual.AddCompra(Objcompras.IniciaTransacSQL()) Then
' Contador = Contador + 1
' Else
' ErrorProceso = True
' ErrorProcesoStr = CompraActual.MensajeError
' Exit For
' End If
'Else
' ErrorProceso = True
' ErrorProcesoStr = CompraActual.MensajeError
' Exit For
'End If
'If RBLContado.SelectedValue.ToEntero = 4 Then 'Deudores
' Dim CompraActualPagar = New Compra
@@ -6850,7 +6916,8 @@ Public Class ClsCompraManager
#End Region
End Sub
Public Function ConfiguraRegistroCompra(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String, DTProrrateo As DataTable, DTPagosDeudores As DataTable) As Boolean
Public Function ConfiguraRegistroCompra(CvePS As Integer, CveSubProyecto As Integer, CveCajaChica As Integer, CvePersonal As Integer, CveRetIVAConcepto As Integer, CveRetISRConcepto As Integer, NumeroReembolso As String, DTProrrateo As DataTable,
DTPagosDeudores As DataTable, Optional TipoComprobante As String = "") As Boolean
Dim respuesta As Boolean = True
Me.CveSubProyecto = CveSubProyecto
@@ -6863,6 +6930,10 @@ Public Class ClsCompraManager
Me.NumeroReembolso = NumeroReembolso
Me.DTPagosDeudores = DTPagosDeudores
If TipoComprobante.Length > 0 Then
Me.TipoComprobante = TipoComprobante
End If
Dim dRowSubProyecto As DataRow = GlobalDTSubProyectos(UsuarioActual.CveEmpresa, CveSubProyecto:=CveSubProyecto).FiltroPrimero("")
If dRowSubProyecto IsNot Nothing Then
@@ -6877,7 +6948,7 @@ Public Class ClsCompraManager
Dim DTIndex As DataTable = TmpDT.FiltraParametros("", DistinctColumns:={"Consec"})
For Each dRowIndex As DataRow In DTIndex.Rows
If Not UpdatePSReembolso(dRowIndex("Consec").ToString.ToEntero, CvePS) Then
If Not UpdatePSDetalles(dRowIndex("Consec").ToString.ToEntero, CvePS) Then
respuesta = False
End If
Next
@@ -7830,7 +7901,7 @@ Public Class ClsCompraManager
End Sub
Private Function UpdatePSReembolso(Index As Integer, CvePS As Integer) As Boolean
Private Function UpdatePSDetalles(Index As Integer, CvePS As Integer) As Boolean
Dim Respuesta As Boolean = True