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