diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 0e0b12935..4303c4e15 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -1816,10 +1816,10 @@ Namespace Modelos End Sub 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) As Boolean + 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) As Boolean Dim ErrorPrepoliza As Boolean = False Try - Dim DT As DataTable Dim CvePlantilaPoliza As Integer Dim PorcentajeAmortizacion As Decimal = 0 @@ -2426,10 +2426,6 @@ Namespace Modelos ErrorPrepoliza = True Exit For End If - - 'If Not ObjConta.AddPrePolizasDetalle(ObjFactura.CvePrePoliza, TipoMovimiento, importeMovimiento, Referencia, ConceptoContable, Concepto, FechaMovimiento, IdCtaContable, -1, CveVenta:=ObjFactura.CveVenta, CveCliente:=ObjFactura.CveCliente, CveVentaAmortizacion:=row2.DataKey("CveVentaNC").ToString.ToEntero, ImporteMX:=importeMovimiento * tipoCambio, ImporteME:=If(tipoCambio = 1, 0, importeMovimiento), CveCuenta:=CveCuenta, CveSubProyecto:=CveSubProyectoContabilizar) Then - ' ErrorPrepoliza = True - 'End If End If End If Next @@ -2488,8 +2484,6 @@ Namespace Modelos CveVentaAmortizacionAplicar = ObjFactura.CveVenta End If - ' If UsuarioActual.CveEmpresa = 119 Then - 'código fijo en base el porcentaje iva, que se afecten las clasificaciones For i = 0 To TmpDTDetalle.Rows.Count - 1 @@ -2505,8 +2499,6 @@ Namespace Modelos Next - ' End If - DT = TmpDTDetalle.FiltraParametros($"CvePS <> {ObjFactura.CvePSAmortizacion}", "", {"CveClasificacion", "CveSubProyecto"}) If DT.Rows.Count > 0 Then @@ -2893,26 +2885,31 @@ Namespace Modelos 'Si es Facturacion de una remision cancelamos, traspasamos saldos y agregamos evento a la bitacora If (DtRemisionesRelacionadas IsNot Nothing AndAlso DtRemisionesRelacionadas.Rows.Count > 0) OrElse ObjFactura.RemisionesLista.Count > 0 Then - If ObjFactura.RemisionesLista.Count > 0 Then - For Each CveRemision As Integer In RemisionesLista - If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then - ErrorPrepoliza = True - End If + If Not ObjFactura.TipoDocto.Contiene("Ing", "Ant") Then + ErrorPrepoliza = True + ErrorList.Add("No se pueden facturar las remisiones, con ese tipo de comprobante seleccionado") + Else + If ObjFactura.RemisionesLista.Count > 0 Then + For Each CveRemision As Integer In RemisionesLista + If Not ObjConta.TraspasarSaldosRemision(CveRemision, ObjFactura.CvePrePoliza, ObjFactura.CveVenta) Then + ErrorPrepoliza = True + End If - 'Factura - If Not ObjEventos.AddEventoBitacora($"Sustituye a: Folio Factura", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then - ErrorPrepoliza = True - End If + 'Factura + If Not ObjEventos.AddEventoBitacora($"Sustituye a: Folio Factura", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then + ErrorPrepoliza = True + End If - 'Remision - If Not ObjEventos.AddEventoBitacora($"Refacturacion en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then - ErrorPrepoliza = True - End If + 'Remision + If Not ObjEventos.AddEventoBitacora($"Refacturacion en: {ObjFactura.Folio}", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then + ErrorPrepoliza = True + End If - If ErrorPrepoliza Then - Exit For - End If - Next + If ErrorPrepoliza Then + Exit For + End If + Next + End If End If End If @@ -2923,7 +2920,8 @@ Namespace Modelos End If 'REGRESA SALDO A LAS REMISIONES QUE SE FACTURARON EN EL INGRESO QUE SE ESTA CANCELANDO - If ObjFactura.TipoDocto = "Ing" And ValorMultiplicador = -1 AndAlso NuevaFactura <> 1 AndAlso Not SeCancelaRemisionProceso AndAlso DtRemisionesRelacionadas IsNot Nothing Then ' se debe de excluir cuando es refacturación + '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()) @@ -2943,23 +2941,40 @@ Namespace Modelos If ObjConta.ValidacionPrePolizaCuadre(ObjFactura.CvePrePoliza, 2) Then If ObjConta.ValorPolizaDescuadre > 0 Then If ObjConta.ValorPolizaDescuadre = 2 Then + ErrorList.Add(ObjConta.MensajePolizaDescuadre) ErrorPrepoliza = True - Alert(ObjConta.MensajePolizaDescuadre, TipoMensaje.MsgError) GuardaLogAD($"Ventas/Ventas-ProcesoPrePolizas | Error:{ObjConta.MensajePolizaDescuadre} Diferencia:{ObjConta.ValorDiferencia} | CvePrePoliza:{ObjFactura.CvePrePoliza}", "LogPrePolizas") End If - End If End If 'Simplificacion de PrePolizas If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then If Not ObjConta.PrePolizaSimplificacion(ObjFactura.CvePrePoliza, UsuarioActual.CveEmpresa) Then - Alert("No se pudo simplificar los movimientos", TipoMensaje.MsgError) + ErrorList.Add("No se pudo simplificar los movimientos") + ErrorPrepoliza = True + End If + End If + + 'ContPAQ El movimiento 1 es el de Venta + Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" + + If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "NC") Then + AutoConta = False + End If + + If AutoConta Then + If idCuentaContabilizacion > 0 Then + If Not ObjConta.ContabilizarPrePoliza(ObjFactura.CvePrePoliza, ObjFactura.CveUsuario, UsuarioActual.Empresa, ObjConta:=objContPaqi) Then + ErrorList.Add("Ocurrio un Error al contabilizar, pongase en contacto con Soporte Técnico") + 'ErrorPrepoliza = True + End If + Else + ErrorList.Add(String.Format("Falta asignación de las siguientes cuentas contables: {0}", CuentasContablesInvalidas)) + 'ErrorPrepoliza = True End If End If - - Catch ex As Exception GuardaLog(ex.ToString()) ErrorPrepoliza = True @@ -3787,6 +3802,7 @@ Namespace Modelos End If Dim CveEstatusRefacturacion As Integer = If(ObjFactura.CveEstatusRefacturacion <= 0, 0, ObjFactura.CveEstatusRefacturacion) + Dim CancelacionFecha As Date Dim FolioFiscal As String = ObjFactura.FolioFiscal Dim CancelacionAcuse As String = "" @@ -3925,6 +3941,15 @@ Namespace Modelos Retorno.CveEstatus = CveEstatus + '0 Sin Refacturacion, 1 Refacturacion en Proceso, 3. Refacturación en proceso sin aceptación + If EsRefacturacion AndAlso CveEstatusRefacturacion = 0 Then + If CveEstatus = 5 Then + CveEstatusRefacturacion = 3 ' refacturación en proceso sin autorización de cancelación + Else + CveEstatusRefacturacion = 1 ' refacturación en proceso con autorización de cancelación + End If + End If + Dim ObjVentas As New ClsVentas() : ObjVentas.IniciaTransacSQL() Dim ObjConta As New ClsContabilidad(ObjVentas.IniciaTransacSQL()) Dim ObjBancos As New ClsBancos(ObjVentas.IniciaTransacSQL()) @@ -3932,11 +3957,11 @@ Namespace Modelos Dim ObjContrato As New ClsContratos(ObjVentas.IniciaTransacSQL()) Dim ObjEventos As New ClsOIEventos(ObjVentas.IniciaTransacSQL()) Dim ObjAC As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC Then + + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200) = "1" Then ObjAC = New ClsContPAQi(UsuarioActual.Empresa) : ObjAC.IniciaTransacSQL() End If - Try If ObjFactura.TipoDocto.Contiene("Egs", "Dev") Then CvePlantillaPoliza = 7 @@ -3965,8 +3990,8 @@ 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) + ErrorCancelar = ProcesoPrepolizas(ObjFactura, ObjConta, -1, ObjFactura.DtDetalle, ObjAC, -1, ObjBancos, ObjVentas, ObjEventos, DtRemisionesRelacionadas:=DtRemisionesRelacionadas, SeCancelaRemisionProceso:=SeCancelaRemisionProceso, + CancelarRemisiones:=CancelarRemisiones, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusRefacturacion:=CveEstatusRefacturacion) MensajeError = "Ocurrió un error al generar la prepoliza de cancelación." End If @@ -4095,15 +4120,14 @@ Namespace Modelos Dim AutoConta As Boolean = UsuarioActual.Empresa.Funcionalidad(200) = "1" - If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto = "Ant" Then + If UsuarioActual.CveEmpresa = 119 AndAlso ObjFactura.TipoDocto.Contiene("Ant", "Rem", "RNC", "Cot", "Ped", "Pd2", "PA", "NC") Then AutoConta = False End If If AutoConta And Not ErrorCancelar Then - Dim ObjContPaq = New ClsContPAQi(UsuarioActual.Empresa) If IdCtaContable > 0 Then - If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjContPaq) Then + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaDev, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then ErrorCancelar = True MensajeError = "Ocurrió un error al contabilizar la prepoliza." End If @@ -4111,7 +4135,6 @@ Namespace Modelos Alert(String.Format("No se puede contabilizar ya que falta asignación de las cuentas contables"), TipoMensaje.MsgAdvertencia) End If - ObjContPaq.Dispose() End If Else @@ -4241,17 +4264,16 @@ Namespace Modelos End If End If - Else - 'MARCA LA VENTA PARA REALIZAR LA DEVOLUCION POSTERIORMENTE - If Not ErrorCancelar Then - If RealizarDevolucionAlmacen AndAlso CveAlmacenDevolucion > 0 Then - If Not ObjVentas.UpdateVentaRealizarDevolucion(CveVenta, RealizarDevolucionAlmacen, CveAlmacenDevolucion) Then - ErrorCancelar = True - MensajeError = "Ocurrió un error al marcar la venta para devolución" - End If + End If + + 'MARCA LA VENTA PARA REALIZAR LA DEVOLUCION POSTERIORMENTE + If Not ErrorCancelar Then + If RealizarDevolucionAlmacen AndAlso CveAlmacenDevolucion > 0 Then + If Not ObjVentas.UpdateVentaRealizarDevolucion(CveVenta, RealizarDevolucionAlmacen, CveAlmacenDevolucion) Then + ErrorCancelar = True + MensajeError = "Ocurrió un error al marcar la venta para devolución" End If End If - End If 'ACTUALIZA ESTATUS @@ -4262,14 +4284,6 @@ Namespace Modelos Case "Com" CveEstatus = 9 End Select - '0 Sin Refacturacion, 1 Refacturacion en Proceso, 3. Refacturación en proceso sin aceptación - If EsRefacturacion Then - If CveEstatus = 5 Then - CveEstatusRefacturacion = 3 ' refacturación en proceso sin autorización de cancelación - Else - CveEstatusRefacturacion = 1 ' refacturación en proceso con autorización de cancelación - End If - End If If CveEstatus.Contiene(4, 5) Then If Not ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion) Then