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("
  • Imprimir movimiento
  • ", Encripta(String.Format("OP=IECHEQUE&CVEIE={0}", CveIE))) + Msg.AppendFormat(" Imprimir movimiento
    ", Encripta(String.Format("OP=IECHEQUE&CVEIE={0}", CveIE))) 'End If - Msg.AppendFormat("
  • Listado
  • ", Encripta(String.Format("OP=ImprimeMov&CveIE={0}", CveIE))) - If IDPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then Msg.AppendFormat("
  • Póliza
  • ", IDPoliza) + Msg.AppendFormat(" Listado
    ", Encripta(String.Format("OP=ImprimeMov&CveIE={0}", CveIE))) + If IDPoliza > 0 AndAlso UsuarioActual.Empresa.TipoContabilidad = 2 Then Msg.AppendFormat(" Póliza
    ", IDPoliza) - Dim Mensaje As String = String.Format("
    El Documento se generó correctamente.


    Descargas:", Msg.ToString) + Dim Mensaje As String = String.Format("El Documento se generó correctamente.

    {0} ", Msg.ToString) 'LIMPIA TxtFolio.Text = "" diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 42211ac69..c836aa7ef 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -3598,25 +3598,24 @@
    -
    +
    -
    +
    -
    -
    +
    -
    +
    -
    +
    @@ -3629,7 +3628,7 @@ - + <%----%>
    @@ -6631,15 +6630,13 @@ TotalCompra = parseFloat($('#<%= TxtTotal.ClientID %>').val().replace(/,/g, '')).toFixed(2); ImporteAmortizado = $(`.CsSelAmbos${CveCreditoDetalle}`).val().replace(/,/g, '').length == 0 ? 0 : parseFloat($(`.CsSelAmbos${CveCreditoDetalle}`).val().replace(/,/g, '')); ImporteComision = $(`.CsSelComision${CveCreditoDetalle}`).val().replace(/,/g, '').length == 0 ? 0 : parseFloat($(`.CsSelComision${CveCreditoDetalle}`).val().replace(/,/g, '')); + ImporteComision = isNaN(ImporteComision) ? 0 : ImporteComision; ImporteDocPorPagar = (ImporteIE - ImporteAmortizado - ImporteComision).toFixed(2); $(`.CsSelAmbos${CveCreditoDetalle}`).each(function () { FormatoMoneda3($(this)); }); - - $(`.CsSelComision${CveCreditoDetalle}`).each(function () { - FormatoMoneda3($(this)); - }); + $(`.CsCreGlobal`).each(function () { let stringTemp = $(this).val().replace(/,/g, ''); @@ -6660,15 +6657,18 @@ }); - if (((TotalAmortizaciones + TotalComisiones) > TotalCompra) || ((ImporteAmortizado + ImporteComision) > ImporteIE)) { + if ((TotalAmortizaciones > TotalCompra) || ((ImporteAmortizado + ImporteComision) > ImporteIE)) { TotalAmortizaciones = 0; - TotalComisiones = 0; + //TotalComisiones = 0; - if (Tipo == 1) { + if (Tipo == 1) { $(`.CsSelAmbos${CveCreditoDetalle}`).val(``); + } else if (Tipo == 2) { - $(`.CsSelComision${CveCreditoDetalle}`).val(``); + if (!isNaN(ImporteComision) && ImporteComision != 0) { + $(`.CsSelComision${CveCreditoDetalle}`).val(``); + } } @@ -6679,11 +6679,8 @@ $(`.CsSelAmbos${CveCreditoDetalle}`).each(function () { FormatoMoneda3($(this)); - }); - - $(`.CsSelComision${CveCreditoDetalle}`).each(function () { - FormatoMoneda3($(this)); - }); + }); + $(`.CsCreGlobal`).each(function () { diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 13d7e380d..2b9ff8b52 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -853,6 +853,18 @@ Partial Class Compras_Compras ViewState("TipoCambio") = value End Set End Property + + + Private Property TipoCambioOriginal As Decimal + Get + Return ViewState("TipoCambioOriginal").ToString.ToDecimal + End Get + Set(value As Decimal) + ViewState("TipoCambioOriginal") = value + End Set + End Property + + 'Private Property TipoCambio As Double = 0 Private Property OtrosImpuestos As Decimal = 0 Private Property OtrosImpuestosRetenciones As Decimal = 0 @@ -1724,8 +1736,12 @@ Partial Class Compras_Compras Dim ObjeFacturas As New ClsCompras Dim RFC As String = "" If ObjeFacturas.GetFacturas(CveFactura, "-1", Now.AddYears(-4), Now, "-1", "-1", -1, -1, -1, -1, "-1", UsuarioActual.CveEmpresa) AndAlso ObjeFacturas.DtResultados.Rows.Count > 0 Then + + Dim dr As DataRow = ObjeFacturas.DtResultados.Rows(0) ' no toma la cero, porque es el totalizador + ViewState("CveTipoProveedor") = dr("CveTipoProveedor").ToString.ToEntero + Dim XMLDoc As New XmlDocument Dim Archivo As String = String.Format("{0}Compras\{1}\{2}", UsuarioActual.Empresa.Ruta, dr("RFCDe"), dr("XML")) If IO.File.Exists(Archivo) Then @@ -2374,12 +2390,22 @@ Partial Class Compras_Compras If TrasladoIEPS > 0 Or OtrosImpuestos > 0 Then + If OtrosImpuestos > 0 Or TrasladoIEPS > 0 Then - If OtrosImpuestos > 0 Then - RegistraScript("$('#ModalIEPS').modal({ backdrop: 'static', keyboard: false },'show');") - Else - RegistraScript("$('#ModalIEPS').modal('show');") - BtnCancelarotrosImpuestos.Visible = True + If UsuarioActual.Empresa.Funcionalidad(713).ToEntero = 1 Then + 'Si tiene funcionalidad y es Acreedor se muestra modal + If CveTipoProveedor.Contiene(2, 3) Then ' Acreedor + RegistraScript("$('#ModalIEPS').modal({ backdrop: 'static', keyboard: false },'show');") + End If + Else + 'Si no tiene funcionalidad y es proveedor se muestra + RegistraScript("$('#ModalIEPS').modal({ backdrop: 'static', keyboard: false },'show');") + + End If + + 'Else + ' RegistraScript("$('#ModalIEPS').modal('show');") + 'BtnCancelarotrosImpuestos.Visible = True End If @@ -2642,7 +2668,8 @@ Partial Class Compras_Compras HfTotalCompra.Value = TxtTotal.Text TipoCambio = dr("TipoCambio").ToString.ToDecimal - Dim TipoCambioOriginal = dr("TipoCambioOriginal").ToString.ToDouble + + TipoCambioOriginal = dr("TipoCambioOriginal").ToString.ToDecimal If TipoCambio > 1 Then LblTC.Text = String.Format("TC: {0}", TipoCambio.ToString("N4")) If TipoCambio <> TipoCambioOriginal Then LblTCO.Text = String.Format("
    TC Original: {0}", TipoCambioOriginal.ToString("N4")) @@ -6058,6 +6085,7 @@ Partial Class Compras_Compras Dim OtrosGastosIngresosCredito As Decimal = gvRowCredito.FCTextBox("TxtComision").Text.ToDecimal Dim CveIECredito As Integer = gvRowCredito.DataKey("CveIE").ToEntero Dim CveCreditoDetalleTemp As Integer = gvRowCredito.DataKey("CveCreditoDetalle").ToEntero + Dim CveCreditoTemp As Integer = gvRowCredito.DataKey("CveCredito").ToEntero If ImportePagoCredito > 0 Then Dim Pago As New CompraPago @@ -6079,14 +6107,14 @@ Partial Class Compras_Compras Exit For End If - Dim ImporteDifCredito As Decimal = ImporteIEAnticipo - ImportePagoCredito ' CompraActual.Total + Dim ImporteDifCredito As Decimal = (ImporteIEAnticipo + OtrosGastosIngresosCredito) - ImportePagoCredito ' CompraActual.Total If ImporteDifCredito > 0 Then ' Dim ImportePagoCreditoMN As Decimal = ImportePagoCredito * tipoCambioActual Dim ImporteDifCreditoMN As Decimal = ImporteDifCredito * tipoCambioActual - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDifCredito, ImporteDifCreditoMN, 59, Referencia, Concepto, IdCtaContable, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIECredito, CveCreditoDetalle:=CveCreditoDetalleTemp, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteME:=If(tipoCambioActual = 1, 0, ImporteDifCredito), CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDifCredito, ImporteDifCreditoMN, 50, Referencia, Concepto, IdCtaContable, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIECredito, CveCredito:=CveCreditoTemp, CveCreditoDetalle:=CveCreditoDetalleTemp, CveClasificacion:=CveClasificacionDT, CveSubProyecto:=CveSubProyectoDT, ImporteME:=If(tipoCambioActual = 1, 0, ImporteDifCredito), CveTipoGasto:=CveTipoGastoDT, TipoCambio:=tipoCambioActual, Contabilizable:=SeContabiliza) Then ErrorPrepoliza = True End If @@ -9203,10 +9231,17 @@ Partial Class Compras_Compras Dim FechaMovimiento As Date = TxtFecha.Text.ToDate + + If DdlMoneda.SelectedValue.ToString.ToEntero = 2 Then tipoCambioActual = GlobalTipoCambio(FechaMovimiento).ToString.ToDecimal tipoCambioActual = If(DivTC.Visible Or TipoCambio > 0, TipoCambio, tipoCambioActual) tipoCambioPago = GlobalTipoCambio(TxtFechaPago.Text.ToDate).ToString.ToDecimal + + If TipoCambioOriginal > 0 Then + tipoCambioActual = TipoCambioOriginal + End If + Else tipoCambioActual = 1 tipoCambioPago = 1 @@ -9473,7 +9508,7 @@ Partial Class Compras_Compras 'AGREGA MOVIMIENTO If importeMovimiento <> 0 AndAlso Not DdlTipoComprobante.SelectedValue.Contiene("NC", "DEV", "Ant") Then Concepto = $"{NombreProveedor} {TxtSerie.Text} - {TxtFolio.Text}" - If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, 6, Concepto, FechaMovimiento, IdCtaContable, -1, CveCompra:=CveCompra, CveProveedor:=CveProveedorConcepto, CveIE:=CveIE, CveCreditoDetalle:=CveCreditoDetalle, CveClasificacion:=Row2("CveClasificacion").ToString.ToEntero, CveSubProyecto:=Row2("CveSubProyecto").ToString.ToEntero, ImporteMX:=importeMN, ImporteME:=If(tipoCambioActual = 1, 0, importeMovimiento), TipoCambio:=tipoCambioActual, CveTipoGasto:=Row2("CveTipoGasto").ToString.ToEntero) Then ErrorPrepoliza = True End If End If @@ -13949,6 +13984,12 @@ Partial Class Compras_Compras End If + If Not ErrorCancelar Then + If Not ObjCompras.CancelarCompraOC(CveCompra, UsuarioActual.CveEmpresa) Then + ErrorCancelar = True + End If + End If + 'CANCELA COMPRA If Not ErrorCancelar Then @@ -16720,10 +16761,19 @@ Partial Class Compras_Compras 'TxtIVAModal.Text = FormatoNumero(GvRow.DataKey("IVAPorcentaje").ToDouble * 100, 0) + + + TxtRetIVAModal.Text = FormatoNumero(GvRow.DataKey("RetIVAPorcentaje").ToDouble * 100, 0) TxtRetISRModal.Text = FormatoNumero(GvRow.DataKey("RetISRPorcentaje").ToDouble * 100, 0) TxtIEPSModal.Text = FormatoNumero(GvRow.DataKey("IEPSPSPorcentaje").ToDouble * 100, 0) + ViewState("RetIVA") = GvRow.DataKey("RetIVAPorcentaje").ToDouble + ViewState("RetISR") = GvRow.DataKey("RetISRPorcentaje").ToDouble + + 'TxtRetIVAModal.Text = FormatoNumero(ViewState("RetIVA").ToString().ToDouble * 100, 0) + 'TxtRetISRModal.Text = FormatoNumero(ViewState("RetISR").ToString().ToDouble * 100, 0) + TxtPrecio.Text = GvRow.DataKey("PU").FormatoNumero(6) TxtDescuentoModal.Text = GvRow.DataKey("Descuento").FormatoNumero(6) TxtOtrosGastos.Text = GvRow.DataKey("OtrosGastos").FormatoNumero @@ -16899,8 +16949,11 @@ Partial Class Compras_Compras ' DdlIVA.Enabled = False End If - ViewState("RetIVA") = If(PS("RetIVA").ToString = "-1", ViewState("RetIVA"), PS("RetIVA").ToString).ToString - ViewState("RetISR") = If(PS("RetISR").ToString = "-1", ViewState("RetISR"), PS("RetISR").ToString).ToString + If Not CveFactura > 0 Then + ViewState("RetIVA") = If(PS("RetIVA").ToString = "-1", ViewState("RetIVA"), PS("RetIVA").ToString).ToString + ViewState("RetISR") = If(PS("RetISR").ToString = "-1", ViewState("RetISR"), PS("RetISR").ToString).ToString + End If + If TxtIEPSModal.Text = "" Then TxtIEPSModal.Text = FormatoNumero(PS("IEPSPorcentaje").ToString.ToDecimal * 100, 0) End If @@ -18854,7 +18907,7 @@ Partial Class Compras_Compras Dim ObjBancos As New ClsBancos If ObjBancos.GetCreditosDetalleCompras(UsuarioActual.CveEmpresa, CveProveedor, -1, -1, -1) Then - GvCreditos.DataSource = ObjBancos.DtResultados + GvCreditos.DataSource = ObjBancos.DtResultados.FiltraParametros(" ImporteIE > 0") Else GvCreditos.DataSource = Nothing End If @@ -18921,7 +18974,7 @@ Partial Class Compras_Compras Dim ObjBancos As New ClsBancos If ObjBancos.GetCreditosDetalleCompras(UsuarioActual.CveEmpresa, CveProveedor, -1, -1, -1) Then - GvCreditos.DataSource = ObjBancos.DtResultados + GvCreditos.DataSource = ObjBancos.DtResultados.FiltraParametros(" ImporteIE > 0") Else GvCreditos.DataSource = Nothing End If @@ -18995,7 +19048,7 @@ Partial Class Compras_Compras If Not ObjInventario.AddFletesCompras(CveFlete, CveCompra) Then ErrorTrans = True End If - '''actualiza la compra para que no se surta en almacen. sino por el flete o importación + ''actualiza la compra para que no se surta en almacen. sino por el flete o importación ''If Not ObjCompras.UpdateEstatusAlmacen(CveCompra, 2) Then '' ErrorTrans = True ''End If diff --git a/Contabilidad2/RepAnexoCatalogoCC.aspx.vb b/Contabilidad2/RepAnexoCatalogoCC.aspx.vb index 8a1f4f273..3921668dd 100644 --- a/Contabilidad2/RepAnexoCatalogoCC.aspx.vb +++ b/Contabilidad2/RepAnexoCatalogoCC.aspx.vb @@ -269,8 +269,6 @@ Partial Class Contabilidad2_RepAnexoCatalogoCC e.Row.Cells(Index).ForeColor = Drawing.Color.Red End If - - Index += 1 Next @@ -280,8 +278,6 @@ Partial Class Contabilidad2_RepAnexoCatalogoCC For Each DRow As DataRow In DTHeaders.Rows Dim Importe As Decimal = e.Row.DBCampo($"SubProyecto{DRow("SubProyecto")}").ToDecimal - 'Dim Anio As Integer = DRow("SubProyecto").ToString.ToEntero - If e.Row.Cells(Index).Text.Replace("%", "").ToDecimal = 0 Then e.Row.Cells(Index).Text = "-" @@ -289,61 +285,13 @@ Partial Class Contabilidad2_RepAnexoCatalogoCC e.Row.Cells(Index).ForeColor = Drawing.Color.Red End If - If Importe <> 0 Then e.Row.Cells(Index).Text = $"{ If(DdlDivisor.SelectedValue.ToEntero > 1, Importe.ToString("###,###,##0"), Importe.ToString("###,###,###.00")) }" End If - - 'If e.Row.Cells(Index + 1).Text.ToDecimal = 0 Then - ' e.Row.Cells(Index + 1).Text = "-" - 'ElseIf e.Row.Cells(Index + 1).Text.ToDecimal < 0 Then - ' e.Row.Cells(Index + 1).ForeColor = Drawing.Color.Red - - 'End If - - - Index += 1 Next - - 'Index = 4 - - 'For Each DRow As DataRow In DTHeaders.Rows - - ' Dim Importe As Decimal = e.Row.DBCampo($"SubProyecto{DRow("SubProyecto")}").ToDecimal - ' 'Dim Anio As Integer = DRow("SubProyecto").ToString.ToEntero - - ' If Importe > 0 Then - ' e.Row.Cells(Index).Text = $"{ If(DdlDivisor.SelectedValue.ToEntero > 1, Importe.ToString("###,###,##0"), Importe.ToString("###,###,###.00")) }" - ' Else - ' e.Row.Cells(Index).Text = "-" - ' End If - - ' If e.Row.Cells(Index + 1).Text.ToDecimal = 0 Then - - ' e.Row.Cells(Index + 1).Text = "-" - - ' ElseIf e.Row.Cells(Index + 1).Text.ToDecimal < 0 Then - ' e.Row.Cells(Index + 1).ForeColor = Drawing.Color.Red - - ' End If - - ' If e.Row.Cells(Index + 2).Text.Replace("%", "").ToDecimal = 0 Then - ' e.Row.Cells(Index + 2).Text = "-" - ' ElseIf e.Row.Cells(Index + 2).Text.Replace("%", "").ToDecimal < 0 Then - ' e.Row.Cells(Index + 2).ForeColor = Drawing.Color.Red - ' End If - - ' Index += 1 - - 'Next - - - - ' e.Row.Cells(1).Style.Add("text-indent", $"{e.Row.DBCampo("Level").ToString.ToEntero * 2}em") - End If End Sub diff --git a/Contabilidad2/RepEstadoResultadosHorizontal.aspx b/Contabilidad2/RepEstadoResultadosHorizontal.aspx index d93005148..94f866180 100644 --- a/Contabilidad2/RepEstadoResultadosHorizontal.aspx +++ b/Contabilidad2/RepEstadoResultadosHorizontal.aspx @@ -643,7 +643,7 @@

    - + diff --git a/Contabilidad2/RepEstadoResultadosHorizontal.aspx.vb b/Contabilidad2/RepEstadoResultadosHorizontal.aspx.vb index 1006ffb04..30c3c5c18 100644 --- a/Contabilidad2/RepEstadoResultadosHorizontal.aspx.vb +++ b/Contabilidad2/RepEstadoResultadosHorizontal.aspx.vb @@ -1518,6 +1518,8 @@ Partial Class Contabilidad_RepEstadoResultadosHorizontal e.Row.FCHyperLink("HLOctubre").ForeColor = If(e.Row.DataKey("Octubre").ToDecimal < 0, Drawing.Color.Red, e.Row.FCHyperLink("HLOctubre").ForeColor) e.Row.FCHyperLink("HLNoviembre").ForeColor = If(e.Row.DataKey("Noviembre").ToDecimal < 0, Drawing.Color.Red, e.Row.FCHyperLink("HLNoviembre").ForeColor) e.Row.FCHyperLink("HLDiciembre").ForeColor = If(e.Row.DataKey("Diciembre").ToDecimal < 0, Drawing.Color.Red, e.Row.FCHyperLink("HLDiciembre").ForeColor) + e.Row.FCHyperLink("HLAnterior").ForeColor = If(e.Row.DataKey("ImporteAcumulado").ToDecimal < 0, Drawing.Color.Red, e.Row.FCHyperLink("HLAnterior").ForeColor) + End If @@ -1929,6 +1931,9 @@ Partial Class Contabilidad_RepEstadoResultadosHorizontal e.Row.Attributes.Add("style", "Font-weight: bold") + If e.Row.DBCampo("ImporteAcumulado").ToString.ToDouble < 0 Then + e.Row.FCHyperLink("HLAnterior").ForeColor = Drawing.Color.Red + End If End If diff --git a/Inventarios/EntradasSalidas.aspx b/Inventarios/EntradasSalidas.aspx index 48eebe541..774a35263 100644 --- a/Inventarios/EntradasSalidas.aspx +++ b/Inventarios/EntradasSalidas.aspx @@ -400,7 +400,7 @@
    -
    +
    "> @@ -848,8 +848,8 @@ - - + + <%----%> diff --git a/Nomina/ChecadorAsistencia.aspx.cs b/Nomina/ChecadorAsistencia.aspx.cs index 99ef7acc4..ce151927c 100644 --- a/Nomina/ChecadorAsistencia.aspx.cs +++ b/Nomina/ChecadorAsistencia.aspx.cs @@ -369,7 +369,7 @@ public partial class Nomina_ChecadorAsistencia : ClsPaginas GvDetalleDias.DataBind(); } DdlTipoAsistencias.Enabled = GvDetalleDias.Rows.Count > 0; - if (objRH.GetAsistencias(CvePersonal, -1, -1, -1, -1, -1, fechai, fechai, UsuarioActual.CveEmpresa)) + if (objRH.GetAsistencias(CvePersonal, -1, -1, -1, -1, -1,-1, fechai, fechai, UsuarioActual.CveEmpresa)) { if (objRH.DtResultados.Rows.Count > 0) { diff --git a/RH/Asistencias.aspx b/RH/Asistencias.aspx index 93c0b3969..1d69ade4d 100644 --- a/RH/Asistencias.aspx +++ b/RH/Asistencias.aspx @@ -92,8 +92,15 @@ Tipo Periodo:
    - - + + + +
    + Puesto: +
    + + +
    @@ -130,6 +137,12 @@ + + Puesto + + + + Asistencia diff --git a/RH/Asistencias.aspx.vb b/RH/Asistencias.aspx.vb index 535b7b773..348d26201 100644 --- a/RH/Asistencias.aspx.vb +++ b/RH/Asistencias.aspx.vb @@ -17,12 +17,13 @@ Partial Class RH_Asistencias divCliente.Visible = False LblCliente.Visible = False GV.Columns(2).Visible = False + GV.Columns(3).Visible = True End If txtFechaAsistencia.Text = Now.ToShortDateString If UsuarioActual.CveRol = 1 OrElse UsuarioActual.CveUsuario = 2343 Then PnlMasivo.Visible = True - CargaTiposPeriodo() End If + CargaTiposPeriodo() End If End Sub @@ -57,6 +58,8 @@ Partial Class RH_Asistencias Private Sub CargaTurnos() DdlTurno.DataSource = GlobalDTTurno(UsuarioActual.CveEmpresa) DdlTurno.DataBind() + DdlPuesto.DataSource = GlobalDTRHPuestos(UsuarioActual.CveEmpresa) + DdlPuesto.databind End Sub #End Region @@ -68,7 +71,7 @@ Partial Class RH_Asistencias Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click If TxtFechaAsistencia.Text.Trim.ToDate.Year.Contiene(Now.Year - 1, Now.Year, Now.Year + 1) Then Dim objpersonal As New ClsRH - If objpersonal.GetAsistencias(-1, DdlCliente.SelectedValue.ToEntero, DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlTurno.SelectedValue.ToEntero, 1, DdlTipoPeriodo.SelectedValue.ToEntero, txtFechaAsistencia.Text.Trim.ToDate, txtFechaAsistencia.Text.Trim.ToDate, UsuarioActual.CveEmpresa) Then + If objpersonal.GetAsistencias(-1, DdlCliente.SelectedValue.ToEntero, DdlProyecto.SelectedValue.ToEntero, DdlSubProyecto.SelectedValue.ToEntero, DdlTurno.SelectedValue.ToEntero, 1, DdlTipoPeriodo.SelectedValue.ToEntero, txtFechaAsistencia.Text.Trim.ToDate, txtFechaAsistencia.Text.Trim.ToDate, UsuarioActual.CveEmpresa, DdlPuesto.SelectedValue.ToEntero) Then Dim dt As DataTable = objpersonal.DtResultados If DdlSupervisorOrganigrama.SelectedValue.ToEntero() > 0 Then dt = dt.FiltraParametros(String.Format("CvePersonalPadre = {0}", DdlSupervisorOrganigrama.SelectedValue.ToEntero())) diff --git a/RH/CatAsistenciasInasistencias.aspx b/RH/CatAsistenciasInasistencias.aspx index 1a45620ae..de3bb5b88 100644 --- a/RH/CatAsistenciasInasistencias.aspx +++ b/RH/CatAsistenciasInasistencias.aspx @@ -31,11 +31,11 @@ - + - + @@ -43,7 +43,8 @@ - + + @@ -51,7 +52,7 @@ - + @@ -59,46 +60,42 @@ - - - + - + - + - + - + - + - + - - - - + + a @@ -106,17 +103,17 @@ - + - + <%-- - - + --%> + <%----%> @@ -159,6 +156,11 @@
    +
    + + + +
    diff --git a/RH/CatAsistenciasInasistencias.aspx.vb b/RH/CatAsistenciasInasistencias.aspx.vb index 99337a21a..e5e7cc5f8 100644 --- a/RH/CatAsistenciasInasistencias.aspx.vb +++ b/RH/CatAsistenciasInasistencias.aspx.vb @@ -120,6 +120,7 @@ chkAplicaVacacion, chkAplicaIncapacidad, chkAplicaRetardo, chkAplicaAguinaldo, c CheckActiveSection.Visible = True Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow) 'obtenemos el renglon que acabamos de seleccionar TipoTxt.Text = GvRow.DataKey("Tipo") + TxtTipoCorto.Text = GvRow.DataKey("TipoCorto") AplicaNoAplica.Checked = If(GvRow.DataKey("AplicaAsistencia") = "Aplica", True, False) diff --git a/RH/Personal.aspx.vb b/RH/Personal.aspx.vb index 5a40a2a5c..8f3eda23e 100644 --- a/RH/Personal.aspx.vb +++ b/RH/Personal.aspx.vb @@ -1512,7 +1512,7 @@ Partial Class RH_Personal If CveCliente <= 0 Then CveCliente = -1 End If - If objpersonal.GetAsistencias(CvePersonal, CveCliente, -1, DdlSubProyectoAsistenciasC.SelectedValue.ToEntero(), DdlTurno.SelectedValue.ToEntero(), -1, txtFechaI.Text.Trim.ToDate, txtFechaF.Text.Trim.ToDate, UsuarioActual.CveEmpresa) Then + If objpersonal.GetAsistencias(CvePersonal, CveCliente, -1, DdlSubProyectoAsistenciasC.SelectedValue.ToEntero(), DdlTurno.SelectedValue.ToEntero(), -1, -1, txtFechaI.Text.Trim.ToDate, txtFechaF.Text.Trim.ToDate, UsuarioActual.CveEmpresa) Then GVAsistencia.DataSource = objpersonal.DtResultados.FiltraParametros("Fecha IS NOT NULL") Else GVAsistencia.DataSource = Nothing diff --git a/RH/RepAsistencias.aspx b/RH/RepAsistencias.aspx index d7c006eab..4e10295d9 100644 --- a/RH/RepAsistencias.aspx +++ b/RH/RepAsistencias.aspx @@ -46,16 +46,10 @@
    -
    - - - -
    - Cliente: -
    -
    -