-- pago de compra, con diferentes monedas

This commit is contained in:
2023-05-04 18:27:23 -07:00
parent c4f03f5109
commit a7e0d41b0d

View File

@@ -6,6 +6,7 @@ Imports System.IO
Imports System.Net.Http Imports System.Net.Http
Imports System.Xml Imports System.Xml
Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.ReportSource
Imports CrystalDecisions.Shared Imports CrystalDecisions.Shared
Imports Extensiones Imports Extensiones
Imports iText.Kernel.Pdf Imports iText.Kernel.Pdf
@@ -7667,7 +7668,6 @@ Public Class ClsPaginas
#Region "P A G O D E C O M P R A S " #Region "P A G O D E C O M P R A S "
Public Function AplicaPrePolizaPagoCompra(CompraActual As Compra, Pago As CompraPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean Public Function AplicaPrePolizaPagoCompra(CompraActual As Compra, Pago As CompraPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean
Dim ErrorMovtos As Boolean = False Dim ErrorMovtos As Boolean = False
Dim PorcentajePago As Decimal = Pago.ImportePago / CompraActual.Total
Dim ImporteMovimiento As Decimal = 0 Dim ImporteMovimiento As Decimal = 0
Dim ImporteMN As Decimal = 0 Dim ImporteMN As Decimal = 0
Dim ImporteME As Decimal = 0 Dim ImporteME As Decimal = 0
@@ -7677,6 +7677,14 @@ Public Class ClsPaginas
Dim tFechaUltimaFluctuacion As Date Dim tFechaUltimaFluctuacion As Date
Dim tImportePago As Decimal Dim tImportePago As Decimal
Dim tImporteCompra As Decimal = Pago.ImportePago Dim tImporteCompra As Decimal = Pago.ImportePago
Dim PorcentajePago As Decimal = Pago.ImportePago / CompraActual.Total
'VALIDACIONES A CONSIDERAR
If CompraActual.CveMoneda = Pago.CveMonedaPago Then
Pago.TCCambioMoneda = 1 ' si la moneda es igual, el importe debe ser 1
ElseIf CompraActual.CveMoneda <> Pago.CveMonedaPago AndAlso Pago.TCCambioMoneda = 1 Then
ErrorMovtos = True
Return ErrorMovtos
End If
Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(1, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor) Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(1, CompraActual.CveMoneda, True, CompraActual.CveTipoConceptoProveedor)
'cuando el Pago viene por NC, se utiliza un concepto 'cuando el Pago viene por NC, se utiliza un concepto
@@ -7701,25 +7709,32 @@ Public Class ClsPaginas
If CompraActual.CveMoneda = 1 And Pago.CveMonedaPago <> 1 Then 'factura pesos, pago en dolares If CompraActual.CveMoneda = 1 And Pago.CveMonedaPago <> 1 Then 'factura pesos, pago en dolares
tImportePago = ((Pago.ImportePago * TCValuacionCompra / Pago.TCPago).RoundSQL * Pago.TCPago).RoundSQL tImportePago = ((Pago.ImportePago * TCValuacionCompra / Pago.TCPago).RoundSQL * Pago.TCPago).RoundSQL
tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL
PorcentajePago = Pago.ImportePago * Pago.TCCambioMoneda / CompraActual.Total
ElseIf CompraActual.CveMoneda <> 1 And Pago.CveMonedaPago = 1 Then 'factura dolares, pago en pesos
tImporteCompra = (Pago.ImportePagoCompra * TCValuacionCompra).RoundSQL
tImportePago = (Pago.ImportePago).RoundSQL
PorcentajePago = Pago.ImportePago * Pago.TCCambioMoneda / CompraActual.Total
ElseIf CompraActual.CveMoneda <> 1 And Pago.CveMonedaPago <> 1 Then 'factura dolares, pago en dolares ElseIf CompraActual.CveMoneda <> 1 And Pago.CveMonedaPago <> 1 Then 'factura dolares, pago en dolares
tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL
tImportePago = (Pago.ImportePago * Pago.TCPago).RoundSQL tImportePago = (Pago.ImportePago * Pago.TCPago).RoundSQL
ElseIf CompraActual.CveMoneda <> 1 And Pago.CveMonedaPago = 1 Then 'factura dolares, pago en pesos PorcentajePago = Pago.ImportePago / CompraActual.Total
tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL ElseIf CompraActual.CveMoneda = 1 And Pago.CveMonedaPago = 1 Then 'factura dolares, pago en pesos
tImportePago = (Pago.ImportePago * Pago.TCPago).RoundSQL tImporteCompra = Pago.ImportePago
tImportePago = Pago.ImportePago
PorcentajePago = Pago.ImportePago / CompraActual.Total
End If End If
Dim ImportePagoMN As Decimal = Pago.ImportePago Dim ImportePagoMN As Decimal = Pago.ImportePagoCompra
Dim UsaComplementaria As Boolean = True Dim UsaComplementaria As Boolean = True
If CompraActual.CveMoneda > 1 Then ImporteME = Pago.ImportePago If CompraActual.CveMoneda > 1 Then ImporteME = Pago.ImportePagoCompra
If UsuarioActual.CveEmpresa.Contiene(13, 83) Then 'caso excepcional de complementarias If UsuarioActual.CveEmpresa.Contiene(13, 83) Then 'caso excepcional de complementarias
UsaComplementaria = False UsaComplementaria = False
ImportePagoMN = (Pago.ImportePago * TCValuacionCompra).RoundSQL ImportePagoMN = (Pago.ImportePagoCompra * TCValuacionCompra).RoundSQL
End If End If
'movimiento de pago proveedor 'movimiento de pago proveedor
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImportePagoMN, ConPreP.CveConcepto, CompraActual.SerieFolio, Concepto, CompraActual.IdCtaContableProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveCompraAmortizacion:=Pago.CveCompraAmortizacion, TipoCambio:=TCValuacionCompra, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto, CveVenta:=Pago.CveVentaRelacionada) Then ErrorMovtos = True If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePagoCompra, ImportePagoMN, ConPreP.CveConcepto, CompraActual.SerieFolio, Concepto, CompraActual.IdCtaContableProv, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveCompraAmortizacion:=Pago.CveCompraAmortizacion, TipoCambio:=TCValuacionCompra, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto, CveVenta:=Pago.CveVentaRelacionada) Then ErrorMovtos = True
'movimiento de pago proveedor Complementaria 'movimiento de pago proveedor Complementaria
If Not ErrorMovtos AndAlso CompraActual.CveMoneda > 1 AndAlso UsaComplementaria Then If Not ErrorMovtos AndAlso CompraActual.CveMoneda > 1 AndAlso UsaComplementaria Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, (ImporteME * TCValuacionCompra - ImporteME).RoundSQL, ConPreP.CveConceptoComplementario, CompraActual.SerieFolio, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveCompraAmortizacion:=Pago.CveCompraAmortizacion, TipoCambio:=TCValuacionCompra, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto, CveVenta:=Pago.CveVentaRelacionada) Then ErrorMovtos = True If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePagoCompra, (ImporteME * TCValuacionCompra - ImporteME).RoundSQL, ConPreP.CveConceptoComplementario, CompraActual.SerieFolio, Concepto, CompraActual.IdCtaContableProvComplementaria, CveCompra:=CompraActual.CveCompra, CveProveedor:=CompraActual.CveProveedor, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveCompraAmortizacion:=Pago.CveCompraAmortizacion, TipoCambio:=TCValuacionCompra, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=CompraActual.CveSubProyecto, CveVenta:=Pago.CveVentaRelacionada) Then ErrorMovtos = True
End If End If
If Pago.AplicaAcreditable Then If Pago.AplicaAcreditable Then
'si tiene iva y su proporcion 'si tiene iva y su proporcion
@@ -7886,6 +7901,12 @@ Public Class ClsPaginas
Public Property CveIE As Integer = -1 Public Property CveIE As Integer = -1
Public Property CvePersonal As Integer = -1 Public Property CvePersonal As Integer = -1
Public Property ImportePago As Decimal = 0 Public Property ImportePago As Decimal = 0
Public ReadOnly Property ImportePagoCompra As Decimal
Get
Return (ImportePago * TCCambioMoneda).RoundSQL
End Get
End Property
Public Property TCCambioMoneda As Decimal = 1
Public Property CveMonedaPago As Integer = 1 Public Property CveMonedaPago As Integer = 1
Public Property TCPago As Decimal = 1 Public Property TCPago As Decimal = 1
Public Property CveCompraAmortizacion As Integer = 0 Public Property CveCompraAmortizacion As Integer = 0
@@ -8037,43 +8058,53 @@ Public Class ClsPaginas
End Get End Get
End Property End Property
End Class End Class
' 1. Proveedores, 11. anticipos proveedores, 15. Notas de crédito de proveedores ' 1. Proveedores, 11. anticipos proveedores, 15. Notas de crédito de proveedores, 6. Clientes
Public Shared ReadOnly Property ObtenerCveConceptoPrePoliza(CveTipoSaldo As Integer, CveMoneda As Integer, EsAplicacionPago As Boolean, CveTipoProveedor As Integer) As ConceptosTipoSaldo 'CveTipoProveedorTipoDocto: cuando es TipoSaldo=2: 1. Proveedor, 2. Acreedor, TipoSaldo=6: 1.Factura, 2.NC
Public Shared ReadOnly Property ObtenerCveConceptoPrePoliza(CveTipoSaldo As Integer, CveMoneda As Integer, EsAplicacionPago As Boolean, CveTipoProveedorTipoDocto As Integer) As ConceptosTipoSaldo
Get Get
Dim Retorno As New ConceptosTipoSaldo Dim Retorno As New ConceptosTipoSaldo
If EsAplicacionPago Then If EsAplicacionPago Then
Select Case CveTipoSaldo Select Case CveTipoSaldo
Case 1 ' proveedores/acreedores Case 1 ' proveedores/acreedores
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 17, 308) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 17, 308)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 312, 309) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 312, 309)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 206, 310) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 206, 310)
End Select End Select
Case 11 ' anticipos Case 11 ' anticipos
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 21, 56) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 21, 56)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 339, 346) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 339, 346)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 340, 347) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 340, 347)
End Select End Select
Case 15 ' notas de crédito Case 15 ' notas de crédito
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 60, 324) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 60, 324)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 342, 344) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 342, 344)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 235, 235) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 235, 235)
End Select End Select
Case 17 ' deudores Case 17 ' deudores
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 37, 37) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 37, 37)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 37, 37) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 37, 37)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 256, 256) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 256, 256)
End Select
Case 6 ' clientes
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 2, 91) '1.Venta.2.NC
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 292, 294) '1.Venta.2.NC
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 207, 203) '1.Venta.2.NC
End Select End Select
End Select End Select
Else 'cuando es la provisión Else 'cuando es la provisión
@@ -8081,35 +8112,44 @@ Public Class ClsPaginas
Case 1 ' proveedores/acreedores Case 1 ' proveedores/acreedores
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 5, 305) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 5, 305)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 311, 306) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 311, 306)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 201, 307) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 201, 307)
End Select End Select
Case 11 ' anticipos Case 11 ' anticipos
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 10, 48) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 10, 48)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 338, 345) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 338, 345)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 340, 347) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 340, 347)
End Select End Select
Case 15 ' notas de crédito Case 15 ' notas de crédito
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 18, 323) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 18, 323)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 341, 343) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 341, 343)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 234, 234) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 234, 234)
End Select End Select
Case 17 ' deudores Case 17 ' deudores
Select Case CveMoneda Select Case CveMoneda
Case 1 'pesos Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 43, 43) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 43, 43)
Case 2 'dólares Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 43, 43) Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 43, 43)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 256, 256) Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 256, 256)
End Select End Select
Case 6 ' clientes
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 1, 12) '1.Venta.2.NC
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 291, 293) '1.Venta.2.NC
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 203, 203) '1.Venta.2.NC
End Select
End Select End Select
End If End If
@@ -8401,6 +8441,7 @@ Public Class ClsPaginas
PaginaDict.Add("/Nomina/ISRCalculoAnual.aspx".ToUpper(), 918) PaginaDict.Add("/Nomina/ISRCalculoAnual.aspx".ToUpper(), 918)
PaginaDict.Add("/Nomina/MovimientosSUA.aspx".ToUpper(), 919) PaginaDict.Add("/Nomina/MovimientosSUA.aspx".ToUpper(), 919)
PaginaDict.Add("/Nomina/Acumulados.aspx".ToUpper(), 916) PaginaDict.Add("/Nomina/Acumulados.aspx".ToUpper(), 916)
PaginaDict.Add("/RH/CalculoSBC.aspx".ToUpper(), 915) PaginaDict.Add("/RH/CalculoSBC.aspx".ToUpper(), 915)
PaginaDict.Add("/Inicio.aspx".ToUpper(), -1) PaginaDict.Add("/Inicio.aspx".ToUpper(), -1)
PaginaDict.Add("/reporteador.aspx".ToUpper(), -1) PaginaDict.Add("/reporteador.aspx".ToUpper(), -1)