Correcion de remisiones en refacturacion, y habilitar la autocontabilidad

This commit is contained in:
2019-09-05 13:52:24 -07:00
parent 9a04b15004
commit bc3f9eb0a7

View File

@@ -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: <a href='/Ventas/Ventas.aspx?CveVenta={CveRemision}' target='_blank' class='Texto'>Folio Factura</a>", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then
ErrorPrepoliza = True
End If
'Factura
If Not ObjEventos.AddEventoBitacora($"Sustituye a: <a href='/Ventas/Ventas.aspx?CveVenta={CveRemision}' target='_blank' class='Texto'>Folio Factura</a>", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=ObjFactura.CveVenta) Then
ErrorPrepoliza = True
End If
'Remision
If Not ObjEventos.AddEventoBitacora($"Refacturacion en: <a href='/Ventas/Ventas.aspx?CveVenta={ObjFactura.CveVenta}' target='_blank' class='Texto'>{ObjFactura.Folio}</a>", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveRemision) Then
ErrorPrepoliza = True
End If
'Remision
If Not ObjEventos.AddEventoBitacora($"Refacturacion en: <a href='/Ventas/Ventas.aspx?CveVenta={ObjFactura.CveVenta}' target='_blank' class='Texto'>{ObjFactura.Folio}</a>", "-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