SHARE
TWEET

MinutaBuscarDocumentQueue

lesther312 Mar 15th, 2017 (edited) 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. USE [KOETE]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[MinutaBuscarDocumentQueue]    Script Date: 3/15/2017 10:13:32 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. --------------------------------------------------
  9. -- REGISTRO DE LA PROPIEDAD DE PR
  10. -- APLICACION: RIDPR
  11. -- PROPOSITO: Busca minutas por varios filtros
  12. -- POR: INVID, LLC
  13. -- FECHA: 6/24/2014
  14. --------------------------------------------------
  15.  
  16. ALTER PROCEDURE [dbo].[MinutaBuscarDocumentQueue]
  17.     --declare
  18.        @UsuarioId int,
  19.  
  20.        @Presentacion varchar(3) = '',
  21.        @EstatusId int,
  22.        @Demarcacion varchar(10),
  23.        @Finca varchar(50),
  24.        @Asiento varchar(30) = '@',
  25.  
  26.        @PageNumber int = 1,
  27.        @PageSize int = 100000
  28. AS
  29.  
  30. BEGIN
  31.        set @Presentacion = isnull(nullif(@Presentacion,''), '0')
  32.        set @demarcacion = isnull(nullif(@demarcacion,''), '0')
  33.        set @EstatusId = isnull(nullif(@EstatusId,''), '0')
  34.        set @finca = isnull(nullif(@finca,''), '0')
  35.  
  36.        declare @rol int = (select top 1 rolid from sistema.UsuarioRol where UsuarioId = @UsuarioId)
  37.        DECLARE @offset int = (@PageNumber - 1) * @PageSize
  38.  
  39.         --------------------------------------------------------------------------------------------------------------------
  40.         --presentadas
  41.         select a.UltimaBitacoraId as MaxBitacoraId,
  42.         b.MinutaId,
  43.         a.Id as AsientoId
  44.         , convert(int, null) as UsuarioAsignadoId
  45.         , convert(int, null) as CreadoPor
  46.         , convert(int, null) as MinutaCount
  47.         into #bitacora
  48.         from Asiento a
  49.         join Bitacora b
  50.             on b.Id = a.UltimaBitacoraId
  51.         join Minuta m
  52.             on b.MinutaId = m.Id
  53.         where b.UsuarioAsignadoId = @UsuarioId
  54.  
  55.         union
  56.         --------------------------------------------------------------------------------------------------------------------
  57.         --no presentadas
  58.         select BitacoraId,MinutaId,null,null,null,null
  59.         from (
  60.             select m.Id as MinutaId,
  61.             b.Id as BitacoraId,
  62.             b.AsientoId,
  63.             b.EstatusId,
  64.             row_number() over (partition by m.id order by b.id desc) as rownum
  65.             from Minuta m
  66.             cross apply(
  67.                 select top 1 bCInner.Id
  68.                 from Bitacora bCInner
  69.                 where bCInner.MinutaId = m.Id
  70.                 order by bCInner.id desc
  71.             )bC
  72.             join Bitacora b
  73.                 on b.Id = bc.Id
  74.             where b.UsuarioAsignadoId = @UsuarioId
  75.             and b.EstatusId = 1
  76.         )noPres
  77.         where rownum = 1
  78.  
  79.         ---- todas los max bitacora id de los asientos ya presentados ...
  80.         --select max(b.Id) as MaxBitacoraId, b.MinutaId, b.AsientoId
  81.         --, convert(int, null) as UsuarioAsignadoId
  82.         --, convert(int, null) as CreadoPor
  83.         --, convert(int, null) as MinutaCount
  84.         --from bitacora b with (nolock)
  85.         --where asientoid is not null
  86.         --group by MinutaId, AsientoId 
  87.  
  88.         --union
  89.         ---- todas las que aun no han sido presentadas - mismo query del robot, pero con la bitacoraid que no se usa allá.
  90.         --select min(BitacoraId), MinutaId, null, null, null, null
  91.         --from
  92.         --(
  93.         --  select
  94.         --      m.Id as MinutaId
  95.         --  , b.Id as BitacoraId
  96.         --  , b.AsientoId
  97.         --  , EstatusId
  98.         --  , row_number() over (partition by m.id order by b.id desc) as rownum
  99.         --  from Minuta m
  100.         --  join Bitacora b
  101.         --      on b.MinutaId = m.Id
  102.         --) allahu_akbar
  103.         --where EstatusId = 1
  104.         --and rownum = 1
  105.         --group by MinutaId
  106.  
  107.         --create index to speedup the process
  108.         alter table #bitacora alter column maxbitacoraid integer not null
  109.         create clustered index ix_maxbitacoraid on #bitacora (maxbitacoraid);
  110.  
  111.         update b2
  112.         set b2.UsuarioAsignadoId = b.UsuarioAsignadoId
  113.         ,   b2.CreadoPor = m.CreadoPor
  114.         from #bitacora b2
  115.         join bitacora b with (nolock)
  116.             on b.id = b2.maxbitacoraid
  117.         join minuta m with (nolock)
  118.             on m.id = b.MinutaId
  119.  
  120.  
  121.         delete #bitacora where MaxBitacoraId not in (
  122.         select MaxBitacoraId
  123.         from #bitacora b
  124.         where  1 = case
  125.                 when b.UsuarioAsignadoId = @UsuarioId then 1
  126.                 when b.CreadoPor = @UsuarioId and @rol = 3 then 1
  127.                 else 0 end
  128.  
  129.         )
  130.         --------------------------------------------------------------------------------------------------------------------
  131.  
  132.  
  133.        if @Asiento <> '@'
  134.        begin
  135.            
  136.             select  count(*) over() TotalRows
  137.                     ,@PageNumber PageNumber
  138.                     ,ceiling((count(*) over()) / cast(@PageSize as float)) TotalPages,  
  139.                     null as DocumentoYaPresentado,
  140.                
  141.                     EstatusId,Estatus,UsuarioAsignadoId,AsientoId,Asiento,Id,MinutaId,DocumentoEnAtraso,DocumentoLey216,OficialACargo,DatosAdicionalesNotario,
  142.                     NombreDocumentoId,NumeroRua,NombreNotario,AgenciaId,
  143.  
  144.                     convert(bit, case when UsuarioAsignadoId = @UsuarioId then 1 else 0 end) as EsMio,
  145.                     convert(bit, case when @rol in (1,2,3,4,5,6,10,12) then 1 else 0 end) as PuedoVer,
  146.  
  147.                     NumeroAffidavitCasoInstancia,
  148.                     LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  149.                     ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  150.                    
  151.                     TipoDocumentoId,
  152.                     TipoOrigenDocumentoId,
  153.                     TipoDocumento,
  154.  
  155.                     SegundoNombreNotario,
  156.                     PrimerApellidoNotario,
  157.                     SegundoApellidoNotario,
  158.                     EmailNotario,
  159.                     TelefonoNotario,
  160.                     DireccionPostalNotario,
  161.  
  162.                     TipoExpedicion, Razon,
  163.                     Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  164.                     FechaPresentacion,
  165.                     Fincas,
  166.                     TransaccionList,
  167.                     CreadoPor,
  168.                     CreadoPorRol,
  169.                     Modificado, ModificadoPor,
  170.  
  171.                     case when @rol = 2 then FechaDespacho else FechaAsignado end as FechaAsignado,
  172.  
  173.                     Email1,
  174.                     Email2,
  175.                     CreadoFull,
  176.                     CreadoEmail,
  177.                     Telematica,
  178.                     UsuarioAnterior
  179.                
  180.             from
  181.             (
  182.                     select row_number() over(partition by m.id, b.AsientoId order by b.id desc) RowNumber,
  183.                             max(case when b.EstatusId in (3,12) then b.creado else null end) over(partition by b.id) as FechaDespacho,
  184.                             max(b.EstatusId) over(partition by m.id) as MaxEstatusId,
  185.                             isnull(max(isnull(b.AsientoId,0)) over(partition by m.id),0) as MaxAsientoId,
  186.                             isnull(min(isnull(b.AsientoId,0)) over(partition by m.id),0) as MinAsientoId,
  187.  
  188.                             b.EstatusId,
  189.                             case when n.FechaCaducidad >= cast(getdate() as date) and n.FechaCaducidad <= dateadd(day, 5, cast(getdate() as date))
  190.                                 and b.EstatusId not in (7,9,11,6) then me.Estatus + ', Pendiente a caducar' else me.Estatus end as Estatus,
  191.  
  192.                             b.UsuarioAsignadoId,
  193.                             b.AsientoId,
  194.                             a.Asiento,
  195.  
  196.                             m.Id,
  197.                             m.Id MinutaId,
  198.                             m.DocumentoEnAtraso,
  199.                             m.DocumentoLey216,
  200.                             m.OficialACargo,
  201.                             m.DatosAdicionalesNotario,
  202.  
  203.                             m.SegundoNombreNotario,
  204.                             m.PrimerApellidoNotario,
  205.                             m.SegundoApellidoNotario,
  206.                             m.EmailNotario,
  207.                             m.TelefonoNotario,
  208.                             m.DireccionPostalNotario,
  209.                             m.Email1,
  210.                             m.Email2,
  211.                             td.Id TipoDocumentoId,
  212.                             TipoOrigenDocumentoId,
  213.                             td.Nombre TipoDocumento,
  214.  
  215.                             NombreDocumentoId,
  216.                             m.NumeroRua, NombreNotario, m.AgenciaId,
  217.  
  218.                             NumeroAffidavitCasoInstancia,
  219.                             LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  220.                             ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  221.                      
  222.                             TipoExpedicion, m.Razon,
  223.                             Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  224.                             FechaPresentacion,
  225.  
  226.                             m.Creado,
  227.                             --isnull(uc.Nombre, '')  + isnull(' ' + uc.PrimerApellido, '') as CreadoFull,
  228.                             usuarioAnterior.Nombre + ' ' + usuarioAnterior.SegundoNombre + ' ' + usuarioAnterior.PrimerApellido + ' ' + usuarioAnterior.SegundoApellido as CreadoFull,
  229.                             isnull(stuff((
  230.                             select distinct '|'
  231.                             + isnull(nullif(p.NumeroPropiedad,''),'?'), ' - ' + p.CodigoDemarcacion + ' ' + d.Nombre
  232.                             from dbo.Propiedad p with (nolock)
  233.                             join ux.MinutaPropiedad MP on MP.PropiedadId = P.Id
  234.                             join sistema.Demarcacion d on d.Codigo = p.CodigoDemarcacion
  235.                             where MP.MinutaId = m.Id
  236.                             for xml path ('')
  237.                             ), 1, 1, ''), '')  as Fincas,
  238.                         STUFF
  239.                         ((
  240.                                 select ', ' + tt.Descripcion
  241.                                 from Transaccion ti with (nolock)
  242.                                 left join sistema.TipoTransaccion tt with (nolock)
  243.                                     on tt.Id = ti.TipoTransaccionId
  244.  
  245.                                 where ti.MinutaId = m.Id
  246.                                 group by ti.Creado,tt.Descripcion
  247.                                 order by ti.Creado
  248.                                 for xml path ('')
  249.                         ), 1, 1, '')  as TransaccionList,
  250.                             m.CreadoPor,
  251.                             ur.RolId CreadoPorRol,
  252.  
  253.                             m.Modificado, m.ModificadoPor,
  254.  
  255.                             b.Creado AS FechaAsignado,
  256.                             uc.Email as CreadoEmail,
  257.                             m.Telematica,
  258.                             usuarioAnterior.Nombre + ' ' + usuarioAnterior.SegundoNombre + ' ' + usuarioAnterior.PrimerApellido + ' ' + usuarioAnterior.SegundoApellido as UsuarioAnterior
  259.                      
  260.                     FROM       dbo.Bitacora b with (nolock)
  261.                     join   #bitacora b2
  262.                             on b2.MaxBitacoraId = b.Id
  263.                     inner join dbo.Minuta m with (nolock)
  264.                             on  b.MinutaId = m.Id
  265.                             and 1 = case when @Presentacion = '0' then 1
  266.                                         when m.DocumentoEnAtraso = 1 and @Presentacion = 'PK' then 1
  267.                                         when m.DocumentoLey216   = 1 and @Presentacion = '216' then 1
  268.                                         when isnull(m.DocumentoEnAtraso,0) = 0 and isnull(m.DocumentoLey216,0) = 0 and @Presentacion = 'K' then 1
  269.                                         else 0 end
  270.  
  271.                     inner join [sistema].[MinutaEstatus] me with (nolock)
  272.                             on  me.Id = b.EstatusId
  273.  
  274.                     outer apply(
  275.                         select top 1 Id
  276.                         from Bitacora
  277.                         where MinutaId = m.Id
  278.                         and Id <> b2.MaxBitacoraId
  279.                         order by id desc
  280.                     )bo2
  281.  
  282.                     join dbo.Asiento a with (nolock)
  283.                             on b.AsientoId = a.Id
  284.                             and ((a.Asiento like '%' + @Asiento + '%' and @Asiento <> '@' and a.id is not null) or @Asiento = '@')
  285.  
  286.                     left join sistema.Usuario u with (nolock)
  287.                             on b.UsuarioAsignadoId = u.Id
  288.  
  289.                     left join sistema.Usuario uc with (nolock)
  290.                             on b.CreadoPor = uc.Id
  291.  
  292.                     left join Bitacora b3
  293.                             on b3.Id = bo2.Id
  294.                     left join sistema.Usuario usuarioAnterior
  295.                             on usuarioAnterior.Id = case when @rol = 2 and (b.EstatusId = 3 or b.EstatusId = 12) and b.EstatusSecundarioId is not null then b3.CreadoPor
  296.                                                       else b3.UsuarioAsignadoId end
  297.  
  298.                     left join sistema.UsuarioRol ur with (nolock)
  299.                             on m.CreadoPor = ur.UsuarioId
  300.  
  301.                     left join sistema.TipoDocumentoPresentado td with (nolock)
  302.                             on td.Id = m.NombreDocumentoId
  303.                     left join Notificacion n
  304.                             on n.AsientoId = a.Id
  305.                     where 1 = case when m.DocumentoEnAtraso = 1 and @Presentacion = 'PK' then 1
  306.                                     when m.DocumentoLey216   = 1 and @Presentacion = '216' then 1
  307.                                     when isnull(m.DocumentoEnAtraso,0) = 0 and isnull(m.DocumentoLey216,0) = 0 and @Presentacion = 'K' then 1
  308.                                     when @Asiento <> '@' and a.id is not null then 1
  309.                                     when @Presentacion = '0' then 1
  310.                                     else 0 end
  311.  
  312.                     group by    b.UsuarioAsignadoId,
  313.                             b.AsientoId,
  314.                             a.Asiento,
  315.                             b.EstatusId,
  316.                             b.Id,
  317.                             me.Estatus,
  318.                             m.Id,
  319.                             m.DocumentoEnAtraso,
  320.                             m.DocumentoLey216,
  321.                             td.Id,
  322.                             TipoOrigenDocumentoId,
  323.                             td.Nombre,
  324.                             NombreDocumentoId,
  325.                             m.NumeroRua, NombreNotario, m.AgenciaId,
  326.                             m.OficialACargo,
  327.                             m.DatosAdicionalesNotario,
  328.  
  329.                             m.SegundoNombreNotario,
  330.                             m.PrimerApellidoNotario,
  331.                             m.SegundoApellidoNotario,
  332.                             m.EmailNotario,
  333.                             m.TelefonoNotario,
  334.                             m.DireccionPostalNotario,
  335.                             m.Email1,
  336.                             m.Email2,
  337.                             NumeroAffidavitCasoInstancia,
  338.                             LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  339.                             ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  340.  
  341.                             TipoExpedicion, m.Razon,
  342.                             Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  343.                             FechaPresentacion,
  344.                             m.Creado,
  345.                             uc.Nombre, uc.PrimerApellido,
  346.                             m.CreadoPor, m.Modificado, m.ModificadoPor,
  347.                             ur.RolId,
  348.                             b.Creado,
  349.                             uc.Email,
  350.                             m.Telematica,
  351.                             usuarioAnterior.Nombre,
  352.                             usuarioAnterior.SegundoNombre,
  353.                             usuarioAnterior.PrimerApellido,
  354.                             usuarioAnterior.SegundoApellido,
  355.                             n.FechaCaducidad
  356.             ) m
  357.             where m.RowNumber = 1
  358.             and  1 = case
  359.                     -- minuta no ha sido presentada
  360.                     when MaxAsientoId = 0 and AsientoId is null then 1
  361.                     -- si fue presentada, solo el record que tenga asiento y no la bitacora inicial con asiento null
  362.                     when MaxAsientoId > 0 and AsientoId is not null then 1
  363.                     -- no señor
  364.                     else 0 end
  365.             and    1 = case when m.UsuarioAsignadoId = @UsuarioId then 1
  366.                             when m.CreadoPor = @UsuarioId and @rol = 3 then 1
  367.                             else 0 end
  368.             and    1 = case when @EstatusId = 0 then 1
  369.                             when m.EstatusId = @EstatusId then 1
  370.                             else 0 end
  371.             and exists
  372.             (
  373.                 select 1
  374.                 from dbo.split(fincas,'|') s
  375.                 where 1 = case when @finca = '0' then 1
  376.                                 when charindex('-',item) > 0 and ltrim(rtrim(left(item, charindex('-',item)-1))) like '%' + @finca + '%' then 1
  377.                                 else 0 end
  378.                 and   1 = case when @demarcacion = '0' then 1
  379.                                 when charindex('-',item) > 0 and left(ltrim(rtrim(right(item, len(item)-charindex('-',item)))),6) like '%' + @demarcacion + '%' then 1
  380.                                 else 0 end
  381.             )
  382.             -- primero los no presentados, para que los acabe de presentar y luego la fecha asignado que es el orden en que cambiaron de estatus (se presentaron o despacharon, etc)
  383.             order by case when EstatusId = 1 then 0 else 1 end, FechaAsignado
  384.  
  385.             OFFSET @offset ROWS FETCH NEXT @PageSize ROWS ONLY
  386.  
  387.            
  388.        end
  389.        else
  390.        begin
  391.                 select  count(*) over() TotalRows
  392.                     ,@PageNumber PageNumber
  393.                     ,ceiling((count(*) over()) / cast(@PageSize as float)) TotalPages,  
  394.                     null as DocumentoYaPresentado,
  395.                
  396.                     EstatusId,Estatus,UsuarioAsignadoId,AsientoId,Asiento,Id,MinutaId,DocumentoEnAtraso,DocumentoLey216,OficialACargo,DatosAdicionalesNotario,
  397.                     NombreDocumentoId,NumeroRua,NombreNotario,AgenciaId,
  398.  
  399.                     convert(bit, case when UsuarioAsignadoId = @UsuarioId then 1 else 0 end) as EsMio,
  400.                     convert(bit, case when @rol in (1,2,3,4,5,6,10,12) then 1 else 0 end) as PuedoVer,
  401.  
  402.                     NumeroAffidavitCasoInstancia,
  403.                     LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  404.                     ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  405.                    
  406.                     TipoDocumentoId,
  407.                     TipoOrigenDocumentoId,
  408.                     TipoDocumento,
  409.  
  410.                     SegundoNombreNotario,
  411.                     PrimerApellidoNotario,
  412.                     SegundoApellidoNotario,
  413.                     EmailNotario,
  414.                     TelefonoNotario,
  415.                     DireccionPostalNotario,
  416.  
  417.                     TipoExpedicion, Razon,
  418.                     Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  419.                     FechaPresentacion,
  420.                     Fincas,
  421.                     TransaccionList,
  422.                     CreadoPor,
  423.                     CreadoPorRol,
  424.                     Modificado, ModificadoPor,
  425.  
  426.                     case when @rol = 2 then FechaDespacho else FechaAsignado end as FechaAsignado,
  427.  
  428.                     Email1,
  429.                     Email2,
  430.                     CreadoFull,
  431.                     CreadoEmail,
  432.                     Telematica,
  433.                     UsuarioAnterior
  434.                
  435.            from
  436.            (
  437.                   select row_number() over(partition by m.id, b.AsientoId order by b.id desc) RowNumber,
  438.                          max(case when b.EstatusId in (3,12) then b.creado else null end) over(partition by b.id) as FechaDespacho,
  439.                          max(b.EstatusId) over(partition by m.id) as MaxEstatusId,
  440.                          isnull(max(isnull(b.AsientoId,0)) over(partition by m.id),0) as MaxAsientoId,
  441.                          isnull(min(isnull(b.AsientoId,0)) over(partition by m.id),0) as MinAsientoId,
  442.  
  443.                          b.EstatusId,
  444.                          case when n.FechaCaducidad >= cast(getdate() as date) and n.FechaCaducidad <= dateadd(day, 5, cast(getdate() as date)) then me.Estatus + ', Pendiente a caducar' else me.Estatus end as Estatus,
  445.  
  446.                          b.UsuarioAsignadoId,
  447.                          b.AsientoId,
  448.                          a.Asiento,
  449.  
  450.                          m.Id,
  451.                          m.Id MinutaId,
  452.                          m.DocumentoEnAtraso,
  453.                          m.DocumentoLey216,
  454.                          m.OficialACargo,
  455.                          m.DatosAdicionalesNotario,
  456.  
  457.                          m.SegundoNombreNotario,
  458.                          m.PrimerApellidoNotario,
  459.                          m.SegundoApellidoNotario,
  460.                          m.EmailNotario,
  461.                          m.TelefonoNotario,
  462.                          m.DireccionPostalNotario,
  463.                          m.Email1,
  464.                          m.Email2,
  465.                          td.Id TipoDocumentoId,
  466.                          TipoOrigenDocumentoId,
  467.                          td.Nombre TipoDocumento,
  468.  
  469.                          NombreDocumentoId,
  470.                          m.NumeroRua, NombreNotario, m.AgenciaId,
  471.  
  472.                          NumeroAffidavitCasoInstancia,
  473.                          LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  474.                          ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  475.                      
  476.                          TipoExpedicion, m.Razon,
  477.                          Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  478.                          FechaPresentacion,
  479.  
  480.                          m.Creado,
  481.                          --isnull(uc.Nombre, '')  + isnull(' ' + uc.PrimerApellido, '') as CreadoFull,
  482.                          usuarioAnterior.Nombre + ' ' + usuarioAnterior.SegundoNombre + ' ' + usuarioAnterior.PrimerApellido + ' ' + usuarioAnterior.SegundoApellido as CreadoFull,
  483.                          isnull(stuff((
  484.                             select distinct '|'
  485.                             + isnull(nullif(p.NumeroPropiedad,''),'?'), ' - ' + p.CodigoDemarcacion + ' ' + d.Nombre
  486.                             from dbo.Propiedad p with (nolock)
  487.                             join ux.MinutaPropiedad MP on MP.PropiedadId = P.Id
  488.                             join sistema.Demarcacion d on d.Codigo = p.CodigoDemarcacion
  489.                             where MP.MinutaId = m.Id
  490.                             for xml path ('')
  491.                             ), 1, 1, ''), '')  as Fincas,
  492.                         STUFF
  493.                         ((
  494.                                select ', ' + tt.Descripcion
  495.                                 from Transaccion ti with (nolock)
  496.                                 left join sistema.TipoTransaccion tt with (nolock)
  497.                                     on tt.Id = ti.TipoTransaccionId
  498.  
  499.                                 where ti.MinutaId = m.Id
  500.                                 group by ti.Creado,tt.Descripcion
  501.                                 order by ti.Creado
  502.                                for xml path ('')
  503.                         ), 1, 1, '')  as TransaccionList,
  504.                          m.CreadoPor,
  505.                          ur.RolId CreadoPorRol,
  506.  
  507.                          m.Modificado, m.ModificadoPor,
  508.  
  509.                          b.Creado AS FechaAsignado,
  510.                          uc.Email as CreadoEmail,
  511.                          m.Telematica,
  512.                          usuarioAnterior.Nombre + ' ' + usuarioAnterior.SegundoNombre + ' ' + usuarioAnterior.PrimerApellido + ' ' + usuarioAnterior.SegundoApellido as UsuarioAnterior
  513.                      
  514.                   FROM       dbo.Bitacora b with (nolock)
  515.                   join   #bitacora b2
  516.                         on b2.MaxBitacoraId = b.Id
  517.                   inner join dbo.Minuta m with (nolock)
  518.                          on  b.MinutaId = m.Id
  519.                          and 1 = case when @Presentacion = '0' then 1
  520.                                       when m.DocumentoEnAtraso = 1 and @Presentacion = 'PK' then 1
  521.                                       when m.DocumentoLey216   = 1 and @Presentacion = '216' then 1
  522.                                       when isnull(m.DocumentoEnAtraso,0) = 0 and isnull(m.DocumentoLey216,0) = 0 and @Presentacion = 'K' then 1
  523.                                       else 0 end
  524.  
  525.                   inner join [sistema].[MinutaEstatus] me with (nolock)
  526.                          on  me.Id = b.EstatusId
  527.  
  528.                   outer apply(
  529.                         select top 1 Id
  530.                         from Bitacora
  531.                         where MinutaId = m.Id
  532.                         and Id <> b2.MaxBitacoraId
  533.                         order by id desc
  534.                   )bo2
  535.  
  536.                   left join sistema.Usuario u with (nolock)
  537.                          on b.UsuarioAsignadoId = u.Id
  538.  
  539.                   left join sistema.Usuario uc with (nolock)
  540.                          on b.CreadoPor = uc.Id
  541.  
  542.                   left join Bitacora b3
  543.                          on b3.Id = bo2.Id
  544.                   left join sistema.Usuario usuarioAnterior
  545.                          on usuarioAnterior.Id = case when @rol = 2 and (b.EstatusId = 3 or b.EstatusId = 12) and b.EstatusSecundarioId is not null then b3.CreadoPor
  546.                                                       else b3.UsuarioAsignadoId end
  547.  
  548.                   left join sistema.UsuarioRol ur with (nolock)
  549.                          on m.CreadoPor = ur.UsuarioId
  550.  
  551.                   left join sistema.TipoDocumentoPresentado td with (nolock)
  552.                          on td.Id = m.NombreDocumentoId
  553.  
  554.                   left join dbo.Asiento a with (nolock)
  555.                          on b.AsientoId = a.Id
  556.                   left join Notificacion n
  557.                         on n.AsientoId = a.Id
  558.                   where 1 = case when m.DocumentoEnAtraso = 1 and @Presentacion = 'PK' then 1
  559.                                  when m.DocumentoLey216   = 1 and @Presentacion = '216' then 1
  560.                                  when isnull(m.DocumentoEnAtraso,0) = 0 and isnull(m.DocumentoLey216,0) = 0 and @Presentacion = 'K' then 1
  561.                                  when @Presentacion = '0' then 1
  562.                                  else 0 end
  563.  
  564.                   group by  b.UsuarioAsignadoId,
  565.                             b.AsientoId,
  566.                             a.Asiento,
  567.                             b.EstatusId,
  568.                             b.Id,
  569.                             me.Estatus,
  570.                             m.Id,
  571.                             m.DocumentoEnAtraso,
  572.                             m.DocumentoLey216,
  573.                             td.Id,
  574.                             TipoOrigenDocumentoId,
  575.                             td.Nombre,
  576.                             NombreDocumentoId,
  577.                             m.NumeroRua, NombreNotario, m.AgenciaId,
  578.                             m.OficialACargo,
  579.                             m.DatosAdicionalesNotario,
  580.  
  581.                             m.SegundoNombreNotario,
  582.                             m.PrimerApellidoNotario,
  583.                             m.SegundoApellidoNotario,
  584.                             m.EmailNotario,
  585.                             m.TelefonoNotario,
  586.                             m.DireccionPostalNotario,
  587.                             m.Email1,
  588.                             m.Email2,
  589.                             NumeroAffidavitCasoInstancia,
  590.                             LugarOtorgamientoEscritura, CasoJudicial, AccionJudicial, DemandadoJudicial, DemandanteJudicial,
  591.                             ExParteJudicial, FechaEscritura, ArancelesCalculados, Exento,
  592.  
  593.                             TipoExpedicion, m.Razon,
  594.                             Modelo, Texto, GUIDArchivoPresentado, GUIDArchivoMinuta,
  595.                             FechaPresentacion,
  596.                             m.Creado,
  597.                             uc.Nombre, uc.PrimerApellido,
  598.                             m.CreadoPor, m.Modificado, m.ModificadoPor,
  599.                             ur.RolId,
  600.                             b.Creado,
  601.                             uc.Email,
  602.                             m.Telematica,
  603.                             usuarioAnterior.Nombre,
  604.                             usuarioAnterior.SegundoNombre,
  605.                             usuarioAnterior.PrimerApellido,
  606.                             usuarioAnterior.SegundoApellido,
  607.                             n.FechaCaducidad
  608.            ) m
  609.            where m.RowNumber = 1
  610.            and  1 = case
  611.                     -- minuta no ha sido presentada
  612.                     when MaxAsientoId = 0 and AsientoId is null then 1
  613.                     -- si fue presentada, solo el record que tenga asiento y no la bitacora inicial con asiento null
  614.                     when MaxAsientoId > 0 and AsientoId is not null then 1
  615.                     -- no señor
  616.                     else 0 end
  617.            and    1 = case when m.UsuarioAsignadoId = @UsuarioId then 1
  618.                            when m.CreadoPor = @UsuarioId and @rol = 3 then 1
  619.                            else 0 end
  620.            and    1 = case when @EstatusId = 0 then 1
  621.                            when m.EstatusId = @EstatusId then 1
  622.                            else 0 end
  623.            and exists
  624.            (
  625.                 select 1
  626.                 from dbo.split(fincas,'|') s
  627.                 where 1 = case when @finca = '0' then 1
  628.                                when charindex('-',item) > 0 and ltrim(rtrim(left(item, charindex('-',item)-1))) like '%' + @finca + '%' then 1
  629.                                else 0 end
  630.                 and   1 = case when @demarcacion = '0' then 1
  631.                                when charindex('-',item) > 0 and left(ltrim(rtrim(right(item, len(item)-charindex('-',item)))),6) like '%' + @demarcacion + '%' then 1
  632.                                else 0 end
  633.            )
  634.            -- primero los no presentados, para que los acabe de presentar y luego la fecha asignado que es el orden en que cambiaron de estatus (se presentaron o despacharon, etc)
  635.            order by case when EstatusId = 1 then 0 else 1 end, FechaAsignado
  636.  
  637.            OFFSET @offset ROWS FETCH NEXT @PageSize ROWS ONLY
  638.        end
  639.  
  640.        drop table #bitacora
  641.  
  642. END
RAW Paste Data
Top