-- 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.Xml
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.ReportSource
Imports CrystalDecisions.Shared
Imports Extensiones
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 "
Public Function AplicaPrePolizaPagoCompra(CompraActual As Compra, Pago As CompraPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean
Dim ErrorMovtos As Boolean = False
Dim PorcentajePago As Decimal = Pago.ImportePago / CompraActual.Total
Dim ImporteMovimiento As Decimal = 0
Dim ImporteMN As Decimal = 0
Dim ImporteME As Decimal = 0
@@ -7677,6 +7677,14 @@ Public Class ClsPaginas
Dim tFechaUltimaFluctuacion As Date
Dim tImportePago As Decimal
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)
'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
tImportePago = ((Pago.ImportePago * TCValuacionCompra / Pago.TCPago).RoundSQL * Pago.TCPago).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
tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL
tImportePago = (Pago.ImportePago * Pago.TCPago).RoundSQL
ElseIf CompraActual.CveMoneda <> 1 And Pago.CveMonedaPago = 1 Then 'factura dolares, pago en pesos
tImporteCompra = (Pago.ImportePago * TCValuacionCompra).RoundSQL
tImportePago = (Pago.ImportePago * Pago.TCPago).RoundSQL
PorcentajePago = Pago.ImportePago / CompraActual.Total
ElseIf CompraActual.CveMoneda = 1 And Pago.CveMonedaPago = 1 Then 'factura dolares, pago en pesos
tImporteCompra = Pago.ImportePago
tImportePago = Pago.ImportePago
PorcentajePago = Pago.ImportePago / CompraActual.Total
End If
Dim ImportePagoMN As Decimal = Pago.ImportePago
Dim ImportePagoMN As Decimal = Pago.ImportePagoCompra
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
UsaComplementaria = False
ImportePagoMN = (Pago.ImportePago * TCValuacionCompra).RoundSQL
ImportePagoMN = (Pago.ImportePagoCompra * TCValuacionCompra).RoundSQL
End If
'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
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
If Pago.AplicaAcreditable Then
'si tiene iva y su proporcion
@@ -7886,6 +7901,12 @@ Public Class ClsPaginas
Public Property CveIE As Integer = -1
Public Property CvePersonal As Integer = -1
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 TCPago As Decimal = 1
Public Property CveCompraAmortizacion As Integer = 0
@@ -8037,43 +8058,53 @@ Public Class ClsPaginas
End Get
End Property
End Class
' 1. Proveedores, 11. anticipos proveedores, 15. Notas de crédito de proveedores
Public Shared ReadOnly Property ObtenerCveConceptoPrePoliza(CveTipoSaldo As Integer, CveMoneda As Integer, EsAplicacionPago As Boolean, CveTipoProveedor As Integer) As ConceptosTipoSaldo
' 1. Proveedores, 11. anticipos proveedores, 15. Notas de crédito de proveedores, 6. Clientes
'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
Dim Retorno As New ConceptosTipoSaldo
If EsAplicacionPago Then
Select Case CveTipoSaldo
Case 1 ' proveedores/acreedores
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 17, 308)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 17, 308)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 312, 309)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 206, 310)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 312, 309)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 206, 310)
End Select
Case 11 ' anticipos
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 21, 56)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 21, 56)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 339, 346)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 340, 347)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 339, 346)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 340, 347)
End Select
Case 15 ' notas de crédito
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 60, 324)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 60, 324)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 342, 344)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 235, 235)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 342, 344)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 235, 235)
End Select
Case 17 ' deudores
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 37, 37)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 37, 37)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 37, 37)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 256, 256)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 37, 37)
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
Else 'cuando es la provisión
@@ -8081,35 +8112,44 @@ Public Class ClsPaginas
Case 1 ' proveedores/acreedores
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 5, 305)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 5, 305)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 311, 306)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 201, 307)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 311, 306)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 201, 307)
End Select
Case 11 ' anticipos
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 10, 48)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 10, 48)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 338, 345)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 340, 347)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 338, 345)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 340, 347)
End Select
Case 15 ' notas de crédito
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 18, 323)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 18, 323)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 341, 343)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 234, 234)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 341, 343)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 234, 234)
End Select
Case 17 ' deudores
Select Case CveMoneda
Case 1 'pesos
Retorno.CveConcepto = If(CveTipoProveedor = 1, 43, 43)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 43, 43)
Case 2 'dólares
Retorno.CveConcepto = If(CveTipoProveedor = 1, 43, 43)
Retorno.CveConceptoComplementario = If(CveTipoProveedor = 1, 256, 256)
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 43, 43)
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 256, 256)
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 If
@@ -8401,6 +8441,7 @@ Public Class ClsPaginas
PaginaDict.Add("/Nomina/ISRCalculoAnual.aspx".ToUpper(), 918)
PaginaDict.Add("/Nomina/MovimientosSUA.aspx".ToUpper(), 919)
PaginaDict.Add("/Nomina/Acumulados.aspx".ToUpper(), 916)
PaginaDict.Add("/RH/CalculoSBC.aspx".ToUpper(), 915)
PaginaDict.Add("/Inicio.aspx".ToUpper(), -1)
PaginaDict.Add("/reporteador.aspx".ToUpper(), -1)