diff --git a/App_Code/ClsCompras.vb b/App_Code/ClsCompras.vb
index 38db7e34a..030f28eaf 100644
--- a/App_Code/ClsCompras.vb
+++ b/App_Code/ClsCompras.vb
@@ -2117,6 +2117,26 @@ Public Class ClsCompras
Return Retorno
End Function
+ Public Function CancelarCompraOC(CveCompra As Integer, CveEmpresa As Integer) As Boolean
+
+ Dim Retorno As Boolean = False
+ DataAdapter("PA_Comp_CancelarCompraOC")
+
+ With SqlAdapter.SelectCommand.Parameters
+ .Add("@CveCompra", SqlDbType.Int).Value = CveCompra
+ .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
+ End With
+
+ Try
+ SqlAdapter.Fill(Data)
+ Retorno = True
+ Catch ex As Exception
+ OnError("Ocurrió un error al desvincular la oc de la compra.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ End Try
+
+ Return Retorno
+ End Function
+
#End Region
diff --git a/App_Code/ClsContabilidad.vb b/App_Code/ClsContabilidad.vb
index e90f21cf2..2ed6e8796 100644
--- a/App_Code/ClsContabilidad.vb
+++ b/App_Code/ClsContabilidad.vb
@@ -3,7 +3,6 @@ Option Strict On
Imports System.Data
Imports System.Data.SqlClient
-Imports System.Web
Imports Extensiones
Public Class ClsContabilidad
@@ -1430,7 +1429,7 @@ Public Class ClsContabilidad
End If
Else
OcurrioError = True
- StrLog.AppendFormat(" Error 1.3 - ")
+ StrLog.AppendFormat(" Error 1.3 - La cuenta contable {0} es invalida ", dr("ConceptoContable"))
Mensaje.Append(String.Format("
La cuenta contable {0} es invalida", dr("ConceptoContable")))
Exit For
End If
@@ -6386,14 +6385,16 @@ Public Class ClsContabilidad
#End Region
#Region "VALIDACION POLIZA DESCUADRADA"
- Public Function ValidacionPrePolizaCuadre(CvePrePoliza As Integer, Opcion As Integer, Optional CveVenta As Integer = -1) As Boolean
+ Public Function ValidacionPrePolizaCuadre(CvePrePoliza As Integer, Opcion As Integer, Optional CveVenta As Integer = -1, Optional AutoConta As Boolean = True) As Boolean
Dim Retorno = False
- DataAdapter("PA_Conta_PrePoliza_Validacion")
+ DataAdapter("PA_Conta_PrePolizasValidacion")
With SqlAdapter.SelectCommand.Parameters
.Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrePoliza
- .Add("@CveVenta", SqlDbType.Int).Value = CveVenta
.Add("@Opcion", SqlDbType.Int).Value = Opcion
+ ' .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
+ .Add("@CveVenta", SqlDbType.Int).Value = CveVenta
+ .Add("@AutoConta", SqlDbType.Int).Value = If(AutoConta, 1, 0)
.Add("@Valor", SqlDbType.Int).Direction = ParameterDirection.Output
.Add("@MsgSalida", SqlDbType.VarChar, 100).Direction = ParameterDirection.Output
.Add("@MsgPrePolizaSalida", SqlDbType.VarChar, 8000).Direction = ParameterDirection.Output
@@ -6414,6 +6415,47 @@ Public Class ClsContabilidad
Return Retorno
End Function
+
+ Public Function ValidacionesPrePoliza(CvePrePoliza As Integer, Opcion As Integer, ByRef UsuarioActual As Usuario, Optional CveVenta As Integer = -1, Optional AutoConta As Boolean = True) As Boolean
+ Dim Retorno = False
+
+ DataAdapter("PA_Conta_PrePolizasValidacion")
+ With SqlAdapter.SelectCommand.Parameters
+ .Add("@CvePrePoliza", SqlDbType.Int).Value = CvePrePoliza
+ .Add("@Opcion", SqlDbType.Int).Value = Opcion
+ .Add("@CveEmpresa", SqlDbType.Int).Value = UsuarioActual.CveEmpresa
+ .Add("@CveVenta", SqlDbType.Int).Value = CveVenta
+ .Add("@AutoConta", SqlDbType.Int).Value = If(AutoConta, 1, 0)
+ .Add("@Valor", SqlDbType.Int).Direction = ParameterDirection.Output
+ .Add("@MsgSalida", SqlDbType.VarChar, 100).Direction = ParameterDirection.Output
+ .Add("@MsgPrePolizaSalida", SqlDbType.VarChar, 8000).Direction = ParameterDirection.Output
+ .Add("@Diferencia", SqlDbType.Float).Direction = ParameterDirection.Output
+ End With
+
+ Try
+ SqlAdapter.Fill(Data)
+ Retorno = True
+ ValorPolizaDescuadre = SqlAdapter.SelectCommand.Parameters("@Valor").Value.ToString.ToEntero
+ MensajePolizaDescuadre = SqlAdapter.SelectCommand.Parameters("@MsgSalida").Value.ToString
+ ValorDiferencia = SqlAdapter.SelectCommand.Parameters("@Diferencia").Value.ToString
+ Dim MsgPrePoliza As String = SqlAdapter.SelectCommand.Parameters("@MsgPrePolizaSalida").Value.ToString
+ If MsgPrePoliza <> "" Then MsgPrePoliza.GuardaLogAD("LogPrePoliza")
+
+ If MensajePolizaDescuadre = "" AndAlso AutoConta Then
+ If UsuarioActual.Empresa.TipoContabilidad = 2 Then ' eltipocontabilidad deberá activarse en el PA
+ If Not ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa) Then
+ MensajePolizaDescuadre = Mensaje.ToString ' regresa el mensaje de contabilización
+ End If
+ End If
+ End If
+
+ Catch ex As Exception
+ OnError("Ocurrió un error al validar la PrePoliza.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo)
+ End Try
+
+ Return Retorno
+ End Function
+
#End Region
#Region "AUXILIAR PREPOLIZAS"
diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb
index 7d3fefb52..7bfd0a318 100644
--- a/App_Code/ClsPaginas.vb
+++ b/App_Code/ClsPaginas.vb
@@ -4311,6 +4311,11 @@ Public Class ClsPaginas
' Response.Redirect("/Sistemas/PopUpSeleccionarEmpresa.aspx")
' 'Alert(Request.ServerVariables("URL"))
'End If
+ ''codigo temporal
+ If EsProduccion Then
+ If UsuarioActual.CveEmpresa.Contiene(141, 152, 159, 160, 161, 162, 166) Then System.Threading.Thread.Sleep(750)
+ End If
+
Dim i As Integer = Obt_ClavePagina(Request.ServerVariables("URL"))
Dim FailURL As String = $"{FormsAuthentication.DefaultUrl}?ADCod={Encripta($"CveModulo={i}")}"
'si es <0 la página es sin restricciones
@@ -7651,6 +7656,14 @@ Public Class ClsPaginas
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 292, 294) '1.Venta.2.NC
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 207, 203) '1.Venta.2.NC
End Select
+ Case 18 ' ingresos por comprobar
+ Select Case CveMoneda
+ Case 1 'pesos
+ Retorno.CveConcepto = 92 '1.Venta.2.NC
+ Case 2 'dólares
+ Retorno.CveConcepto = 92 'falta nuevo concepto
+ Retorno.CveConceptoComplementario = 332
+ End Select
End Select
Else 'cuando es la provisión
Select Case CveTipoSaldo
@@ -7694,7 +7707,14 @@ Public Class ClsPaginas
Retorno.CveConcepto = If(CveTipoProveedorTipoDocto = 1, 291, 293) '1.Venta.2.NC
Retorno.CveConceptoComplementario = If(CveTipoProveedorTipoDocto = 1, 203, 203) '1.Venta.2.NC
End Select
-
+ Case 18 ' ingresos por comprobar
+ Select Case CveMoneda
+ Case 1 'pesos
+ Retorno.CveConcepto = 66 '1.Venta.2.NC
+ Case 2 'dólares
+ Retorno.CveConcepto = 66 'falta nuevo concepto
+ Retorno.CveConceptoComplementario = 332
+ End Select
End Select
End If
@@ -7717,7 +7737,7 @@ Public Class ClsPaginas
#End Region
#Region "P A G O D E V E N T A S "
- Public Function AplicaPrePolizaPagoVenta(VentaActual As Venta, Pago As VentaPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean
+ Public Shared Function AplicaPrePolizaPagoVenta(VentaActual As Venta, Pago As VentaPago, CvePrePoliza As Integer, ByRef ObjConta As ClsContabilidad) As Boolean
Dim ErrorMovtos As Boolean = False
Dim PorcentajePago As Decimal = Pago.ImportePagoVenta / VentaActual.Total
Dim ImporteMovimiento As Decimal = 0
@@ -7731,14 +7751,11 @@ Public Class ClsPaginas
Dim CveConceptoContableComplementaria As Integer = 207
Dim Contabilizable As Boolean = True
If PorcentajePago > 1 Then PorcentajePago = 1
- Pago.CveConceptoPago = If(Pago.CveConceptoPago = -1, 2, Pago.CveConceptoPago) 'si viene en parametro lo toma com primera opcion, sino el 2
- If VentaActual.CveMoneda <> 1 Then
- If Pago.TipoPago = "NC" Then Pago.CveConceptoPago = 301 Else Pago.CveConceptoPago = 292
- End If
+
Dim Concepto As String = String.Format("{0} F:{1}", VentaActual.ClienteNombre, VentaActual.SerieFolio)
- Dim FuncionalidadFluctuacionImpuestos As Boolean = If(UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False)
+ Dim FuncionalidadFluctuacionImpuestos As Boolean = If(VentaActual.UsuarioActual.Empresa.Funcionalidad(159) = "1", True, False)
Dim tFecha As Date = Pago.Fecha
- If VentaActual.CveMoneda > 1 AndAlso UsuarioActual.Empresa.Funcionalidad(703) = "1" Then
+ If VentaActual.CveMoneda > 1 AndAlso VentaActual.UsuarioActual.Empresa.Funcionalidad(703) = "1" Then
Dim UltimaFluctuacion As MTipoCambioFluctuacion = GlobalTipoCambioUltimaFluctuacion(tFecha)
If UltimaFluctuacion IsNot Nothing Then
If UltimaFluctuacion.FechaFluctuacion < tFecha Then
@@ -7762,7 +7779,7 @@ Public Class ClsPaginas
End If
If VentaActual.CveMoneda > 1 Then ImporteME = Pago.ImportePagoVenta
'CONDICION ESPECIAL, PARA ANTICIPOS ESPECIALES, QUE SE EMITE LA VENTA, PERO NO SE CONTABILIZA, EL TRATAMIENTO SE LLEVA POR EL ANTICIPO
- If VentaActual.TipoDocto = "Ant" AndAlso UsuarioActual.CveEmpresa.Contiene(1, 119, 158) Then
+ If VentaActual.TipoDocto = "Ant" AndAlso VentaActual.UsuarioActual.CveEmpresa.Contiene(1, 119, 158) Then
Pago.AplicaTraslado = False
Dim IdCtaContable As Integer = VentaActual.IdCtaContableClienteAnticipo
If VentaActual.CveMoneda = 2 Then IdCtaContable = VentaActual.IdCtaContableClienteAnticipoExtranjera
@@ -7781,15 +7798,19 @@ Public Class ClsPaginas
If Not ErrorMovtos AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 95, VentaActual.SerieFolio, VentaActual.SerieFolio, IdCtaContable, CveIE:=Pago.CveIE, CveVenta:=VentaActual.CveVenta, CveSubProyecto:=VentaActual.CveSubProyecto, CveCliente:=VentaActual.CveCliente, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, PorcentajeImpuesto:=VentaActual.PorcentajeIVA, Contabilizable:=False) Then
ErrorMovtos = True
End If
-
End If
+ Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, VentaActual.CveMoneda, True, 1)
+ 'cuando es pago por NC, tiene sus propios pagos
+ If Pago.TipoPago = "NC" Then ConPreP.CveConcepto = If(VentaActual.CveMoneda <> 1, 301, 251)
+
'movimiento de pago cliente
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePagoVenta, Pago.ImportePagoVenta, Pago.CveConceptoPago, VentaActual.SerieFolio, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveVentaAmortizacion:=Pago.CveVentaAmortizacion, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada, Contabilizable:=Contabilizable) Then ErrorMovtos = True
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePagoVenta, Pago.ImportePagoVenta, ConPreP.CveConcepto, VentaActual.SerieFolio, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveVentaAmortizacion:=Pago.CveVentaAmortizacion, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada, Contabilizable:=Contabilizable) Then ErrorMovtos = True
'movimiento de pago cliente Complementaria
If Not ErrorMovtos AndAlso VentaActual.CveMoneda > 1 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, Pago.ImportePagoVenta, (ImporteME * TCValuacionVenta - ImporteME).RoundSQL, CveConceptoContableComplementaria, VentaActual.SerieFolio, Concepto, VentaActual.IdCtaContableClienteComplementaria, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, CveVentaAmortizacion:=Pago.CveVentaAmortizacion, TipoCambio:=TCValuacionVenta, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada, Contabilizable:=Contabilizable) Then ErrorMovtos = True
End If
+
If Pago.AplicaTraslado Then
'si tiene iva y su proporcion
If Not ErrorMovtos AndAlso VentaActual.IVA <> 0 Then
@@ -7801,46 +7822,48 @@ Public Class ClsPaginas
If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * TCValuacionPago).RoundSQL
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 61, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, PorcentajeImpuesto:=VentaActual.PorcentajeIVA, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
End If
- End If
- 'si tiene RET IVA y su proporcion
- If Not ErrorMovtos AndAlso VentaActual.RetIVA > 0 Then
- ImporteMovimiento = (PorcentajePago * VentaActual.RetIVA).RoundSQL
- ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
- If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 8, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
- 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
- If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * TCValuacionPago).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 62, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
- End If
- 'si tiene Ret ISR y su proporcion
- If Not ErrorMovtos AndAlso VentaActual.RetISR > 0 Then
- ImporteMovimiento = (PorcentajePago * VentaActual.RetISR).RoundSQL
- ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
- If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 9, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
- 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
- If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * TCValuacionPago).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 63, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
- End If
- 'si tiene IEPS y su proporcion
- If Not ErrorMovtos AndAlso VentaActual.IEPS > 0 Then
- ImporteMovimiento = (PorcentajePago * VentaActual.IEPS).RoundSQL
- ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
- If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
- Dim Ret As New ConceptosRetenciones
- If UsuarioActual.Empresa.TipoContabilidad = 2 Then
- If ObjConta.GetRetCuenta(38, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString.ToEntero
- If ObjConta.GetRetCuenta(39, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladado").ToString.ToEntero
+ 'si tiene RET IVA y su proporcion
+ If Not ErrorMovtos AndAlso VentaActual.RetIVA > 0 Then
+ ImporteMovimiento = (PorcentajePago * VentaActual.RetIVA).RoundSQL
+ ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
+ If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 8, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
+ 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
+ If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * TCValuacionPago).RoundSQL
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 62, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
+ End If
+ 'si tiene Ret ISR y su proporcion
+ If Not ErrorMovtos AndAlso VentaActual.RetISR > 0 Then
+ ImporteMovimiento = (PorcentajePago * VentaActual.RetISR).RoundSQL
+ ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
+ If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 9, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
+ 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
+ If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * TCValuacionPago).RoundSQL
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 63, VentaActual.SerieFolio, Concepto, 0, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
+ End If
+ 'si tiene IEPS y su proporcion
+ If Not ErrorMovtos AndAlso VentaActual.IEPS > 0 Then
+ ImporteMovimiento = (PorcentajePago * VentaActual.IEPS).RoundSQL
+ ImporteMN = (ImporteMovimiento * VentaActual.TC).RoundSQL
+ If VentaActual.CveMoneda > 1 Then ImporteME = ImporteMovimiento
+ Dim Ret As New ConceptosRetenciones
+ If VentaActual.UsuarioActual.Empresa.TipoContabilidad = 2 Then
+ If ObjConta.GetRetCuenta(38, VentaActual.UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxTrasladar").ToString.ToEntero
+ If ObjConta.GetRetCuenta(39, VentaActual.UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSTrasladado").ToString.ToEntero
+ End If
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 38, VentaActual.SerieFolio, Concepto, Ret.IdCtaContablexAcreditar, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
+ 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
+ If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * Pago.TCPago).RoundSQL
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 39, VentaActual.SerieFolio, Concepto, Ret.IdCtaContableAcreditable, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
End If
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteMovimiento, ImporteMN, 38, VentaActual.SerieFolio, Concepto, Ret.IdCtaContablexAcreditar, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
- 'si tiene funcionalidad para tomar el TC de pago. se recalcula el importe
- If FuncionalidadFluctuacionImpuestos Then ImporteMN = (ImporteMovimiento * Pago.TCPago).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteMovimiento, ImporteMN, 39, VentaActual.SerieFolio, Concepto, Ret.IdCtaContableAcreditable, CveVenta:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal, TipoCambio:=VentaActual.TC, TipoCambioPago:=Pago.TCPago, ImporteME:=ImporteME, CveSubProyecto:=VentaActual.CveSubProyecto, CveCompra:=Pago.CveCompraRelacionada) Then ErrorMovtos = True
End If
+
'concepto pago
Concepto = String.Format("{0} NC:{1}", VentaActual.ClienteNombre, Pago.Referencia)
If Pago.TipoPago = "A" AndAlso Not ErrorMovtos Then ' A N T I C I P O
Dim Ret As New ConceptosRetenciones
+ 'Dim ConPreP As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, VentaActual.CveMoneda, True, 1)
If Pago.CveMonedaPago > 1 Then
'Agregamos la Extranjera
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 296, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteAnticipoExtranjera, CveVenta:=Pago.CveVentaAmortizacion, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True
@@ -7853,25 +7876,26 @@ Public Class ClsPaginas
End If
If Pago.TipoPago = "NC" AndAlso Not ErrorMovtos Then ' N O T A D E C R E D I T O
Dim Ret As New ConceptosRetenciones
+ Dim ConPrePNC As ConceptosTipoSaldo = ObtenerCveConceptoPrePoliza(6, VentaActual.CveMoneda, True, 2)
If Pago.CveMonedaPago > 1 Then
'Agregamos la Extranjera
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 294, Pago.Referencia, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, ConPrePNC.CveConcepto, Pago.Referencia, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True
ImporteMN = (Pago.ImportePago * TCValuacionPago - Pago.ImportePago).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, 207, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteComplementaria, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, ImporteMN, ConPrePNC.CveConceptoComplementario, Pago.Referencia, Concepto, VentaActual.IdCtaContableClienteComplementaria, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, ImporteME:=Pago.ImportePago, TipoCambio:=TCValuacionPago, CveSubProyecto:=VentaActual.CveSubProyecto) Then ErrorMovtos = True
Else
'Agregamos Nacional
- If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, 91, Pago.Referencia, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True
+ If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, Pago.ImportePago, Pago.ImportePago, ConPrePNC.CveConcepto, Pago.Referencia, Concepto, VentaActual.IdCtaContableCliente, CveVenta:=Pago.CveVentaAmortizacion, CveVentaAmortizacion:=VentaActual.CveVenta, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE, CvePersonal:=Pago.CvePersonal) Then ErrorMovtos = True
End If
End If
If Pago.TipoPago = "I" AndAlso Not ErrorMovtos Then ' I N G R E S O S X C O M P R O B A R
Dim Ret As New ConceptosRetenciones
- If UsuarioActual.Empresa.TipoContabilidad = 2 Then
+ If VentaActual.UsuarioActual.Empresa.TipoContabilidad = 2 Then
'If ObjConta.GetRetCuenta(66, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContableAcreditable = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSAcreditable").ToString.ToEntero
'If Pago.CveMonedaPago > 1 AndAlso ObjConta.GetRetCuenta(207, UsuarioActual.CveEmpresa) AndAlso ObjConta.DtResultados.Rows.Count > 0 Then Ret.IdCtaContablexAcreditar = ObjConta.DtResultados.Rows(0)("IdCuentaIEPSxAcreditar").ToString.ToEntero
- If UsuarioActual.CveEmpresa.Contiene(119) Then
+ If VentaActual.UsuarioActual.CveEmpresa.Contiene(119) Then
If Pago.FechaDocumentoRelacionado.Year <= 2017 Then
Dim ObjCliente As New ClsClientes(ObjConta.IniciaTransacSQL())
- If ObjCliente.GetClientes(VentaActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa) AndAlso ObjCliente.DtResultados.Rows.Count > 0 Then
+ If ObjCliente.GetClientes(VentaActual.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, VentaActual.UsuarioActual.CveEmpresa) AndAlso ObjCliente.DtResultados.Rows.Count > 0 Then
If Pago.CveMonedaPago > 1 Then VentaActual.IdCtaContableClienteAnticipoExtranjera = ObjCliente.IdCtaContMonedaExtranjera Else VentaActual.IdCtaContableClienteAnticipo = ObjCliente.IdCtaContClientes
End If
End If
@@ -7903,17 +7927,22 @@ Public Class ClsPaginas
Dim ConceptoContable, IdCtaContable As Integer
Dim TipoMovimiento As Boolean
Dim Diferencia As Decimal = 0
+
+ 'tImporteVenta = tImporteVenta.Abs()
+ 'tImportePago = tImportePago.Abs()
+
tImportePago += Pago.ImporteFluctuacionAdicional 'para los casos de aplicación de
If tImporteVenta <> tImportePago Then
- If tImporteVenta < tImportePago Then
+ If tImporteVenta.Abs() < tImportePago.Abs() Then
ConceptoContable = 64
TipoMovimiento = True
Else
ConceptoContable = 65
TipoMovimiento = False
End If
- Diferencia = (tImporteVenta - tImportePago).Abs.RoundSQL
+ Diferencia = ((tImporteVenta - tImportePago).Abs.RoundSQL(2)) * Pago.ValorMultiplicador
End If
+
If FuncionalidadFluctuacionImpuestos Then
Dim TCImpuestos As Decimal = If(FuncionalidadFluctuacionImpuestos, Pago.TCPago, VentaActual.TC)
Diferencia = (Pago.ImportePago * VentaActual.TC) - (Pago.ImportePago * Pago.TCPago) 'Añadimos la diferencia de perdida en la venta
@@ -7923,6 +7952,7 @@ Public Class ClsPaginas
Diferencia -= ((VentaActual.IEPS * PorcentajePago) * VentaActual.TC) - ((VentaActual.IEPS * PorcentajePago) * TCImpuestos) 'Añadimos la diferencia de ganancia en el IEPS
Diferencia = Diferencia.Abs.RoundSQL
End If
+
If Diferencia <> 0 Then
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, Diferencia, Diferencia, ConceptoContable, Concepto, Concepto, IdCtaContable, CveVenta:=VentaActual.CveVenta, CveSubProyecto:=VentaActual.CveSubProyecto, CveCliente:=VentaActual.CveCliente, CveIE:=Pago.CveIE) Then
ErrorMovtos = True
@@ -7944,14 +7974,46 @@ Public Class ClsPaginas
Public Property TCPago As Decimal = 1
Public Property CveVentaAmortizacion As Integer = 0
Public Property OtroGastoIngreso As Decimal = 0
- Public Property CveConceptoPago As Integer = -1 'no definido de inicio
+ 'Public Property CveConceptoPago As Integer = -1 'no definido de inicio
Public Property CveCreditoDetalle As Integer = -1
Public Property CveCompraRelacionada As Integer = -1
Public Property AplicaTraslado As Boolean = True
Public Property Referencia As String
Public Property ImporteFluctuacionAdicional As Decimal = 0
+ Public Property ValorMultiplicador As Decimal = 1
End Class
Public Class Venta
+
+ Public Sub New(UsuarioActual As Usuario)
+ Me.UsuarioActual = UsuarioActual
+ End Sub
+ Public Sub New(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional ValorMultiplicador As Decimal = 1D)
+ Me.CveVenta = ObjFactura.CveVenta
+ Me.CveCliente = ObjFactura.CveCliente
+ Me.CveMoneda = ObjFactura.CveMoneda
+ Me.TipoDocto = ObjFactura.TipoDocto
+ Me.SerieFolio = ObjFactura.SerieFolio
+ Me.Fecha = ObjFactura.Fecha
+
+ If ObjFactura.Cliente IsNot Nothing AndAlso ObjFactura.CveCliente > 0 Then
+ Me.ClienteNombre = ObjFactura.Cliente.Nombre
+ Me.IdCtaContableCliente = If(ObjFactura.CveMoneda = 1, ObjFactura.Cliente.IdCtaContClientes, ObjFactura.Cliente.IdCtaContMonedaExtranjera)
+ Me.IdCtaContableClienteComplementaria = ObjFactura.Cliente.IdCtaContComplementaria
+ Me.IdCtaContableClienteAnticipo = ObjFactura.Cliente.IdCtaContAnticipos
+ Me.IdCtaContableClienteAnticipoExtranjera = ObjFactura.Cliente.IdCtaMonedaExtranjeraAnticipos
+ Me.IdCtaContableClienteAnticipoComplementaria = ObjFactura.Cliente.IdCtaContCompAnticipos
+ End If
+
+ Me.TC = ObjFactura.TipoCambio
+ Me.Total = ObjFactura.Total * ValorMultiplicador
+ Me.IVA = ObjFactura.IVA * ValorMultiplicador
+ Me.IEPS = ObjFactura.IEPS * ValorMultiplicador
+ Me.RetIVA = ObjFactura.RetIVA * ValorMultiplicador
+ Me.RetISR = ObjFactura.RetISR * ValorMultiplicador
+ Me.PorcentajeIVA = ObjFactura.PorcentajeIVA.ToString().ToDecimal()
+ Me.CveSubProyecto = ObjFactura.CveSubProyecto
+ Me.UsuarioActual = ObjFactura.UsuarioActual
+ End Sub
Public Property CveVenta As Integer = -1
Public Property CveCliente As Integer
Public Property CveMoneda As Integer
diff --git a/App_Code/ClsRH.vb b/App_Code/ClsRH.vb
index ac5599c36..f0bbd4fc1 100644
--- a/App_Code/ClsRH.vb
+++ b/App_Code/ClsRH.vb
@@ -2621,7 +2621,7 @@ Public Class ClsRH
End Function
- Public Function GetAsistencias(CvePersonal As Integer, CveClienteAsignado As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveTurno As Integer, CveEstatusPersonal As Integer, CveTipoPeriodo As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer) As Boolean
+ Public Function GetAsistencias(CvePersonal As Integer, CveClienteAsignado As Integer, CveProyecto As Integer, CveSubProyecto As Integer, CveTurno As Integer, CveEstatusPersonal As Integer, CveTipoPeriodo As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer, Optional CvePuesto As Integer = -1) As Boolean
Dim Retorno As Boolean = False
SqlDataAdapter("PA_RH_PersonalAsistenciasGet")
@@ -2633,6 +2633,7 @@ Public Class ClsRH
.Add("@CveTurno", SqlDbType.Int).Value = CveTurno
.Add("@CveTipoPeriodo", SqlDbType.Int).Value = CveTipoPeriodo
.Add("@CveEstatusPersonal", SqlDbType.Int).Value = CveEstatusPersonal
+ .Add("@CvePuesto", SqlDbType.Int).Value = CvePuesto
.Add("@FechaI", SqlDbType.Date).Value = FechaI
.Add("@FechaF", SqlDbType.Date).Value = FechaF
.Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa
@@ -2648,7 +2649,7 @@ Public Class ClsRH
Return Retorno
End Function
- Public Function RepGetAsistencias(Grupo As Integer, CveClienteAsignado As Integer, CveSubProyecto As Integer, CveTurno As Integer, CveEstatusPersonal As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer, CvePersonalPadre As Integer) As Boolean
+ Public Function RepGetAsistencias(Grupo As Integer, CveClienteAsignado As Integer, CveSubProyecto As Integer, CveTurno As Integer, CveEstatusPersonal As Integer, FechaI As Date, FechaF As Date, CveEmpresa As Integer, CvePersonalPadre As Integer, CveTipoPeriodo As Integer, CvePuesto As Integer) As Boolean
Dim Retorno As Boolean = False
SqlDataAdapter("PA_RH_RepPersonalAsistenciasGet")
@@ -2662,7 +2663,8 @@ Public Class ClsRH
.Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto
.Add("@CvePersonalPadre", SqlDbType.Int).Value = CvePersonalPadre
.Add("@CveEstatusPersonal", SqlDbType.Int).Value = CveEstatusPersonal
-
+ .Add("@CveTipoPeriodo", SqlDbType.Int).Value = CveTipoPeriodo
+ .Add("@CvePuesto", SqlDbType.Int).Value = CvePuesto
End With
Try
diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb
index fc71cd0ed..83f46e6bd 100644
--- a/App_Code/Modelos.vb
+++ b/App_Code/Modelos.vb
@@ -2371,7 +2371,7 @@ Namespace Modelos
Private Function ProcesoPrepolizas(ObjFactura As Factura, ByRef ObjConta As ClsContabilidad, CveIE As Integer, TmpDTDetalle As DataTable, ByRef objContPaqi As ClsContPAQi,
Optional ValorMultiplicador As Integer = 1, ByRef Optional ObjBancos As ClsBancos = Nothing, ByRef Optional ObjVentas As ClsVentas = Nothing, ByRef Optional ObjEventos As ClsOIEventos = Nothing,
Optional ByRef DtRemisionesRelacionadas As DataTable = Nothing, Optional SeCancelaRemisionProceso As Boolean = False, Optional CancelarRemisiones As Boolean = False, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing,
- Optional CveEstatusRefacturacion As Integer = 0, Optional ByRef ObjInventario As ClsInventarios = Nothing) As Boolean
+ Optional CveEstatusRefacturacion As Integer = 0, Optional ByRef ObjInventario As ClsInventarios = Nothing, Optional FechaCancelacion As DateTime = MinFecha) As Boolean
Dim ErrorPrepoliza As Boolean = False
Try
Dim DT As DataTable
@@ -2401,6 +2401,24 @@ Namespace Modelos
tipoCambio = 1
End If
+ ' Verificar si la fecha es del mes anterior a la fecha actual
+ Dim esMesAnterior As Boolean = False
+
+ If ObjFactura.TipoDocto = "Egs" AndAlso ValorMultiplicador = -1 AndAlso FechaCancelacion > MinFecha AndAlso tipoCambio > 1 AndAlso UsuarioActual.Empresa.Funcionalidad(703) = "1" Then
+ ' Obtener el mes y año de la fecha actual
+ Dim mesActual As Integer = FechaCancelacion.Month
+ Dim añoActual As Integer = FechaCancelacion.Year
+
+ ' Obtener el mes y año de la fecha a comparar
+ Dim mesFecha As Integer = ObjFactura.Fecha.Month
+ Dim añoFecha As Integer = ObjFactura.Fecha.Year
+ If añoFecha < añoActual Then
+ esMesAnterior = True
+ ElseIf añoFecha = añoActual AndAlso mesFecha < mesActual Then
+ esMesAnterior = True
+ End If
+ End If
+
Dim ConceptoContable As Integer
Dim TipoMovimiento As Boolean
Dim importeMovimiento As Decimal
@@ -2690,159 +2708,130 @@ Namespace Modelos
Case 12 'Nota de Credito
If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then
- importeMovimiento = ObjFactura.Total * ValorMultiplicador
- importeMX = (importeMovimiento * tipoCambio * Multiplicador).RoundSQL
- FechaMovimiento = ObjFactura.FechaPago
- Dim ImporteConcepto12 As Decimal = 0
- Dim ImporteAcumulado91 As Decimal = 0
- Dim CveUltimaVenta As Integer = 0
- If tipoCambio > 1 Then
- Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}"
- ConceptoContable = 293
- End If
- IdCtaContable = 0
- If tipoCambio = 1 Then
- IdCtaContable = ObjFactura.Cliente.IdCtaContClientes
- ElseIf UsaComplementariaClientes Then
+ Dim ConPreP As ClsPaginas.ConceptosTipoSaldo = ClsPaginas.ObtenerCveConceptoPrePoliza(6, ObjFactura.CveMoneda, False, 2)
- IdCtaContable = ObjFactura.Cliente.IdCtaContComplementaria
-
- If importeMovimiento <> 0 AndAlso (IdCtaContable > 0 Or UsaComplementariaClientes) Then
- importeMX = importeMovimiento
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, 0, Referencia, 203, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=(importeMovimiento * tipoCambio - importeMovimiento).RoundSQL, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), TipoCambio:=tipoCambio, CveSubProyecto:=CveSubProyectoContabilizar) Then
- ErrorPrepoliza = True
- End If
- End If
-
- IdCtaContable = ObjFactura.Cliente.IdCtaContMonedaExtranjera
- End If
- CveSubProyectoContabilizar = CveSubProyectoVenta
- ImporteConcepto12 = importeMX.RoundSQL
- If importeMovimiento <> 0 Then
- If IdCtaContable <= 0 Then
- CuentasContablesInvalidas.Append("
" & ClsPaginas.GlobalDTContaConceptosContables(-1).FiltroPrimero(String.Format("CveConceptoContable = {0}", ConceptoContable))("ConceptoContable").ToString)
- idCuentaContabilizacion = 0
- End If
-
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveSubProyecto:=CveSubProyectoContabilizar) Then
- ErrorPrepoliza = True
- Else
- ObjFactura.SeGuardoPrePoliza = True
- End If
- End If
- importeMovimiento = 0
-
- If ValorMultiplicador = 1 Then
- Dim IdCtaContableClienteComplementaria As Integer = ObjFactura.Cliente.IdCtaContComplementaria
- Dim TipoCambioNC As Decimal = 1
+ Dim TipoCambioNC As Decimal = 1
+ If ObjFactura.CveMoneda = 2 Then
If tipoCambio > 1 Then
TipoCambioNC = tipoCambio
Else
TipoCambioNC = ClsPaginas.GlobalTipoCambio(ObjFactura.Fecha).ToDecimal
End If
+ End If
+
+
+ If ValorMultiplicador = -1 AndAlso UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso esMesAnterior AndAlso ObjFactura.CveMoneda = 2 Then
+ Dim UltimaFluctuacion As ClsPaginas.MTipoCambioFluctuacion = ClsPaginas.GlobalTipoCambioUltimaFluctuacion(FechaCancelacion)
+ If UltimaFluctuacion IsNot Nothing Then
+ If UltimaFluctuacion.FechaFluctuacion < FechaCancelacion Then
+ TipoCambioNC = UltimaFluctuacion.TCFluctuacion
+ End If
+ End If
+ End If
+
+ importeMovimiento = ObjFactura.Total * ValorMultiplicador
+ importeMX = (importeMovimiento * TipoCambioNC * Multiplicador).RoundSQL(2)
+ FechaMovimiento = ObjFactura.FechaPago
+
+ CveSubProyectoContabilizar = ObjFactura.CveSubProyecto
+
+ IdCtaContable = ObjFactura.Cliente.IdCtaContClientes
+
+ If ObjFactura.CveMoneda = 2 Then
+ importeMX = importeMovimiento
+ IdCtaContable = ObjFactura.Cliente.IdCtaContMonedaExtranjera
+ Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}"
+ End If
+
+ If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConPreP.CveConcepto, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=importeMX, ImporteME:=If(TipoCambioNC = 1, 0, importeMovimiento), TipoCambio:=TipoCambioNC, CveSubProyecto:=CveSubProyectoContabilizar) Then
+ ErrorPrepoliza = True
+ End If
+
+ If UsaComplementariaClientes AndAlso ObjFactura.CveMoneda = 2 Then
+ IdCtaContable = ObjFactura.Cliente.IdCtaContComplementaria
+ If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, 0, Referencia, ConPreP.CveConceptoComplementario, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveIE:=CveIE, ImporteMX:=(importeMovimiento * TipoCambioNC - importeMovimiento).RoundSQL(2), ImporteME:=If(TipoCambioNC = 1, 0, importeMovimiento), TipoCambio:=TipoCambioNC, CveSubProyecto:=CveSubProyectoContabilizar) Then
+ ErrorPrepoliza = True
+ End If
+ End If
+
+ If ValorMultiplicador = -1 AndAlso esMesAnterior Then
+ Dim TCCliente As Decimal = tipoCambio
+ Dim TCFluctuacion As Decimal = tipoCambio
+ 'TOMA EL TC DE LA ULTIMA FLUCTUACION
+ If UsuarioActual.Empresa.Funcionalidad(703) = "1" AndAlso ObjFactura.CveMoneda = 2 Then
+ Dim UltimaFluctuacion As ClsPaginas.MTipoCambioFluctuacion = ClsPaginas.GlobalTipoCambioUltimaFluctuacion(FechaCancelacion)
+
+ If UltimaFluctuacion IsNot Nothing Then
+ If UltimaFluctuacion.FechaFluctuacion <= FechaCancelacion Then
+ TCCliente = UltimaFluctuacion.TCFluctuacion
+ TCFluctuacion = UltimaFluctuacion.TCFluctuacion
+ End If
+ End If
+ End If
+
+ 'CONSIDERO FLUCTUACIÓN.
+ If tipoCambio <> TCFluctuacion AndAlso TCFluctuacion > 1 AndAlso tipoCambio > 1 Then
+ Dim difFluctuacion As Decimal = tipoCambio - TCFluctuacion
+ Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida
+ Dim TipoMovtoFluctua As Boolean = True
+ Dim IdCtaContableFluctua As Integer
+
+ If difFluctuacion < 0 Then
+ CveConceptoFluctua = 64
+ TipoMovtoFluctua = True
+ Else
+ CveConceptoFluctua = 65
+ TipoMovtoFluctua = False
+ End If
+
+ Dim ImporteFluctuacion As Decimal = Math.Abs((importeMovimiento * difFluctuacion).RoundSQL)
+
+ If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, Referencia, CveConceptoFluctua, Concepto, FechaMovimiento, IdCtaContableFluctua, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, ImporteMX:=ImporteFluctuacion, ImporteME:=ImporteFluctuacion, CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=TCCliente) Then
+ ErrorPrepoliza = True
+ Exit For
+ End If
+
+ End If
+ End If
+
+ importeMovimiento = 0
+
+ If ValorMultiplicador = 1 Then
+ Dim IdCtaContableClienteComplementaria As Integer = ObjFactura.Cliente.IdCtaContComplementaria
+
'APLICA NC SALDOS DIRECTOS
If DtVentasNC IsNot Nothing AndAlso DtVentasNC.Rows.Count > 0 Then
For Each Dr As DataRow In DtVentasNC.Rows
- Dim Importe91 As Decimal = 0
- Dim ImporteMN91 As Decimal = 0
- Dim Importe251 As Decimal = 0
+ Dim ObjFacturaRef As New Modelos.Factura(UsuarioActual, Dr("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, CargaDTDetalle:=False, VerificaAlmacen:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False)
- If ObjFactura.CveMoneda = 1 AndAlso Not Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = Dr("Importe").ToString.ToDecimal
- Importe91 = Dr("Importe").ToString.ToDecimal
- ImporteMN91 = Dr("Importe").ToString.ToDecimal
- TipoCambioNC = 1
- ElseIf ObjFactura.CveMoneda = 2 AndAlso Not Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = Dr("Importe").ToString.ToDecimal * TipoCambioNC
- Importe91 = Dr("Importe").ToString.ToDecimal
- ImporteMN91 = Dr("Importe").ToString.ToDecimal * TipoCambioNC
- ElseIf ObjFactura.CveMoneda = 2 AndAlso Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = Dr("Importe").ToString.ToDecimal
- Importe91 = Dr("Importe").ToString.ToDecimal
- ImporteMN91 = Dr("Importe").ToString.ToDecimal * TipoCambioNC
- ElseIf ObjFactura.CveMoneda = 1 AndAlso Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = Dr("Importe").ToString.ToDecimal / TipoCambioNC
- Importe91 = Dr("Importe").ToString.ToDecimal
- ImporteMN91 = Dr("Importe").ToString.ToDecimal
- End If
+ Dim ventaRef As New ClsPaginas.Venta(ObjFacturaRef, UsuarioActual, ValorMultiplicador:=ValorMultiplicador)
- Importe251 = (Importe251 * Multiplicador).RoundSQL
+ ObjFacturaRef.Dispose()
- Importe91 = (Importe91 * ValorMultiplicador).RoundSQL
- ImporteMN91 = (ImporteMN91 * Multiplicador).RoundSQL
- If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${Importe91.FormatoNumero(2)}"
+ ventaRef.ClienteNombre = ObjFactura.Cliente.Nombre
+ ventaRef.IdCtaContableCliente = If(ventaRef.CveMoneda = 1, ObjFactura.Cliente.IdCtaContClientes, ObjFactura.Cliente.IdCtaContMonedaExtranjera)
+ ventaRef.IdCtaContableClienteComplementaria = ObjFactura.Cliente.IdCtaContComplementaria ' ViewState("IdCtaContComplementaria").ToString.ToEntero
- CveUltimaVenta = Dr("CveVenta").ToString.ToEntero
+ ventaRef.IdCtaContableClienteAnticipo = ObjFactura.Cliente.IdCtaContAnticipos
+ ventaRef.IdCtaContableClienteAnticipoExtranjera = ObjFactura.Cliente.IdCtaMonedaExtranjeraAnticipos
+ ventaRef.IdCtaContableClienteAnticipoComplementaria = ObjFactura.Cliente.IdCtaContCompAnticipos
- Dim ImporteComplementarioIngreso As Decimal = 0
- If UsaComplementariaClientes = True AndAlso tipoCambio > 1 Then
- ImporteMN91 = Importe91
- ImporteComplementarioIngreso = ((Importe91 * tipoCambio) - Importe91).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe91, Referencia, 203, Concepto, FechaMovimiento, IdCtaContableClienteComplementaria, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=Dr("CveVenta").ToString.ToEntero, ImporteMX:=ImporteComplementarioIngreso, ImporteME:=If(tipoCambio = 1, 0, Importe91), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=Dr("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe91, Referencia, 91, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=Dr("CveVenta").ToString.ToEntero, ImporteMX:=ImporteMN91, ImporteME:=If(tipoCambio = 1, 0, Importe91), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio) Then
- ErrorPrepoliza = True
- Exit For
- End If
- ImporteAcumulado91 += (ImporteMN91).RoundSQL
+ Dim Pago As New ClsPaginas.VentaPago
+ Pago.Fecha = ObjFactura.Fecha
+ Pago.FechaDocumentoRelacionado = ObjFactura.Fecha
+ Pago.ImportePagoVenta = Dr("Importe").ToString().ToDecimal()
+ Pago.ImportePago = Dr("Importe").ToString().ToDecimal()
+ Pago.CveMonedaPago = ObjFactura.CveMoneda
+ Pago.TCPago = TipoCambioNC
+ Pago.TipoPago = "NC"
+ Pago.CveVentaAmortizacion = ObjFactura.CveVenta 'Dr("CveVenta").ToString().ToEntero()
+ Pago.AplicaTraslado = False
+ Pago.Referencia = Concepto
- Dim tCveConcepto As Integer = 251
- If Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then tCveConcepto = 301
- If UsaComplementariaClientes = True AndAlso Dr("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Dim ImporteComplementarioNC As Decimal = ((Importe251 * Dr("TCCambioValuacion").ToString.ToDecimal) - Importe251).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, Importe251, Referencia, 207, Concepto, FechaMovimiento, IdCtaContableClienteComplementaria, -1, CveVenta:=Dr("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, ImporteMX:=ImporteComplementarioNC, ImporteME:=If(Dr("TCCambioValuacion").ToString.ToDecimal = 1, 0, Importe251), CveSubProyecto:=CveSubProyectoContabilizar, CveVentaAmortizacion:=ObjFactura.CveVenta, TipoCambio:=Dr("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, Importe251, Referencia, tCveConcepto, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=Dr("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, ImporteMX:=Importe251, ImporteME:=If(Dr("TCCambioValuacion").ToString.ToDecimal = 1, 0, Importe251), CveSubProyecto:=CveSubProyectoContabilizar, CveVentaAmortizacion:=ObjFactura.CveVenta, TipoCambio:=Dr("TCCambioValuacion").ToString.ToDecimal, TipoCambioPago:=tipoCambio) Then
- ErrorPrepoliza = True
- Exit For
- End If
-
-
- 'considero fluctuación.
-
- Dim TCFluctuacion As Decimal = Dr("TCCambioValuacion").ToString.ToDecimal
- If TCFluctuacion = 1 AndAlso TipoCambioNC > 1 Then
- TCFluctuacion = ClsPaginas.GlobalTipoCambio(ObjFactura.Fecha).ToDecimal
- End If
- If TipoCambioNC <> TCFluctuacion AndAlso TCFluctuacion > 1 AndAlso TipoCambioNC > 1 Then
- Dim difFluctuacion As Decimal = TipoCambioNC - TCFluctuacion
- Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida
- Dim TipoMovtoFluctua As Boolean = True
- Dim IdCtaContableFluctua As Integer
- If difFluctuacion < 0 Then
- CveConceptoFluctua = 65
- TipoMovtoFluctua = False
- Else
- CveConceptoFluctua = 64
- TipoMovtoFluctua = True
- End If
- Dim ImporteFluctuacion As Decimal = Math.Abs((Importe251 * difFluctuacion).RoundSQL) * ValorMultiplicador
-
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, Referencia, CveConceptoFluctua, Concepto, FechaMovimiento, IdCtaContableFluctua, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=Dr("CveVenta").ToString.ToEntero, ImporteMX:=ImporteFluctuacion, ImporteME:=ImporteFluctuacion, CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=TipoCambioNC, TipoCambioPago:=Dr("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
+ ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta)
Next
- If ImporteConcepto12 < ImporteAcumulado91 Then
- Dim ImporteOtrosIngresos As Decimal = ImporteConcepto12 - ImporteAcumulado91
- If ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, ImporteOtrosIngresos, Referencia, 91, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=CveUltimaVenta, ImporteMX:=ImporteOtrosIngresos, ImporteME:=0, CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio) Then
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, ImporteOtrosIngresos, Referencia, 211, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, ImporteME:=0, ImporteMX:=ImporteOtrosIngresos, CveSubProyecto:=CveSubProyectoContabilizar) Then
- ErrorPrepoliza = True
- End If
- Else
- ErrorPrepoliza = True
- End If
- End If
-
If ObjConta.ValidacionPrePolizaCuadre(ObjFactura.CvePrePoliza, 5) Then
If ObjConta.ValorPolizaDescuadre > 0 Then
ErrorPrepoliza = True
@@ -2855,7 +2844,6 @@ Namespace Modelos
End If
End If
-
If ErrorPrepoliza Then
Exit For
End If
@@ -3078,6 +3066,20 @@ Namespace Modelos
Dim Contabilizable = If(UsuarioActual.CveEmpresa = 119, False, True)
If ValorMultiplicador = -1 Then
+ Dim TipoCambioNC As Decimal = 1
+
+ If ObjFactura.CveMoneda = 2 Then
+ If tipoCambio > 1 Then
+ TipoCambioNC = tipoCambio
+ Else
+ If UsuarioActual.CveEmpresa.Contiene(13, 83) Then
+ TipoCambioNC = ClsPaginas.GlobalTipoCambio(ObjFactura.Fecha.AddDays(-1)).ToDecimal
+ Else
+ TipoCambioNC = ClsPaginas.GlobalTipoCambio(ObjFactura.Fecha).ToDecimal
+ End If
+ End If
+ End If
+
'cuando es cancelación
If ObjFactura.DtNCVinculadas IsNot Nothing Then
For Each row2 As DataRow In ObjFactura.DtNCVinculadas.Rows
@@ -3085,134 +3087,42 @@ Namespace Modelos
If row2("CveConceptoContable").ToString().ToEntero.Contiene(91, 294) Then
importeMovimiento = (row2("Importe").ToString().ToDecimal * ValorMultiplicador)
- sumaAmorticaciones += importeMovimiento
- Dim CveConceptoAplicacionNC As Integer = 91
- Dim CveConceptoPagoNC As Integer = 251
+ Dim ObjFacturaRef As New Modelos.Factura(UsuarioActual, row2("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa, CargaDTDetalle:=False, VerificaAlmacen:=False, CargaDatosCliente:=False, CargaDatosRelacionados:=False)
- If tipoCambio > 1 Then
- Concepto += $" TC:{tipoCambio} ${importeMovimiento.FormatoNumero(2)}"
- CveConceptoAplicacionNC = 294
- CveConceptoPagoNC = 301
+ Dim ventaRef As New ClsPaginas.Venta(ObjFacturaRef, UsuarioActual, ValorMultiplicador:=-1D)
+
+ ObjFacturaRef.Dispose()
+
+ ventaRef.ClienteNombre = ObjFactura.Cliente.Nombre
+ ventaRef.IdCtaContableCliente = If(ventaRef.CveMoneda = 1, ObjFactura.Cliente.IdCtaContClientes, ObjFactura.Cliente.IdCtaContMonedaExtranjera)
+ ventaRef.IdCtaContableClienteComplementaria = ObjFactura.Cliente.IdCtaContComplementaria ' ViewState("IdCtaContComplementaria").ToString.ToEntero
+
+ ventaRef.IdCtaContableClienteAnticipo = ObjFactura.Cliente.IdCtaContAnticipos
+ ventaRef.IdCtaContableClienteAnticipoExtranjera = ObjFactura.Cliente.IdCtaMonedaExtranjeraAnticipos
+ ventaRef.IdCtaContableClienteAnticipoComplementaria = ObjFactura.Cliente.IdCtaContCompAnticipos
+
+ Dim Pago As New ClsPaginas.VentaPago
+ Pago.Fecha = FechaCancelacion
+ Pago.FechaDocumentoRelacionado = ObjFactura.Fecha
+ Pago.ImportePagoVenta = importeMovimiento
+ Pago.ImportePago = importeMovimiento
+ Pago.CveMonedaPago = ObjFactura.CveMoneda
+ Pago.TCPago = TipoCambioNC
+ Pago.TipoPago = "NC"
+ Pago.CveVentaAmortizacion = ObjFactura.CveVenta 'Dr("CveVenta").ToString().ToEntero()
+ Pago.AplicaTraslado = False
+ Pago.Referencia = Concepto
+ Pago.ValorMultiplicador = -1D
+
+ ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(ventaRef, Pago, ObjFactura.CvePrePoliza, ObjConta)
+
+ If ErrorPrepoliza Then
+ Exit For
End If
- 'CTACONTABLE
- 'IdCtaContable = IdCtaContAnticipos
-
- If tipoCambio = 1 Then
- IdCtaContable = ObjFactura.Cliente.IdCtaContClientes
- Else
- IdCtaContable = ObjFactura.Cliente.IdCtaContMonedaExtranjera
- End If
-
- CveSubProyectoContabilizar = CveSubProyectoVenta
-
- If importeMovimiento <> 0 Then
-
- Dim Importe91 As Decimal = 0
- Dim ImporteMN91 As Decimal = 0
- Dim Importe251 As Decimal = 0
- Dim ImporteMN251 As Decimal = 0
-
- If ObjFactura.CveMoneda = 1 AndAlso Not row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = row2("Importe").ToString.ToDecimal
- Importe91 = row2("Importe").ToString.ToDecimal
- ImporteMN91 = row2("Importe").ToString.ToDecimal
- tipoCambio = 1
- ElseIf ObjFactura.CveMoneda = 2 AndAlso Not row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = row2("Importe").ToString.ToDecimal
- Importe91 = row2("Importe").ToString.ToDecimal
- ImporteMN91 = row2("Importe").ToString.ToDecimal * tipoCambio
- ElseIf ObjFactura.CveMoneda = 2 AndAlso row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = row2("Importe").ToString.ToDecimal
- Importe91 = row2("Importe").ToString.ToDecimal
- ImporteMN91 = row2("Importe").ToString.ToDecimal * tipoCambio
- ElseIf ObjFactura.CveMoneda = 1 AndAlso row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
-
- Importe91 = row2("Importe").ToString.ToDecimal / tipoCambio
- ImporteMN91 = row2("Importe").ToString.ToDecimal
- End If
-
- Dim TCFluctuacion As Decimal = row2("TCCambioValuacion").ToString.ToDecimal
-
- If TCFluctuacion = 1 AndAlso tipoCambio > 1 Then
- TCFluctuacion = ClsPaginas.GlobalTipoCambio(ObjFactura.Fecha).ToDecimal
- End If
-
- If ObjFactura.CveMoneda = 2 AndAlso Not row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- ImporteMN251 = row2("Importe").ToString.ToDecimal * TCFluctuacion
- ElseIf ObjFactura.CveMoneda = 2 AndAlso row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- ImporteMN251 = row2("Importe").ToString.ToDecimal * TCFluctuacion
- ElseIf ObjFactura.CveMoneda = 1 AndAlso row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- Importe251 = row2("Importe").ToString.ToDecimal / TCFluctuacion
- ImporteMN251 = row2("Importe").ToString.ToDecimal
- Else
- ImporteMN251 = row2("Importe").ToString.ToDecimal
- End If
-
- Importe251 = (Importe251 * Multiplicador * ValorMultiplicador).RoundSQL
- ImporteMN251 = ImporteMN251 * ValorMultiplicador
- Importe91 = (Importe91 * ValorMultiplicador).RoundSQL
- ImporteMN91 = (ImporteMN91 * Multiplicador * ValorMultiplicador).RoundSQL
-
-
- If tipoCambio > 1 Then Concepto += $" TC:{tipoCambio} ${Importe91.FormatoNumero(2)}"
-
- Dim CveUltimaVenta = row2("CveVenta").ToString.ToEntero
-
- Dim ImporteComplementarioIngreso As Decimal = 0
- If UsaComplementariaClientes = True AndAlso tipoCambio > 1 Then
- ImporteMN91 = Importe91
- ImporteComplementarioIngreso = ((Importe91 * tipoCambio) - Importe91).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe91, Referencia, 203, Concepto, FechaMovimiento, ObjFactura.Cliente.IdCtaContComplementaria, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=row2("CveVenta").ToString.ToEntero, ImporteMX:=ImporteComplementarioIngreso, ImporteME:=If(tipoCambio = 1, 0, Importe91), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=row2("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
-
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, False, Importe91, Referencia, CveConceptoAplicacionNC, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=row2("CveVenta").ToString.ToEntero, ImporteMX:=ImporteMN91, ImporteME:=If(tipoCambio = 1, 0, Importe91), CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio) Then
- ErrorPrepoliza = True
- Exit For
- End If
-
-
- If UsaComplementariaClientes = True AndAlso row2("TCCambioValuacion").ToString.ToDecimal > 1 Then
- ImporteMN251 = Importe251
- Dim ImporteComplementarioNC As Decimal = ((Importe251 * row2("TCCambioValuacion").ToString.ToDecimal) - Importe251).RoundSQL
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, Importe251, Referencia, 207, Concepto, FechaMovimiento, ObjFactura.Cliente.IdCtaContComplementaria, -1, CveVenta:=row2("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, ImporteMX:=ImporteComplementarioNC, ImporteME:=If(row2("TCCambioValuacion").ToString.ToDecimal = 1, 0, Importe251), CveSubProyecto:=CveSubProyectoContabilizar, CveVentaAmortizacion:=ObjFactura.CveVenta, TipoCambio:=row2("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
-
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, True, Importe251, Referencia, CveConceptoPagoNC, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=row2("CveVenta").ToString.ToEntero, CveCliente:=ObjFactura.CveCliente, ImporteMX:=ImporteMN251, ImporteME:=If(row2("TCCambioValuacion").ToString.ToDecimal = 1, 0, Importe251), CveSubProyecto:=CveSubProyectoContabilizar, CveVentaAmortizacion:=ObjFactura.CveVenta, TipoCambio:=row2("TCCambioValuacion").ToString.ToDecimal, TipoCambioPago:=tipoCambio) Then
- ErrorPrepoliza = True
- Exit For
- End If
-
- 'CONSIDERO FLUCTUACIÓN.
- If tipoCambio <> TCFluctuacion AndAlso TCFluctuacion > 1 AndAlso tipoCambio > 1 Then
- Dim difFluctuacion As Decimal = tipoCambio - TCFluctuacion
- Dim CveConceptoFluctua As Integer = 64 '64.ganacia, 65.perdida
- Dim TipoMovtoFluctua As Boolean = True
- Dim IdCtaContableFluctua As Integer
- If difFluctuacion < 0 Then
- CveConceptoFluctua = 65
- TipoMovtoFluctua = False
- Else
- CveConceptoFluctua = 64
- TipoMovtoFluctua = True
- End If
- Dim ImporteFluctuacion As Decimal = Math.Abs((Importe251 * difFluctuacion).RoundSQL) * ValorMultiplicador
-
- If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovtoFluctua, ImporteFluctuacion, Referencia, CveConceptoFluctua, Concepto, FechaMovimiento, IdCtaContableFluctua, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=row2("CveVenta").ToString.ToEntero, ImporteMX:=ImporteFluctuacion, ImporteME:=ImporteFluctuacion, CveSubProyecto:=CveSubProyectoContabilizar, TipoCambio:=tipoCambio, TipoCambioPago:=row2("TCCambioValuacion").ToString.ToDecimal) Then
- ErrorPrepoliza = True
- Exit For
- End If
- End If
-
- End If
End If
+
Next
End If
@@ -5342,7 +5252,7 @@ Namespace Modelos
'CANCELA PREPOLIZA
If Not ErrorCancelar Then
ErrorCancelar = ProcesoPrepolizas(ObjFactura, ObjConta, -1, ObjFactura.DtDetalle, ObjAC, -1, ObjBancos, ObjVentas, ObjEventos, DtRemisionesRelacionadas:=DtRemisionesRelacionadas, SeCancelaRemisionProceso:=SeCancelaRemisionProceso,
- CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario)
+ CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario, FechaCancelacion:=CancelacionFecha)
MensajeError = "Ocurrió un error al generar la prepoliza de cancelación."
End If
@@ -7693,6 +7603,8 @@ Namespace Modelos
Public Property IdCtaContMonedaExtranjera As Integer
Public Property IdCtaContComplementaria As Integer
Public Property IdCtaContAnticipos As Integer
+ Public Property IdCtaMonedaExtranjeraAnticipos As Integer
+ Public Property IdCtaContCompAnticipos As Integer
Public Property IdCtaContRetIVA As Integer
Public Property IdCtaContRetISR As Integer
Public Property ConvenioCIE As String
diff --git a/Bancos/PopIECompras.aspx.vb b/Bancos/PopIECompras.aspx.vb
index 866df3a64..6d219e9f4 100644
--- a/Bancos/PopIECompras.aspx.vb
+++ b/Bancos/PopIECompras.aspx.vb
@@ -1398,10 +1398,9 @@ Partial Class Bancos_PopIECompras
Dim Pago As New CompraPago
Pago.Fecha = TxtFechaDocumento.Text.ToDate
Pago.CveMonedaPago = CveMoneda
- ImportePagado = TxtImporte.Text.Trim.ToDecimal
+ ImportePagado = TxtImporte.Text.Trim.ToDecimal.RoundSQL
'Tipos de cambio
If Pago.CveMonedaPago = 1 AndAlso CompraActual.CveMoneda = 2 Then 'Si la venta viene en Dolares y se va a pagar en Pesos
- Pago.TCPago = TxtTipoCambio.Text.ToDecimal
Pago.TCCambioMoneda = 1 / TxtTipoCambio.Text.ToDecimal
ElseIf Pago.CveMonedaPago = 2 AndAlso CompraActual.CveMoneda = 2 Then 'Si la venta viene en Dolares y se va a pagar en DOLARES
Pago.TCPago = TxtTipoCambio.Text.ToDecimal
@@ -1433,7 +1432,7 @@ Partial Class Bancos_PopIECompras
Dim UsaComplementariaBancos As Boolean = Not UsuarioActual.CveEmpresa.Contiene(7, 11, 122, 145, 13, 83)
Dim ConceptoMovimiento As String = $"{TxtPagueseA.Text.Trim} - {TxtObservaciones.Text} {If(Pago.TCPago > 1, $" TC:{Pago.TCPago}", "")}"
Dim Referencia As String = TxtFolio.Text.Trim
- Dim tImporteMN As Decimal = TxtImporte.Text.ToDecimal
+ Dim tImporteMN As Decimal = ImportePagado
Pago.ImportePago = tImporteMN
If DivTarjeta.Visible AndAlso DdlTarjeta.SelectedValue.ToEntero > 0 Then
@@ -1480,7 +1479,7 @@ Partial Class Bancos_PopIECompras
End If
Dim saldo As Decimal = DtCheques.Rows(DDlCheques.SelectedIndex)("Saldo").ToString.ToDecimal
- If TxtImporte.Text.ToDecimal > saldo Then
+ If ImportePagado > saldo Then
Alert("El importe no debe de superar el saldo del cheque seleccionado.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
@@ -1497,8 +1496,8 @@ Partial Class Bancos_PopIECompras
MsgError = "Error al registrar detalle de concepto bancario"
End If
- Case "3" 'Ingresos X Comprobar
- ImportePagado = TxtImporte.Text.Trim.ToDecimal
+ Case "3" 'Ingresos X Comprobar
+
Pago.ImportePago = ImportePagado
For Each rw As GridViewRow In GvIngresos.Rows
If rw.FCCheckBox("Chk").Checked Then
@@ -1556,7 +1555,7 @@ Partial Class Bancos_PopIECompras
Pago.CveIE = rw.DataKey("CveIE").ToEntero
Pago.CveMonedaPago = rw.DataKey("CveMoneda").ToEntero
Pago.ImportePago = rw.FCTextBox("TxtSaldoDeudor").Text.ToDecimal
- Pago.TCPago = TxtTipoCambio.Text.ToDecimal
+ Pago.TCPago = If(Pago.CveMonedaPago <> 1, TxtTipoCambio.Text.ToDecimal, 1)
Pago.CveProveedor = DdlAcreedor.SelectedValue.ToEntero
Pago.TipoPago = "Egsc"
If AplicaPrePolizaPagoCompra(CompraActual, Pago, CvePrePoliza, ObjMov) Then
@@ -1584,7 +1583,7 @@ Partial Class Bancos_PopIECompras
End If
If MsgError = "" Then
- Dim VentaActual As New Venta With {.CveVenta = rw.DataKey("CveVenta").ToEntero, .ClienteNombre = NombreCliente, .SerieFolio = rw.DataKey("SerieFolio"), .CveCliente = rw.DataKey("CveCliente").ToEntero, .IVA = rw.DataKey("IVA").ToDecimal, .IEPS = rw.DataKey("IEPS").ToDecimal, .RetIVA = rw.DataKey("RetIVA").ToDecimal, .RetISR = rw.DataKey("RetISR").ToDecimal, .Total = rw.DataKey("Total").ToDecimal, .PorcentajeIVA = rw.DataKey("PorcentajeIVA").ToDecimal, .CveSubProyecto = rw.DataKey("CveSubProyecto").ToEntero, .CveMoneda = rw.DataKey("CveMoneda").ToEntero}
+ Dim VentaActual As New Venta(UsuarioActual) With {.CveVenta = rw.DataKey("CveVenta").ToEntero, .ClienteNombre = NombreCliente, .SerieFolio = rw.DataKey("SerieFolio"), .CveCliente = rw.DataKey("CveCliente").ToEntero, .IVA = rw.DataKey("IVA").ToDecimal, .IEPS = rw.DataKey("IEPS").ToDecimal, .RetIVA = rw.DataKey("RetIVA").ToDecimal, .RetISR = rw.DataKey("RetISR").ToDecimal, .Total = rw.DataKey("Total").ToDecimal, .PorcentajeIVA = rw.DataKey("PorcentajeIVA").ToDecimal, .CveSubProyecto = rw.DataKey("CveSubProyecto").ToEntero, .CveMoneda = rw.DataKey("CveMoneda").ToEntero}
Dim PagoVenta As New VentaPago
PagoVenta.CveMonedaPago = rw.DataKey("CveMoneda").ToEntero
@@ -1854,8 +1853,6 @@ Partial Class Bancos_PopIECompras
End If
-
-
End Sub
End Class
\ No newline at end of file
diff --git a/Bancos/ProveedoresAbonar.aspx.vb b/Bancos/ProveedoresAbonar.aspx.vb
index b12097b53..46e9f59c1 100644
--- a/Bancos/ProveedoresAbonar.aspx.vb
+++ b/Bancos/ProveedoresAbonar.aspx.vb
@@ -857,6 +857,8 @@ Partial Class Bancos_ProveedoresAbonar
ElseIf Pago.CveMonedaPago = 2 AndAlso CompraActual.CveMoneda = 1 Then 'Si la venta viene en pesos y se va a pagar en DOLARES
Pago.TCPago = TxtTCDolares.Text.ToDecimal
End If
+ If ChkPagarPesos.Checked Then Pago.TCCambioMoneda = 1 / TxtTC.Text.ToDecimal
+ If ChkPagarDolares.Checked Then Pago.TCCambioMoneda = TxtTCDolares.Text.ToDecimal
If gvr.FCTextBox("TxtComision").Text.ToDecimal <> 0 Then
Pago.OtroGastoIngreso = gvr.FCTextBox("TxtComision").Text.ToDecimal
@@ -1097,13 +1099,14 @@ Partial Class Bancos_ProveedoresAbonar
Anexo.Text = "[]"
Dim Msg As New StringBuilder
+ Msg.AppendFormat(" Folio: {1}
", CveIE, TxtFolio.Text)
- Msg.AppendFormat("