diff --git a/Acumuladores/CatFoliosGarantia.aspx.vb b/Acumuladores/CatFoliosGarantia.aspx.vb index ef11572db..e2b64d68d 100644 --- a/Acumuladores/CatFoliosGarantia.aspx.vb +++ b/Acumuladores/CatFoliosGarantia.aspx.vb @@ -197,8 +197,10 @@ Partial Class Acumuladores_CatFoliosGarantia DdlSubProyectos.DataSource = GlobalDTSubProyectosUsuarios(UsuarioActual.CveUsuario, -1, UsuarioActual.CveEmpresa, -1, 1) DdlSubProyectos.DataBind() DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1")) - DdlSubProyectos.SelectedValueExist(GvRow.DataKey("CveSubProyecto").ToEntero) - + DdlSubProyectos.SelectedValueExist(GvRow.DataKey("CveSubProyecto").ToEntero) + + DdlArea.SelectedValueExist(GvRow.DataKey("Area")) + BtnAgregarFolioGarantiaModal.Text = "Actualizar" UpModalFolioGarantia.Update() diff --git a/App_Code/ClsAcumuladores.vb b/App_Code/ClsAcumuladores.vb index 505fc7eb3..7bed46456 100644 --- a/App_Code/ClsAcumuladores.vb +++ b/App_Code/ClsAcumuladores.vb @@ -7,10 +7,10 @@ Imports Extensiones Public Class ClsAcumuladores - Implements IDisposable - + Implements IDisposable + #Region "Campos" - 'SQL + 'SQL Private SqlConexion As SqlConnection Private SqlAdapter As SqlDataAdapter Private SqlTransacc As SqlTransaction @@ -68,9 +68,9 @@ Public Class ClsAcumuladores SqlAdapter = New SqlDataAdapter("", SqlConexion) ConexionAdd() - End Sub + End Sub #Region "Conexiones" - + Private Sub ConexionAdd() If Not EsTransaccionCompartida AndAlso ConfigurationManager.AppSettings("RegistraConexion") IsNot Nothing AndAlso ConfigurationManager.AppSettings("RegistraConexion").ToString() = "1" Then Try @@ -103,18 +103,18 @@ Public Class ClsAcumuladores CveConexion = 0 End If - End Sub + End Sub #End Region Public ReadOnly Property DtResultados() As DataTable Get DtResultados = Data End Get - End Property - + End Property + #End Region - + #Region " TAMAÑOS " - + Public Function TamañoGet(CveTamaño As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -270,13 +270,13 @@ Public Class ClsAcumuladores Return retorno - End Function - - + End Function + + #End Region - + #Region " TIPOS DEFECTO " - + Public Function TiposDefectoGet(CveTipoDefecto As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -375,12 +375,12 @@ Public Class ClsAcumuladores End Try Return Retorno - End Function - + End Function + #End Region - + #Region " TIPOS USO " - + Public Function TiposUsoGet(CveTipoUso As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -479,12 +479,12 @@ Public Class ClsAcumuladores End Try Return Retorno - End Function - + End Function + #End Region - + #Region " FOLIOS GARANTÍA " - + Public Function FoliosGarantiaGet(CveFolioGarantia As Integer, CveEmpresa As Integer, Optional Estatus As Integer = -1, Optional CveSubProyecto As Integer = -1, Optional TipoFolio As String = "-1", Optional Area As Integer = 1) As Boolean Dim Retorno As Boolean = False 'Data = New DataTable @@ -557,7 +557,7 @@ Public Class ClsAcumuladores .Add("@CveUsuario", SqlDbType.Int).Value = CveUsuario .Add("@CveSubProyecto", SqlDbType.Int).Value = CveSubProyecto .Add("@TipoFolio", SqlDbType.VarChar).Value = TipoFolio - .Add("@Limite", SqlDbType.Int).Value = Limite + .Add("@Limite", SqlDbType.Int).Value = Limite .Add("@Area", SqlDbType.Int).Value = Area End With @@ -723,12 +723,12 @@ Public Class ClsAcumuladores End Try Return Retorno - End Function - + End Function + #End Region - + #Region "GARANTIAS DETALLES" - + Public Function AddGarantiasDetalle(CveVentaDetalle As Integer, CvePS As Integer, CveFolioGarantia As Integer, CveTipoUso As Integer, CodigoEnsamble As String, CodigoLinea As String, CodigoInspeccion As String, CveTipoDefecto As Integer, CodigoTD As String, TipoComprobante As Integer, Comprobante As String, Importe As Double, @@ -833,12 +833,12 @@ Public Class ClsAcumuladores OnError("Ocurrió un error a eliminar de garantia.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) End Try Return Retorno - End Function - - - + End Function + + + #End Region - + #Region "P O L I Z A - V I R T U A L" Public Function AddPolizaVirtual(CveVenta As Integer, CveVentaDetalle As Integer, CvePS As Integer, Cantidad As Decimal, PU As Decimal, Descuento As Decimal, Total As Decimal, TipoServicio As Integer, TipoPoliza As Integer, CveModeloAuto As Integer, AnioVehiculo As Integer, TieneUsado As Boolean, FechaUsado As DateTime, @@ -1397,7 +1397,7 @@ Public Class ClsAcumuladores ConexionClose() Dispose(True) GC.SuppressFinalize(Me) - End Sub + End Sub #End Region - + End Class diff --git a/App_Code/ClsClientes.vb b/App_Code/ClsClientes.vb index 0ae7b54da..b991a40a3 100644 --- a/App_Code/ClsClientes.vb +++ b/App_Code/ClsClientes.vb @@ -1338,13 +1338,14 @@ Public Class ClsClientes Return Retorno End Function - Public Function GetVentasRemisionesPagos(CveCliente As Integer, Ventas As String) As Boolean + Public Function GetVentasRemisionesPagos(CveCliente As Integer, Ventas As String, Optional TipoDocto As String = "Rem") As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasRemisionesPagos") With SqlAdapter.SelectCommand.Parameters .Add("@CveCliente", SqlDbType.Int).Value = CveCliente .Add("@Ventas", SqlDbType.VarChar).Value = Ventas + .Add("@TipoDocto", SqlDbType.VarChar).Value = TipoDocto End With Try diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index a97e3fa58..776036e64 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -654,6 +654,7 @@ Namespace Modelos End If End Sub Public Class MMensajeFactura + Public Property Factura As Modelos.Factura Sub New() CveVenta = -1 LigaCliente = "" @@ -1097,7 +1098,7 @@ Namespace Modelos End If 'MENSAJE PRINCIPAL - MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", Me.TipoDocumento, Me.SerieFolio)) + MensajeAlert.AppendFormat(String.Format("
La {0}: {1} se generó correctamente.

", If(Me.TipoDocumento = "Ingresos", "Factura", Me.TipoDocumento), Me.SerieFolio)) ' DESCARGA XML - SI SE TIMBRA MANDA CORREO CON FACTURA @@ -1131,8 +1132,10 @@ Namespace Modelos End If 'ERROR DE NO TIMBRADO - If Not SeTimbro And (Me.TipoDocto = "Ing" Or Me.TipoDocto.Contiene("Egs", "Dev") Or Me.TipoDocto = "Ant") Then - MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.") + If Timbrar Then + If Not SeTimbro And (Me.TipoDocto = "Ing" Or Me.TipoDocto.Contiene("Egs", "Dev") Or Me.TipoDocto = "Ant") Then + MensajeAlert.AppendFormat("La factura no se pudo timbrar. Por favor intentelo de nuevo a traves del boton Emitir.") + End If End If 'ERROR DE NO TIMBRADO NC @@ -3031,9 +3034,67 @@ Namespace Modelos Private Function ProcesoPrepolizas(ObjFactura As Factura, ByRef ObjConta As ClsContabilidad, CveIE As Integer, TmpDTDetalle As DataTable, 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, Optional FechaCancelacion As DateTime = MinFecha) As Boolean + Optional CveEstatusRefacturacion As Integer = 0, Optional ByRef ObjInventario As ClsInventarios = Nothing, Optional FechaCancelacion As DateTime = MinFecha, Optional ObjClientes As ClsClientes = Nothing, + Optional AplicaCancelacionConPagos As Boolean = False) As Boolean Dim ErrorPrepoliza As Boolean = False Try + + If ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso AplicaCancelacionConPagos AndAlso ValorMultiplicador = -1 Then + Dim DtPagosVenta As DataTable = Nothing + + If ObjClientes IsNot Nothing Then + If ObjClientes.GetVentasRemisionesPagos(CveCliente, Me.CveVenta.ToString(), ObjFactura.TipoDocto) Then + DtPagosVenta = ObjClientes.DtResultados.Copy() + Else + ErrorPrepoliza = True + End If + Else + ErrorPrepoliza = True + End If + + 'CANCELAR PAGO DE INGRESO + If Not ErrorPrepoliza AndAlso DtPagosVenta IsNot Nothing Then + + Dim VentaActual As New ClsPaginas.Venta(ObjFactura, UsuarioActual) + + For Each DrPago As DataRow In DtPagosVenta.Rows + + 'SI ES PAGO DE BANCOS, CANCELAR EL IE + If DrPago("TipoPago").ToString() = "B" Then + ErrorPrepoliza = ObjBancos.CancelarBancos_IE(UsuarioActual.CveUsuario, DrPago("CveIE").ToString().ToEntero(), False, -1, -1, Now) <= 0 + Else + 'RESTAR SALDOS APLICADOS + Dim Importe As Decimal = DrPago("Importe").ToString().ToDecimal() * -1 + + Dim Pago As New ClsPaginas.VentaPago + Pago.Fecha = Now + Pago.FechaDocumentoRelacionado = DrPago("FechaDocumento").ToString().ToDate + Pago.ImportePagoVenta = Importe + Pago.ImportePago = Importe + Pago.CveIE = DrPago("CveIE").ToString().ToEntero() + Pago.CveMonedaPago = DrPago("CveMoneda").ToString().ToEntero() + Pago.TCPago = DrPago("TipoCambio").ToString().ToDecimal() + Pago.AplicaTraslado = False + Pago.Referencia = DrPago("Folio").ToString() + Pago.CveVentaAmortizacion = DrPago("CveVenta").ToString().ToEntero() + Pago.TipoPago = DrPago("TipoPago").ToString() + Pago.CveClientePago = ObjFactura.CveCliente + + ErrorPrepoliza = ClsPaginas.AplicaPrePolizaPagoVenta(VentaActual, Pago, ObjFactura.CvePrePoliza, ObjConta, AplicarConceptoAplicacion:=True) + End If + + If ErrorPrepoliza Then + Exit For + End If + Next + End If + + + If ErrorPrepoliza Then + Return ErrorPrepoliza + End If + End If + Dim DT As DataTable Dim CvePlantilaPoliza As Integer Dim PorcentajeAmortizacion As Decimal = 0 @@ -4206,6 +4267,7 @@ Namespace Modelos 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO 'SE DEBE DE EXCLUIR CUANDO ES REFACTURACIÓN If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso CveEstatusRefacturacion = 0 AndAlso Not SeCancelaRemisionProceso AndAlso DtRemisionesRelacionadas IsNot Nothing Then ' se debe de excluir cuando es refacturación + For Each Dr As DataRow In DtRemisionesRelacionadas.Rows Dim DebeCancelar As Boolean = CancelarRemisiones AndAlso ListaRemisionesCancelar.Any(Function(CveRemision) CveRemision = Dr("CveVenta").ToString.ToEntero()) @@ -5427,7 +5489,7 @@ Namespace Modelos ''' ''' ''' - Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje + Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional AplicaCancelacionConPagos As Boolean = False) As MCancelacionVentaMensaje Dim ListaRemisionesCancelar As New List(Of Integer) Dim ObjVentas As New ClsVentas() If ObjVentas.GetRemisionesXCancelar(Me.CveVenta) Then @@ -5437,7 +5499,7 @@ Namespace Modelos End If ObjVentas.Dispose() - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) End Function ''' ''' Cancela la factura para poder realizar la refacturacion @@ -5452,15 +5514,16 @@ Namespace Modelos ''' ''' ''' - Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False) As MCancelacionVentaMensaje + Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional AplicaCancelacionConPagos As Boolean = False) As MCancelacionVentaMensaje 'Comprobante emitido con errores sin relación - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) End Function Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Boolean = False, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1, Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", - Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False) As MCancelacionVentaMensaje + Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, + Optional CancelarBoletos As Boolean = False, Optional AplicaCancelacionConPagos As Boolean = False) As MCancelacionVentaMensaje Dim Retorno As New MCancelacionVentaMensaje() Dim ErrorList As New List(Of String) @@ -5519,7 +5582,7 @@ Namespace Modelos End If 'VALIDA QUE LA FACTURA NO TENGA PAGOS - If Not AplicaRefacturacionConPagos AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then + If Not AplicaRefacturacionConPagos AndAlso Not AplicaCancelacionConPagos AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso ObjFactura.Pagado > 0 Then Retorno.Mensaje = "La factura no se puede cancelar debido a que tiene pagos vinculados." Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia @@ -5922,6 +5985,7 @@ Namespace Modelos Dim ObjContrato As New ClsContratos(ObjVentas.IniciaTransacSQL()) Dim ObjEventos As New ClsOIEventos(ObjVentas.IniciaTransacSQL()) Dim ObjAcum As New ClsAcumuladores(ObjVentas.IniciaTransacSQL()) + Dim ObjClientes As New ClsClientes(ObjVentas.IniciaTransacSQL()) Try If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then @@ -5933,7 +5997,7 @@ Namespace Modelos End If 'CUANDO LA CANCELACION ESTA EN PROCESO NO DEBE REALIZAR NADA DE ESTE PROCESO - If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then + If Not AplicaRefacturacionConPagos AndAlso (((((ObjFactura.Saldo > 0 OrElse AplicaCancelacionConPagos) AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then 'CUANDO SE CANCELA, LA PÓLIZA DEBE DE SER DE DIARIO CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, CancelacionFecha, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3, TipoContable:=ObjFactura.TipoContable) @@ -5957,7 +6021,8 @@ Namespace Modelos 'CANCELA PREPOLIZA If Not ErrorCancelar Then ErrorCancelar = ProcesoPrepolizas(ObjFactura, ObjConta, -1, ObjFactura.DtDetalle, -1, ObjBancos, ObjVentas, ObjEventos, DtRemisionesRelacionadas:=DtRemisionesRelacionadas, SeCancelaRemisionProceso:=SeCancelaRemisionProceso, - CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario, FechaCancelacion:=CancelacionFecha) + CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion, ObjInventario:=ObjInventario, FechaCancelacion:=CancelacionFecha, + ObjClientes:=ObjClientes, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) MensajeError = "Ocurrió un error al generar la prepoliza de cancelación." End If diff --git a/Empresas/119/Formatos/RepIVA.rpt b/Empresas/119/Formatos/RepIVA.rpt index 214b40af6..dac02e363 100644 Binary files a/Empresas/119/Formatos/RepIVA.rpt and b/Empresas/119/Formatos/RepIVA.rpt differ diff --git a/Empresas/186/Formatos/TrasladoAngeles.rdlc b/Empresas/186/Formatos/TrasladoAngeles.rdlc index 5879f7fec..d42c8d3da 100644 --- a/Empresas/186/Formatos/TrasladoAngeles.rdlc +++ b/Empresas/186/Formatos/TrasladoAngeles.rdlc @@ -780,7 +780,6 @@ =IIf(rownumber(nothing) = 1, "2pt", "0pt") - true @@ -1588,7 +1587,7 @@ - 0.33542cm + 0.2825cm @@ -1972,7 +1971,7 @@ DsInventarios 0.14111cm 0.10068cm - 3.1562cm + 3.10328cm 25.45761cm + + 4.79214cm + 0.10068cm + 0cm + 25.72414cm + 2 + + + + 1.88667in - 3.8269cm + 2.5569cm true true @@ -2588,7 +2599,7 @@ Municipio y/o Delegación: Textbox21 - 1.37766cm + 0.74266cm 5.68986cm 0.50243cm 5.79375cm @@ -2624,7 +2635,7 @@ Municipio y/o Delegación: Textbox21 - 1.37766cm + 0.74266cm 14.40467cm 0.50243cm 5.78664cm @@ -2675,9 +2686,9 @@ Municipio y/o Delegación: Textbox21 - 1.66375cm + 1.02875cm 5.69781cm - 1.2cm + 0.82958cm 5.78664cm 2 @@ -2726,9 +2737,9 @@ Municipio y/o Delegación: Textbox21 - 1.6632cm + 1.0282cm 14.41177cm - 1.2cm + 0.82958cm 5.78664cm 3 @@ -2763,7 +2774,7 @@ Municipio y/o Delegación: Textbox22 - 0.07331cm + 0.04156cm 5.69781cm 0.6cm 5.78664cm @@ -2800,7 +2811,7 @@ Municipio y/o Delegación: Textbox22 - 0.07331cm + 0.04156cm 14.41177cm 0.6cm 5.78664cm @@ -2835,7 +2846,7 @@ Municipio y/o Delegación: Textbox21 - 0.45106cm + 0.41931cm 10.04017cm 0.63528cm 5.78664cm @@ -2886,9 +2897,9 @@ Municipio y/o Delegación: Textbox21 - 1.6632cm + 1.0282cm 10.04727cm - 1.2cm + 0.82958cm 5.78664cm 7 @@ -2923,7 +2934,7 @@ Municipio y/o Delegación: Textbox22 - 0.07331cm + 0.04156cm 10.04727cm 0.6cm 5.78664cm @@ -2971,7 +2982,7 @@ Municipio y/o Delegación: Textbox29 - 3.40709cm + 2.13709cm 0.10068cm 0.41981cm 5.78083cm @@ -3009,7 +3020,7 @@ Municipio y/o Delegación: Textbox31 - 3.40709cm + 2.13709cm 11.33129cm 0.41981cm 5.13762cm @@ -3035,23 +3046,12 @@ Municipio y/o Delegación: - - 0.13678cm - 0cm - 25.72414cm - 12 - - - - - 3.26597cm + 1.99597cm 0.10068cm 0cm 25.76024cm - 13 + 12 @@ -3077,11 +3077,11 @@ Municipio y/o Delegación: Textbox10 - 3.40709cm + 2.13709cm 23.00537cm 0.41981cm 2.55292cm - 14 + 13 diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 47dc52e56..9db0e3af6 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -695,7 +695,7 @@ Partial Class Inventarios_EntregaAlmacen TipoMovimiento = If(TipoDocto.Contiene({"Rem", "Ped", "Ing", "Ped", "PeC", "Ant"}) And (EsDevolucionVenta = 0 Or CveVentaAD > 0), 1, 2) If UsuarioActual.Empresa.Funcionalidad(578).ToEntero = 1 AndAlso TipoDocto.Contiene("Ped", "Ing") Then - TxtObservaciones.Text = $"Dr. {drE("Medico").ToString}{vbCrLf}Cx. {drE("Procedimiento").ToString}{vbCrLf}F. Cirugía {drE("FechaEjecucion").ToString.ToDateTime.ToString("dd/MM/yyyy HH:mm")}{vbCrLf}H. {drE("Sucursal").ToString}{vbCrLf}" + TxtObservaciones.Text = $"Dr. {drE("Medico").ToString}{vbCrLf}Cx. {drE("Procedimiento").ToString}{vbCrLf}F. Cirugía {drE("FechaParaSurtir").ToString.ToDateTime.ToString("dd/MM/yyyy HH:mm")}{vbCrLf}H. {drE("Sucursal").ToString}{vbCrLf}" TxtObservaciones.Rows = 4 End If @@ -2258,8 +2258,22 @@ Partial Class Inventarios_EntregaAlmacen If ObjInventario.GetExistenciasPSXML(StrXML.ToString(), DdlAlmacen.SelectedValue.ToEntero(), TxtFecha.Text.ToDateTime.ToString("yyyy/MM/dd HH:mm"), CveSubProyecto, CveVendedor, If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), If(TipoEntrega = 2, 1, -1), UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then If ObjInventario.DtResultados.Rows.Count > 0 Then TieneErrorExistencia = True - For Each Dr As DataRow In ObjInventario.DtResultados.Rows - TextoError.AppendFormat(" - {0} Existencia: {1:#,##0.##}
", Dr("CodigoPS"), Dr("Existencia")) + For Each Dr As DataRow In ObjInventario.DtResultados.Rows + + Dim SerieLoteCaducidad As String = "," + If Dr("Serie").ToString.Trim.Length > 0 AndAlso Dr("Serie").ToString.Trim <> "-1" Then + SerieLoteCaducidad = $" Serie: { Dr("Serie").ToString.Trim}" + End If + If Dr("Lote").ToString.Trim.Length > 0 AndAlso Dr("Lote").ToString.Trim <> "-1" Then + SerieLoteCaducidad = $"{SerieLoteCaducidad} Lote: {Dr("Lote").ToString.Trim}" + End If + If Dr("FechaCaducidad").ToString.Trim.Length > 0 AndAlso Dr("FechaCaducidad").ToString.Trim <> "-1" Then + SerieLoteCaducidad = $"{SerieLoteCaducidad} Caducidad: { Dr("FechaCaducidad").ToString.Trim.ToDate.ToString("dd/MM/yyyy")}" + End If + + TextoError.AppendFormat(" - {0} Existencia: {1:#,##0.##} {2}
", Dr("CodigoPS"), Dr("Existencia"), If(SerieLoteCaducidad <> ",", SerieLoteCaducidad, "")) + + Next End If Else diff --git a/Ventas/PVCobranza.aspx.vb b/Ventas/PVCobranza.aspx.vb index 5d2e39164..da99bde02 100644 --- a/Ventas/PVCobranza.aspx.vb +++ b/Ventas/PVCobranza.aspx.vb @@ -397,7 +397,7 @@ Partial Class Ventas_PVCobranza If DbRowVenta IsNot Nothing Then Dim VentaActual As New Venta(UsuarioActual) VentaActual.CveVenta = CveVenta - + VentaActual.TipoDocto = DbRowVenta("TipoDocto").ToString VentaActual.Fecha = DbRowVenta("Fecha").ToString.ToDate VentaActual.CveCliente = DbRowVenta("CveCliente").ToString.ToEntero VentaActual.CveMoneda = DbRowVenta("CveMoneda").ToString.ToEntero @@ -422,10 +422,30 @@ Partial Class Ventas_PVCobranza Dim SaldoTotalInicial As Decimal = DbRowVenta("Saldo").ToString.ToDecimal Dim PagoAplicado As Decimal = 0 - Dim ObjConta As New ClsContabilidad - Dim ObjIE As New ClsBancos(ObjConta.IniciaTransacSQL()) - Dim ObjVentas2 As New ClsVentas(ObjConta.IniciaTransacSQL()) + Dim ObjVentas2 As New ClsVentas() + Dim ObjIE As New ClsBancos(ObjVentas2.IniciaTransacSQL()) + Dim ObjConta As New ClsContabilidad(ObjVentas2.IniciaTransacSQL()) + Dim ObjClientes As New ClsClientes(ObjVentas2.IniciaTransacSQL()) + + Dim respFactura As Modelos.Factura.MMensajeFactura = Nothing + Try + 'FACTURAR LA REMISION PARA HACER EL PAGO + If UsuarioActual.CveEmpresa = 193 AndAlso VentaActual.TipoDocto = "Rem" Then + respFactura = GenerarFactura(VentaActual, ObjVentas2, ObjClientes) + + If respFactura Is Nothing Then + MsgError = "Ocurrío un error al generar la factura" + ElseIf (respFactura IsNot Nothing AndAlso respFactura.Mensajes.Count > 0) AndAlso respFactura.TieneError Then + MsgError = respFactura.Mensajes(0) + End If + + 'REALIZAR EL PAGO EN LA FACTURA + If respFactura IsNot Nothing AndAlso Not respFactura.TieneError Then + CveVenta = respFactura.CveVenta + End If + End If + CvePrePoliza = ObjConta.AddPrePolizas("PVCobranza", 11, 0, 0, 1, Fecha, $"Pago {VentaActual.SerieFolio}", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) If CvePrePoliza > 0 Then @@ -487,21 +507,41 @@ Partial Class Ventas_PVCobranza End Try If MsgError = "" Then - ObjConta.Commit() - Alert($"Pago Registrado correctamente.

Imprimir ticket", TipoMensaje.MsgInformacion) + ObjVentas2.Commit() + + 'SI SE GENERO FACTURA DE INGRESO, TIMBRARLA DESPUES DE REALIZAR EL PAGO + If respFactura IsNot Nothing Then + If Not respFactura.Factura.TimbrarFactura() Then + Alert("La factura no se pudo timbrar", TipoMensaje.MsgAdvertencia) + End If + End If + + Dim msBuild As New StringBuilder() + + If respFactura IsNot Nothing Then + msBuild.Append($"Pago Registrado correctamente.") + For Each m In respFactura.Mensajes + msBuild.AppendFormat("
{0}", m) + Next + Else + msBuild.Append($"Pago Registrado correctamente.

Imprimir ticket") + End If + + Alert(msBuild.ToString(), TipoMensaje.MsgInformacion) Else - ObjConta.RollBack() + ObjVentas2.RollBack() Alert(MsgError, TipoMensaje.MsgError) End If + ObjVentas2.Dispose() ObjConta.Dispose() ObjIE.Dispose() - ObjVentas2.Dispose() + ObjClientes.Dispose() If MsgError = "" Then Try If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - ImpresionDirectaPDF(HdnCveVenta.Value.ToEntero) + ImpresionDirectaPDF(CveVenta) End If PnlContado.Visible = False @@ -517,6 +557,113 @@ Partial Class Ventas_PVCobranza End Sub + Private Function GenerarFactura(ByRef VentaRemision As Venta, ByRef ObjVentas As ClsVentas, ByRef ObjClientes As ClsClientes) As Modelos.Factura.MMensajeFactura + Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing + + Dim DtRemisiones As New DataTable + DtRemisiones.Columns.Add(New DataColumn("CveVenta", GetType(Integer))) + DtRemisiones.Columns.Add(New DataColumn("SerieFolio", GetType(String))) + + DtRemisiones.Rows.Add({VentaRemision.CveVenta, VentaRemision.SerieFolio}) + + Dim RemisionesLista As New List(Of Integer) + RemisionesLista.Add(VentaRemision.CveVenta) + + Dim DtRemisionesPS As New DataTable() + Dim DtPagosFacturaGlobal As New DataTable() + + If ObjClientes.GetVentasRemisionesTotales(VentaRemision.CveCliente, VentaRemision.CveVenta.ToString(), 1) Then + DtRemisionesPS = ObjClientes.DtResultados.Copy() + End If + + Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, VentaRemision.CveSubProyecto, VentaRemision.CveCliente, VentaRemision.CveMoneda, "Ing") + + ObjFactura.RemisionesLista = RemisionesLista + ObjFactura.DtRemisionesPS = DtRemisionesPS + ObjFactura.DtRemisiones = DtRemisiones + + For Each Dr As DataRow In ObjFactura.DtRemisionesPS.Rows + ObjFactura.AgregarPS(Dr("CvePS").ToString().ToEntero(), Dr("Cantidad").ToString().ToDecimal(), Dr("PU").ToString().ToDecimal(), Dr("Descuento").ToString().ToDecimal, Dr("Obs").ToString(), CveUM:=Dr("CveUM").ToString().ToEntero(), + CveProyecto:=Dr("CveProyecto").ToString().ToEntero(), CveSubProyecto:=Dr("CveSubProyecto").ToString().ToEntero(), CveVentaDetallePadre:=Dr("CveVentaDetalle").ToString().ToEntero(), CveVentaDetalleRemision:=Dr("CveVentaDetalle").ToString().ToEntero(), + PorcentajeIVA:=Dr("PorcentajeIVA").ToString().ToDecimal()) + Next + + ObjFactura.GenerarSalidaAlmacen = True + ObjFactura.DtInventario = ObjFactura.DtDetalle.FiltraParametros("CveTipoPS = 2").Copy() + ObjFactura.CveAlmacen = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveAlmacen", $"CveTipoAlmacen = 1 AND CveSubProyecto = {VentaRemision.CveSubProyecto}").ToString().ToEntero() + + ObjFactura.CalculaTotales() + ObjFactura.PreparaTimbre() + + Dim SbAlert As New StringBuilder() + + Try + Retorno = ObjFactura.EmitirFactura(False, Transac:=ObjVentas.IniciaTransacSQL(), Modulo:="Cobranza/GuardarVenta") + Retorno.Factura = ObjFactura + + If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then + For Each msg In Retorno.Mensajes + SbAlert.AppendFormat("{0}
", msg) + Next + + SbAlert.AppendFormat("
", Encripta(String.Format("OP=VTA&CVEVENTA={0}&PAG=1&GUARDAR=1", Retorno.CveVenta))) + Else + SbAlert.Append("Ocurrió un error al generar la factura") + End If + Catch ex As Exception + SbAlert.Append("Ocurrió un error al generar el documento") + GuardaLog(ex.ToString()) + End Try + + If Retorno IsNot Nothing AndAlso Retorno.Mensajes IsNot Nothing AndAlso Retorno.Mensajes.Count > 0 Then + Retorno.Mensajes.Clear() + Retorno.Mensajes.Add(SbAlert.ToString()) + + If Not Retorno.TieneError Then + 'CONVERTIR LA REMISION EN OBJETO DE FACTURA DE INGRESO, PARA HACER EL PAGO EN LA FACTURA + VentaRemision = Nothing + + If ObjVentas.GetVenta(Retorno.CveVenta, UsuarioActual.CveEmpresa) Then + Dim DbRowVenta = ObjVentas.DtResultados.Copy().FiltroPrimero("") + + If DbRowVenta IsNot Nothing Then + Dim VentaActual As New Venta(UsuarioActual) + VentaActual.CveVenta = Retorno.CveVenta + VentaActual.TipoDocto = DbRowVenta("TipoDocto").ToString + VentaActual.Fecha = DbRowVenta("Fecha").ToString.ToDate + VentaActual.CveCliente = DbRowVenta("CveCliente").ToString.ToEntero + VentaActual.CveMoneda = DbRowVenta("CveMoneda").ToString.ToEntero + VentaActual.SerieFolio = DbRowVenta("SerieFolio").ToString + VentaActual.ClienteNombre = DbRowVenta("ClienteNombre").ToString + VentaActual.TC = DbRowVenta("TipoCambio").ToString.ToDecimal + VentaActual.Total = DbRowVenta("Total").ToString.ToDecimal + VentaActual.IVA = DbRowVenta("IVA").ToString.ToDecimal + VentaActual.IEPS = DbRowVenta("IEPS").ToString.ToDecimal + VentaActual.RetIVA = DbRowVenta("RetIVA").ToString.ToDecimal + VentaActual.RetISR = DbRowVenta("RetISR").ToString.ToDecimal + + VentaActual.PorcentajeIVA = DbRowVenta("PorcentajeIVA").ToString.ToDecimal + VentaActual.UsuarioActual = UsuarioActual + VentaActual.CveSubProyecto = DbRowVenta("CveSubProyecto").ToString.ToEntero + + VentaRemision = VentaActual + End If + + End If + + End If + Else + Retorno = New Modelos.Factura.MMensajeFactura() + Retorno.TieneError = True + If SbAlert.Length = 0 Then + SbAlert.Append("Ocurrió un error al generar la factura") + End If + Retorno.Mensajes.Add(SbAlert.ToString()) + End If + + Return Retorno + End Function + Private Function RegistraIE(Metodo As Integer, CveBancoCuenta As Integer, ImportePago As Decimal, Fecha As Date, CvePrePoliza As Integer, VentaActual As Venta, ByRef ObjIE As ClsBancos, ByRef ObjConta As ClsContabilidad, ByRef ObjVentas As ClsVentas) As String Dim Retorno As String = "" Dim CveIEPago As Integer = 0 @@ -761,17 +908,25 @@ Partial Class Ventas_PVCobranza Dim ExistePDF As Boolean = False Dim ArchivoPDF As String = "" + + Dim AplicaTicket As Boolean = ObjFactura.CveEmpresa.Contiene(190, 192) + If ObjFactura.TipoDocto = "Ing" Then - ArchivoPDF = String.Format("{0}/PDF/{1}/{2}_Ticket.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) + If AplicaTicket Then + ArchivoPDF = String.Format("{0}/PDF/{1}/{2}_Ticket.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) + Else + ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) + End If Else ArchivoPDF = String.Format("{0}/PDF/{1}/{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) End If + If File.Exists(ArchivoPDF) AndAlso ObjFactura.TipoDocto = "Rem" Then ExistePDF = True Else 'REGENERAR EL PDF Try - GenerarPDFVenta(CveVenta, AplicaPagare:="1", GuardarPDF:=True, RegenerarPDF:=True, DescargarArchivo:=False, EsTicket:=True) + GenerarPDFVenta(CveVenta, AplicaPagare:="1", GuardarPDF:=True, RegenerarPDF:=True, DescargarArchivo:=False, EsTicket:=AplicaTicket) If File.Exists(ArchivoPDF) Then ExistePDF = True End If diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 53090e7fb..a2e1f750a 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -631,10 +631,10 @@ - + Tipo de Venta: - + diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index b3ccd8f77..ee5f66057 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -5072,7 +5072,7 @@ Partial Class Ventas ' End If 'End If 'si utiliza cortes, y cajas, no permitir cancelar de días anteriores - If UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso DbRowVenta("Fecha").ToString.ToDate.ToShortDateString.ToDate < Now.ToShortDateString.ToDate Then + If UsuarioActual.CveRol <> 1 AndAlso UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso DbRowVenta("Fecha").ToString.ToDate.ToShortDateString.ToDate < Now.ToShortDateString.ToDate Then LbCancelarDocumento.Visible = False End If End If @@ -6173,6 +6173,10 @@ Partial Class Ventas TxtPaciente.Enabled = False TxtEpisodio.Enabled = False + TrVentasMedicas4.Visible = True + TxtFolioRemision.Text = DbRowVenta("Alfa1").ToString + + LblTipoVenta.Text = DbRowVenta("TipoVenta").ToString If DbRowVenta("FechaParaSurtir").ToString().ToDate() > DateTime.MinValue Then TrVentasMedicas2.Visible = True @@ -6181,12 +6185,9 @@ Partial Class Ventas TxtFechaOS.Text = DbRowVenta("FechaParaSurtir").ToString().ToDateTime().ToString("yyyy-MM-dd HH:mm").Replace(" ", "T") End If + End If - If DdlTipoDocto.SelectedValue.Contiene("Ing", "Rem") Then - TrVentasMedicas4.Visible = True - TxtFolioRemision.Text = DbRowVenta("Alfa1").ToString - End If End If End If End Using @@ -8612,6 +8613,9 @@ Partial Class Ventas 'If UsuarioActual.CveEmpresa = 119 Then ' e.Row.FCTextBox("TxtDescuento").Enabled = False 'End If + + + Else 'MODO NORMAL @@ -8760,11 +8764,13 @@ Partial Class Ventas End If If EsVentaMedica Then + GvPS.Rows(e.NewEditIndex).FCTextBox("TxtPrecio").Enabled = False - If DdlTipoComprobante.SelectedValue = "Cot" Then + If DdlTipoComprobante.SelectedValue = "Cot" Or RBLTipoVenta.SelectedValue.ToEntero = 1 Then GvPS.Rows(e.NewEditIndex).FCTextBox("TxtPrecio").Enabled = True End If + End If If CveCicloComercial > 0 Then @@ -17676,7 +17682,7 @@ Partial Class Ventas If EsVentaMedica Then TxtPrecio.Enabled = False - If UsuarioActual.CveUsuario = 3986 Then + If UsuarioActual.CveUsuario = 3986 Or RBLTipoVenta.SelectedValue.ToEntero = 1 Then TxtPrecio.Enabled = True End If @@ -22799,8 +22805,9 @@ Partial Class Ventas End If End If + TxtAtencionA.Enabled = True - + UpCliente.Update() UPPVentas.Update() UpPS.Update() UpCliente.Update() @@ -23473,8 +23480,8 @@ Partial Class Ventas ' DdlCuentaTarjetaDebito.DataSource = DtCC.FiltraParametros(String.Format("CveMoneda = {0} AND (CveTipoCuenta <> 1 OR TieneTerminal = 1)", If(DdlMoneda.SelectedValue.ToEntero() <= 0, 1, DdlMoneda.SelectedValue.ToEntero()))) 'End If - If UsuarioActual.Empresa.Funcionalidad(109) = "1" Then - DdlCuentaTransferencia.DataSource = DtCC.FiltraParametros(String.Format("CveMoneda = {0}", If(DdlMoneda.SelectedValue.ToEntero() <= 0, 1, DdlMoneda.SelectedValue.ToEntero()))) + If UsuarioActual.Empresa.Funcionalidad(109) = "1" OrElse UsuarioActual.CveEmpresa = 195 Then + DdlCuentaTransferencia.DataSource = DtCC.FiltraParametros(String.Format("CveMoneda = {0} AND CveTipoCuenta = 1", If(DdlMoneda.SelectedValue.ToEntero() <= 0, 1, DdlMoneda.SelectedValue.ToEntero()))) Else DdlCuentaTransferencia.DataSource = DtCC.FiltraParametros(String.Format("CveMoneda = {0} AND CveTipoCuenta <> 1", If(DdlMoneda.SelectedValue.ToEntero() <= 0, 1, DdlMoneda.SelectedValue.ToEntero()))) End If @@ -25595,7 +25602,13 @@ Partial Class Ventas ChkDevAlm.Checked = True End If - resp = ObjFacturaCancelacion.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion) + Dim AplicaCancelacionConPagos As Boolean = False + + If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.Empresa.Funcionalidad(109) = "1" AndAlso ObjFactura.TipoDocto.Contiene("Ing", "Rem") AndAlso Not EsRefacturacion AndAlso ObjFactura.Pagado > 0 Then + AplicaCancelacionConPagos = True + End If + + resp = ObjFacturaCancelacion.CancelarFactura(ChkDevAlm.Checked, ListaRemisionesCancelar, CveMotivoCancelacion:=DdlMotivoCancelacion.SelectedValue.ToEntero(), Motivo:=TxtMotivoCancelacion.Text.Trim(), CveEstadoCancelacion:=Me.CveEstadoCancelacion, AplicaCancelacionConPagos:=AplicaCancelacionConPagos) strMensaje.Append(resp.Mensaje) Dim DtBonificaciones As DataTable = Nothing @@ -37779,6 +37792,10 @@ Partial Class Ventas AsignaAlmacenWS() 'CargaPS(-1, DdlPS) End If + If RBLTipoVenta.SelectedValue.Contiene("1") Then + TxtPrecio.Enabled = True + UpPS.Update() + End If RegistraScript("$('#DvModalTipoVenta').modal('hide');") UpCliente.Update()