Compare commits
4 Commits
d2b7b982f3
...
50f1ced127
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
50f1ced127 | ||
|
|
72d0e6a589 | ||
|
|
58954219c8 | ||
|
|
0776ed8c59 |
2
.gitignore
vendored
@@ -76,4 +76,4 @@ coverage/
|
||||
*.secrets.json
|
||||
Web.local.config
|
||||
appsettings.local.json
|
||||
/SIG.Web/Documentos/Clientes/4/Etapas/1028
|
||||
/SIG.Web/Documentos/**
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# AGENTS_MANTENIMIENTO_PROYECTO.md
|
||||
# AGENTS_MANTENIMIENTO_PROYECTO.md
|
||||
|
||||
These rules complement `AGENTS.md` and are mandatory whenever the task involves commands, security, error handling, user feedback, grids, PDF migration, file delivery, verification, or project evolution.
|
||||
|
||||
@@ -74,6 +74,8 @@ Controlled outcomes and technical failures must use different logs.
|
||||
|
||||
## Grid display rules
|
||||
|
||||
- Los valores numéricos de negocio (hectáreas, superficies, avances, porcentajes, cantidades, importes y saldos) deben alinearse a la derecha tanto en los campos de captura como en las celdas y resúmenes donde se muestran. Usar las clases visuales existentes o la alineación del control; esta regla no convierte claves, folios ni códigos en cantidades.
|
||||
|
||||
- Every new or modified `asp:GridView` must declare `GridLines="None"`.
|
||||
- Its `CssClass` must include the exact utility class `Widthall` so the grid uses the full available width.
|
||||
- Do not add `table-bordered` to a GridView. Existing visual classes such as `table`, `table-striped`, and `table-hover` may be retained when appropriate.
|
||||
|
||||
649
Convenios_Etapa_TipoTramite_20261002.sql
Normal file
@@ -0,0 +1,649 @@
|
||||
/*
|
||||
Preparado a partir de las definiciones instaladas; no ejecutado.
|
||||
Instalar junto con la aplicación. No modifica conceptos, recibos ni pagos.
|
||||
CveSolicitud se conserva únicamente como referencia histórica.
|
||||
Los convenios históricos sin una solicitud conservan CveTipoTramite NULL:
|
||||
su asignación requiere una decisión de negocio; no se elige un trámite arbitrario.
|
||||
*/
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF COL_LENGTH('dbo.Convenios', 'CveTipoTramite') IS NULL
|
||||
ALTER TABLE dbo.Convenios ADD CveTipoTramite int NULL;
|
||||
GO
|
||||
|
||||
UPDATE C
|
||||
SET CveTipoTramite = S.CveTipoTramite
|
||||
FROM dbo.Convenios AS C
|
||||
INNER JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = C.CveSolicitud
|
||||
WHERE C.CveTipoTramite IS NULL;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.foreign_keys
|
||||
WHERE name = 'FK_Convenios_TipoTramite'
|
||||
)
|
||||
ALTER TABLE dbo.Convenios WITH CHECK
|
||||
ADD CONSTRAINT FK_Convenios_TipoTramite
|
||||
FOREIGN KEY (CveTipoTramite)
|
||||
REFERENCES dbo.Tra_TiposTramite (CveTipoTramite);
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Convenios')
|
||||
AND name = 'IX_Convenios_Etapa_TipoTramite'
|
||||
)
|
||||
CREATE INDEX IX_Convenios_Etapa_TipoTramite
|
||||
ON dbo.Convenios (CveFraccionamientoEtapa, CveTipoTramite);
|
||||
|
||||
DECLARE @QuitarRelacion nvarchar(max) = N'';
|
||||
SELECT @QuitarRelacion = @QuitarRelacion
|
||||
+ N'ALTER TABLE dbo.Convenios DROP CONSTRAINT ' + QUOTENAME(F.name) + N';'
|
||||
FROM sys.foreign_keys AS F
|
||||
WHERE F.parent_object_id = OBJECT_ID('dbo.Convenios')
|
||||
AND F.referenced_object_id = OBJECT_ID('dbo.Tra_Solicitudes');
|
||||
IF @QuitarRelacion <> N''
|
||||
EXEC sys.sp_executesql @QuitarRelacion;
|
||||
|
||||
-- Resultado de diagnóstico; no cambia la clasificación de estos convenios.
|
||||
SELECT CveConvenio, NumeroConvenio, CveFraccionamientoEtapa
|
||||
FROM dbo.Convenios
|
||||
WHERE CveTipoTramite IS NULL;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Tra_ConvenioAdd
|
||||
@CveCliente int,
|
||||
@CveFraccionamientoEtapa int,
|
||||
@CveTipoTramite int,
|
||||
@NumeroConvenio varchar(100),
|
||||
@NumeroOficio varchar(100) = NULL,
|
||||
@ViviendasAutorizadas int = NULL,
|
||||
@ViviendasEnConvenio int,
|
||||
@ViviendasPendientes int = NULL,
|
||||
@ViviendasContratadas int = NULL,
|
||||
@FechaConvenio date,
|
||||
@Observaciones varchar(1000) = NULL,
|
||||
@ConceptosXml xml,
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
@ErrorMostrar = NULL,
|
||||
@ErrorTipo = 0,
|
||||
@Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
SET @NumeroConvenio = NULLIF(LTRIM(RTRIM(@NumeroConvenio)), '');
|
||||
SET @NumeroOficio = NULLIF(LTRIM(RTRIM(@NumeroOficio)), '');
|
||||
SET @Observaciones = NULLIF(LTRIM(RTRIM(@Observaciones)), '');
|
||||
|
||||
IF @CveCliente <= 0
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Seleccione el desarrollador del convenio.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @CveFraccionamientoEtapa <= 0
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Seleccione el fraccionamiento y etapa del convenio.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF ISNULL(@CveTipoTramite, 0) <= 0
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Seleccione el tipo de trámite del convenio.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @NumeroConvenio IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Capture el número de convenio.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @ViviendasEnConvenio < 0
|
||||
OR ISNULL(@ViviendasAutorizadas, 0) < 0
|
||||
OR ISNULL(@ViviendasPendientes, 0) < 0
|
||||
OR ISNULL(@ViviendasContratadas, 0) < 0
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Las cantidades de viviendas no son válidas.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.FraccionamientosEtapas AS E
|
||||
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = E.CveFraccionamiento
|
||||
WHERE E.CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
||||
AND F.CveCliente = @CveCliente
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa seleccionada no pertenece al desarrollador indicado.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Convenios AS C
|
||||
WHERE C.NumeroConvenio = @NumeroConvenio
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Ya existe un convenio con ese número.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @Conceptos TABLE
|
||||
(
|
||||
Orden int NOT NULL PRIMARY KEY,
|
||||
CveConvenioConcepto int NOT NULL,
|
||||
Importe decimal(18,6) NOT NULL,
|
||||
Tipo varchar(20) NOT NULL,
|
||||
NumeroPagos int NOT NULL
|
||||
);
|
||||
|
||||
DECLARE @Recibos TABLE
|
||||
(
|
||||
OrdenConcepto int NOT NULL,
|
||||
Orden int NOT NULL,
|
||||
Importe decimal(18,6) NOT NULL,
|
||||
FechaVencimiento date NOT NULL,
|
||||
Estatus varchar(30) NOT NULL,
|
||||
PRIMARY KEY (OrdenConcepto, Orden)
|
||||
);
|
||||
|
||||
IF @ConceptosXml IS NOT NULL
|
||||
BEGIN
|
||||
INSERT INTO @Conceptos
|
||||
(
|
||||
Orden,
|
||||
CveConvenioConcepto,
|
||||
Importe,
|
||||
Tipo,
|
||||
NumeroPagos
|
||||
)
|
||||
SELECT
|
||||
C.value('@Orden', 'int'),
|
||||
C.value('@CveConvenioConcepto', 'int'),
|
||||
C.value('@Importe', 'decimal(18,6)'),
|
||||
C.value('@Tipo', 'varchar(20)'),
|
||||
C.value('@NumeroPagos', 'int')
|
||||
FROM @ConceptosXml.nodes('/Conceptos/Concepto') AS X(C);
|
||||
|
||||
INSERT INTO @Recibos
|
||||
(
|
||||
OrdenConcepto,
|
||||
Orden,
|
||||
Importe,
|
||||
FechaVencimiento,
|
||||
Estatus
|
||||
)
|
||||
SELECT
|
||||
C.value('@Orden', 'int'),
|
||||
R.value('@Orden', 'int'),
|
||||
R.value('@Importe', 'decimal(18,6)'),
|
||||
R.value('@FechaVencimiento', 'date'),
|
||||
COALESCE(
|
||||
NULLIF(R.value('@Estatus', 'varchar(30)'), ''),
|
||||
'PENDIENTE'
|
||||
)
|
||||
FROM @ConceptosXml.nodes('/Conceptos/Concepto') AS CX(C)
|
||||
CROSS APPLY C.nodes('Recibos/Recibo') AS RX(R);
|
||||
END;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @Conceptos)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Agregue al menos un concepto al convenio.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Conceptos AS C
|
||||
LEFT JOIN dbo.ConveniosConceptos AS CC ON CC.CveConvenioConcepto = C.CveConvenioConcepto
|
||||
AND CC.EsActivo = 1
|
||||
WHERE CC.CveConvenioConcepto IS NULL
|
||||
OR C.Importe <= 0
|
||||
OR NULLIF(LTRIM(RTRIM(C.Tipo)), '') IS NULL
|
||||
OR C.NumeroPagos NOT BETWEEN 1 AND 12
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Uno de los conceptos del convenio no es válido.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Recibos AS R
|
||||
WHERE R.Importe <= 0
|
||||
OR R.FechaVencimiento IS NULL
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Todas las parcialidades deben tener importe y vencimiento válidos.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Conceptos AS C
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT
|
||||
COUNT(*) AS NumeroRecibos,
|
||||
SUM(R.Importe) AS ImporteRecibos
|
||||
FROM @Recibos AS R
|
||||
WHERE R.OrdenConcepto = C.Orden
|
||||
) AS R
|
||||
WHERE ISNULL(R.NumeroRecibos, 0) <> C.NumeroPagos
|
||||
OR ISNULL(R.ImporteRecibos, 0) <> C.Importe
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar =
|
||||
'La cantidad y suma de las parcialidades debe coincidir con cada concepto.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
INSERT INTO dbo.Convenios
|
||||
(
|
||||
CveCliente,
|
||||
NumeroConvenio,
|
||||
NumeroOficio,
|
||||
CveFraccionamientoEtapa,
|
||||
CveTipoTramite,
|
||||
ViviendasAutorizadas,
|
||||
ViviendasEnConvenio,
|
||||
ViviendasPendientes,
|
||||
ViviendasContratadas,
|
||||
FechaConvenio,
|
||||
Observaciones,
|
||||
Estatus,
|
||||
CveConvenioOrigen,
|
||||
CveUsuario
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@CveCliente,
|
||||
@NumeroConvenio,
|
||||
@NumeroOficio,
|
||||
@CveFraccionamientoEtapa,
|
||||
@CveTipoTramite,
|
||||
@ViviendasAutorizadas,
|
||||
@ViviendasEnConvenio,
|
||||
@ViviendasPendientes,
|
||||
@ViviendasContratadas,
|
||||
@FechaConvenio,
|
||||
@Observaciones,
|
||||
'ACTIVO',
|
||||
NULL,
|
||||
@CveUsuarioEjecuta
|
||||
);
|
||||
|
||||
DECLARE @CveConvenio int = CONVERT(int, SCOPE_IDENTITY());
|
||||
DECLARE @OrdenConcepto int = 0;
|
||||
DECLARE @CveConvenioConcepto int;
|
||||
DECLARE @ImporteConcepto decimal(18,6);
|
||||
DECLARE @Tipo varchar(20);
|
||||
DECLARE @NumeroPagos int;
|
||||
DECLARE @CveConvenioDetalle int;
|
||||
|
||||
WHILE EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Conceptos
|
||||
WHERE Orden > @OrdenConcepto
|
||||
)
|
||||
BEGIN
|
||||
SELECT TOP (1)
|
||||
@OrdenConcepto = C.Orden,
|
||||
@CveConvenioConcepto = C.CveConvenioConcepto,
|
||||
@ImporteConcepto = C.Importe,
|
||||
@Tipo = C.Tipo,
|
||||
@NumeroPagos = C.NumeroPagos
|
||||
FROM @Conceptos AS C
|
||||
WHERE C.Orden > @OrdenConcepto
|
||||
ORDER BY C.Orden;
|
||||
|
||||
INSERT INTO dbo.ConveniosDetalle
|
||||
(
|
||||
CveConvenio,
|
||||
CveConvenioConcepto,
|
||||
Importe,
|
||||
Tipo,
|
||||
NumeroPagos,
|
||||
Observaciones
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@CveConvenio,
|
||||
@CveConvenioConcepto,
|
||||
@ImporteConcepto,
|
||||
@Tipo,
|
||||
@NumeroPagos,
|
||||
NULL
|
||||
);
|
||||
|
||||
SET @CveConvenioDetalle = CONVERT(int, SCOPE_IDENTITY());
|
||||
|
||||
INSERT INTO dbo.ConveniosRecibos
|
||||
(
|
||||
CveConvenioDetalle,
|
||||
NumeroRecibo,
|
||||
Importe,
|
||||
FechaVencimiento,
|
||||
Estatus
|
||||
)
|
||||
SELECT
|
||||
@CveConvenioDetalle,
|
||||
CONCAT(
|
||||
'RD',
|
||||
CONVERT(char(8), GETDATE(), 112),
|
||||
@CveConvenio,
|
||||
'-',
|
||||
RIGHT('000' + CONVERT(varchar(3), @OrdenConcepto), 3),
|
||||
'-',
|
||||
RIGHT('000' + CONVERT(varchar(3), R.Orden), 3)
|
||||
),
|
||||
R.Importe,
|
||||
R.FechaVencimiento,
|
||||
R.Estatus
|
||||
FROM @Recibos AS R
|
||||
WHERE R.OrdenConcepto = @OrdenConcepto
|
||||
ORDER BY R.Orden;
|
||||
END;
|
||||
|
||||
SELECT @CveConvenio AS CveConvenio;
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar =
|
||||
'Ocurrió un error al guardar el convenio; favor de contactar a Sistemas.';
|
||||
SET @ErrorTipo = 1;
|
||||
SET @Return = 0;
|
||||
|
||||
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(),
|
||||
'; Procedimiento: ', COALESCE(
|
||||
ERROR_PROCEDURE(),
|
||||
'PA_Tra_ConvenioAdd'
|
||||
),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
/*
|
||||
Se vuelven a definir List/Get únicamente para alinear la salida
|
||||
con Clientes.Nombre y devolver el encabezado completo del modal.
|
||||
*/
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Tra_ConvenioList
|
||||
@CveTipoTramite int = NULL,
|
||||
@CveCliente int = NULL,
|
||||
@CveFraccionamiento int = NULL,
|
||||
@CveFraccionamientoEtapa int = NULL,
|
||||
@Estatus varchar(30) = NULL,
|
||||
@ConSaldoPendiente bit = NULL,
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
@ErrorMostrar = NULL,
|
||||
@ErrorTipo = 0,
|
||||
@Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
;WITH PagadoRecibo AS
|
||||
(
|
||||
SELECT
|
||||
PR.CveConvenioRecibo,
|
||||
SUM(PR.ImporteAplicado) AS ImportePagado
|
||||
FROM dbo.ConveniosPagosRecibos AS PR
|
||||
GROUP BY PR.CveConvenioRecibo
|
||||
),
|
||||
Totales AS
|
||||
(
|
||||
SELECT
|
||||
D.CveConvenio,
|
||||
SUM(R.Importe) AS ImporteConvenio,
|
||||
SUM(ISNULL(P.ImportePagado, 0)) AS ImportePagado,
|
||||
SUM(R.Importe - ISNULL(P.ImportePagado, 0)) AS SaldoPendiente,
|
||||
MAX(CASE WHEN P.CveConvenioRecibo IS NULL THEN 0 ELSE 1 END) AS TienePagos
|
||||
FROM dbo.ConveniosDetalle AS D
|
||||
LEFT JOIN dbo.ConveniosRecibos AS R ON R.CveConvenioDetalle = D.CveConvenioDetalle
|
||||
LEFT JOIN PagadoRecibo AS P ON P.CveConvenioRecibo = R.CveConvenioRecibo
|
||||
GROUP BY D.CveConvenio
|
||||
)
|
||||
SELECT
|
||||
C.CveConvenio,
|
||||
C.CveTipoTramite,
|
||||
TT.TipoTramite,
|
||||
C.CveCliente,
|
||||
CL.Nombre AS Cliente,
|
||||
F.CveFraccionamiento,
|
||||
F.Fraccionamiento,
|
||||
FE.CveFraccionamientoEtapa,
|
||||
FE.Etapa,
|
||||
C.NumeroConvenio,
|
||||
C.NumeroOficio,
|
||||
C.Estatus,
|
||||
C.FechaConvenio,
|
||||
ISNULL(T.ImporteConvenio, 0) AS ImporteConvenio,
|
||||
ISNULL(T.ImportePagado, 0) AS ImportePagado,
|
||||
ISNULL(T.SaldoPendiente, 0) AS SaldoPendiente,
|
||||
CONVERT(bit, ISNULL(T.TienePagos, 0)) AS TienePagos
|
||||
FROM dbo.Convenios AS C
|
||||
LEFT JOIN dbo.Tra_TiposTramite AS TT ON TT.CveTipoTramite = C.CveTipoTramite
|
||||
INNER JOIN dbo.FraccionamientosEtapas AS FE ON FE.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
||||
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = FE.CveFraccionamiento
|
||||
INNER JOIN dbo.Clientes AS CL ON CL.CveCliente = C.CveCliente
|
||||
LEFT JOIN Totales AS T ON T.CveConvenio = C.CveConvenio
|
||||
WHERE (@CveCliente IS NULL OR C.CveCliente = @CveCliente)
|
||||
AND (@CveTipoTramite IS NULL OR C.CveTipoTramite = @CveTipoTramite)
|
||||
AND (@CveFraccionamiento IS NULL OR F.CveFraccionamiento = @CveFraccionamiento)
|
||||
AND (@CveFraccionamientoEtapa IS NULL OR C.CveFraccionamientoEtapa = @CveFraccionamientoEtapa)
|
||||
AND (NULLIF(@Estatus, '') IS NULL OR C.Estatus = @Estatus)
|
||||
AND
|
||||
(
|
||||
@ConSaldoPendiente IS NULL
|
||||
OR @ConSaldoPendiente = CASE
|
||||
WHEN ISNULL(T.SaldoPendiente, 0) > 0 THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
)
|
||||
ORDER BY
|
||||
C.FechaConvenio DESC,
|
||||
C.CveConvenio DESC;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar =
|
||||
'Ocurrió un error al consultar los convenios; favor de contactar a Sistemas.';
|
||||
SET @ErrorTipo = 1;
|
||||
SET @Return = 0;
|
||||
|
||||
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(),
|
||||
'; Procedimiento: ', COALESCE(
|
||||
ERROR_PROCEDURE(),
|
||||
'PA_Tra_ConvenioList'
|
||||
),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Tra_ConvenioGet
|
||||
@CveConvenio int,
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
@ErrorMostrar = NULL,
|
||||
@ErrorTipo = 0,
|
||||
@Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Convenios
|
||||
WHERE CveConvenio = @CveConvenio
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'No se encontró el convenio solicitado.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
;WITH PagadoRecibo AS
|
||||
(
|
||||
SELECT
|
||||
PR.CveConvenioRecibo,
|
||||
SUM(PR.ImporteAplicado) AS ImportePagado
|
||||
FROM dbo.ConveniosPagosRecibos AS PR
|
||||
GROUP BY PR.CveConvenioRecibo
|
||||
),
|
||||
Totales AS
|
||||
(
|
||||
SELECT
|
||||
D.CveConvenio,
|
||||
SUM(R.Importe) AS ImporteConvenio,
|
||||
SUM(ISNULL(P.ImportePagado, 0)) AS ImportePagado,
|
||||
SUM(R.Importe - ISNULL(P.ImportePagado, 0)) AS SaldoPendiente
|
||||
FROM dbo.ConveniosDetalle AS D
|
||||
LEFT JOIN dbo.ConveniosRecibos AS R ON R.CveConvenioDetalle = D.CveConvenioDetalle
|
||||
LEFT JOIN PagadoRecibo AS P ON P.CveConvenioRecibo = R.CveConvenioRecibo
|
||||
GROUP BY D.CveConvenio
|
||||
)
|
||||
SELECT
|
||||
C.CveConvenio,
|
||||
C.CveTipoTramite,
|
||||
TT.TipoTramite,
|
||||
C.CveCliente,
|
||||
C.CveFraccionamientoEtapa,
|
||||
C.NumeroConvenio,
|
||||
C.NumeroOficio,
|
||||
CL.Nombre AS Cliente,
|
||||
F.Fraccionamiento,
|
||||
FE.Etapa,
|
||||
C.Estatus,
|
||||
C.FechaConvenio,
|
||||
C.ViviendasAutorizadas,
|
||||
C.ViviendasEnConvenio,
|
||||
C.ViviendasPendientes,
|
||||
C.ViviendasContratadas,
|
||||
C.Observaciones,
|
||||
ISNULL(T.ImporteConvenio, 0) AS ImporteConvenio,
|
||||
ISNULL(T.ImportePagado, 0) AS ImportePagado,
|
||||
ISNULL(T.SaldoPendiente, 0) AS SaldoPendiente
|
||||
FROM dbo.Convenios AS C
|
||||
LEFT JOIN dbo.Tra_TiposTramite AS TT ON TT.CveTipoTramite = C.CveTipoTramite
|
||||
INNER JOIN dbo.FraccionamientosEtapas AS FE ON FE.CveFraccionamientoEtapa = C.CveFraccionamientoEtapa
|
||||
INNER JOIN dbo.Fraccionamientos AS F ON F.CveFraccionamiento = FE.CveFraccionamiento
|
||||
INNER JOIN dbo.Clientes AS CL ON CL.CveCliente = C.CveCliente
|
||||
LEFT JOIN Totales AS T ON T.CveConvenio = C.CveConvenio
|
||||
WHERE C.CveConvenio = @CveConvenio;
|
||||
|
||||
SELECT
|
||||
D.CveConvenioDetalle,
|
||||
D.CveConvenioConcepto,
|
||||
CC.Concepto,
|
||||
D.Importe,
|
||||
D.Tipo,
|
||||
D.NumeroPagos
|
||||
FROM dbo.ConveniosDetalle AS D
|
||||
INNER JOIN dbo.ConveniosConceptos AS CC ON CC.CveConvenioConcepto = D.CveConvenioConcepto
|
||||
WHERE D.CveConvenio = @CveConvenio
|
||||
ORDER BY D.CveConvenioDetalle;
|
||||
|
||||
;WITH Pagado AS
|
||||
(
|
||||
SELECT
|
||||
PR.CveConvenioRecibo,
|
||||
SUM(PR.ImporteAplicado) AS ImportePagado
|
||||
FROM dbo.ConveniosPagosRecibos AS PR
|
||||
GROUP BY PR.CveConvenioRecibo
|
||||
)
|
||||
SELECT
|
||||
R.CveConvenioRecibo,
|
||||
R.CveConvenioDetalle,
|
||||
R.NumeroRecibo,
|
||||
R.Importe,
|
||||
ISNULL(P.ImportePagado, 0) AS ImportePagado,
|
||||
R.Importe - ISNULL(P.ImportePagado, 0) AS SaldoPendiente,
|
||||
R.FechaVencimiento,
|
||||
R.Estatus
|
||||
FROM dbo.ConveniosRecibos AS R
|
||||
INNER JOIN dbo.ConveniosDetalle AS D ON D.CveConvenioDetalle = R.CveConvenioDetalle
|
||||
LEFT JOIN Pagado AS P ON P.CveConvenioRecibo = R.CveConvenioRecibo
|
||||
WHERE D.CveConvenio = @CveConvenio
|
||||
ORDER BY
|
||||
R.CveConvenioDetalle,
|
||||
R.FechaVencimiento,
|
||||
R.CveConvenioRecibo;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar =
|
||||
'Ocurrió un error al consultar el detalle del convenio; favor de contactar a Sistemas.';
|
||||
SET @ErrorTipo = 1;
|
||||
SET @Return = 0;
|
||||
|
||||
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(),
|
||||
'; Procedimiento: ', COALESCE(
|
||||
ERROR_PROCEDURE(),
|
||||
'PA_Tra_ConvenioGet'
|
||||
),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
146
Documentos_Compartidos_Etapa_Estructura_20261002.sql
Normal file
@@ -0,0 +1,146 @@
|
||||
/*
|
||||
Consolidación de documentos compartidos por etapa y tipo de documento.
|
||||
Preparado para revisión; no ejecutado.
|
||||
Requiere la migración Etapa_TipoTramite_20261002 ya instalada.
|
||||
Ejecutar estructura y procedimientos en la misma transacción de instalación,
|
||||
detenerse ante errores y confirmar sólo tras verificar los resultados.
|
||||
No borra archivos ni filas históricas de documentos.
|
||||
Las copias idénticas quedan como versiones históricas; se conserva una vigente.
|
||||
Las configuraciones particulares idénticas se consolidan en una por etapa.
|
||||
Si hubo ediciones diferentes por trámite, se detiene para no elegir una
|
||||
aprobación, nota o marca de requerido arbitraria.
|
||||
Convenios no se modifican.
|
||||
*/
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @@TRANCOUNT = 0
|
||||
THROW 51000, 'Abrir una transacción de instalación antes de ejecutar y revertirla ante cualquier error.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Tra_DocumentosSolicitud AS D
|
||||
INNER JOIN dbo.Tra_DocumentosSolicitud AS O ON O.CveFraccionamientoEtapa = D.CveFraccionamientoEtapa
|
||||
AND O.CveTipoDocumento = D.CveTipoDocumento
|
||||
AND O.CveDocumentoSolicitud < D.CveDocumentoSolicitud
|
||||
WHERE D.EsActivo = 1
|
||||
AND O.EsActivo = 1
|
||||
AND EXISTS
|
||||
(
|
||||
SELECT D.NombreArchivo, D.NombreArchivoFisico, D.RutaArchivo,
|
||||
D.ContentType, D.TamanoBytes, D.ComentarioCliente,
|
||||
D.ComentarioAdministrativo, D.EsAprobado, D.CveUsuarioCarga,
|
||||
D.CveUsuarioRevisa, D.FechaRevision, D.FechaAlta, D.UltimaNota,
|
||||
D.FechaDocumento, D.FechaVencimiento, D.Vencido
|
||||
EXCEPT
|
||||
SELECT O.NombreArchivo, O.NombreArchivoFisico, O.RutaArchivo,
|
||||
O.ContentType, O.TamanoBytes, O.ComentarioCliente,
|
||||
O.ComentarioAdministrativo, O.EsAprobado, O.CveUsuarioCarga,
|
||||
O.CveUsuarioRevisa, O.FechaRevision, O.FechaAlta, O.UltimaNota,
|
||||
O.FechaDocumento, O.FechaVencimiento, O.Vencido
|
||||
)
|
||||
)
|
||||
THROW 51000, 'Hay versiones vigentes con datos distintos por trámite. Revisarlas antes de consolidar; no se eliminaron documentos.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion
|
||||
GROUP BY CveFraccionamientoEtapa, CveTipoDocumento
|
||||
HAVING MIN(CONVERT(int, EsRequerido)) <> MAX(CONVERT(int, EsRequerido))
|
||||
OR MIN(CONVERT(int, EsCliente)) <> MAX(CONVERT(int, EsCliente))
|
||||
OR MIN(CONVERT(int, TieneVigencia)) <> MAX(CONVERT(int, TieneVigencia))
|
||||
OR MIN(CONVERT(int, EsActivo)) <> MAX(CONVERT(int, EsActivo))
|
||||
OR MIN(Orden) <> MAX(Orden)
|
||||
)
|
||||
THROW 51000, 'Hay configuraciones manuales distintas por trámite. Resolverlas antes de consolidar la marca de la etapa.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
||||
AND name = 'UX_Tra_DocumentosSolicitud_Etapa_Tramite_Documento'
|
||||
)
|
||||
DROP INDEX UX_Tra_DocumentosSolicitud_Etapa_Tramite_Documento
|
||||
ON dbo.Tra_DocumentosSolicitud;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
||||
AND name = 'UX_Tra_ConfiguracionDocumento_Etapa_Tramite_Documento'
|
||||
)
|
||||
DROP INDEX UX_Tra_ConfiguracionDocumento_Etapa_Tramite_Documento
|
||||
ON dbo.Tra_SolicitudDocumentoConfiguracion;
|
||||
|
||||
-- Las columnas se conservan por compatibilidad de esquema; ya no son propietarias.
|
||||
ALTER TABLE dbo.Tra_DocumentosSolicitud ALTER COLUMN CveTipoTramite int NULL;
|
||||
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion ALTER COLUMN CveTipoTramite int NULL;
|
||||
|
||||
;WITH Versiones AS
|
||||
(
|
||||
SELECT
|
||||
CveDocumentoSolicitud,
|
||||
ROW_NUMBER() OVER
|
||||
(
|
||||
PARTITION BY CveFraccionamientoEtapa, CveTipoDocumento
|
||||
ORDER BY CveDocumentoSolicitud
|
||||
) AS NumeroVersion
|
||||
FROM dbo.Tra_DocumentosSolicitud
|
||||
WHERE EsActivo = 1
|
||||
)
|
||||
UPDATE D
|
||||
SET EsActivo = 0
|
||||
FROM dbo.Tra_DocumentosSolicitud AS D
|
||||
INNER JOIN Versiones AS V ON V.CveDocumentoSolicitud = D.CveDocumentoSolicitud
|
||||
WHERE V.NumeroVersion > 1;
|
||||
|
||||
-- Sólo se retiran copias de configuración cuyos valores son idénticos.
|
||||
;WITH Configuraciones AS
|
||||
(
|
||||
SELECT
|
||||
CveConfiguracionDocumento,
|
||||
ROW_NUMBER() OVER
|
||||
(
|
||||
PARTITION BY CveFraccionamientoEtapa, CveTipoDocumento
|
||||
ORDER BY CveConfiguracionDocumento
|
||||
) AS NumeroConfiguracion
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion
|
||||
)
|
||||
DELETE C
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS C
|
||||
INNER JOIN Configuraciones AS O ON O.CveConfiguracionDocumento = C.CveConfiguracionDocumento
|
||||
WHERE O.NumeroConfiguracion > 1;
|
||||
|
||||
UPDATE dbo.Tra_DocumentosSolicitud
|
||||
SET CveTipoTramite = NULL
|
||||
WHERE CveTipoTramite IS NOT NULL;
|
||||
|
||||
UPDATE dbo.Tra_SolicitudDocumentoConfiguracion
|
||||
SET CveTipoTramite = NULL
|
||||
WHERE CveTipoTramite IS NOT NULL;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
||||
AND name = 'UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento'
|
||||
)
|
||||
CREATE UNIQUE INDEX UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento
|
||||
ON dbo.Tra_DocumentosSolicitud (CveFraccionamientoEtapa, CveTipoDocumento)
|
||||
WHERE EsActivo = 1;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
||||
AND name = 'UX_Tra_ConfiguracionDocumento_Etapa_Documento'
|
||||
)
|
||||
CREATE UNIQUE INDEX UX_Tra_ConfiguracionDocumento_Etapa_Documento
|
||||
ON dbo.Tra_SolicitudDocumentoConfiguracion (CveFraccionamientoEtapa, CveTipoDocumento);
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_Tra_DocumentosSolicitud_TipoTramite')
|
||||
ALTER TABLE dbo.Tra_DocumentosSolicitud DROP CONSTRAINT FK_Tra_DocumentosSolicitud_TipoTramite;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_Tra_ConfiguracionDocumento_TipoTramite')
|
||||
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion DROP CONSTRAINT FK_Tra_ConfiguracionDocumento_TipoTramite;
|
||||
2276
Documentos_Compartidos_Etapa_Procedimientos_20261002.sql
Normal file
340
Documentos_Etapa_TipoTramite_Estructura_20261002.sql
Normal file
@@ -0,0 +1,340 @@
|
||||
/*
|
||||
Preparación únicamente; no ejecutado.
|
||||
Requiere Documentos_Etapa_Estructura_20260927.sql ya instalado.
|
||||
Instalar estructura, procedimientos y aplicación en una ventana coordinada.
|
||||
El ejecutor debe abrir una transacción, detenerse y revertir ante cualquier
|
||||
error, y confirmar sólo después de instalar y verificar todos los scripts.
|
||||
Los registros sin solicitud se conservan en todos los tipos activos aplicables.
|
||||
Se duplica únicamente la metadata: archivos, fechas, revisiones y versiones
|
||||
conservan su contenido. El identificador original queda en el menor tipo;
|
||||
no significa que ese tipo tenga prioridad funcional.
|
||||
GIS histórico 2 se normaliza al documento configurado 1016 / trámite 12.
|
||||
Las asignaciones directas existentes no vuelven a expandirse al reinstalar.
|
||||
*/
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF @@TRANCOUNT = 0
|
||||
THROW 51000, 'Abrir una transacción de instalación antes de ejecutar este script y revertirla ante cualquier error.', 1;
|
||||
|
||||
SELECT
|
||||
D.CveDocumentoSolicitud,
|
||||
D.CveFraccionamientoEtapa,
|
||||
CASE WHEN D.CveTipoDocumento = 2 THEN 1016 ELSE D.CveTipoDocumento END AS CveTipoDocumento,
|
||||
S.CveTipoTramite AS TipoSolicitud,
|
||||
CONVERT(int, NULL) AS TipoDirecto
|
||||
INTO #OrigenDocumentos
|
||||
FROM dbo.Tra_DocumentosSolicitud AS D
|
||||
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud;
|
||||
|
||||
IF COL_LENGTH('dbo.Tra_DocumentosSolicitud', 'CveTipoTramite') IS NOT NULL
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE O
|
||||
SET TipoDirecto = D.CveTipoTramite,
|
||||
CveTipoDocumento = D.CveTipoDocumento
|
||||
FROM #OrigenDocumentos AS O
|
||||
INNER JOIN dbo.Tra_DocumentosSolicitud AS D ON D.CveDocumentoSolicitud = O.CveDocumentoSolicitud
|
||||
WHERE D.CveTipoTramite IS NOT NULL;';
|
||||
|
||||
SELECT DISTINCT
|
||||
O.CveDocumentoSolicitud,
|
||||
O.CveFraccionamientoEtapa,
|
||||
O.CveTipoDocumento,
|
||||
COALESCE(O.TipoDirecto, O.TipoSolicitud, T.CveTipoTramite) AS CveTipoTramite
|
||||
INTO #TiposDocumentos
|
||||
FROM #OrigenDocumentos AS O
|
||||
LEFT JOIN dbo.Tra_TiposTramiteDocumento AS T ON T.CveTipoDocumento = O.CveTipoDocumento
|
||||
AND T.EsActivo = 1
|
||||
AND O.TipoDirecto IS NULL
|
||||
AND O.TipoSolicitud IS NULL;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM #TiposDocumentos WHERE CveTipoTramite IS NULL)
|
||||
BEGIN
|
||||
SELECT *
|
||||
FROM #TiposDocumentos
|
||||
WHERE CveTipoTramite IS NULL;
|
||||
THROW 51000, 'Hay documentos sin tipo de trámite aplicable. Resolver su correspondencia y revertir la instalación.', 1;
|
||||
END;
|
||||
|
||||
SELECT
|
||||
D.CveConfiguracionDocumento,
|
||||
D.CveFraccionamientoEtapa,
|
||||
CASE WHEN D.CveTipoDocumento = 2 THEN 1016 ELSE D.CveTipoDocumento END AS CveTipoDocumento,
|
||||
S.CveTipoTramite AS TipoSolicitud,
|
||||
CONVERT(int, NULL) AS TipoDirecto
|
||||
INTO #OrigenConfiguraciones
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS D
|
||||
LEFT JOIN dbo.Tra_Solicitudes AS S ON S.CveSolicitud = D.CveSolicitud;
|
||||
|
||||
IF COL_LENGTH('dbo.Tra_SolicitudDocumentoConfiguracion', 'CveTipoTramite') IS NOT NULL
|
||||
EXEC sys.sp_executesql N'
|
||||
UPDATE O
|
||||
SET TipoDirecto = D.CveTipoTramite,
|
||||
CveTipoDocumento = D.CveTipoDocumento
|
||||
FROM #OrigenConfiguraciones AS O
|
||||
INNER JOIN dbo.Tra_SolicitudDocumentoConfiguracion AS D ON D.CveConfiguracionDocumento = O.CveConfiguracionDocumento
|
||||
WHERE D.CveTipoTramite IS NOT NULL;';
|
||||
|
||||
SELECT DISTINCT
|
||||
O.CveConfiguracionDocumento,
|
||||
O.CveFraccionamientoEtapa,
|
||||
O.CveTipoDocumento,
|
||||
COALESCE(O.TipoDirecto, O.TipoSolicitud, T.CveTipoTramite) AS CveTipoTramite
|
||||
INTO #TiposConfiguraciones
|
||||
FROM #OrigenConfiguraciones AS O
|
||||
LEFT JOIN dbo.Tra_TiposTramiteDocumento AS T ON T.CveTipoDocumento = O.CveTipoDocumento
|
||||
AND T.EsActivo = 1
|
||||
AND O.TipoDirecto IS NULL
|
||||
AND O.TipoSolicitud IS NULL;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM #TiposConfiguraciones WHERE CveTipoTramite IS NULL)
|
||||
BEGIN
|
||||
SELECT *
|
||||
FROM #TiposConfiguraciones
|
||||
WHERE CveTipoTramite IS NULL;
|
||||
THROW 51000, 'Hay configuraciones sin tipo de trámite aplicable. Resolver su correspondencia y revertir la instalación.', 1;
|
||||
END;
|
||||
|
||||
-- Nunca reemplazar una configuración específica con otra compartida.
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM #TiposConfiguraciones
|
||||
GROUP BY CveFraccionamientoEtapa, CveTipoTramite, CveTipoDocumento
|
||||
HAVING COUNT(*) > 1
|
||||
)
|
||||
BEGIN
|
||||
SELECT CveFraccionamientoEtapa, CveTipoTramite, CveTipoDocumento
|
||||
FROM #TiposConfiguraciones
|
||||
GROUP BY CveFraccionamientoEtapa, CveTipoTramite, CveTipoDocumento
|
||||
HAVING COUNT(*) > 1;
|
||||
THROW 51000, 'Hay configuraciones que convergen al mismo destino. Resolverlas conservando sus valores antes de instalar.', 1;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM #TiposDocumentos AS T
|
||||
INNER JOIN dbo.Tra_DocumentosSolicitud AS D ON D.CveDocumentoSolicitud = T.CveDocumentoSolicitud
|
||||
WHERE D.EsActivo = 1
|
||||
GROUP BY T.CveFraccionamientoEtapa, T.CveTipoTramite, T.CveTipoDocumento
|
||||
HAVING COUNT(*) > 1
|
||||
)
|
||||
THROW 51000, 'Hay versiones vigentes que convergen al mismo destino. Resolver su vigencia antes de instalar.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
||||
AND name = 'UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento'
|
||||
)
|
||||
DROP INDEX UX_Tra_DocumentosSolicitud_Etapa_TipoDocumento ON dbo.Tra_DocumentosSolicitud;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
||||
AND name = 'UX_Tra_ConfiguracionDocumento_Solicitud'
|
||||
)
|
||||
DROP INDEX UX_Tra_ConfiguracionDocumento_Solicitud ON dbo.Tra_SolicitudDocumentoConfiguracion;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
||||
AND name = 'UX_Tra_ConfiguracionDocumento_Etapa'
|
||||
)
|
||||
DROP INDEX UX_Tra_ConfiguracionDocumento_Etapa ON dbo.Tra_SolicitudDocumentoConfiguracion;
|
||||
|
||||
IF COL_LENGTH('dbo.Tra_DocumentosSolicitud', 'CveTipoTramite') IS NULL
|
||||
ALTER TABLE dbo.Tra_DocumentosSolicitud ADD CveTipoTramite int NULL;
|
||||
|
||||
-- El SQL dinámico compila después de agregar la columna.
|
||||
EXEC sys.sp_executesql N'
|
||||
;WITH DestinoOriginal AS
|
||||
(
|
||||
SELECT CveDocumentoSolicitud, MIN(CveTipoTramite) AS CveTipoTramite
|
||||
FROM #TiposDocumentos
|
||||
GROUP BY CveDocumentoSolicitud
|
||||
)
|
||||
UPDATE D
|
||||
SET CveTipoTramite = T.CveTipoTramite,
|
||||
CveTipoDocumento = T.CveTipoDocumento
|
||||
FROM dbo.Tra_DocumentosSolicitud AS D
|
||||
INNER JOIN DestinoOriginal AS O ON O.CveDocumentoSolicitud = D.CveDocumentoSolicitud
|
||||
INNER JOIN #TiposDocumentos AS T ON T.CveDocumentoSolicitud = O.CveDocumentoSolicitud
|
||||
AND T.CveTipoTramite = O.CveTipoTramite;
|
||||
|
||||
INSERT INTO dbo.Tra_DocumentosSolicitud
|
||||
(
|
||||
CveFraccionamientoEtapa,
|
||||
CveTipoDocumento,
|
||||
CveTipoTramite,
|
||||
CveSolicitud,
|
||||
NombreArchivo,
|
||||
NombreArchivoFisico,
|
||||
RutaArchivo,
|
||||
ContentType,
|
||||
TamanoBytes,
|
||||
ComentarioCliente,
|
||||
ComentarioAdministrativo,
|
||||
EsAprobado,
|
||||
CveUsuarioCarga,
|
||||
CveUsuarioRevisa,
|
||||
FechaRevision,
|
||||
FechaAlta,
|
||||
UltimaNota,
|
||||
FechaDocumento,
|
||||
FechaVencimiento,
|
||||
EsActivo,
|
||||
Vencido
|
||||
)
|
||||
SELECT
|
||||
T.CveFraccionamientoEtapa,
|
||||
T.CveTipoDocumento,
|
||||
T.CveTipoTramite,
|
||||
D.CveSolicitud,
|
||||
D.NombreArchivo,
|
||||
D.NombreArchivoFisico,
|
||||
D.RutaArchivo,
|
||||
D.ContentType,
|
||||
D.TamanoBytes,
|
||||
D.ComentarioCliente,
|
||||
D.ComentarioAdministrativo,
|
||||
D.EsAprobado,
|
||||
D.CveUsuarioCarga,
|
||||
D.CveUsuarioRevisa,
|
||||
D.FechaRevision,
|
||||
D.FechaAlta,
|
||||
D.UltimaNota,
|
||||
D.FechaDocumento,
|
||||
D.FechaVencimiento,
|
||||
D.EsActivo,
|
||||
D.Vencido
|
||||
FROM dbo.Tra_DocumentosSolicitud AS D
|
||||
INNER JOIN #TiposDocumentos AS T ON T.CveDocumentoSolicitud = D.CveDocumentoSolicitud
|
||||
WHERE T.CveTipoTramite <> D.CveTipoTramite;
|
||||
|
||||
ALTER TABLE dbo.Tra_DocumentosSolicitud ALTER COLUMN CveTipoTramite int NOT NULL;';
|
||||
|
||||
IF COL_LENGTH('dbo.Tra_SolicitudDocumentoConfiguracion', 'CveTipoTramite') IS NULL
|
||||
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion ADD CveTipoTramite int NULL;
|
||||
|
||||
-- El SQL dinámico compila después de agregar la columna.
|
||||
EXEC sys.sp_executesql N'
|
||||
;WITH DestinoOriginal AS
|
||||
(
|
||||
SELECT CveConfiguracionDocumento, MIN(CveTipoTramite) AS CveTipoTramite
|
||||
FROM #TiposConfiguraciones
|
||||
GROUP BY CveConfiguracionDocumento
|
||||
)
|
||||
UPDATE D
|
||||
SET CveTipoTramite = T.CveTipoTramite,
|
||||
CveTipoDocumento = T.CveTipoDocumento
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS D
|
||||
INNER JOIN DestinoOriginal AS O ON O.CveConfiguracionDocumento = D.CveConfiguracionDocumento
|
||||
INNER JOIN #TiposConfiguraciones AS T ON T.CveConfiguracionDocumento = O.CveConfiguracionDocumento
|
||||
AND T.CveTipoTramite = O.CveTipoTramite;
|
||||
|
||||
INSERT INTO dbo.Tra_SolicitudDocumentoConfiguracion
|
||||
(
|
||||
CveFraccionamientoEtapa,
|
||||
CveTipoDocumento,
|
||||
CveTipoTramite,
|
||||
CveSolicitud,
|
||||
EsRequerido,
|
||||
EsCliente,
|
||||
TieneVigencia,
|
||||
Orden,
|
||||
EsActivo
|
||||
)
|
||||
SELECT
|
||||
T.CveFraccionamientoEtapa,
|
||||
T.CveTipoDocumento,
|
||||
T.CveTipoTramite,
|
||||
D.CveSolicitud,
|
||||
D.EsRequerido,
|
||||
D.EsCliente,
|
||||
D.TieneVigencia,
|
||||
D.Orden,
|
||||
D.EsActivo
|
||||
FROM dbo.Tra_SolicitudDocumentoConfiguracion AS D
|
||||
INNER JOIN #TiposConfiguraciones AS T ON T.CveConfiguracionDocumento = D.CveConfiguracionDocumento
|
||||
WHERE T.CveTipoTramite <> D.CveTipoTramite;
|
||||
|
||||
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion ALTER COLUMN CveTipoTramite int NOT NULL;';
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_DocumentosSolicitud')
|
||||
AND name = 'UX_Tra_DocumentosSolicitud_Etapa_Tramite_Documento'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
CREATE UNIQUE INDEX UX_Tra_DocumentosSolicitud_Etapa_Tramite_Documento
|
||||
ON dbo.Tra_DocumentosSolicitud (CveFraccionamientoEtapa, CveTipoTramite, CveTipoDocumento)
|
||||
WHERE EsActivo = 1;';
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE object_id = OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion')
|
||||
AND name = 'UX_Tra_ConfiguracionDocumento_Etapa_Tramite_Documento'
|
||||
)
|
||||
EXEC sys.sp_executesql N'
|
||||
CREATE UNIQUE INDEX UX_Tra_ConfiguracionDocumento_Etapa_Tramite_Documento
|
||||
ON dbo.Tra_SolicitudDocumentoConfiguracion
|
||||
(CveFraccionamientoEtapa, CveTipoTramite, CveTipoDocumento);';
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_Tra_DocumentosSolicitud_TipoTramite')
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.Tra_DocumentosSolicitud WITH CHECK
|
||||
ADD CONSTRAINT FK_Tra_DocumentosSolicitud_TipoTramite
|
||||
FOREIGN KEY (CveTipoTramite) REFERENCES dbo.Tra_TiposTramite (CveTipoTramite);';
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM sys.foreign_keys WHERE name = 'FK_Tra_ConfiguracionDocumento_TipoTramite')
|
||||
EXEC sys.sp_executesql N'
|
||||
ALTER TABLE dbo.Tra_SolicitudDocumentoConfiguracion WITH CHECK
|
||||
ADD CONSTRAINT FK_Tra_ConfiguracionDocumento_TipoTramite
|
||||
FOREIGN KEY (CveTipoTramite) REFERENCES dbo.Tra_TiposTramite (CveTipoTramite);';
|
||||
|
||||
-- CveSolicitud se conserva sólo como referencia histórica, sin dependencia relacional.
|
||||
DECLARE @QuitarRelaciones nvarchar(max) = N'';
|
||||
SELECT @QuitarRelaciones = @QuitarRelaciones
|
||||
+ N'ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(F.parent_object_id))
|
||||
+ N'.' + QUOTENAME(OBJECT_NAME(F.parent_object_id))
|
||||
+ N' DROP CONSTRAINT ' + QUOTENAME(F.name) + N';'
|
||||
FROM sys.foreign_keys AS F
|
||||
WHERE F.parent_object_id IN
|
||||
(OBJECT_ID('dbo.Tra_DocumentosSolicitud'), OBJECT_ID('dbo.Tra_SolicitudDocumentoConfiguracion'))
|
||||
AND F.referenced_object_id = OBJECT_ID('dbo.Tra_Solicitudes');
|
||||
IF @QuitarRelaciones <> N''
|
||||
EXEC sys.sp_executesql @QuitarRelaciones;
|
||||
|
||||
INSERT INTO dbo.Bit_Campos
|
||||
(CveTabla, NombreCampoSQL, NombreMostrar, MostrarEnBitacora, TipoDatoSQL, Activo)
|
||||
SELECT
|
||||
T.CveTabla,
|
||||
'CveTipoTramite',
|
||||
'Tipo de trámite',
|
||||
1,
|
||||
'int',
|
||||
1
|
||||
FROM dbo.Bit_Tablas AS T
|
||||
WHERE T.NombreTablaSQL IN ('Tra_DocumentosSolicitud', 'Tra_SolicitudDocumentoConfiguracion')
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Bit_Campos AS C
|
||||
WHERE C.CveTabla = T.CveTabla
|
||||
AND C.NombreCampoSQL = 'CveTipoTramite'
|
||||
);
|
||||
|
||||
DROP TABLE #TiposDocumentos;
|
||||
DROP TABLE #OrigenDocumentos;
|
||||
DROP TABLE #TiposConfiguraciones;
|
||||
DROP TABLE #OrigenConfiguraciones;
|
||||
2018
Documentos_Etapa_TipoTramite_Procedimientos_20261002.sql
Normal file
110
GIS_Capas_Configuracion_20261002.sql
Normal file
@@ -0,0 +1,110 @@
|
||||
-- Preparado para revisión. La instalación requiere autorización independiente.
|
||||
-- La configuración se conserva por etapa y nombre de capa del archivo original.
|
||||
IF OBJECT_ID(N'dbo.FraccionamientosEtapasGISCapas', N'U') IS NULL
|
||||
BEGIN
|
||||
CREATE TABLE dbo.FraccionamientosEtapasGISCapas
|
||||
(
|
||||
CveFraccionamientoEtapa int NOT NULL,
|
||||
NombreCapa nvarchar(250) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
TipoCapa nvarchar(20) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
Color nvarchar(7) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
EsVisible bit NOT NULL,
|
||||
CveUsuarioModifica int NOT NULL,
|
||||
FechaModificacion datetime2 NOT NULL,
|
||||
CONSTRAINT PK_FraccionamientosEtapasGISCapas
|
||||
PRIMARY KEY (CveFraccionamientoEtapa, NombreCapa),
|
||||
CONSTRAINT FK_FraccionamientosEtapasGISCapas_Etapa
|
||||
FOREIGN KEY (CveFraccionamientoEtapa)
|
||||
REFERENCES dbo.FraccionamientosEtapas (CveFraccionamientoEtapa),
|
||||
CONSTRAINT CK_FraccionamientosEtapasGISCapas_Tipo
|
||||
CHECK (TipoCapa IN (N'Agua', N'Drenaje', N'Lotificacion', N'Pozos', N'Otros')),
|
||||
CONSTRAINT CK_FraccionamientosEtapasGISCapas_Color
|
||||
CHECK (LEN(Color) = 7 AND Color COLLATE Latin1_General_BIN2
|
||||
LIKE N'#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]')
|
||||
);
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Fraccionamientos_EtapaGISCapasList
|
||||
@CveFraccionamientoEtapa int,
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
BEGIN TRY
|
||||
SELECT NombreCapa, TipoCapa, Color, EsVisible
|
||||
FROM dbo.FraccionamientosEtapasGISCapas
|
||||
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SELECT
|
||||
@ErrorMostrar = 'No fue posible consultar la configuración de capas GIS.',
|
||||
@ErrorTipo = 1,
|
||||
@Return = 0;
|
||||
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(),
|
||||
'; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Fraccionamientos_EtapaGISCapasSave
|
||||
@CveFraccionamientoEtapa int,
|
||||
@NombreCapa nvarchar(250),
|
||||
@TipoCapa nvarchar(20),
|
||||
@Color nvarchar(7),
|
||||
@EsVisible bit,
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
BEGIN TRY
|
||||
-- El servicio mantiene la transacción ambiental para proteger este upsert.
|
||||
UPDATE dbo.FraccionamientosEtapasGISCapas WITH (UPDLOCK, HOLDLOCK)
|
||||
SET TipoCapa = @TipoCapa,
|
||||
Color = @Color,
|
||||
EsVisible = @EsVisible,
|
||||
CveUsuarioModifica = @CveUsuarioEjecuta,
|
||||
FechaModificacion = SYSDATETIME()
|
||||
WHERE CveFraccionamientoEtapa = @CveFraccionamientoEtapa
|
||||
AND NombreCapa = @NombreCapa;
|
||||
|
||||
IF @@ROWCOUNT = 0
|
||||
BEGIN
|
||||
INSERT INTO dbo.FraccionamientosEtapasGISCapas
|
||||
(
|
||||
CveFraccionamientoEtapa, NombreCapa, TipoCapa, Color,
|
||||
EsVisible, CveUsuarioModifica, FechaModificacion
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
@CveFraccionamientoEtapa, @NombreCapa, @TipoCapa, @Color,
|
||||
@EsVisible, @CveUsuarioEjecuta, SYSDATETIME()
|
||||
);
|
||||
END;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SELECT
|
||||
@ErrorMostrar = 'No fue posible guardar la configuración de la capa GIS.',
|
||||
@ErrorTipo = 1,
|
||||
@Return = 0;
|
||||
DECLARE @ErrorTecnico nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(),
|
||||
'; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
142
Migracion_NombresDocumentos_20261003.csv
Normal file
@@ -0,0 +1,142 @@
|
||||
"CveDocumentoSolicitud","CveFraccionamientoEtapa","CveTipoDocumento","EsActivo","NombreArchivo","NombreAnterior","RutaAnterior","NombreNuevo","RutaNueva","TamanoBytes","SHA256"
|
||||
"3","1022","1040","True","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"4","1022","1045","True","BORRADOR EDISA.docx","doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin","Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin","doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx","Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx","16889","3074B0379B55A18B47EB06A4BAE47985B155CAC0583DE78B651988C7599A3C77"
|
||||
"5","1022","1046","True","ACTIVIDADES LETYYYY.docx","doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b.bin","Clientes/1006/Etapas/1022/doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b.bin","doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b-ACTIVIDADES LETYYYY.docx","Clientes/1006/Etapas/1022/doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b-ACTIVIDADES LETYYYY.docx","19908","8A139074FE52426D3FE0DCE395CCEDB031A03FB33462E2C989F695F14481C11D"
|
||||
"6","1022","1051","True","Recibo-Ago (1).pdf","doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791.bin","Clientes/1006/Etapas/1022/doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791.bin","doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791-Recibo-Ago (1).pdf","Clientes/1006/Etapas/1022/doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791-Recibo-Ago (1).pdf","814619","86017314865C2064DDBA15CBC1318643BC2F2E0C254A3D274CEE3C17B81E9094"
|
||||
"7","1022","1057","True","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"8","1022","1053","True","Etapa1_10_lotes.gis","doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c.bin","Clientes/1006/Etapas/1022/doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c.bin","doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c-Etapa1_10_lotes.gis","Clientes/1006/Etapas/1022/doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c-Etapa1_10_lotes.gis","8256","5271A9F0C57CF648101CFCDC4CB6635CB28FA2C637DECD4C60195751E8959EEF"
|
||||
"9","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"10","1024","1053","False","02_Copia_escrituras.pdf","doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7.bin","Clientes/4/Etapas/1024/doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7.bin","doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7-02_Copia_escrituras.pdf","Clientes/4/Etapas/1024/doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7-02_Copia_escrituras.pdf","44497","DE63A4F755D5199D1EB98A024C03627B1AB698403481CE8C6BC5D92E7E8746CC"
|
||||
"11","1024","1046","False","04_Dictamen_uso_suelo.pdf","doc-1024-1046-168182c76cb843cbb3a2aff986bff057.bin","Clientes/4/Etapas/1024/doc-1024-1046-168182c76cb843cbb3a2aff986bff057.bin","doc-1024-1046-168182c76cb843cbb3a2aff986bff057-04_Dictamen_uso_suelo.pdf","Clientes/4/Etapas/1024/doc-1024-1046-168182c76cb843cbb3a2aff986bff057-04_Dictamen_uso_suelo.pdf","44359","AE0069AEC8DDBE09071581126BEA3272BC37A4D758A764BF8A05D58755F4BC28"
|
||||
"12","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"13","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"14","1024","1079","False","08_Constancia_no_adeudo_Agua_Hermosillo.pdf","doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5.bin","Clientes/4/Etapas/1024/doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5.bin","doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","Clientes/4/Etapas/1024/doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","44351","04CD6B0F2739837F7BD711819D031FB73BACD7675B752906EFE283F46A7C3006"
|
||||
"15","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"16","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"17","1024","1053","True","02_Copia_escrituras.pdf","doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117.bin","Clientes/4/Etapas/1024/doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117.bin","doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117-02_Copia_escrituras.pdf","Clientes/4/Etapas/1024/doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117-02_Copia_escrituras.pdf","44497","DE63A4F755D5199D1EB98A024C03627B1AB698403481CE8C6BC5D92E7E8746CC"
|
||||
"18","1024","1046","True","04_Dictamen_uso_suelo.pdf","doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59.bin","Clientes/4/Etapas/1024/doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59.bin","doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59-04_Dictamen_uso_suelo.pdf","Clientes/4/Etapas/1024/doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59-04_Dictamen_uso_suelo.pdf","44359","AE0069AEC8DDBE09071581126BEA3272BC37A4D758A764BF8A05D58755F4BC28"
|
||||
"19","1024","1069","True","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"20","1024","1040","True","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"21","1024","1079","True","08_Constancia_no_adeudo_Agua_Hermosillo.pdf","doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c.bin","Clientes/4/Etapas/1024/doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c.bin","doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","Clientes/4/Etapas/1024/doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","44351","04CD6B0F2739837F7BD711819D031FB73BACD7675B752906EFE283F46A7C3006"
|
||||
"22","1024","1034","True","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"23","1024","1037","True","10_Comprobante_domicilio.pdf","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"24","1024","1082","False","11_Cedula_RFC.pdf","doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788.bin","Clientes/4/Etapas/1024/doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788.bin","doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788-11_Cedula_RFC.pdf","Clientes/4/Etapas/1024/doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788-11_Cedula_RFC.pdf","44347","75D97258546FDD49567B605CA676CD5DF97F539A7134F9A977BE14D9FA48F912"
|
||||
"25","1024","1080","False","12_Autorizaciones_CIDUE.pdf","doc-1024-1080-2337d1e8ab91435891a9332b5fd58262.bin","Clientes/4/Etapas/1024/doc-1024-1080-2337d1e8ab91435891a9332b5fd58262.bin","doc-1024-1080-2337d1e8ab91435891a9332b5fd58262-12_Autorizaciones_CIDUE.pdf","Clientes/4/Etapas/1024/doc-1024-1080-2337d1e8ab91435891a9332b5fd58262-12_Autorizaciones_CIDUE.pdf","44232","B68667D2A258EC28F3445017A42014A1CDEC4AD6686AE5FB4AD15B275B1D4E7E"
|
||||
"26","1024","1045","False","Croquis.png","doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin","Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin","doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png","Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"27","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"28","1024","1082","True","11_Cedula_RFC.pdf","doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c.bin","Clientes/4/Etapas/1024/doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c.bin","doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c-11_Cedula_RFC.pdf","Clientes/4/Etapas/1024/doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c-11_Cedula_RFC.pdf","44347","75D97258546FDD49567B605CA676CD5DF97F539A7134F9A977BE14D9FA48F912"
|
||||
"29","1024","1080","True","12_Autorizaciones_CIDUE.pdf","doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2.bin","Clientes/4/Etapas/1024/doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2.bin","doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2-12_Autorizaciones_CIDUE.pdf","Clientes/4/Etapas/1024/doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2-12_Autorizaciones_CIDUE.pdf","44232","B68667D2A258EC28F3445017A42014A1CDEC4AD6686AE5FB4AD15B275B1D4E7E"
|
||||
"30","1024","1045","True","Croquis.png","doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin","Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin","doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png","Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"31","1024","1057","True","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"32","1024","1051","True","01_Oficio_solicitud_obras_necesarias.pdf","doc-1024-1051-4037762f536045d59be5d818e2de6481.bin","Clientes/4/Etapas/1024/doc-1024-1051-4037762f536045d59be5d818e2de6481.bin","doc-1024-1051-4037762f536045d59be5d818e2de6481-01_Oficio_solicitud_obras_necesarias.pdf","Clientes/4/Etapas/1024/doc-1024-1051-4037762f536045d59be5d818e2de6481-01_Oficio_solicitud_obras_necesarias.pdf","44555","DDBDF6829D3A8F8587E42A768C32EF08AEE89848001C4E9B19EEE24480B75AB8"
|
||||
"33","1028","1053","True","02_Copia_escrituras.pdf","doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb.bin","Clientes/4/Etapas/1028/doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb.bin","doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb-02_Copia_escrituras.pdf","Clientes/4/Etapas/1028/doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb-02_Copia_escrituras.pdf","44497","DE63A4F755D5199D1EB98A024C03627B1AB698403481CE8C6BC5D92E7E8746CC"
|
||||
"34","1028","1046","True","04_Dictamen_uso_suelo.pdf","doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a.bin","Clientes/4/Etapas/1028/doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a.bin","doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a-04_Dictamen_uso_suelo.pdf","Clientes/4/Etapas/1028/doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a-04_Dictamen_uso_suelo.pdf","44359","AE0069AEC8DDBE09071581126BEA3272BC37A4D758A764BF8A05D58755F4BC28"
|
||||
"35","1028","1069","True","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"36","1028","1040","True","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"37","1028","1079","True","08_Constancia_no_adeudo_Agua_Hermosillo.pdf","doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733.bin","Clientes/4/Etapas/1028/doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733.bin","doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","Clientes/4/Etapas/1028/doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733-08_Constancia_no_adeudo_Agua_Hermosillo.pdf","44351","04CD6B0F2739837F7BD711819D031FB73BACD7675B752906EFE283F46A7C3006"
|
||||
"38","1028","1034","True","09_Acta_Constitutiva_empresa.pdf","doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"39","1028","1037","True","10_Comprobante_domicilio.pdf","doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"40","1028","1082","True","11_Cedula_RFC.pdf","doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338.bin","Clientes/4/Etapas/1028/doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338.bin","doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338-11_Cedula_RFC.pdf","Clientes/4/Etapas/1028/doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338-11_Cedula_RFC.pdf","44347","75D97258546FDD49567B605CA676CD5DF97F539A7134F9A977BE14D9FA48F912"
|
||||
"41","1028","1080","True","12_Autorizaciones_CIDUE.pdf","doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470.bin","Clientes/4/Etapas/1028/doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470.bin","doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470-12_Autorizaciones_CIDUE.pdf","Clientes/4/Etapas/1028/doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470-12_Autorizaciones_CIDUE.pdf","44232","B68667D2A258EC28F3445017A42014A1CDEC4AD6686AE5FB4AD15B275B1D4E7E"
|
||||
"42","1028","1045","True","Croquis.png","doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin","Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin","doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png","Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"43","1028","1057","True","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"44","1028","1051","True","01_Oficio_solicitud_obras_necesarias.pdf","doc-1028-1051-90d0c12832f9428abb0ac645be0c7156.bin","Clientes/4/Etapas/1028/doc-1028-1051-90d0c12832f9428abb0ac645be0c7156.bin","doc-1028-1051-90d0c12832f9428abb0ac645be0c7156-01_Oficio_solicitud_obras_necesarias.pdf","Clientes/4/Etapas/1028/doc-1028-1051-90d0c12832f9428abb0ac645be0c7156-01_Oficio_solicitud_obras_necesarias.pdf","44555","DDBDF6829D3A8F8587E42A768C32EF08AEE89848001C4E9B19EEE24480B75AB8"
|
||||
"45","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"46","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"47","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"48","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"49","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"50","1022","1040","False","VL103M user manual 20230921.pdf","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin","doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf","1146632","3C097C53A81FE7E60ECFB07A9FBD2163E8DB5DE7444050E0EC20ADAFCB7FBA3F"
|
||||
"51","1022","1045","False","BORRADOR EDISA.docx","doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin","Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin","doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx","Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx","16889","3074B0379B55A18B47EB06A4BAE47985B155CAC0583DE78B651988C7599A3C77"
|
||||
"52","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"53","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"54","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"55","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"56","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"57","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"58","1022","1057","False","65007.jpeg","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin","doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg","128129","0F80A31813107978A32D13201884611FB35347E738BFDC4538D1ECE97FAD2081"
|
||||
"59","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"60","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"61","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"62","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin","doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"63","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"64","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"65","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"66","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"67","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin","doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"68","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"69","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"70","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"71","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"72","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"73","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin","doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"74","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"75","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"76","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"77","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin","doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"78","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"79","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"80","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"81","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin","doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"82","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"83","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"84","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"85","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"86","1024","1069","False","05_Carta_poder_representante_legal.pdf","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin","doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"87","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"88","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"89","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"90","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"91","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"92","1024","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin","doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"93","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"94","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"95","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"96","1024","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin","doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"97","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"98","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"99","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"100","1024","1037","False","10_Comprobante_domicilio.pdf","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin","doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"101","1024","1045","False","Croquis.png","doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin","Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin","doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png","Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"102","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"103","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"104","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"105","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"106","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"107","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"108","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin","doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"109","1024","1045","False","Croquis.png","doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin","Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin","doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png","Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"110","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"111","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"112","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"113","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"114","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"115","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"116","1024","1057","False","Identificación Oficial.jpg","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin","doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"117","1028","1069","False","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"118","1028","1069","False","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"119","1028","1069","False","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"120","1028","1069","False","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"121","1028","1069","False","05_Carta_poder_representante_legal.pdf","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin","doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf","44650","A40E9C9A5FBA9E40B133993051C39288D8A498CC71EBCFB354C2C9D73FA064F1"
|
||||
"122","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"123","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"124","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"125","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"126","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"127","1028","1040","False","06_Constancia_no_adeudo_tesoreria.pdf","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin","doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf","44515","4E2ADB80E976362F5A48D6D75FB421F193E2FB30AEE76F46132DB26BAD5CBF0F"
|
||||
"128","1028","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"129","1028","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"130","1028","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"131","1028","1034","False","09_Acta_Constitutiva_empresa.pdf","doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin","doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf","44281","4461F94E3DCBE9BCF0FB45C099E3F87B969AC59BAB62E6CD7EA97133A5CD33A3"
|
||||
"132","1028","1037","False","10_Comprobante_domicilio.pdf","doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"133","1028","1037","False","10_Comprobante_domicilio.pdf","doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"134","1028","1037","False","10_Comprobante_domicilio.pdf","doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"135","1028","1037","False","10_Comprobante_domicilio.pdf","doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin","doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf","44184","0222D8B303F2C0DA21863CA16BC160F2564963C14238009847C52C10526917D0"
|
||||
"136","1028","1045","False","Croquis.png","doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin","Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin","doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png","Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png","984403","3A507595006CDBB8A59830E0B9634D11DCB85A4CBED1F2A5F35023043947E632"
|
||||
"137","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"138","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"139","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"140","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"141","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"142","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
"143","1028","1057","False","Identificación Oficial.jpg","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin","doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg","55724","A5915340A4600EE8988CEDF4080E6828ED42FCD2DE432788102A328977A83076"
|
||||
|
243
Migracion_NombresDocumentos_20261003.sql
Normal file
@@ -0,0 +1,243 @@
|
||||
-- Migración de nombres físicos autorizada el 2026-10-03.
|
||||
-- Requiere copias verificadas con el inventario CSV antes de ejecutarse.
|
||||
-- Respaldo: Respaldo_NombresDocumentos_20261003.
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
DECLARE @Mapeo TABLE
|
||||
(
|
||||
CveDocumentoSolicitud int PRIMARY KEY,
|
||||
NombreAnterior varchar(255) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
RutaAnterior varchar(1000) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
NombreNuevo varchar(255) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
RutaNueva varchar(1000) COLLATE Modern_Spanish_CS_AS NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Mapeo
|
||||
(CveDocumentoSolicitud, NombreAnterior, RutaAnterior, NombreNuevo, RutaNueva)
|
||||
VALUES
|
||||
(3, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(4, N'doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin', N'Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin', N'doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx', N'Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx'),
|
||||
(5, N'doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b.bin', N'Clientes/1006/Etapas/1022/doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b.bin', N'doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b-ACTIVIDADES LETYYYY.docx', N'Clientes/1006/Etapas/1022/doc-1022-1046-c3b1e27e553449a7b5a4545222b63b0b-ACTIVIDADES LETYYYY.docx'),
|
||||
(6, N'doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791.bin', N'Clientes/1006/Etapas/1022/doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791.bin', N'doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791-Recibo-Ago (1).pdf', N'Clientes/1006/Etapas/1022/doc-1022-1051-b0ea49a4b15241e5a6010a8b890b9791-Recibo-Ago (1).pdf'),
|
||||
(7, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(8, N'doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c.bin', N'Clientes/1006/Etapas/1022/doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c.bin', N'doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c-Etapa1_10_lotes.gis', N'Clientes/1006/Etapas/1022/doc-1022-1053-53864978166e40c2b3c7e06dd7c6333c-Etapa1_10_lotes.gis'),
|
||||
(9, N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(10, N'doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7.bin', N'Clientes/4/Etapas/1024/doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7.bin', N'doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7-02_Copia_escrituras.pdf', N'Clientes/4/Etapas/1024/doc-1024-1053-4026eac60fde4d57aca2ed30325c7aa7-02_Copia_escrituras.pdf'),
|
||||
(11, N'doc-1024-1046-168182c76cb843cbb3a2aff986bff057.bin', N'Clientes/4/Etapas/1024/doc-1024-1046-168182c76cb843cbb3a2aff986bff057.bin', N'doc-1024-1046-168182c76cb843cbb3a2aff986bff057-04_Dictamen_uso_suelo.pdf', N'Clientes/4/Etapas/1024/doc-1024-1046-168182c76cb843cbb3a2aff986bff057-04_Dictamen_uso_suelo.pdf'),
|
||||
(12, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(13, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(14, N'doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5.bin', N'doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5-08_Constancia_no_adeudo_Agua_Hermosillo.pdf', N'Clientes/4/Etapas/1024/doc-1024-1079-b838d1c6a81948a0ad275d93dca3b0f5-08_Constancia_no_adeudo_Agua_Hermosillo.pdf'),
|
||||
(15, N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(16, N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf'),
|
||||
(17, N'doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117.bin', N'Clientes/4/Etapas/1024/doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117.bin', N'doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117-02_Copia_escrituras.pdf', N'Clientes/4/Etapas/1024/doc-1024-1053-393eb44b58d24c128d4b5cc5090cc117-02_Copia_escrituras.pdf'),
|
||||
(18, N'doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59.bin', N'Clientes/4/Etapas/1024/doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59.bin', N'doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59-04_Dictamen_uso_suelo.pdf', N'Clientes/4/Etapas/1024/doc-1024-1046-746dbd30e6f343338537a9e5e0b3ee59-04_Dictamen_uso_suelo.pdf'),
|
||||
(19, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(20, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(21, N'doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c.bin', N'Clientes/4/Etapas/1024/doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c.bin', N'doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c-08_Constancia_no_adeudo_Agua_Hermosillo.pdf', N'Clientes/4/Etapas/1024/doc-1024-1079-b25d1e7c30b0443cb66423c56c45c46c-08_Constancia_no_adeudo_Agua_Hermosillo.pdf'),
|
||||
(22, N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(23, N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf'),
|
||||
(24, N'doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788.bin', N'Clientes/4/Etapas/1024/doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788.bin', N'doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788-11_Cedula_RFC.pdf', N'Clientes/4/Etapas/1024/doc-1024-1082-02f16c7d84fb4781ae5f7e5280422788-11_Cedula_RFC.pdf'),
|
||||
(25, N'doc-1024-1080-2337d1e8ab91435891a9332b5fd58262.bin', N'Clientes/4/Etapas/1024/doc-1024-1080-2337d1e8ab91435891a9332b5fd58262.bin', N'doc-1024-1080-2337d1e8ab91435891a9332b5fd58262-12_Autorizaciones_CIDUE.pdf', N'Clientes/4/Etapas/1024/doc-1024-1080-2337d1e8ab91435891a9332b5fd58262-12_Autorizaciones_CIDUE.pdf'),
|
||||
(26, N'doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin', N'Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin', N'doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png', N'Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png'),
|
||||
(27, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(28, N'doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c.bin', N'Clientes/4/Etapas/1024/doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c.bin', N'doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c-11_Cedula_RFC.pdf', N'Clientes/4/Etapas/1024/doc-1024-1082-d9c8ba3f888249ae918d7dffbbf6764c-11_Cedula_RFC.pdf'),
|
||||
(29, N'doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2.bin', N'Clientes/4/Etapas/1024/doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2.bin', N'doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2-12_Autorizaciones_CIDUE.pdf', N'Clientes/4/Etapas/1024/doc-1024-1080-f691bac55afb4c6084d21a7d2ab8f3a2-12_Autorizaciones_CIDUE.pdf'),
|
||||
(30, N'doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin', N'Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin', N'doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png', N'Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png'),
|
||||
(31, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(32, N'doc-1024-1051-4037762f536045d59be5d818e2de6481.bin', N'Clientes/4/Etapas/1024/doc-1024-1051-4037762f536045d59be5d818e2de6481.bin', N'doc-1024-1051-4037762f536045d59be5d818e2de6481-01_Oficio_solicitud_obras_necesarias.pdf', N'Clientes/4/Etapas/1024/doc-1024-1051-4037762f536045d59be5d818e2de6481-01_Oficio_solicitud_obras_necesarias.pdf'),
|
||||
(33, N'doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb.bin', N'Clientes/4/Etapas/1028/doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb.bin', N'doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb-02_Copia_escrituras.pdf', N'Clientes/4/Etapas/1028/doc-1028-1053-c2b0275d99924d3784d7aec44c0b8beb-02_Copia_escrituras.pdf'),
|
||||
(34, N'doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a.bin', N'Clientes/4/Etapas/1028/doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a.bin', N'doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a-04_Dictamen_uso_suelo.pdf', N'Clientes/4/Etapas/1028/doc-1028-1046-c98e40e90f3b41cdb810222241f3fc9a-04_Dictamen_uso_suelo.pdf'),
|
||||
(35, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(36, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(37, N'doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733.bin', N'Clientes/4/Etapas/1028/doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733.bin', N'doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733-08_Constancia_no_adeudo_Agua_Hermosillo.pdf', N'Clientes/4/Etapas/1028/doc-1028-1079-9be2156047bc4828b3e43b67fe3f6733-08_Constancia_no_adeudo_Agua_Hermosillo.pdf'),
|
||||
(38, N'doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(39, N'doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf'),
|
||||
(40, N'doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338.bin', N'Clientes/4/Etapas/1028/doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338.bin', N'doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338-11_Cedula_RFC.pdf', N'Clientes/4/Etapas/1028/doc-1028-1082-a21ee3513b5a4fe3b1f5f8f237ddc338-11_Cedula_RFC.pdf'),
|
||||
(41, N'doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470.bin', N'Clientes/4/Etapas/1028/doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470.bin', N'doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470-12_Autorizaciones_CIDUE.pdf', N'Clientes/4/Etapas/1028/doc-1028-1080-2fb84cc84de24223a9fcdeaf1fcd2470-12_Autorizaciones_CIDUE.pdf'),
|
||||
(42, N'doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin', N'Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin', N'doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png', N'Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png'),
|
||||
(43, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(44, N'doc-1028-1051-90d0c12832f9428abb0ac645be0c7156.bin', N'Clientes/4/Etapas/1028/doc-1028-1051-90d0c12832f9428abb0ac645be0c7156.bin', N'doc-1028-1051-90d0c12832f9428abb0ac645be0c7156-01_Oficio_solicitud_obras_necesarias.pdf', N'Clientes/4/Etapas/1028/doc-1028-1051-90d0c12832f9428abb0ac645be0c7156-01_Oficio_solicitud_obras_necesarias.pdf'),
|
||||
(45, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(46, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(47, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(48, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(49, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(50, N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd.bin', N'doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf', N'Clientes/1006/Etapas/1022/doc-1022-1040-b6e404e6e7dc4597860185076b3289dd-VL103M user manual 20230921.pdf'),
|
||||
(51, N'doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin', N'Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb.bin', N'doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx', N'Clientes/1006/Etapas/1022/doc-1022-1045-b8d0648d970b4cababc65f30c58b1ccb-BORRADOR EDISA.docx'),
|
||||
(52, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(53, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(54, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(55, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(56, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(57, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(58, N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422.bin', N'doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg', N'Clientes/1006/Etapas/1022/doc-1022-1057-626fd5ba8cc747fcae64ad2c8466f422-65007.jpeg'),
|
||||
(59, N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(60, N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(61, N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(62, N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42.bin', N'doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-3212891ee8f847aba1e83b01fc27ef42-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(63, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(64, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(65, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(66, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(67, N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8.bin', N'doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-1c7a3c7eb01f44acac908819648f3ca8-05_Carta_poder_representante_legal.pdf'),
|
||||
(68, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(69, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(70, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(71, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(72, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(73, N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971.bin', N'doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-cfb6478de0c64aa8933fa2df00de1971-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(74, N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(75, N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(76, N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(77, N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba.bin', N'doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-703001ed04cd4768805ea52d87c496ba-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(78, N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf'),
|
||||
(79, N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf'),
|
||||
(80, N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf'),
|
||||
(81, N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096.bin', N'doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-251daa4398b44a56bb95dcd11326c096-10_Comprobante_domicilio.pdf'),
|
||||
(82, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(83, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(84, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(85, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(86, N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77.bin', N'doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1024/doc-1024-1069-a126b490c1e24edbab7b044bf0549e77-05_Carta_poder_representante_legal.pdf'),
|
||||
(87, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(88, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(89, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(90, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(91, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(92, N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d.bin', N'doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1024/doc-1024-1040-52f4c0205ee1446b884f6c64f20e505d-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(93, N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(94, N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(95, N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(96, N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5.bin', N'doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1024/doc-1024-1034-1f93d872f1c549988ab7b6f3f9b574f5-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(97, N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf'),
|
||||
(98, N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf'),
|
||||
(99, N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf'),
|
||||
(100, N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f.bin', N'doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1024/doc-1024-1037-8ab956638dc442e49632d23459f4cb2f-10_Comprobante_domicilio.pdf'),
|
||||
(101, N'doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin', N'Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28.bin', N'doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png', N'Clientes/4/Etapas/1024/doc-1024-1045-d447e83e74d14977957ca05ed2465c28-Croquis.png'),
|
||||
(102, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(103, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(104, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(105, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(106, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(107, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(108, N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e.bin', N'doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-a00c7eb989a64e47baec43163755e90e-Identificación Oficial.jpg'),
|
||||
(109, N'doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin', N'Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a.bin', N'doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png', N'Clientes/4/Etapas/1024/doc-1024-1045-61379c693d6241898e7cf30cffd8658a-Croquis.png'),
|
||||
(110, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(111, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(112, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(113, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(114, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(115, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(116, N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3.bin', N'doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg', N'Clientes/4/Etapas/1024/doc-1024-1057-6f6f616d9d894e549d344781acf4b1f3-Identificación Oficial.jpg'),
|
||||
(117, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(118, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(119, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(120, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(121, N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713.bin', N'doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf', N'Clientes/4/Etapas/1028/doc-1028-1069-320a3b0bf9294a92be5ebf802fcd4713-05_Carta_poder_representante_legal.pdf'),
|
||||
(122, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(123, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(124, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(125, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(126, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(127, N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072.bin', N'doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf', N'Clientes/4/Etapas/1028/doc-1028-1040-9bc673275f414c8d8d320e9bbf698072-06_Constancia_no_adeudo_tesoreria.pdf'),
|
||||
(128, N'doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(129, N'doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(130, N'doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(131, N'doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495.bin', N'doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf', N'Clientes/4/Etapas/1028/doc-1028-1034-583b7009cab246ed8287200ce7082495-09_Acta_Constitutiva_empresa.pdf'),
|
||||
(132, N'doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf'),
|
||||
(133, N'doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf'),
|
||||
(134, N'doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf'),
|
||||
(135, N'doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915.bin', N'doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf', N'Clientes/4/Etapas/1028/doc-1028-1037-06adb9de68924cebafe0052e68b83915-10_Comprobante_domicilio.pdf'),
|
||||
(136, N'doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin', N'Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df.bin', N'doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png', N'Clientes/4/Etapas/1028/doc-1028-1045-7f4784759eaf43f09e2a6433309008df-Croquis.png'),
|
||||
(137, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(138, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(139, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(140, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(141, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(142, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg'),
|
||||
(143, N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c.bin', N'doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg', N'Clientes/4/Etapas/1028/doc-1028-1057-657aeb02d955432c8a9f4a1a12042c1c-Identificación Oficial.jpg');
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
SELECT documento.*
|
||||
INTO #Antes
|
||||
FROM dbo.Tra_DocumentosSolicitud AS documento WITH (TABLOCKX, HOLDLOCK);
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Mapeo AS mapeo
|
||||
LEFT JOIN #Antes AS documento ON documento.CveDocumentoSolicitud = mapeo.CveDocumentoSolicitud
|
||||
WHERE documento.CveDocumentoSolicitud IS NULL
|
||||
OR documento.NombreArchivoFisico IS NULL
|
||||
OR documento.RutaArchivo IS NULL
|
||||
OR NOT
|
||||
(
|
||||
(documento.NombreArchivoFisico = mapeo.NombreAnterior AND documento.RutaArchivo = mapeo.RutaAnterior)
|
||||
OR (documento.NombreArchivoFisico = mapeo.NombreNuevo AND documento.RutaArchivo = mapeo.RutaNueva)
|
||||
)
|
||||
)
|
||||
THROW 51000, 'El inventario cambió. Revisar antes de migrar.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM #Antes AS documento
|
||||
INNER JOIN @Mapeo AS mapeo ON documento.RutaArchivo = mapeo.RutaAnterior
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Mapeo AS conocido
|
||||
WHERE conocido.CveDocumentoSolicitud = documento.CveDocumentoSolicitud
|
||||
)
|
||||
)
|
||||
THROW 51001, 'Existen nuevas referencias a los archivos anteriores.', 1;
|
||||
|
||||
UPDATE documento
|
||||
SET NombreArchivoFisico = mapeo.NombreNuevo,
|
||||
RutaArchivo = mapeo.RutaNueva
|
||||
FROM dbo.Tra_DocumentosSolicitud AS documento
|
||||
INNER JOIN @Mapeo AS mapeo ON documento.CveDocumentoSolicitud = mapeo.CveDocumentoSolicitud
|
||||
WHERE documento.NombreArchivoFisico = mapeo.NombreAnterior
|
||||
AND documento.RutaArchivo = mapeo.RutaAnterior;
|
||||
|
||||
DECLARE @Actualizados int = @@ROWCOUNT;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT [CveDocumentoSolicitud], [CveSolicitud], [CveTipoDocumento], [NombreArchivo], [ContentType], [TamanoBytes], [ComentarioCliente], [ComentarioAdministrativo], [EsAprobado], [CveUsuarioCarga], [CveUsuarioRevisa], [FechaRevision], [FechaAlta], [UltimaNota], [FechaDocumento], [FechaVencimiento], [EsActivo], [CveFraccionamientoEtapa], [Vencido], [CveTipoTramite]
|
||||
FROM #Antes
|
||||
EXCEPT
|
||||
SELECT [CveDocumentoSolicitud], [CveSolicitud], [CveTipoDocumento], [NombreArchivo], [ContentType], [TamanoBytes], [ComentarioCliente], [ComentarioAdministrativo], [EsAprobado], [CveUsuarioCarga], [CveUsuarioRevisa], [FechaRevision], [FechaAlta], [UltimaNota], [FechaDocumento], [FechaVencimiento], [EsActivo], [CveFraccionamientoEtapa], [Vencido], [CveTipoTramite]
|
||||
FROM dbo.Tra_DocumentosSolicitud
|
||||
)
|
||||
OR EXISTS
|
||||
(
|
||||
SELECT [CveDocumentoSolicitud], [CveSolicitud], [CveTipoDocumento], [NombreArchivo], [ContentType], [TamanoBytes], [ComentarioCliente], [ComentarioAdministrativo], [EsAprobado], [CveUsuarioCarga], [CveUsuarioRevisa], [FechaRevision], [FechaAlta], [UltimaNota], [FechaDocumento], [FechaVencimiento], [EsActivo], [CveFraccionamientoEtapa], [Vencido], [CveTipoTramite]
|
||||
FROM dbo.Tra_DocumentosSolicitud
|
||||
EXCEPT
|
||||
SELECT [CveDocumentoSolicitud], [CveSolicitud], [CveTipoDocumento], [NombreArchivo], [ContentType], [TamanoBytes], [ComentarioCliente], [ComentarioAdministrativo], [EsAprobado], [CveUsuarioCarga], [CveUsuarioRevisa], [FechaRevision], [FechaAlta], [UltimaNota], [FechaDocumento], [FechaVencimiento], [EsActivo], [CveFraccionamientoEtapa], [Vencido], [CveTipoTramite]
|
||||
FROM #Antes
|
||||
)
|
||||
THROW 51002, 'Se detectó un cambio ajeno a las rutas.', 1;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Mapeo AS mapeo
|
||||
INNER JOIN dbo.Tra_DocumentosSolicitud AS documento ON documento.CveDocumentoSolicitud = mapeo.CveDocumentoSolicitud
|
||||
WHERE documento.NombreArchivoFisico <> mapeo.NombreNuevo
|
||||
OR documento.RutaArchivo <> mapeo.RutaNueva
|
||||
)
|
||||
THROW 51003, 'No se actualizaron todas las referencias.', 1;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
SELECT @Actualizados AS ReferenciasActualizadas;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 961 KiB After Width: | Height: | Size: 961 KiB |
|
Before Width: | Height: | Size: 961 KiB After Width: | Height: | Size: 961 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 961 KiB |
|
After Width: | Height: | Size: 54 KiB |
2602
Respaldo_NombresDocumentos_20261003/MetadatosAntes.xml
Normal file
@@ -70,6 +70,7 @@ namespace SIG.Web.AppCode.Configuration
|
||||
"~/Scripts/scrollsig.js",
|
||||
"~/Scripts/sig-grid-agrupado.js",
|
||||
"~/Scripts/Convenios.js",
|
||||
"~/Scripts/VisorGis.js",
|
||||
"~/Scripts/LotesEtapa.js"
|
||||
));
|
||||
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
|
||||
@@ -140,6 +141,7 @@ namespace SIG.Web.AppCode.Configuration
|
||||
"~/Styles/scrollsig.css",
|
||||
"~/Styles/sig-grid-agrupado.css",
|
||||
"~/Styles/Convenios.css",
|
||||
"~/Styles/VisorGis.css",
|
||||
"~/Styles/LotesEtapa.css",
|
||||
"~/Metronic/assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css",
|
||||
"~/Metronic/assets/global/plugins/bootstrap-toastr/toastr.min.css",
|
||||
|
||||
@@ -8,7 +8,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
TramiteDocumentoPreparedFile Prepare(
|
||||
TramiteDocumentoUploadContextModel context,
|
||||
Stream source,
|
||||
string previousRelativePath);
|
||||
string previousRelativePath,
|
||||
string nombreArchivoOriginal);
|
||||
|
||||
void Promote(TramiteDocumentoPreparedFile preparedFile);
|
||||
void Rollback(TramiteDocumentoPreparedFile preparedFile);
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Documentos;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
{
|
||||
// Los documentos y sus marcas particulares pertenecen a etapa y tipo de documento.
|
||||
// Los parámetros de trámite en carga se conservan por compatibilidad;
|
||||
// sólo los listados de requisitos utilizan el trámite como filtro.
|
||||
public interface ITramiteDocumentoRepository
|
||||
{
|
||||
DbResult<List<SolicitudDocumentoConfiguracionModel>> ListarConfiguracionSolicitud(
|
||||
@@ -12,7 +15,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int cveSolicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<bool> ActualizarVencimientoEtapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
@@ -30,7 +34,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int cveTipoDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<List<TramiteDocumentoSolicitudModel>> ListForDevelopment(
|
||||
int developmentId,
|
||||
@@ -52,7 +57,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int documentTypeId,
|
||||
int executingUser,
|
||||
string domainName,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<TramiteDocumentoUploadContextModel> GetStageUploadContext(
|
||||
int stageId,
|
||||
@@ -76,7 +82,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
DateTime? fechaDocumento = null,
|
||||
DateTime? fechaVencimiento = null,
|
||||
bool actualizarFechas = false,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<TramiteDocumentoVencimientoResultModel> ActualizarFechaVencimiento(
|
||||
int cveFraccionamiento,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
@@ -7,6 +7,9 @@ using SIG.Web.AppCode.Models.Documentos;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
{
|
||||
// Los documentos y sus marcas particulares pertenecen a etapa y tipo de documento.
|
||||
// Los parámetros de trámite en carga se conservan por compatibilidad;
|
||||
// sólo los listados de requisitos utilizan el trámite como filtro.
|
||||
public interface ITramiteDocumentoService
|
||||
{
|
||||
DbResult<List<SolicitudDocumentoConfiguracionModel>> ListarConfiguracionSolicitud(
|
||||
@@ -14,7 +17,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int cveSolicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<bool> ActualizarVencimientoEtapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
@@ -32,7 +36,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int cveTipoDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<List<TramiteDocumentoSolicitudModel>> ListForDevelopment(
|
||||
int developmentId,
|
||||
@@ -54,7 +59,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
int documentTypeId,
|
||||
int executingUser,
|
||||
string domainName,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<TramiteDocumentoSaveResultModel> Upload(
|
||||
int developmentId,
|
||||
@@ -69,7 +75,8 @@ namespace SIG.Web.AppCode.Contracts.Documentos
|
||||
string domainName,
|
||||
DateTime? fechaDocumento = null,
|
||||
DateTime? fechaVencimiento = null,
|
||||
int? cveFraccionamientoEtapa = null);
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null);
|
||||
|
||||
DbResult<bool> Eliminar(
|
||||
int cveFraccionamiento,
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
string ObtenerRutaFisica(ContextoGisFraccionamiento contexto);
|
||||
bool Existe(ContextoGisFraccionamiento contexto);
|
||||
void Guardar(ContextoGisFraccionamiento contexto, Stream origen);
|
||||
Stream GuardarOriginalZip(ContextoGisFraccionamiento contexto, Stream origen, long longitud);
|
||||
Stream AbrirLectura(ContextoGisFraccionamiento contexto);
|
||||
void Eliminar(ContextoGisFraccionamiento contexto);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,17 @@ namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
{
|
||||
public interface IRepositorioGisFraccionamiento
|
||||
{
|
||||
DbResult<List<CapaGisFraccionamiento>> ListarCapas(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<bool> GuardarCapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
CapaGisFraccionamiento capa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<ContextoGisFraccionamiento> ObtenerContexto(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
|
||||
@@ -7,6 +7,31 @@ namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
{
|
||||
public interface IServicioGisFraccionamiento
|
||||
{
|
||||
DbResult<ResultadoGuardadoGisFraccionamiento> DesvincularLote(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveFraccionamientoLote,
|
||||
string clavePoligono,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<ResultadoGuardadoGisFraccionamiento> VincularLote(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveFraccionamientoLote,
|
||||
string clavePoligono,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<List<CapaGisFraccionamiento>> ListarCapas(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<bool> GuardarCapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
CapaGisFraccionamiento capa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<VistaGisFraccionamiento> Obtener(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
|
||||
@@ -53,6 +53,24 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
"POST",
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
if (string.Equals(metodo, "DesvincularLote", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
DesvincularLote(contexto, actualUsuario);
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.Equals(metodo, "VincularLote", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
VincularLote(contexto, actualUsuario);
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.Equals(metodo, "GuardarCapa", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
GuardarCapa(contexto, actualUsuario);
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.Equals(metodo, "Save", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(metodo, "GuardarArchivo", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(metodo, "GuardarVinculos", StringComparison.OrdinalIgnoreCase))
|
||||
@@ -94,6 +112,21 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.Equals(metodo, "Capas", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
DbResult<List<CapaGisFraccionamiento>> capas =
|
||||
AppServices.ServicioGisFraccionamiento.ListarCapas(
|
||||
cveFraccionamientoEtapa, actualUsuario.CveUsuario, actualUsuario.NombreDominio);
|
||||
if (!capas.Success)
|
||||
{
|
||||
EscribirFalloResultado(contexto, capas, 400);
|
||||
return;
|
||||
}
|
||||
|
||||
EscribirJson(contexto, 200, new { success = true, data = capas.Data });
|
||||
return;
|
||||
}
|
||||
|
||||
if (string.Equals(metodo, "Context", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
ObtenerContexto(contexto, actualUsuario, cveFraccionamientoEtapa);
|
||||
@@ -162,6 +195,86 @@ namespace SIG.Web.Pages.Fraccionamientos
|
||||
});
|
||||
}
|
||||
|
||||
private static void VincularLote(HttpContext contexto, UserSessionModel actualUsuario)
|
||||
{
|
||||
int etapa;
|
||||
int lote;
|
||||
if (!IntentarObtenerCveEtapa(contexto, out etapa) ||
|
||||
!int.TryParse(contexto.Request.Form["CveFraccionamientoLote"], out lote))
|
||||
{
|
||||
EscribirJson(contexto, 400, new { success = false, message = "Seleccione una etapa y un lote válidos." });
|
||||
return;
|
||||
}
|
||||
|
||||
DbResult<ResultadoGuardadoGisFraccionamiento> resultado =
|
||||
AppServices.ServicioGisFraccionamiento.VincularLote(
|
||||
etapa, lote, contexto.Request.Form["ClavePoligono"],
|
||||
actualUsuario.CveUsuario, actualUsuario.NombreDominio);
|
||||
if (!resultado.Success)
|
||||
{
|
||||
EscribirFalloResultado(contexto, resultado, 400);
|
||||
return;
|
||||
}
|
||||
|
||||
EscribirJson(contexto, 200, new { success = true, message = "Lote vinculado correctamente." });
|
||||
}
|
||||
|
||||
private static void DesvincularLote(HttpContext contexto, UserSessionModel actualUsuario)
|
||||
{
|
||||
int etapa;
|
||||
int lote;
|
||||
if (!IntentarObtenerCveEtapa(contexto, out etapa) ||
|
||||
!int.TryParse(contexto.Request.Form["CveFraccionamientoLote"], out lote))
|
||||
{
|
||||
EscribirJson(contexto, 400, new { success = false, message = "Seleccione una etapa y un lote válidos." });
|
||||
return;
|
||||
}
|
||||
|
||||
var resultado = AppServices.ServicioGisFraccionamiento.DesvincularLote(
|
||||
etapa, lote, contexto.Request.Form["ClavePoligono"],
|
||||
actualUsuario.CveUsuario, actualUsuario.NombreDominio);
|
||||
if (!resultado.Success)
|
||||
{
|
||||
EscribirFalloResultado(contexto, resultado, 400);
|
||||
return;
|
||||
}
|
||||
|
||||
EscribirJson(contexto, 200, new { success = true, message = "Lote desvinculado correctamente." });
|
||||
}
|
||||
|
||||
private static void GuardarCapa(HttpContext contexto, UserSessionModel actualUsuario)
|
||||
{
|
||||
int etapa;
|
||||
bool visible;
|
||||
if (!IntentarObtenerCveEtapa(contexto, out etapa) ||
|
||||
!bool.TryParse(contexto.Request.Form["EsVisible"], out visible))
|
||||
{
|
||||
EscribirJson(contexto, 400, new
|
||||
{
|
||||
success = false,
|
||||
message = "Indique una etapa y configuración válidas."
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
CapaGisFraccionamiento capa = new CapaGisFraccionamiento
|
||||
{
|
||||
NombreCapa = contexto.Request.Form["NombreCapa"],
|
||||
TipoCapa = contexto.Request.Form["TipoCapa"],
|
||||
Color = contexto.Request.Form["Color"],
|
||||
EsVisible = visible
|
||||
};
|
||||
DbResult<bool> resultado = AppServices.ServicioGisFraccionamiento.GuardarCapa(
|
||||
etapa, capa, actualUsuario.CveUsuario, actualUsuario.NombreDominio);
|
||||
if (!resultado.Success)
|
||||
{
|
||||
EscribirFalloResultado(contexto, resultado, 400);
|
||||
return;
|
||||
}
|
||||
|
||||
EscribirJson(contexto, 200, new { success = true, message = "Capa guardada." });
|
||||
}
|
||||
|
||||
private static void Guardar(
|
||||
HttpContext contexto,
|
||||
UserSessionModel actualUsuario,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Convenios
|
||||
@@ -9,6 +9,7 @@ namespace SIG.Web.AppCode.Models.Convenios
|
||||
public int? CveCliente { get; set; }
|
||||
public int? CveFraccionamiento { get; set; }
|
||||
public int? CveFraccionamientoEtapa { get; set; }
|
||||
public int? CveTipoTramite { get; set; }
|
||||
public string Estatus { get; set; }
|
||||
public bool? ConSaldoPendiente { get; set; }
|
||||
}
|
||||
@@ -21,6 +22,8 @@ namespace SIG.Web.AppCode.Models.Convenios
|
||||
public int CveFraccionamiento { get; set; }
|
||||
public string Fraccionamiento { get; set; }
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveTipoTramite { get; set; }
|
||||
public string TipoTramite { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public string NumeroConvenio { get; set; }
|
||||
public string NumeroOficio { get; set; }
|
||||
@@ -38,6 +41,8 @@ namespace SIG.Web.AppCode.Models.Convenios
|
||||
public int CveConvenio { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveTipoTramite { get; set; }
|
||||
public string TipoTramite { get; set; }
|
||||
public string NumeroConvenio { get; set; }
|
||||
public string NumeroOficio { get; set; }
|
||||
public string Cliente { get; set; }
|
||||
@@ -97,6 +102,8 @@ namespace SIG.Web.AppCode.Models.Convenios
|
||||
{
|
||||
public int CveCliente { get; set; }
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveTipoTramite { get; set; }
|
||||
public string TipoTramite { get; set; }
|
||||
public string NumeroConvenio { get; set; }
|
||||
public string NumeroOficio { get; set; }
|
||||
public int? ViviendasAutorizadas { get; set; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Documentos
|
||||
@@ -6,6 +6,7 @@ namespace SIG.Web.AppCode.Models.Documentos
|
||||
[Serializable]
|
||||
public sealed class SolicitudDocumentoConfiguracionModel
|
||||
{
|
||||
public int CveTipoTramite { get; set; }
|
||||
public int CveSolicitud { get; set; }
|
||||
public int CveTipoDocumento { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
@@ -94,6 +95,16 @@ namespace SIG.Web.AppCode.Models.Documentos
|
||||
{
|
||||
get { return EsRequerido && !TieneArchivo; }
|
||||
}
|
||||
|
||||
public bool ImpideAvanzar
|
||||
{
|
||||
get
|
||||
{
|
||||
return EsRequerido &&
|
||||
(!TieneArchivo || EsAprobado != true || FechaExpirada ||
|
||||
(TieneVigencia && !FechaVencimiento.HasValue));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class TramiteDocumentoUploadContextModel
|
||||
|
||||
@@ -4,6 +4,16 @@ using System.IO;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Fraccionamientos
|
||||
{
|
||||
public sealed class CapaGisFraccionamiento
|
||||
{
|
||||
public string NombreCapa { get; set; }
|
||||
public string TipoCapa { get; set; }
|
||||
public string Color { get; set; }
|
||||
public bool EsVisible { get; set; }
|
||||
public string Geometria { get; set; }
|
||||
public int Elementos { get; set; }
|
||||
}
|
||||
|
||||
public sealed class ContextoGisFraccionamiento
|
||||
{
|
||||
public int CveCliente { get; set; }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Globalization;
|
||||
@@ -56,6 +56,11 @@ namespace SIG.Web.AppCode.Repositories.Convenios
|
||||
"@CveFraccionamientoEtapa",
|
||||
filtro.CveFraccionamientoEtapa,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando,
|
||||
"@CveTipoTramite",
|
||||
filtro.CveTipoTramite,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando,
|
||||
"@Estatus",
|
||||
@@ -150,6 +155,11 @@ namespace SIG.Web.AppCode.Repositories.Convenios
|
||||
"@CveFraccionamientoEtapa",
|
||||
solicitud.CveFraccionamientoEtapa,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando,
|
||||
"@CveTipoTramite",
|
||||
solicitud.CveTipoTramite,
|
||||
DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando,
|
||||
"@NumeroConvenio",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using SIG.Web.AppCode.Contracts.Database;
|
||||
@@ -22,7 +22,8 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
int cveSolicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
return QueryList<SolicitudDocumentoConfiguracionModel>(
|
||||
"dbo.PA_Tramites_SolicitudDocumentoConfiguracionList",
|
||||
@@ -31,6 +32,7 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
comando =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(comando, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(comando, "@CveTipoTramite", null, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveFraccionamiento", cveFraccionamiento, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
@@ -68,6 +70,8 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
comando, "@CveFraccionamiento", configuracion.CveFraccionamiento, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveSolicitud", configuracion.CveSolicitud, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveTipoTramite", null, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveTipoDocumento", configuracion.CveTipoDocumento, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
@@ -89,7 +93,8 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
int cveTipoDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
return Execute(
|
||||
"dbo.PA_Tramites_SolicitudDocumentoConfiguracionDelete",
|
||||
@@ -98,6 +103,7 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
comando =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(comando, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(comando, "@CveTipoTramite", null, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveFraccionamiento", cveFraccionamiento, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
@@ -171,7 +177,8 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
int documentTypeId,
|
||||
int executingUser,
|
||||
string domainName,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
return QueryOne<TramiteDocumentoUploadContextModel>(
|
||||
"dbo.PA_Tramites_DocumentoSolicitudUploadContextGet",
|
||||
@@ -180,6 +187,7 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
command =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(command, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@CveTipoTramite", null, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
command,
|
||||
"@CveFraccionamiento",
|
||||
@@ -244,7 +252,8 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
DateTime? fechaDocumento = null,
|
||||
DateTime? fechaVencimiento = null,
|
||||
bool actualizarFechas = false,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
return QueryOne<TramiteDocumentoSaveResultModel>(
|
||||
"dbo.PA_Tramites_DocumentoSolicitudSave",
|
||||
@@ -253,6 +262,7 @@ namespace SIG.Web.AppCode.Repositories.Documentos
|
||||
command =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(command, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@CveTipoTramite", null, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@CveFraccionamiento", developmentId, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@CveSolicitud", requestId, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(command, "@CveTipoDocumento", documentTypeId, DbType.Int32);
|
||||
|
||||
@@ -18,6 +18,44 @@ namespace SIG.Web.AppCode.Repositories.Fraccionamientos
|
||||
{
|
||||
}
|
||||
|
||||
public DbResult<List<CapaGisFraccionamiento>> ListarCapas(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
return QueryList<CapaGisFraccionamiento>(
|
||||
"dbo.PA_Fraccionamientos_EtapaGISCapasList",
|
||||
cveUsuarioEjecuta,
|
||||
nombreDominio,
|
||||
comando => StoredProcedureCommand.AddInput(
|
||||
comando, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32));
|
||||
}
|
||||
|
||||
public DbResult<bool> GuardarCapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
CapaGisFraccionamiento capa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
return Execute(
|
||||
"dbo.PA_Fraccionamientos_EtapaGISCapasSave",
|
||||
cveUsuarioEjecuta,
|
||||
nombreDominio,
|
||||
comando =>
|
||||
{
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@CveFraccionamientoEtapa", cveFraccionamientoEtapa, DbType.Int32);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@NombreCapa", capa.NombreCapa, DbType.String);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@TipoCapa", capa.TipoCapa, DbType.String);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@Color", capa.Color, DbType.String);
|
||||
StoredProcedureCommand.AddInput(
|
||||
comando, "@EsVisible", capa.EsVisible, DbType.Boolean);
|
||||
});
|
||||
}
|
||||
|
||||
public DbResult<ContextoGisFraccionamiento> ObtenerContexto(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
@@ -208,6 +208,11 @@ namespace SIG.Web.AppCode.Services.Convenios
|
||||
return "Seleccione el desarrollador del convenio.";
|
||||
}
|
||||
|
||||
if (solicitud.CveTipoTramite <= 0)
|
||||
{
|
||||
return "Seleccione el tipo de trámite del convenio.";
|
||||
}
|
||||
|
||||
if (solicitud.CveFraccionamientoEtapa <= 0)
|
||||
{
|
||||
return "Seleccione el fraccionamiento y etapa del convenio.";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Bitacora;
|
||||
using SIG.Web.AppCode.Models.Documentos;
|
||||
@@ -16,16 +16,15 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
? BitacoraTipoMovimiento.Eliminado
|
||||
: (anterior.EsParticular ? BitacoraTipoMovimiento.Editado : BitacoraTipoMovimiento.Agregado);
|
||||
var evento = BaseEvent(
|
||||
0, datos.CveSolicitud, datos.CveCliente, datos.CveFraccionamiento,
|
||||
0, datos.CveTipoTramite, datos.CveCliente, datos.CveFraccionamiento,
|
||||
datos.CveFraccionamientoEtapa, movimiento,
|
||||
actual == null
|
||||
? "Se retiró la configuración particular del documento; vuelve a aplicar la configuración general."
|
||||
: "Se configuró el documento para esta solicitud.");
|
||||
: "Se configuró el documento para esta etapa.");
|
||||
evento.NombreTablaSQL = "Tra_SolicitudDocumentoConfiguracion";
|
||||
evento.LlaveRegistro = null;
|
||||
evento.LlaveRegistroTexto = datos.CveFraccionamientoEtapa.ToString(System.Globalization.CultureInfo.InvariantCulture) + "|" +
|
||||
datos.CveSolicitud.ToString(System.Globalization.CultureInfo.InvariantCulture) +
|
||||
"|" + datos.CveTipoDocumento.ToString(System.Globalization.CultureInfo.InvariantCulture);
|
||||
datos.CveTipoDocumento.ToString(System.Globalization.CultureInfo.InvariantCulture);
|
||||
evento.Relaciones.RemoveAt(0);
|
||||
evento.Relaciones.Add(Relation(
|
||||
BitacoraTipoRelacion.Directa, evento.NombreTablaSQL, "CveFraccionamientoEtapa",
|
||||
@@ -36,7 +35,6 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
evento.Campos = new List<BitacoraCampoEventoModel>
|
||||
{
|
||||
Field("CveFraccionamientoEtapa", anterior.CveFraccionamientoEtapa, actual == null ? null : (object)actual.CveFraccionamientoEtapa),
|
||||
Field("CveSolicitud", anterior.CveSolicitud, actual == null ? null : (object)actual.CveSolicitud),
|
||||
Field("CveTipoDocumento", anterior.CveTipoDocumento, actual == null ? null : (object)actual.CveTipoDocumento),
|
||||
Field("EsRequerido", anterior.EsRequerido, actual == null ? null : (object)actual.EsRequerido),
|
||||
Field("EsCliente", anterior.EsCliente, actual == null ? null : (object)actual.EsCliente),
|
||||
@@ -57,7 +55,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
|
||||
var auditEvent = BaseEvent(
|
||||
change.CveDocumentoSolicitud,
|
||||
change.CveSolicitud,
|
||||
change.CveTipoTramite,
|
||||
change.CveCliente,
|
||||
change.CveFraccionamiento,
|
||||
change.CveFraccionamientoEtapa,
|
||||
@@ -67,8 +65,6 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
auditEvent.DiscriminarCamposSinCambios = false;
|
||||
auditEvent.Campos = new List<BitacoraCampoEventoModel>
|
||||
{
|
||||
Field("CveSolicitud", change.EsNuevo || change.CveSolicitud == 0 ? null : (object)change.CveSolicitud,
|
||||
change.CveSolicitud == 0 ? null : (object)change.CveSolicitud),
|
||||
Field("CveTipoDocumento", change.EsNuevo ? null : (object)change.CveTipoDocumento, change.CveTipoDocumento),
|
||||
Field("NombreArchivo", change.NombreArchivoAnterior, change.NombreArchivo),
|
||||
Field("NombreArchivoFisico", change.NombreArchivoFisicoAnterior, change.NombreArchivoFisico),
|
||||
@@ -96,7 +92,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
|
||||
var auditEvent = BaseEvent(
|
||||
change.CveDocumentoSolicitud,
|
||||
change.CveSolicitud,
|
||||
change.CveTipoTramite,
|
||||
change.CveCliente,
|
||||
change.CveFraccionamiento,
|
||||
change.CveFraccionamientoEtapa,
|
||||
@@ -121,7 +117,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
ModeloRegistroBitacora evento = BaseEvent(
|
||||
cambio.CveDocumentoSolicitud,
|
||||
cambio.CveSolicitud,
|
||||
cambio.CveTipoTramite,
|
||||
cambio.CveCliente,
|
||||
cambio.CveFraccionamiento,
|
||||
cambio.CveFraccionamientoEtapa,
|
||||
@@ -145,7 +141,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
ModeloRegistroBitacora evento = BaseEvent(
|
||||
cambio.CveDocumentoSolicitud,
|
||||
cambio.CveSolicitud,
|
||||
cambio.CveTipoTramite,
|
||||
cambio.CveCliente,
|
||||
cambio.CveFraccionamiento,
|
||||
cambio.CveFraccionamientoEtapa,
|
||||
@@ -169,7 +165,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
return BaseEvent(
|
||||
change.CveDocumentoSolicitud,
|
||||
change.CveSolicitud,
|
||||
change.CveTipoTramite,
|
||||
change.CveCliente,
|
||||
change.CveFraccionamiento,
|
||||
change.CveFraccionamientoEtapa,
|
||||
@@ -203,7 +199,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
|
||||
private static ModeloRegistroBitacora BaseEvent(
|
||||
int documentRequestId,
|
||||
int requestId,
|
||||
int cveTipoTramite,
|
||||
int clientId,
|
||||
int developmentId,
|
||||
int stageId,
|
||||
@@ -225,38 +221,28 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
"Tra_DocumentosSolicitud",
|
||||
"CveDocumentoSolicitud",
|
||||
documentRequestId,
|
||||
"Documento de la solicitud."));
|
||||
if (requestId > 0)
|
||||
{
|
||||
auditEvent.Relaciones.Add(
|
||||
Relation(
|
||||
BitacoraTipoRelacion.Relacionada,
|
||||
"Tra_Solicitudes",
|
||||
"CveSolicitud",
|
||||
requestId,
|
||||
"Solicitud del documento."));
|
||||
}
|
||||
"Documento de la etapa."));
|
||||
auditEvent.Relaciones.Add(
|
||||
Relation(
|
||||
BitacoraTipoRelacion.Relacionada,
|
||||
"Clientes",
|
||||
"CveCliente",
|
||||
clientId,
|
||||
"Cliente propietario de la solicitud."));
|
||||
"Cliente propietario de la etapa."));
|
||||
auditEvent.Relaciones.Add(
|
||||
Relation(
|
||||
BitacoraTipoRelacion.Relacionada,
|
||||
"Fraccionamientos",
|
||||
"CveFraccionamiento",
|
||||
developmentId,
|
||||
"Fraccionamiento de la solicitud."));
|
||||
"Fraccionamiento de la etapa."));
|
||||
auditEvent.Relaciones.Add(
|
||||
Relation(
|
||||
BitacoraTipoRelacion.Relacionada,
|
||||
"FraccionamientosEtapas",
|
||||
"CveFraccionamientoEtapa",
|
||||
stageId,
|
||||
"Etapa de la solicitud."));
|
||||
"Etapa de la etapa."));
|
||||
|
||||
return auditEvent;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Web.Hosting;
|
||||
using SIG.Web.AppCode.Contracts.Documentos;
|
||||
using SIG.Web.AppCode.Infrastructure;
|
||||
using SIG.Web.AppCode.Models.Documentos;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Documentos
|
||||
@@ -13,7 +15,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
public TramiteDocumentoPreparedFile Prepare(
|
||||
TramiteDocumentoUploadContextModel context,
|
||||
Stream source,
|
||||
string previousRelativePath)
|
||||
string previousRelativePath,
|
||||
string nombreArchivoOriginal)
|
||||
{
|
||||
if (context == null)
|
||||
{
|
||||
@@ -37,19 +40,30 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
|
||||
string physicalFileName = string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
"doc-{0}-{1}-{2}.bin",
|
||||
"doc-{0}-{1}-{2}-{3}",
|
||||
context.CveFraccionamientoEtapa,
|
||||
context.CveTipoDocumento,
|
||||
Guid.NewGuid().ToString("N"));
|
||||
Guid.NewGuid().ToString("N"),
|
||||
ObtenerNombreOriginalSeguro(nombreArchivoOriginal));
|
||||
string relativePath = Path.Combine(
|
||||
relativeDirectory,
|
||||
physicalFileName);
|
||||
string finalPath = SafeResolve(relativePath);
|
||||
string finalPath = Path.Combine(directory, physicalFileName);
|
||||
string temporaryPath = Path.Combine(
|
||||
directory,
|
||||
"." + physicalFileName + "." +
|
||||
Guid.NewGuid().ToString("N") + ".tmp");
|
||||
|
||||
// También se valida el temporal, cuyo nombre es más largo que el definitivo.
|
||||
if (physicalFileName.Length > 255 || Path.GetFileName(temporaryPath).Length > 255 ||
|
||||
finalPath.Length >= 260 || temporaryPath.Length >= 260)
|
||||
{
|
||||
throw new ControlledApplicationException(
|
||||
"El nombre del archivo es demasiado largo. Acórtelo conservando su extensión.");
|
||||
}
|
||||
|
||||
finalPath = SafeResolve(relativePath);
|
||||
|
||||
if (source.CanSeek)
|
||||
{
|
||||
source.Position = 0;
|
||||
@@ -76,6 +90,53 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
};
|
||||
}
|
||||
|
||||
internal static string ObtenerNombreOriginalSeguro(string nombreArchivoOriginal)
|
||||
{
|
||||
string rutaNombre = nombreArchivoOriginal ?? string.Empty;
|
||||
// Algunas configuraciones de .NET Framework validan antes de extraer el nombre.
|
||||
// Los separadores se conservan aquí para que GetFileName descarte la ruta completa.
|
||||
foreach (char caracter in Path.GetInvalidFileNameChars())
|
||||
{
|
||||
if (caracter != Path.DirectorySeparatorChar && caracter != Path.AltDirectorySeparatorChar)
|
||||
{
|
||||
rutaNombre = rutaNombre.Replace(caracter, '_');
|
||||
}
|
||||
}
|
||||
|
||||
string nombre = Path.GetFileName(rutaNombre);
|
||||
nombre = nombre.TrimEnd(' ', '.');
|
||||
string extension = Path.GetExtension(nombre);
|
||||
string baseNombre = Path.GetFileNameWithoutExtension(nombre);
|
||||
while (baseNombre.Contains(".."))
|
||||
{
|
||||
baseNombre = baseNombre.Replace("..", "_");
|
||||
}
|
||||
baseNombre = baseNombre.TrimEnd(' ', '.');
|
||||
|
||||
if (string.IsNullOrWhiteSpace(baseNombre) || baseNombre == "." ||
|
||||
string.IsNullOrWhiteSpace(extension))
|
||||
{
|
||||
throw new ControlledApplicationException(
|
||||
"Indique un nombre de archivo con nombre y extensión válidos.");
|
||||
}
|
||||
|
||||
nombre = baseNombre + extension;
|
||||
// Las columnas de nombre físico y ruta usan varchar con Modern_Spanish_CS_AS.
|
||||
// Evita guardar una ruta que SQL sustituiría por signos de interrogación.
|
||||
try
|
||||
{
|
||||
Encoding.GetEncoding(1252, EncoderFallback.ExceptionFallback,
|
||||
DecoderFallback.ExceptionFallback).GetBytes(nombre);
|
||||
}
|
||||
catch (EncoderFallbackException)
|
||||
{
|
||||
throw new ControlledApplicationException(
|
||||
"El nombre contiene caracteres que no admite el almacenamiento actual. Renombre el archivo conservando su extensión.");
|
||||
}
|
||||
|
||||
return nombre;
|
||||
}
|
||||
|
||||
public void Promote(TramiteDocumentoPreparedFile preparedFile)
|
||||
{
|
||||
ValidatePrepared(preparedFile);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
@@ -8,6 +8,7 @@ using SIG.Web.AppCode.Contracts.Documentos;
|
||||
using SIG.Web.AppCode.Contracts.Tramites;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Session;
|
||||
using SIG.Web.AppCode.Infrastructure;
|
||||
using SIG.Web.AppCode.Infrastructure.Transactions;
|
||||
using SIG.Web.AppCode.Models.Bitacora;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
@@ -20,7 +21,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
public sealed class TramiteDocumentoService
|
||||
: ITramiteDocumentoService
|
||||
{
|
||||
private const int GisDocumentTypeId = 2;
|
||||
private const int GisDocumentTypeId = 1016;
|
||||
|
||||
private readonly ITramiteDocumentoRepository _repository;
|
||||
private readonly ITramiteSolicitudRepository _repositorioSolicitud;
|
||||
@@ -65,7 +66,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
int cveSolicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
UserSessionModel usuario = _contextoUsuario.GetCurrentUser();
|
||||
if (usuario == null || usuario.CveUsuario != cveUsuarioEjecuta)
|
||||
@@ -94,7 +96,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
}
|
||||
|
||||
return _repository.ListarConfiguracionSolicitud(
|
||||
cveFraccionamiento, cveSolicitud, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa);
|
||||
cveFraccionamiento, cveSolicitud, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa, cveTipoTramite);
|
||||
}
|
||||
|
||||
public DbResult<bool> GuardarConfiguracionSolicitud(
|
||||
@@ -114,7 +116,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
configuracion.CveSolicitud,
|
||||
cveUsuarioEjecuta,
|
||||
nombreDominio,
|
||||
configuracion.CveFraccionamientoEtapa == 0 ? (int?)null : configuracion.CveFraccionamientoEtapa);
|
||||
configuracion.CveFraccionamientoEtapa == 0 ? (int?)null : configuracion.CveFraccionamientoEtapa,
|
||||
configuracion.CveTipoTramite);
|
||||
if (!consulta.Success)
|
||||
{
|
||||
return CopyFailure<List<SolicitudDocumentoConfiguracionModel>, bool>(
|
||||
@@ -128,6 +131,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
return Fail<bool>("El tipo de documento ya no está disponible.");
|
||||
}
|
||||
|
||||
configuracion.CveTipoTramite = 0;
|
||||
|
||||
var resultado = _repository.GuardarConfiguracionSolicitud(
|
||||
configuracion, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!resultado.Success)
|
||||
@@ -170,12 +175,13 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
int cveTipoDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
using (var transaccion = new TransactionLogic(IsolationLevel.Serializable))
|
||||
{
|
||||
var consulta = ListarConfiguracionSolicitud(
|
||||
cveFraccionamiento, cveSolicitud, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa);
|
||||
cveFraccionamiento, cveSolicitud, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa, cveTipoTramite);
|
||||
if (!consulta.Success)
|
||||
{
|
||||
return CopyFailure<List<SolicitudDocumentoConfiguracionModel>, bool>(
|
||||
@@ -190,7 +196,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
}
|
||||
|
||||
var resultado = _repository.EliminarConfiguracionSolicitud(
|
||||
cveFraccionamiento, cveSolicitud, cveTipoDocumento, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa);
|
||||
cveFraccionamiento, cveSolicitud, cveTipoDocumento, cveUsuarioEjecuta, nombreDominio, cveFraccionamientoEtapa, cveTipoTramite);
|
||||
if (!resultado.Success)
|
||||
{
|
||||
return resultado;
|
||||
@@ -291,7 +297,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
foreach (TramiteDocumentoSolicitudModel documento in documentos)
|
||||
{
|
||||
documento.PuedeActualizarArchivo =
|
||||
!documento.EsGis && (esAdministrador || !documento.EsFinalSolicitud);
|
||||
!documento.EsGis;
|
||||
documento.PuedeRevisar = esAdministrador && documento.TieneArchivo;
|
||||
}
|
||||
|
||||
@@ -313,11 +319,6 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
return "El documento corresponde al administrador.";
|
||||
}
|
||||
|
||||
if (documento.EsFinalSolicitud && usuario.EsDesarrollador)
|
||||
{
|
||||
return "La solicitud ya está finalizada; no es posible modificar sus documentos.";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -327,7 +328,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
int documentTypeId,
|
||||
int executingUser,
|
||||
string domainName,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
if (developmentId <= 0 || (requestId <= 0 && !cveFraccionamientoEtapa.HasValue) || documentTypeId <= 0)
|
||||
{
|
||||
@@ -348,7 +350,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
documentTypeId,
|
||||
executingUser,
|
||||
domainName,
|
||||
cveFraccionamientoEtapa);
|
||||
cveFraccionamientoEtapa,
|
||||
cveTipoTramite);
|
||||
if (!resultado.Success || resultado.Data == null)
|
||||
{
|
||||
return resultado;
|
||||
@@ -373,7 +376,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
string domainName,
|
||||
DateTime? fechaDocumento = null,
|
||||
DateTime? fechaVencimiento = null,
|
||||
int? cveFraccionamientoEtapa = null)
|
||||
int? cveFraccionamientoEtapa = null,
|
||||
int? cveTipoTramite = null)
|
||||
{
|
||||
if (content == null || contentLength <= 0)
|
||||
{
|
||||
@@ -388,7 +392,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
documentTypeId,
|
||||
executingUser,
|
||||
domainName,
|
||||
cveFraccionamientoEtapa);
|
||||
cveFraccionamientoEtapa,
|
||||
cveTipoTramite);
|
||||
|
||||
if (!contextResult.Success || contextResult.Data == null)
|
||||
{
|
||||
@@ -433,7 +438,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
preparedFile = _fileStore.Prepare(
|
||||
uploadContext,
|
||||
content,
|
||||
uploadContext.RutaArchivoAnterior);
|
||||
uploadContext.RutaArchivoAnterior,
|
||||
originalFileName);
|
||||
|
||||
DbResult<TramiteDocumentoSaveResultModel> saveResult;
|
||||
|
||||
@@ -441,7 +447,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
DbResult<TramiteDocumentoUploadContextModel> contextoActual =
|
||||
GetUploadContext(
|
||||
developmentId, requestId, documentTypeId, executingUser, domainName, cveFraccionamientoEtapa);
|
||||
developmentId, requestId, documentTypeId, executingUser, domainName, cveFraccionamientoEtapa, cveTipoTramite);
|
||||
if (!contextoActual.Success || contextoActual.Data == null)
|
||||
{
|
||||
_fileStore.Rollback(preparedFile);
|
||||
@@ -463,7 +469,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
fechaDocumento,
|
||||
fechaVencimiento,
|
||||
true,
|
||||
uploadContext.CveFraccionamientoEtapa);
|
||||
uploadContext.CveFraccionamientoEtapa,
|
||||
uploadContext.CveTipoTramite);
|
||||
|
||||
if (!saveResult.Success || saveResult.Data == null)
|
||||
{
|
||||
@@ -526,8 +533,9 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
"No fue posible restaurar el archivo después de un error.");
|
||||
}
|
||||
|
||||
const string message =
|
||||
"No fue posible guardar el documento; favor de contactar a Sistemas.";
|
||||
string message = ex is ControlledApplicationException
|
||||
? ex.Message
|
||||
: "No fue posible guardar el documento; favor de contactar a Sistemas.";
|
||||
|
||||
ExceptionLogger.Log(
|
||||
ex,
|
||||
@@ -960,7 +968,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
DbResult<TramiteDocumentoUploadContextModel> contextResult =
|
||||
_repository.GetStageUploadContext(
|
||||
stageId,
|
||||
procedureTypeId,
|
||||
0,
|
||||
documentTypeId,
|
||||
executingUser,
|
||||
domainName);
|
||||
@@ -969,7 +977,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
return CopyFailure<TramiteDocumentoUploadContextModel, TramiteDocumentoSaveResultModel>(
|
||||
contextResult,
|
||||
"No fue posible obtener la solicitud asociada a la etapa.");
|
||||
"No fue posible obtener el contexto de documentos de la etapa.");
|
||||
}
|
||||
|
||||
string mensajeValidacion = ValidarCarga(contextResult.Data, executingUser);
|
||||
@@ -981,6 +989,14 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
TramiteDocumentoUploadContextModel uploadContext =
|
||||
contextResult.Data;
|
||||
|
||||
if (documentTypeId == GisDocumentTypeId &&
|
||||
uploadContext.CveDocumentoSolicitud > 0 &&
|
||||
uploadContext.EsAprobadoAnterior == true)
|
||||
{
|
||||
return Fail<TramiteDocumentoSaveResultModel>(
|
||||
"El archivo GIS de la etapa ya fue aprobado y no puede reemplazarse.");
|
||||
}
|
||||
|
||||
using (var transaction = new TransactionLogic())
|
||||
{
|
||||
DbResult<TramiteDocumentoSaveResultModel> result =
|
||||
@@ -996,7 +1012,8 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
null,
|
||||
executingUser,
|
||||
domainName,
|
||||
cveFraccionamientoEtapa: stageId);
|
||||
cveFraccionamientoEtapa: stageId,
|
||||
cveTipoTramite: null);
|
||||
|
||||
if (!result.Success || result.Data == null)
|
||||
{
|
||||
@@ -1049,7 +1066,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
DbResult<TramiteDocumentoUploadContextModel> contextResult =
|
||||
_repository.GetStageUploadContext(
|
||||
stageId,
|
||||
procedureTypeId,
|
||||
0,
|
||||
documentTypeId,
|
||||
executingUser,
|
||||
domainName);
|
||||
@@ -1058,7 +1075,7 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
{
|
||||
return CopyFailure<TramiteDocumentoUploadContextModel, bool>(
|
||||
contextResult,
|
||||
"No fue posible obtener la solicitud asociada a la etapa.");
|
||||
"No fue posible obtener el contexto de documentos de la etapa.");
|
||||
}
|
||||
|
||||
string mensajeValidacion = ValidarCarga(contextResult.Data, executingUser);
|
||||
@@ -1067,6 +1084,14 @@ namespace SIG.Web.AppCode.Services.Documentos
|
||||
return Fail<bool>(mensajeValidacion);
|
||||
}
|
||||
|
||||
if (documentTypeId == GisDocumentTypeId &&
|
||||
contextResult.Data.CveDocumentoSolicitud > 0 &&
|
||||
contextResult.Data.EsAprobadoAnterior == true)
|
||||
{
|
||||
return Fail<bool>(
|
||||
"El archivo GIS de la etapa ya fue aprobado y no puede eliminarse.");
|
||||
}
|
||||
|
||||
if (contextResult.Data.CveDocumentoSolicitud <= 0)
|
||||
{
|
||||
return DbResult<bool>.Ok(true);
|
||||
|
||||
@@ -96,6 +96,69 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
}
|
||||
}
|
||||
|
||||
public Stream GuardarOriginalZip(
|
||||
ContextoGisFraccionamiento contexto,
|
||||
Stream origen,
|
||||
long longitud)
|
||||
{
|
||||
const long limite = 30L * 1024 * 1024;
|
||||
if (origen == null)
|
||||
{
|
||||
throw new ArgumentNullException("origen");
|
||||
}
|
||||
if (longitud <= 0 || longitud > limite)
|
||||
{
|
||||
throw new InvalidDataException("El ZIP debe contener datos y no exceder 30 MB.");
|
||||
}
|
||||
|
||||
string directorio = Path.Combine(
|
||||
Path.GetDirectoryName(ObtenerRutaFisica(contexto)),
|
||||
"Etapas",
|
||||
contexto.CveFraccionamientoEtapa.ToString(System.Globalization.CultureInfo.InvariantCulture),
|
||||
"OriginalesGIS");
|
||||
Directory.CreateDirectory(directorio);
|
||||
string ruta = Path.Combine(directorio, "original-" + Guid.NewGuid().ToString("N") + ".zip");
|
||||
string temporal = ruta + ".tmp";
|
||||
|
||||
try
|
||||
{
|
||||
if (origen.CanSeek)
|
||||
{
|
||||
origen.Position = 0;
|
||||
}
|
||||
using (var destino = new FileStream(temporal, FileMode.CreateNew, FileAccess.Write, FileShare.None))
|
||||
{
|
||||
byte[] buffer = new byte[81920];
|
||||
long total = 0;
|
||||
int leidos;
|
||||
while ((leidos = origen.Read(buffer, 0, buffer.Length)) > 0)
|
||||
{
|
||||
total += leidos;
|
||||
if (total > longitud || total > limite)
|
||||
{
|
||||
throw new InvalidDataException("El tamaño recibido del ZIP no coincide con el indicado.");
|
||||
}
|
||||
destino.Write(buffer, 0, leidos);
|
||||
}
|
||||
if (total != longitud)
|
||||
{
|
||||
throw new InvalidDataException("La carga del ZIP está incompleta.");
|
||||
}
|
||||
destino.Flush(true);
|
||||
}
|
||||
File.Move(temporal, ruta);
|
||||
// El original permanece incluso si la conversión o el registro posterior fallan.
|
||||
return new FileStream(ruta, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (File.Exists(temporal))
|
||||
{
|
||||
File.Delete(temporal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Stream AbrirLectura(ContextoGisFraccionamiento contexto)
|
||||
{
|
||||
return new FileStream(
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using SIG.Web.AppCode.Contracts.Bitacora;
|
||||
using SIG.Web.AppCode.Contracts.Documentos;
|
||||
using SIG.Web.AppCode.Contracts.Fraccionamientos;
|
||||
@@ -16,6 +18,8 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
public sealed class ServicioGisFraccionamiento : IServicioGisFraccionamiento
|
||||
{
|
||||
private const string ExtensionGis = ".gis";
|
||||
private const string ExtensionGeoJson = ".geojson";
|
||||
private const string ExtensionZip = ".zip";
|
||||
private const string TipoContenidoGis = "application/json";
|
||||
private const long TamanoMaximoArchivo = 30L * 1024L * 1024L;
|
||||
|
||||
@@ -56,6 +60,317 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
_servicioDocumentoTramite = tramiteDocumentoServicio;
|
||||
}
|
||||
|
||||
public DbResult<ResultadoGuardadoGisFraccionamiento> VincularLote(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveFraccionamientoLote,
|
||||
string clavePoligono,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
if (cveFraccionamientoLote <= 0 || string.IsNullOrWhiteSpace(clavePoligono) ||
|
||||
clavePoligono.Length > 100)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>("Seleccione un lote y un polígono válidos.");
|
||||
}
|
||||
|
||||
DbResult<ArchivoGisFraccionamiento> archivo = AbrirArchivo(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!archivo.Success)
|
||||
{
|
||||
return CopiarFallo<ArchivoGisFraccionamiento, ResultadoGuardadoGisFraccionamiento>(
|
||||
archivo, "No fue posible consultar el GIS de la etapa.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
JObject geometria;
|
||||
using (StreamReader lector = new StreamReader(archivo.Data.Contenido))
|
||||
{
|
||||
geometria = JObject.Parse(lector.ReadToEnd());
|
||||
}
|
||||
|
||||
List<JToken> coincidencias = (geometria["features"] ?? new JArray())
|
||||
.Where(figura => figura is JObject && figura["id"] != null &&
|
||||
"id:" + (((string)figura["id"]) ?? string.Empty).Trim() == clavePoligono)
|
||||
.ToList();
|
||||
if (coincidencias.Count != 1)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El polígono no tiene una clave única en el GIS actual. Actualice el visor.");
|
||||
}
|
||||
|
||||
JToken seleccion = coincidencias[0];
|
||||
string tipo = (string)seleccion.SelectToken("geometry.type");
|
||||
if (tipo != "Polygon" && tipo != "MultiPolygon")
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>("Sólo puede vincular polígonos con lotes.");
|
||||
}
|
||||
|
||||
DbResult<List<CapaGisFraccionamiento>> capas = ListarCapas(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!capas.Success)
|
||||
{
|
||||
return CopiarFallo<List<CapaGisFraccionamiento>, ResultadoGuardadoGisFraccionamiento>(
|
||||
capas, "No fue posible consultar el tipo de capa.");
|
||||
}
|
||||
|
||||
JToken propiedades = seleccion["properties"];
|
||||
string nombreCapa = (string)(propiedades == null ? null :
|
||||
propiedades["_sigCapa"] ?? propiedades["Capa"] ?? propiedades["capa"]);
|
||||
nombreCapa = string.IsNullOrWhiteSpace(nombreCapa) ? "GIS" : nombreCapa.Trim();
|
||||
if (!capas.Data.Any(capa => capa.NombreCapa == nombreCapa && capa.TipoCapa == "Lotificacion"))
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"Configure la capa como Lotificación antes de vincular sus polígonos.");
|
||||
}
|
||||
|
||||
// La lectura y combinación se protegen juntas para no sobrescribir otros vínculos.
|
||||
using (var transaccion = new TransactionLogic(System.Transactions.IsolationLevel.Serializable))
|
||||
{
|
||||
DbResult<VistaGisFraccionamiento> contexto = Obtener(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!contexto.Success)
|
||||
{
|
||||
return CopiarFallo<VistaGisFraccionamiento, ResultadoGuardadoGisFraccionamiento>(
|
||||
contexto, "No fue posible consultar los lotes de la etapa.");
|
||||
}
|
||||
|
||||
List<VinculoLoteGisFraccionamiento> lotes = contexto.Data.Lotes;
|
||||
VinculoLoteGisFraccionamiento lote = lotes.FirstOrDefault(
|
||||
elemento => elemento.CveFraccionamientoLote == cveFraccionamientoLote && elemento.EsActivo);
|
||||
if (lote == null)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"Seleccione un lote activo de esta etapa.");
|
||||
}
|
||||
|
||||
if ((!string.IsNullOrWhiteSpace(lote.GISPoligonoClave) && lote.GISPoligonoClave != clavePoligono) ||
|
||||
lotes.Any(elemento => elemento.GISPoligonoClave == clavePoligono &&
|
||||
elemento.CveFraccionamientoLote != cveFraccionamientoLote))
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El lote o el polígono ya está vinculado. Actualice la selección.");
|
||||
}
|
||||
|
||||
lote.GISPoligonoClave = clavePoligono;
|
||||
List<VinculoLoteGisFraccionamiento> vinculos = lotes
|
||||
.Where(elemento => !string.IsNullOrWhiteSpace(elemento.GISPoligonoClave)).ToList();
|
||||
DbResult<ResultadoGuardadoGisFraccionamiento> resultado = Guardar(
|
||||
cveFraccionamientoEtapa, null, null, 0, vinculos, cveUsuarioEjecuta, nombreDominio);
|
||||
if (resultado.Success)
|
||||
{
|
||||
transaccion.Commit();
|
||||
}
|
||||
|
||||
return resultado;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
const string mensaje = "No fue posible vincular el lote. Actualice el visor e inténtelo nuevamente.";
|
||||
ExceptionLogger.Log(ex, "ServicioGisFraccionamiento.VincularLote", mensaje);
|
||||
return DbResult<ResultadoGuardadoGisFraccionamiento>.Fail(mensaje, ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public DbResult<ResultadoGuardadoGisFraccionamiento> DesvincularLote(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveFraccionamientoLote,
|
||||
string clavePoligono,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
if (cveFraccionamientoLote <= 0 || string.IsNullOrWhiteSpace(clavePoligono) ||
|
||||
clavePoligono.Length > 100)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>("Seleccione un vínculo válido.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
using (var transaccion = new TransactionLogic(System.Transactions.IsolationLevel.Serializable))
|
||||
{
|
||||
var contexto = Obtener(cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!contexto.Success)
|
||||
{
|
||||
return CopiarFallo<VistaGisFraccionamiento, ResultadoGuardadoGisFraccionamiento>(
|
||||
contexto, "No fue posible consultar los lotes de la etapa.");
|
||||
}
|
||||
|
||||
var lote = contexto.Data.Lotes.FirstOrDefault(elemento =>
|
||||
elemento.CveFraccionamientoLote == cveFraccionamientoLote && elemento.EsActivo);
|
||||
if (lote == null || lote.GISPoligonoClave != clavePoligono)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El vínculo cambió. Actualice el visor antes de desvincular.");
|
||||
}
|
||||
|
||||
var restantes = contexto.Data.Lotes.Where(elemento =>
|
||||
elemento.CveFraccionamientoLote != cveFraccionamientoLote &&
|
||||
!string.IsNullOrWhiteSpace(elemento.GISPoligonoClave)).ToList();
|
||||
var resultado = Guardar(cveFraccionamientoEtapa, null, null, 0,
|
||||
restantes, cveUsuarioEjecuta, nombreDominio);
|
||||
if (resultado.Success)
|
||||
{
|
||||
transaccion.Commit();
|
||||
}
|
||||
|
||||
return resultado;
|
||||
}
|
||||
}
|
||||
catch (Exception excepcion)
|
||||
{
|
||||
const string mensaje = "No fue posible desvincular el lote. Actualice el visor e inténtelo nuevamente.";
|
||||
ExceptionLogger.Log(excepcion, "ServicioGisFraccionamiento.DesvincularLote", mensaje);
|
||||
return DbResult<ResultadoGuardadoGisFraccionamiento>.Fail(mensaje, excepcion.Message, excepcion);
|
||||
}
|
||||
}
|
||||
|
||||
public DbResult<List<CapaGisFraccionamiento>> ListarCapas(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
DbResult<List<CapaGisFraccionamiento>> inventario = LeerCapasArchivo(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!inventario.Success)
|
||||
{
|
||||
return inventario;
|
||||
}
|
||||
|
||||
DbResult<List<CapaGisFraccionamiento>> configuracion = _repositorio.ListarCapas(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!configuracion.Success)
|
||||
{
|
||||
return configuracion;
|
||||
}
|
||||
|
||||
foreach (CapaGisFraccionamiento capa in inventario.Data)
|
||||
{
|
||||
CapaGisFraccionamiento guardada = configuracion.Data.FirstOrDefault(
|
||||
elemento => string.Equals(elemento.NombreCapa, capa.NombreCapa, StringComparison.Ordinal));
|
||||
if (guardada != null)
|
||||
{
|
||||
capa.TipoCapa = guardada.TipoCapa;
|
||||
capa.Color = guardada.Color;
|
||||
capa.EsVisible = guardada.EsVisible;
|
||||
}
|
||||
}
|
||||
|
||||
return inventario;
|
||||
}
|
||||
|
||||
public DbResult<bool> GuardarCapa(
|
||||
int cveFraccionamientoEtapa,
|
||||
CapaGisFraccionamiento capa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
string[] tipos = { "Agua", "Drenaje", "Lotificacion", "Pozos", "Otros" };
|
||||
if (capa == null || string.IsNullOrWhiteSpace(capa.NombreCapa) ||
|
||||
capa.NombreCapa.Length > 250 || !tipos.Contains(capa.TipoCapa) ||
|
||||
!Regex.IsMatch(capa.Color ?? string.Empty, @"\A#[0-9a-fA-F]{6}\z"))
|
||||
{
|
||||
return CrearFallo<bool>("Indique una capa, tipo y color válidos.");
|
||||
}
|
||||
|
||||
DbResult<List<CapaGisFraccionamiento>> inventario = LeerCapasArchivo(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!inventario.Success)
|
||||
{
|
||||
return CopiarFallo<List<CapaGisFraccionamiento>, bool>(
|
||||
inventario, "No fue posible consultar las capas de la etapa.");
|
||||
}
|
||||
|
||||
if (!inventario.Data.Any(elemento =>
|
||||
string.Equals(elemento.NombreCapa, capa.NombreCapa, StringComparison.Ordinal)))
|
||||
{
|
||||
return CrearFallo<bool>("La capa ya no existe en el GIS de esta etapa. Actualice el visor.");
|
||||
}
|
||||
|
||||
using (TransactionLogic transaccion = new TransactionLogic())
|
||||
{
|
||||
DbResult<bool> resultado = _repositorio.GuardarCapa(
|
||||
cveFraccionamientoEtapa, capa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (resultado.Success)
|
||||
{
|
||||
transaccion.Commit();
|
||||
}
|
||||
|
||||
return resultado;
|
||||
}
|
||||
}
|
||||
|
||||
private DbResult<List<CapaGisFraccionamiento>> LeerCapasArchivo(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio)
|
||||
{
|
||||
DbResult<ArchivoGisFraccionamiento> archivo = AbrirArchivo(
|
||||
cveFraccionamientoEtapa, cveUsuarioEjecuta, nombreDominio);
|
||||
if (!archivo.Success || archivo.Data == null)
|
||||
{
|
||||
return CopiarFallo<ArchivoGisFraccionamiento, List<CapaGisFraccionamiento>>(
|
||||
archivo, "No fue posible leer las capas del GIS.");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
JObject contenido;
|
||||
using (StreamReader lector = new StreamReader(archivo.Data.Contenido))
|
||||
{
|
||||
contenido = JObject.Parse(lector.ReadToEnd());
|
||||
}
|
||||
|
||||
string[] colores =
|
||||
{
|
||||
"#1976D2", "#D84315", "#388E3C", "#8E24AA", "#00838F",
|
||||
"#C2185B", "#827717", "#5D4037", "#455A64", "#F9A825"
|
||||
};
|
||||
List<CapaGisFraccionamiento> capas = new List<CapaGisFraccionamiento>();
|
||||
foreach (JToken figura in contenido["features"] ?? new JArray())
|
||||
{
|
||||
JToken propiedades = figura["properties"];
|
||||
string nombre = (string)(propiedades == null ? null :
|
||||
propiedades["_sigCapa"] ?? propiedades["Capa"] ?? propiedades["capa"]);
|
||||
nombre = string.IsNullOrWhiteSpace(nombre) ? "GIS" : nombre.Trim();
|
||||
string geometria = (string)figura.SelectToken("geometry.type") ?? string.Empty;
|
||||
CapaGisFraccionamiento capa = capas.FirstOrDefault(
|
||||
elemento => string.Equals(elemento.NombreCapa, nombre, StringComparison.Ordinal));
|
||||
if (capa == null)
|
||||
{
|
||||
string nombreNormalizado = nombre.ToLowerInvariant();
|
||||
capa = new CapaGisFraccionamiento
|
||||
{
|
||||
NombreCapa = nombre,
|
||||
TipoCapa = nombreNormalizado.Contains("lotific") ? "Lotificacion" :
|
||||
nombreNormalizado.Contains("pozo") ? "Pozos" :
|
||||
nombreNormalizado.Contains("drenaje") ? "Drenaje" :
|
||||
nombreNormalizado.Contains("agua") ? "Agua" : "Otros",
|
||||
Color = colores[capas.Count % colores.Length],
|
||||
EsVisible = true,
|
||||
Geometria = geometria
|
||||
};
|
||||
capas.Add(capa);
|
||||
}
|
||||
else if (capa.Geometria != geometria)
|
||||
{
|
||||
capa.Geometria = "Mixta";
|
||||
}
|
||||
|
||||
capa.Elementos++;
|
||||
}
|
||||
|
||||
return DbResult<List<CapaGisFraccionamiento>>.Ok(capas);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
const string mensaje = "No fue posible identificar las capas del archivo GIS.";
|
||||
ExceptionLogger.Log(ex, "ServicioGisFraccionamiento.LeerCapasArchivo", mensaje);
|
||||
return DbResult<List<CapaGisFraccionamiento>>.Fail(mensaje, ex.Message, ex);
|
||||
}
|
||||
}
|
||||
|
||||
public DbResult<VistaGisFraccionamiento> Obtener(
|
||||
int cveFraccionamientoEtapa,
|
||||
int cveUsuarioEjecuta,
|
||||
@@ -160,25 +475,7 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
if (!tieneArchivoCargado && !guardarVinculos)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"Seleccione un archivo .gis antes de guardar.");
|
||||
}
|
||||
|
||||
if (tieneArchivoCargado)
|
||||
{
|
||||
if (!string.Equals(
|
||||
Path.GetExtension(nombreArchivoOriginal),
|
||||
ExtensionGis,
|
||||
StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El archivo seleccionado debe tener extensión .gis.");
|
||||
}
|
||||
|
||||
if (longitudContenido > TamanoMaximoArchivo)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El archivo GIS no puede exceder 30 MB.");
|
||||
}
|
||||
"Seleccione un archivo GIS antes de guardar.");
|
||||
}
|
||||
|
||||
DbResult<ContextoGisFraccionamiento> resultadoContexto =
|
||||
@@ -196,6 +493,75 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
|
||||
ContextoGisFraccionamiento contextoGis = resultadoContexto.Data;
|
||||
|
||||
ProcesadorArchivoGisFraccionamiento.Resultado archivoProcesado = null;
|
||||
|
||||
if (tieneArchivoCargado)
|
||||
{
|
||||
string extension = Path.GetExtension(nombreArchivoOriginal) ?? string.Empty;
|
||||
bool extensionValida =
|
||||
string.Equals(extension, ExtensionGis, StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(extension, ExtensionGeoJson, StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(extension, ExtensionZip, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
if (!extensionValida)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El archivo seleccionado debe tener extensión .gis, .geojson o .zip.");
|
||||
}
|
||||
|
||||
if (longitudContenido > TamanoMaximoArchivo)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"El archivo GIS no puede exceder 30 MB.");
|
||||
}
|
||||
|
||||
Stream originalConservado = null;
|
||||
bool zipConservado = false;
|
||||
try
|
||||
{
|
||||
if (string.Equals(extension, ExtensionZip, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
originalConservado = _almacenArchivos.GuardarOriginalZip(
|
||||
contextoGis,
|
||||
contenido,
|
||||
longitudContenido);
|
||||
zipConservado = true;
|
||||
}
|
||||
archivoProcesado = ProcesadorArchivoGisFraccionamiento.Procesar(
|
||||
nombreArchivoOriginal,
|
||||
originalConservado ?? contenido,
|
||||
longitudContenido);
|
||||
}
|
||||
catch (InvalidDataException ex)
|
||||
{
|
||||
return DbResult<ResultadoGuardadoGisFraccionamiento>.Fail(
|
||||
ex.Message + (zipConservado
|
||||
? " El ZIP original quedó conservado; el mapa anterior no se modificó."
|
||||
: string.Empty),
|
||||
ex.Message,
|
||||
ex);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (zipConservado)
|
||||
{
|
||||
const string mensaje = "No fue posible convertir el ZIP. El original quedó conservado y el mapa anterior no se modificó; contacte a Sistemas.";
|
||||
ExceptionLogger.Log(ex, "ServicioGisFraccionamiento.Guardar.Procesar", mensaje);
|
||||
return DbResult<ResultadoGuardadoGisFraccionamiento>.Fail(mensaje, ex.Message, ex);
|
||||
}
|
||||
return CrearFalloArchivo<ResultadoGuardadoGisFraccionamiento>(
|
||||
ex,
|
||||
"ServicioGisFraccionamiento.Guardar.Procesar");
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (originalConservado != null)
|
||||
{
|
||||
originalConservado.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DbResult<List<VinculoLoteGisFraccionamiento>> resultadoVinculosAnteriores =
|
||||
_repositorio.ListarVinculos(
|
||||
cveFraccionamientoEtapa,
|
||||
@@ -229,7 +595,7 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
if (!tieneArchivoCargado && !teniaArchivo)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"Seleccione un archivo .gis antes de guardar.");
|
||||
"Seleccione un archivo GIS antes de guardar.");
|
||||
}
|
||||
|
||||
byte[] anteriorArchivo = null;
|
||||
@@ -262,7 +628,10 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
|
||||
try
|
||||
{
|
||||
using (var transaccion = new TransactionLogic())
|
||||
using (var transaccion = new TransactionLogic(
|
||||
System.Transactions.Transaction.Current == null
|
||||
? System.Transactions.IsolationLevel.ReadCommitted
|
||||
: System.Transactions.Transaction.Current.IsolationLevel))
|
||||
{
|
||||
ModeloOperacionBitacora operacionBitacora = ModeloOperacionBitacora.Crear(
|
||||
"GuardarGisEtapa",
|
||||
@@ -297,7 +666,20 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
|
||||
if (tieneArchivoCargado)
|
||||
{
|
||||
_almacenArchivos.Guardar(contextoGis, contenido);
|
||||
if (archivoProcesado == null ||
|
||||
archivoProcesado.ContenidoGis == null ||
|
||||
archivoProcesado.ContenidoGis.Length == 0)
|
||||
{
|
||||
return CrearFallo<ResultadoGuardadoGisFraccionamiento>(
|
||||
"No fue posible preparar el archivo GIS para guardarlo.");
|
||||
}
|
||||
|
||||
using (var contenidoNormalizado = new MemoryStream(
|
||||
archivoProcesado.ContenidoGis,
|
||||
false))
|
||||
{
|
||||
_almacenArchivos.Guardar(contextoGis, contenidoNormalizado);
|
||||
}
|
||||
archivoFueEscrito = true;
|
||||
|
||||
string nombreArchivoFisico = Path.GetFileName(
|
||||
@@ -311,13 +693,13 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
DbResult<SIG.Web.AppCode.Models.Documentos.TramiteDocumentoSaveResultModel> resultadoDocumento =
|
||||
_servicioDocumentoTramite.RegisterExternalStageFile(
|
||||
cveFraccionamientoEtapa,
|
||||
1,
|
||||
2,
|
||||
nombreArchivoOriginal,
|
||||
0,
|
||||
1016,
|
||||
archivoProcesado.NombreArchivoGis,
|
||||
nombreArchivoFisico,
|
||||
rutaRelativa,
|
||||
TipoContenidoGis,
|
||||
longitudContenido,
|
||||
archivoProcesado.TipoContenido ?? TipoContenidoGis,
|
||||
archivoProcesado.ContenidoGis.LongLength,
|
||||
cveUsuarioEjecuta,
|
||||
nombreDominio,
|
||||
operacionBitacora);
|
||||
@@ -503,8 +885,8 @@ namespace SIG.Web.AppCode.Services.Fraccionamientos
|
||||
DbResult<bool> resultadoEliminacionDocumento =
|
||||
_servicioDocumentoTramite.RemoveExternalStageFile(
|
||||
cveFraccionamientoEtapa,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
1016,
|
||||
cveUsuarioEjecuta,
|
||||
nombreDominio,
|
||||
operacionBitacora);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Transactions;
|
||||
using System.Linq;
|
||||
@@ -644,9 +644,8 @@ namespace SIG.Web.AppCode.Services.Tramites
|
||||
: null,
|
||||
Estatus = estatus,
|
||||
Condiciones = condiciones,
|
||||
Documentos = resultadoDocumentos.Data
|
||||
.Where(documento => documento.CveSolicitud == cveSolicitud)
|
||||
.ToList(),
|
||||
Documentos = resultadoDocumentos.Data ??
|
||||
new List<TramiteDocumentoSolicitudModel>(),
|
||||
Pagos = resultadoPagos.Data ?? new List<ModeloPagoSolicitud>()
|
||||
});
|
||||
}
|
||||
@@ -760,10 +759,16 @@ namespace SIG.Web.AppCode.Services.Tramites
|
||||
}
|
||||
}
|
||||
|
||||
if (contexto.Documentos.Any(documento => documento.EstaPendiente))
|
||||
bool requiereDocumentosAprobados =
|
||||
(destino.EsCliente && destino.EsOK) ||
|
||||
string.Equals(destino.Codigo, "Autorizado", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
if (requiereDocumentosAprobados &&
|
||||
contexto.Documentos.Any(documento => documento.ImpideAvanzar))
|
||||
{
|
||||
return RequisitosPendientes(
|
||||
"Documentos", "Existen documentos requeridos pendientes de cargar.");
|
||||
"Documentos",
|
||||
"Existen documentos requeridos pendientes de cargar, aprobar o renovar para este trámite.");
|
||||
}
|
||||
|
||||
if (validarPagosRequeridos &&
|
||||
|
||||
1
SIG.Web/Documentos/Clientes/4/gis-1016-1028.gis
Normal file
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Globalization;
|
||||
using System.Web.UI.WebControls;
|
||||
using SIG.Web.AppCode.Configuration;
|
||||
using SIG.Web.AppCode.Infrastructure.WebForms;
|
||||
using SIG.Web.AppCode.Security;
|
||||
|
||||
namespace SIG.Web.Pages.Clientes
|
||||
|
||||
@@ -1842,14 +1842,16 @@
|
||||
class="ADSdropzoneLocal"
|
||||
data-maxFile="1"
|
||||
data-maxfilesize="30"
|
||||
data-acceptedfiles=".gis"
|
||||
data-message="Arrastra aquí un archivo .gis o haz clic para seleccionarlo." />
|
||||
data-acceptedfiles=".gis,.geojson,.zip"
|
||||
data-message="Arrastra aquí un GIS (.gis/.geojson) o un ZIP Shapefile y haz clic para seleccionarlo." />
|
||||
<span class="help-block">
|
||||
Guarde el archivo sin necesidad de vincular lotes.
|
||||
Puede guardar los vínculos por separado y continuar con los pendientes después.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div id="GisCapas" class="sig-gis-layers"></div>
|
||||
|
||||
<div id="EstatusVinculosGis"
|
||||
class="sig-gis-link-status"></div>
|
||||
|
||||
@@ -2180,7 +2182,7 @@
|
||||
<asp:Content ID="ContenidoScripts" ContentPlaceHolderID="J" runat="server">
|
||||
<script src='<%= ResolveUrl("~/Scripts/CatalogosTramites.js") %>'
|
||||
type="text/javascript"></script>
|
||||
<script src='<%= ResolveUrl("~/Scripts/fraccionamiento-gis.js?v=20260918-1") %>'
|
||||
<script src='<%= ResolveUrl("~/Scripts/fraccionamiento-gis.js?v=20261002-1") %>'
|
||||
type="text/javascript"></script>
|
||||
<script>
|
||||
window.OpcionesGisFraccionamiento = {
|
||||
@@ -2190,11 +2192,14 @@
|
||||
idMapa: 'MapaGis',
|
||||
idTablaVinculos: 'GisVinculos',
|
||||
idEstatus: 'EstatusVinculosGis',
|
||||
idCapas: 'GisCapas',
|
||||
idBotonGuardar: 'BtnGuardarEtapaGis',
|
||||
idBotonGuardarVinculos: 'BtnGuardarVinculosEtapaGis',
|
||||
idBotonEliminar: 'BtnEliminarEtapaGis',
|
||||
idBotonActualizar: 'BtnActualizarEtapaGis',
|
||||
urlManejador: '<%= ResolveUrl("~/Pages/Fraccionamientos/FraccionamientoGis.ashx") %>'
|
||||
urlManejador: '<%= ResolveUrl("~/Pages/Fraccionamientos/FraccionamientoGis.ashx") %>',
|
||||
googleMapsEnabled: <%= string.Equals(System.Configuration.ConfigurationManager.AppSettings["GoogleMapsEnabled"], "true", System.StringComparison.OrdinalIgnoreCase) ? "true" : "false" %>,
|
||||
googleMapsApiKey: '<%= System.Web.HttpUtility.JavaScriptStringEncode(System.Configuration.ConfigurationManager.AppSettings["GoogleMapsApiKey"] ?? string.Empty) %>'
|
||||
};
|
||||
|
||||
window.SIGDetalle = window.SIGDetalle || {};
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
--- ANTES/App_Code/Contracts/Convenios/IRepositorioConvenios.cs
|
||||
+++ DESPUES/App_Code/Contracts/Convenios/IRepositorioConvenios.cs
|
||||
@@ -10,6 +10,8 @@
|
||||
DbResult<ConvenioDetalleCompleto> Obtener(int cveConvenio, int usuario, string dominio);
|
||||
DbResult<List<ConvenioConceptoCatalogo>> ListarConceptos(int usuario, string dominio);
|
||||
DbResult<int> Agregar(SolicitudAltaConvenio solicitud, int usuario, string dominio);
|
||||
+ DbResult<ConvenioLotesConvenio> ObtenerLotesConvenio(int cveConvenio, int usuario, string dominio);
|
||||
+ DbResult<bool> GuardarLotesConvenio(int cveConvenio, int lotesConvenio, int usuario, string dominio);
|
||||
DbResult<bool> Eliminar(int cveConvenio, int usuario, string dominio);
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
--- ANTES/App_Code/Models/Convenios/ModelosConvenios.cs
|
||||
+++ DESPUES/App_Code/Models/Convenios/ModelosConvenios.cs
|
||||
@@ -49,6 +49,7 @@
|
||||
public int ViviendasEnConvenio { get; set; }
|
||||
public int? ViviendasPendientes { get; set; }
|
||||
public int? ViviendasContratadas { get; set; }
|
||||
+ public int LotesConvenio { get; set; }
|
||||
public string Observaciones { get; set; }
|
||||
public decimal ImporteConvenio { get; set; }
|
||||
public decimal ImportePagado { get; set; }
|
||||
@@ -102,9 +103,16 @@
|
||||
public int ViviendasEnConvenio { get; set; }
|
||||
public int? ViviendasPendientes { get; set; }
|
||||
public int? ViviendasContratadas { get; set; }
|
||||
+ public int LotesConvenio { get; set; }
|
||||
public DateTime FechaConvenio { get; set; }
|
||||
public string Observaciones { get; set; }
|
||||
public List<ConvenioConceptoCaptura> Conceptos { get; set; }
|
||||
+ }
|
||||
+
|
||||
+ public sealed class ConvenioLotesConvenio
|
||||
+ {
|
||||
+ public int CveConvenio { get; set; }
|
||||
+ public int LotesConvenio { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
@@ -1,10 +0,0 @@
|
||||
--- ANTES/App_Code/Models/Fraccionamientos/ModelosFraccionamiento.cs
|
||||
+++ DESPUES/App_Code/Models/Fraccionamientos/ModelosFraccionamiento.cs
|
||||
@@ -14,6 +14,7 @@
|
||||
public bool EsFraccionamiento { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public decimal? Hectareas { get; set; }
|
||||
+ public decimal Avance { get; set; }
|
||||
public bool Fideicomiso { get; set; }
|
||||
public bool EsActivo { get; set; }
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
--- ANTES/App_Code/Models/Tramites/TramiteSolicitudModels.cs
|
||||
+++ DESPUES/App_Code/Models/Tramites/TramiteSolicitudModels.cs
|
||||
@@ -49,6 +49,28 @@
|
||||
public DateTime? FechaAutorizacion { get; set; }
|
||||
public bool PuedeCambiarEstatus { get; set; }
|
||||
public bool EsAutorizada { get; set; }
|
||||
+ public int DocumentosPendientes { get; set; }
|
||||
+ public int PagosPendientes { get; set; }
|
||||
+
|
||||
+ public string TextoDocumentos
|
||||
+ {
|
||||
+ get
|
||||
+ {
|
||||
+ return DocumentosPendientes == 0
|
||||
+ ? "Completo"
|
||||
+ : DocumentosPendientes + " pendiente(s)";
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public string TextoPagos
|
||||
+ {
|
||||
+ get
|
||||
+ {
|
||||
+ return PagosPendientes == 0
|
||||
+ ? "Sin pendientes"
|
||||
+ : PagosPendientes + " pendiente(s)";
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
@@ -1,59 +0,0 @@
|
||||
--- ANTES/App_Code/Repositories/Convenios/RepositorioConvenios.cs
|
||||
+++ DESPUES/App_Code/Repositories/Convenios/RepositorioConvenios.cs
|
||||
@@ -19,6 +19,8 @@
|
||||
private const string ProcedimientoObtener = "dbo.PA_Tra_ConvenioGet";
|
||||
private const string ProcedimientoListarConceptos = "dbo.PA_Tra_ConvenioConceptoList";
|
||||
private const string ProcedimientoAgregar = "dbo.PA_Tra_ConvenioAdd";
|
||||
+ private const string ProcedimientoObtenerLotes = "dbo.PA_Tra_ConvenioLotesGet";
|
||||
+ private const string ProcedimientoGuardarLotes = "dbo.PA_Tra_ConvenioLotesUpdate";
|
||||
private const string ProcedimientoEliminar = "dbo.PA_Tra_ConvenioDelete";
|
||||
|
||||
public RepositorioConvenios(IDbExecutor ejecutor)
|
||||
@@ -193,6 +195,47 @@
|
||||
"@ConceptosXml",
|
||||
conceptosXml,
|
||||
DbType.Xml);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
+ public DbResult<ConvenioLotesConvenio> ObtenerLotesConvenio(
|
||||
+ int cveConvenio,
|
||||
+ int usuario,
|
||||
+ string dominio)
|
||||
+ {
|
||||
+ return QueryOne<ConvenioLotesConvenio>(
|
||||
+ ProcedimientoObtenerLotes,
|
||||
+ usuario,
|
||||
+ dominio,
|
||||
+ comando => StoredProcedureCommand.AddInput(
|
||||
+ comando,
|
||||
+ "@CveConvenio",
|
||||
+ cveConvenio,
|
||||
+ DbType.Int32));
|
||||
+ }
|
||||
+
|
||||
+ public DbResult<bool> GuardarLotesConvenio(
|
||||
+ int cveConvenio,
|
||||
+ int lotesConvenio,
|
||||
+ int usuario,
|
||||
+ string dominio)
|
||||
+ {
|
||||
+ return Execute(
|
||||
+ ProcedimientoGuardarLotes,
|
||||
+ usuario,
|
||||
+ dominio,
|
||||
+ comando =>
|
||||
+ {
|
||||
+ StoredProcedureCommand.AddInput(
|
||||
+ comando,
|
||||
+ "@CveConvenio",
|
||||
+ cveConvenio,
|
||||
+ DbType.Int32);
|
||||
+ StoredProcedureCommand.AddInput(
|
||||
+ comando,
|
||||
+ "@LotesConvenio",
|
||||
+ lotesConvenio,
|
||||
+ DbType.Int32);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
--- ANTES/App_Code/Services/Convenios/ServicioConvenios.cs
|
||||
+++ DESPUES/App_Code/Services/Convenios/ServicioConvenios.cs
|
||||
@@ -69,6 +69,23 @@
|
||||
null);
|
||||
}
|
||||
|
||||
+ DbResult<ConvenioLotesConvenio> lotes =
|
||||
+ _repositorio.ObtenerLotesConvenio(
|
||||
+ cveConvenio,
|
||||
+ usuario,
|
||||
+ dominio);
|
||||
+
|
||||
+ if (!lotes.Success)
|
||||
+ {
|
||||
+ return DbResult<ConvenioDetalleCompleto>.Fail(
|
||||
+ lotes.UserMessage,
|
||||
+ lotes.TechnicalMessage,
|
||||
+ lotes.Exception);
|
||||
+ }
|
||||
+
|
||||
+ resultado.Data.Encabezado.LotesConvenio =
|
||||
+ lotes.Data == null ? 0 : lotes.Data.LotesConvenio;
|
||||
+
|
||||
return resultado;
|
||||
}
|
||||
|
||||
@@ -112,11 +129,26 @@
|
||||
usuario,
|
||||
dominio);
|
||||
|
||||
- if (resultado.Success)
|
||||
- {
|
||||
- transaccion.Commit();
|
||||
- }
|
||||
-
|
||||
+ if (!resultado.Success)
|
||||
+ {
|
||||
+ return resultado;
|
||||
+ }
|
||||
+
|
||||
+ DbResult<bool> lotes = _repositorio.GuardarLotesConvenio(
|
||||
+ resultado.Data,
|
||||
+ solicitud.LotesConvenio,
|
||||
+ usuario,
|
||||
+ dominio);
|
||||
+
|
||||
+ if (!lotes.Success)
|
||||
+ {
|
||||
+ return DbResult<int>.Fail(
|
||||
+ lotes.UserMessage,
|
||||
+ lotes.TechnicalMessage,
|
||||
+ lotes.Exception);
|
||||
+ }
|
||||
+
|
||||
+ transaccion.Commit();
|
||||
return resultado;
|
||||
}
|
||||
}
|
||||
@@ -191,6 +223,11 @@
|
||||
return "La cantidad de viviendas en convenio no es válida.";
|
||||
}
|
||||
|
||||
+ if (solicitud.LotesConvenio < 0)
|
||||
+ {
|
||||
+ return "La cantidad de lotes del convenio no es válida.";
|
||||
+ }
|
||||
+
|
||||
if (solicitud.Conceptos == null || solicitud.Conceptos.Count == 0)
|
||||
{
|
||||
return "Agregue al menos un concepto al convenio.";
|
||||
@@ -1,90 +0,0 @@
|
||||
--- ANTES/App_Code/Services/Fraccionamientos/ServicioFraccionamiento.cs
|
||||
+++ DESPUES/App_Code/Services/Fraccionamientos/ServicioFraccionamiento.cs
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
+using System.Linq;
|
||||
using SIG.Web.AppCode.Contracts.Bitacora;
|
||||
using SIG.Web.AppCode.Contracts.Fraccionamientos;
|
||||
using SIG.Web.AppCode.Contracts.Tramites;
|
||||
@@ -34,7 +35,79 @@
|
||||
return CrearFallo<List<ModeloFilaDesarrollos>>("Seleccione un desarrollador válido.");
|
||||
}
|
||||
|
||||
- return _repositorio.ListarDesarrollos(cveCliente, cveUsuarioEjecuta, nombreDominio);
|
||||
+ DbResult<List<ModeloFilaDesarrollos>> resultado =
|
||||
+ _repositorio.ListarDesarrollos(
|
||||
+ cveCliente,
|
||||
+ cveUsuarioEjecuta,
|
||||
+ nombreDominio);
|
||||
+
|
||||
+ if (!resultado.Success || resultado.Data == null)
|
||||
+ {
|
||||
+ return resultado;
|
||||
+ }
|
||||
+
|
||||
+ List<ModeloFilaDesarrollos> filas = resultado.Data;
|
||||
+
|
||||
+ /*
|
||||
+ * PA_Fraccionamientos_DesarrolladorEtapasList es el listado
|
||||
+ * agrupado existente. No se cambia su contrato. El avance ya
|
||||
+ * existe en PA_Fraccionamientos_EtapaList, por lo que se
|
||||
+ * complementa aquí para que admin y cliente usen el mismo dato.
|
||||
+ */
|
||||
+ foreach (int cveFraccionamiento in filas
|
||||
+ .Select(x => x.CveFraccionamiento)
|
||||
+ .Distinct())
|
||||
+ {
|
||||
+ DbResult<List<ModeloEtapaFraccionamiento>> etapasResultado =
|
||||
+ _repositorio.ListarEtapas(
|
||||
+ cveFraccionamiento,
|
||||
+ cveUsuarioEjecuta,
|
||||
+ nombreDominio);
|
||||
+
|
||||
+ if (!etapasResultado.Success)
|
||||
+ {
|
||||
+ return DbResult<List<ModeloFilaDesarrollos>>.Fail(
|
||||
+ etapasResultado.UserMessage,
|
||||
+ etapasResultado.TechnicalMessage,
|
||||
+ etapasResultado.Exception);
|
||||
+ }
|
||||
+
|
||||
+ List<ModeloEtapaFraccionamiento> etapas =
|
||||
+ etapasResultado.Data ?? new List<ModeloEtapaFraccionamiento>();
|
||||
+
|
||||
+ Dictionary<int, decimal> avances = etapas
|
||||
+ .ToDictionary(x => x.CveFraccionamientoEtapa, x => x.Avance);
|
||||
+
|
||||
+ foreach (ModeloFilaDesarrollos fila in filas.Where(x =>
|
||||
+ x.CveFraccionamiento == cveFraccionamiento &&
|
||||
+ !x.EsFraccionamiento &&
|
||||
+ x.CveFraccionamientoEtapa.HasValue))
|
||||
+ {
|
||||
+ decimal avance;
|
||||
+ if (avances.TryGetValue(
|
||||
+ fila.CveFraccionamientoEtapa.Value,
|
||||
+ out avance))
|
||||
+ {
|
||||
+ fila.Avance = avance;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ ModeloFilaDesarrollos cabecera = filas.FirstOrDefault(x =>
|
||||
+ x.CveFraccionamiento == cveFraccionamiento &&
|
||||
+ x.EsFraccionamiento);
|
||||
+
|
||||
+ if (cabecera != null)
|
||||
+ {
|
||||
+ cabecera.Avance = etapas.Count == 0
|
||||
+ ? 0m
|
||||
+ : decimal.Round(
|
||||
+ etapas.Average(x => x.Avance),
|
||||
+ 2,
|
||||
+ MidpointRounding.AwayFromZero);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return resultado;
|
||||
}
|
||||
|
||||
public DbResult<List<OpcionClienteFraccionamiento>> ListarClientes(int cveUsuarioEjecuta, string nombreDominio)
|
||||
@@ -1,38 +0,0 @@
|
||||
--- ANTES/Pages/Clientes/Desarrollos.aspx
|
||||
+++ DESPUES/Pages/Clientes/Desarrollos.aspx
|
||||
@@ -80,7 +80,7 @@
|
||||
OnRowDataBound="EnlazarFila"
|
||||
OnRowCommand="Desarrollos_Comando">
|
||||
<Columns>
|
||||
- <asp:TemplateField HeaderText="Fraccionamiento">
|
||||
+ <asp:TemplateField HeaderText="Fraccionamiento / Etapa">
|
||||
<ItemTemplate>
|
||||
<asp:Panel runat="server"
|
||||
Visible='<%# Convert.ToBoolean(Eval("EsFraccionamiento")) %>'>
|
||||
@@ -97,11 +97,7 @@
|
||||
<%#: ResumenFraccionamiento(Container.DataItem) %>
|
||||
</span>
|
||||
</asp:Panel>
|
||||
- </ItemTemplate>
|
||||
- </asp:TemplateField>
|
||||
-
|
||||
- <asp:TemplateField HeaderText="Etapa">
|
||||
- <ItemTemplate>
|
||||
+
|
||||
<asp:HyperLink runat="server"
|
||||
CssClass="sig-cliente-etapa-enlace"
|
||||
Visible='<%# !Convert.ToBoolean(Eval("EsFraccionamiento")) %>'
|
||||
@@ -114,6 +110,13 @@
|
||||
<ItemTemplate>
|
||||
<asp:Literal runat="server" Mode="Encode"
|
||||
Text='<%# FormatearHectareas(Container.DataItem) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
+ <asp:TemplateField HeaderText="Avance">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:Literal runat="server" Mode="Encode"
|
||||
+ Text='<%# FormatearAvance(Container.DataItem) %>' />
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
--- ANTES/Pages/Clientes/Desarrollos.aspx.cs
|
||||
+++ DESPUES/Pages/Clientes/Desarrollos.aspx.cs
|
||||
@@ -329,6 +329,15 @@
|
||||
fila.NumeroEtapas);
|
||||
}
|
||||
|
||||
+ protected string FormatearAvance(object objeto)
|
||||
+ {
|
||||
+ var fila = objeto as ModeloFilaDesarrollos;
|
||||
+
|
||||
+ return fila == null
|
||||
+ ? string.Empty
|
||||
+ : fila.Avance.ToString("N2", CultureInfo.CurrentCulture) + " %";
|
||||
+ }
|
||||
+
|
||||
protected string FormatearHectareas(object objeto)
|
||||
{
|
||||
var fila = objeto as ModeloFilaDesarrollos;
|
||||
@@ -1,20 +0,0 @@
|
||||
--- ANTES/Pages/Clientes/EtapaDetalle.aspx
|
||||
+++ DESPUES/Pages/Clientes/EtapaDetalle.aspx
|
||||
@@ -2,7 +2,7 @@
|
||||
AutoEventWireup="true" CodeFile="EtapaDetalle.aspx.cs"
|
||||
Inherits="SIG.Web.Pages.Clientes.EtapaDetalle" %>
|
||||
<%@ Register TagPrefix="cliente" TagName="Tramites" Src="~/UserControl/Clientes/TramitesCliente.ascx" %>
|
||||
-<%@ Register TagPrefix="cliente" TagName="Documentos" Src="~/UserControl/Clientes/DocumentosCliente.ascx" %>
|
||||
+<%@ Register TagPrefix="etapa" TagName="DocumentosEtapa" Src="~/UserControl/DocumentosEtapa.ascx" %>
|
||||
<%@ Register TagPrefix="cliente" TagName="Pagos" Src="~/UserControl/Clientes/PagosCliente.ascx" %>
|
||||
|
||||
<asp:Content ID="ContenidoEncabezado" ContentPlaceHolderID="H" runat="server">
|
||||
@@ -75,7 +75,7 @@
|
||||
|
||||
<ajax:TabPanel ID="PestanaDocumentos" runat="server" HeaderText="Documentos">
|
||||
<ContentTemplate>
|
||||
- <cliente:Documentos ID="UcDocumentos" runat="server" />
|
||||
+ <etapa:DocumentosEtapa ID="UcDocumentos" runat="server" OnCambiado="Documentos_Cambiados" />
|
||||
</ContentTemplate>
|
||||
</ajax:TabPanel>
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
--- ANTES/Pages/Clientes/EtapaDetalle.aspx.cs
|
||||
+++ DESPUES/Pages/Clientes/EtapaDetalle.aspx.cs
|
||||
@@ -16,6 +16,12 @@
|
||||
{
|
||||
get { return (int?)ViewState["CveFraccionamientoEtapaActual"] ?? 0; }
|
||||
set { ViewState["CveFraccionamientoEtapaActual"] = value; }
|
||||
+ }
|
||||
+
|
||||
+ private int CveFraccionamientoActual
|
||||
+ {
|
||||
+ get { return (int?)ViewState["CveFraccionamientoActual"] ?? 0; }
|
||||
+ set { ViewState["CveFraccionamientoActual"] = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -45,6 +51,19 @@
|
||||
|
||||
CveFraccionamientoEtapaActual = cveFraccionamientoEtapa;
|
||||
Cargar();
|
||||
+ }
|
||||
+
|
||||
+ protected void Documentos_Cambiados(object origen, EventArgs argumentos)
|
||||
+ {
|
||||
+ if (CveFraccionamientoActual <= 0 ||
|
||||
+ CveFraccionamientoEtapaActual <= 0)
|
||||
+ {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ UcTramites.Cargar(
|
||||
+ CveFraccionamientoActual,
|
||||
+ CveFraccionamientoEtapaActual);
|
||||
}
|
||||
|
||||
private void Cargar()
|
||||
@@ -85,6 +104,7 @@
|
||||
|
||||
ModeloEtapaFraccionamiento datosEtapa = etapa.Data;
|
||||
ModeloFraccionamiento datosFraccionamiento = fraccionamiento.Data;
|
||||
+ CveFraccionamientoActual = datosFraccionamiento.CveFraccionamiento;
|
||||
|
||||
LitEtapa.Text = datosEtapa.Etapa;
|
||||
LitHectareas.Text = datosEtapa.Hectareas.HasValue
|
||||
@@ -112,8 +132,7 @@
|
||||
datosEtapa.CveFraccionamientoEtapa);
|
||||
UcDocumentos.Cargar(
|
||||
datosFraccionamiento.CveFraccionamiento,
|
||||
- datosEtapa.CveFraccionamientoEtapa,
|
||||
- false);
|
||||
+ datosEtapa.CveFraccionamientoEtapa);
|
||||
UcPagos.Cargar(
|
||||
datosFraccionamiento.CveFraccionamiento,
|
||||
datosEtapa.CveFraccionamientoEtapa,
|
||||
@@ -1,218 +0,0 @@
|
||||
--- ANTES/Pages/Desarrolladores/DesarrolladorDetalle.aspx
|
||||
+++ DESPUES/Pages/Desarrolladores/DesarrolladorDetalle.aspx
|
||||
@@ -20,27 +20,33 @@
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
- .desarrollador-listado > tbody > tr.desarrollador-grupo > td {
|
||||
- background: #edf4f8;
|
||||
- padding: 10px 12px;
|
||||
- }
|
||||
-
|
||||
- .desarrollador-cabecera {
|
||||
- display: flex;
|
||||
+ .desarrollador-fila-fraccionamiento > td {
|
||||
+ background: #eef6fb;
|
||||
+ vertical-align: middle !important;
|
||||
+ }
|
||||
+
|
||||
+ .desarrollador-fila-etapa > td:first-child {
|
||||
+ padding-left: 30px;
|
||||
+ }
|
||||
+
|
||||
+ .desarrollador-fraccionamiento-resumen {
|
||||
+ color: #7f8c8d;
|
||||
+ font-size: 12px;
|
||||
+ margin-left: 8px;
|
||||
+ }
|
||||
+
|
||||
+ .desarrollador-etapa-enlace {
|
||||
+ font-weight: 600;
|
||||
+ }
|
||||
+
|
||||
+ .desarrollador-accion-icono {
|
||||
align-items: center;
|
||||
- gap: 12px;
|
||||
- }
|
||||
-
|
||||
- .desarrollador-descripcion {
|
||||
- flex: 1;
|
||||
- display: flex;
|
||||
- flex-wrap: wrap;
|
||||
- align-items: center;
|
||||
- gap: 8px 20px;
|
||||
- }
|
||||
-
|
||||
- .desarrollador-alternar {
|
||||
- background: transparent;
|
||||
+ display: inline-flex;
|
||||
+ height: 28px;
|
||||
+ justify-content: center;
|
||||
+ margin: 0 2px;
|
||||
+ padding: 0;
|
||||
+ width: 28px;
|
||||
}
|
||||
|
||||
.desarrollador-credenciales {
|
||||
@@ -162,55 +168,88 @@
|
||||
<ContentTemplate>
|
||||
<div class="table-responsive">
|
||||
<asp:GridView ID="GvFraccionamientos" runat="server" AutoGenerateColumns="false"
|
||||
- GridLines="None" CssClass="table table-hover Widthall desarrollador-listado"
|
||||
- DataKeyNames="CveFraccionamiento,CveFraccionamientoEtapa"
|
||||
+ GridLines="None" CssClass="table table-hover Widthall sig-grid-agrupado"
|
||||
+ DataKeyNames="CveFraccionamiento,CveFraccionamientoEtapa,EsFraccionamiento"
|
||||
OnRowCommand="Fraccionamientos_Comando"
|
||||
OnRowDataBound="Fraccionamientos_FilaEnlazada"
|
||||
EmptyDataText="Este desarrollador no tiene fraccionamientos activos.">
|
||||
<Columns>
|
||||
- <asp:TemplateField HeaderText="Etapa">
|
||||
- <ItemTemplate>
|
||||
- <asp:Panel runat="server" CssClass="desarrollador-cabecera"
|
||||
+ <asp:TemplateField HeaderText="Fraccionamiento / Etapa">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:Panel runat="server"
|
||||
Visible='<%# Convert.ToBoolean(Eval("EsFraccionamiento")) %>'>
|
||||
- <div class="desarrollador-descripcion">
|
||||
- <asp:HyperLink runat="server"
|
||||
- Text='<%# Server.HtmlEncode(Convert.ToString(Eval("Fraccionamiento"))) %>'
|
||||
- NavigateUrl='<%# ObtenerUrlFraccionamiento(Eval("CveFraccionamiento")) %>' />
|
||||
- <span>
|
||||
- <asp:Literal runat="server" Mode="Encode"
|
||||
- Text='<%# DescribirFraccionamiento(Container.DataItem) %>' />
|
||||
- </span>
|
||||
- </div>
|
||||
- <asp:LinkButton runat="server" CommandName="AgregarEtapa"
|
||||
- CausesValidation="false" CssClass="btn btn-primary btn-circle btn-sm"
|
||||
- ToolTip="Agregar etapa" aria-label="Agregar etapa">
|
||||
- <i class="fa fa-plus" aria-hidden="true"></i>
|
||||
- </asp:LinkButton>
|
||||
- <button type="button" class="btn default desarrollador-alternar"
|
||||
- title="Mostrar u ocultar etapas" aria-label="Mostrar u ocultar etapas"
|
||||
+ <button type="button"
|
||||
+ class="btn btn-circle btn-xs default sig-grid-alternar-grupo-accion desarrollador-accion-icono"
|
||||
+ title="Mostrar u ocultar etapas"
|
||||
+ aria-label="Mostrar u ocultar etapas"
|
||||
aria-expanded="true">
|
||||
- <i class="fa fa-chevron-up" aria-hidden="true"></i>
|
||||
+ <i class="fa fa-chevron-up sig-grid-icono-agrupacion" aria-hidden="true"></i>
|
||||
</button>
|
||||
+ <asp:HyperLink runat="server"
|
||||
+ Text='<%# Server.HtmlEncode(Convert.ToString(Eval("Fraccionamiento"))) %>'
|
||||
+ NavigateUrl='<%# ObtenerUrlFraccionamiento(Eval("CveFraccionamiento")) %>' />
|
||||
+ <span class="desarrollador-fraccionamiento-resumen">
|
||||
+ <%#: DescribirFraccionamiento(Container.DataItem) %>
|
||||
+ </span>
|
||||
</asp:Panel>
|
||||
- <asp:Literal runat="server" Mode="Encode" Text='<%# Eval("Etapa") %>'
|
||||
- Visible='<%# !Convert.ToBoolean(Eval("EsFraccionamiento")) %>' />
|
||||
- </ItemTemplate>
|
||||
- </asp:TemplateField>
|
||||
- <asp:BoundField DataField="Hectareas" HeaderText="Hectáreas de la etapa" DataFormatString="{0:N2}" />
|
||||
- <asp:CheckBoxField DataField="Fideicomiso" HeaderText="Fideicomiso" />
|
||||
- <asp:CheckBoxField DataField="EsActivo" HeaderText="Activa" />
|
||||
+
|
||||
+ <asp:HyperLink runat="server"
|
||||
+ CssClass="desarrollador-etapa-enlace"
|
||||
+ Visible='<%# !Convert.ToBoolean(Eval("EsFraccionamiento")) %>'
|
||||
+ Text='<%# Server.HtmlEncode(Convert.ToString(Eval("Etapa"))) %>'
|
||||
+ NavigateUrl='<%# ObtenerUrlEtapa(Eval("CveFraccionamientoEtapa")) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
+ <asp:TemplateField HeaderText="Hectáreas">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:Literal runat="server" Mode="Encode"
|
||||
+ Text='<%# FormatearHectareas(Container.DataItem) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
+ <asp:TemplateField HeaderText="Avance">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:Literal runat="server" Mode="Encode"
|
||||
+ Text='<%# FormatearAvance(Container.DataItem) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
+ <asp:TemplateField HeaderText="Fideicomiso">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:CheckBox runat="server" Enabled="false"
|
||||
+ Visible='<%# !Convert.ToBoolean(Eval("EsFraccionamiento")) %>'
|
||||
+ Checked='<%# Convert.ToBoolean(Eval("Fideicomiso")) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
+ <asp:TemplateField HeaderText="Activa">
|
||||
+ <ItemTemplate>
|
||||
+ <asp:CheckBox runat="server" Enabled="false"
|
||||
+ Checked='<%# Convert.ToBoolean(Eval("EsActivo")) %>' />
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+
|
||||
<asp:TemplateField HeaderText="Acciones"
|
||||
HeaderStyle-CssClass="sig-columna-acciones"
|
||||
ItemStyle-CssClass="sig-columna-acciones">
|
||||
<ItemTemplate>
|
||||
+ <asp:LinkButton runat="server" CommandName="AgregarEtapa"
|
||||
+ Visible='<%# Convert.ToBoolean(Eval("EsFraccionamiento")) %>'
|
||||
+ CausesValidation="false"
|
||||
+ CssClass="btn btn-circle btn-xs blue desarrollador-accion-icono"
|
||||
+ ToolTip="Agregar etapa" aria-label="Agregar etapa">
|
||||
+ <i class="fa fa-plus" aria-hidden="true"></i>
|
||||
+ </asp:LinkButton>
|
||||
+
|
||||
<asp:HyperLink runat="server"
|
||||
- CssClass="btn btn-circle btn-sm btn-primary sig-accion-icono"
|
||||
+ CssClass="btn btn-circle btn-xs blue desarrollador-accion-icono"
|
||||
ToolTip="Ver etapa"
|
||||
aria-label="Ver etapa"
|
||||
NavigateUrl='<%# ObtenerUrlEtapa(Eval("CveFraccionamientoEtapa")) %>'
|
||||
Visible='<%# !Convert.ToBoolean(Eval("EsFraccionamiento")) %>'>
|
||||
- <i class="fa fa-eye" aria-hidden="true"></i>
|
||||
- </asp:HyperLink>
|
||||
+ <i class="fa fa-eye" aria-hidden="true"></i>
|
||||
+ </asp:HyperLink>
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
</Columns>
|
||||
@@ -312,40 +351,4 @@
|
||||
</div>
|
||||
</asp:Content>
|
||||
<asp:Content ID="ContenidoScripts" ContentPlaceHolderID="J" runat="server">
|
||||
- <script>
|
||||
- (function () {
|
||||
- var gruposContraidos = {};
|
||||
- function aplicarGrupo(tabla, boton, contraido) {
|
||||
- var clave = boton.closest("tr").getAttribute("data-fraccionamiento");
|
||||
- boton.setAttribute("aria-expanded", contraido ? "false" : "true");
|
||||
- boton.querySelector("i").className = contraido ? "fa fa-chevron-down" : "fa fa-chevron-up";
|
||||
- tabla.querySelectorAll('tr[data-cabecera="0"]').forEach(function (fila) {
|
||||
- if (fila.getAttribute("data-fraccionamiento") === clave) {
|
||||
- fila.style.display = contraido ? "none" : "";
|
||||
- }
|
||||
- });
|
||||
- }
|
||||
- function iniciarDesarrollos() {
|
||||
- document.querySelectorAll(".desarrollador-listado").forEach(function (tabla) {
|
||||
- if (tabla.getAttribute("data-desarrollos-inicializado") === "1") {
|
||||
- return;
|
||||
- }
|
||||
- tabla.setAttribute("data-desarrollos-inicializado", "1");
|
||||
- tabla.querySelectorAll(".desarrollador-alternar").forEach(function (boton) {
|
||||
- var clave = boton.closest("tr").getAttribute("data-fraccionamiento");
|
||||
- aplicarGrupo(tabla, boton, gruposContraidos[clave] === true);
|
||||
- boton.addEventListener("click", function () {
|
||||
- gruposContraidos[clave] = boton.getAttribute("aria-expanded") === "true";
|
||||
- aplicarGrupo(tabla, boton, gruposContraidos[clave]);
|
||||
- });
|
||||
- });
|
||||
- });
|
||||
- }
|
||||
- if (window.Sys && Sys.Application) {
|
||||
- Sys.Application.add_load(iniciarDesarrollos);
|
||||
- } else {
|
||||
- document.addEventListener("DOMContentLoaded", iniciarDesarrollos);
|
||||
- }
|
||||
- }());
|
||||
- </script>
|
||||
</asp:Content>
|
||||
@@ -1,85 +0,0 @@
|
||||
--- ANTES/Pages/Desarrolladores/DesarrolladorDetalle.aspx.cs
|
||||
+++ DESPUES/Pages/Desarrolladores/DesarrolladorDetalle.aspx.cs
|
||||
@@ -24,27 +24,69 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- var desarrollo = (ModeloFilaDesarrollos)argumentos.Row.DataItem;
|
||||
- argumentos.Row.Attributes["data-fraccionamiento"] =
|
||||
+ var desarrollo = argumentos.Row.DataItem as ModeloFilaDesarrollos;
|
||||
+ if (desarrollo == null)
|
||||
+ {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ string grupo = "desarrollo-" +
|
||||
desarrollo.CveFraccionamiento.ToString(CultureInfo.InvariantCulture);
|
||||
- argumentos.Row.Attributes["data-cabecera"] = desarrollo.EsFraccionamiento ? "1" : "0";
|
||||
+
|
||||
if (desarrollo.EsFraccionamiento)
|
||||
{
|
||||
- argumentos.Row.CssClass = "desarrollador-grupo";
|
||||
- argumentos.Row.Cells[0].ColumnSpan = GvFraccionamientos.Columns.Count;
|
||||
- for (int indice = 1; indice < argumentos.Row.Cells.Count; indice++)
|
||||
- {
|
||||
- argumentos.Row.Cells[indice].Visible = false;
|
||||
- }
|
||||
- }
|
||||
+ argumentos.Row.CssClass =
|
||||
+ (argumentos.Row.CssClass +
|
||||
+ " sig-grid-grupo desarrollador-fila-fraccionamiento").Trim();
|
||||
+ argumentos.Row.Attributes["data-sig-group-row"] = "1";
|
||||
+ argumentos.Row.Attributes["data-sig-group-id"] = grupo;
|
||||
+ argumentos.Row.Attributes["data-sig-level"] = "2";
|
||||
+ argumentos.Row.Attributes["data-sig-expanded-default"] = "true";
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ argumentos.Row.CssClass =
|
||||
+ (argumentos.Row.CssClass +
|
||||
+ " sig-grid-fila-dato desarrollador-fila-etapa").Trim();
|
||||
+ argumentos.Row.Attributes["data-sig-item-row"] = "1";
|
||||
+ argumentos.Row.Attributes["data-sig-parent-group"] = grupo;
|
||||
+ argumentos.Row.Attributes["data-sig-level"] = "1";
|
||||
}
|
||||
|
||||
protected string DescribirFraccionamiento(object objeto)
|
||||
{
|
||||
var fila = (ModeloFilaDesarrollos)objeto;
|
||||
- return string.Format(CultureInfo.CurrentCulture,
|
||||
- "{0} · {1:N2} ha · {2} etapas · {3}",
|
||||
- fila.Ubicacion, fila.HectareasFraccionamiento, fila.NumeroEtapas, fila.Estatus);
|
||||
+ return string.Format(
|
||||
+ CultureInfo.CurrentCulture,
|
||||
+ "{0} · {1} etapa(s)",
|
||||
+ fila.Estatus,
|
||||
+ fila.NumeroEtapas);
|
||||
+ }
|
||||
+
|
||||
+ protected string FormatearHectareas(object objeto)
|
||||
+ {
|
||||
+ var fila = objeto as ModeloFilaDesarrollos;
|
||||
+ if (fila == null)
|
||||
+ {
|
||||
+ return string.Empty;
|
||||
+ }
|
||||
+
|
||||
+ decimal? hectareas = fila.EsFraccionamiento
|
||||
+ ? fila.HectareasFraccionamiento
|
||||
+ : fila.Hectareas;
|
||||
+
|
||||
+ return hectareas.HasValue
|
||||
+ ? hectareas.Value.ToString("N2", CultureInfo.CurrentCulture)
|
||||
+ : string.Empty;
|
||||
+ }
|
||||
+
|
||||
+ protected string FormatearAvance(object objeto)
|
||||
+ {
|
||||
+ var fila = objeto as ModeloFilaDesarrollos;
|
||||
+
|
||||
+ return fila == null
|
||||
+ ? string.Empty
|
||||
+ : fila.Avance.ToString("N2", CultureInfo.CurrentCulture) + " %";
|
||||
}
|
||||
|
||||
protected void Etapa_Cambiada(object origen, EventArgs argumentos)
|
||||
@@ -1,79 +0,0 @@
|
||||
--- ANTES/UserControl/ConveniosListado.ascx
|
||||
+++ DESPUES/UserControl/ConveniosListado.ascx
|
||||
@@ -133,7 +133,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
- <div class="sig-convenio-seccion-titulo">Viviendas en desarrollo</div>
|
||||
+ <div class="sig-convenio-seccion-titulo">Viviendas en desarrollo <span class="text-muted">· Calculados</span></div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
@@ -146,6 +146,8 @@
|
||||
ID="TxtViviendasAutorizadas"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
+ ReadOnly="true"
|
||||
+ Text="0"
|
||||
MaxLength="9" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,6 +162,8 @@
|
||||
ID="TxtViviendasEnConvenio"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
+ ReadOnly="true"
|
||||
+ Text="0"
|
||||
MaxLength="9" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -174,6 +178,8 @@
|
||||
ID="TxtViviendasPendientes"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
+ ReadOnly="true"
|
||||
+ Text="0"
|
||||
MaxLength="9" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -188,6 +194,8 @@
|
||||
ID="TxtViviendasContratadas"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
+ ReadOnly="true"
|
||||
+ Text="0"
|
||||
MaxLength="9" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -240,12 +248,31 @@
|
||||
<div class="form-group">
|
||||
<asp:Label
|
||||
runat="server"
|
||||
+ AssociatedControlID="TxtLotesConvenio"
|
||||
+ Text="Lotes convenio" />
|
||||
+ <asp:TextBox
|
||||
+ ID="TxtLotesConvenio"
|
||||
+ runat="server"
|
||||
+ CssClass="form-control"
|
||||
+ Text="0"
|
||||
+ MaxLength="9" />
|
||||
+ </div>
|
||||
+ </div>
|
||||
+ </div>
|
||||
+
|
||||
+ <div class="row">
|
||||
+ <div class="col-md-12">
|
||||
+ <div class="form-group">
|
||||
+ <asp:Label
|
||||
+ runat="server"
|
||||
AssociatedControlID="TxtObservacionesConvenio"
|
||||
Text="Observaciones" />
|
||||
<asp:TextBox
|
||||
ID="TxtObservacionesConvenio"
|
||||
runat="server"
|
||||
CssClass="form-control"
|
||||
+ TextMode="MultiLine"
|
||||
+ Rows="2"
|
||||
MaxLength="1000" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,80 +0,0 @@
|
||||
--- ANTES/UserControl/ConveniosListado.ascx.cs
|
||||
+++ DESPUES/UserControl/ConveniosListado.ascx.cs
|
||||
@@ -136,7 +136,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- DdlClienteCaptura.Enabled = !cveCliente.HasValue;
|
||||
+ DdlClienteCaptura.Enabled = true;
|
||||
|
||||
if (cveCliente.HasValue && cveCliente.Value > 0)
|
||||
{
|
||||
@@ -150,7 +150,7 @@
|
||||
LimpiarEtapasCaptura();
|
||||
}
|
||||
|
||||
- DdlEtapaCaptura.Enabled = !cveEtapa.HasValue;
|
||||
+ DdlEtapaCaptura.Enabled = true;
|
||||
|
||||
if (!CargarConceptosCatalogo())
|
||||
{
|
||||
@@ -430,18 +430,14 @@
|
||||
CveFraccionamientoEtapa = cveEtapa,
|
||||
NumeroConvenio = numeroConvenio,
|
||||
NumeroOficio = TextoNulo(TxtNumeroOficio.Text),
|
||||
- ViviendasAutorizadas = LeerEnteroOpcional(
|
||||
- TxtViviendasAutorizadas.Text,
|
||||
- "Capture una cantidad válida de viviendas autorizadas."),
|
||||
- ViviendasEnConvenio = LeerEntero(
|
||||
- TxtViviendasEnConvenio.Text,
|
||||
- "Capture una cantidad válida de viviendas en convenio."),
|
||||
- ViviendasPendientes = LeerEnteroOpcional(
|
||||
- TxtViviendasPendientes.Text,
|
||||
- "Capture una cantidad válida de viviendas pendientes."),
|
||||
- ViviendasContratadas = LeerEnteroOpcional(
|
||||
- TxtViviendasContratadas.Text,
|
||||
- "Capture una cantidad válida de viviendas contratadas."),
|
||||
+ // Estos cuatro valores quedan reservados para el cálculo posterior.
|
||||
+ ViviendasAutorizadas = 0,
|
||||
+ ViviendasEnConvenio = 0,
|
||||
+ ViviendasPendientes = 0,
|
||||
+ ViviendasContratadas = 0,
|
||||
+ LotesConvenio = LeerEntero(
|
||||
+ TxtLotesConvenio.Text,
|
||||
+ "Capture una cantidad válida de lotes del convenio."),
|
||||
FechaConvenio = LeerFecha(
|
||||
TxtFechaConvenio.Text,
|
||||
"Capture una fecha válida para el convenio."),
|
||||
@@ -579,7 +575,7 @@
|
||||
"<div class=\"col-md-4\"><strong>Oficio:</strong> {3}</div>" +
|
||||
"</div>" +
|
||||
"<div class=\"row\">" +
|
||||
- "<div class=\"col-md-4\"><strong>Viviendas:</strong> {4}</div>" +
|
||||
+ "<div class=\"col-md-4\"><strong>Lotes convenio:</strong> {4}</div>" +
|
||||
"<div class=\"col-md-4\"><strong>Importe:</strong> {5:N2}</div>" +
|
||||
"<div class=\"col-md-4\"><strong>Saldo pendiente:</strong> {6:N2}</div>" +
|
||||
"</div>",
|
||||
@@ -587,7 +583,7 @@
|
||||
HttpUtility.HtmlEncode(encabezado.Fraccionamiento),
|
||||
HttpUtility.HtmlEncode(encabezado.Etapa),
|
||||
HttpUtility.HtmlEncode(encabezado.NumeroOficio),
|
||||
- encabezado.ViviendasEnConvenio,
|
||||
+ encabezado.LotesConvenio,
|
||||
encabezado.ImporteConvenio,
|
||||
encabezado.SaldoPendiente);
|
||||
|
||||
@@ -761,10 +757,11 @@
|
||||
private void ReiniciarCaptura()
|
||||
{
|
||||
ConceptosCaptura = new List<ConvenioConceptoCaptura>();
|
||||
- TxtViviendasAutorizadas.Text = string.Empty;
|
||||
+ TxtViviendasAutorizadas.Text = "0";
|
||||
TxtViviendasEnConvenio.Text = "0";
|
||||
- TxtViviendasPendientes.Text = string.Empty;
|
||||
- TxtViviendasContratadas.Text = string.Empty;
|
||||
+ TxtViviendasPendientes.Text = "0";
|
||||
+ TxtViviendasContratadas.Text = "0";
|
||||
+ TxtLotesConvenio.Text = "0";
|
||||
TxtNumeroConvenio.Text = string.Empty;
|
||||
TxtNumeroOficio.Text = string.Empty;
|
||||
TxtFechaConvenio.Text = DateTime.Today.ToString(
|
||||
@@ -1,23 +0,0 @@
|
||||
--- ANTES/UserControl/DetalleEtapa.ascx
|
||||
+++ DESPUES/UserControl/DetalleEtapa.ascx
|
||||
@@ -58,6 +58,20 @@
|
||||
<asp:BoundField DataField="Folio" HeaderText="Folio" />
|
||||
<asp:BoundField DataField="TipoTramite" HeaderText="Trámite" />
|
||||
<asp:BoundField DataField="EstatusSolicitud" HeaderText="Estatus" />
|
||||
+ <asp:TemplateField HeaderText="Documentos">
|
||||
+ <ItemTemplate>
|
||||
+ <span class='<%# Convert.ToInt32(Eval("DocumentosPendientes")) > 0 ? "text-danger" : "text-success" %>'>
|
||||
+ <%#: Eval("TextoDocumentos") %>
|
||||
+ </span>
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
+ <asp:TemplateField HeaderText="Pagos">
|
||||
+ <ItemTemplate>
|
||||
+ <span class='<%# Convert.ToInt32(Eval("PagosPendientes")) > 0 ? "text-danger" : "text-success" %>'>
|
||||
+ <%#: Eval("TextoPagos") %>
|
||||
+ </span>
|
||||
+ </ItemTemplate>
|
||||
+ </asp:TemplateField>
|
||||
<asp:BoundField DataField="FechaInicio" HeaderText="Fecha de inicio" />
|
||||
<asp:TemplateField HeaderText="Acciones"
|
||||
HeaderStyle-CssClass="sig-columna-acciones"
|
||||
@@ -1,43 +0,0 @@
|
||||
--- ANTES/UserControl/DetalleEtapa.ascx.cs
|
||||
+++ DESPUES/UserControl/DetalleEtapa.ascx.cs
|
||||
@@ -328,7 +328,39 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- GvTramites.DataSource = consulta.Data;
|
||||
+ List<TramiteSolicitudModel> tramites =
|
||||
+ consulta.Data ?? new List<TramiteSolicitudModel>();
|
||||
+
|
||||
+ foreach (TramiteSolicitudModel tramite in tramites)
|
||||
+ {
|
||||
+ var contexto = AppServices.TramiteSolicitudService
|
||||
+ .ObtenerContextoCambioEstatus(
|
||||
+ tramite.CveSolicitud,
|
||||
+ CurrentUser.CveUsuario,
|
||||
+ CurrentUser.NombreDominio);
|
||||
+
|
||||
+ if (!contexto.Success || contexto.Data == null)
|
||||
+ {
|
||||
+ Avisar(
|
||||
+ contexto.Success
|
||||
+ ? "No fue posible consultar los pendientes del trámite."
|
||||
+ : contexto.UserMessage);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ tramite.DocumentosPendientes =
|
||||
+ (contexto.Data.Documentos ??
|
||||
+ new List<SIG.Web.AppCode.Models.Documentos.TramiteDocumentoSolicitudModel>())
|
||||
+ .Count(documento =>
|
||||
+ documento.EsRequerido &&
|
||||
+ (!documento.TieneArchivo || documento.FechaExpirada));
|
||||
+
|
||||
+ tramite.PagosPendientes =
|
||||
+ (contexto.Data.Pagos ?? new List<ModeloPagoSolicitud>())
|
||||
+ .Count(pago => pago.EstaPendiente);
|
||||
+ }
|
||||
+
|
||||
+ GvTramites.DataSource = tramites;
|
||||
GvTramites.DataBind();
|
||||
}
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
--- ANTES/UserControl/DocumentosEtapa.ascx.cs
|
||||
+++ DESPUES/UserControl/DocumentosEtapa.ascx.cs
|
||||
@@ -152,9 +152,13 @@
|
||||
bool hayDocumentosParaCargar = DocumentosActuales.Any(documento =>
|
||||
documento.PuedeActualizarArchivo && !documento.EsGis);
|
||||
|
||||
- DescargarTodos.Visible = hayArchivos;
|
||||
- DescargarTodos.NavigateUrl = hayArchivos ? UrlDescargaTodos() : string.Empty;
|
||||
+ bool esDesarrollador = Usuario != null && Usuario.EsDesarrollador;
|
||||
+ DescargarTodos.Visible = hayArchivos && !esDesarrollador;
|
||||
+ DescargarTodos.NavigateUrl = DescargarTodos.Visible
|
||||
+ ? UrlDescargaTodos()
|
||||
+ : string.Empty;
|
||||
CargarArchivos.Visible = hayDocumentosParaCargar;
|
||||
+ VisualizadorDocumento.PermitirDescarga = !esDesarrollador;
|
||||
|
||||
MensajeVacio.Text = etapasVisibles.Count == 0 ? "No hay etapas para mostrar." : string.Empty;
|
||||
Listado.Update();
|
||||
@@ -452,7 +456,10 @@
|
||||
case "Descargar":
|
||||
return documento.TieneArchivo;
|
||||
case "AdministrarGis":
|
||||
- return documento.EsGis;
|
||||
+ return Usuario != null &&
|
||||
+ !Usuario.EsDesarrollador &&
|
||||
+ documento.EsGis &&
|
||||
+ documento.PuedeAdministrarGis;
|
||||
case "Cargar":
|
||||
return documento.PuedeActualizarArchivo;
|
||||
case "Aprobar":
|
||||
@@ -479,7 +486,11 @@
|
||||
return Usuario != null && !Usuario.EsDesarrollador &&
|
||||
documento.TieneVigencia && documento.TieneArchivo;
|
||||
case "Eliminar":
|
||||
- return documento.TieneArchivo && documento.PuedeActualizarArchivo;
|
||||
+ return documento.TieneArchivo &&
|
||||
+ documento.PuedeActualizarArchivo &&
|
||||
+ (Usuario == null ||
|
||||
+ !Usuario.EsDesarrollador ||
|
||||
+ documento.EsAprobado != true);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
@@ -49,6 +49,7 @@
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.EnterpriseServices" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Web" />
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(function (window, document) {
|
||||
(function (window, document) {
|
||||
'use strict';
|
||||
|
||||
if (window.SIGDocumentosEtapaCargaMasiva) {
|
||||
@@ -773,8 +773,6 @@
|
||||
var destino =
|
||||
opcion.CveFraccionamientoEtapa +
|
||||
'|' +
|
||||
opcion.CveSolicitud +
|
||||
'|' +
|
||||
opcion.CveTipoDocumento;
|
||||
|
||||
if (destinos[destino]) {
|
||||
@@ -793,8 +791,6 @@
|
||||
Incluir: true,
|
||||
CveFraccionamientoEtapa:
|
||||
opcion.CveFraccionamientoEtapa,
|
||||
CveSolicitud:
|
||||
opcion.CveSolicitud,
|
||||
CveTipoDocumento:
|
||||
opcion.CveTipoDocumento,
|
||||
FechaDocumento:
|
||||
|
||||
@@ -1,69 +1,327 @@
|
||||
(function (window, document, $) {
|
||||
(function (ventana, documento, $) {
|
||||
'use strict';
|
||||
|
||||
if (window.SIGLotesEtapa) {
|
||||
if (ventana.SIGLotesEtapa) {
|
||||
return;
|
||||
}
|
||||
|
||||
function init(context) {
|
||||
var $ctx = $(context || document);
|
||||
var instancias = Object.create(null);
|
||||
var resguardando = false;
|
||||
|
||||
$ctx.find('.sig-lotes-etapa .select2me').each(function () {
|
||||
var $el = $(this);
|
||||
|
||||
if (typeof $el.select2 !== 'function') {
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Compatible con el Select2 que ya usa la plataforma.
|
||||
* No reinicializa controles que ya tienen Select2.
|
||||
*/
|
||||
if ($el.data('select2') ||
|
||||
$el.hasClass('select2-hidden-accessible')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$el.select2({
|
||||
width: '100%'
|
||||
});
|
||||
});
|
||||
|
||||
$ctx.find('.sig-lotes-etapa .btn-group.open')
|
||||
.removeClass('open');
|
||||
function buscarPropietario(selector, clave) {
|
||||
return $(selector).filter(function () {
|
||||
return $(this).attr('data-lotes-propietario') === clave;
|
||||
}).first();
|
||||
}
|
||||
|
||||
$(function () {
|
||||
init(document);
|
||||
});
|
||||
|
||||
/*
|
||||
* WebForms / UpdatePanel
|
||||
*
|
||||
* REGLA DEL PROYECTO:
|
||||
* No inspeccionar paneles actualizados; usar endRequest.
|
||||
*
|
||||
* Después de cualquier postback parcial simplemente revisamos
|
||||
* los controles de Lotes. init() ya evita reinicializar Select2.
|
||||
*/
|
||||
if (window.Sys &&
|
||||
Sys.WebForms &&
|
||||
Sys.WebForms.PageRequestManager) {
|
||||
|
||||
var prm = Sys.WebForms.PageRequestManager.getInstance();
|
||||
|
||||
if (!prm._sigLotesEtapaRegistrado) {
|
||||
|
||||
prm.add_endRequest(function () {
|
||||
init(document);
|
||||
});
|
||||
|
||||
prm._sigLotesEtapaRegistrado = true;
|
||||
function redimensionar(estado) {
|
||||
if (estado.mapa && ventana.SIGVisorGis) {
|
||||
ventana.SIGVisorGis.redimensionar(estado.mapa);
|
||||
}
|
||||
}
|
||||
|
||||
window.SIGLotesEtapa = {
|
||||
inicializar: init
|
||||
};
|
||||
function devolverMapa(estado) {
|
||||
if (estado.mapa && estado.origen.length) {
|
||||
estado.mapa.detach().appendTo(estado.origen);
|
||||
estado.origen.removeClass('sig-lotes-mapa-reservado').css('height', '');
|
||||
redimensionar(estado);
|
||||
}
|
||||
}
|
||||
|
||||
function moverAlPanel(estado) {
|
||||
if (!estado.mapa || !estado.mapa.length) {
|
||||
return;
|
||||
}
|
||||
if (!estado.origen.hasClass('sig-lotes-mapa-reservado')) {
|
||||
estado.altoOrigen = estado.origen.outerHeight();
|
||||
}
|
||||
estado.origen.height(estado.altoOrigen).addClass('sig-lotes-mapa-reservado');
|
||||
estado.mapa.detach().appendTo(estado.panel.find('[data-lotes-mapa-panel]'));
|
||||
redimensionar(estado);
|
||||
}
|
||||
|
||||
function actualizarSeleccion(estado) {
|
||||
var raiz = buscarPropietario('.sig-lotes-etapa', estado.clave);
|
||||
raiz.find('[data-lotes-fila]').each(function () {
|
||||
var seleccionada = String($(this).attr('data-lotes-fila')) === String(estado.lote || '');
|
||||
$(this).toggleClass('sig-lotes-fila-seleccionada', seleccionada)
|
||||
.attr('aria-selected', seleccionada ? 'true' : 'false');
|
||||
});
|
||||
var fila = raiz.find('[data-lotes-fila]').filter(function () {
|
||||
return String($(this).attr('data-lotes-fila')) === String(estado.lote || '');
|
||||
}).first();
|
||||
var contenedor = estado.panel.find('[data-lotes-menu-panel]').empty();
|
||||
var acciones = fila.find('.sig-menu-acciones').clone(false);
|
||||
// Los enlaces conservan el destino de postback del grid y sus permisos de servidor.
|
||||
acciones.find('[id]').removeAttr('id');
|
||||
acciones.find('.sig-menu-acciones-boton').attr('aria-expanded', 'false');
|
||||
acciones.find('.sig-lotes-ver-mapa').closest('li').remove();
|
||||
acciones.appendTo(contenedor);
|
||||
}
|
||||
|
||||
function consultarDetalle(estado) {
|
||||
if (!estado.panel.hasClass('sig_panel_open') || !estado.pendiente) {
|
||||
return;
|
||||
}
|
||||
var gestor = ventana.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager.getInstance();
|
||||
if (gestor && gestor.get_isInAsyncPostBack()) {
|
||||
return;
|
||||
}
|
||||
var boton = documento.getElementById(estado.panel.attr('data-lotes-consultar'));
|
||||
var campo = documento.getElementById(estado.panel.attr('data-lotes-campo'));
|
||||
if (!boton || !campo) {
|
||||
return;
|
||||
}
|
||||
campo.value = estado.pendiente;
|
||||
estado.pendiente = null;
|
||||
boton.click();
|
||||
}
|
||||
|
||||
function abrirDetalle(estado, lote) {
|
||||
estado.panel[0].click();
|
||||
estado.lote = lote.CveFraccionamientoLote;
|
||||
estado.vinculo = lote.GISPoligonoClave;
|
||||
estado.panel.find('[data-lotes-titulo]').text(lote.Nombre || ('Lote ' + estado.lote));
|
||||
estado.panel.find('[data-lotes-estado]').text('Consultando información del lote...');
|
||||
estado.panel.find('[data-lotes-detalle]').hide();
|
||||
estado.panel.find('[data-lotes-desvincular]').toggle(!!estado.vinculo);
|
||||
actualizarSeleccion(estado);
|
||||
ventana.SIGPanelLateral.abrir(estado.panel);
|
||||
moverAlPanel(estado);
|
||||
estado.pendiente = estado.lote;
|
||||
consultarDetalle(estado);
|
||||
}
|
||||
|
||||
function conectarMapa(estado) {
|
||||
if (!estado.mapa || estado.mapa.is('[data-sig-lotes-mapa-inicializado]')) {
|
||||
return;
|
||||
}
|
||||
estado.mapa.on('sig:loteSeleccionado', function (evento, lote) {
|
||||
abrirDetalle(estado, lote);
|
||||
});
|
||||
estado.mapa.attr('data-sig-lotes-mapa-inicializado', '1');
|
||||
}
|
||||
|
||||
function conectarPanel(estado) {
|
||||
var panel = estado.panel;
|
||||
if (panel.is('[data-sig-lotes-panel-inicializado]')) {
|
||||
return;
|
||||
}
|
||||
estado.anclaPanel = $('<span class="sig-lotes-ancla-panel" hidden></span>').insertBefore(panel);
|
||||
// El origen del panel también queda fuera de los UpdatePanel.
|
||||
panel.detach().appendTo($('form').first());
|
||||
panel.on('cerrado.sig.panel', function () {
|
||||
estado.pendiente = null;
|
||||
if (!resguardando) {
|
||||
devolverMapa(estado);
|
||||
}
|
||||
});
|
||||
panel.on('click.sigLotes', '[data-lotes-desvincular]', function () {
|
||||
var boton = $(this);
|
||||
if (!estado.vinculo || boton.prop('disabled')) {
|
||||
return;
|
||||
}
|
||||
boton.prop('disabled', true);
|
||||
var lote = estado.lote;
|
||||
var clave = estado.vinculo;
|
||||
panel.find('[data-lotes-estado]').text('Desvinculando lote...');
|
||||
$.ajax({
|
||||
url: estado.mapa.attr('data-gis-url'),
|
||||
type: 'POST',
|
||||
dataType: 'json',
|
||||
timeout: 30000,
|
||||
data: {
|
||||
metodo: 'DesvincularLote',
|
||||
CveFraccionamientoEtapa: estado.etapa,
|
||||
CveFraccionamientoLote: lote,
|
||||
ClavePoligono: clave
|
||||
}
|
||||
}).done(function (respuesta) {
|
||||
if (!respuesta.success) {
|
||||
panel.find('[data-lotes-estado]').text(respuesta.message || 'No fue posible desvincular.');
|
||||
return;
|
||||
}
|
||||
if (estado.lote === lote && estado.vinculo === clave) {
|
||||
estado.vinculo = '';
|
||||
boton.hide();
|
||||
panel.find('[data-lotes-estado]').text('Lote desvinculado. Puede seleccionar el polígono para vincular otro lote.');
|
||||
estado.lote = null;
|
||||
actualizarSeleccion(estado);
|
||||
}
|
||||
ventana.SIGVisorGis.limpiarSeleccion(estado.mapa, lote);
|
||||
}).fail(function (respuesta) {
|
||||
panel.find('[data-lotes-estado]').text(
|
||||
respuesta.responseJSON && respuesta.responseJSON.message ||
|
||||
'No se pudo confirmar la desvinculación. Seleccione nuevamente el polígono.');
|
||||
}).always(function () {
|
||||
boton.prop('disabled', false);
|
||||
});
|
||||
});
|
||||
panel.attr('data-sig-lotes-panel-inicializado', '1');
|
||||
}
|
||||
|
||||
function restaurarMapas() {
|
||||
if (resguardando) {
|
||||
return;
|
||||
}
|
||||
$('.sig-lotes-mapa-origen').each(function () {
|
||||
var origen = $(this);
|
||||
var clave = origen.attr('data-lotes-propietario');
|
||||
var etapa = origen.attr('data-lotes-etapa');
|
||||
var estado = instancias[clave];
|
||||
var paneles = $('.sig-lotes-panel').filter(function () {
|
||||
return $(this).attr('data-lotes-propietario') === clave;
|
||||
});
|
||||
if (!estado) {
|
||||
estado = instancias[clave] = { clave: clave, etapa: etapa, panel: paneles.first(), origen: origen };
|
||||
}
|
||||
var nuevoPanel = paneles.filter(function () {
|
||||
return this !== estado.panel[0];
|
||||
}).first();
|
||||
if (nuevoPanel.length) {
|
||||
ventana.SIGPanelLateral.cerrar(estado.panel);
|
||||
estado.panel.remove();
|
||||
estado.panel = nuevoPanel;
|
||||
}
|
||||
var reemplazoOrigen = estado.origen[0] !== origen[0];
|
||||
estado.origen = origen;
|
||||
var nuevoMapa = origen.find('.sig-visor-gis').first();
|
||||
if (estado.etapa !== etapa || (reemplazoOrigen && !nuevoMapa.length)) {
|
||||
ventana.SIGPanelLateral.cerrar(estado.panel);
|
||||
if (estado.mapa) {
|
||||
estado.mapa.remove();
|
||||
}
|
||||
estado.mapa = null;
|
||||
estado.lote = null;
|
||||
estado.pendiente = null;
|
||||
estado.reabrirPanel = false;
|
||||
estado.etapa = etapa;
|
||||
origen.removeClass('sig-lotes-mapa-reservado').css('height', '');
|
||||
}
|
||||
if (estado.mapa && nuevoMapa.length && nuevoMapa[0] !== estado.mapa[0]) {
|
||||
nuevoMapa.remove();
|
||||
}
|
||||
if (!estado.mapa || !estado.mapa.length) {
|
||||
estado.mapa = nuevoMapa;
|
||||
}
|
||||
conectarPanel(estado);
|
||||
conectarMapa(estado);
|
||||
if (estado.reabrirPanel) {
|
||||
estado.reabrirPanel = false;
|
||||
ventana.SIGPanelLateral.abrir(estado.panel);
|
||||
}
|
||||
if (estado.mapa) {
|
||||
estado.mapa.removeClass('sig-lotes-mapa-resguardado');
|
||||
}
|
||||
if (estado.panel.hasClass('sig_panel_open')) {
|
||||
moverAlPanel(estado);
|
||||
} else {
|
||||
devolverMapa(estado);
|
||||
}
|
||||
actualizarSeleccion(estado);
|
||||
});
|
||||
$.each(instancias, function (clave, estado) {
|
||||
if (buscarPropietario('.sig-lotes-mapa-origen', clave).length) {
|
||||
return;
|
||||
}
|
||||
ventana.SIGPanelLateral.cerrar(estado.panel);
|
||||
if (estado.mapa) {
|
||||
estado.mapa.remove();
|
||||
}
|
||||
estado.panel.remove();
|
||||
delete instancias[clave];
|
||||
});
|
||||
}
|
||||
|
||||
function resguardarMapas(emisor, argumentos) {
|
||||
// pageLoading ocurre después de recibir la respuesta y antes de reemplazar el DOM.
|
||||
resguardando = true;
|
||||
$.each(instancias, function (clave, estado) {
|
||||
if (!estado.mapa || !estado.mapa.length) {
|
||||
return;
|
||||
}
|
||||
estado.altoOrigen = estado.origen.hasClass('sig-lotes-mapa-reservado') ?
|
||||
estado.altoOrigen : estado.origen.outerHeight();
|
||||
estado.origen.height(estado.altoOrigen).addClass('sig-lotes-mapa-reservado');
|
||||
estado.mapa.detach().appendTo($('form').first()).addClass('sig-lotes-mapa-resguardado');
|
||||
});
|
||||
var reemplazos = argumentos && argumentos.get_panelsUpdating ? argumentos.get_panelsUpdating() : [];
|
||||
var eliminados = argumentos && argumentos.get_panelsDeleting ? argumentos.get_panelsDeleting() : [];
|
||||
$.each(instancias, function (clave, estado) {
|
||||
var ancla = estado.anclaPanel && estado.anclaPanel[0];
|
||||
var reemplazaPanel = $.grep([].concat(reemplazos, eliminados), function (panel) {
|
||||
return ancla && (panel === ancla || $.contains(panel, ancla));
|
||||
}).length > 0;
|
||||
if (reemplazaPanel) {
|
||||
// El mapa ya está a salvo. WebForms debe disponer las pestañas y controles
|
||||
// del panel que el servidor va a reemplazar para no duplicar componentes AJAX.
|
||||
estado.reabrirPanel = estado.panel.hasClass('sig_panel_open');
|
||||
ventana.SIGPanelLateral.cerrar(estado.panel);
|
||||
estado.panel.detach().insertAfter(estado.anclaPanel);
|
||||
}
|
||||
});
|
||||
resguardando = false;
|
||||
}
|
||||
|
||||
function inicializar() {
|
||||
restaurarMapas();
|
||||
$.each(instancias, function (clave, estado) {
|
||||
if (estado.mapa) {
|
||||
estado.mapa.removeClass('sig-lotes-mapa-resguardado');
|
||||
}
|
||||
var contenido = estado.panel.find('[data-lotes-detalle]');
|
||||
var coincide = !estado.pendiente &&
|
||||
String(contenido.attr('data-lotes-detalle')) === String(estado.lote);
|
||||
contenido.toggle(coincide);
|
||||
if (coincide) {
|
||||
estado.panel.find('[data-lotes-estado]').text('');
|
||||
} else if (estado.lote && !estado.pendiente && estado.panel.hasClass('sig_panel_open')) {
|
||||
estado.panel.find('[data-lotes-estado]').text('No fue posible mostrar el lote. Selecciónelo nuevamente.');
|
||||
}
|
||||
ventana.setTimeout(function () { consultarDetalle(estado); }, 0);
|
||||
});
|
||||
$('.sig-lotes-etapa .select2me:not([data-sig-lotes-select-inicializado])').each(function () {
|
||||
var elemento = $(this);
|
||||
if (typeof elemento.select2 !== 'function') {
|
||||
return;
|
||||
}
|
||||
if (!elemento.data('select2') && !elemento.hasClass('select2-hidden-accessible')) {
|
||||
elemento.select2({ width: '100%' });
|
||||
}
|
||||
elemento.attr('data-sig-lotes-select-inicializado', '1');
|
||||
});
|
||||
}
|
||||
|
||||
$(documento).on('click.sigLotes', '.sig-lotes-ver-mapa', function (evento) {
|
||||
evento.preventDefault();
|
||||
var boton = $(this);
|
||||
var lote = boton.attr('data-lote');
|
||||
// El menú puede estar temporalmente en el formulario, fuera del grid.
|
||||
var estado;
|
||||
$.each(instancias, function (clave, candidata) {
|
||||
if (buscarPropietario('.sig-lotes-etapa', clave)
|
||||
.find('[data-lotes-fila="' + lote + '"]').length) {
|
||||
estado = candidata;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
if (!estado || !estado.mapa || !estado.mapa.length) {
|
||||
if (ventana.SIGAlerts) {
|
||||
ventana.SIGAlerts.enqueue({ type: 4, message: 'La etapa no tiene un mapa disponible.' });
|
||||
}
|
||||
return;
|
||||
}
|
||||
ventana.SIGVisorGis.verLote(estado.mapa, lote);
|
||||
});
|
||||
|
||||
ventana.SIGLotesEtapa = {
|
||||
inicializar: inicializar,
|
||||
restaurarMapas: restaurarMapas
|
||||
};
|
||||
$(inicializar);
|
||||
if (ventana.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) {
|
||||
var gestor = Sys.WebForms.PageRequestManager.getInstance();
|
||||
gestor.add_pageLoading(resguardarMapas);
|
||||
gestor.add_endRequest(inicializar);
|
||||
}
|
||||
}(window, document, jQuery));
|
||||
|
||||