Compare commits
4 Commits
6685ef63fb
...
330129d24d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
330129d24d | ||
|
|
45ce71c7da | ||
|
|
8f33c860ec | ||
|
|
30f2f917a4 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -9,6 +9,8 @@
|
||||
|
||||
# Compilación .NET Framework / ASP.NET
|
||||
[Bb]in/
|
||||
!SIG.Web/[Bb]in/
|
||||
!SIG.Web/[Bb]in/**
|
||||
[Oo]bj/
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
|
||||
Binary file not shown.
113
AGENTS.md
113
AGENTS.md
@@ -53,6 +53,25 @@ Database
|
||||
|
||||
---
|
||||
|
||||
## Source code readability rules
|
||||
|
||||
All generated or modified source code must be formatted for human maintenance.
|
||||
|
||||
- Do not compress multiple controls, HTML elements, CSS rules, SQL clauses, assignments, conditions, or statements onto one line merely to reduce file length.
|
||||
- Use consistent indentation and line breaks that make nesting and control flow visible.
|
||||
- Put independent C# statements on separate lines. Expand non-trivial `if`, loops, object initializers, method calls, and methods across multiple lines.
|
||||
- In ASPX/HTML, place nested elements and server controls on separate indented lines. Keep attributes readable; wrap long declarations across lines.
|
||||
- Format CSS with one declaration per line for page-specific styles. Format JavaScript and SQL using the same readability principle.
|
||||
- Prefer clear diffs and easy future editing over compact generated output.
|
||||
- The command rule requiring one-line PowerShell or terminal commands applies only to commands. It does not apply to C#, ASPX, HTML, CSS, JavaScript, SQL, XML, or configuration source.
|
||||
|
||||
## Agent instruction file maintenance rules
|
||||
|
||||
- Before modifying `AGENTS.md` or any complementary `AGENTS_*.md` file, read the existing file and apply only the smallest required addition or correction.
|
||||
- Do not rewrite or replace an entire agent instruction file unless the user explicitly requests a complete rewrite.
|
||||
- Preserve existing user-authored rules, terminology, capitalization, examples, and formatting outside the requested change.
|
||||
- When adding a rule, first verify whether an equivalent or conflicting rule already exists and update only the relevant section.
|
||||
|
||||
## Command rules
|
||||
|
||||
When giving commands for this project:
|
||||
@@ -88,7 +107,7 @@ Use this base structure:
|
||||
|
||||
```text
|
||||
SIG.Web/
|
||||
AppCode/
|
||||
App_Code/
|
||||
Infrastructure/
|
||||
Sql/
|
||||
Repositories/
|
||||
@@ -114,10 +133,14 @@ SIG.Web/
|
||||
|
||||
Rules:
|
||||
|
||||
- The active application uses the ASP.NET Web Site runtime-compilation model.
|
||||
- Shared C# source belongs in the exact special folder `App_Code`.
|
||||
- Pages, master pages, controls, handlers, and `Global.asax` use `CodeFile` or source compiled from `App_Code`; do not introduce new `CodeBehind` dependencies on `SIG.Web.dll`.
|
||||
- Keep third-party and external assemblies in `bin`, but do not build or deploy a project assembly named `SIG.Web.dll`.
|
||||
- Do not place database access directly inside `.aspx.cs`, `.ascx.cs`, or `Site.master.cs`.
|
||||
- Database-related helpers go under `App_Code/Sql` or a clearly named SQL/data folder.
|
||||
- Business access goes through `Contracts` and `Services`.
|
||||
- If the project file needs explicit compilation entries, include C# files recursively, for example `App_Code\**\*.cs`, but avoid duplicate compile entries that include the same file twice.
|
||||
- The active Web Site does not use explicit project compilation entries; C# files under `App_Code` compile automatically at runtime.
|
||||
|
||||
---
|
||||
|
||||
@@ -282,6 +305,19 @@ Do not mix placeholder naming systems in the same project.
|
||||
|
||||
---
|
||||
|
||||
## WebForms tab and page-state rules
|
||||
|
||||
- Register AjaxControlToolkit once in `Web.config` under `system.web/pages/controls` with the exact prefix `ajax`; do not add `<%@ Register ... %>` directives for it in individual pages.
|
||||
- AjaxControlToolkit controls must use the `ajax:` prefix, for example `ajax:TabContainer` and `ajax:TabPanel`; do not use `ajaxToolkit:` or another page-specific prefix.
|
||||
- Tabs in WebForms pages must use `ajax:TabContainer` and `ajax:TabPanel`; do not build page tabs with Bootstrap `nav-tabs`, custom hidden panels, or JavaScript-only tab switching.
|
||||
- Use the `ScriptManager` owned by `Site.master` and the existing AjaxControlToolkit resources. Do not add another `ScriptManager` or duplicate Toolkit scripts/styles.
|
||||
- Server-side page state such as current entity keys, selected child keys, editing mode, flags, and the active tab must be stored in typed `ViewState` properties when it must survive postback.
|
||||
- Do not add `asp:HiddenField` merely to preserve server-side state across postbacks. A hidden field is allowed only when client-side JavaScript must read or change the value.
|
||||
- Hidden-field values are client-controlled and must never be trusted for authorization or sensitive decisions; validate them again on the server when their use is unavoidable.
|
||||
- Keep ViewState values small and serializable. Do not store database connections, commands, readers, services, repositories, or unnecessarily large result sets in ViewState.
|
||||
- ViewState property and key names must identify the entity and purpose, for example `CveFraccionamientoActual` and `CveFraccionamientoEtapaActual`.
|
||||
|
||||
---
|
||||
## Login and session rules
|
||||
|
||||
Authentication must go through a contract.
|
||||
@@ -358,6 +394,23 @@ Rules:
|
||||
|
||||
---
|
||||
|
||||
## Repository ownership rules
|
||||
|
||||
Repository ownership is determined by the data domain and stored-procedure prefix, not by the page or feature that currently consumes the data.
|
||||
|
||||
- Procedures named `PA_Gral_*` belong behind contracts and repositories under `Contracts/General` and `Repositories/General`.
|
||||
- General catalogs such as states, countries, municipalities, neighborhoods, and postal codes must not be placed in a security, registration, sales, or page-specific repository.
|
||||
- A feature service such as public registration may orchestrate both its feature repository and `IGeneralCatalogRepository`, but it must not move general catalog access into the feature repository.
|
||||
- Apply the same ownership rule to future procedure families: `PA_Sis_*` belongs to security/system infrastructure, `PA_Tra_*` to procedures, `PA_Vta_*` to sales, and so on.
|
||||
|
||||
## Database executor ownership rules
|
||||
|
||||
- `IDbExecutor`, `DbExecutor`, `StoredProcedureCommand`, `IDbCommand`, and direct stored-procedure execution may only be used inside classes under `Repositories` or repository database infrastructure.
|
||||
- Services must not reference or receive `IDbExecutor`, create database commands, execute readers, or call stored procedures directly.
|
||||
- A service that needs persisted data must depend on a repository contract. The concrete repository receives `IDbExecutor` and owns parameter configuration and result mapping.
|
||||
- Keep the `DbExecutor` implementation under `Repositories/Database`; do not place it under `Services` or expose it publicly through `AppServices`.
|
||||
|
||||
---
|
||||
## Service rules
|
||||
|
||||
Services belong in `/Services`.
|
||||
@@ -379,6 +432,12 @@ Rules:
|
||||
- Services may depend on SQL helpers/repositories.
|
||||
- `.aspx.cs` files should be thin and delegate work to services.
|
||||
- Keep dummy services separate from SQL-backed services.
|
||||
- Services own application transactions when one business operation performs one or more repository mutations.
|
||||
- Use `TransactionLogic` inside a `using` block around the repository calls and invoke `Commit()` only after every required repository result succeeds.
|
||||
- Pages and repositories must not create, commit, roll back, or dispose application transactions.
|
||||
- Repositories participate through the ambient `TransactionScope`; connection strings used for transactional work must not set `Enlist=false`.
|
||||
- Select `TransactionScopeOption`, isolation level, and timeout in the service according to the business operation. Use `RequiresNew` or `Suppress` only when that behavior is intentional and documented by the call site.
|
||||
- Do not include slow external operations such as SMTP or HTTP calls inside a database transaction.
|
||||
|
||||
---
|
||||
|
||||
@@ -428,15 +487,20 @@ Rules:
|
||||
- Do not create `SqlCommand` directly in `.aspx.cs`.
|
||||
- Use repositories or SQL executor classes behind contracts.
|
||||
- All application database reads and writes must use stored procedures; inline SQL in C# is prohibited.
|
||||
- Mandatory: read and follow `AGENTS_STORED_PROCEDURES.md` for naming, output parameters, TRY/CATCH, logging, transactions, and logical deletion.
|
||||
- Mandatory: read and follow `AGENTS_STORED_PROCEDURES.md` for naming, output parameters, TRY/CATCH, logging, transactions, and physical deletion.
|
||||
- Mandatory: read and follow `AGENTS_DATA_READER_MAPPING.md` for object, list, `DataTable`, and `JArray` result mapping.
|
||||
- Mandatory: read and follow `AGENTS_DATABASE_ERROR_LOGGING.md` for safe parameter logging and reproducible stored-procedure calls.
|
||||
- Mandatory: read and follow `AGENTS_PAGE_STRUCTURE.md` for the `Pages/Modulo/` location of all new WebForms pages.
|
||||
- Mandatory: read and follow `AGENTS_WEBFORMS_PARTIAL_POSTBACKS.md` for the single master form, ScriptManager ownership, UpdatePanel usage, and partial-postback rules.
|
||||
- Mandatory: read and follow `AGENTS_JAVASCRIPT_INITIALIZATION.md` for per-element initialization flags, global event guards, and idempotent control setup after partial postbacks.
|
||||
- Mandatory: read and follow `AGENTS_CATALOG_STRUCTURE.md` for catalog titles, breadcrumbs, actions, filters, indicators, grids, quick-create modals, and detail pages.
|
||||
- Keep stored procedure names centralized.
|
||||
- Repositories must use `CommandType.StoredProcedure` and parameterized inputs/outputs.
|
||||
- Never concatenate raw user input into SQL.
|
||||
- The database default collation and general text columns must use `Modern_Spanish_CS_AS`.
|
||||
- Columns named `Codigo`, beginning with `Codigo`, or containing a real user login identifier such as `NombreUsuario`, `UsuarioPortal`, or `Acum_PortalUsuario` must use `Modern_Spanish_CI_AS`.
|
||||
- `AgenteUsuario` is browser/device metadata, not a login identifier, and must use the general `Modern_Spanish_CS_AS` collation.
|
||||
- Do not use `Modern_Spanish_CS_AI`.
|
||||
|
||||
Recommended Web.config connection string pattern:
|
||||
|
||||
@@ -582,6 +646,8 @@ Rules:
|
||||
- Do not build the menu from SQL inside `Site.master.cs`.
|
||||
- Menu items should use `MenuItemModel` or an equivalent model.
|
||||
- Encode text output when generating HTML menu strings.
|
||||
- Module visibility and page access are separate concerns: `Sis_Modulos.Visible` controls whether an item is shown in the menu, but it must not deny direct page access.
|
||||
- `PA_Sis_PaginaAccessCheck` must validate role assignment, `PuedeVer`, active state, and URL. It must not require `Sis_Modulos.Visible = 1`.
|
||||
|
||||
---
|
||||
|
||||
@@ -622,15 +688,42 @@ MasterLayoutModel
|
||||
|
||||
## Error handling rules
|
||||
|
||||
Controlled outcomes and technical failures must use different logs.
|
||||
|
||||
- `@ErrorTipo = 1`, SQL exceptions, timeouts, contract failures, and unexpected exceptions go to the main technical log.
|
||||
- `@ErrorTipo = 2` is a controlled warning. It must not be written to the main technical log.
|
||||
- Controlled warnings go to daily compact files under `~/log/controlled`.
|
||||
- Controlled log files retain only the current day and the previous two days. The retention is configured with `ControlledLogRetentionDays = 3`.
|
||||
- Explicit controlled throws must use `ControlledApplicationException`; do not classify arbitrary `Exception` or `InvalidOperationException` instances as controlled.
|
||||
- Controlled logs record date, source, procedure, URL, and friendly message, but omit full stack traces and replay SQL to remain compact.
|
||||
- A controlled exception must still return a friendly result to the page and must never be presented as an unexpected application failure.
|
||||
|
||||
- Handle null session user cleanly and redirect to login.
|
||||
- Handle failed login with a friendly message.
|
||||
- Handle async postback errors through `ScriptManager.AsyncPostBackError` only if the handler exists.
|
||||
- Avoid infinite loading states in JavaScript controls.
|
||||
- For AJAX/server search controls, use client and server timeouts.
|
||||
- Recommended default search timeout: about 20 to 30 seconds unless the user asks otherwise.
|
||||
## Action availability and feedback rules
|
||||
|
||||
- Do not disable a button or primary action only because a business prerequisite is missing, such as an unassigned client or an empty related catalog.
|
||||
- Keep the action available by default; when the user clicks it, validate the prerequisite and show a clear message explaining why the operation cannot continue and what must be done next.
|
||||
- Never leave a disabled action without an immediately visible explanation.
|
||||
- Before adding `Enabled="false"`, the HTML `disabled` attribute, or an equivalent disabled CSS/JavaScript state to a catalog or page action, ask the user whether disabling is acceptable or whether a message, modal, link, or other alternative should be used.
|
||||
- A transient disabled state used only while a request is being processed to prevent duplicate submissions is allowed, but the action must be restored when processing finishes.
|
||||
|
||||
---
|
||||
|
||||
## Grid display rules
|
||||
|
||||
- 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.
|
||||
- Keep GridView declarations and their columns expanded and indented according to the source code readability rules.
|
||||
- Detail-page navigation from a GridView or list must use `asp:HyperLink` or another real link with `NavigateUrl`; do not use `LinkButton`, `RowCommand`, or a postback only to open a detail page.
|
||||
- URL-building variables and helpers must describe the row entity, for example `cveFraccionamiento`, `fraccionamientoDetalleUrl`, or `GetFraccionamientoDetalleUrl`. Avoid generic names such as `id`, `itemUrl`, or `detailUrl` when the entity is known.
|
||||
|
||||
---
|
||||
## JavaScript and CSS rules
|
||||
|
||||
- Global scripts/styles must be registered in `BundleConfig` and rendered by master.
|
||||
@@ -673,6 +766,20 @@ If the PDF viewer is added to this project later:
|
||||
|
||||
Use only one active home page convention.
|
||||
|
||||
For local development, the canonical home URL is:
|
||||
|
||||
```text
|
||||
http://localhost:52706/Inicio.aspx
|
||||
```
|
||||
|
||||
The application root must be equivalent and redirect explicitly to that page:
|
||||
|
||||
```text
|
||||
http://localhost:52706/ -> http://localhost:52706/Inicio.aspx
|
||||
```
|
||||
|
||||
Keep the root redirect and the `Inicio.aspx` default document consistent. Do not introduce another startup page.
|
||||
|
||||
Allowed options:
|
||||
|
||||
```text
|
||||
|
||||
116
AGENTS_CATALOG_STRUCTURE.md
Normal file
116
AGENTS_CATALOG_STRUCTURE.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Reglas obligatorias para páginas de catálogo
|
||||
|
||||
Estas reglas complementan `AGENTS.md`, `AGENTS_PAGE_STRUCTURE.md`, `AGENTS_WEBFORMS_PARTIAL_POSTBACKS.md` y `AGENTS_JAVASCRIPT_INITIALIZATION.md`.
|
||||
|
||||
## Estructura visual
|
||||
|
||||
Toda página de catálogo debe organizarse, en este orden:
|
||||
|
||||
1. Título de la página.
|
||||
2. Barra de navegación ascendente y menú de acciones.
|
||||
3. Barra o control de filtros.
|
||||
4. Sección opcional de cabecera con indicadores o resúmenes.
|
||||
5. Grid o contenido principal.
|
||||
|
||||
- El título, breadcrumb y contenedor de acciones pertenecen a `Site.master`; no deben duplicarse en cada ASPX.
|
||||
- La barra de navegación debe mostrar la jerarquía ascendente hasta la página actual, por ejemplo `Inicio > Desarrolladores > Fraccionamientos`.
|
||||
- La master debe exponer un `ContentPlaceHolder` de acciones dentro de un `<ul>`; las páginas insertan elementos `<li>` o un `UpdatePanel` que produzca esos elementos.
|
||||
- Las acciones principales del catálogo, como agregar, exportar o imprimir, deben colocarse en ese menú cuando corresponda.
|
||||
|
||||
## Filtros
|
||||
|
||||
- Los catálogos deben usar el control reutilizable de filtros activos; no construir una barra distinta en cada página.
|
||||
- El control muestra los filtros aplicados y permite abrir un modal para seleccionarlos o modificarlos.
|
||||
- Los combos, buscadores y demás campos de selección pertenecen al modal de filtros.
|
||||
- Todo `asp:DropDownList` nuevo de una página de catálogo debe incluir la clase `select2me`, además de sus clases visuales necesarias.
|
||||
- Los filtros aplicados deben describirse con texto comprensible y permitir retirarse o limpiarse.
|
||||
- La búsqueda debe volver a enlazar indicadores y contenido principal con el mismo conjunto de filtros.
|
||||
- El control reutilizable de filtros debe permanecer como server control de C#, conservar la imagen de chips y toolbar acordada, y exponer un evento `Consultar` para que cada página ejecute su propia búsqueda.
|
||||
- Los estilos del control de filtros pertenecen a `Styles/Filtros.css` y deben registrarse en el bundle global; no duplicarlos en `Estilos2.css`, en páginas ASPX ni registrarlos desde el control.
|
||||
- El control debe reconstruir sus hijos con IDs estables y conservar su estado y eventos al trabajar dentro de un `UpdatePanel`; no debe registrar scripts globales ni crear otro `ScriptManager`.
|
||||
|
||||
## Presentación de grids
|
||||
|
||||
- Todo `asp:GridView` nuevo o modificado debe declarar `GridLines="None"`.
|
||||
- Su `CssClass` debe incluir la clase exacta `Widthall`.
|
||||
- No usar la clase `table-bordered` en grids de catálogo o detalle.
|
||||
- Se pueden conservar `table`, `table-striped` y `table-hover` cuando correspondan al diseño.
|
||||
|
||||
## Ordenamiento manual de catálogos
|
||||
|
||||
- Cuando una tabla de catálogo tenga el campo `Orden`, no mostrar ese campo en formularios, modales ni columnas del grid.
|
||||
- En el alta, el procedimiento almacenado asigna `ISNULL(MAX(Orden), 0) + 1`; cuando el orden dependa de una entidad padre, calcular el máximo únicamente dentro de ese padre.
|
||||
- Las modificaciones ordinarias conservan el orden existente. Si el registro cambia de padre, asignarle el siguiente orden disponible dentro del nuevo padre.
|
||||
- El procedimiento de listado ordena primero por `Orden` y después por un campo descriptivo estable.
|
||||
- El grid permite reordenar filas mediante arrastre y muestra únicamente un asa visual; no muestra el valor numérico de `Orden`.
|
||||
- El reordenamiento usa un procedimiento almacenado dedicado, valida en servidor el registro, la referencia y su pertenencia al mismo padre, y se ejecuta mediante repositorio y servicio.
|
||||
- Todo cambio de orden se registra mediante `IBitacoraService` dentro de la misma transacción de aplicación que actualiza el catálogo.
|
||||
- La inicialización del arrastre debe ser idempotente y volver a ejecutarse después de postbacks parciales sin duplicar eventos.
|
||||
## Indicadores y contenido
|
||||
|
||||
- La sección de cabecera es opcional; se usa cuando existen indicadores útiles como totales, activos, pendientes, etapas o avances.
|
||||
- No agregar tarjetas decorativas sin información funcional.
|
||||
- El grid o contenido principal siempre aparece después de filtros e indicadores.
|
||||
- Los estados vacíos deben explicar que no existen registros para los filtros actuales.
|
||||
|
||||
## Mensajes originados en modales
|
||||
|
||||
- Los labels dentro del modal se reservan para validaciones de captura conocidas, como campos requeridos, formatos inválidos o valores que el usuario puede corregir directamente.
|
||||
- Las reglas de negocio, resultados de servicios, errores técnicos, confirmaciones y mensajes de éxito deben mostrarse mediante el sistema central de alertas, aunque la acción se haya iniciado dentro del modal.
|
||||
- Cuando guardar falle, el modal debe conservar los valores y permanecer abierto o volver a abrirse; la alerta debe mostrarse por encima del overlay.
|
||||
- Un guardado exitoso puede cerrar el modal y mostrar un toast. Las alertas deben encolarse para no sobreponerse.
|
||||
- La misma regla aplica durante postbacks completos y parciales con `UpdatePanel`.
|
||||
## Navegación a páginas de detalle
|
||||
|
||||
- Cuando una fila abre una página de detalle, usar `asp:HyperLink` con `NavigateUrl` o un enlace HTML real.
|
||||
- No usar `LinkButton`, `CommandName`, `RowCommand` ni postback únicamente para navegar al detalle.
|
||||
- Los nombres de controles, métodos y variables deben identificar la entidad de la fila, por ejemplo `LnkFraccionamientoDetalle`, `cveFraccionamiento` y `fraccionamientoDetalleUrl`.
|
||||
- Reservar los comandos con postback para operaciones de servidor como guardar, eliminar, activar o ejecutar una acción de negocio.
|
||||
## Pestañas y estado de página
|
||||
|
||||
- AjaxControlToolkit debe registrarse globalmente en `Web.config` con el prefijo exacto `ajax`; no agregar directivas `<%@ Register ... %>` en cada página.
|
||||
- Las pestañas de catálogos y páginas de detalle deben implementarse con `ajax:TabContainer` y `ajax:TabPanel`.
|
||||
- No crear pestañas funcionales mediante `nav-tabs` de Bootstrap, paneles ocultos manualmente o navegación JavaScript independiente del ciclo de vida de WebForms.
|
||||
- Las claves y modos internos que deban sobrevivir postback se conservan en propiedades tipadas de `ViewState`.
|
||||
- No usar `asp:HiddenField` para estado exclusivamente del servidor. Reservarlo para valores que JavaScript necesite leer o modificar y validarlos nuevamente en el servidor.
|
||||
- Los nombres de las propiedades ViewState deben describir la entidad, por ejemplo `CveFraccionamientoActual` y `CveFraccionamientoEtapaActual`.
|
||||
## Alta rápida y detalle
|
||||
|
||||
- Antes de implementar un catálogo se debe definir si agregar y editar usarán modal, página de detalle o ambas modalidades.
|
||||
- La captura rápida se realiza en modal y contiene únicamente los campos necesarios para crear el registro.
|
||||
- Cuando el alta tenga modalidad básica y avanzada, el modal debe incluir un botón `Avanzado` que navegue a la página completa.
|
||||
- Cuando editar requiera relaciones, historial, etapas, documentos, trámites o estados, debe abrir una página de detalle en lugar de sobrecargar el modal.
|
||||
- La página de detalle puede editar la información principal y administrar sus relaciones en secciones o pestañas claramente identificadas.
|
||||
- No asumir automáticamente que alta y edición usan la misma interfaz.
|
||||
|
||||
## Bitácora de catálogos
|
||||
|
||||
- Toda alta, modificación, activación, desactivación o eliminación de un catálogo debe registrarse mediante `IBitacoraService` dentro de la misma transacción de aplicación que la operación principal.
|
||||
- El servicio confirma la transacción únicamente después de guardar correctamente la operación y toda su bitácora. Un fallo del encabezado, relaciones o campos revierte también la operación principal.
|
||||
- No registrar consultas, búsquedas, filtros, paginación ni visualizaciones de detalle sin cambios.
|
||||
- El servicio del catálogo construye el evento; el ASPX, su code-behind y los repositorios de negocio no deben registrar la bitácora directamente.
|
||||
- `Bit_Bitacora` guarda el encabezado del movimiento. Cada evento debe enviar una lista genérica de relaciones formada por tabla, campo y valor; el procedimiento resuelve `CveTabla`, `CveCampo` y si el valor se almacena como número entero o texto.
|
||||
- Los catálogos ligados a un cliente deben incluir una relación para la entidad afectada y otra para `Clientes.CveCliente`. Cada relación declara explícitamente `VisibleDesarrollador`.
|
||||
- Las altas envían todos los campos auditables y establecen `DiscriminarCamposSinCambios = false`.
|
||||
- Las modificaciones envían valor anterior y nuevo de los campos candidatos; `DiscriminarCamposSinCambios = true` es el valor predeterminado y guarda únicamente los campos que realmente cambiaron, distinguiendo correctamente entre `NULL` y texto vacío.
|
||||
- Las eliminaciones registran encabezado y relaciones, pero no requieren registros en `Bit_BitacoraCampos`.
|
||||
- Nunca registrar contraseñas, hashes, tokens, secretos ni otros valores sensibles en los campos de bitácora.
|
||||
- Para consultar la bitácora, `SuperUsuario` y `Administrador` pueden ver todos los registros. El rol `Empresa` se considera desarrollador y sólo puede ver eventos con una relación `Clientes.CveCliente` visible que coincida con cualquiera de sus clientes activos en `Sis_UsuariosClientes`.
|
||||
- Antes de liberar un catálogo nuevo, sus tablas y campos auditables deben estar registrados y activos en `Bit_Tablas` y `Bit_Campos`, junto con el script de configuración correspondiente.
|
||||
## Regla actual para fraccionamientos
|
||||
|
||||
- `Agregar fraccionamiento` usa captura rápida en modal.
|
||||
- `Editar` o `Ver detalle` navega a una página dedicada.
|
||||
- El detalle muestra la información del fraccionamiento, sus etapas, los trámites asociados a cada etapa y el último estado disponible, incluyendo estados finales como cancelado o terminado cuando existan.
|
||||
|
||||
## Legibilidad del código
|
||||
|
||||
- El ASPX, C#, CSS y JavaScript del catálogo debe conservar sangría y saltos de línea legibles.
|
||||
- No colocar grids, columnas, modales, controles anidados, validaciones ni varios statements C# en una sola línea.
|
||||
- Los archivos deben quedar preparados para que otro programador pueda localizar y modificar una sección sin tener que reformatearla primero.
|
||||
## WebForms
|
||||
|
||||
- Los modales permanecen dentro del único formulario de `Site.master`; ninguna página declara un formulario adicional.
|
||||
- Los eventos de botones dentro de acciones o modales siguen pasando por code-behind delgado, servicios, contratos, repositorios y procedimientos almacenados.
|
||||
- Después de un postback parcial, Select2 y los modales deben reinicializarse de manera idempotente según `AGENTS_JAVASCRIPT_INITIALIZATION.md`.
|
||||
- No copiar VB del sistema anterior; sólo usarlo como referencia funcional y reconstruir la solución en C#.
|
||||
@@ -56,8 +56,18 @@ SELECT @ErrorMostrar, @ErrorTipo, @Return;
|
||||
- Los mensajes `RAISERROR` de severidad 10 pueden registrarse mediante `SqlConnection.InfoMessage` sin activar esa opción.
|
||||
- Si `@Return`, `@ErrorTipo` y `@ErrorMostrar` regresan sin valor, registrar que la versión instalada del PA no devolvió el contrato requerido.
|
||||
|
||||
## Clasificación y retención
|
||||
|
||||
- `@ErrorTipo = 1` representa un error técnico o funcional que requiere atención. Debe conservarse en el log técnico principal con el diagnóstico y `ReplaySql`.
|
||||
- `@ErrorTipo = 2` representa una advertencia o resultado controlado, por ejemplo un código postal inexistente. No debe escribirse en el log técnico principal.
|
||||
- Las advertencias controladas se registran en archivos diarios `log/controlled/controlled-AAAA-MM-DD.log`.
|
||||
- Los archivos controlados conservan exactamente tres días calendario: el actual y los dos anteriores. Los más antiguos se eliminan automáticamente al escribir el siguiente evento.
|
||||
- El log controlado es compacto: fecha, origen, procedimiento, URL, mensaje amigable y tipo de excepción. No incluye stack trace completo, parámetros ni `ReplaySql`.
|
||||
- Un `throw` deliberadamente controlado debe usar `ControlledApplicationException`; el clasificador no debe convertir excepciones técnicas genéricas en eventos controlados.
|
||||
- Si `@ErrorTipo` es `0` pero `@Return` es falso, tratarlo como incumplimiento del contrato y enviarlo al log principal.
|
||||
|
||||
## Alcance
|
||||
|
||||
- Registrar parámetros detallados sólo cuando exista un error o advertencia que requiera diagnóstico.
|
||||
- Registrar parámetros detallados y `ReplaySql` únicamente para `@ErrorTipo = 1` o fallas técnicas; las advertencias controladas usan el registro compacto sin parámetros.
|
||||
- No registrar cada ejecución exitosa de manera predeterminada.
|
||||
- No usar el log como auditoría de operaciones exitosas; la auditoría pertenece a su propio contrato o procedimiento.
|
||||
|
||||
@@ -43,21 +43,22 @@ Todos los procedimientos deben declarar:
|
||||
## Control de errores
|
||||
|
||||
- Usar `SET NOCOUNT ON` y `TRY/CATCH` en todos los procedimientos.
|
||||
- Usar `SET XACT_ABORT ON` cuando exista una mutación o transacción.
|
||||
- Iniciar la transacción dentro de `TRY`, confirmar sólo después del éxito y ejecutar rollback en `CATCH` cuando `XACT_STATE() <> 0`.
|
||||
- Los procedimientos no deben usar `SET XACT_ABORT ON`, `BEGIN TRANSACTION`, `COMMIT TRANSACTION`, `ROLLBACK TRANSACTION` ni modificar una transacción recibida.
|
||||
- La transacción pertenece a la capa de servicio en C#, que debe usar `TransactionLogic` dentro de `using` al coordinar las llamadas a repositorios.
|
||||
- El servicio llama `Commit()` solamente cuando todas las operaciones requeridas terminan correctamente. Un fallo, excepción o salida sin `Commit()` debe permitir que `Dispose()` revierta la transacción ambiental.
|
||||
- Una validación fallida debe establecer los parámetros de salida y ejecutar `RETURN`; no debe continuar la mutación.
|
||||
- Para validar existencia, usar normalmente `EXISTS` en lugar de `COUNT(*)`.
|
||||
- En `CATCH`, generar un mensaje técnico separado con `ERROR_NUMBER()`, `ERROR_PROCEDURE()`, `ERROR_LINE()` y `ERROR_MESSAGE()` para el log.
|
||||
- El mensaje técnico puede notificarse con severidad informativa para que el ejecutor lo registre, pero nunca debe mostrarse directamente al usuario.
|
||||
|
||||
## Borrado lógico
|
||||
## Borrado físico
|
||||
|
||||
- Está prohibido usar `DELETE` físico en procedimientos CRUD normales.
|
||||
- Para borrar: `Borrado = 1` y `FechaBorrado = SYSDATETIME()`.
|
||||
- Para restaurar: `Borrado = 0` y `FechaBorrado = NULL`.
|
||||
- Las consultas normales deben filtrar `Borrado = 0` en cada tabla participante, excepto cuando el caso de uso solicite expresamente registros borrados.
|
||||
- La eliminación permanente sólo puede realizarse mediante el procedimiento controlado de retención y limpieza.
|
||||
- Ninguna página ASPX puede llamar directamente a la limpieza física.
|
||||
- La base de datos no utiliza las columnas `Borrado` ni `FechaBorrado`; no deben agregarse a tablas, modelos, consultas ni procedimientos nuevos.
|
||||
- Las operaciones de eliminación deben usar `DELETE` físico dentro de un procedimiento almacenado.
|
||||
- Antes de eliminar, validar las relaciones que deban conservarse. Si existen dependencias que impiden la operación, devolver una advertencia controlada con `@ErrorTipo = 2` y un mensaje claro.
|
||||
- Las eliminaciones de una entidad con hijos propios deben ejecutarse en orden, desde los hijos hasta el padre. El servicio que invoque el procedimiento debe envolver la operación en una transacción de aplicación.
|
||||
- No deshabilitar constraints ni eliminar información relacionada que pertenezca a otro proceso únicamente para permitir el `DELETE`.
|
||||
- Las páginas ASPX continúan llamando contratos y servicios; nunca deben ejecutar `DELETE` directamente.
|
||||
|
||||
## Plantilla requerida
|
||||
|
||||
@@ -71,8 +72,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RolAdd]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
SELECT
|
||||
@ErrorMostrar = NULL,
|
||||
@ErrorTipo = 0,
|
||||
@@ -84,7 +83,6 @@ BEGIN
|
||||
SELECT 1
|
||||
FROM dbo.Sis_Roles
|
||||
WHERE NombreRol = @Rol
|
||||
AND Borrado = 0
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = CONCAT('El rol ''', @Rol, ''' ya se encuentra registrado.');
|
||||
@@ -100,9 +98,6 @@ BEGIN
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
ROLLBACK TRANSACTION;
|
||||
|
||||
SET @ErrorMostrar = 'Ocurrió un error al agregar el rol; favor de contactar a Sistemas.';
|
||||
SET @ErrorTipo = 1;
|
||||
SET @Return = 0;
|
||||
@@ -120,4 +115,4 @@ END;
|
||||
GO
|
||||
```
|
||||
|
||||
Cuando el procedimiento use una transacción, debe incluir `BEGIN TRANSACTION` dentro de `TRY` y `COMMIT TRANSACTION` antes de establecer `@Return = 1`.
|
||||
Aunque un procedimiento ejecute varias escrituras, no debe administrar la transacción. La atomicidad se define en el servicio que coordina los repositorios.
|
||||
|
||||
BIN
AGUAHH.zip
Normal file
BIN
AGUAHH.zip
Normal file
Binary file not shown.
BIN
AP01-CANTABRIA2 ETAPA 1-20250917-v03.dwg
Normal file
BIN
AP01-CANTABRIA2 ETAPA 1-20250917-v03.dwg
Normal file
Binary file not shown.
1708
Bitacora_Procedimientos.sql
Normal file
1708
Bitacora_Procedimientos.sql
Normal file
File diff suppressed because it is too large
Load Diff
414
Catalogos_Postales_Registro.sql
Normal file
414
Catalogos_Postales_Registro.sql
Normal file
@@ -0,0 +1,414 @@
|
||||
SET ANSI_NULLS ON;
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
SET XACT_ABORT ON;
|
||||
GO
|
||||
|
||||
/*
|
||||
Catálogos postales para el registro público.
|
||||
|
||||
Este script NO elimina, vacía ni recrea las tablas pobladas.
|
||||
Solamente agrega columnas/índices faltantes y crea o actualiza
|
||||
el procedimiento almacenado de consulta.
|
||||
*/
|
||||
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_CP', N'U') IS NULL
|
||||
THROW 51020, N'Falta la tabla poblada dbo.Gral_SAT_CP.', 1;
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_Municipio', N'U') IS NULL
|
||||
THROW 51021, N'Falta la tabla poblada dbo.Gral_SAT_Municipio.', 1;
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_Localidad', N'U') IS NULL
|
||||
THROW 51022, N'Falta la tabla poblada dbo.Gral_SAT_Localidad.', 1;
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_Colonia', N'U') IS NULL
|
||||
THROW 51023, N'Falta la tabla poblada dbo.Gral_SAT_Colonia.', 1;
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_Estado', N'U') IS NULL
|
||||
THROW 51024, N'Falta la tabla poblada dbo.Gral_SAT_Estado.', 1;
|
||||
IF OBJECT_ID(N'dbo.Gral_SAT_Pais', N'U') IS NULL
|
||||
THROW 51025, N'Falta la tabla poblada dbo.Gral_SAT_Pais.', 1;
|
||||
GO
|
||||
|
||||
/* Borrado lógico incremental para los catálogos utilizados. */
|
||||
DECLARE @Tablas TABLE ([Tabla] sysname NOT NULL PRIMARY KEY);
|
||||
INSERT INTO @Tablas ([Tabla])
|
||||
VALUES
|
||||
(N'Gral_SAT_CP'),
|
||||
(N'Gral_SAT_Municipio'),
|
||||
(N'Gral_SAT_Localidad'),
|
||||
(N'Gral_SAT_Colonia'),
|
||||
(N'Gral_SAT_Estado'),
|
||||
(N'Gral_SAT_Pais');
|
||||
|
||||
DECLARE @Tabla sysname;
|
||||
DECLARE @Sql nvarchar(max);
|
||||
DECLARE Catalogos CURSOR LOCAL FAST_FORWARD FOR SELECT [Tabla] FROM @Tablas ORDER BY [Tabla];
|
||||
|
||||
OPEN Catalogos;
|
||||
FETCH NEXT FROM Catalogos INTO @Tabla;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
IF COL_LENGTH(N'dbo.' + @Tabla, N'Borrado') IS NULL
|
||||
BEGIN
|
||||
SET @Sql = N'ALTER TABLE [dbo].' + QUOTENAME(@Tabla)
|
||||
+ N' ADD [Borrado] bit NOT NULL CONSTRAINT '
|
||||
+ QUOTENAME(N'DF_' + @Tabla + N'_Borrado')
|
||||
+ N' DEFAULT ((0)) WITH VALUES;';
|
||||
EXEC sys.sp_executesql @Sql;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.' + @Tabla, N'FechaBorrado') IS NULL
|
||||
BEGIN
|
||||
SET @Sql = N'ALTER TABLE [dbo].' + QUOTENAME(@Tabla)
|
||||
+ N' ADD [FechaBorrado] datetime2(0) NULL;';
|
||||
EXEC sys.sp_executesql @Sql;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.check_constraints
|
||||
WHERE [parent_object_id] = OBJECT_ID(N'dbo.' + @Tabla)
|
||||
AND [name] = N'CK_' + @Tabla + N'_BorradoLogico'
|
||||
)
|
||||
BEGIN
|
||||
SET @Sql = N'ALTER TABLE [dbo].' + QUOTENAME(@Tabla)
|
||||
+ N' ADD CONSTRAINT ' + QUOTENAME(N'CK_' + @Tabla + N'_BorradoLogico')
|
||||
+ N' CHECK (([Borrado] = (0) AND [FechaBorrado] IS NULL)'
|
||||
+ N' OR ([Borrado] = (1) AND [FechaBorrado] IS NOT NULL));';
|
||||
EXEC sys.sp_executesql @Sql;
|
||||
END;
|
||||
|
||||
FETCH NEXT FROM Catalogos INTO @Tabla;
|
||||
END;
|
||||
|
||||
CLOSE Catalogos;
|
||||
DEALLOCATE Catalogos;
|
||||
GO
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_CP')
|
||||
AND [name] = N'IX_Gral_SAT_CP_BusquedaRegistro'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_CP_BusquedaRegistro]
|
||||
ON [dbo].[Gral_SAT_CP] ([CP])
|
||||
INCLUDE ([CveCP], [ClaveSATEstado], [ClaveSATMunicipio], [ClaveSATLocalidad])
|
||||
WHERE [Borrado] = (0);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Colonia')
|
||||
AND [name] = N'IX_Gral_SAT_Colonia_CP_Vigente'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Colonia_CP_Vigente]
|
||||
ON [dbo].[Gral_SAT_Colonia] ([CP])
|
||||
INCLUDE ([CveColonia], [ClaveSATColonia], [NombreAsentamiento])
|
||||
WHERE [Borrado] = (0);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Municipio')
|
||||
AND [name] = N'IX_Gral_SAT_Municipio_Claves_Vigente'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Municipio_Claves_Vigente]
|
||||
ON [dbo].[Gral_SAT_Municipio] ([ClaveSATEstado], [ClaveSATMunicipio])
|
||||
INCLUDE ([CveMunicipio], [Descripcion])
|
||||
WHERE [Borrado] = (0);
|
||||
GO
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1 FROM sys.indexes
|
||||
WHERE [object_id] = OBJECT_ID(N'dbo.Gral_SAT_Localidad')
|
||||
AND [name] = N'IX_Gral_SAT_Localidad_Claves_Vigente'
|
||||
)
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Localidad_Claves_Vigente]
|
||||
ON [dbo].[Gral_SAT_Localidad] ([ClaveSATEstado], [ClaveSATLocalidad])
|
||||
INCLUDE ([CveLocalidad], [NombreLocalidad])
|
||||
WHERE [Borrado] = (0);
|
||||
GO
|
||||
|
||||
/* Claves normalizadas utilizadas por el registro. */
|
||||
IF OBJECT_ID(N'dbo.Clientes', N'U') IS NULL
|
||||
THROW 51026, N'Falta la tabla dbo.Clientes.', 1;
|
||||
|
||||
IF COL_LENGTH(N'dbo.Clientes', N'CveLocalidad') IS NULL
|
||||
ALTER TABLE [dbo].[Clientes] ADD [CveLocalidad] int NULL;
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.FK_Clientes_Gral_SAT_Pais', N'F') IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM [dbo].[Clientes] C LEFT JOIN [dbo].[Gral_SAT_Pais] P ON P.[CvePais]=C.[CvePais] WHERE C.[CvePais] IS NOT NULL AND P.[CvePais] IS NULL)
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [FK_Clientes_Gral_SAT_Pais] FOREIGN KEY ([CvePais]) REFERENCES [dbo].[Gral_SAT_Pais] ([CvePais]);
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.FK_Clientes_Gral_SAT_Estado_Normalizado', N'F') IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM [dbo].[Clientes] C LEFT JOIN [dbo].[Gral_SAT_Estado] E ON E.[CveEstado]=C.[CveEstado] WHERE C.[CveEstado] IS NOT NULL AND E.[CveEstado] IS NULL)
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [FK_Clientes_Gral_SAT_Estado_Normalizado] FOREIGN KEY ([CveEstado]) REFERENCES [dbo].[Gral_SAT_Estado] ([CveEstado]);
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.FK_Clientes_Gral_SAT_Municipio', N'F') IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM [dbo].[Clientes] C LEFT JOIN [dbo].[Gral_SAT_Municipio] M ON M.[CveMunicipio]=C.[CveMunicipio] WHERE C.[CveMunicipio] IS NOT NULL AND M.[CveMunicipio] IS NULL)
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [FK_Clientes_Gral_SAT_Municipio] FOREIGN KEY ([CveMunicipio]) REFERENCES [dbo].[Gral_SAT_Municipio] ([CveMunicipio]);
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.FK_Clientes_Gral_SAT_Localidad', N'F') IS NULL
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [FK_Clientes_Gral_SAT_Localidad] FOREIGN KEY ([CveLocalidad]) REFERENCES [dbo].[Gral_SAT_Localidad] ([CveLocalidad]);
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.FK_Clientes_Gral_SAT_Colonia', N'F') IS NULL
|
||||
AND NOT EXISTS (SELECT 1 FROM [dbo].[Clientes] C LEFT JOIN [dbo].[Gral_SAT_Colonia] CO ON CO.[CveColonia]=C.[CveColonia] WHERE C.[CveColonia] IS NOT NULL AND CO.[CveColonia] IS NULL)
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [FK_Clientes_Gral_SAT_Colonia] FOREIGN KEY ([CveColonia]) REFERENCES [dbo].[Gral_SAT_Colonia] ([CveColonia]);
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Gral_CodigoPostalGet]
|
||||
@CP varchar(5),
|
||||
@CveUsuarioEjecuta int,
|
||||
@ErrorMostrar varchar(max) OUTPUT,
|
||||
@ErrorTipo int OUTPUT,
|
||||
@Return bit OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
SET @CP = LTRIM(RTRIM(@CP));
|
||||
|
||||
BEGIN TRY
|
||||
IF LEN(@CP) <> 5 OR @CP LIKE '%[^0-9]%'
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El código postal debe contener exactamente 5 dígitos.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE
|
||||
@CvePais int,
|
||||
@Pais varchar(100),
|
||||
@CveEstado int,
|
||||
@Estado varchar(50),
|
||||
@CveMunicipio int,
|
||||
@Municipio varchar(100),
|
||||
@CveLocalidad int,
|
||||
@Localidad varchar(100);
|
||||
|
||||
SELECT TOP (1)
|
||||
@CvePais = P.[CvePais],
|
||||
@Pais = P.[Descripcion],
|
||||
@CveEstado = E.[CveEstado],
|
||||
@Estado = E.[NombreEstado],
|
||||
@CveMunicipio = M.[CveMunicipio],
|
||||
@Municipio = M.[Descripcion],
|
||||
@CveLocalidad = L.[CveLocalidad],
|
||||
@Localidad = L.[NombreLocalidad]
|
||||
FROM [dbo].[Gral_SAT_CP] AS CP
|
||||
INNER JOIN [dbo].[Gral_SAT_Estado] AS E
|
||||
ON E.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND E.[Borrado] = (0)
|
||||
INNER JOIN [dbo].[Gral_SAT_Pais] AS P
|
||||
ON P.[ClaveSATPais] = E.[ClaveSATPais]
|
||||
AND P.[Borrado] = (0)
|
||||
INNER JOIN [dbo].[Gral_SAT_Municipio] AS M
|
||||
ON M.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND M.[ClaveSATMunicipio] = CP.[ClaveSATMunicipio]
|
||||
AND M.[Borrado] = (0)
|
||||
LEFT JOIN [dbo].[Gral_SAT_Localidad] AS L
|
||||
ON L.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND L.[ClaveSATLocalidad] = CP.[ClaveSATLocalidad]
|
||||
AND L.[Borrado] = (0)
|
||||
WHERE CP.[CP] = @CP
|
||||
AND CP.[Borrado] = (0);
|
||||
|
||||
IF @CvePais IS NULL OR @CveEstado IS NULL OR @CveMunicipio IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = CONCAT(
|
||||
'El código postal ', @CP,
|
||||
' no existe o sus relaciones de país, estado y municipio están incompletas.');
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT
|
||||
@CvePais AS [CvePais],
|
||||
@Pais AS [Pais],
|
||||
@CveEstado AS [CveEstado],
|
||||
@Estado AS [Estado],
|
||||
@CveMunicipio AS [CveMunicipio],
|
||||
@Municipio AS [Municipio],
|
||||
@CveLocalidad AS [CveLocalidad],
|
||||
@Localidad AS [Localidad],
|
||||
COALESCE(NULLIF(@Localidad, ''), @Municipio) AS [Ciudad];
|
||||
|
||||
SELECT
|
||||
C.[CveColonia],
|
||||
C.[NombreAsentamiento]
|
||||
FROM [dbo].[Gral_SAT_Colonia] AS C
|
||||
WHERE C.[CP] = @CP
|
||||
AND C.[Borrado] = (0)
|
||||
ORDER BY C.[NombreAsentamiento];
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al consultar el código postal; favor de contactar a Sistemas.';
|
||||
SET @ErrorTipo = 1;
|
||||
SET @Return = 0;
|
||||
DECLARE @E nvarchar(2048) = CONCAT(
|
||||
'Número: ', ERROR_NUMBER(),
|
||||
'; Procedimiento: ', ERROR_PROCEDURE(),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE());
|
||||
RAISERROR(N'%s', 10, 1, @E);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteAdd]
|
||||
@NombreUsuario varchar(100),
|
||||
@HashContrasena varchar(500),
|
||||
@CorreoElectronico varchar(255),
|
||||
@RFC varchar(15),
|
||||
@RazonSocial varchar(200),
|
||||
@NombreComercial varchar(200) = NULL,
|
||||
@Direccion varchar(90),
|
||||
@NoExt varchar(20) = NULL,
|
||||
@NoInt varchar(50) = NULL,
|
||||
@Colonia varchar(100),
|
||||
@Ciudad varchar(100),
|
||||
@CveSATEstado int,
|
||||
@Pais varchar(100) = 'México',
|
||||
@CP varchar(5),
|
||||
@Telefono varchar(25) = NULL,
|
||||
@CvePais int,
|
||||
@CveMunicipio int,
|
||||
@CveLocalidad int = NULL,
|
||||
@CveColonia int,
|
||||
@HashToken char(64),
|
||||
@HorasExpiracion int = 24,
|
||||
@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
|
||||
DECLARE @CveRolEmpresa int, @CveUsuario int, @CveCliente int;
|
||||
DECLARE @NombreEstado varchar(50), @PaisCatalogo varchar(100);
|
||||
DECLARE @CiudadCatalogo varchar(100), @ColoniaCatalogo varchar(100);
|
||||
|
||||
SET @NombreUsuario = LTRIM(RTRIM(@NombreUsuario));
|
||||
SET @CorreoElectronico = LOWER(LTRIM(RTRIM(@CorreoElectronico)));
|
||||
SET @RFC = UPPER(REPLACE(LTRIM(RTRIM(@RFC)), ' ', ''));
|
||||
SET @CP = LTRIM(RTRIM(@CP));
|
||||
|
||||
SELECT @CveRolEmpresa = [CveRol]
|
||||
FROM [dbo].[Sis_Roles]
|
||||
WHERE [NombreRol] = 'Empresa' AND [Activo] = (1) AND [Borrado] = (0);
|
||||
|
||||
SELECT TOP (1)
|
||||
@NombreEstado = LEFT(E.[NombreEstado], 35),
|
||||
@PaisCatalogo = LEFT(P.[Descripcion], 50),
|
||||
@CiudadCatalogo = LEFT(COALESCE(NULLIF(L.[NombreLocalidad], ''), M.[Descripcion]), 50),
|
||||
@ColoniaCatalogo = LEFT(C.[NombreAsentamiento], 50)
|
||||
FROM [dbo].[Gral_SAT_CP] AS CP
|
||||
INNER JOIN [dbo].[Gral_SAT_Estado] AS E
|
||||
ON E.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND E.[CveEstado] = @CveSATEstado AND E.[Borrado] = (0)
|
||||
INNER JOIN [dbo].[Gral_SAT_Pais] AS P
|
||||
ON P.[ClaveSATPais] = E.[ClaveSATPais]
|
||||
AND P.[CvePais] = @CvePais AND P.[Borrado] = (0)
|
||||
INNER JOIN [dbo].[Gral_SAT_Municipio] AS M
|
||||
ON M.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND M.[ClaveSATMunicipio] = CP.[ClaveSATMunicipio]
|
||||
AND M.[CveMunicipio] = @CveMunicipio AND M.[Borrado] = (0)
|
||||
LEFT JOIN [dbo].[Gral_SAT_Localidad] AS L
|
||||
ON L.[ClaveSATEstado] = CP.[ClaveSATEstado]
|
||||
AND L.[ClaveSATLocalidad] = CP.[ClaveSATLocalidad] AND L.[Borrado] = (0)
|
||||
INNER JOIN [dbo].[Gral_SAT_Colonia] AS C
|
||||
ON C.[CP] = CP.[CP] AND C.[CveColonia] = @CveColonia AND C.[Borrado] = (0)
|
||||
WHERE CP.[CP] = @CP AND CP.[Borrado] = (0)
|
||||
AND (@CveLocalidad IS NULL OR L.[CveLocalidad] = @CveLocalidad);
|
||||
|
||||
IF @CveRolEmpresa IS NULL
|
||||
BEGIN
|
||||
SELECT @ErrorMostrar = 'No fue posible determinar el rol Empresa.', @ErrorTipo = 1;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @NombreEstado IS NULL OR @PaisCatalogo IS NULL OR @CiudadCatalogo IS NULL OR @ColoniaCatalogo IS NULL
|
||||
BEGIN
|
||||
SELECT @ErrorMostrar = 'Los datos del código postal no coinciden con los catálogos vigentes. Actualiza el código postal.', @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT @Pais = @PaisCatalogo, @Ciudad = @CiudadCatalogo, @Colonia = @ColoniaCatalogo;
|
||||
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE [NombreUsuario] = @NombreUsuario)
|
||||
OR EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] WHERE LOWER([CorreoElectronico]) = @CorreoElectronico)
|
||||
OR EXISTS (SELECT 1 FROM [dbo].[Clientes] WHERE UPPER(REPLACE(LTRIM(RTRIM([RFC])), ' ', '')) = @RFC)
|
||||
BEGIN
|
||||
SELECT @ErrorMostrar = 'Los datos ya fueron registrados por otra solicitud. Actualiza la página e inténtalo nuevamente.', @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
INSERT INTO [dbo].[Sis_Usuarios]
|
||||
([NombreUsuario], [HashContrasena], [CorreoElectronico], [CveRol], [Activo], [DebeCambiarContrasena], [CorreoVerificado])
|
||||
VALUES (@NombreUsuario, @HashContrasena, @CorreoElectronico, @CveRolEmpresa, (0), (0), (0));
|
||||
|
||||
SET @CveUsuario = CONVERT(int, SCOPE_IDENTITY());
|
||||
|
||||
INSERT INTO [dbo].[Clientes]
|
||||
([Nombre], [NombreComercial], [Direccion], [NoExt], [NoInt], [Colonia],
|
||||
[Ciudad], [Estado], [CveSATEstado], [Pais], [RFC], [CP], [Telefono],
|
||||
[Mail], [Estatus], [Fecha], [CveUsuario], [FechaIng],
|
||||
[CvePais], [CveEstado], [CveMunicipio], [CveLocalidad], [CveColonia])
|
||||
VALUES
|
||||
(@RazonSocial, NULLIF(@NombreComercial, ''), @Direccion, NULLIF(@NoExt, ''),
|
||||
NULLIF(@NoInt, ''), @Colonia, @Ciudad, @NombreEstado, @CveSATEstado,
|
||||
@Pais, @RFC, @CP, NULLIF(@Telefono, ''), @CorreoElectronico, (0),
|
||||
CONVERT(date, GETDATE()), @CveUsuario, GETDATE(),
|
||||
@CvePais, @CveSATEstado, @CveMunicipio, @CveLocalidad, @CveColonia);
|
||||
|
||||
SET @CveCliente = CONVERT(int, SCOPE_IDENTITY());
|
||||
|
||||
INSERT INTO [dbo].[Sis_UsuariosClientes]
|
||||
([CveUsuario], [CveCliente], [Orden], [EsPrincipal], [Activo], [CveUsuarioRegistro])
|
||||
VALUES (@CveUsuario, @CveCliente, (1), (1), (1), @CveUsuario);
|
||||
|
||||
INSERT INTO [dbo].[Sis_UsuariosVerificacionesCorreo]
|
||||
([CveUsuario], [CveClienteRegistro], [HashToken], [FechaExpiracion])
|
||||
VALUES (@CveUsuario, @CveCliente, @HashToken, DATEADD(HOUR, @HorasExpiracion, SYSDATETIME()));
|
||||
|
||||
|
||||
SELECT @CveUsuario AS [CveUsuario], @CveCliente AS [CveCliente];
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SELECT @ErrorMostrar = 'Ocurrió un error al crear el registro; favor de contactar a Sistemas.', @ErrorTipo = 1, @Return = 0;
|
||||
DECLARE @E nvarchar(2048) = CONCAT('Número: ', ERROR_NUMBER(), '; Procedimiento: ', ERROR_PROCEDURE(), '; Línea: ', ERROR_LINE(), '; Detalle: ', ERROR_MESSAGE());
|
||||
RAISERROR(N'%s', 10, 1, @E);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
/*
|
||||
Se registran para limpieza, pero la limpieza física queda deshabilitada.
|
||||
Habilitarla posteriormente requiere autorización expresa.
|
||||
*/
|
||||
IF OBJECT_ID(N'dbo.Sis_ConfigurarLimpieza', N'P') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_CP', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_Municipio', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_Localidad', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_Colonia', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_Estado', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
EXEC [dbo].[Sis_ConfigurarLimpieza] @Esquema=N'dbo', @Tabla=N'Gral_SAT_Pais', @DiasRetencion=365, @TamanoLote=500, @Habilitada=0;
|
||||
END;
|
||||
GO
|
||||
1401
Catalogos_Tramites_Internos.sql
Normal file
1401
Catalogos_Tramites_Internos.sql
Normal file
File diff suppressed because it is too large
Load Diff
BIN
Cobro de Derechos y Aportaciones Cantabria 2.xlsx
Normal file
BIN
Cobro de Derechos y Aportaciones Cantabria 2.xlsx
Normal file
Binary file not shown.
BIN
DS01- CANTABRIA 2 ETAPA -052025-03.dwg
Normal file
BIN
DS01- CANTABRIA 2 ETAPA -052025-03.dwg
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,40 @@
|
||||
[07/29/26 11:01:05] info ================= cer started =================
|
||||
[07/29/26 11:01:05] info C:\Program Files\Autodesk\AutoCAD 2027\cer.dll, 7.2.4+20251128.8f05bb68.927
|
||||
[07/29/26 11:01:05] info Setting key SP/SDK_VERSION, value 7.2.4+20251128.8f05bb68.927 (maxCount 1)
|
||||
[07/29/26 11:01:05] info Setting key SP/PRODUCT_NAME_HASH, value f4bac121a1625586cb5b9106c8e839a7990f2b6c (maxCount 1)
|
||||
[07/29/26 11:01:05] info Setting key SP/RUNTIME_ARCH, value 1 (maxCount 1)
|
||||
[07/29/26 11:01:05] info Set senddmp exe path to C:\Program Files\Autodesk\AutoCAD 2027\CER\senddmp.exe
|
||||
[07/29/26 11:01:05] info The cer_service exe C:\Program Files\Autodesk\AutoCAD 2027\CER\service\cer_service.exe is not in folder C:\Program Files\Autodesk\AutoCAD 2027\CER\, it's not a sandbox
|
||||
[07/29/26 11:01:05] info Set upi exe path to C:\Program Files\Autodesk\AutoCAD 2027\CER\upi.exe
|
||||
[07/29/26 11:01:05] info launching C:\Program Files\Autodesk\AutoCAD 2027\CER\upi.exe --cmd=get-device-id C:\Users\caudi\AppData\Local\Temp\15FCE767F24F74D1\Temp\upi_deviceid2
|
||||
[07/29/26 11:01:06] info Set deviceID2 to 92CA75B8D4EB0A0E74EDB1E61E362886DC67039BD12745B7CEF6A36A94EA9884&1D8D189A9AE197CDA5D2D77E640375435D8D952FEBE5E1B888B8567C4BECED88&0A3B0E00D8EB341B2395D85AAC2E422CF0C9599C67A5867798DFE9D60B41E70E
|
||||
[07/29/26 11:01:06] info Setting key SP/DEVICEID2, value 92CA75B8D4EB0A0E74EDB1E61E362886DC67039BD12745B7CEF6A36A94EA9884&1D8D189A9AE197CDA5D2D77E640375435D8D952FEBE5E1B888B8567C4BECED88&0A3B0E00D8EB341B2395D85AAC2E422CF0C9599C67A5867798DFE9D60B41E70E (maxCount 1)
|
||||
[07/29/26 11:01:06] info Setting key SP/UUID, value f4bac121a1625586cb5b9106c8e839a7990f2b6c92CA75B8D4EB0A0E74EDB1E61E362886DC67039BD12745B7CEF6A36A94EA9884&1D8D189A9AE197CDA5D2D77E640375435D8D952FEBE5E1B888B8567C4BECED88&0A3B0E00D8EB341B2395D85AAC2E422CF0C9599C67A5867798DFE9D60B41E70E (maxCount 1)
|
||||
[07/29/26 11:01:06] info Set senddmp exe path to C:\Program Files\Autodesk\AutoCAD 2027\CER\senddmp.exe
|
||||
[07/29/26 11:01:06] info The cer_service exe C:\Program Files\Autodesk\AutoCAD 2027\CER\service\cer_service.exe is not in folder C:\Program Files\Autodesk\AutoCAD 2027\CER\, it's not a sandbox
|
||||
[07/29/26 11:01:06] info launching C:\Program Files\Autodesk\AutoCAD 2027\CER\upi.exe "C:\Program Files\Autodesk\AutoCAD 2027\es-ES\UPI\upiconfig.xml" C:\Users\caudi\AppData\Local\Temp\15FCE767F24F74D1\Temp\upi_info.xml
|
||||
[07/29/26 11:01:07] info Setting key SP/UPI_PRODUCT, value ACD (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/UPI_RELEASE, value 2027 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/UPI_MASTER, value {28B89EEF-A101-040A-2102-CF3F3A09B77D} (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/UPI_BUILD, value 26.0.60.0.0 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/UPI_FULL_XML, value <?xml version="1.0"?><upipackage><upivalue version="1.0" type="product" requestingapp="true"><level name="productline" id="ACD"><level name="release" id="2027"><level name="master" id="{28B89EEF-A101-040A-2102-CF3F3A09B77D}"><level name="build" id="26.0.60.0.0"/></level></level></level></upivalue>
|
||||
<upivalue version="1.0" type="product"><level name="productline" id="ACD"><level name="release" id="2027"><level name="master" id="{28B89EEF-A101-040A-1102-CF3F3A09B77D}"><level name="build" id="26.0.60.0.0"/></level></level></level></upivalue>
|
||||
<upivalue version="1.0" type="product"><level name="productline" id="ARCHDESK"><level name="release" id="2027"><level name="master" id="{28B89EEE-A104-0000-5102-CF3F3A09B77D}"><level name="build" id="8.9.46.0"/></level></level></level></upivalue>
|
||||
<upivalue version="1.0" type="product"><level name="productline" id="ACD"><level name="release" id="2027"><level name="master" id="{28B89EEF-A101-0000-0102-CF3F3A09B77D}"><level name="build" id="26.0.60.0.0"/></level></level></level></upivalue>
|
||||
</upipackage> (maxCount 1)
|
||||
[07/29/26 11:01:07] info set legacy options: /APPICON "C:\Program Files\Autodesk\AutoCAD 2027\AcBrandRes.dll" /APPICONID 1
|
||||
[07/29/26 11:01:07] info Setting key RP/AppIcon, value C:\Program Files\Autodesk\AutoCAD 2027\AcBrandRes.dll (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key RP/AppIconId, value 1 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key RP/CadSettingsRegPath, value Software\Autodesk\AutoCAD\R26.0\ACAD-A101:40A\CadManagerControl\CustomerErrorReport (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key RP/AppLocaleId, value 1034 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key RP/AppXML, value <ProductInformation name ="AutoCAD" build_version="X.60.0.0(x64)" registry_version="26.0" install_id_string="15FCE767F24F74D1" registry_localeID="1034" git_commit_id="90c984aa66a571142ee0757584bac517eec2175a" /> (maxCount 100)
|
||||
[07/29/26 11:01:07] info Setting key SP/THEME_TYPE, value Blue (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/EXCEPTION_INFO_POINTER, value 140710146442520 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Setting key SP/THREAD_ID, value 4294967295 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Get key SP/THREAD_ID, index 0: "4294967295"
|
||||
[07/29/26 11:01:07] info Setting key SP/WER, value 0 (maxCount 1)
|
||||
[07/29/26 11:01:07] info Get key SP/WER, index 0: "0"
|
||||
[07/29/26 11:01:07] info Registered C:\Program Files\Autodesk\AutoCAD 2027\cer.dll as WER runtime exception module
|
||||
[07/29/26 11:01:07] info Current ErrorMode is 32769
|
||||
[07/29/26 11:01:07] debug Receiver ping: pong
|
||||
[07/29/26 11:01:17] debug Receiver ping: pong
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -119,7 +119,6 @@ CREATE OR ALTER PROCEDURE [dbo].[Sis_ConfigurarLimpieza]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF @DiasRetencion NOT BETWEEN 30 AND 3650
|
||||
THROW 51000, N'Los días de retención deben estar entre 30 y 3650.', 1;
|
||||
@@ -180,7 +179,6 @@ CREATE OR ALTER PROCEDURE [dbo].[Sis_LimpiarRegistrosBorrados]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
IF @MaximoLotesPorTabla NOT BETWEEN 1 AND 10000
|
||||
THROW 51010, N'El máximo de lotes debe estar entre 1 y 10000.', 1;
|
||||
|
||||
@@ -31,10 +31,10 @@ GO
|
||||
CREATE TABLE [dbo].[Fraccionamientos] (
|
||||
[CveFraccionamiento] int IDENTITY(1,1) NOT NULL,
|
||||
[CveCliente] int NOT NULL,
|
||||
[Fraccionamiento] varchar(200) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Fraccionamiento] varchar(200) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Hectareas] decimal(18,4) NULL,
|
||||
[Ubicacion] varchar(500) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Estatus] varchar(50) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Ubicacion] varchar(500) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Estatus] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Fraccionamientos_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Fraccionamientos_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
[FechaModificacion] datetime NULL,
|
||||
@@ -49,7 +49,7 @@ GO
|
||||
CREATE TABLE [dbo].[FraccionamientosEtapas] (
|
||||
[CveFraccionamientoEtapa] int IDENTITY(1,1) NOT NULL,
|
||||
[CveFraccionamiento] int NOT NULL,
|
||||
[Etapa] varchar(150) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Etapa] varchar(150) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Hectareas] decimal(18,4) NULL,
|
||||
[Orden] int CONSTRAINT [DF_FraccionamientosEtapas_Orden] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_FraccionamientosEtapas_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
@@ -66,12 +66,12 @@ GO
|
||||
CREATE TABLE [dbo].[FraccionamientosLotes] (
|
||||
[CveFraccionamientoLote] int IDENTITY(1,1) NOT NULL,
|
||||
[CveFraccionamientoEtapa] int NOT NULL,
|
||||
[Tipo] varchar(100) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Calle] varchar(200) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Catastro] varchar(100) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Tipo] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Calle] varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Catastro] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[MetrosCuadrados] decimal(18,4) NULL,
|
||||
[Numero] varchar(50) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Duplicador] varchar(50) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Numero] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Duplicador] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_FraccionamientosLotes_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_FraccionamientosLotes_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
[FechaModificacion] datetime NULL,
|
||||
@@ -85,9 +85,9 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[Tra_TiposTramite] (
|
||||
[CveTipoTramite] int IDENTITY(1,1) NOT NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[TipoTramite] varchar(200) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Descripcion] varchar(500) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL,
|
||||
[TipoTramite] varchar(200) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Descripcion] varchar(500) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Orden] int CONSTRAINT [DF_Tra_TiposTramite_Orden] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_TiposTramite_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_TiposTramite_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
@@ -100,8 +100,8 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[Tra_EstatusSolicitud] (
|
||||
[CveEstatusSolicitud] int IDENTITY(1,1) NOT NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[EstatusSolicitud] varchar(100) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL,
|
||||
[EstatusSolicitud] varchar(100) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Orden] int CONSTRAINT [DF_Tra_EstatusSolicitud_Orden] DEFAULT ((0)) NOT NULL,
|
||||
[EsFinal] bit CONSTRAINT [DF_Tra_EstatusSolicitud_EsFinal] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_EstatusSolicitud_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
@@ -112,9 +112,9 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[Tra_TiposDocumento] (
|
||||
[CveTipoDocumento] int IDENTITY(1,1) NOT NULL,
|
||||
[TipoDocumento] varchar(200) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Descripcion] varchar(500) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[ExtensionesPermitidas] varchar(200) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[TipoDocumento] varchar(200) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Descripcion] varchar(500) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[ExtensionesPermitidas] varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[TamanoMaximoMb] int NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_TiposDocumento_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_TiposDocumento_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
@@ -128,8 +128,8 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[Tra_TiposPregunta] (
|
||||
[CveTipoPregunta] int IDENTITY(1,1) NOT NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[TipoPregunta] varchar(100) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Codigo] varchar(50) COLLATE Modern_Spanish_CI_AS NOT NULL,
|
||||
[TipoPregunta] varchar(100) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_TiposPregunta_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
CONSTRAINT [PK_Tra_TiposPregunta] PRIMARY KEY CLUSTERED ([CveTipoPregunta]),
|
||||
CONSTRAINT [UQ_Tra_TiposPregunta_Codigo] UNIQUE NONCLUSTERED ([Codigo])
|
||||
@@ -139,8 +139,8 @@ GO
|
||||
CREATE TABLE [dbo].[Tra_Preguntas] (
|
||||
[CvePregunta] int IDENTITY(1,1) NOT NULL,
|
||||
[CveTipoPregunta] int NOT NULL,
|
||||
[Pregunta] varchar(500) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Descripcion] varchar(1000) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Pregunta] varchar(500) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Descripcion] varchar(1000) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsRequerida] bit CONSTRAINT [DF_Tra_Preguntas_EsRequerida] DEFAULT ((0)) NOT NULL,
|
||||
[Orden] int CONSTRAINT [DF_Tra_Preguntas_Orden] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_Preguntas_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
@@ -154,8 +154,8 @@ GO
|
||||
CREATE TABLE [dbo].[Tra_OpcionesPregunta] (
|
||||
[CveOpcionPregunta] int IDENTITY(1,1) NOT NULL,
|
||||
[CvePregunta] int NOT NULL,
|
||||
[TextoOpcion] varchar(300) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[ValorOpcion] varchar(300) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[TextoOpcion] varchar(300) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[ValorOpcion] varchar(300) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Orden] int CONSTRAINT [DF_Tra_OpcionesPregunta_Orden] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Tra_OpcionesPregunta_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
CONSTRAINT [PK_Tra_OpcionesPregunta] PRIMARY KEY CLUSTERED ([CveOpcionPregunta]),
|
||||
@@ -167,7 +167,7 @@ GO
|
||||
|
||||
CREATE TABLE [dbo].[Tra_Solicitudes] (
|
||||
[CveSolicitud] int IDENTITY(1,1) NOT NULL,
|
||||
[Folio] varchar(50) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Folio] varchar(50) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[CveCliente] int NOT NULL,
|
||||
[CveFraccionamiento] int NOT NULL,
|
||||
[CveFraccionamientoEtapa] int NOT NULL,
|
||||
@@ -178,8 +178,8 @@ CREATE TABLE [dbo].[Tra_Solicitudes] (
|
||||
[FechaEnvio] datetime NULL,
|
||||
[FechaAutorizacion] datetime NULL,
|
||||
[FechaRechazo] datetime NULL,
|
||||
[ComentariosCliente] varchar(max) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[ComentariosAdministrativos] varchar(max) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[ComentariosCliente] varchar(max) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[ComentariosAdministrativos] varchar(max) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_Solicitudes_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
[FechaModificacion] datetime NULL,
|
||||
CONSTRAINT [PK_Tra_Solicitudes] PRIMARY KEY CLUSTERED ([CveSolicitud]),
|
||||
@@ -193,7 +193,7 @@ CREATE TABLE [dbo].[Tra_SolicitudesDependencias] (
|
||||
[CveSolicitud] int NOT NULL,
|
||||
[CveSolicitudRequerida] int NOT NULL,
|
||||
[EsObligatoria] bit CONSTRAINT [DF_Tra_SolicitudesDependencias_EsObligatoria] DEFAULT ((1)) NOT NULL,
|
||||
[Condicion] varchar(500) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Condicion] varchar(500) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_SolicitudesDependencias_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
[CveUsuario] int NOT NULL,
|
||||
CONSTRAINT [PK_Tra_SolicitudesDependencias] PRIMARY KEY CLUSTERED ([CveSolicitudDependencia]),
|
||||
@@ -207,7 +207,7 @@ CREATE TABLE [dbo].[Tra_HistorialEstatusSolicitud] (
|
||||
[CveSolicitud] int NOT NULL,
|
||||
[CveEstatusSolicitud] int NOT NULL,
|
||||
[CveUsuario] int NULL,
|
||||
[Comentarios] varchar(1000) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Comentarios] varchar(1000) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_HistorialEstatusSolicitud_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
CONSTRAINT [PK_Tra_HistorialEstatusSolicitud] PRIMARY KEY CLUSTERED ([CveHistorialEstatusSolicitud])
|
||||
);
|
||||
@@ -229,13 +229,13 @@ CREATE TABLE [dbo].[Tra_DocumentosSolicitud] (
|
||||
[CveDocumentoSolicitud] int IDENTITY(1,1) NOT NULL,
|
||||
[CveSolicitud] int NOT NULL,
|
||||
[CveTipoDocumento] int NOT NULL,
|
||||
[NombreArchivo] varchar(255) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[NombreArchivoFisico] varchar(255) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[RutaArchivo] varchar(1000) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[ContentType] varchar(100) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[NombreArchivo] varchar(255) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[NombreArchivoFisico] varchar(255) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[RutaArchivo] varchar(1000) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[ContentType] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[TamanoBytes] bigint NULL,
|
||||
[ComentarioCliente] varchar(1000) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[ComentarioAdministrativo] varchar(1000) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[ComentarioCliente] varchar(1000) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[ComentarioAdministrativo] varchar(1000) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsAprobado] bit NULL,
|
||||
[CveUsuarioCarga] int NULL,
|
||||
[CveUsuarioRevisa] int NULL,
|
||||
@@ -263,7 +263,7 @@ CREATE TABLE [dbo].[Tra_RespuestasSolicitud] (
|
||||
[CveSolicitud] int NOT NULL,
|
||||
[CvePregunta] int NOT NULL,
|
||||
[CveOpcionPregunta] int NULL,
|
||||
[Valor] varchar(max) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Valor] varchar(max) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_RespuestasSolicitud_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
[FechaModificacion] datetime NULL,
|
||||
[CveUsuario] int NULL,
|
||||
@@ -277,7 +277,7 @@ CREATE TABLE [dbo].[Tra_CostosTramite] (
|
||||
[CveTipoTramite] int NOT NULL,
|
||||
[CvePS] int NOT NULL,
|
||||
[CveMoneda] int NOT NULL,
|
||||
[Descripcion] varchar(300) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[Descripcion] varchar(300) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[Importe] decimal(18,2) CONSTRAINT [DF_Tra_CostosTramite_Importe] DEFAULT ((0)) NOT NULL,
|
||||
[FechaInicioVigencia] date NULL,
|
||||
[FechaFinVigencia] date NULL,
|
||||
@@ -296,8 +296,8 @@ CREATE TABLE [dbo].[Tra_NotasSolicitud] (
|
||||
[CveNotaSolicitud] int IDENTITY(1,1) NOT NULL,
|
||||
[CveSolicitud] int NOT NULL,
|
||||
[CveUsuario] int NULL,
|
||||
[TipoNota] varchar(50) COLLATE Modern_Spanish_CS_AI CONSTRAINT [DF_Tra_NotasSolicitud_TipoNota] DEFAULT ('General') NOT NULL,
|
||||
[Comentario] varchar(max) COLLATE Modern_Spanish_CS_AI NOT NULL,
|
||||
[TipoNota] varchar(50) COLLATE Modern_Spanish_CS_AS CONSTRAINT [DF_Tra_NotasSolicitud_TipoNota] DEFAULT ('General') NOT NULL,
|
||||
[Comentario] varchar(max) COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
[EsVisibleParaCliente] bit CONSTRAINT [DF_Tra_NotasSolicitud_Visible] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Tra_NotasSolicitud_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
CONSTRAINT [PK_Tra_NotasSolicitud] PRIMARY KEY CLUSTERED ([CveNotaSolicitud])
|
||||
@@ -336,7 +336,7 @@ CREATE TABLE [dbo].[Vta_Pagos] (
|
||||
[CvePrePoliza] int NULL,
|
||||
[FechaPago] datetime NOT NULL,
|
||||
[Importe] decimal(18,2) NOT NULL,
|
||||
[Referencia] varchar(200) COLLATE Modern_Spanish_CS_AI NULL,
|
||||
[Referencia] varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsSaldoFavor] bit CONSTRAINT [DF_Vta_Pagos_EsSaldoFavor] DEFAULT ((0)) NOT NULL,
|
||||
[EsActivo] bit CONSTRAINT [DF_Vta_Pagos_EsActivo] DEFAULT ((1)) NOT NULL,
|
||||
[FechaAlta] datetime CONSTRAINT [DF_Vta_Pagos_FechaAlta] DEFAULT (GETDATE()) NOT NULL,
|
||||
|
||||
1620
Facturacion_Cfdi_Timbrado.sql
Normal file
1620
Facturacion_Cfdi_Timbrado.sql
Normal file
File diff suppressed because it is too large
Load Diff
1328
Fraccionamientos_Catalogo.sql
Normal file
1328
Fraccionamientos_Catalogo.sql
Normal file
File diff suppressed because it is too large
Load Diff
652
Fraccionamientos_Lotes.sql
Normal file
652
Fraccionamientos_Lotes.sql
Normal file
@@ -0,0 +1,652 @@
|
||||
/* Catálogo de lotes con borrado físico. Las definiciones se sincronizaron desde la base local. */
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM sys.indexes
|
||||
WHERE [object_id] = OBJECT_ID(N'dbo.FraccionamientosLotes')
|
||||
AND [name] = N'IX_FraccionamientosLotes_Etapa'
|
||||
)
|
||||
BEGIN
|
||||
CREATE NONCLUSTERED INDEX [IX_FraccionamientosLotes_Etapa]
|
||||
ON [dbo].[FraccionamientosLotes] ([CveFraccionamientoEtapa])
|
||||
INCLUDE
|
||||
(
|
||||
[Numero],
|
||||
[Tipo],
|
||||
[Calle],
|
||||
[Catastro],
|
||||
[MetrosCuadrados],
|
||||
[Duplicador],
|
||||
[EsActivo]
|
||||
);
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteList]
|
||||
@CveFraccionamiento int,
|
||||
@CveFraccionamientoEtapa int = 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
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[Fraccionamientos]
|
||||
WHERE [CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El fraccionamiento seleccionado no existe.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @CveFraccionamientoEtapa IS NOT NULL
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosEtapas]
|
||||
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND [CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa seleccionada no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT
|
||||
L.[CveFraccionamientoLote] AS [CveFraccionamientoLote],
|
||||
E.[CveFraccionamientoEtapa] AS [CveFraccionamientoEtapa],
|
||||
E.[Etapa] AS [Etapa],
|
||||
L.[Numero] AS [Nombre],
|
||||
L.[Tipo] AS [Tipo],
|
||||
L.[Calle] AS [Calle],
|
||||
L.[Catastro] AS [Catastro],
|
||||
L.[MetrosCuadrados] AS [MetrosCuadrados],
|
||||
L.[Duplicador] AS [Duplicador],
|
||||
L.[EsActivo] AS [EsActivo]
|
||||
FROM [dbo].[FraccionamientosLotes] AS L
|
||||
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
||||
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
||||
WHERE E.[CveFraccionamiento] = @CveFraccionamiento
|
||||
AND (@CveFraccionamientoEtapa IS NULL
|
||||
OR E.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa)
|
||||
|
||||
|
||||
ORDER BY
|
||||
E.[Orden],
|
||||
E.[Etapa],
|
||||
L.[Numero],
|
||||
L.[CveFraccionamientoLote];
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al consultar los lotes; 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_Fraccionamientos_LoteList'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteBatchSave]
|
||||
@CveFraccionamiento int,
|
||||
@CveFraccionamientoEtapa int,
|
||||
@LotesXml 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
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosEtapas]
|
||||
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND [CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
AND [EsActivo] = (1)
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa seleccionada no existe, está inactiva o no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 1;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @Lotes TABLE
|
||||
(
|
||||
[Nombre] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Tipo] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Calle] varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[Catastro] varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[MetrosCuadrados] decimal(18,4) NULL,
|
||||
[Duplicador] varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
[EsActivo] bit NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Lotes
|
||||
(
|
||||
[Nombre],
|
||||
[Tipo],
|
||||
[Calle],
|
||||
[Catastro],
|
||||
[MetrosCuadrados],
|
||||
[Duplicador],
|
||||
[EsActivo]
|
||||
)
|
||||
SELECT
|
||||
NULLIF(LTRIM(RTRIM(N.value('@Nombre', 'varchar(50)'))), ''),
|
||||
NULLIF(LTRIM(RTRIM(N.value('@Tipo', 'varchar(100)'))), ''),
|
||||
NULLIF(LTRIM(RTRIM(N.value('@Calle', 'varchar(200)'))), ''),
|
||||
NULLIF(LTRIM(RTRIM(N.value('@Catastro', 'varchar(100)'))), ''),
|
||||
TRY_CONVERT(
|
||||
decimal(18,4),
|
||||
NULLIF(N.value('@MetrosCuadrados', 'varchar(50)'), '')
|
||||
),
|
||||
NULLIF(LTRIM(RTRIM(N.value('@Duplicador', 'varchar(50)'))), ''),
|
||||
N.value('@EsActivo', 'bit')
|
||||
FROM @LotesXml.nodes('/Lotes/Lote') AS X(N);
|
||||
|
||||
DECLARE @Cantidad int = (SELECT COUNT(1) FROM @Lotes);
|
||||
|
||||
IF @Cantidad = (0)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'No se recibieron lotes para guardar.';
|
||||
SET @ErrorTipo = 1;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Lotes
|
||||
WHERE [Nombre] IS NULL
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Todos los lotes deben tener un nombre.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT [Nombre]
|
||||
FROM @Lotes
|
||||
GROUP BY [Nombre]
|
||||
HAVING COUNT(1) > (1)
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La captura contiene nombres de lote repetidos.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @Lotes AS N
|
||||
INNER JOIN [dbo].[FraccionamientosLotes] AS L
|
||||
ON L.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND L.[Numero] = N.[Nombre]
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Uno o más nombres de lote ya existen en la etapa seleccionada.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
DECLARE @LotesGuardados TABLE
|
||||
(
|
||||
CveFraccionamientoLote int NOT NULL,
|
||||
CveFraccionamientoEtapa int NOT NULL,
|
||||
Nombre varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
Tipo varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
Calle varchar(200) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
Catastro varchar(100) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
MetrosCuadrados decimal(18,4) NULL,
|
||||
Duplicador varchar(50) COLLATE Modern_Spanish_CS_AS NULL,
|
||||
EsActivo bit NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO [dbo].[FraccionamientosLotes]
|
||||
(
|
||||
[CveFraccionamientoEtapa],
|
||||
[Tipo],
|
||||
[Calle],
|
||||
[Catastro],
|
||||
[MetrosCuadrados],
|
||||
[Numero],
|
||||
[Duplicador],
|
||||
[EsActivo],
|
||||
[CveUsuario]
|
||||
)
|
||||
OUTPUT
|
||||
INSERTED.[CveFraccionamientoLote],
|
||||
INSERTED.[CveFraccionamientoEtapa],
|
||||
INSERTED.[Numero],
|
||||
INSERTED.[Tipo],
|
||||
INSERTED.[Calle],
|
||||
INSERTED.[Catastro],
|
||||
INSERTED.[MetrosCuadrados],
|
||||
INSERTED.[Duplicador],
|
||||
INSERTED.[EsActivo]
|
||||
INTO @LotesGuardados
|
||||
SELECT
|
||||
@CveFraccionamientoEtapa,
|
||||
[Tipo],
|
||||
[Calle],
|
||||
[Catastro],
|
||||
[MetrosCuadrados],
|
||||
[Nombre],
|
||||
[Duplicador],
|
||||
[EsActivo],
|
||||
@CveUsuarioEjecuta
|
||||
FROM @Lotes;
|
||||
|
||||
SELECT
|
||||
G.CveFraccionamientoLote,
|
||||
G.CveFraccionamientoEtapa,
|
||||
@CveFraccionamiento AS CveFraccionamiento,
|
||||
F.CveCliente,
|
||||
G.Nombre,
|
||||
G.Tipo,
|
||||
G.Calle,
|
||||
G.Catastro,
|
||||
G.MetrosCuadrados,
|
||||
G.Duplicador,
|
||||
G.EsActivo
|
||||
FROM @LotesGuardados AS G
|
||||
INNER JOIN dbo.Fraccionamientos AS F
|
||||
ON F.CveFraccionamiento = @CveFraccionamiento
|
||||
ORDER BY G.CveFraccionamientoLote;
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
SET @ErrorMostrar = 'Ocurrió un error al guardar los lotes; 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_Fraccionamientos_LoteBatchSave'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteGet]
|
||||
@CveFraccionamiento int,
|
||||
@CveFraccionamientoLote 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].[FraccionamientosLotes] AS L
|
||||
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
||||
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
||||
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
||||
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SELECT
|
||||
L.[CveFraccionamientoLote] AS [CveFraccionamientoLote],
|
||||
L.[CveFraccionamientoEtapa] AS [CveFraccionamientoEtapa],
|
||||
E.[CveFraccionamiento] AS [CveFraccionamiento],
|
||||
F.[CveCliente] AS [CveCliente],
|
||||
E.[Etapa] AS [Etapa],
|
||||
L.[Numero] AS [Nombre],
|
||||
L.[Tipo] AS [Tipo],
|
||||
L.[Calle] AS [Calle],
|
||||
L.[Catastro] AS [Catastro],
|
||||
L.[MetrosCuadrados] AS [MetrosCuadrados],
|
||||
L.[Duplicador] AS [Duplicador],
|
||||
L.[EsActivo] AS [EsActivo]
|
||||
FROM [dbo].[FraccionamientosLotes] AS L
|
||||
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
||||
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
||||
INNER JOIN [dbo].[Fraccionamientos] AS F
|
||||
ON F.[CveFraccionamiento] = E.[CveFraccionamiento]
|
||||
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
||||
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al consultar el lote; 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_Fraccionamientos_LoteGet'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteUpdate]
|
||||
@CveFraccionamiento int,
|
||||
@CveFraccionamientoLote int,
|
||||
@CveFraccionamientoEtapa int,
|
||||
@Nombre varchar(50),
|
||||
@Tipo varchar(100) = NULL,
|
||||
@Calle varchar(200) = NULL,
|
||||
@Catastro varchar(100) = NULL,
|
||||
@MetrosCuadrados decimal(18,4) = NULL,
|
||||
@Duplicador varchar(50) = NULL,
|
||||
@EsActivo 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
|
||||
SET @Nombre = NULLIF(LTRIM(RTRIM(@Nombre)), '');
|
||||
SET @Tipo = NULLIF(LTRIM(RTRIM(@Tipo)), '');
|
||||
SET @Calle = NULLIF(LTRIM(RTRIM(@Calle)), '');
|
||||
SET @Catastro = NULLIF(LTRIM(RTRIM(@Catastro)), '');
|
||||
SET @Duplicador = NULLIF(LTRIM(RTRIM(@Duplicador)), '');
|
||||
|
||||
IF @Nombre IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Capture el nombre del lote.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF @MetrosCuadrados IS NOT NULL
|
||||
AND @MetrosCuadrados < (0)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Los metros cuadrados no pueden ser negativos.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosEtapas]
|
||||
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND [CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa del lote no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosLotes] AS L
|
||||
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
||||
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
||||
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
||||
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosLotes] AS L
|
||||
WHERE L.[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND L.[CveFraccionamientoLote] <> @CveFraccionamientoLote
|
||||
AND L.[Numero] = @Nombre COLLATE Modern_Spanish_CS_AS
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Ya existe otro lote con ese nombre en la etapa.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
UPDATE [dbo].[FraccionamientosLotes]
|
||||
SET
|
||||
[CveFraccionamientoEtapa] = @CveFraccionamientoEtapa,
|
||||
[Numero] = @Nombre,
|
||||
[Tipo] = @Tipo,
|
||||
[Calle] = @Calle,
|
||||
[Catastro] = @Catastro,
|
||||
[MetrosCuadrados] = @MetrosCuadrados,
|
||||
[Duplicador] = @Duplicador,
|
||||
[EsActivo] = @EsActivo,
|
||||
[FechaModificacion] = SYSDATETIME(),
|
||||
[CveUsuario] = @CveUsuarioEjecuta
|
||||
WHERE [CveFraccionamientoLote] = @CveFraccionamientoLote
|
||||
;
|
||||
|
||||
|
||||
SELECT @CveFraccionamientoLote AS [CveFraccionamientoLote];
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
SET @ErrorMostrar = 'Ocurrió un error al actualizar el lote; 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_Fraccionamientos_LoteUpdate'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteDelete]
|
||||
@CveFraccionamiento int,
|
||||
@CveFraccionamientoLote 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].[FraccionamientosLotes] AS L
|
||||
INNER JOIN [dbo].[FraccionamientosEtapas] AS E
|
||||
ON E.[CveFraccionamientoEtapa] = L.[CveFraccionamientoEtapa]
|
||||
WHERE L.[CveFraccionamientoLote] = @CveFraccionamientoLote
|
||||
AND E.[CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El lote seleccionado no existe o no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
DELETE FROM [dbo].[FraccionamientosLotes]
|
||||
WHERE [CveFraccionamientoLote] = @CveFraccionamientoLote;
|
||||
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
SET @ErrorMostrar = 'Ocurrió un error al eliminar el lote; 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_Fraccionamientos_LoteDelete'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Fraccionamientos_LoteStageClear]
|
||||
@CveFraccionamiento int,
|
||||
@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
|
||||
IF NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[FraccionamientosEtapas]
|
||||
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa
|
||||
AND [CveFraccionamiento] = @CveFraccionamiento
|
||||
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa seleccionada no pertenece al fraccionamiento.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
DELETE FROM [dbo].[FraccionamientosLotes]
|
||||
WHERE [CveFraccionamientoEtapa] = @CveFraccionamientoEtapa;
|
||||
|
||||
DECLARE @Cantidad int = @@ROWCOUNT;
|
||||
|
||||
IF @Cantidad = (0)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'La etapa seleccionada no tiene lotes para eliminar.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
|
||||
SELECT @Cantidad AS [LotesEliminados];
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
|
||||
SET @ErrorMostrar = 'Ocurrió un error al eliminar los lotes de la etapa; 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_Fraccionamientos_LoteStageClear'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
|
||||
GO
|
||||
BIN
Ley de Ingresos 2024.pdf
Normal file
BIN
Ley de Ingresos 2024.pdf
Normal file
Binary file not shown.
BIN
Ley de Ingresos plataforma.docx
Normal file
BIN
Ley de Ingresos plataforma.docx
Normal file
Binary file not shown.
236
Menu_Catalogos_Tramites_Internos.sql
Normal file
236
Menu_Catalogos_Tramites_Internos.sql
Normal file
@@ -0,0 +1,236 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @CvePlataforma int;
|
||||
|
||||
SELECT TOP (1)
|
||||
@CvePlataforma = CvePlataforma
|
||||
FROM dbo.Sis_Plataformas
|
||||
WHERE NombrePlataforma = 'Plataforma de Desarrolladores'
|
||||
ORDER BY CvePlataforma;
|
||||
|
||||
IF @CvePlataforma IS NULL
|
||||
BEGIN
|
||||
THROW 50001, 'No se encontró la plataforma de desarrolladores.', 1;
|
||||
END;
|
||||
|
||||
DECLARE @Menu TABLE
|
||||
(
|
||||
Clave varchar(50) NOT NULL PRIMARY KEY,
|
||||
ClavePadre varchar(50) NULL,
|
||||
NombreModulo varchar(150) NOT NULL,
|
||||
Url varchar(500) NULL,
|
||||
Icono varchar(150) NULL,
|
||||
Orden int NOT NULL,
|
||||
Visible bit NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Menu
|
||||
(Clave, ClavePadre, NombreModulo, Url, Icono, Orden, Visible)
|
||||
VALUES
|
||||
('Catalogos', NULL, 'Catálogos', NULL, 'fa fa-list-alt', 30, 1),
|
||||
('EstatusSolicitud', 'Catalogos', 'Estatus de solicitud', '~/Pages/Catalogos/EstatusSolicitud.aspx', 'fa fa-check-circle', 10, 1),
|
||||
('TiposTramite', 'Catalogos', 'Tipos de trámite', '~/Pages/Catalogos/TiposTramite.aspx', 'fa fa-file-text-o', 20, 1),
|
||||
('TipoTramiteDetalle', 'TiposTramite', 'Detalle de tipo de trámite', '~/Pages/Catalogos/TipoTramiteDetalle.aspx', 'fa fa-question-circle', 10, 0),
|
||||
('TiposDocumento', 'Catalogos', 'Tipos de documento', '~/Pages/Catalogos/TiposDocumento.aspx', 'fa fa-file-o', 30, 1),
|
||||
('DocumentosRequeridos', 'Catalogos', 'Documentos requeridos', '~/Pages/Catalogos/DocumentosRequeridos.aspx', 'fa fa-paperclip', 40, 1);
|
||||
|
||||
DECLARE @Ids TABLE
|
||||
(
|
||||
Clave varchar(50) NOT NULL PRIMARY KEY,
|
||||
CveModulo int NOT NULL
|
||||
);
|
||||
|
||||
DECLARE
|
||||
@Clave varchar(50),
|
||||
@ClavePadre varchar(50),
|
||||
@NombreModulo varchar(150),
|
||||
@Url varchar(500),
|
||||
@Icono varchar(150),
|
||||
@Orden int,
|
||||
@Visible bit,
|
||||
@CveModuloPadre int,
|
||||
@CveModulo int;
|
||||
|
||||
DECLARE CatalogoCursor CURSOR LOCAL FAST_FORWARD FOR
|
||||
SELECT Clave, ClavePadre, NombreModulo, Url, Icono, Orden, Visible
|
||||
FROM @Menu
|
||||
ORDER BY
|
||||
CASE WHEN ClavePadre IS NULL THEN 0 ELSE 1 END,
|
||||
Orden,
|
||||
Clave;
|
||||
|
||||
OPEN CatalogoCursor;
|
||||
FETCH NEXT FROM CatalogoCursor
|
||||
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @Icono, @Orden, @Visible;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SELECT @CveModuloPadre = NULL, @CveModulo = NULL;
|
||||
|
||||
IF @ClavePadre IS NOT NULL
|
||||
BEGIN
|
||||
SELECT @CveModuloPadre = CveModulo
|
||||
FROM @Ids
|
||||
WHERE Clave = @ClavePadre;
|
||||
END;
|
||||
|
||||
SELECT TOP (1)
|
||||
@CveModulo = CveModulo
|
||||
FROM dbo.Sis_Modulos
|
||||
WHERE CvePlataforma = @CvePlataforma
|
||||
AND
|
||||
(
|
||||
(@Url IS NOT NULL AND LOWER(ISNULL(Url, '')) = LOWER(@Url) COLLATE Modern_Spanish_CS_AS)
|
||||
OR
|
||||
(@Url IS NULL AND Url IS NULL AND NombreModulo = @NombreModulo COLLATE Modern_Spanish_CS_AS)
|
||||
)
|
||||
ORDER BY CveModulo;
|
||||
|
||||
IF @CveModulo IS NULL
|
||||
BEGIN
|
||||
INSERT dbo.Sis_Modulos
|
||||
(CveModuloPadre, CvePlataforma, NombreModulo, Descripcion, Url,
|
||||
ClaseCssIcono, ClaseCssEstilo, OrdenVisualizacion, Visible,
|
||||
Activo, FechaCreacion)
|
||||
VALUES
|
||||
(@CveModuloPadre, @CvePlataforma, @NombreModulo, @NombreModulo,
|
||||
@Url, @Icono, NULL, @Orden, @Visible, 1, GETDATE());
|
||||
|
||||
SET @CveModulo = CONVERT(int, SCOPE_IDENTITY());
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE dbo.Sis_Modulos
|
||||
SET CveModuloPadre = @CveModuloPadre,
|
||||
NombreModulo = @NombreModulo COLLATE Modern_Spanish_CS_AS,
|
||||
Descripcion = @NombreModulo,
|
||||
Url = @Url,
|
||||
ClaseCssIcono = @Icono,
|
||||
OrdenVisualizacion = @Orden,
|
||||
Visible = @Visible,
|
||||
Activo = 1,
|
||||
FechaActualizacion = GETDATE()
|
||||
WHERE CveModulo = @CveModulo;
|
||||
END;
|
||||
|
||||
INSERT INTO @Ids (Clave, CveModulo)
|
||||
VALUES (@Clave, @CveModulo);
|
||||
|
||||
FETCH NEXT FROM CatalogoCursor
|
||||
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @Icono, @Orden, @Visible;
|
||||
END;
|
||||
|
||||
CLOSE CatalogoCursor;
|
||||
DEALLOCATE CatalogoCursor;
|
||||
|
||||
UPDATE RM
|
||||
SET PuedeVer = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
||||
PuedeCrear = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
||||
PuedeModificar = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END,
|
||||
PuedeEliminar = CASE WHEN RM.CveRol IN (1, 2) THEN 1 ELSE 0 END
|
||||
FROM dbo.Sis_RolesModulos AS RM
|
||||
INNER JOIN @Ids AS I ON I.CveModulo = RM.CveModulo;
|
||||
|
||||
INSERT dbo.Sis_RolesModulos
|
||||
(CveRol, CveModulo, PuedeVer, PuedeCrear, PuedeModificar,
|
||||
PuedeEliminar, PuedeImprimir, PuedeExportar, FechaCreacion)
|
||||
SELECT
|
||||
R.CveRol,
|
||||
I.CveModulo,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
GETDATE()
|
||||
FROM dbo.Sis_Roles AS R
|
||||
CROSS JOIN @Ids AS I
|
||||
WHERE R.CveRol IN (1, 2)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Sis_RolesModulos AS RM
|
||||
WHERE RM.CveRol = R.CveRol
|
||||
AND RM.CveModulo = I.CveModulo
|
||||
);
|
||||
|
||||
DECLARE @Tablas TABLE
|
||||
(
|
||||
NombreTablaSQL varchar(128) NOT NULL,
|
||||
NombreMostrar varchar(150) NOT NULL,
|
||||
CampoLlave varchar(128) NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Tablas
|
||||
(NombreTablaSQL, NombreMostrar, CampoLlave)
|
||||
VALUES
|
||||
('Tra_EstatusSolicitud', 'Estatus de solicitud', 'CveEstatusSolicitud'),
|
||||
('Tra_TiposTramite', 'Tipos de trámite', 'CveTipoTramite'),
|
||||
('Tra_TiposDocumento', 'Tipos de documento', 'CveTipoDocumento'),
|
||||
('Tra_DocumentosRequeridos', 'Documentos requeridos', 'CveDocumentoRequerido'),
|
||||
('Tra_Preguntas', 'Preguntas de trámite', 'CvePregunta'),
|
||||
('Tra_OpcionesPregunta', 'Opciones de respuesta', 'CveOpcionPregunta');
|
||||
|
||||
UPDATE T
|
||||
SET NombreMostrar = S.NombreMostrar,
|
||||
NombreCampoLlaveSQL = S.CampoLlave,
|
||||
Activo = 1,
|
||||
FechaMod = GETDATE()
|
||||
FROM dbo.Bit_Tablas AS T
|
||||
INNER JOIN @Tablas AS S ON S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS = T.NombreTablaSQL;
|
||||
|
||||
INSERT dbo.Bit_Tablas
|
||||
(NombreTablaSQL, NombreMostrar, Descripcion, NombreCampoLlaveSQL, Activo)
|
||||
SELECT
|
||||
S.NombreTablaSQL,
|
||||
S.NombreMostrar,
|
||||
'Catálogo interno de trámites.',
|
||||
S.CampoLlave,
|
||||
1
|
||||
FROM @Tablas AS S
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Bit_Tablas AS T
|
||||
WHERE T.NombreTablaSQL = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
||||
);
|
||||
|
||||
INSERT dbo.Bit_Campos
|
||||
(CveTabla, NombreCampoSQL, NombreMostrar, MostrarEnBitacora, TipoDatoSQL, Activo)
|
||||
SELECT
|
||||
BT.CveTabla,
|
||||
C.name,
|
||||
C.name,
|
||||
CASE WHEN C.name = S.CampoLlave THEN 0 ELSE 1 END,
|
||||
TY.name,
|
||||
1
|
||||
FROM @Tablas AS S
|
||||
INNER JOIN sys.tables AS T ON T.name = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
||||
INNER JOIN sys.schemas AS SC ON SC.schema_id = T.schema_id AND SC.name = 'dbo'
|
||||
INNER JOIN sys.columns AS C ON C.object_id = T.object_id
|
||||
INNER JOIN sys.types AS TY ON TY.user_type_id = C.user_type_id
|
||||
INNER JOIN dbo.Bit_Tablas AS BT ON BT.NombreTablaSQL = S.NombreTablaSQL COLLATE Modern_Spanish_CS_AS
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Bit_Campos AS BC
|
||||
WHERE BC.CveTabla = BT.CveTabla
|
||||
AND BC.NombreCampoSQL = C.name COLLATE Modern_Spanish_CS_AS
|
||||
);
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
BEGIN
|
||||
ROLLBACK TRANSACTION;
|
||||
END;
|
||||
|
||||
THROW;
|
||||
END CATCH;
|
||||
GO
|
||||
188
Menu_Desarrolladores.sql
Normal file
188
Menu_Desarrolladores.sql
Normal file
@@ -0,0 +1,188 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @CvePlataforma int;
|
||||
|
||||
SELECT TOP (1)
|
||||
@CvePlataforma = CvePlataforma
|
||||
FROM dbo.Sis_Plataformas
|
||||
WHERE NombrePlataforma = 'Plataforma de Desarrolladores'
|
||||
AND Borrado = 0
|
||||
ORDER BY CvePlataforma;
|
||||
|
||||
IF @CvePlataforma IS NULL
|
||||
BEGIN
|
||||
INSERT INTO dbo.Sis_Plataformas
|
||||
(NombrePlataforma, Descripcion, Activo, FechaCreacion)
|
||||
VALUES
|
||||
('Plataforma de Desarrolladores', 'Portal WebForms para desarrolladores', 1, GETDATE());
|
||||
|
||||
SET @CvePlataforma = CONVERT(int, SCOPE_IDENTITY());
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE dbo.Sis_Plataformas
|
||||
SET Activo = 1,
|
||||
FechaActualizacion = GETDATE()
|
||||
WHERE CvePlataforma = @CvePlataforma;
|
||||
END;
|
||||
|
||||
DECLARE @Menu TABLE
|
||||
(
|
||||
Clave varchar(50) NOT NULL PRIMARY KEY,
|
||||
ClavePadre varchar(50) NULL,
|
||||
NombreModulo varchar(150) NOT NULL,
|
||||
Url varchar(500) NULL,
|
||||
ClaseCssIcono varchar(150) NULL,
|
||||
OrdenVisualizacion int NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @Menu
|
||||
(Clave, ClavePadre, NombreModulo, Url, ClaseCssIcono, OrdenVisualizacion)
|
||||
VALUES
|
||||
('Inicio', NULL, 'Inicio', '~/Inicio.aspx', 'icon-home', 0),
|
||||
('Desarrolladores', NULL, 'Desarrolladores', NULL, 'fa fa-address-card', 10),
|
||||
('Tramites', 'Desarrolladores', 'Trámites', '~/Pages/Desarrolladores/Tramites.aspx', 'fa fa-dollar-sign', 10),
|
||||
('ConsultaTramites', 'Desarrolladores', 'Consulta Trámites', '~/Pages/Desarrolladores/ConsultaTramites.aspx', 'fa fa-search', 20),
|
||||
('Predios', 'Desarrolladores', 'Predios', '~/Pages/Desarrolladores/Predios.aspx', 'fa fa-house', 30),
|
||||
('Fraccionamientos', 'Desarrolladores', 'Fraccionamientos', '~/Pages/Fraccionamientos/Fraccionamientos.aspx', 'fa fa-building', 35),
|
||||
('FraccionamientoDetalle', 'Fraccionamientos', 'Detalle de fraccionamiento', '~/Pages/Fraccionamientos/FraccionamientoDetalle.aspx', 'fa fa-building-o', 10),
|
||||
('Facturas', 'Desarrolladores', 'Facturas', '~/Pages/Desarrolladores/Facturas.aspx', 'fa fa-print', 40),
|
||||
('HistorialFacturas', 'Desarrolladores', 'Historial Facturas', '~/Pages/Desarrolladores/HistorialFacturas.aspx', 'fa fa-print', 50),
|
||||
('FacturasComerciales', 'Desarrolladores', 'Fact. Comerciales', '~/Pages/Desarrolladores/FacturasComerciales.aspx', 'fa fa-dollar-sign', 60),
|
||||
('FacturasComercialesListado', 'Desarrolladores', 'Fact. Com. Listado', '~/Pages/Desarrolladores/FacturasComercialesListado.aspx', 'fa fa-print', 70),
|
||||
('FacturasCfdi', NULL, 'Facturas (CFDI)', '~/Pages/Desarrolladores/FacturasCfdi.aspx', 'fa fa-address-card', 20);
|
||||
|
||||
DECLARE @Ids TABLE
|
||||
(
|
||||
Clave varchar(50) NOT NULL PRIMARY KEY,
|
||||
CveModulo int NOT NULL
|
||||
);
|
||||
|
||||
DECLARE
|
||||
@Clave varchar(50),
|
||||
@ClavePadre varchar(50),
|
||||
@NombreModulo varchar(150),
|
||||
@Url varchar(500),
|
||||
@ClaseCssIcono varchar(150),
|
||||
@OrdenVisualizacion int,
|
||||
@CveModuloPadre int,
|
||||
@CveModulo int;
|
||||
|
||||
DECLARE MenuCursor CURSOR LOCAL FAST_FORWARD FOR
|
||||
SELECT Clave, ClavePadre, NombreModulo, Url, ClaseCssIcono, OrdenVisualizacion
|
||||
FROM @Menu
|
||||
ORDER BY CASE WHEN ClavePadre IS NULL THEN 0 ELSE 1 END, OrdenVisualizacion, Clave;
|
||||
|
||||
OPEN MenuCursor;
|
||||
FETCH NEXT FROM MenuCursor
|
||||
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @ClaseCssIcono, @OrdenVisualizacion;
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
SET @CveModuloPadre = NULL;
|
||||
SET @CveModulo = NULL;
|
||||
|
||||
IF @ClavePadre IS NOT NULL
|
||||
BEGIN
|
||||
SELECT @CveModuloPadre = CveModulo
|
||||
FROM @Ids
|
||||
WHERE Clave = @ClavePadre;
|
||||
END;
|
||||
|
||||
SELECT TOP (1)
|
||||
@CveModulo = CveModulo
|
||||
FROM dbo.Sis_Modulos
|
||||
WHERE CvePlataforma = @CvePlataforma
|
||||
AND
|
||||
(
|
||||
(@Url IS NOT NULL AND LOWER(ISNULL(Url, '')) = LOWER(@Url))
|
||||
OR (@Url IS NULL AND Url IS NULL AND NombreModulo = @NombreModulo)
|
||||
)
|
||||
ORDER BY CveModulo;
|
||||
|
||||
IF @CveModulo IS NULL
|
||||
BEGIN
|
||||
INSERT INTO dbo.Sis_Modulos
|
||||
(CveModuloPadre, CvePlataforma, NombreModulo, Descripcion, Url,
|
||||
ClaseCssIcono, ClaseCssEstilo, OrdenVisualizacion, Visible, Activo, FechaCreacion)
|
||||
VALUES
|
||||
(@CveModuloPadre, @CvePlataforma, @NombreModulo, @NombreModulo, @Url,
|
||||
@ClaseCssIcono, NULL, @OrdenVisualizacion, 1, 1, GETDATE());
|
||||
|
||||
SET @CveModulo = CONVERT(int, SCOPE_IDENTITY());
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE dbo.Sis_Modulos
|
||||
SET CveModuloPadre = @CveModuloPadre,
|
||||
NombreModulo = @NombreModulo,
|
||||
Url = @Url,
|
||||
ClaseCssIcono = @ClaseCssIcono,
|
||||
OrdenVisualizacion = @OrdenVisualizacion,
|
||||
Visible = 1,
|
||||
Activo = 1,
|
||||
Borrado = 0,
|
||||
FechaBorrado = NULL,
|
||||
FechaActualizacion = GETDATE()
|
||||
WHERE CveModulo = @CveModulo;
|
||||
END;
|
||||
|
||||
INSERT INTO @Ids (Clave, CveModulo)
|
||||
VALUES (@Clave, @CveModulo);
|
||||
|
||||
FETCH NEXT FROM MenuCursor
|
||||
INTO @Clave, @ClavePadre, @NombreModulo, @Url, @ClaseCssIcono, @OrdenVisualizacion;
|
||||
END;
|
||||
|
||||
CLOSE MenuCursor;
|
||||
DEALLOCATE MenuCursor;
|
||||
|
||||
UPDATE M SET M.Visible = 0
|
||||
FROM dbo.Sis_Modulos AS M
|
||||
INNER JOIN @Ids AS I ON I.CveModulo = M.CveModulo
|
||||
WHERE I.Clave = 'FraccionamientoDetalle';
|
||||
|
||||
UPDATE RM
|
||||
SET RM.PuedeVer = 1,
|
||||
RM.Borrado = 0,
|
||||
RM.FechaBorrado = NULL
|
||||
FROM dbo.Sis_RolesModulos AS RM
|
||||
INNER JOIN @Ids AS M ON M.CveModulo = RM.CveModulo
|
||||
INNER JOIN dbo.Sis_Roles AS R ON R.CveRol = RM.CveRol
|
||||
WHERE R.Activo = 1
|
||||
AND R.Borrado = 0;
|
||||
|
||||
INSERT INTO dbo.Sis_RolesModulos
|
||||
(CveRol, CveModulo, PuedeVer, PuedeCrear, PuedeModificar,
|
||||
PuedeEliminar, PuedeImprimir, PuedeExportar, FechaCreacion)
|
||||
SELECT
|
||||
R.CveRol, M.CveModulo, 1, 0, 0, 0, 0, 0, GETDATE()
|
||||
FROM dbo.Sis_Roles AS R
|
||||
CROSS JOIN @Ids AS M
|
||||
WHERE R.Activo = 1
|
||||
AND R.Borrado = 0
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Sis_RolesModulos AS RM
|
||||
WHERE RM.CveRol = R.CveRol
|
||||
AND RM.CveModulo = M.CveModulo
|
||||
);
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
SELECT M.CveModulo, M.CveModuloPadre, M.NombreModulo, M.Url, M.OrdenVisualizacion
|
||||
FROM dbo.Sis_Modulos AS M
|
||||
INNER JOIN @Ids AS I ON I.CveModulo = M.CveModulo
|
||||
ORDER BY M.CveModuloPadre, M.OrdenVisualizacion, M.NombreModulo;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0
|
||||
ROLLBACK TRANSACTION;
|
||||
|
||||
THROW;
|
||||
END CATCH;
|
||||
1154
Migracion_Bitacora_ConsultaGenerica_20260814.sql
Normal file
1154
Migracion_Bitacora_ConsultaGenerica_20260814.sql
Normal file
File diff suppressed because it is too large
Load Diff
377
Migracion_Bitacora_ConsultaRelaciones_20260722.sql
Normal file
377
Migracion_Bitacora_ConsultaRelaciones_20260722.sql
Normal file
@@ -0,0 +1,377 @@
|
||||
CREATE OR ALTER PROCEDURE dbo.PA_Bit_BitacoraListByRelations
|
||||
@RelacionesXml xml = NULL,
|
||||
@RegistrosOmitidos int,
|
||||
@RegistrosPorPagina 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 @RegistrosOmitidos < 0 OR @RegistrosPorPagina <= 0
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Los datos de paginación no son válidos.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @EsAdministrador bit = 0;
|
||||
DECLARE @EsDesarrollador bit = 0;
|
||||
|
||||
SELECT
|
||||
@EsAdministrador = CASE
|
||||
WHEN R.NombreRol IN ('SuperUsuario', 'Administrador') THEN 1
|
||||
ELSE 0
|
||||
END,
|
||||
@EsDesarrollador = CASE
|
||||
WHEN R.NombreRol = 'Empresa' THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
FROM dbo.Sis_Usuarios AS U
|
||||
INNER JOIN dbo.Sis_Roles AS R
|
||||
ON R.CveRol = U.CveRol
|
||||
WHERE U.CveUsuario = @CveUsuarioEjecuta
|
||||
AND U.Activo = 1
|
||||
AND R.Activo = 1;
|
||||
|
||||
DECLARE @Filtros TABLE
|
||||
(
|
||||
Orden int NOT NULL PRIMARY KEY,
|
||||
NombreTablaSQL varchar(128)
|
||||
COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
NombreCampoSQL varchar(128)
|
||||
COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
Valor nvarchar(250)
|
||||
COLLATE Modern_Spanish_CS_AS NOT NULL
|
||||
);
|
||||
|
||||
IF @RelacionesXml IS NOT NULL
|
||||
BEGIN
|
||||
INSERT INTO @Filtros
|
||||
(
|
||||
Orden,
|
||||
NombreTablaSQL,
|
||||
NombreCampoSQL,
|
||||
Valor
|
||||
)
|
||||
SELECT
|
||||
R.value('@Orden', 'int'),
|
||||
R.value('@Tabla', 'varchar(128)'),
|
||||
R.value('@Campo', 'varchar(128)'),
|
||||
R.value('@Valor', 'nvarchar(250)')
|
||||
FROM @RelacionesXml.nodes('/Relaciones/Relacion') AS X(R);
|
||||
END;
|
||||
|
||||
DECLARE @FiltrosResueltos TABLE
|
||||
(
|
||||
Orden int NOT NULL PRIMARY KEY,
|
||||
CveTabla int NOT NULL,
|
||||
CveCampo int NOT NULL,
|
||||
TipoDatoSQL varchar(128)
|
||||
COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
Valor nvarchar(250)
|
||||
COLLATE Modern_Spanish_CS_AS NOT NULL,
|
||||
EsEntero bit NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO @FiltrosResueltos
|
||||
(
|
||||
Orden,
|
||||
CveTabla,
|
||||
CveCampo,
|
||||
TipoDatoSQL,
|
||||
Valor,
|
||||
EsEntero
|
||||
)
|
||||
SELECT
|
||||
F.Orden,
|
||||
T.CveTabla,
|
||||
C.CveCampo,
|
||||
C.TipoDatoSQL,
|
||||
F.Valor,
|
||||
CASE
|
||||
WHEN C.TipoDatoSQL IN
|
||||
(
|
||||
'tinyint',
|
||||
'smallint',
|
||||
'int',
|
||||
'bigint'
|
||||
) THEN 1
|
||||
ELSE 0
|
||||
END
|
||||
FROM @Filtros AS F
|
||||
INNER JOIN dbo.Bit_Tablas AS T
|
||||
ON T.NombreTablaSQL = F.NombreTablaSQL
|
||||
AND T.Activo = 1
|
||||
INNER JOIN dbo.Bit_Campos AS C
|
||||
ON C.CveTabla = T.CveTabla
|
||||
AND C.NombreCampoSQL = F.NombreCampoSQL
|
||||
AND C.Activo = 1
|
||||
WHERE C.TipoDatoSQL IS NOT NULL;
|
||||
|
||||
IF (SELECT COUNT(1) FROM @Filtros) <>
|
||||
(SELECT COUNT(1) FROM @FiltrosResueltos)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Una relación utiliza una tabla o campo que no está configurado en la bitácora.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @FiltrosResueltos
|
||||
WHERE EsEntero = 1
|
||||
AND TRY_CONVERT(bigint, Valor) IS NULL
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El valor de una relación numérica no es válido.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
CREATE TABLE #BitacorasCoincidentes
|
||||
(
|
||||
CveBitacora bigint NOT NULL PRIMARY KEY,
|
||||
FechaMovimiento datetime NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO #BitacorasCoincidentes
|
||||
(
|
||||
CveBitacora,
|
||||
FechaMovimiento
|
||||
)
|
||||
SELECT
|
||||
B.CveBitacora,
|
||||
B.FechaMovimiento
|
||||
FROM dbo.Bit_Bitacora AS B
|
||||
WHERE
|
||||
(
|
||||
@EsAdministrador = 1
|
||||
OR
|
||||
(
|
||||
@EsDesarrollador = 1
|
||||
AND EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Bit_BitacoraRelaciones AS BRCliente
|
||||
INNER JOIN dbo.Bit_Tablas AS TCliente
|
||||
ON TCliente.CveTabla =
|
||||
BRCliente.CveTablaRelacionada
|
||||
INNER JOIN dbo.Bit_Campos AS CCliente
|
||||
ON CCliente.CveCampo =
|
||||
BRCliente.CveCampoRelacion
|
||||
AND CCliente.CveTabla = TCliente.CveTabla
|
||||
INNER JOIN dbo.Sis_UsuariosClientes AS UC
|
||||
ON UC.CveCliente =
|
||||
BRCliente.ValorRelacionNumero
|
||||
AND UC.CveUsuario = @CveUsuarioEjecuta
|
||||
AND UC.Activo = 1
|
||||
WHERE BRCliente.CveBitacora = B.CveBitacora
|
||||
AND BRCliente.VisibleDesarrollador = 1
|
||||
AND TCliente.NombreTablaSQL = 'Clientes'
|
||||
AND CCliente.NombreCampoSQL = 'CveCliente'
|
||||
)
|
||||
)
|
||||
)
|
||||
AND
|
||||
(
|
||||
@EsDesarrollador = 0
|
||||
OR NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @FiltrosResueltos AS FCliente
|
||||
INNER JOIN dbo.Bit_Tablas AS TClienteFiltro
|
||||
ON TClienteFiltro.CveTabla = FCliente.CveTabla
|
||||
INNER JOIN dbo.Bit_Campos AS CClienteFiltro
|
||||
ON CClienteFiltro.CveCampo = FCliente.CveCampo
|
||||
AND CClienteFiltro.CveTabla =
|
||||
TClienteFiltro.CveTabla
|
||||
WHERE TClienteFiltro.NombreTablaSQL = 'Clientes'
|
||||
AND CClienteFiltro.NombreCampoSQL = 'CveCliente'
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Sis_UsuariosClientes AS UCClienteFiltro
|
||||
WHERE UCClienteFiltro.CveUsuario =
|
||||
@CveUsuarioEjecuta
|
||||
AND UCClienteFiltro.CveCliente =
|
||||
TRY_CONVERT(bigint, FCliente.Valor)
|
||||
AND UCClienteFiltro.Activo = 1
|
||||
)
|
||||
)
|
||||
)
|
||||
AND NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM @FiltrosResueltos AS F
|
||||
WHERE NOT EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM dbo.Bit_BitacoraRelaciones AS BR
|
||||
WHERE BR.CveBitacora = B.CveBitacora
|
||||
AND BR.CveTablaRelacionada = F.CveTabla
|
||||
AND BR.CveCampoRelacion = F.CveCampo
|
||||
AND
|
||||
(
|
||||
@EsAdministrador = 1
|
||||
OR BR.VisibleDesarrollador = 1
|
||||
)
|
||||
AND
|
||||
(
|
||||
(
|
||||
F.EsEntero = 1
|
||||
AND BR.ValorRelacionNumero =
|
||||
TRY_CONVERT(bigint, F.Valor)
|
||||
)
|
||||
OR
|
||||
(
|
||||
F.EsEntero = 0
|
||||
AND BR.ValorRelacionTexto =
|
||||
F.Valor COLLATE Modern_Spanish_CS_AS
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
DECLARE @TotalRegistros int;
|
||||
|
||||
SELECT @TotalRegistros = COUNT(DISTINCT CveBitacora)
|
||||
FROM #BitacorasCoincidentes;
|
||||
|
||||
CREATE TABLE #BitacorasPagina
|
||||
(
|
||||
CveBitacora bigint NOT NULL PRIMARY KEY,
|
||||
Orden int NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO #BitacorasPagina
|
||||
(
|
||||
CveBitacora,
|
||||
Orden
|
||||
)
|
||||
SELECT
|
||||
C.CveBitacora,
|
||||
ROW_NUMBER() OVER
|
||||
(
|
||||
ORDER BY
|
||||
C.FechaMovimiento DESC,
|
||||
C.CveBitacora DESC
|
||||
)
|
||||
FROM #BitacorasCoincidentes AS C
|
||||
ORDER BY
|
||||
C.FechaMovimiento DESC,
|
||||
C.CveBitacora DESC
|
||||
OFFSET @RegistrosOmitidos ROWS
|
||||
FETCH NEXT @RegistrosPorPagina ROWS ONLY;
|
||||
|
||||
SELECT @TotalRegistros AS TotalRegistros;
|
||||
|
||||
SELECT
|
||||
B.CveBitacora,
|
||||
B.CveTabla,
|
||||
T.NombreTablaSQL,
|
||||
T.NombreMostrar AS NombreTabla,
|
||||
B.CveTipoMovimiento,
|
||||
M.Nombre AS TipoMovimiento,
|
||||
B.CveDefinicionAccion,
|
||||
A.NombreAccion,
|
||||
A.DescripcionAccion,
|
||||
B.CveUsuarioEjecuta,
|
||||
B.CveUsuarioAutoriza,
|
||||
B.FechaAutorizacion,
|
||||
B.LlaveRegistro,
|
||||
B.DescripcionMovimiento,
|
||||
B.FechaMovimiento,
|
||||
B.DireccionIP,
|
||||
B.NombreEquipo,
|
||||
B.Modulo
|
||||
FROM #BitacorasPagina AS P
|
||||
INNER JOIN dbo.Bit_Bitacora AS B
|
||||
ON B.CveBitacora = P.CveBitacora
|
||||
INNER JOIN dbo.Bit_Tablas AS T
|
||||
ON T.CveTabla = B.CveTabla
|
||||
INNER JOIN dbo.Bit_TiposMovimiento AS M
|
||||
ON M.CveTipoMovimiento = B.CveTipoMovimiento
|
||||
LEFT JOIN dbo.Bit_DefinicionesAccion AS A
|
||||
ON A.CveDefinicionAccion = B.CveDefinicionAccion
|
||||
ORDER BY P.Orden;
|
||||
|
||||
SELECT
|
||||
BC.CveBitacoraCampo,
|
||||
BC.CveBitacora,
|
||||
BC.CveCampo,
|
||||
C.NombreCampoSQL,
|
||||
C.NombreMostrar,
|
||||
BC.ValorAnterior,
|
||||
BC.ValorNuevo
|
||||
FROM #BitacorasPagina AS P
|
||||
INNER JOIN dbo.Bit_BitacoraCampos AS BC
|
||||
ON BC.CveBitacora = P.CveBitacora
|
||||
INNER JOIN dbo.Bit_Campos AS C
|
||||
ON C.CveCampo = BC.CveCampo
|
||||
WHERE @EsAdministrador = 1
|
||||
OR C.MostrarEnBitacora = 1
|
||||
ORDER BY
|
||||
P.Orden,
|
||||
BC.CveBitacoraCampo;
|
||||
|
||||
SELECT
|
||||
BR.CveBitacoraRelacion,
|
||||
BR.CveBitacora,
|
||||
BR.CveTipoRelacion,
|
||||
TR.Nombre AS TipoRelacion,
|
||||
BR.CveTablaRelacionada,
|
||||
T.NombreTablaSQL,
|
||||
BR.CveCampoRelacion,
|
||||
C.NombreCampoSQL,
|
||||
BR.LlaveRegistroRelacionada,
|
||||
BR.ValorRelacionNumero,
|
||||
BR.ValorRelacionTexto,
|
||||
BR.VisibleDesarrollador,
|
||||
BR.DescripcionRelacion
|
||||
FROM #BitacorasPagina AS P
|
||||
INNER JOIN dbo.Bit_BitacoraRelaciones AS BR
|
||||
ON BR.CveBitacora = P.CveBitacora
|
||||
INNER JOIN dbo.Bit_TiposRelacion AS TR
|
||||
ON TR.CveTipoRelacion = BR.CveTipoRelacion
|
||||
INNER JOIN dbo.Bit_Tablas AS T
|
||||
ON T.CveTabla = BR.CveTablaRelacionada
|
||||
LEFT JOIN dbo.Bit_Campos AS C
|
||||
ON C.CveCampo = BR.CveCampoRelacion
|
||||
AND C.CveTabla = T.CveTabla
|
||||
WHERE @EsAdministrador = 1
|
||||
OR BR.VisibleDesarrollador = 1
|
||||
ORDER BY
|
||||
P.Orden,
|
||||
BR.CveBitacoraRelacion;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al consultar la bitácora; 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_Bit_BitacoraListByRelations'
|
||||
),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
1098
Migracion_Bitacora_Relaciones_Campos_20260722.sql
Normal file
1098
Migracion_Bitacora_Relaciones_Campos_20260722.sql
Normal file
File diff suppressed because it is too large
Load Diff
2603
Migracion_Borrado_Fisico_20260722.sql
Normal file
2603
Migracion_Borrado_Fisico_20260722.sql
Normal file
File diff suppressed because it is too large
Load Diff
703
Migracion_Collation_CS_AS_20260723.sql
Normal file
703
Migracion_Collation_CS_AS_20260723.sql
Normal file
@@ -0,0 +1,703 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SET ANSI_NULLS ON;
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
|
||||
/* Texto general: CS_AS. Codigo* e identificadores reales de usuario: CI_AS. */
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Clasificaciones] GROUP BY [Clasificacion] COLLATE Modern_Spanish_CS_AS, [Codigo] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Clasificaciones, índice UN_Clasificacion.', 1;
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Permisos] GROUP BY [CodigoPermiso] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Sis_Permisos, índice UQ_Sis_Permisos_CodigoPermiso.', 1;
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Sis_Usuarios] GROUP BY [NombreUsuario] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Sis_Usuarios, índice UQ_Sis_Usuarios_NombreUsuario.', 1;
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Tra_EstatusSolicitud] GROUP BY [Codigo] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Tra_EstatusSolicitud, índice UQ_Tra_EstatusSolicitud_Codigo.', 1;
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Tra_Preguntas] WHERE ([Codigo] IS NOT NULL) GROUP BY [Codigo] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Tra_Preguntas, índice UX_Tra_Preguntas_Codigo.', 1;
|
||||
IF EXISTS (SELECT 1 FROM [dbo].[Tra_TiposTramite] GROUP BY [Codigo] COLLATE Modern_Spanish_CI_AS HAVING COUNT_BIG(*) > 1) THROW 51000, N'La conversión genera duplicados en dbo.Tra_TiposTramite, índice UQ_Tra_TiposTramite_Codigo.', 1;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
/* Eliminar llaves foráneas */
|
||||
ALTER TABLE [dbo].[EstatusFactura] DROP CONSTRAINT [FK_EstatusFactura_Vta_TipoDocumentos];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [FK_Ventas_Vta_TipoDocumentos];
|
||||
|
||||
/* Eliminar CHECK */
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] DROP CONSTRAINT [CK_Bit_Bitacora_Autorizacion];
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] DROP CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion];
|
||||
ALTER TABLE [dbo].[Clientes] DROP CONSTRAINT [CK_Clientes_RFC_Requerido];
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] DROP CONSTRAINT [CK_Conta_Cuentas_Padre];
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] DROP CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_Concepto];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza];
|
||||
ALTER TABLE [dbo].[Fraccionamientos] DROP CONSTRAINT [CK_Fraccionamientos_Hectareas];
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] DROP CONSTRAINT [CK_FraccionamientosEtapas_Hectareas];
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] DROP CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados];
|
||||
ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_AsientoContableCompras];
|
||||
ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_AsientoContableVentas];
|
||||
ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_ProductosServicios_IVA];
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] DROP CONSTRAINT [CK_Sis_Notificaciones_Estado];
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] DROP CONSTRAINT [CK_Sis_Notificaciones_Tipo];
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] DROP CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal];
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] DROP CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] DROP CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] DROP CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] DROP CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado];
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] DROP CONSTRAINT [CK_Tra_CostosTramite_Importe];
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] DROP CONSTRAINT [CK_Tra_CostosTramite_Vigencia];
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] DROP CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano];
|
||||
ALTER TABLE [dbo].[Tra_RespuestasSolicitud] DROP CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor];
|
||||
ALTER TABLE [dbo].[Tra_SolicitudesDependencias] DROP CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes];
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] DROP CONSTRAINT [CK_Tra_TiposDocumento_Tamano];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CHK_VentasMail];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_1];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Dev_CveVentaPadre];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Moneda_TipoCambio];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Total];
|
||||
ALTER TABLE [dbo].[Vta_Pagos] DROP CONSTRAINT [CK_Vta_Pagos_Importe];
|
||||
ALTER TABLE [dbo].[Vta_Pagos] DROP CONSTRAINT [CK_Vta_Pagos_SaldoFavor];
|
||||
|
||||
/* Eliminar índices */
|
||||
ALTER TABLE [dbo].[Banc_Bancos] DROP CONSTRAINT [UN_Bancos];
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] DROP CONSTRAINT [UN_Banc_BancosCuentas];
|
||||
ALTER TABLE [dbo].[Banc_TiposCuenta] DROP CONSTRAINT [UN_BancTipoCuenta];
|
||||
DROP INDEX [IX_Bit_Bitacora_Tabla_Llave_Fecha] ON [dbo].[Bit_Bitacora];
|
||||
DROP INDEX [IX_Bit_BitacoraRelaciones_Tabla_Llave] ON [dbo].[Bit_BitacoraRelaciones];
|
||||
DROP INDEX [IX_Bit_BitacoraRelaciones_Filtro] ON [dbo].[Bit_BitacoraRelaciones];
|
||||
DROP INDEX [IX_Bit_BitacoraRelaciones_FiltroTexto] ON [dbo].[Bit_BitacoraRelaciones];
|
||||
ALTER TABLE [dbo].[Bit_Campos] DROP CONSTRAINT [UQ_Bit_Campos_Tabla_Campo];
|
||||
ALTER TABLE [dbo].[Bit_DefinicionesAccion] DROP CONSTRAINT [UQ_Bit_DefinicionesAccion];
|
||||
ALTER TABLE [dbo].[Bit_Tablas] DROP CONSTRAINT [UQ_Bit_Tablas_NombreTablaSQL];
|
||||
ALTER TABLE [dbo].[Bit_TiposMovimiento] DROP CONSTRAINT [UQ_Bit_TiposMovimiento_Nombre];
|
||||
ALTER TABLE [dbo].[Bit_TiposRelacion] DROP CONSTRAINT [UQ_Bit_TiposRelacion_Nombre];
|
||||
ALTER TABLE [dbo].[Clasificaciones] DROP CONSTRAINT [UN_Clasificacion];
|
||||
ALTER TABLE [dbo].[Conta_ConceptosContables] DROP CONSTRAINT [UN_Conta_ConceptosContables];
|
||||
ALTER TABLE [dbo].[Conta_TiposPoliza] DROP CONSTRAINT [UN_ContaTipoPoliza];
|
||||
ALTER TABLE [dbo].[Fraccionamientos] DROP CONSTRAINT [UQ_Fraccionamientos_Cliente_Nombre];
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] DROP CONSTRAINT [UQ_FraccionamientosEtapas_Fraccionamiento_Etapa];
|
||||
DROP INDEX [IX_FraccionamientosLotes_Etapa] ON [dbo].[FraccionamientosLotes];
|
||||
ALTER TABLE [dbo].[Gral_Categorias] DROP CONSTRAINT [UK_Gral_Categorias];
|
||||
ALTER TABLE [dbo].[Gral_Monedas] DROP CONSTRAINT [UN_Moneda];
|
||||
DROP INDEX [IND_Gral_SAT_Colonia_CP] ON [dbo].[Gral_SAT_Colonia];
|
||||
DROP INDEX [IX_Gral_SAT_Colonia_CP_Vigente] ON [dbo].[Gral_SAT_Colonia];
|
||||
DROP INDEX [IND_Gral_SAT_CP_ClaveSATEstado] ON [dbo].[Gral_SAT_CP];
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] DROP CONSTRAINT [UQ_Gral_SAT_CP_CP];
|
||||
DROP INDEX [IX_Gral_SAT_CP_BusquedaRegistro] ON [dbo].[Gral_SAT_CP];
|
||||
DROP INDEX [IX_Gral_SAT_Localidad_Claves_Vigente] ON [dbo].[Gral_SAT_Localidad];
|
||||
DROP INDEX [IX_Gral_SAT_Municipio_Claves_Vigente] ON [dbo].[Gral_SAT_Municipio];
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] DROP CONSTRAINT [UK_Gral_SAT_UnidadesMedida];
|
||||
ALTER TABLE [dbo].[Inv_Almacenes] DROP CONSTRAINT [UN_INV_Almacenes];
|
||||
ALTER TABLE [dbo].[Inv_TiposAlmacenes] DROP CONSTRAINT [UN_INV_TiposAlmacenes];
|
||||
ALTER TABLE [dbo].[Proyectos] DROP CONSTRAINT [UN_Proyectos];
|
||||
ALTER TABLE [dbo].[Sat_Bancos] DROP CONSTRAINT [UQ_Sat_Bancos_CveBanco];
|
||||
DROP INDEX [IX_Sis_IntentosInicioSesion_NombreUsuario_FechaCreacion] ON [dbo].[Sis_IntentosInicioSesion];
|
||||
ALTER TABLE [dbo].[Sis_Permisos] DROP CONSTRAINT [UQ_Sis_Permisos_CodigoPermiso];
|
||||
ALTER TABLE [dbo].[Sis_Plataformas] DROP CONSTRAINT [UQ_Sis_Plataformas_NombrePlataforma];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] DROP CONSTRAINT [PK_Sis_PoliticasLimpieza];
|
||||
ALTER TABLE [dbo].[Sis_Roles] DROP CONSTRAINT [UQ_Sis_Roles_NombreRol];
|
||||
ALTER TABLE [dbo].[Sis_Usuarios] DROP CONSTRAINT [UQ_Sis_Usuarios_NombreUsuario];
|
||||
DROP INDEX [UQ_Sis_Usuarios_CorreoElectronico] ON [dbo].[Sis_Usuarios];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] DROP CONSTRAINT [UQ_Sis_UsuariosSesiones_TokenSesion];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosVerificacionesCorreo] DROP CONSTRAINT [UQ_Sis_UsuariosVerificacionesCorreo_HashToken];
|
||||
ALTER TABLE [dbo].[SubProyectos] DROP CONSTRAINT [UN_SubProyectos];
|
||||
ALTER TABLE [dbo].[Tra_EstatusSolicitud] DROP CONSTRAINT [UQ_Tra_EstatusSolicitud_Codigo];
|
||||
ALTER TABLE [dbo].[Tra_OpcionesPregunta] DROP CONSTRAINT [UQ_Tra_OpcionesPregunta_Pregunta_Texto];
|
||||
DROP INDEX [UX_Tra_Preguntas_Codigo] ON [dbo].[Tra_Preguntas];
|
||||
ALTER TABLE [dbo].[Tra_Solicitudes] DROP CONSTRAINT [UQ_Tra_Solicitudes_Folio];
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] DROP CONSTRAINT [UQ_Tra_TiposDocumento_Nombre];
|
||||
ALTER TABLE [dbo].[Tra_TiposTramite] DROP CONSTRAINT [UQ_Tra_TiposTramite_Codigo];
|
||||
ALTER TABLE [dbo].[UnidadesMedida] DROP CONSTRAINT [UN_UnidadesMedida];
|
||||
ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [UK_Ventas_TipoDocto_Serie_Folio_CveSubProyecto];
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] DROP CONSTRAINT [UN_Vta_ClientesSucursales];
|
||||
ALTER TABLE [dbo].[Vta_TipoDocumentos] DROP CONSTRAINT [PK_Vta_TipoDocumentos];
|
||||
|
||||
/* Eliminar estadísticas */
|
||||
DROP STATISTICS [dbo].[Bit_Bitacora].[_WA_Sys_00000008_1590259A];
|
||||
DROP STATISTICS [dbo].[Bit_Bitacora].[_WA_Sys_0000000D_1590259A];
|
||||
DROP STATISTICS [dbo].[Bit_Campos].[_WA_Sys_00000003_0559BDD1];
|
||||
DROP STATISTICS [dbo].[Bit_Campos].[_WA_Sys_00000009_0559BDD1];
|
||||
DROP STATISTICS [dbo].[Clientes].[_WA_Sys_00000013_3D2915A8];
|
||||
DROP STATISTICS [dbo].[Fraccionamientos].[_WA_Sys_00000003_3BCADD1B];
|
||||
DROP STATISTICS [dbo].[Fraccionamientos].[_WA_Sys_00000005_3BCADD1B];
|
||||
DROP STATISTICS [dbo].[Fraccionamientos_Estatus].[_WA_Sys_00000002_50E5F592];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_CP].[_WA_Sys_00000003_2CA8951C];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_CP].[_WA_Sys_00000004_2CA8951C];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Estado].[_WA_Sys_00000002_6225902D];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Estado].[_WA_Sys_00000003_6225902D];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Localidad].[_WA_Sys_00000002_603D47BB];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Localidad].[_WA_Sys_00000003_603D47BB];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Municipio].[_WA_Sys_00000002_2D9CB955];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Municipio].[_WA_Sys_00000003_2D9CB955];
|
||||
DROP STATISTICS [dbo].[Gral_SAT_Pais].[_WA_Sys_00000002_32616E72];
|
||||
DROP STATISTICS [dbo].[Sis_Modulos].[_WA_Sys_00000004_4BAC3F29];
|
||||
DROP STATISTICS [dbo].[Sis_Modulos].[_WA_Sys_00000006_4BAC3F29];
|
||||
DROP STATISTICS [dbo].[Sis_Usuarios].[_WA_Sys_00000004_440B1D61];
|
||||
|
||||
/* Eliminar columnas calculadas */
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] DROP COLUMN [AnioMes];
|
||||
ALTER TABLE [dbo].[ProductosServicios] DROP COLUMN [CodigoPS];
|
||||
ALTER TABLE [dbo].[Ventas] DROP COLUMN [SerieFolio];
|
||||
|
||||
/* Alterar columnas */
|
||||
ALTER TABLE [dbo].[Banc_Bancos] ALTER COLUMN [Banco] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Banc_Bancos] ALTER COLUMN [Ejecutivo] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_Bancos] ALTER COLUMN [Telefono] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [NumCuenta] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [CLABE] [varchar](18) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [FormatoCheque] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [ConvenioPagoElectronico] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [PrefijoConta] [varchar](2) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [ConvenioPagoElectronicoGrupos] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [NumeroSucursal] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ALTER COLUMN [ConvenioPagoElectronicoNomina] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Banc_TiposCuenta] ALTER COLUMN [TipoCuenta] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] ALTER COLUMN [LlaveRegistro] [nvarchar](250) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] ALTER COLUMN [DescripcionMovimiento] [nvarchar](1000) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] ALTER COLUMN [DireccionIP] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] ALTER COLUMN [NombreEquipo] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] ALTER COLUMN [Modulo] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_BitacoraCampos] ALTER COLUMN [ValorAnterior] [nvarchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_BitacoraCampos] ALTER COLUMN [ValorNuevo] [nvarchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] ALTER COLUMN [LlaveRegistroRelacionada] [nvarchar](250) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] ALTER COLUMN [ValorRelacionTexto] [nvarchar](250) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] ALTER COLUMN [DescripcionRelacion] [nvarchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_Campos] ALTER COLUMN [NombreCampoSQL] [varchar](128) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Campos] ALTER COLUMN [NombreMostrar] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Campos] ALTER COLUMN [TipoDatoSQL] [varchar](128) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_DefinicionesAccion] ALTER COLUMN [NombreAccion] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_DefinicionesAccion] ALTER COLUMN [DescripcionAccion] [varchar](500) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Tablas] ALTER COLUMN [NombreTablaSQL] [varchar](128) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Tablas] ALTER COLUMN [NombreMostrar] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_Tablas] ALTER COLUMN [Descripcion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_Tablas] ALTER COLUMN [NombreCampoLlaveSQL] [varchar](128) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_TiposMovimiento] ALTER COLUMN [Nombre] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_TiposMovimiento] ALTER COLUMN [Descripcion] [varchar](250) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Bit_TiposRelacion] ALTER COLUMN [Nombre] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Bit_TiposRelacion] ALTER COLUMN [Descripcion] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clasificaciones] ALTER COLUMN [Codigo] [varchar](20) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Clasificaciones] ALTER COLUMN [Clasificacion] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Nombre] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Codigo] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NombreCorto] [varchar](30) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NombreComercial] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ApellidoPaterno] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ApellidoMaterno] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Nombres] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Sucursal] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Direccion] [varchar](90) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NoExt] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NoInt] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Colonia] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Localidad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Ciudad] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Estado] [varchar](35) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Pais] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [RFC] [varchar](15) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CP] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Telefono] [varchar](25) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [TelefonoExtension] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [TelefonoOtros] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Contacto] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Mail] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Pagina] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Giro] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NotificarA] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ConvenioCIE] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [RecepcionPagos] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [TipoPago] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Vendedor] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Tipo] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [FormaFacturacion] [varchar](13) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NumCtaPago] [varchar](30) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [FEMSA_NumSociedad] [varchar](4) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [FEMSA_NumProveedor] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [FEMSA_Mail] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Detallista_GLNComprador] [varchar](18) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Detallista_Departamento] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Detallista_GLNVendedor] [varchar](18) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Detallista_NumProveedor] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [SevenEleven_NumProveedor] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Ford_GSDB] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [MailCotizacion] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CobranzaContacto] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CobranzaTelefono] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CobranzaExt] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CobranzaCorreo] [varchar](2000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Horario] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Documentacion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [PortalFacturacion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [DiasPago] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [UsuarioPortal] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [PasswordPortal] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [DiasRevision] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ObservacionRevision] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ReferenciaFiscal] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Celular] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ExtOtros] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [NumRegIdTrib] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtEstado] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtMunicipio] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtColonia] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CorreoEntregaCompras] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CorreoEntregaAlmacen] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [Punto] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CorreoCumplimiento] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [RegimenSociedad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [RepresentanteLegal] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtCalle] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtNumExt] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [ComExtCP] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [CreditoRegistroFirmas] [varchar](250) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Clientes] ALTER COLUMN [VentasComplementos] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_CodigosAgrupadoresSAT] ALTER COLUMN [Codigo] [nvarchar](20) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_CodigosAgrupadoresSAT] ALTER COLUMN [Nombre] [nvarchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_CodigosAgrupadoresSAT] ALTER COLUMN [Tipo] [nvarchar](1) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_ConceptosContables] ALTER COLUMN [Tipo] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_ConceptosContables] ALTER COLUMN [ConceptoContable] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] ALTER COLUMN [Codigo] [varchar](50) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] ALTER COLUMN [Nombre] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] ALTER COLUMN [NomIdioma] [varchar](250) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] ALTER COLUMN [CodigoVinculacion] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] ALTER COLUMN [CodigoAgrupacion] [varchar](100) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_PlantillasPolizas] ALTER COLUMN [PlantillaPoliza] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] ALTER COLUMN [Modulo] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] ALTER COLUMN [Concepto] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] ALTER COLUMN [NumeroPoliza] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] ALTER COLUMN [CodigoNumeroPoliza] [varchar](5) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizasDetalle] ALTER COLUMN [Referencia] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Conta_PrePolizasDetalle] ALTER COLUMN [Concepto] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Conta_TiposPoliza] ALTER COLUMN [TipoPoliza] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[EstatusFactura] ALTER COLUMN [EstatusFactura] [varchar](30) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[EstatusFactura] ALTER COLUMN [TipoDocto] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Fraccionamientos] ALTER COLUMN [Fraccionamiento] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Fraccionamientos] ALTER COLUMN [Ubicacion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Fraccionamientos_Estatus] ALTER COLUMN [Estatus] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] ALTER COLUMN [Etapa] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] ALTER COLUMN [Tipo] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] ALTER COLUMN [Calle] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] ALTER COLUMN [Catastro] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] ALTER COLUMN [Numero] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] ALTER COLUMN [Duplicador] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_Categorias] ALTER COLUMN [Categoria] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [Moneda] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [Abreviatura] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [AbreviaturaSAT] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [LayoutBBVA] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [Alias1] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [Alias2] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ALTER COLUMN [Alias3] [varchar](30) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_RegimenesFiscales] ALTER COLUMN [RegimenFiscal] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_RegimenesFiscales] ALTER COLUMN [CodigoRegimenFiscal] [varchar](3) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Colonia] ALTER COLUMN [ClaveSATColonia] [varchar](10) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Colonia] ALTER COLUMN [CP] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Colonia] ALTER COLUMN [NombreAsentamiento] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] ALTER COLUMN [CP] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] ALTER COLUMN [ClaveSATEstado] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] ALTER COLUMN [ClaveSATMunicipio] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] ALTER COLUMN [ClaveSATLocalidad] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [ClaveMaterialPeligroso] [varchar](10) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [MaterialPeligroso] [varchar](390) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [ClaseoDiv] [varchar](8) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [PeligroSecundario] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [NombreTecnico] [varchar](400) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP_MaterialPeligroso] ALTER COLUMN [Version] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Estado] ALTER COLUMN [ClaveSATEstado] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Estado] ALTER COLUMN [ClaveSATPais] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Estado] ALTER COLUMN [NombreEstado] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Estado] ALTER COLUMN [ClaveImpuestoEstado] [varchar](2) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Localidad] ALTER COLUMN [ClaveSATLocalidad] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Localidad] ALTER COLUMN [ClaveSATEstado] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Localidad] ALTER COLUMN [NombreLocalidad] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Municipio] ALTER COLUMN [ClaveSATMunicipio] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Municipio] ALTER COLUMN [ClaveSATEstado] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Municipio] ALTER COLUMN [Descripcion] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ObjetoImpuesto] ALTER COLUMN [ObjetoImpuesto] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ObjetoImpuesto] ALTER COLUMN [CodigoObjetoImpuesto] [varchar](2) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [ClaveSATPais] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [Descripcion] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [FormatoCP] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [FormatoIT] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [ValidacionIT] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [Agrupaciones] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_Pais] ALTER COLUMN [DIOTPais] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [SATClavePS] [nvarchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [Descripcion] [nvarchar](600) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [IncluirIVAtrasladado] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [IncluirIEPStrasladado] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [ComplementoIncluir] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [PalabrasSimilares] [varchar](600) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_ProductosServicios] ALTER COLUMN [MaterialPeligroso] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] ALTER COLUMN [SATClaveUnidadMedida] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] ALTER COLUMN [Nombre] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] ALTER COLUMN [Descripcion] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] ALTER COLUMN [Simbolo] [nvarchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UsosCFDI] ALTER COLUMN [UsoCFDI] [varchar](5) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UsosCFDI] ALTER COLUMN [Descripcion] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Gral_SAT_UsosCFDI] ALTER COLUMN [RegimenFiscalReceptor] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Inv_Almacenes] ALTER COLUMN [Almacen] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Inv_Almacenes] ALTER COLUMN [AlmacenAbreviatura] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Inv_TiposAlmacenes] ALTER COLUMN [TipoAlmacen] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [Codigo] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [NumeroParte] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [CodigoBarras] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [PS] [varchar](846) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [PSExtranjero] [varchar](846) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [Borrame] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [AlmacenSeccion] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [Imagen] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [ClaveImpuestoEmpaque] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [ClaveImpuestoUM] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [ClaveCategoriaToxicidad] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [ClaveImpuestoTipoProducto] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [Code17] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [Dimensiones] [varchar](25) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [RegistroRSCO] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [NombreComercial] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [NotasAdicionales] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [EcommerceEtiquetas] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [CodigoAlterno] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ALTER COLUMN [PSAlterno] [varchar](846) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Proyectos] ALTER COLUMN [Proyecto] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sat_Bancos] ALTER COLUMN [CveBanco] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sat_Bancos] ALTER COLUMN [Banco] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sat_Bancos] ALTER COLUMN [RazonSocial] [varchar](300) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [TipoEvento] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [NombreEntidad] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [LlaveEntidad] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [Descripcion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [DireccionIP] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [AgenteUsuario] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Auditorias] ALTER COLUMN [NombreDominio] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_AuditoriasDetalles] ALTER COLUMN [NombreCampo] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_AuditoriasDetalles] ALTER COLUMN [ValorAnterior] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_AuditoriasDetalles] ALTER COLUMN [ValorNuevo] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_IntentosInicioSesion] ALTER COLUMN [NombreUsuario] [varchar](100) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_IntentosInicioSesion] ALTER COLUMN [MotivoFallo] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_IntentosInicioSesion] ALTER COLUMN [DireccionIP] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_IntentosInicioSesion] ALTER COLUMN [AgenteUsuario] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_IntentosInicioSesion] ALTER COLUMN [NombreDominio] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Modulos] ALTER COLUMN [NombreModulo] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Modulos] ALTER COLUMN [Descripcion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Modulos] ALTER COLUMN [Url] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Modulos] ALTER COLUMN [ClaseCssIcono] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Modulos] ALTER COLUMN [ClaseCssEstilo] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] ALTER COLUMN [TipoNotificacion] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] ALTER COLUMN [EstadoNotificacion] [varchar](30) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] ALTER COLUMN [Titulo] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] ALTER COLUMN [Mensaje] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] ALTER COLUMN [Url] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] ALTER COLUMN [CanalEnvio] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] ALTER COLUMN [EstadoEnvio] [varchar](30) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] ALTER COLUMN [RespuestaProveedor] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] ALTER COLUMN [MensajeError] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_PAC] ALTER COLUMN [PAC] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Permisos] ALTER COLUMN [CodigoPermiso] [varchar](100) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Permisos] ALTER COLUMN [NombrePermiso] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Permisos] ALTER COLUMN [Descripcion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Plataformas] ALTER COLUMN [NombrePlataforma] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Plataformas] ALTER COLUMN [Descripcion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] ALTER COLUMN [Esquema] sysname COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] ALTER COLUMN [Tabla] sysname COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Roles] ALTER COLUMN [NombreRol] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Roles] ALTER COLUMN [Descripcion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_Usuarios] ALTER COLUMN [NombreUsuario] [varchar](100) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Usuarios] ALTER COLUMN [HashContrasena] [varchar](500) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_Usuarios] ALTER COLUMN [CorreoElectronico] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] ALTER COLUMN [EstadoAutorizacion] [varchar](30) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] ALTER COLUMN [ComentarioSolicitud] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] ALTER COLUMN [ComentarioAutorizacion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] ALTER COLUMN [TokenSesion] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] ALTER COLUMN [DireccionIP] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] ALTER COLUMN [AgenteUsuario] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] ALTER COLUMN [NombreDominio] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [Endpoint] [varchar](1000) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [P256DH] [varchar](500) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [ClaveAutenticacion] [varchar](500) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [AgenteUsuario] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [Plataforma] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [Navegador] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSuscripcionesPush] ALTER COLUMN [NombreDominio] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Sis_UsuariosVerificacionesCorreo] ALTER COLUMN [HashToken] [char](64) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [ClaveSubProyecto] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [SubProyecto] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [CuentaGasto] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Serie] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Calle] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [NoExt] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [NoInt] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Colonia] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Localidad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Municipio] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Pais] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [CP] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Estado] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [FormatoFactura] [varchar](25) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [TipoFormato] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Telefono] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Correo] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [CodigoSucursal] [varchar](20) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Acum_CentroServicio] [varchar](10) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Acum_PortalUsuario] [varchar](50) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[SubProyectos] ALTER COLUMN [Acum_PortalContrasena] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] ALTER COLUMN [Descripcion] [varchar](300) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [NombreArchivo] [varchar](255) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [NombreArchivoFisico] [varchar](255) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [RutaArchivo] [varchar](1000) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [ContentType] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [ComentarioCliente] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] ALTER COLUMN [ComentarioAdministrativo] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_EstatusSolicitud] ALTER COLUMN [Codigo] [varchar](50) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_EstatusSolicitud] ALTER COLUMN [EstatusSolicitud] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_HistorialEstatusSolicitud] ALTER COLUMN [Comentarios] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_NotasSolicitud] ALTER COLUMN [TipoNota] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_NotasSolicitud] ALTER COLUMN [Comentario] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_OpcionesPregunta] ALTER COLUMN [TextoOpcion] [varchar](300) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_OpcionesPregunta] ALTER COLUMN [ValorOpcion] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_Preguntas] ALTER COLUMN [Pregunta] [varchar](500) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_Preguntas] ALTER COLUMN [Descripcion] [varchar](1000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_Preguntas] ALTER COLUMN [Codigo] [varchar](20) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_RespuestasSolicitud] ALTER COLUMN [Valor] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_Solicitudes] ALTER COLUMN [Folio] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_Solicitudes] ALTER COLUMN [ComentariosCliente] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_Solicitudes] ALTER COLUMN [ComentariosAdministrativos] [varchar](MAX) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_SolicitudesDependencias] ALTER COLUMN [Condicion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] ALTER COLUMN [TipoDocumento] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] ALTER COLUMN [Descripcion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] ALTER COLUMN [ExtensionesPermitidas] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposPregunta] ALTER COLUMN [TipoPregunta] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposTramite] ALTER COLUMN [Codigo] [varchar](50) COLLATE Modern_Spanish_CI_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposTramite] ALTER COLUMN [TipoTramite] [varchar](200) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Tra_TiposTramite] ALTER COLUMN [Descripcion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [UnidadMedida] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [Abreviatura] [varchar](15) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [Alias1] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [Alias2] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [Alias3] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [Alias4] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [CveImpEmpaque] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ALTER COLUMN [CveImpUM] [varchar](3) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [FolioFiscal] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [TipoDocto] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Serie] [varchar](10) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [MotivoDescuento] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Observaciones] [varchar](2000) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [MotivoCancelacion] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Alfa1] [varchar](500) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Alfa2] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Alfa3] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [SelloCancelacion] [varchar](800) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [AtencionA] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Det_OrdenCompra] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Det_FechaOrdenCompra] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Ref] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [NumeroCuenta] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Entrega] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [TiempoEntrega] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [TelefonoGenerico] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [PedidoContrato] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [ObservacionesAlmacen] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [CobranzaObservacion] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [TipoProceso] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [TipoComite] [varchar](255) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [IdContabilidad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [OrdenCompra] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [CorreoNotificacion] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [RFCReceptor] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Adjunto] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [EstadoCancelacion] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [SelloSolicitudCancelacion] [varchar](800) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [CFDIVersion] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [LineaAdicionalComprobante] [varchar](250) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [DescripcionVenta] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Paciente] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Episodio] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [Addenda] [varchar](2000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Ventas] ALTER COLUMN [ComplementoSAT] [varchar](2000) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [SucursalCliente] [varchar](100) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Ciudad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Colonia] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [CP] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Direccion] [varchar](90) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Estado] [varchar](35) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Localidad] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Pais] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [NoExt] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [NoInt] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Telefono] [varchar](25) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Correo] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Contacto] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [CorreoCotizacion] [varchar](300) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [NumCtaPago] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [Punto] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ALTER COLUMN [RFC] [varchar](15) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_FormaPago] ALTER COLUMN [FormaPago] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_FormaPago] ALTER COLUMN [ClaveFormaPagoSAT] [varchar](2) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_MetodoPago] ALTER COLUMN [MetodoPago] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_MetodoPago] ALTER COLUMN [ClaveMetodoPagoSAT] [varchar](5) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Pagos] ALTER COLUMN [Referencia] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Procedimientos] ALTER COLUMN [Procedimiento] [varchar](150) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Vta_TipoDocumentos] ALTER COLUMN [CveTipoDocumento] [varchar](3) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Vta_TipoDocumentos] ALTER COLUMN [TipoDocumento] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [Codigo] [varchar](10) COLLATE Modern_Spanish_CI_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [Vendedor] [varchar](50) COLLATE Modern_Spanish_CS_AS NOT NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [Correo] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [Telefono] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [Celular] [varchar](50) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [TituloDocumentos] [varchar](150) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[Vta_Vendedores] ALTER COLUMN [CorreoAdicionalNotificaciones] [varchar](200) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ZonasHorarias] ALTER COLUMN [Abreviacion] [varchar](7) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ZonasHorarias] ALTER COLUMN [ZonaHoraria] [varchar](100) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
ALTER TABLE [dbo].[ZonasHorarias] ALTER COLUMN [UTC] [varchar](20) COLLATE Modern_Spanish_CS_AS NULL;
|
||||
|
||||
/* Recrear columnas calculadas */
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] ADD [AnioMes] AS ((CONVERT([varchar](6),[Fecha],(112))) COLLATE Modern_Spanish_CS_AS) PERSISTED;
|
||||
ALTER TABLE [dbo].[ProductosServicios] ADD [CodigoPS] AS ((case when len([Codigo])>(0) then concat([Codigo] COLLATE Modern_Spanish_CI_AS,' - ',[PS] COLLATE Modern_Spanish_CI_AS) else [PS] COLLATE Modern_Spanish_CI_AS end) COLLATE Modern_Spanish_CI_AS);
|
||||
ALTER TABLE [dbo].[Ventas] ADD [SerieFolio] AS ((concat(case when [Serie]<>'' then [Serie]+'-' else '' end,[Folio])) COLLATE Modern_Spanish_CS_AS);
|
||||
|
||||
/* Recrear CHECK */
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] WITH CHECK ADD CONSTRAINT [CK_Bit_Bitacora_Autorizacion] CHECK ([CveUsuarioAutoriza] IS NOT NULL OR [FechaAutorizacion] IS NULL);
|
||||
ALTER TABLE [dbo].[Bit_Bitacora] CHECK CONSTRAINT [CK_Bit_Bitacora_Autorizacion];
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] WITH CHECK ADD CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion] CHECK (NOT ([ValorRelacionNumero] IS NOT NULL AND [ValorRelacionTexto] IS NOT NULL));
|
||||
ALTER TABLE [dbo].[Bit_BitacoraRelaciones] CHECK CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion];
|
||||
ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [CK_Clientes_RFC_Requerido] CHECK ([RFC]<>'');
|
||||
ALTER TABLE [dbo].[Clientes] CHECK CONSTRAINT [CK_Clientes_RFC_Requerido];
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre] CHECK ([CveCuentaPadre]<>[CveCuenta]);
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre];
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido] CHECK ([CveCuentaPadre] IS NOT NULL OR ([Codigo]='_ORDEN' OR [Codigo]='_ESTADISTICAS' OR [Codigo]='_GLOBAL'));
|
||||
ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Concepto] CHECK (rtrim([Concepto])<>'');
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Concepto];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050] CHECK ([Fecha]>='2000-01-01' AND [Fecha]<='2050/12/31');
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050];
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza] CHECK ([IdPoliza]>(0) AND isnull([FolioPoliza],(0))>(0) OR ([IdPoliza] IS NULL OR [IdPoliza]=(0)));
|
||||
ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza];
|
||||
ALTER TABLE [dbo].[Fraccionamientos] WITH CHECK ADD CONSTRAINT [CK_Fraccionamientos_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0));
|
||||
ALTER TABLE [dbo].[Fraccionamientos] CHECK CONSTRAINT [CK_Fraccionamientos_Hectareas];
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosEtapas_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0));
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] CHECK CONSTRAINT [CK_FraccionamientosEtapas_Hectareas];
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados] CHECK ([MetrosCuadrados] IS NULL OR [MetrosCuadrados]>=(0));
|
||||
ALTER TABLE [dbo].[FraccionamientosLotes] CHECK CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados];
|
||||
ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableCompras] CHECK ([AsientoContableCompras]=(3) OR [AsientoContableCompras]=(2) OR [AsientoContableCompras]=(1));
|
||||
ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableCompras];
|
||||
ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableVentas] CHECK ([AsientoContableVentas]=(2) OR [AsientoContableVentas]=(1));
|
||||
ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableVentas];
|
||||
ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_ProductosServicios_IVA] CHECK ([IVA]=(-1) OR [IVA]=(0) OR [IVA] IS NULL);
|
||||
ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_ProductosServicios_IVA];
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Estado] CHECK ([EstadoNotificacion]='Cancelada' OR [EstadoNotificacion]='Fallida' OR [EstadoNotificacion]='Enviada' OR [EstadoNotificacion]='Pendiente');
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Estado];
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Tipo] CHECK ([TipoNotificacion]='Campana' OR [TipoNotificacion]='Push' OR [TipoNotificacion]='Correo' OR [TipoNotificacion]='SignalR' OR [TipoNotificacion]='WhatsApp' OR [TipoNotificacion]='Local');
|
||||
ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Tipo];
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal] CHECK ([CanalEnvio]='Campana' OR [CanalEnvio]='Push' OR [CanalEnvio]='Correo' OR [CanalEnvio]='SignalR' OR [CanalEnvio]='WhatsApp' OR [CanalEnvio]='Local');
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal];
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado] CHECK ([EstadoEnvio]='Cancelado' OR [EstadoEnvio]='Fallido' OR [EstadoEnvio]='Enviado' OR [EstadoEnvio]='Pendiente');
|
||||
ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion] CHECK ([DiasRetencion]>=(30) AND [DiasRetencion]<=(3650));
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote] CHECK ([TamanoLote]>=(1) AND [TamanoLote]<=(10000));
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado] CHECK ([EstadoAutorizacion]='Cancelada' OR [EstadoAutorizacion]='Rechazada' OR [EstadoAutorizacion]='Aprobada' OR [EstadoAutorizacion]='Pendiente');
|
||||
ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] CHECK CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado];
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Importe] CHECK ([Importe]>=(0));
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Importe];
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Vigencia] CHECK ([FechaFinVigencia] IS NULL OR [FechaInicioVigencia] IS NULL OR [FechaFinVigencia]>=[FechaInicioVigencia]);
|
||||
ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Vigencia];
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano] CHECK ([TamanoBytes] IS NULL OR [TamanoBytes]>=(0));
|
||||
ALTER TABLE [dbo].[Tra_DocumentosSolicitud] CHECK CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano];
|
||||
ALTER TABLE [dbo].[Tra_RespuestasSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor] CHECK ([CveOpcionPregunta] IS NOT NULL OR [Valor] IS NOT NULL);
|
||||
ALTER TABLE [dbo].[Tra_RespuestasSolicitud] CHECK CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor];
|
||||
ALTER TABLE [dbo].[Tra_SolicitudesDependencias] WITH CHECK ADD CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes] CHECK ([CveSolicitud]<>[CveSolicitudRequerida]);
|
||||
ALTER TABLE [dbo].[Tra_SolicitudesDependencias] CHECK CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes];
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] WITH CHECK ADD CONSTRAINT [CK_Tra_TiposDocumento_Tamano] CHECK ([TamanoMaximoMb] IS NULL OR [TamanoMaximoMb]>(0));
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] CHECK CONSTRAINT [CK_Tra_TiposDocumento_Tamano];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CHK_VentasMail] CHECK ([EnvioMail]=(3) OR [EnvioMail]=(2) OR [EnvioMail]=(1) OR [EnvioMail]=(0));
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CHK_VentasMail];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas] CHECK ([TipoDocto]='Egs' OR [TipoDocto]='Dev' OR [TipoDocto]='Ing' OR [TipoDocto]='Cot' OR [TipoDocto]='Rem' OR [TipoDocto]='Ped' OR [TipoDocto]='DPe' OR [TipoDocto]='Com' OR [TipoDocto]='OP' OR [TipoDocto]='Nom' OR [TipoDocto]='Ant' OR [TipoDocto]='PeC' OR [TipoDocto]='Pd2' OR [TipoDocto]='PA' OR [TipoDocto]='RNC' OR [TipoDocto]='Rmm');
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_1] CHECK ([CveCliente]>(0));
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_1];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Dev_CveVentaPadre] CHECK ([TipoDocto]='Dev' AND [CveVentaPadre]>(0) OR [TipoDocto]<>'Dev');
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Dev_CveVentaPadre];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax] CHECK ([FechaEjecucion]>'1900-01-01' AND [FechaEjecucion]<'2900-12-31');
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Moneda_TipoCambio] CHECK ([CveMoneda]>=(2) AND [TipoCambio]>=(10) OR [CveMoneda]=(1) AND [TipoCambio]=(1));
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Moneda_TipoCambio];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo] CHECK ([CveAlmacenTraspasoDestino]<>(172) AND [CveVenta]>(1012251) OR [CveVenta]<=(1012251));
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Total] CHECK (datepart(year,[Fecha])>=(2018) AND abs(round([Total],(2))-round(((((((isnull([SubTotal],(0))+isnull([IVA],(0)))+isnull([IEPS],(0)))-isnull([Amortizacion],(0)))-isnull([RetIVA],(0)))-isnull([RetISR],(0)))-isnull([Descuento],(0)))-isnull([ImpuestoLocal],(0)),(2)))<(200.02) OR datepart(year,[Fecha])<(2018));
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Total];
|
||||
ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_Importe] CHECK ([Importe]>(0));
|
||||
ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_Importe];
|
||||
ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_SaldoFavor] CHECK ([EsSaldoFavor]=(0) OR [CveSolicitud] IS NULL);
|
||||
ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_SaldoFavor];
|
||||
|
||||
/* Recrear índices */
|
||||
ALTER TABLE [dbo].[Banc_Bancos] ADD CONSTRAINT [UN_Bancos] UNIQUE NONCLUSTERED ([Banco] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Banc_BancosCuentas] ADD CONSTRAINT [UN_Banc_BancosCuentas] UNIQUE NONCLUSTERED ([CveBanco] ASC, [NumCuenta] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Banc_TiposCuenta] ADD CONSTRAINT [UN_BancTipoCuenta] UNIQUE NONCLUSTERED ([TipoCuenta] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Bit_Bitacora_Tabla_Llave_Fecha] ON [dbo].[Bit_Bitacora] ([CveTabla] ASC, [LlaveRegistro] ASC, [FechaMovimiento] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Bit_BitacoraRelaciones_Tabla_Llave] ON [dbo].[Bit_BitacoraRelaciones] ([CveTablaRelacionada] ASC, [LlaveRegistroRelacionada] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Bit_BitacoraRelaciones_Filtro] ON [dbo].[Bit_BitacoraRelaciones] ([CveTablaRelacionada] ASC, [CveCampoRelacion] ASC, [ValorRelacionNumero] ASC, [VisibleDesarrollador] ASC, [CveBitacora] ASC) INCLUDE ([ValorRelacionTexto], [LlaveRegistroRelacionada]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Bit_BitacoraRelaciones_FiltroTexto] ON [dbo].[Bit_BitacoraRelaciones] ([CveTablaRelacionada] ASC, [CveCampoRelacion] ASC, [ValorRelacionTexto] ASC, [VisibleDesarrollador] ASC, [CveBitacora] ASC) INCLUDE ([ValorRelacionNumero], [LlaveRegistroRelacionada]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Bit_Campos] ADD CONSTRAINT [UQ_Bit_Campos_Tabla_Campo] UNIQUE NONCLUSTERED ([CveTabla] ASC, [NombreCampoSQL] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Bit_DefinicionesAccion] ADD CONSTRAINT [UQ_Bit_DefinicionesAccion] UNIQUE NONCLUSTERED ([CveTabla] ASC, [CveTipoMovimiento] ASC, [NombreAccion] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Bit_Tablas] ADD CONSTRAINT [UQ_Bit_Tablas_NombreTablaSQL] UNIQUE NONCLUSTERED ([NombreTablaSQL] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Bit_TiposMovimiento] ADD CONSTRAINT [UQ_Bit_TiposMovimiento_Nombre] UNIQUE NONCLUSTERED ([Nombre] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Bit_TiposRelacion] ADD CONSTRAINT [UQ_Bit_TiposRelacion_Nombre] UNIQUE NONCLUSTERED ([Nombre] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Clasificaciones] ADD CONSTRAINT [UN_Clasificacion] UNIQUE NONCLUSTERED ([Clasificacion] ASC, [Codigo] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Conta_ConceptosContables] ADD CONSTRAINT [UN_Conta_ConceptosContables] UNIQUE NONCLUSTERED ([ConceptoContable] ASC, [Tipo] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Conta_TiposPoliza] ADD CONSTRAINT [UN_ContaTipoPoliza] UNIQUE NONCLUSTERED ([TipoPoliza] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Fraccionamientos] ADD CONSTRAINT [UQ_Fraccionamientos_Cliente_Nombre] UNIQUE NONCLUSTERED ([CveCliente] ASC, [Fraccionamiento] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[FraccionamientosEtapas] ADD CONSTRAINT [UQ_FraccionamientosEtapas_Fraccionamiento_Etapa] UNIQUE NONCLUSTERED ([CveFraccionamiento] ASC, [Etapa] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_FraccionamientosLotes_Etapa] ON [dbo].[FraccionamientosLotes] ([CveFraccionamientoEtapa] ASC) INCLUDE ([Numero], [Tipo], [Calle], [Catastro], [MetrosCuadrados], [Duplicador], [EsActivo]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Gral_Categorias] ADD CONSTRAINT [UK_Gral_Categorias] UNIQUE NONCLUSTERED ([Categoria] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Gral_Monedas] ADD CONSTRAINT [UN_Moneda] UNIQUE NONCLUSTERED ([Moneda] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IND_Gral_SAT_Colonia_CP] ON [dbo].[Gral_SAT_Colonia] ([CP] ASC) INCLUDE ([CveColonia], [ClaveSATColonia], [NombreAsentamiento]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Colonia_CP_Vigente] ON [dbo].[Gral_SAT_Colonia] ([CP] ASC) INCLUDE ([CveColonia], [ClaveSATColonia], [NombreAsentamiento]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IND_Gral_SAT_CP_ClaveSATEstado] ON [dbo].[Gral_SAT_CP] ([CP] ASC) INCLUDE ([ClaveSATEstado]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Gral_SAT_CP] ADD CONSTRAINT [UQ_Gral_SAT_CP_CP] UNIQUE NONCLUSTERED ([CP] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_CP_BusquedaRegistro] ON [dbo].[Gral_SAT_CP] ([CP] ASC) INCLUDE ([CveCP], [ClaveSATEstado], [ClaveSATMunicipio], [ClaveSATLocalidad]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Localidad_Claves_Vigente] ON [dbo].[Gral_SAT_Localidad] ([ClaveSATEstado] ASC, [ClaveSATLocalidad] ASC) INCLUDE ([CveLocalidad], [NombreLocalidad]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Gral_SAT_Municipio_Claves_Vigente] ON [dbo].[Gral_SAT_Municipio] ([ClaveSATEstado] ASC, [ClaveSATMunicipio] ASC) INCLUDE ([CveMunicipio], [Descripcion]) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Gral_SAT_UnidadesMedida] ADD CONSTRAINT [UK_Gral_SAT_UnidadesMedida] UNIQUE NONCLUSTERED ([SATClaveUnidadMedida] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Inv_Almacenes] ADD CONSTRAINT [UN_INV_Almacenes] UNIQUE NONCLUSTERED ([Almacen] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Inv_TiposAlmacenes] ADD CONSTRAINT [UN_INV_TiposAlmacenes] UNIQUE NONCLUSTERED ([TipoAlmacen] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Proyectos] ADD CONSTRAINT [UN_Proyectos] UNIQUE NONCLUSTERED ([Proyecto] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sat_Bancos] ADD CONSTRAINT [UQ_Sat_Bancos_CveBanco] UNIQUE NONCLUSTERED ([CveBanco] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE NONCLUSTERED INDEX [IX_Sis_IntentosInicioSesion_NombreUsuario_FechaCreacion] ON [dbo].[Sis_IntentosInicioSesion] ([NombreUsuario] ASC, [FechaCreacion] DESC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_Permisos] ADD CONSTRAINT [UQ_Sis_Permisos_CodigoPermiso] UNIQUE NONCLUSTERED ([CodigoPermiso] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_Plataformas] ADD CONSTRAINT [UQ_Sis_Plataformas_NombrePlataforma] UNIQUE NONCLUSTERED ([NombrePlataforma] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_PoliticasLimpieza] ADD CONSTRAINT [PK_Sis_PoliticasLimpieza] PRIMARY KEY CLUSTERED ([Esquema] ASC, [Tabla] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_Roles] ADD CONSTRAINT [UQ_Sis_Roles_NombreRol] UNIQUE NONCLUSTERED ([NombreRol] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_Usuarios] ADD CONSTRAINT [UQ_Sis_Usuarios_NombreUsuario] UNIQUE NONCLUSTERED ([NombreUsuario] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE UNIQUE NONCLUSTERED INDEX [UQ_Sis_Usuarios_CorreoElectronico] ON [dbo].[Sis_Usuarios] ([CorreoElectronico] ASC) WHERE ([CorreoElectronico] IS NOT NULL) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosSesiones] ADD CONSTRAINT [UQ_Sis_UsuariosSesiones_TokenSesion] UNIQUE NONCLUSTERED ([TokenSesion] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Sis_UsuariosVerificacionesCorreo] ADD CONSTRAINT [UQ_Sis_UsuariosVerificacionesCorreo_HashToken] UNIQUE NONCLUSTERED ([HashToken] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[SubProyectos] ADD CONSTRAINT [UN_SubProyectos] UNIQUE NONCLUSTERED ([CveProyecto] ASC, [SubProyecto] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Tra_EstatusSolicitud] ADD CONSTRAINT [UQ_Tra_EstatusSolicitud_Codigo] UNIQUE NONCLUSTERED ([Codigo] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Tra_OpcionesPregunta] ADD CONSTRAINT [UQ_Tra_OpcionesPregunta_Pregunta_Texto] UNIQUE NONCLUSTERED ([CvePregunta] ASC, [TextoOpcion] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
CREATE UNIQUE NONCLUSTERED INDEX [UX_Tra_Preguntas_Codigo] ON [dbo].[Tra_Preguntas] ([Codigo] ASC) WHERE ([Codigo] IS NOT NULL) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Tra_Solicitudes] ADD CONSTRAINT [UQ_Tra_Solicitudes_Folio] UNIQUE NONCLUSTERED ([Folio] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Tra_TiposDocumento] ADD CONSTRAINT [UQ_Tra_TiposDocumento_Nombre] UNIQUE NONCLUSTERED ([TipoDocumento] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Tra_TiposTramite] ADD CONSTRAINT [UQ_Tra_TiposTramite_Codigo] UNIQUE NONCLUSTERED ([Codigo] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[UnidadesMedida] ADD CONSTRAINT [UN_UnidadesMedida] UNIQUE NONCLUSTERED ([Abreviatura] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Ventas] ADD CONSTRAINT [UK_Ventas_TipoDocto_Serie_Folio_CveSubProyecto] UNIQUE NONCLUSTERED ([CveSubProyecto] ASC, [TipoDocto] ASC, [Serie] ASC, [Folio] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Vta_ClientesSucursales] ADD CONSTRAINT [UN_Vta_ClientesSucursales] UNIQUE NONCLUSTERED ([CveCliente] ASC, [SucursalCliente] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
ALTER TABLE [dbo].[Vta_TipoDocumentos] ADD CONSTRAINT [PK_Vta_TipoDocumentos] PRIMARY KEY CLUSTERED ([CveTipoDocumento] ASC) WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];
|
||||
|
||||
/* Recrear estadísticas */
|
||||
|
||||
/* Recrear llaves foráneas */
|
||||
ALTER TABLE [dbo].[EstatusFactura] WITH CHECK ADD CONSTRAINT [FK_EstatusFactura_Vta_TipoDocumentos] FOREIGN KEY ([TipoDocto]) REFERENCES [dbo].[Vta_TipoDocumentos] ([CveTipoDocumento]);
|
||||
ALTER TABLE [dbo].[EstatusFactura] CHECK CONSTRAINT [FK_EstatusFactura_Vta_TipoDocumentos];
|
||||
ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [FK_Ventas_Vta_TipoDocumentos] FOREIGN KEY ([TipoDocto]) REFERENCES [dbo].[Vta_TipoDocumentos] ([CveTipoDocumento]);
|
||||
ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [FK_Ventas_Vta_TipoDocumentos];
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF XACT_STATE() <> 0 ROLLBACK TRANSACTION;
|
||||
THROW;
|
||||
END CATCH;
|
||||
GO
|
||||
|
||||
/* Después ejecute Migracion_Collation_Default_CS_AS_Dependencias_20260723.sql. */
|
||||
177
Migracion_Collation_Default_CS_AS_Dependencias_20260723.sql
Normal file
177
Migracion_Collation_Default_CS_AS_Dependencias_20260723.sql
Normal file
@@ -0,0 +1,177 @@
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
USE [master];
|
||||
ALTER DATABASE [SIG_PlataformaDesarolladores] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
|
||||
BEGIN TRY
|
||||
USE [SIG_PlataformaDesarolladores];
|
||||
/* Retirar dependencias del COLLATE predeterminado. */
|
||||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_UsuariosClientes') AND name=N'UX_Sis_UsuariosClientes_Usuario_Orden') DROP INDEX [UX_Sis_UsuariosClientes_Usuario_Orden] ON [dbo].[Sis_UsuariosClientes];
|
||||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_Usuarios') AND name=N'UQ_Sis_Usuarios_CorreoElectronico') DROP INDEX [UQ_Sis_Usuarios_CorreoElectronico] ON [dbo].[Sis_Usuarios];
|
||||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Tra_Preguntas') AND name=N'UX_Tra_Preguntas_Codigo') DROP INDEX [UX_Tra_Preguntas_Codigo] ON [dbo].[Tra_Preguntas];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_DocumentosSolicitud_Tamano', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_DocumentosSolicitud] DROP CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Canal', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_NotificacionesEnvios] DROP CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Estado', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_NotificacionesEnvios] DROP CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_RespuestasSolicitud_Valor', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_RespuestasSolicitud] DROP CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosClientes_Orden', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_UsuariosClientes] DROP CONSTRAINT [CK_Sis_UsuariosClientes_Orden];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Importe', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_CostosTramite] DROP CONSTRAINT [CK_Tra_CostosTramite_Importe];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Vigencia', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_CostosTramite] DROP CONSTRAINT [CK_Tra_CostosTramite_Vigencia];
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_Bitacora_Autorizacion', N'C') IS NOT NULL ALTER TABLE [dbo].[Bit_Bitacora] DROP CONSTRAINT [CK_Bit_Bitacora_Autorizacion];
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_FondoInicial', N'C') IS NOT NULL ALTER TABLE [dbo].[VentasDetalle] DROP CONSTRAINT [CK_VentasDetalle_FondoInicial];
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_Importes', N'C') IS NOT NULL ALTER TABLE [dbo].[VentasDetalle] DROP CONSTRAINT [CK_VentasDetalle_Importes];
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_Importe', N'C') IS NOT NULL ALTER TABLE [dbo].[Vta_Pagos] DROP CONSTRAINT [CK_Vta_Pagos_Importe];
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_SaldoFavor', N'C') IS NOT NULL ALTER TABLE [dbo].[Vta_Pagos] DROP CONSTRAINT [CK_Vta_Pagos_SaldoFavor];
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_BitacoraRelaciones_ValorRelacion', N'C') IS NOT NULL ALTER TABLE [dbo].[Bit_BitacoraRelaciones] DROP CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion];
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_AplicacionesSaldoFavor_Importe', N'C') IS NOT NULL ALTER TABLE [dbo].[Vta_AplicacionesSaldoFavor] DROP CONSTRAINT [CK_Vta_AplicacionesSaldoFavor_Importe];
|
||||
IF OBJECT_ID(N'dbo.CHK_VentasMail', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CHK_VentasMail];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_1', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_1];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Dev_CveVentaPadre', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Dev_CveVentaPadre];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_FechaEjecucion_MinMax', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Moneda_TipoCambio', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Moneda_TipoCambio];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_TMp_AlmacenInactivo', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo];
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Total', N'C') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP CONSTRAINT [CK_Ventas_Total];
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre', N'C') IS NOT NULL ALTER TABLE [dbo].[Conta_Cuentas] DROP CONSTRAINT [CK_Conta_Cuentas_Padre];
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre_Requerido', N'C') IS NOT NULL ALTER TABLE [dbo].[Conta_Cuentas] DROP CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido];
|
||||
IF OBJECT_ID(N'dbo.CK_Fraccionamientos_Hectareas', N'C') IS NOT NULL ALTER TABLE [dbo].[Fraccionamientos] DROP CONSTRAINT [CK_Fraccionamientos_Hectareas];
|
||||
IF OBJECT_ID(N'dbo.CK_Clientes_RFC_Requerido', N'C') IS NOT NULL ALTER TABLE [dbo].[Clientes] DROP CONSTRAINT [CK_Clientes_RFC_Requerido];
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosEtapas_Hectareas', N'C') IS NOT NULL ALTER TABLE [dbo].[FraccionamientosEtapas] DROP CONSTRAINT [CK_FraccionamientosEtapas_Hectareas];
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosLotes_MetrosCuadrados', N'C') IS NOT NULL ALTER TABLE [dbo].[FraccionamientosLotes] DROP CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_TiposDocumento_Tamano', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_TiposDocumento] DROP CONSTRAINT [CK_Tra_TiposDocumento_Tamano];
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Concepto', N'C') IS NOT NULL ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_Concepto];
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Fecha_2000_2050', N'C') IS NOT NULL ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050];
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_FolioPoliza', N'C') IS NOT NULL ALTER TABLE [dbo].[Conta_PrePolizas] DROP CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_DiasRetencion', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_PoliticasLimpieza] DROP CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_TamanoLote', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_PoliticasLimpieza] DROP CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosAutorizaciones_Estado', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] DROP CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado];
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_SolicitudesDependencias_Diferentes', N'C') IS NOT NULL ALTER TABLE [dbo].[Tra_SolicitudesDependencias] DROP CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes];
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableCompras', N'C') IS NOT NULL ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_AsientoContableCompras];
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableVentas', N'C') IS NOT NULL ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_AsientoContableVentas];
|
||||
IF OBJECT_ID(N'dbo.CK_ProductosServicios_IVA', N'C') IS NOT NULL ALTER TABLE [dbo].[ProductosServicios] DROP CONSTRAINT [CK_ProductosServicios_IVA];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Estado', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_Notificaciones] DROP CONSTRAINT [CK_Sis_Notificaciones_Estado];
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Tipo', N'C') IS NOT NULL ALTER TABLE [dbo].[Sis_Notificaciones] DROP CONSTRAINT [CK_Sis_Notificaciones_Tipo];
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'IVA') IS NOT NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] DROP COLUMN [IVA];
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'Total') IS NOT NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] DROP COLUMN [Total];
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'DiasVencimiento') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP COLUMN [DiasVencimiento];
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'SerieFolio') IS NOT NULL ALTER TABLE [dbo].[Ventas] DROP COLUMN [SerieFolio];
|
||||
IF COL_LENGTH(N'dbo.Conta_PrePolizas', N'AnioMes') IS NOT NULL ALTER TABLE [dbo].[Conta_PrePolizas] DROP COLUMN [AnioMes];
|
||||
IF COL_LENGTH(N'dbo.ProductosServicios', N'CodigoPS') IS NOT NULL ALTER TABLE [dbo].[ProductosServicios] DROP COLUMN [CodigoPS];
|
||||
USE [master];
|
||||
ALTER DATABASE [SIG_PlataformaDesarolladores] COLLATE Modern_Spanish_CS_AS;
|
||||
USE [SIG_PlataformaDesarolladores];
|
||||
/* Reconstruir dependencias. */
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_DocumentosSolicitud_Tamano', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_DocumentosSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano] CHECK ([TamanoBytes] IS NULL OR [TamanoBytes]>=(0)); ALTER TABLE [dbo].[Tra_DocumentosSolicitud] CHECK CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Canal', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal] CHECK ([CanalEnvio]='Campana' OR [CanalEnvio]='Push' OR [CanalEnvio]='Correo' OR [CanalEnvio]='SignalR' OR [CanalEnvio]='WhatsApp' OR [CanalEnvio]='Local'); ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado] CHECK ([EstadoEnvio]='Cancelado' OR [EstadoEnvio]='Fallido' OR [EstadoEnvio]='Enviado' OR [EstadoEnvio]='Pendiente'); ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_RespuestasSolicitud_Valor', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_RespuestasSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor] CHECK ([CveOpcionPregunta] IS NOT NULL OR [Valor] IS NOT NULL); ALTER TABLE [dbo].[Tra_RespuestasSolicitud] CHECK CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosClientes_Orden', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_UsuariosClientes] WITH CHECK ADD CONSTRAINT [CK_Sis_UsuariosClientes_Orden] CHECK ([Orden]>(0)); ALTER TABLE [dbo].[Sis_UsuariosClientes] CHECK CONSTRAINT [CK_Sis_UsuariosClientes_Orden]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Importe] CHECK ([Importe]>=(0)); ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Vigencia', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Vigencia] CHECK ([FechaFinVigencia] IS NULL OR [FechaInicioVigencia] IS NULL OR [FechaFinVigencia]>=[FechaInicioVigencia]); ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Vigencia]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_Bitacora_Autorizacion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Bit_Bitacora] WITH CHECK ADD CONSTRAINT [CK_Bit_Bitacora_Autorizacion] CHECK ([CveUsuarioAutoriza] IS NOT NULL OR [FechaAutorizacion] IS NULL); ALTER TABLE [dbo].[Bit_Bitacora] CHECK CONSTRAINT [CK_Bit_Bitacora_Autorizacion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_FondoInicial', N'C') IS NULL BEGIN ALTER TABLE [dbo].[VentasDetalle] WITH CHECK ADD CONSTRAINT [CK_VentasDetalle_FondoInicial] CHECK ([EsFondoInicial]=(0) OR [CveSolicitud] IS NULL AND [CveCostoTramite] IS NULL); ALTER TABLE [dbo].[VentasDetalle] CHECK CONSTRAINT [CK_VentasDetalle_FondoInicial]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_Importes', N'C') IS NULL BEGIN ALTER TABLE [dbo].[VentasDetalle] WITH CHECK ADD CONSTRAINT [CK_VentasDetalle_Importes] CHECK ([Cantidad]>(0) AND [PrecioUnitario]>=(0) AND [Descuento]>=(0) AND [IVA]>=(0) AND [Importe]>=(0)); ALTER TABLE [dbo].[VentasDetalle] CHECK CONSTRAINT [CK_VentasDetalle_Importes]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_Importe] CHECK ([Importe]>(0)); ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_SaldoFavor', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_SaldoFavor] CHECK ([EsSaldoFavor]=(0) OR [CveSolicitud] IS NULL); ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_SaldoFavor]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_BitacoraRelaciones_ValorRelacion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Bit_BitacoraRelaciones] WITH CHECK ADD CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion] CHECK (NOT ([ValorRelacionNumero] IS NOT NULL AND [ValorRelacionTexto] IS NOT NULL)); ALTER TABLE [dbo].[Bit_BitacoraRelaciones] CHECK CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_AplicacionesSaldoFavor_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_AplicacionesSaldoFavor] WITH CHECK ADD CONSTRAINT [CK_Vta_AplicacionesSaldoFavor_Importe] CHECK ([Importe]>(0)); ALTER TABLE [dbo].[Vta_AplicacionesSaldoFavor] CHECK CONSTRAINT [CK_Vta_AplicacionesSaldoFavor_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CHK_VentasMail', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CHK_VentasMail] CHECK ([EnvioMail]=(3) OR [EnvioMail]=(2) OR [EnvioMail]=(1) OR [EnvioMail]=(0)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CHK_VentasMail]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas] CHECK ([TipoDocto]='Egs' OR [TipoDocto]='Dev' OR [TipoDocto]='Ing' OR [TipoDocto]='Cot' OR [TipoDocto]='Rem' OR [TipoDocto]='Ped' OR [TipoDocto]='DPe' OR [TipoDocto]='Com' OR [TipoDocto]='OP' OR [TipoDocto]='Nom' OR [TipoDocto]='Ant' OR [TipoDocto]='PeC' OR [TipoDocto]='Pd2' OR [TipoDocto]='PA' OR [TipoDocto]='RNC' OR [TipoDocto]='Rmm'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_1', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_1] CHECK ([CveCliente]>(0)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_1]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Dev_CveVentaPadre', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Dev_CveVentaPadre] CHECK ([TipoDocto]='Dev' AND [CveVentaPadre]>(0) OR [TipoDocto]<>'Dev'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Dev_CveVentaPadre]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_FechaEjecucion_MinMax', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax] CHECK ([FechaEjecucion]>'1900-01-01' AND [FechaEjecucion]<'2900-12-31'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Moneda_TipoCambio', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Moneda_TipoCambio] CHECK ([CveMoneda]>=(2) AND [TipoCambio]>=(10) OR [CveMoneda]=(1) AND [TipoCambio]=(1)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Moneda_TipoCambio]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_TMp_AlmacenInactivo', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo] CHECK ([CveAlmacenTraspasoDestino]<>(172) AND [CveVenta]>(1012251) OR [CveVenta]<=(1012251)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Total', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Total] CHECK (datepart(year,[Fecha])>=(2018) AND abs(round([Total],(2))-round(((((((isnull([SubTotal],(0))+isnull([IVA],(0)))+isnull([IEPS],(0)))-isnull([Amortizacion],(0)))-isnull([RetIVA],(0)))-isnull([RetISR],(0)))-isnull([Descuento],(0)))-isnull([ImpuestoLocal],(0)),(2)))<(200.02) OR datepart(year,[Fecha])<(2018)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Total]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre] CHECK ([CveCuentaPadre]<>[CveCuenta]); ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre_Requerido', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido] CHECK ([CveCuentaPadre] IS NOT NULL OR ([Codigo]='_ORDEN' OR [Codigo]='_ESTADISTICAS' OR [Codigo]='_GLOBAL')); ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Fraccionamientos_Hectareas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Fraccionamientos] WITH CHECK ADD CONSTRAINT [CK_Fraccionamientos_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0)); ALTER TABLE [dbo].[Fraccionamientos] CHECK CONSTRAINT [CK_Fraccionamientos_Hectareas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Clientes_RFC_Requerido', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [CK_Clientes_RFC_Requerido] CHECK ([RFC]<>''); ALTER TABLE [dbo].[Clientes] CHECK CONSTRAINT [CK_Clientes_RFC_Requerido]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosEtapas_Hectareas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[FraccionamientosEtapas] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosEtapas_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0)); ALTER TABLE [dbo].[FraccionamientosEtapas] CHECK CONSTRAINT [CK_FraccionamientosEtapas_Hectareas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosLotes_MetrosCuadrados', N'C') IS NULL BEGIN ALTER TABLE [dbo].[FraccionamientosLotes] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados] CHECK ([MetrosCuadrados] IS NULL OR [MetrosCuadrados]>=(0)); ALTER TABLE [dbo].[FraccionamientosLotes] CHECK CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_TiposDocumento_Tamano', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_TiposDocumento] WITH CHECK ADD CONSTRAINT [CK_Tra_TiposDocumento_Tamano] CHECK ([TamanoMaximoMb] IS NULL OR [TamanoMaximoMb]>(0)); ALTER TABLE [dbo].[Tra_TiposDocumento] CHECK CONSTRAINT [CK_Tra_TiposDocumento_Tamano]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Concepto', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Concepto] CHECK (rtrim([Concepto])<>''); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Concepto]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Fecha_2000_2050', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050] CHECK ([Fecha]>='2000-01-01' AND [Fecha]<='2050/12/31'); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_FolioPoliza', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza] CHECK ([IdPoliza]>(0) AND isnull([FolioPoliza],(0))>(0) OR ([IdPoliza] IS NULL OR [IdPoliza]=(0))); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_DiasRetencion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion] CHECK ([DiasRetencion]>=(30) AND [DiasRetencion]<=(3650)); ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_TamanoLote', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote] CHECK ([TamanoLote]>=(1) AND [TamanoLote]<=(10000)); ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosAutorizaciones_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado] CHECK ([EstadoAutorizacion]='Cancelada' OR [EstadoAutorizacion]='Rechazada' OR [EstadoAutorizacion]='Aprobada' OR [EstadoAutorizacion]='Pendiente'); ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] CHECK CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_SolicitudesDependencias_Diferentes', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_SolicitudesDependencias] WITH CHECK ADD CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes] CHECK ([CveSolicitud]<>[CveSolicitudRequerida]); ALTER TABLE [dbo].[Tra_SolicitudesDependencias] CHECK CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableCompras', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableCompras] CHECK ([AsientoContableCompras]=(3) OR [AsientoContableCompras]=(2) OR [AsientoContableCompras]=(1)); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableCompras]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableVentas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableVentas] CHECK ([AsientoContableVentas]=(2) OR [AsientoContableVentas]=(1)); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableVentas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_ProductosServicios_IVA', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_ProductosServicios_IVA] CHECK ([IVA]=(-1) OR [IVA]=(0) OR [IVA] IS NULL); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_ProductosServicios_IVA]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Estado] CHECK ([EstadoNotificacion]='Cancelada' OR [EstadoNotificacion]='Fallida' OR [EstadoNotificacion]='Enviada' OR [EstadoNotificacion]='Pendiente'); ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Tipo', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Tipo] CHECK ([TipoNotificacion]='Campana' OR [TipoNotificacion]='Push' OR [TipoNotificacion]='Correo' OR [TipoNotificacion]='SignalR' OR [TipoNotificacion]='WhatsApp' OR [TipoNotificacion]='Local'); ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Tipo]; END;
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'IVA') IS NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] ADD [IVA] AS (([IVACapital]+[IVAIntereses])+[IVASeguro]);
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'Total') IS NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] ADD [Total] AS ((((([Capital]+[Intereses])+[Seguro])+[IVACapital])+[IVAIntereses])+[IVASeguro]);
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'DiasVencimiento') IS NULL ALTER TABLE [dbo].[Ventas] ADD [DiasVencimiento] AS (datediff(day,[FechaVencimiento2],getdate()));
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'SerieFolio') IS NULL ALTER TABLE [dbo].[Ventas] ADD [SerieFolio] AS ((concat(case when [Serie]<>'' then [Serie]+'-' else '' end,[Folio])) collate Modern_Spanish_CS_AS);
|
||||
IF COL_LENGTH(N'dbo.Conta_PrePolizas', N'AnioMes') IS NULL ALTER TABLE [dbo].[Conta_PrePolizas] ADD [AnioMes] AS ((CONVERT([varchar](6),[Fecha],(112))) collate Modern_Spanish_CS_AS) PERSISTED;
|
||||
IF COL_LENGTH(N'dbo.ProductosServicios', N'CodigoPS') IS NULL ALTER TABLE [dbo].[ProductosServicios] ADD [CodigoPS] AS ((case when len([Codigo])>(0) then concat(([Codigo]) collate Modern_Spanish_CI_AS,' - ',([PS]) collate Modern_Spanish_CI_AS) else ([PS]) collate Modern_Spanish_CI_AS end) collate Modern_Spanish_CI_AS);
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_UsuariosClientes') AND name=N'UX_Sis_UsuariosClientes_Usuario_Orden') CREATE UNIQUE NONCLUSTERED INDEX [UX_Sis_UsuariosClientes_Usuario_Orden] ON [dbo].[Sis_UsuariosClientes] ([CveUsuario] ASC,[Orden] ASC) WHERE ([Activo]=(1)) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_Usuarios') AND name=N'UQ_Sis_Usuarios_CorreoElectronico') CREATE UNIQUE NONCLUSTERED INDEX [UQ_Sis_Usuarios_CorreoElectronico] ON [dbo].[Sis_Usuarios] ([CorreoElectronico] ASC) WHERE ([CorreoElectronico] IS NOT NULL) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Tra_Preguntas') AND name=N'UX_Tra_Preguntas_Codigo') CREATE UNIQUE NONCLUSTERED INDEX [UX_Tra_Preguntas_Codigo] ON [dbo].[Tra_Preguntas] ([Codigo] ASC) WHERE ([Codigo] IS NOT NULL) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
USE [master];
|
||||
ALTER DATABASE [SIG_PlataformaDesarolladores] SET MULTI_USER;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
DECLARE @Mensaje nvarchar(2048) = ERROR_MESSAGE();
|
||||
BEGIN TRY
|
||||
USE [SIG_PlataformaDesarolladores];
|
||||
/* Reconstruir dependencias. */
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_DocumentosSolicitud_Tamano', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_DocumentosSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano] CHECK ([TamanoBytes] IS NULL OR [TamanoBytes]>=(0)); ALTER TABLE [dbo].[Tra_DocumentosSolicitud] CHECK CONSTRAINT [CK_Tra_DocumentosSolicitud_Tamano]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Canal', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal] CHECK ([CanalEnvio]='Campana' OR [CanalEnvio]='Push' OR [CanalEnvio]='Correo' OR [CanalEnvio]='SignalR' OR [CanalEnvio]='WhatsApp' OR [CanalEnvio]='Local'); ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Canal]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_NotificacionesEnvios_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_NotificacionesEnvios] WITH CHECK ADD CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado] CHECK ([EstadoEnvio]='Cancelado' OR [EstadoEnvio]='Fallido' OR [EstadoEnvio]='Enviado' OR [EstadoEnvio]='Pendiente'); ALTER TABLE [dbo].[Sis_NotificacionesEnvios] CHECK CONSTRAINT [CK_Sis_NotificacionesEnvios_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_RespuestasSolicitud_Valor', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_RespuestasSolicitud] WITH CHECK ADD CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor] CHECK ([CveOpcionPregunta] IS NOT NULL OR [Valor] IS NOT NULL); ALTER TABLE [dbo].[Tra_RespuestasSolicitud] CHECK CONSTRAINT [CK_Tra_RespuestasSolicitud_Valor]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosClientes_Orden', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_UsuariosClientes] WITH CHECK ADD CONSTRAINT [CK_Sis_UsuariosClientes_Orden] CHECK ([Orden]>(0)); ALTER TABLE [dbo].[Sis_UsuariosClientes] CHECK CONSTRAINT [CK_Sis_UsuariosClientes_Orden]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Importe] CHECK ([Importe]>=(0)); ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_CostosTramite_Vigencia', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_CostosTramite] WITH CHECK ADD CONSTRAINT [CK_Tra_CostosTramite_Vigencia] CHECK ([FechaFinVigencia] IS NULL OR [FechaInicioVigencia] IS NULL OR [FechaFinVigencia]>=[FechaInicioVigencia]); ALTER TABLE [dbo].[Tra_CostosTramite] CHECK CONSTRAINT [CK_Tra_CostosTramite_Vigencia]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_Bitacora_Autorizacion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Bit_Bitacora] WITH CHECK ADD CONSTRAINT [CK_Bit_Bitacora_Autorizacion] CHECK ([CveUsuarioAutoriza] IS NOT NULL OR [FechaAutorizacion] IS NULL); ALTER TABLE [dbo].[Bit_Bitacora] CHECK CONSTRAINT [CK_Bit_Bitacora_Autorizacion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_FondoInicial', N'C') IS NULL BEGIN ALTER TABLE [dbo].[VentasDetalle] WITH CHECK ADD CONSTRAINT [CK_VentasDetalle_FondoInicial] CHECK ([EsFondoInicial]=(0) OR [CveSolicitud] IS NULL AND [CveCostoTramite] IS NULL); ALTER TABLE [dbo].[VentasDetalle] CHECK CONSTRAINT [CK_VentasDetalle_FondoInicial]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_VentasDetalle_Importes', N'C') IS NULL BEGIN ALTER TABLE [dbo].[VentasDetalle] WITH CHECK ADD CONSTRAINT [CK_VentasDetalle_Importes] CHECK ([Cantidad]>(0) AND [PrecioUnitario]>=(0) AND [Descuento]>=(0) AND [IVA]>=(0) AND [Importe]>=(0)); ALTER TABLE [dbo].[VentasDetalle] CHECK CONSTRAINT [CK_VentasDetalle_Importes]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_Importe] CHECK ([Importe]>(0)); ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_Pagos_SaldoFavor', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_Pagos] WITH CHECK ADD CONSTRAINT [CK_Vta_Pagos_SaldoFavor] CHECK ([EsSaldoFavor]=(0) OR [CveSolicitud] IS NULL); ALTER TABLE [dbo].[Vta_Pagos] CHECK CONSTRAINT [CK_Vta_Pagos_SaldoFavor]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Bit_BitacoraRelaciones_ValorRelacion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Bit_BitacoraRelaciones] WITH CHECK ADD CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion] CHECK (NOT ([ValorRelacionNumero] IS NOT NULL AND [ValorRelacionTexto] IS NOT NULL)); ALTER TABLE [dbo].[Bit_BitacoraRelaciones] CHECK CONSTRAINT [CK_Bit_BitacoraRelaciones_ValorRelacion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Vta_AplicacionesSaldoFavor_Importe', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Vta_AplicacionesSaldoFavor] WITH CHECK ADD CONSTRAINT [CK_Vta_AplicacionesSaldoFavor_Importe] CHECK ([Importe]>(0)); ALTER TABLE [dbo].[Vta_AplicacionesSaldoFavor] CHECK CONSTRAINT [CK_Vta_AplicacionesSaldoFavor_Importe]; END;
|
||||
IF OBJECT_ID(N'dbo.CHK_VentasMail', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CHK_VentasMail] CHECK ([EnvioMail]=(3) OR [EnvioMail]=(2) OR [EnvioMail]=(1) OR [EnvioMail]=(0)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CHK_VentasMail]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas] CHECK ([TipoDocto]='Egs' OR [TipoDocto]='Dev' OR [TipoDocto]='Ing' OR [TipoDocto]='Cot' OR [TipoDocto]='Rem' OR [TipoDocto]='Ped' OR [TipoDocto]='DPe' OR [TipoDocto]='Com' OR [TipoDocto]='OP' OR [TipoDocto]='Nom' OR [TipoDocto]='Ant' OR [TipoDocto]='PeC' OR [TipoDocto]='Pd2' OR [TipoDocto]='PA' OR [TipoDocto]='RNC' OR [TipoDocto]='Rmm'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_1', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_1] CHECK ([CveCliente]>(0)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_1]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Dev_CveVentaPadre', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Dev_CveVentaPadre] CHECK ([TipoDocto]='Dev' AND [CveVentaPadre]>(0) OR [TipoDocto]<>'Dev'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Dev_CveVentaPadre]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_FechaEjecucion_MinMax', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax] CHECK ([FechaEjecucion]>'1900-01-01' AND [FechaEjecucion]<'2900-12-31'); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_FechaEjecucion_MinMax]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Moneda_TipoCambio', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Moneda_TipoCambio] CHECK ([CveMoneda]>=(2) AND [TipoCambio]>=(10) OR [CveMoneda]=(1) AND [TipoCambio]=(1)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Moneda_TipoCambio]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_TMp_AlmacenInactivo', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo] CHECK ([CveAlmacenTraspasoDestino]<>(172) AND [CveVenta]>(1012251) OR [CveVenta]<=(1012251)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_TMp_AlmacenInactivo]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Ventas_Total', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Ventas] WITH CHECK ADD CONSTRAINT [CK_Ventas_Total] CHECK (datepart(year,[Fecha])>=(2018) AND abs(round([Total],(2))-round(((((((isnull([SubTotal],(0))+isnull([IVA],(0)))+isnull([IEPS],(0)))-isnull([Amortizacion],(0)))-isnull([RetIVA],(0)))-isnull([RetISR],(0)))-isnull([Descuento],(0)))-isnull([ImpuestoLocal],(0)),(2)))<(200.02) OR datepart(year,[Fecha])<(2018)); ALTER TABLE [dbo].[Ventas] CHECK CONSTRAINT [CK_Ventas_Total]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre] CHECK ([CveCuentaPadre]<>[CveCuenta]); ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_Cuentas_Padre_Requerido', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_Cuentas] WITH CHECK ADD CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido] CHECK ([CveCuentaPadre] IS NOT NULL OR ([Codigo]='_ORDEN' OR [Codigo]='_ESTADISTICAS' OR [Codigo]='_GLOBAL')); ALTER TABLE [dbo].[Conta_Cuentas] CHECK CONSTRAINT [CK_Conta_Cuentas_Padre_Requerido]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Fraccionamientos_Hectareas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Fraccionamientos] WITH CHECK ADD CONSTRAINT [CK_Fraccionamientos_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0)); ALTER TABLE [dbo].[Fraccionamientos] CHECK CONSTRAINT [CK_Fraccionamientos_Hectareas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Clientes_RFC_Requerido', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Clientes] WITH CHECK ADD CONSTRAINT [CK_Clientes_RFC_Requerido] CHECK ([RFC]<>''); ALTER TABLE [dbo].[Clientes] CHECK CONSTRAINT [CK_Clientes_RFC_Requerido]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosEtapas_Hectareas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[FraccionamientosEtapas] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosEtapas_Hectareas] CHECK ([Hectareas] IS NULL OR [Hectareas]>=(0)); ALTER TABLE [dbo].[FraccionamientosEtapas] CHECK CONSTRAINT [CK_FraccionamientosEtapas_Hectareas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_FraccionamientosLotes_MetrosCuadrados', N'C') IS NULL BEGIN ALTER TABLE [dbo].[FraccionamientosLotes] WITH CHECK ADD CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados] CHECK ([MetrosCuadrados] IS NULL OR [MetrosCuadrados]>=(0)); ALTER TABLE [dbo].[FraccionamientosLotes] CHECK CONSTRAINT [CK_FraccionamientosLotes_MetrosCuadrados]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_TiposDocumento_Tamano', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_TiposDocumento] WITH CHECK ADD CONSTRAINT [CK_Tra_TiposDocumento_Tamano] CHECK ([TamanoMaximoMb] IS NULL OR [TamanoMaximoMb]>(0)); ALTER TABLE [dbo].[Tra_TiposDocumento] CHECK CONSTRAINT [CK_Tra_TiposDocumento_Tamano]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Concepto', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Concepto] CHECK (rtrim([Concepto])<>''); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Concepto]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_Fecha_2000_2050', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050] CHECK ([Fecha]>='2000-01-01' AND [Fecha]<='2050/12/31'); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_Fecha_2000_2050]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Conta_PrePolizas_FolioPoliza', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Conta_PrePolizas] WITH CHECK ADD CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza] CHECK ([IdPoliza]>(0) AND isnull([FolioPoliza],(0))>(0) OR ([IdPoliza] IS NULL OR [IdPoliza]=(0))); ALTER TABLE [dbo].[Conta_PrePolizas] CHECK CONSTRAINT [CK_Conta_PrePolizas_FolioPoliza]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_DiasRetencion', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion] CHECK ([DiasRetencion]>=(30) AND [DiasRetencion]<=(3650)); ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_DiasRetencion]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_PoliticasLimpieza_TamanoLote', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_PoliticasLimpieza] WITH CHECK ADD CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote] CHECK ([TamanoLote]>=(1) AND [TamanoLote]<=(10000)); ALTER TABLE [dbo].[Sis_PoliticasLimpieza] CHECK CONSTRAINT [CK_Sis_PoliticasLimpieza_TamanoLote]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_UsuariosAutorizaciones_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado] CHECK ([EstadoAutorizacion]='Cancelada' OR [EstadoAutorizacion]='Rechazada' OR [EstadoAutorizacion]='Aprobada' OR [EstadoAutorizacion]='Pendiente'); ALTER TABLE [dbo].[Sis_UsuariosAutorizaciones] CHECK CONSTRAINT [CK_Sis_UsuariosAutorizaciones_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Tra_SolicitudesDependencias_Diferentes', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Tra_SolicitudesDependencias] WITH CHECK ADD CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes] CHECK ([CveSolicitud]<>[CveSolicitudRequerida]); ALTER TABLE [dbo].[Tra_SolicitudesDependencias] CHECK CONSTRAINT [CK_Tra_SolicitudesDependencias_Diferentes]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableCompras', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableCompras] CHECK ([AsientoContableCompras]=(3) OR [AsientoContableCompras]=(2) OR [AsientoContableCompras]=(1)); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableCompras]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_AsientoContableVentas', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_AsientoContableVentas] CHECK ([AsientoContableVentas]=(2) OR [AsientoContableVentas]=(1)); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_AsientoContableVentas]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_ProductosServicios_IVA', N'C') IS NULL BEGIN ALTER TABLE [dbo].[ProductosServicios] WITH CHECK ADD CONSTRAINT [CK_ProductosServicios_IVA] CHECK ([IVA]=(-1) OR [IVA]=(0) OR [IVA] IS NULL); ALTER TABLE [dbo].[ProductosServicios] CHECK CONSTRAINT [CK_ProductosServicios_IVA]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Estado', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Estado] CHECK ([EstadoNotificacion]='Cancelada' OR [EstadoNotificacion]='Fallida' OR [EstadoNotificacion]='Enviada' OR [EstadoNotificacion]='Pendiente'); ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Estado]; END;
|
||||
IF OBJECT_ID(N'dbo.CK_Sis_Notificaciones_Tipo', N'C') IS NULL BEGIN ALTER TABLE [dbo].[Sis_Notificaciones] WITH CHECK ADD CONSTRAINT [CK_Sis_Notificaciones_Tipo] CHECK ([TipoNotificacion]='Campana' OR [TipoNotificacion]='Push' OR [TipoNotificacion]='Correo' OR [TipoNotificacion]='SignalR' OR [TipoNotificacion]='WhatsApp' OR [TipoNotificacion]='Local'); ALTER TABLE [dbo].[Sis_Notificaciones] CHECK CONSTRAINT [CK_Sis_Notificaciones_Tipo]; END;
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'IVA') IS NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] ADD [IVA] AS (([IVACapital]+[IVAIntereses])+[IVASeguro]);
|
||||
IF COL_LENGTH(N'dbo.Banc_CreditosDetalle', N'Total') IS NULL ALTER TABLE [dbo].[Banc_CreditosDetalle] ADD [Total] AS ((((([Capital]+[Intereses])+[Seguro])+[IVACapital])+[IVAIntereses])+[IVASeguro]);
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'DiasVencimiento') IS NULL ALTER TABLE [dbo].[Ventas] ADD [DiasVencimiento] AS (datediff(day,[FechaVencimiento2],getdate()));
|
||||
IF COL_LENGTH(N'dbo.Ventas', N'SerieFolio') IS NULL ALTER TABLE [dbo].[Ventas] ADD [SerieFolio] AS ((concat(case when [Serie]<>'' then [Serie]+'-' else '' end,[Folio])) collate Modern_Spanish_CS_AS);
|
||||
IF COL_LENGTH(N'dbo.Conta_PrePolizas', N'AnioMes') IS NULL ALTER TABLE [dbo].[Conta_PrePolizas] ADD [AnioMes] AS ((CONVERT([varchar](6),[Fecha],(112))) collate Modern_Spanish_CS_AS) PERSISTED;
|
||||
IF COL_LENGTH(N'dbo.ProductosServicios', N'CodigoPS') IS NULL ALTER TABLE [dbo].[ProductosServicios] ADD [CodigoPS] AS ((case when len([Codigo])>(0) then concat(([Codigo]) collate Modern_Spanish_CI_AS,' - ',([PS]) collate Modern_Spanish_CI_AS) else ([PS]) collate Modern_Spanish_CI_AS end) collate Modern_Spanish_CI_AS);
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_UsuariosClientes') AND name=N'UX_Sis_UsuariosClientes_Usuario_Orden') CREATE UNIQUE NONCLUSTERED INDEX [UX_Sis_UsuariosClientes_Usuario_Orden] ON [dbo].[Sis_UsuariosClientes] ([CveUsuario] ASC,[Orden] ASC) WHERE ([Activo]=(1)) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Sis_Usuarios') AND name=N'UQ_Sis_Usuarios_CorreoElectronico') CREATE UNIQUE NONCLUSTERED INDEX [UQ_Sis_Usuarios_CorreoElectronico] ON [dbo].[Sis_Usuarios] ([CorreoElectronico] ASC) WHERE ([CorreoElectronico] IS NOT NULL) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.Tra_Preguntas') AND name=N'UX_Tra_Preguntas_Codigo') CREATE UNIQUE NONCLUSTERED INDEX [UX_Tra_Preguntas_Codigo] ON [dbo].[Tra_Preguntas] ([Codigo] ASC) WHERE ([Codigo] IS NOT NULL) WITH (PAD_INDEX=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON [PRIMARY];
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @Mensaje = CONCAT(@Mensaje, N' Error al restaurar dependencias: ', ERROR_MESSAGE());
|
||||
END CATCH;
|
||||
USE [master];
|
||||
ALTER DATABASE [SIG_PlataformaDesarolladores] SET MULTI_USER;
|
||||
THROW 51001, @Mensaje, 1;
|
||||
END CATCH;
|
||||
1282
Migracion_Fraccionamientos_EtapasAvanceGIS_20260814.sql
Normal file
1282
Migracion_Fraccionamientos_EtapasAvanceGIS_20260814.sql
Normal file
File diff suppressed because it is too large
Load Diff
1440
Migracion_Transacciones_Aplicacion_20260722.sql
Normal file
1440
Migracion_Transacciones_Aplicacion_20260722.sql
Normal file
File diff suppressed because it is too large
Load Diff
164
Migracion_Validaciones_Registro_20260814.sql
Normal file
164
Migracion_Validaciones_Registro_20260814.sql
Normal file
@@ -0,0 +1,164 @@
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteUsuarioValidate]
|
||||
@NombreUsuario varchar(100),
|
||||
@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 @NombreUsuario = LTRIM(RTRIM(@NombreUsuario));
|
||||
|
||||
IF NULLIF(@NombreUsuario, '') IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Captura el nombre de usuario para verificarlo.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[Sis_Usuarios]
|
||||
WHERE [NombreUsuario] = @NombreUsuario
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El nombre de usuario ya se encuentra registrado. Elige uno diferente.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al validar el nombre de usuario; 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_Sis_RegistroClienteUsuarioValidate'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteCorreoValidate]
|
||||
@CorreoElectronico varchar(255),
|
||||
@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 @CorreoElectronico = LOWER(LTRIM(RTRIM(@CorreoElectronico)));
|
||||
|
||||
IF NULLIF(@CorreoElectronico, '') IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Captura el correo electrónico para verificarlo.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[Sis_Usuarios]
|
||||
WHERE LOWER([CorreoElectronico]) = @CorreoElectronico
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El correo electrónico ya se encuentra registrado. Contacta a Soporte Técnico antes de continuar.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al validar el correo; 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_Sis_RegistroClienteCorreoValidate'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_RegistroClienteRFCValidate]
|
||||
@RFC varchar(15),
|
||||
@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 @RFC = UPPER(REPLACE(LTRIM(RTRIM(@RFC)), ' ', ''));
|
||||
|
||||
IF NULLIF(@RFC, '') IS NULL
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'Captura el RFC para verificarlo.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
IF EXISTS
|
||||
(
|
||||
SELECT 1
|
||||
FROM [dbo].[Clientes]
|
||||
WHERE UPPER(REPLACE(LTRIM(RTRIM([RFC])), ' ', '')) = @RFC
|
||||
)
|
||||
BEGIN
|
||||
SET @ErrorMostrar = 'El RFC ya se encuentra registrado. Contacta a Soporte Técnico para solicitar acceso.';
|
||||
SET @ErrorTipo = 2;
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
SET @Return = 1;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @ErrorMostrar = 'Ocurrió un error al validar el RFC; 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_Sis_RegistroClienteRFCValidate'),
|
||||
'; Línea: ', ERROR_LINE(),
|
||||
'; Detalle: ', ERROR_MESSAGE()
|
||||
);
|
||||
|
||||
RAISERROR(N'%s', 10, 1, @ErrorTecnico);
|
||||
END CATCH;
|
||||
END;
|
||||
GO
|
||||
@@ -46,7 +46,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioLoginSuccessUpdate]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
@@ -87,7 +86,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioLoginFailedUpdate]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
@@ -136,7 +134,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_IntentoInicioSesionAdd]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
@@ -172,7 +169,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioSesionAdd]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
@@ -215,7 +211,6 @@ CREATE OR ALTER PROCEDURE [dbo].[PA_Sis_UsuarioSesionEnd]
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
SELECT @ErrorMostrar = NULL, @ErrorTipo = 0, @Return = 0;
|
||||
|
||||
BEGIN TRY
|
||||
@@ -326,7 +321,6 @@ BEGIN
|
||||
WHERE RM.[CveRol] = @CveRol
|
||||
AND RM.[PuedeVer] = (1)
|
||||
AND M.[Activo] = (1)
|
||||
AND M.[Visible] = (1)
|
||||
AND RM.[Borrado] = (0)
|
||||
AND M.[Borrado] = (0)
|
||||
AND
|
||||
|
||||
BIN
Requisitos de trámites en Excel.xlsx
Normal file
BIN
Requisitos de trámites en Excel.xlsx
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ajaxControlToolkit>
|
||||
<controlBundles>
|
||||
<controlBundle name="Accordion">
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
using SIG.Web.AppCode.Contracts.Database;
|
||||
using SIG.Web.AppCode.Contracts.Search;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Notifications.Contracts;
|
||||
using SIG.Web.AppCode.Notifications.Services;
|
||||
using SIG.Web.AppCode.Repositories.Security;
|
||||
using SIG.Web.AppCode.Services.Database;
|
||||
using SIG.Web.AppCode.Services.Menu;
|
||||
using SIG.Web.AppCode.Services.Search;
|
||||
using SIG.Web.AppCode.Services.Security;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
namespace SIG.Web.AppCode.Configuration
|
||||
{
|
||||
public static class AppServices
|
||||
{
|
||||
public static IDbConnectionFactory DbConnectionFactory { get; private set; }
|
||||
public static IDbExecutor DbExecutor { get; private set; }
|
||||
public static IPasswordHasher PasswordHasher { get; private set; }
|
||||
public static IUserRepository UserRepository { get; private set; }
|
||||
public static IUserAdministrationRepository UserAdministrationRepository { get; private set; }
|
||||
public static IPublicRegistrationService PublicRegistrationService { get; private set; }
|
||||
public static ILoginAttemptRepository LoginAttemptRepository { get; private set; } public static IUserSessionRepository UserSessionRepository { get; private set; }
|
||||
public static ILoginService LoginService { get; private set; }
|
||||
public static IUserContextProvider UserContext { get; private set; }
|
||||
public static IPermissionService PermissionService { get; private set; }
|
||||
public static IMenuProvider MenuProvider { get; private set; }
|
||||
public static INotificationCenter NotificationCenter { get; private set; }
|
||||
public static IBuscadorCatalogoDataProvider SearchProvider { get; private set; }
|
||||
|
||||
public static void Configure()
|
||||
{
|
||||
DbConnectionFactory = new DbConnectionFactory();
|
||||
DbExecutor = new DbExecutor(DbConnectionFactory);
|
||||
|
||||
PasswordHasher = new PasswordHasher();
|
||||
|
||||
UserRepository = new UserRepository(DbExecutor);
|
||||
UserAdministrationRepository = new UserAdministrationRepository(DbExecutor);
|
||||
LoginAttemptRepository = new LoginAttemptRepository(DbExecutor); UserSessionRepository = new UserSessionRepository(DbExecutor);
|
||||
|
||||
UserContext = new WebFormsUserContextProvider();
|
||||
PermissionService = new PermissionService(DbExecutor);
|
||||
MenuProvider = new MenuProvider(DbExecutor);
|
||||
NotificationCenter = new DummyNotificationCenter();
|
||||
SearchProvider = new DummyBuscadorCatalogoDataProvider();
|
||||
|
||||
LoginService = new LoginService(
|
||||
UserRepository,
|
||||
PasswordHasher,
|
||||
LoginAttemptRepository,
|
||||
UserSessionRepository);
|
||||
|
||||
PublicRegistrationService = new PublicRegistrationService(
|
||||
UserAdministrationRepository,
|
||||
PasswordHasher,
|
||||
new SmtpEmailSender());
|
||||
} }
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using SIG.Web.AppCode.Session;
|
||||
namespace SIG.Web.AppCode.Models.Security
|
||||
{
|
||||
public sealed class LoginResult
|
||||
{
|
||||
public bool Exitoso { get; private set; }
|
||||
public string Mensaje { get; private set; }
|
||||
public UserSessionModel Usuario { get; private set; }
|
||||
public static LoginResult Ok(UserSessionModel usuario) { return new LoginResult { Exitoso = true, Usuario = usuario, Mensaje = string.Empty }; }
|
||||
public static LoginResult Fail(string mensaje) { return new LoginResult { Exitoso = false, Mensaje = mensaje }; }
|
||||
}
|
||||
}
|
||||
@@ -1,106 +0,0 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Logging
|
||||
{
|
||||
public static class ExceptionLogger
|
||||
{
|
||||
private static readonly object LockObject = new object();
|
||||
|
||||
public static void Log(Exception exception, string source)
|
||||
{
|
||||
Log(exception, source, null);
|
||||
}
|
||||
|
||||
public static void Log(Exception exception, string source, string userMessage)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (exception == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string logPath = GetLogPath();
|
||||
string directory = Path.GetDirectoryName(logPath);
|
||||
|
||||
if (!Directory.Exists(directory))
|
||||
{
|
||||
Directory.CreateDirectory(directory);
|
||||
}
|
||||
|
||||
string content = BuildLogContent(exception, source, userMessage);
|
||||
|
||||
lock (LockObject)
|
||||
{
|
||||
File.AppendAllText(logPath, content, Encoding.UTF8);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Never throw from the logger.
|
||||
// If the logger fails, the application must continue.
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetLogPath()
|
||||
{
|
||||
string configuredPath = ConfigurationManager.AppSettings["ExceptionLogFilePath"];
|
||||
|
||||
if (string.IsNullOrWhiteSpace(configuredPath))
|
||||
{
|
||||
configuredPath = "~/log/log.txt";
|
||||
}
|
||||
|
||||
if (HttpContext.Current != null)
|
||||
{
|
||||
return HttpContext.Current.Server.MapPath(configuredPath);
|
||||
}
|
||||
|
||||
return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log", "log.txt");
|
||||
}
|
||||
|
||||
private static string BuildLogContent(Exception exception, string source, string userMessage)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
|
||||
sb.AppendLine("============================================================");
|
||||
sb.AppendLine("Date: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
|
||||
sb.AppendLine("Source: " + Safe(source));
|
||||
sb.AppendLine("UserMessage: " + Safe(userMessage));
|
||||
|
||||
HttpContext context = HttpContext.Current;
|
||||
|
||||
if (context != null && context.Request != null)
|
||||
{
|
||||
sb.AppendLine("Url: " + Safe(context.Request.Url != null ? context.Request.Url.ToString() : null));
|
||||
sb.AppendLine("HttpMethod: " + Safe(context.Request.HttpMethod));
|
||||
sb.AppendLine("DireccionIP: " + Safe(context.Request.UserHostAddress));
|
||||
sb.AppendLine("AgenteUsuario: " + Safe(context.Request.UserAgent));
|
||||
}
|
||||
|
||||
if (context != null && context.User != null && context.User.Identity != null)
|
||||
{
|
||||
sb.AppendLine("Identity: " + Safe(context.User.Identity.Name));
|
||||
sb.AppendLine("IsAuthenticated: " + context.User.Identity.IsAuthenticated);
|
||||
}
|
||||
|
||||
sb.AppendLine("ExceptionType: " + exception.GetType().FullName);
|
||||
sb.AppendLine("Message: " + exception.Message);
|
||||
sb.AppendLine("BaseException: " + exception.GetBaseException().Message);
|
||||
sb.AppendLine("StackTrace:");
|
||||
sb.AppendLine(exception.ToString());
|
||||
sb.AppendLine();
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private static string Safe(string value)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(value) ? string.Empty : value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using SIG.Web.AppCode.Contracts.Database;
|
||||
using SIG.Web.AppCode.Services.Database;
|
||||
using SIG.Web.AppCode.Utilities;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Menu
|
||||
{
|
||||
public sealed class MenuProvider : IMenuProvider
|
||||
{
|
||||
private readonly IDbExecutor _dbExecutor;
|
||||
|
||||
public MenuProvider(IDbExecutor dbExecutor)
|
||||
{
|
||||
_dbExecutor = dbExecutor;
|
||||
}
|
||||
|
||||
public IReadOnlyList<MenuItemModel> GetMenu(UserSessionModel user)
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
return new List<MenuItemModel>();
|
||||
}
|
||||
|
||||
var modulesResult = GetModules(user);
|
||||
|
||||
if (!modulesResult.Success || modulesResult.Data == null)
|
||||
{
|
||||
return new List<MenuItemModel>();
|
||||
}
|
||||
|
||||
return BuildTree(modulesResult.Data);
|
||||
}
|
||||
|
||||
private SIG.Web.AppCode.Models.Common.DbResult<List<MenuItemModel>> GetModules(UserSessionModel user)
|
||||
{
|
||||
return _dbExecutor.Execute(user.NombreDominio, connection =>
|
||||
{
|
||||
using (IDbCommand command = connection.CreateCommand())
|
||||
{
|
||||
StoredProcedureCommand.Configure(command, "dbo.PA_Sis_MenuList", user.CveUsuario);
|
||||
StoredProcedureCommand.AddInput(command, "@CveRol", user.CveRol, DbType.Int32);
|
||||
|
||||
List<MenuItemModel> items;
|
||||
|
||||
using (IDataReader reader = command.ExecuteReader())
|
||||
{
|
||||
items = reader.ToList<MenuItemModel>();
|
||||
}
|
||||
|
||||
StoredProcedureCommand.EnsureSuccess(command);
|
||||
return items;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static IReadOnlyList<MenuItemModel> BuildTree(List<MenuItemModel> flatItems)
|
||||
{
|
||||
if (flatItems == null || flatItems.Count == 0)
|
||||
{
|
||||
return new List<MenuItemModel>();
|
||||
}
|
||||
|
||||
var byId = flatItems.ToDictionary(x => x.CveModulo);
|
||||
var roots = new List<MenuItemModel>();
|
||||
|
||||
foreach (var item in flatItems.OrderBy(x => x.OrdenVisualizacion).ThenBy(x => x.NombreModulo))
|
||||
{
|
||||
if (item.CveModuloPadre.HasValue && byId.ContainsKey(item.CveModuloPadre.Value))
|
||||
{
|
||||
byId[item.CveModuloPadre.Value].Hijos.Add(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
roots.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
return roots;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
using System;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Models.Security;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Security
|
||||
{
|
||||
public sealed class LoginService : ILoginService
|
||||
{
|
||||
private const string GenericError = "No fue posible iniciar sesion. Verifique sus datos.";
|
||||
|
||||
private readonly IUserRepository _userRepository;
|
||||
private readonly IPasswordHasher _passwordHasher;
|
||||
private readonly ILoginAttemptRepository _loginAttemptRepository;
|
||||
private readonly IUserSessionRepository _userSessionRepository;
|
||||
|
||||
public LoginService(
|
||||
IUserRepository userRepository,
|
||||
IPasswordHasher passwordHasher,
|
||||
ILoginAttemptRepository loginAttemptRepository,
|
||||
IUserSessionRepository userSessionRepository)
|
||||
{
|
||||
_userRepository = userRepository;
|
||||
_passwordHasher = passwordHasher;
|
||||
_loginAttemptRepository = loginAttemptRepository;
|
||||
_userSessionRepository = userSessionRepository;
|
||||
}
|
||||
|
||||
public LoginResult Login(LoginRequest request)
|
||||
{
|
||||
if (request == null || string.IsNullOrWhiteSpace(request.NombreUsuario) || string.IsNullOrWhiteSpace(request.Contrasena))
|
||||
{
|
||||
return LoginResult.Fail(GenericError);
|
||||
}
|
||||
|
||||
string username = request.NombreUsuario.Trim();
|
||||
var userResult = _userRepository.ObtenerPorNombreUsuario(username, request.NombreDominio);
|
||||
|
||||
if (!userResult.Success)
|
||||
{
|
||||
return LoginResult.Fail(userResult.UserMessage);
|
||||
}
|
||||
|
||||
UserModel user = userResult.Data;
|
||||
|
||||
if (user == null)
|
||||
{
|
||||
_loginAttemptRepository.Save(null, username, false, "UserNotFound", request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
return LoginResult.Fail(GenericError);
|
||||
}
|
||||
|
||||
if (!user.CorreoVerificado)
|
||||
{
|
||||
_loginAttemptRepository.Save(user.CveUsuario, username, false, "EmailNotVerified", request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
return LoginResult.Fail("Debes verificar tu correo electrónico antes de iniciar sesión.");
|
||||
}
|
||||
|
||||
if (!user.Activo)
|
||||
{
|
||||
_loginAttemptRepository.Save(user.CveUsuario, username, false, "InactiveUser", request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
return LoginResult.Fail("El usuario se encuentra inactivo.");
|
||||
}
|
||||
|
||||
if (user.BloqueadoHasta.HasValue && user.BloqueadoHasta.Value > DateTime.Now) {
|
||||
_loginAttemptRepository.Save(user.CveUsuario, username, false, "LockedUser", request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
return LoginResult.Fail("El usuario se encuentra bloqueado temporalmente.");
|
||||
}
|
||||
|
||||
if (!_passwordHasher.VerifyPassword(request.Contrasena, user.HashContrasena))
|
||||
{
|
||||
_userRepository.RegisterFailedLogin(user.CveUsuario, request.NombreDominio);
|
||||
_loginAttemptRepository.Save(user.CveUsuario, username, false, "InvalidPassword", request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
return LoginResult.Fail(GenericError);
|
||||
}
|
||||
|
||||
string sessionToken = Guid.NewGuid().ToString("N");
|
||||
|
||||
var loginUpdateResult = _userRepository.RegisterSuccessfulLogin(user.CveUsuario, request.NombreDominio);
|
||||
|
||||
if (!loginUpdateResult.Success)
|
||||
{
|
||||
return LoginResult.Fail(loginUpdateResult.UserMessage);
|
||||
}
|
||||
|
||||
var sessionResult = _userSessionRepository.StartSession(user.CveUsuario, sessionToken, request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
|
||||
if (!sessionResult.Success)
|
||||
{
|
||||
return LoginResult.Fail(sessionResult.UserMessage);
|
||||
}
|
||||
|
||||
_loginAttemptRepository.Save(user.CveUsuario, username, true, null, request.DireccionIP, request.AgenteUsuario, request.NombreDominio);
|
||||
|
||||
var sessionUser = new UserSessionModel
|
||||
{
|
||||
CveUsuario = user.CveUsuario,
|
||||
CveRol = user.CveRol,
|
||||
NombreUsuario = user.NombreUsuario,
|
||||
Nombre = user.NombreUsuario,
|
||||
CorreoElectronico = user.CorreoElectronico,
|
||||
NombreRol = user.NombreRol,
|
||||
NombreDominio = request.NombreDominio,
|
||||
TokenSesion = sessionToken,
|
||||
DebeCambiarContrasena = user.DebeCambiarContrasena
|
||||
};
|
||||
|
||||
return LoginResult.Ok(sessionUser);
|
||||
}
|
||||
|
||||
public void Logout(string sessionToken, string domainName)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(sessionToken))
|
||||
{
|
||||
_userSessionRepository.EndSession(sessionToken, domainName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
using System;
|
||||
using System.Security.Cryptography;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
namespace SIG.Web.AppCode.Services.Security
|
||||
{
|
||||
public sealed class PasswordHasher : IPasswordHasher
|
||||
{
|
||||
private const int SaltSize = 16;
|
||||
private const int HashSize = 32;
|
||||
private const int Iterations = 100000;
|
||||
public string HashPassword(string password)
|
||||
{
|
||||
byte[] salt = new byte[SaltSize];
|
||||
using (var rng = RandomNumberGenerator.Create()) rng.GetBytes(salt);
|
||||
byte[] hash = Derive(password, salt, Iterations);
|
||||
return "PBKDF2-SHA256$" + Iterations + "$" + Convert.ToBase64String(salt) + "$" + Convert.ToBase64String(hash);
|
||||
}
|
||||
public bool VerifyPassword(string password, string storedHash)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(storedHash)) return false;
|
||||
string[] parts = storedHash.Split('$');
|
||||
if (parts.Length != 4 || parts[0] != "PBKDF2-SHA256") return false;
|
||||
int iterations; if (!int.TryParse(parts[1], out iterations)) return false;
|
||||
byte[] salt = Convert.FromBase64String(parts[2]);
|
||||
byte[] expected = Convert.FromBase64String(parts[3]);
|
||||
byte[] actual = Derive(password, salt, iterations);
|
||||
return FixedTimeEquals(actual, expected);
|
||||
}
|
||||
private static byte[] Derive(string password, byte[] salt, int iterations)
|
||||
{
|
||||
using (var pbkdf2 = new Rfc2898DeriveBytes(password, salt, iterations, HashAlgorithmName.SHA256)) return pbkdf2.GetBytes(HashSize);
|
||||
}
|
||||
private static bool FixedTimeEquals(byte[] left, byte[] right)
|
||||
{
|
||||
if (left == null || right == null || left.Length != right.Length) return false;
|
||||
int diff = 0; for (int i = 0; i < left.Length; i++) diff |= left[i] ^ right[i];
|
||||
return diff == 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using SIG.Web.AppCode.Contracts.Database;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Services.Database;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Security
|
||||
{
|
||||
public sealed class PermissionService : IPermissionService
|
||||
{
|
||||
private readonly IDbExecutor _dbExecutor;
|
||||
|
||||
public PermissionService(IDbExecutor dbExecutor)
|
||||
{
|
||||
_dbExecutor = dbExecutor;
|
||||
}
|
||||
|
||||
public bool HasPermission(int cveUser, string permissionCode)
|
||||
{
|
||||
if (cveUser <= 0 || string.IsNullOrWhiteSpace(permissionCode))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var result = _dbExecutor.Execute(null, connection =>
|
||||
{
|
||||
using (IDbCommand command = connection.CreateCommand())
|
||||
{
|
||||
StoredProcedureCommand.Configure(command, "dbo.PA_Sis_PermisoCheck", cveUser);
|
||||
StoredProcedureCommand.AddInput(command, "@CodigoPermiso", permissionCode.Trim(), DbType.String);
|
||||
|
||||
object value = command.ExecuteScalar();
|
||||
StoredProcedureCommand.EnsureSuccess(command);
|
||||
return value != null && value != DBNull.Value && Convert.ToBoolean(value);
|
||||
}
|
||||
});
|
||||
|
||||
return result.Success && result.Data;
|
||||
}
|
||||
|
||||
public bool CanAccessPage(int cveUser, string pageUrl)
|
||||
{
|
||||
if (cveUser <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
string normalizedUrl = NormalizePageUrl(pageUrl);
|
||||
|
||||
if (IsPublicPage(normalizedUrl))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
var result = _dbExecutor.Execute(null, connection =>
|
||||
{
|
||||
using (IDbCommand command = connection.CreateCommand())
|
||||
{
|
||||
StoredProcedureCommand.Configure(command, "dbo.PA_Sis_PaginaAccessCheck", cveUser);
|
||||
StoredProcedureCommand.AddInput(command, "@PaginaUrl", normalizedUrl, DbType.String);
|
||||
|
||||
object value = command.ExecuteScalar();
|
||||
StoredProcedureCommand.EnsureSuccess(command);
|
||||
return value != null && value != DBNull.Value && Convert.ToBoolean(value);
|
||||
}
|
||||
});
|
||||
|
||||
return result.Success && result.Data;
|
||||
}
|
||||
|
||||
private static string NormalizePageUrl(string pageUrl)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(pageUrl))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
string value = pageUrl.Trim();
|
||||
|
||||
if (value.StartsWith("~/", StringComparison.Ordinal))
|
||||
{
|
||||
value = value.Substring(2);
|
||||
}
|
||||
|
||||
if (value.StartsWith("/", StringComparison.Ordinal))
|
||||
{
|
||||
value = value.Substring(1);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
private static bool IsPublicPage(string normalizedUrl)
|
||||
{
|
||||
return normalizedUrl.Equals("Login.aspx", StringComparison.OrdinalIgnoreCase) ||
|
||||
normalizedUrl.Equals("Logout.aspx", StringComparison.OrdinalIgnoreCase) ||
|
||||
normalizedUrl.Equals("AccessDenied.aspx", StringComparison.OrdinalIgnoreCase) ||
|
||||
normalizedUrl.Equals("Error.aspx", StringComparison.OrdinalIgnoreCase);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Security;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Security
|
||||
{
|
||||
public sealed class PublicRegistrationService : IPublicRegistrationService
|
||||
{
|
||||
private readonly IUserAdministrationRepository _repository;
|
||||
private readonly IPasswordHasher _passwordHasher;
|
||||
private readonly IEmailSender _emailSender;
|
||||
public PublicRegistrationService(IUserAdministrationRepository repository, IPasswordHasher passwordHasher, IEmailSender emailSender) { _repository = repository; _passwordHasher = passwordHasher; _emailSender = emailSender; }
|
||||
|
||||
public DbResult<bool> Validate(PublicRegistrationDraft draft, string domainName)
|
||||
{
|
||||
string error = ValidateRequired(draft);
|
||||
return error == null ? _repository.ValidateRegistration(draft.NombreUsuario, draft.CorreoElectronico, draft.RFC, domainName) : DbResult<bool>.Fail(error, error, null);
|
||||
}
|
||||
|
||||
public DbResult<List<StateOptionModel>> ListStates(string domainName) { return _repository.ListStates(domainName); }
|
||||
|
||||
public DbResult<bool> Register(PublicRegistrationDraft draft, string verificationBaseUrl, string domainName)
|
||||
{
|
||||
DbResult<bool> validation = Validate(draft, domainName); if (!validation.Success) return validation;
|
||||
if (!_emailSender.IsConfigured) return DbResult<bool>.Fail("El envío de correo todavía no está configurado. Contacta a Sistemas.", "SMTP no configurado.", null);
|
||||
string token = CreateToken();
|
||||
DbResult<RegistrationCreatedModel> created = _repository.CreateRegistration(draft, _passwordHasher.HashPassword(draft.Contrasena), HashToken(token), domainName);
|
||||
if (!created.Success) return DbResult<bool>.Fail(created.UserMessage, created.TechnicalMessage, created.Exception);
|
||||
try
|
||||
{
|
||||
_emailSender.SendVerification(draft.CorreoElectronico, verificationBaseUrl + (verificationBaseUrl.Contains("?") ? "&" : "?") + "token=" + Uri.EscapeDataString(token));
|
||||
return DbResult<bool>.Ok(true);
|
||||
}
|
||||
catch (Exception ex) { return DbResult<bool>.Fail("La cuenta quedó pendiente, pero no fue posible enviar el correo. Contacta a Sistemas para reenviarlo.", ex.Message, ex); }
|
||||
}
|
||||
|
||||
public DbResult<bool> Verify(string token, string domainName)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(token) ? DbResult<bool>.Fail("La liga de verificación no es válida.", "Token vacío.", null) : _repository.VerifyEmail(HashToken(token), domainName);
|
||||
}
|
||||
|
||||
private static string ValidateRequired(PublicRegistrationDraft d)
|
||||
{
|
||||
if (d == null) return "Captura los datos del registro.";
|
||||
if (string.IsNullOrWhiteSpace(d.NombreUsuario) || string.IsNullOrWhiteSpace(d.CorreoElectronico) || string.IsNullOrWhiteSpace(d.Contrasena)) return "Completa los datos de usuario.";
|
||||
if (d.Contrasena.Length < 8) return "La contraseña debe tener al menos 8 caracteres.";
|
||||
if (string.IsNullOrWhiteSpace(d.RFC) || string.IsNullOrWhiteSpace(d.RazonSocial) || string.IsNullOrWhiteSpace(d.Direccion) || string.IsNullOrWhiteSpace(d.Colonia) || string.IsNullOrWhiteSpace(d.Ciudad) || d.CveSATEstado <= 0) return "Completa los datos obligatorios de la empresa.";
|
||||
return null;
|
||||
}
|
||||
|
||||
private static string CreateToken() { byte[] bytes = new byte[32]; using (var rng = RandomNumberGenerator.Create()) rng.GetBytes(bytes); return Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_'); }
|
||||
private static string HashToken(string token) { using (SHA256 sha = SHA256.Create()) { byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(token)); var value = new StringBuilder(64); foreach (byte item in hash) value.Append(item.ToString("x2")); return value.ToString(); } }
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using System.Net;
|
||||
using System.Net.Mail;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
|
||||
namespace SIG.Web.AppCode.Services.Security
|
||||
{
|
||||
public sealed class SmtpEmailSender : IEmailSender
|
||||
{
|
||||
public bool IsConfigured { get { return !string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["SmtpHost"]) && !string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["EmailFrom"]); } }
|
||||
|
||||
public void SendVerification(string recipient, string verificationUrl)
|
||||
{
|
||||
if (!IsConfigured) throw new InvalidOperationException("El envío de correo no se encuentra configurado.");
|
||||
int port; if (!int.TryParse(ConfigurationManager.AppSettings["SmtpPort"], out port)) port = 25;
|
||||
bool ssl; bool.TryParse(ConfigurationManager.AppSettings["SmtpEnableSsl"], out ssl);
|
||||
using (var message = new MailMessage(ConfigurationManager.AppSettings["EmailFrom"], recipient))
|
||||
using (var client = new SmtpClient(ConfigurationManager.AppSettings["SmtpHost"], port))
|
||||
{
|
||||
message.Subject = "Verifica tu correo - Plataforma de Desarrolladores";
|
||||
message.IsBodyHtml = true;
|
||||
message.Body = "<p>Para concluir la creación de tu cuenta, abre la siguiente liga:</p><p><a href=\"" + WebUtility.HtmlEncode(verificationUrl) + "\">Verificar mi correo</a></p><p>La liga vence en 24 horas.</p>";
|
||||
client.EnableSsl = ssl;
|
||||
string user = ConfigurationManager.AppSettings["SmtpUser"];
|
||||
if (!string.IsNullOrWhiteSpace(user)) client.Credentials = new NetworkCredential(user, ConfigurationManager.AppSettings["SmtpPassword"]);
|
||||
client.Send(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
154
SIG.Web/App_Code/Configuration/AppServices.cs
Normal file
154
SIG.Web/App_Code/Configuration/AppServices.cs
Normal file
@@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Configuration;
|
||||
using SIG.Web.AppCode.Contracts.Bitacora;
|
||||
using SIG.Web.AppCode.Contracts.Database;
|
||||
using SIG.Web.AppCode.Contracts.Facturacion;
|
||||
using SIG.Web.AppCode.Contracts.Fraccionamientos;
|
||||
using SIG.Web.AppCode.Contracts.General;
|
||||
using SIG.Web.AppCode.Contracts.Menu;
|
||||
using SIG.Web.AppCode.Contracts.Search;
|
||||
using SIG.Web.AppCode.Contracts.Security;
|
||||
using SIG.Web.AppCode.Contracts.Tramites;
|
||||
using SIG.Web.AppCode.Notifications.Contracts;
|
||||
using SIG.Web.AppCode.Notifications.Services;
|
||||
using SIG.Web.AppCode.Repositories.Bitacora;
|
||||
using SIG.Web.AppCode.Repositories.Database;
|
||||
using SIG.Web.AppCode.Repositories.Facturacion;
|
||||
using SIG.Web.AppCode.Repositories.General;
|
||||
using SIG.Web.AppCode.Repositories.Menu;
|
||||
using SIG.Web.AppCode.Repositories.Fraccionamientos;
|
||||
using SIG.Web.AppCode.Repositories.Security;
|
||||
using SIG.Web.AppCode.Repositories.Tramites;
|
||||
using SIG.Web.AppCode.Services.Bitacora;
|
||||
using SIG.Web.AppCode.Services.Facturacion;
|
||||
using SIG.Web.AppCode.Services.Fraccionamientos;
|
||||
using SIG.Web.AppCode.Services.Menu;
|
||||
using SIG.Web.AppCode.Services.Search;
|
||||
using SIG.Web.AppCode.Services.Security;
|
||||
using SIG.Web.AppCode.Services.Tramites;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
namespace SIG.Web.AppCode.Configuration
|
||||
{
|
||||
public static class AppServices
|
||||
{
|
||||
public static IDbConnectionFactory DbConnectionFactory { get; private set; }
|
||||
private static IDbExecutor DbExecutor { get; set; }
|
||||
public static IBitacoraService BitacoraService { get; private set; }
|
||||
public static IPasswordHasher PasswordHasher { get; private set; }
|
||||
public static ICaptchaService CaptchaService { get; private set; }
|
||||
public static IUserRepository UserRepository { get; private set; }
|
||||
private static IUserAdministrationRepository UserAdministrationRepository { get; set; }
|
||||
public static IUserAdministrationService UserAdministrationService { get; private set; }
|
||||
public static IGeneralCatalogRepository GeneralCatalogRepository { get; private set; }
|
||||
public static IFraccionamientoService FraccionamientoService { get; private set; }
|
||||
public static ITramiteCatalogService TramiteCatalogService { get; private set; }
|
||||
public static ICfdiTimbradoService CfdiTimbradoService { get; private set; }
|
||||
public static IPublicRegistrationService PublicRegistrationService { get; private set; }
|
||||
public static ILoginAttemptRepository LoginAttemptRepository { get; private set; }
|
||||
public static IUserSessionRepository UserSessionRepository { get; private set; }
|
||||
public static ILoginService LoginService { get; private set; }
|
||||
public static IUserContextProvider UserContext { get; private set; }
|
||||
public static IPermissionService PermissionService { get; private set; }
|
||||
public static IMenuProvider MenuProvider { get; private set; }
|
||||
public static INotificationCenter NotificationCenter { get; private set; }
|
||||
public static IBuscadorCatalogoDataProvider SearchProvider { get; private set; }
|
||||
|
||||
public static void Configure()
|
||||
{
|
||||
DbConnectionFactory = new DbConnectionFactory();
|
||||
DbExecutor = new DbExecutor(DbConnectionFactory);
|
||||
|
||||
PasswordHasher = new PasswordHasher();
|
||||
CaptchaService = new RecaptchaV2Service(
|
||||
ReadBooleanSetting("RecaptchaEnabled", "SIG_RECAPTCHA_ENABLED", false),
|
||||
ReadSetting("RecaptchaSiteKey", "SIG_RECAPTCHA_SITE_KEY"),
|
||||
ReadSetting("RecaptchaSecretKey", "SIG_RECAPTCHA_SECRET_KEY"));
|
||||
|
||||
UserContext = new WebFormsUserContextProvider();
|
||||
|
||||
var bitacoraConnectionFactory =
|
||||
new BitacoraDbConnectionFactory();
|
||||
var bitacoraDbExecutor =
|
||||
new DbExecutor(bitacoraConnectionFactory);
|
||||
|
||||
BitacoraService = new BitacoraService(
|
||||
new BitacoraRepository(bitacoraDbExecutor),
|
||||
new WebFormsBitacoraContextoProvider(UserContext));
|
||||
|
||||
UserRepository = new UserRepository(DbExecutor);
|
||||
UserAdministrationRepository = new UserAdministrationRepository(DbExecutor);
|
||||
UserAdministrationService = new UserAdministrationService(
|
||||
UserAdministrationRepository,
|
||||
PasswordHasher,
|
||||
BitacoraService);
|
||||
GeneralCatalogRepository = new GeneralCatalogRepository(DbExecutor);
|
||||
FraccionamientoService = new FraccionamientoService(
|
||||
new FraccionamientoRepository(DbExecutor),
|
||||
BitacoraService);
|
||||
TramiteCatalogService = new TramiteCatalogService(
|
||||
new TramiteCatalogRepository(DbExecutor),
|
||||
BitacoraService);
|
||||
CfdiTimbradoService = new CfdiTimbradoService(
|
||||
new CfdiRepository(DbExecutor),
|
||||
new ProfactCfdi40XmlBuilder(),
|
||||
new IPacTimbradoClient[]
|
||||
{
|
||||
new ProfactPacTimbradoClient(
|
||||
new ConfigurationPacCredentialProvider())
|
||||
},
|
||||
new ICfdiTimbradoFinalizadoHandler[0]);
|
||||
LoginAttemptRepository = new LoginAttemptRepository(DbExecutor);
|
||||
UserSessionRepository = new UserSessionRepository(DbExecutor);
|
||||
|
||||
IPermissionRepository permissionRepository =
|
||||
new PermissionRepository(DbExecutor);
|
||||
IMenuRepository menuRepository =
|
||||
new MenuRepository(DbExecutor);
|
||||
|
||||
PermissionService = new PermissionService(
|
||||
permissionRepository);
|
||||
MenuProvider = new MenuProvider(menuRepository);
|
||||
NotificationCenter = new DummyNotificationCenter();
|
||||
SearchProvider = new DummyBuscadorCatalogoDataProvider();
|
||||
|
||||
LoginService = new LoginService(
|
||||
UserRepository,
|
||||
PasswordHasher,
|
||||
LoginAttemptRepository,
|
||||
UserSessionRepository);
|
||||
|
||||
PublicRegistrationService = new PublicRegistrationService(
|
||||
UserAdministrationRepository,
|
||||
GeneralCatalogRepository,
|
||||
PasswordHasher,
|
||||
new SmtpEmailSender());
|
||||
}
|
||||
|
||||
private static string ReadSetting(
|
||||
string appSettingName,
|
||||
string environmentVariableName)
|
||||
{
|
||||
string environmentValue =
|
||||
Environment.GetEnvironmentVariable(environmentVariableName);
|
||||
|
||||
return string.IsNullOrWhiteSpace(environmentValue)
|
||||
? ConfigurationManager.AppSettings[appSettingName]
|
||||
: environmentValue;
|
||||
}
|
||||
|
||||
private static bool ReadBooleanSetting(
|
||||
string appSettingName,
|
||||
string environmentVariableName,
|
||||
bool defaultValue)
|
||||
{
|
||||
bool value;
|
||||
string configuredValue =
|
||||
ReadSetting(appSettingName, environmentVariableName);
|
||||
|
||||
return bool.TryParse(configuredValue, out value)
|
||||
? value
|
||||
: defaultValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,16 +46,19 @@ namespace SIG.Web.AppCode.Configuration
|
||||
"~/Metronic/assets/global/plugins/bootstrap-confirmation/bootstrap-confirmation.min.js",
|
||||
"~/Metronic/assets/global/plugins/bootbox/bootbox.min.js",
|
||||
"~/Metronic/assets/global/plugins/bootstrap-toastr/toastr.min.js",
|
||||
"~/Metronic/assets/layouts/layout3/scripts/jquery.datetimepicker.full.min.js",
|
||||
"~/Metronic/assets/global/scripts/metronic.js",
|
||||
"~/Metronic/assets/admin/layout/scripts/layout.js",
|
||||
"~/Metronic/assets/admin/layout/scripts/quick-sidebar.js",
|
||||
"~/Metronic/assets/admin/layout/scripts/demo.js",
|
||||
"~/Scripts/porcentaje-box.js",
|
||||
"~/Scripts/BitacoraGrid.js",
|
||||
"~/Scripts/DropdownGrid.js",
|
||||
"~/Scripts/UcBuscadorCatalogo.js",
|
||||
"~/Scripts/SigPdfViewer.js",
|
||||
"~/Scripts/SigPdfDrawer.js",
|
||||
"~/Scripts/custom.js"
|
||||
"~/Scripts/custom.js",
|
||||
"~/Scripts/sig-alerts.js"
|
||||
));
|
||||
|
||||
bundles.Add(new ScriptBundle("~/bundles/WebFormsJs").Include(
|
||||
@@ -108,18 +111,20 @@ namespace SIG.Web.AppCode.Configuration
|
||||
.Include("~/Metronic/assets/global/plugins/simple-line-icons/simple-line-icons.min.css", new CssRewriteUrlTransform())
|
||||
.Include(
|
||||
"~/Styles/porcentaje-box.css",
|
||||
"~/Styles/BitacoraGrid.css",
|
||||
"~/Styles/DropdownGrid.css",
|
||||
"~/Styles/UcBuscadorCatalogo.css",
|
||||
"~/Styles/Filtros.css",
|
||||
"~/Styles/SigPdfViewer.css",
|
||||
"~/Styles/SigPdfDrawer.css",
|
||||
"~/Styles/Estilos2.css",
|
||||
"~/Metronic/assets/global/plugins/bootstrap-switch/css/bootstrap-switch.min.css",
|
||||
"~/Metronic/assets/global/plugins/bootstrap-toastr/toastr.min.css",
|
||||
"~/Metronic/assets/layouts/layout3/css/jquery.datetimepicker.css",
|
||||
"~/Metronic/assets/global/plugins/select2/select2.css",
|
||||
"~/Metronic/assets/global/css/components.css",
|
||||
"~/Metronic/assets/global/css/plugins.css",
|
||||
"~/Metronic/assets/admin/layout/css/layout.css",
|
||||
"~/Metronic/assets/admin/layout/css/custom.css")
|
||||
"~/Metronic/assets/admin/layout/css/layout.css")
|
||||
.Include("~/Metronic/Carusel/slick.css", new CssRewriteUrlTransform())
|
||||
.Include("~/Metronic/Carusel/slick-theme.css", new CssRewriteUrlTransform()));
|
||||
}
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Data.SqlClient;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using SIG.Web.AppCode.Infrastructure;
|
||||
using SIG.Web.AppCode.Services.Errors;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
@@ -51,9 +52,12 @@ namespace SIG.Web.AppCode.Configuration
|
||||
|
||||
/*
|
||||
* El detalle t<EFBFBD>cnico completo siempre se guarda en log.
|
||||
* Solo el administrador puede verlo en la respuesta.
|
||||
* Solo el administrador o una solicitud local en depuracion
|
||||
* puede verlo en la respuesta.
|
||||
*/
|
||||
bool mostrarDetalle = cveRole == 1;
|
||||
bool mostrarDetalle =
|
||||
cveRole == 1 ||
|
||||
EsDepuracionLocal(context);
|
||||
|
||||
context.Server.ClearError();
|
||||
|
||||
@@ -114,6 +118,14 @@ namespace SIG.Web.AppCode.Configuration
|
||||
return "Ocurri<72> un error inesperado.";
|
||||
}
|
||||
|
||||
string controlledMessage =
|
||||
ControlledExceptionClassifier.GetUserMessage(exception);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(controlledMessage))
|
||||
{
|
||||
return controlledMessage;
|
||||
}
|
||||
|
||||
Exception baseException =
|
||||
exception.GetBaseException();
|
||||
|
||||
@@ -274,6 +286,22 @@ namespace SIG.Web.AppCode.Configuration
|
||||
context.ApplicationInstance.CompleteRequest();
|
||||
}
|
||||
|
||||
private static bool EsDepuracionLocal(
|
||||
HttpContext context)
|
||||
{
|
||||
try
|
||||
{
|
||||
return context != null &&
|
||||
context.IsDebuggingEnabled &&
|
||||
context.Request != null &&
|
||||
context.Request.IsLocal;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static UserSessionModel ObtenerUsuarioActual()
|
||||
{
|
||||
try
|
||||
@@ -0,0 +1,9 @@
|
||||
using SIG.Web.AppCode.Models.Bitacora;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Bitacora
|
||||
{
|
||||
public interface IBitacoraContextoProvider
|
||||
{
|
||||
BitacoraContextoModel Obtener();
|
||||
}
|
||||
}
|
||||
25
SIG.Web/App_Code/Contracts/Bitacora/IBitacoraRepository.cs
Normal file
25
SIG.Web/App_Code/Contracts/Bitacora/IBitacoraRepository.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Bitacora;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Bitacora
|
||||
{
|
||||
public interface IBitacoraRepository
|
||||
{
|
||||
DbResult<long> Agregar(
|
||||
BitacoraEventoModel evento,
|
||||
BitacoraContextoModel contexto);
|
||||
|
||||
DbResult<List<BitacoraModel>> Listar(
|
||||
BitacoraFiltroModel filtro,
|
||||
int cveUsuarioEjecuta);
|
||||
|
||||
DbResult<ResultadoPaginado<BitacoraModel>> ConsultarResumen(
|
||||
BitacoraConsultaModel consulta,
|
||||
int cveUsuarioEjecuta);
|
||||
|
||||
DbResult<ResultadoPaginado<BitacoraModel>> Consultar(
|
||||
BitacoraConsultaModel consulta,
|
||||
int cveUsuarioEjecuta);
|
||||
}
|
||||
}
|
||||
19
SIG.Web/App_Code/Contracts/Bitacora/IBitacoraService.cs
Normal file
19
SIG.Web/App_Code/Contracts/Bitacora/IBitacoraService.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Bitacora;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Bitacora
|
||||
{
|
||||
public interface IBitacoraService
|
||||
{
|
||||
DbResult<long> Registrar(BitacoraEventoModel evento);
|
||||
|
||||
DbResult<List<BitacoraModel>> Listar(BitacoraFiltroModel filtro);
|
||||
|
||||
DbResult<ResultadoPaginado<BitacoraModel>> ConsultarResumen(
|
||||
BitacoraConsultaModel consulta);
|
||||
|
||||
DbResult<ResultadoPaginado<BitacoraModel>> Consultar(
|
||||
BitacoraConsultaModel consulta);
|
||||
}
|
||||
}
|
||||
113
SIG.Web/App_Code/Contracts/Facturacion/ICfdiContracts.cs
Normal file
113
SIG.Web/App_Code/Contracts/Facturacion/ICfdiContracts.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Facturacion;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Facturacion
|
||||
{
|
||||
public interface ICfdiRepository
|
||||
{
|
||||
DbResult<CfdiEmisorFiscalModel> ObtenerEmisor(
|
||||
int cveEmpresa,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiReceptorFiscalModel> ObtenerReceptor(
|
||||
int cveCliente,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<long> GuardarBorrador(
|
||||
CfdiDocumentoModel documento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiDocumentoModel> ObtenerDocumento(
|
||||
long cveCfdiDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiTimbradoInicioModel> IniciarIntento(
|
||||
long cveCfdiDocumento,
|
||||
Guid idSolicitud,
|
||||
string proveedorPac,
|
||||
string ambiente,
|
||||
string referenciaContratoPac,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiTimbradoIntentoModel> FinalizarIntento(
|
||||
long cveCfdiTimbrado,
|
||||
CfdiPacResultadoModel resultadoPac,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<List<CfdiTimbradoIntentoModel>> ListarIntentos(
|
||||
long cveCfdiDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiArchivoModel> ObtenerXml(
|
||||
long cveCfdiDocumento,
|
||||
bool timbrado,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
}
|
||||
|
||||
public interface ICfdiXmlBuilder
|
||||
{
|
||||
DbResult<CfdiXmlBuildResultModel> Construir(
|
||||
CfdiSolicitudModel solicitud,
|
||||
CfdiEmisorFiscalModel emisor,
|
||||
CfdiReceptorFiscalModel receptor);
|
||||
}
|
||||
|
||||
public interface IPacTimbradoClient
|
||||
{
|
||||
string Proveedor { get; }
|
||||
|
||||
CfdiPacResultadoModel Timbrar(
|
||||
CfdiPacSolicitudModel solicitud);
|
||||
}
|
||||
|
||||
public interface IPacCredentialProvider
|
||||
{
|
||||
string ObtenerCredencial(string referencia);
|
||||
}
|
||||
|
||||
public interface ICfdiTimbradoFinalizadoHandler
|
||||
{
|
||||
DbResult<bool> AlFinalizar(
|
||||
CfdiTimbradoFinalizadoContext contexto);
|
||||
}
|
||||
|
||||
public interface ICfdiTimbradoService
|
||||
{
|
||||
DbResult<long> GuardarBorrador(
|
||||
CfdiSolicitudModel solicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiTimbradoResultadoModel> Timbrar(
|
||||
long cveCfdiDocumento,
|
||||
Guid? idSolicitud,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiDocumentoModel> ObtenerDocumento(
|
||||
long cveCfdiDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<List<CfdiTimbradoIntentoModel>> ListarIntentos(
|
||||
long cveCfdiDocumento,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
|
||||
DbResult<CfdiArchivoModel> ObtenerXml(
|
||||
long cveCfdiDocumento,
|
||||
bool timbrado,
|
||||
int cveUsuarioEjecuta,
|
||||
string nombreDominio);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Fraccionamientos;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
{
|
||||
public interface IFraccionamientoRepository
|
||||
{
|
||||
DbResult<List<FraccionamientoClienteOptionModel>> ListClients(int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoEstatusOptionModel>> ListStatuses(int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoModel>> List(string text, int? clientId, bool includeInactive, int executingUser, string domainName);
|
||||
DbResult<FraccionamientoModel> Get(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> Save(FraccionamientoModel development, int executingUser, string domainName);
|
||||
DbResult<bool> Delete(int developmentId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoEtapaModel>> ListStages(int developmentId, int executingUser, string domainName);
|
||||
DbResult<FraccionamientoEtapaModel> GetStage(int stageId, int executingUser, string domainName);
|
||||
DbResult<FraccionamientoEtapaAvanceResultModel> UpdateStageProgress(
|
||||
int stageId,
|
||||
decimal progress,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoEtapaGisModel> GetStageGis(
|
||||
int stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoEtapaGisModel> SaveStageGis(
|
||||
FraccionamientoEtapaGisModel gis,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<List<FraccionamientoEtapaTramiteModel>> ListStageProcedures(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> SaveStage(FraccionamientoEtapaModel stage, int executingUser, string domainName);
|
||||
DbResult<bool> DeleteStage(int stageId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoLoteModel>> ListLots(
|
||||
int developmentId,
|
||||
int? stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoLoteModel> GetLot(
|
||||
int developmentId,
|
||||
int lotId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<int> SaveLot(
|
||||
int developmentId,
|
||||
FraccionamientoLoteModel lot,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<List<FraccionamientoLoteModel>> SaveLots(
|
||||
int developmentId,
|
||||
int stageId,
|
||||
IList<FraccionamientoLoteModel> lots,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<bool> DeleteLot(
|
||||
int developmentId,
|
||||
int lotId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<int> ClearStageLots(
|
||||
int developmentId,
|
||||
int stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Fraccionamientos;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Fraccionamientos
|
||||
{
|
||||
public interface IFraccionamientoService
|
||||
{
|
||||
DbResult<List<FraccionamientoClienteOptionModel>> ListClients(int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoEstatusOptionModel>> ListStatuses(int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoModel>> List(string text, int? clientId, bool includeInactive, int executingUser, string domainName);
|
||||
DbResult<FraccionamientoModel> Get(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> Save(FraccionamientoModel development, int executingUser, string domainName);
|
||||
DbResult<bool> Delete(int developmentId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoEtapaModel>> ListStages(int developmentId, int executingUser, string domainName);
|
||||
DbResult<FraccionamientoEtapaModel> GetStage(
|
||||
int stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoEtapaAvanceResultModel> UpdateStageProgress(
|
||||
int stageId,
|
||||
decimal progress,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoEtapaGisModel> GetStageGis(
|
||||
int stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoEtapaGisModel> SaveStageGis(
|
||||
FraccionamientoEtapaGisModel gis,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<List<FraccionamientoEtapaTramiteModel>> ListStageProcedures(int developmentId, int executingUser, string domainName);
|
||||
DbResult<int> SaveStage(FraccionamientoEtapaModel stage, int executingUser, string domainName);
|
||||
DbResult<bool> DeleteStage(int stageId, int executingUser, string domainName);
|
||||
DbResult<List<FraccionamientoLoteModel>> ListLots(
|
||||
int developmentId,
|
||||
int? stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<FraccionamientoLoteModel> GetLot(
|
||||
int developmentId,
|
||||
int lotId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<int> SaveLot(
|
||||
int developmentId,
|
||||
FraccionamientoLoteModel lot,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<int> SaveLots(
|
||||
int developmentId,
|
||||
int stageId,
|
||||
IList<FraccionamientoLoteModel> lots,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<bool> DeleteLot(
|
||||
int developmentId,
|
||||
int lotId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
DbResult<int> ClearStageLots(
|
||||
int developmentId,
|
||||
int stageId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.General;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.General
|
||||
{
|
||||
public interface IGeneralCatalogRepository
|
||||
{
|
||||
DbResult<List<StateOptionModel>> ListStates(string domainName);
|
||||
DbResult<PostalCodeLookupModel> GetPostalCode(string postalCode, string domainName);
|
||||
}
|
||||
}
|
||||
12
SIG.Web/App_Code/Contracts/Menu/IMenuRepository.cs
Normal file
12
SIG.Web/App_Code/Contracts/Menu/IMenuRepository.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Session;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Menu
|
||||
{
|
||||
public interface IMenuRepository
|
||||
{
|
||||
DbResult<List<MenuItemModel>> ListModules(
|
||||
UserSessionModel user);
|
||||
}
|
||||
}
|
||||
12
SIG.Web/App_Code/Contracts/Security/ICaptchaService.cs
Normal file
12
SIG.Web/App_Code/Contracts/Security/ICaptchaService.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Security
|
||||
{
|
||||
public interface ICaptchaService
|
||||
{
|
||||
bool IsEnabled { get; }
|
||||
bool IsConfigured { get; }
|
||||
string SiteKey { get; }
|
||||
DbResult<bool> Verify(string responseToken, string remoteIp, string expectedHostName);
|
||||
}
|
||||
}
|
||||
15
SIG.Web/App_Code/Contracts/Security/IPermissionRepository.cs
Normal file
15
SIG.Web/App_Code/Contracts/Security/IPermissionRepository.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Security
|
||||
{
|
||||
public interface IPermissionRepository
|
||||
{
|
||||
DbResult<bool> HasPermission(
|
||||
int cveUser,
|
||||
string permissionCode);
|
||||
|
||||
DbResult<bool> CanAccessPage(
|
||||
int cveUser,
|
||||
string normalizedPageUrl);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.General;
|
||||
using SIG.Web.AppCode.Models.Security;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Security
|
||||
{
|
||||
public interface IPublicRegistrationService
|
||||
{
|
||||
DbResult<bool> ValidateUsernameAvailability(string username, string domainName);
|
||||
DbResult<bool> ValidateEmailAvailability(string email, string domainName);
|
||||
DbResult<bool> ValidateRfcAvailability(string rfc, string domainName);
|
||||
DbResult<bool> Validate(PublicRegistrationDraft draft, string domainName);
|
||||
DbResult<List<StateOptionModel>> ListStates(string domainName);
|
||||
DbResult<PostalCodeLookupModel> GetPostalCode(string postalCode, string domainName);
|
||||
DbResult<bool> Register(PublicRegistrationDraft draft, string verificationBaseUrl, string domainName);
|
||||
DbResult<bool> Verify(string token, string domainName);
|
||||
}
|
||||
@@ -9,14 +9,15 @@ namespace SIG.Web.AppCode.Contracts.Security
|
||||
DbResult<List<UserAdministrationModel>> ListUsers(string text, int executingUser, string domainName);
|
||||
DbResult<UserAdministrationModel> GetUser(int userId, int executingUser, string domainName);
|
||||
DbResult<List<RoleOptionModel>> ListRoles(int executingUser, string domainName);
|
||||
DbResult<List<StateOptionModel>> ListStates(string domainName);
|
||||
DbResult<int> SaveUser(UserAdministrationModel user, string passwordHash, int executingUser, string domainName);
|
||||
DbResult<bool> DeleteUser(int userId, int executingUser, string domainName);
|
||||
DbResult<List<UserClientModel>> ListUserClients(int userId, int executingUser, string domainName);
|
||||
DbResult<bool> SaveUserClient(int userId, int clientId, int order, bool primary, int executingUser, string domainName);
|
||||
DbResult<bool> ValidateRegistrationUsername(string username, string domainName);
|
||||
DbResult<bool> ValidateRegistrationEmail(string email, string domainName);
|
||||
DbResult<bool> ValidateRegistrationRfc(string rfc, string domainName);
|
||||
DbResult<bool> ValidateRegistration(string username, string email, string rfc, string domainName);
|
||||
DbResult<RegistrationCreatedModel> CreateRegistration(PublicRegistrationDraft draft, string passwordHash, string tokenHash, string domainName);
|
||||
DbResult<bool> VerifyEmail(string tokenHash, string domainName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Security;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Security
|
||||
{
|
||||
public interface IUserAdministrationService
|
||||
{
|
||||
DbResult<List<UserAdministrationModel>> ListUsers(
|
||||
string text,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<UserAdministrationModel> GetUser(
|
||||
int userId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<List<RoleOptionModel>> ListRoles(
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<int> SaveUser(
|
||||
UserAdministrationModel user,
|
||||
string password,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<bool> DeleteUser(
|
||||
int userId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<List<UserClientModel>> ListUserClients(
|
||||
int userId,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
|
||||
DbResult<bool> SaveUserClient(
|
||||
int userId,
|
||||
int clientId,
|
||||
int order,
|
||||
bool primary,
|
||||
int executingUser,
|
||||
string domainName);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Tramites;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Tramites
|
||||
{
|
||||
public interface ITramiteCatalogRepository : ITramiteCatalogService
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.Collections.Generic;
|
||||
using SIG.Web.AppCode.Models.Common;
|
||||
using SIG.Web.AppCode.Models.Tramites;
|
||||
|
||||
namespace SIG.Web.AppCode.Contracts.Tramites
|
||||
{
|
||||
public interface ITramiteCatalogService
|
||||
{
|
||||
DbResult<List<EstatusSolicitudModel>> ListEstatus(string texto, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<EstatusSolicitudModel> GetEstatus(int id, int usuario, string dominio);
|
||||
DbResult<int> SaveEstatus(EstatusSolicitudModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeleteEstatus(int id, int usuario, string dominio);
|
||||
DbResult<List<TipoTramiteModel>> ListTiposTramite(string texto, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<TipoTramiteModel> GetTipoTramite(int id, int usuario, string dominio);
|
||||
DbResult<int> SaveTipoTramite(TipoTramiteModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeleteTipoTramite(int id, int usuario, string dominio);
|
||||
DbResult<List<TipoDocumentoModel>> ListTiposDocumento(string texto, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<TipoDocumentoModel> GetTipoDocumento(int id, int usuario, string dominio);
|
||||
DbResult<int> SaveTipoDocumento(TipoDocumentoModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeleteTipoDocumento(int id, int usuario, string dominio);
|
||||
DbResult<List<DocumentoRequeridoModel>> ListDocumentosRequeridos(int? tipoTramite, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<DocumentoRequeridoModel> GetDocumentoRequerido(int id, int usuario, string dominio);
|
||||
DbResult<int> SaveDocumentoRequerido(DocumentoRequeridoModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeleteDocumentoRequerido(int id, int usuario, string dominio);
|
||||
DbResult<List<TipoPreguntaModel>> ListTiposPregunta(int usuario, string dominio);
|
||||
DbResult<List<PreguntaTramiteModel>> ListPreguntas(int tipoTramite, bool soloConOpciones, int usuario, string dominio);
|
||||
DbResult<PreguntaTramiteModel> GetPregunta(int id, int usuario, string dominio);
|
||||
DbResult<int> SavePregunta(PreguntaTramiteModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeletePregunta(int id, int usuario, string dominio);
|
||||
DbResult<List<OpcionPreguntaModel>> ListOpciones(int pregunta, int usuario, string dominio);
|
||||
DbResult<OpcionPreguntaModel> GetOpcion(int id, int usuario, string dominio);
|
||||
DbResult<int> SaveOpcion(OpcionPreguntaModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeleteOpcion(int id, int usuario, string dominio);
|
||||
DbResult<List<TramitePagoModel>> ListPagos(int tipoTramite, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<TramitePagoModel> GetPago(int id, int usuario, string dominio);
|
||||
DbResult<int> SavePago(TramitePagoModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeletePago(int id, int usuario, string dominio);
|
||||
DbResult<List<TramitePagoDetalleModel>> ListPagoDetalles(int pago, int usuario, string dominio);
|
||||
DbResult<TramitePagoDetalleModel> GetPagoDetalle(int id, int usuario, string dominio);
|
||||
DbResult<int> SavePagoDetalle(TramitePagoDetalleModel model, int usuario, string dominio);
|
||||
DbResult<bool> DeletePagoDetalle(int id, int usuario, string dominio);
|
||||
DbResult<List<ProductoServicioTramiteModel>> ListProductosServicios(string texto, bool incluirInactivos, int usuario, string dominio);
|
||||
DbResult<ProductoServicioTramiteModel> GetProductoServicio(int id, int usuario, string dominio);
|
||||
DbResult<int> UpdateProductoServicioPrecio(int id, decimal precio, int usuario, string dominio);
|
||||
DbResult<bool> MoveOrder(TramiteCatalogOrderEntity entity, int id, int referenceId, bool placeAfter, int usuario, string dominio);
|
||||
}
|
||||
}
|
||||
29
SIG.Web/App_Code/Handlers/Fraccionamientos/PlantillaLotes.cs
Normal file
29
SIG.Web/App_Code/Handlers/Fraccionamientos/PlantillaLotes.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
using SIG.Web.AppCode.Utilities;
|
||||
using System.Web;
|
||||
|
||||
namespace SIG.Web.Pages.Fraccionamientos
|
||||
{
|
||||
public sealed class PlantillaLotes : IHttpHandler
|
||||
{
|
||||
public bool IsReusable
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void ProcessRequest(HttpContext context)
|
||||
{
|
||||
byte[] file = FraccionamientoLoteExcel.CreateTemplate(null);
|
||||
|
||||
context.Response.Clear();
|
||||
context.Response.ContentType =
|
||||
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
||||
context.Response.AddHeader(
|
||||
"Content-Disposition",
|
||||
"attachment; filename=Plantilla_Lotes.xlsx");
|
||||
context.Response.OutputStream.Write(file, 0, file.Length);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using SIG.Web.AppCode.Repositories.Database;
|
||||
|
||||
namespace SIG.Web.AppCode.Infrastructure
|
||||
{
|
||||
public class ControlledApplicationException : Exception
|
||||
{
|
||||
public ControlledApplicationException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public ControlledApplicationException(string message, Exception innerException)
|
||||
: base(message, innerException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public static class ControlledExceptionClassifier
|
||||
{
|
||||
public static bool IsControlled(Exception exception)
|
||||
{
|
||||
return FindControlled(exception) != null;
|
||||
}
|
||||
|
||||
public static Exception FindControlled(Exception exception)
|
||||
{
|
||||
Exception current = exception;
|
||||
|
||||
while (current != null)
|
||||
{
|
||||
var procedureException = current as StoredProcedureException;
|
||||
|
||||
if (procedureException != null && procedureException.ErrorType == 2)
|
||||
{
|
||||
return procedureException;
|
||||
}
|
||||
|
||||
if (current is ControlledApplicationException)
|
||||
{
|
||||
return current;
|
||||
}
|
||||
|
||||
current = current.InnerException;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static string GetUserMessage(Exception exception)
|
||||
{
|
||||
Exception controlled = FindControlled(exception);
|
||||
var procedureException = controlled as StoredProcedureException;
|
||||
|
||||
if (procedureException != null)
|
||||
{
|
||||
return procedureException.UserMessage;
|
||||
}
|
||||
|
||||
return controlled == null ? string.Empty : controlled.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
119
SIG.Web/App_Code/Infrastructure/Transactions/TransactionLogic.cs
Normal file
119
SIG.Web/App_Code/Infrastructure/Transactions/TransactionLogic.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.Transactions;
|
||||
|
||||
namespace SIG.Web.AppCode.Infrastructure.Transactions
|
||||
{
|
||||
public sealed class TransactionLogic : IDisposable
|
||||
{
|
||||
private static readonly TimeSpan DefaultTimeout = TimeSpan.FromMinutes(1);
|
||||
private static readonly TimeSpan MaximumTimeout = TimeSpan.FromMinutes(20);
|
||||
|
||||
private TransactionScope _scope;
|
||||
private bool _completed;
|
||||
private bool _disposed;
|
||||
|
||||
public TransactionLogic()
|
||||
: this(
|
||||
TransactionScopeOption.Required,
|
||||
IsolationLevel.ReadCommitted,
|
||||
DefaultTimeout)
|
||||
{
|
||||
}
|
||||
|
||||
public TransactionLogic(IsolationLevel isolationLevel)
|
||||
: this(
|
||||
TransactionScopeOption.Required,
|
||||
isolationLevel,
|
||||
DefaultTimeout)
|
||||
{
|
||||
}
|
||||
|
||||
public TransactionLogic(
|
||||
IsolationLevel isolationLevel,
|
||||
TimeSpan timeout)
|
||||
: this(
|
||||
TransactionScopeOption.Required,
|
||||
isolationLevel,
|
||||
timeout)
|
||||
{
|
||||
}
|
||||
|
||||
public TransactionLogic(TransactionScopeOption scopeOption)
|
||||
: this(
|
||||
scopeOption,
|
||||
IsolationLevel.ReadCommitted,
|
||||
DefaultTimeout)
|
||||
{
|
||||
}
|
||||
|
||||
public TransactionLogic(
|
||||
TransactionScopeOption scopeOption,
|
||||
IsolationLevel isolationLevel,
|
||||
TimeSpan timeout)
|
||||
{
|
||||
ValidateTimeout(timeout);
|
||||
|
||||
var options = new TransactionOptions
|
||||
{
|
||||
IsolationLevel = isolationLevel,
|
||||
Timeout = timeout
|
||||
};
|
||||
|
||||
_scope = new TransactionScope(scopeOption, options);
|
||||
}
|
||||
|
||||
public TransactionLogic(
|
||||
TransactionScopeOption scopeOption,
|
||||
TransactionOptions options)
|
||||
: this(
|
||||
scopeOption,
|
||||
options.IsolationLevel,
|
||||
options.Timeout)
|
||||
{
|
||||
}
|
||||
|
||||
public void Commit()
|
||||
{
|
||||
ThrowIfDisposed();
|
||||
|
||||
if (_completed)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
"La transacción ya fue confirmada.");
|
||||
}
|
||||
|
||||
_scope.Complete();
|
||||
_completed = true;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_disposed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_scope.Dispose();
|
||||
_scope = null;
|
||||
_disposed = true;
|
||||
}
|
||||
|
||||
private static void ValidateTimeout(TimeSpan timeout)
|
||||
{
|
||||
if (timeout <= TimeSpan.Zero || timeout > MaximumTimeout)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(
|
||||
"timeout",
|
||||
"El tiempo de la transacción debe ser mayor que cero y no exceder 20 minutos.");
|
||||
}
|
||||
}
|
||||
|
||||
private void ThrowIfDisposed()
|
||||
{
|
||||
if (_disposed)
|
||||
{
|
||||
throw new ObjectDisposedException(typeof(TransactionLogic).FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace SIG.Web.AppCode.Infrastructure.WebForms
|
||||
{
|
||||
public interface IGlobalErrorPresenter
|
||||
{
|
||||
void ShowGlobalError(string message);
|
||||
}
|
||||
}
|
||||
171
SIG.Web/App_Code/Infrastructure/WebForms/PageAlertManager.cs
Normal file
171
SIG.Web/App_Code/Infrastructure/WebForms/PageAlertManager.cs
Normal file
@@ -0,0 +1,171 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Web.Script.Serialization;
|
||||
using System.Web.UI;
|
||||
|
||||
namespace SIG.Web.AppCode.Infrastructure.WebForms
|
||||
{
|
||||
public static class PageAlertManager
|
||||
{
|
||||
private const string PendingAlertSessionKey =
|
||||
"SIG.Web.PendingPageAlert";
|
||||
|
||||
public static void Alert(
|
||||
Page page,
|
||||
string mensaje,
|
||||
TipoMensaje opcion = TipoMensaje.MsgInformacion,
|
||||
string jsAceptar = null,
|
||||
int timeout = 5,
|
||||
bool mostrarBotonCerrar = true,
|
||||
string textoConfirmacion = null,
|
||||
string textoCancelacion = null,
|
||||
string textoSegundoBoton = null,
|
||||
string jsSegundoBoton = null)
|
||||
{
|
||||
if (page == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(page));
|
||||
}
|
||||
|
||||
AlertRequest request = CreateRequest(
|
||||
mensaje,
|
||||
opcion,
|
||||
jsAceptar,
|
||||
timeout,
|
||||
mostrarBotonCerrar,
|
||||
textoConfirmacion,
|
||||
textoCancelacion,
|
||||
textoSegundoBoton,
|
||||
jsSegundoBoton);
|
||||
|
||||
RegisterAlert(page, request);
|
||||
}
|
||||
|
||||
public static void AlertNextRequest(
|
||||
Page page,
|
||||
string mensaje,
|
||||
TipoMensaje opcion = TipoMensaje.MsgInformacion,
|
||||
int timeout = 5,
|
||||
bool mostrarBotonCerrar = true)
|
||||
{
|
||||
if (page == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(page));
|
||||
}
|
||||
|
||||
page.Session[PendingAlertSessionKey] = CreateRequest(
|
||||
mensaje,
|
||||
opcion,
|
||||
null,
|
||||
timeout,
|
||||
mostrarBotonCerrar,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null);
|
||||
}
|
||||
|
||||
public static void ShowPendingAlert(Page page)
|
||||
{
|
||||
if (page == null || page.Session == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var request =
|
||||
page.Session[PendingAlertSessionKey] as AlertRequest;
|
||||
|
||||
if (request == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
page.Session.Remove(PendingAlertSessionKey);
|
||||
RegisterAlert(page, request);
|
||||
}
|
||||
|
||||
private static AlertRequest CreateRequest(
|
||||
string message,
|
||||
TipoMensaje type,
|
||||
string acceptScript,
|
||||
int timeout,
|
||||
bool showCloseButton,
|
||||
string acceptText,
|
||||
string cancelText,
|
||||
string secondButtonText,
|
||||
string secondButtonScript)
|
||||
{
|
||||
return new AlertRequest
|
||||
{
|
||||
Type = (int)type,
|
||||
Message = message ?? string.Empty,
|
||||
AcceptScript = acceptScript ?? string.Empty,
|
||||
Timeout = Math.Max(0, timeout),
|
||||
ShowCloseButton = showCloseButton,
|
||||
AcceptText = acceptText ?? string.Empty,
|
||||
CancelText = cancelText ?? string.Empty,
|
||||
SecondButtonText = secondButtonText ?? string.Empty,
|
||||
SecondButtonScript = secondButtonScript ?? string.Empty
|
||||
};
|
||||
}
|
||||
|
||||
private static void RegisterAlert(
|
||||
Page page,
|
||||
AlertRequest request)
|
||||
{
|
||||
var serializer = new JavaScriptSerializer();
|
||||
string payload = serializer.Serialize(
|
||||
request.ToClientDictionary());
|
||||
string script = string.Format(
|
||||
System.Globalization.CultureInfo.InvariantCulture,
|
||||
"window.SIG_PENDING_ALERTS = window.SIG_PENDING_ALERTS || [];" +
|
||||
"window.SIG_PENDING_ALERTS.push({0});" +
|
||||
"if (window.SIGAlerts && window.SIGAlerts.processPending) " +
|
||||
"{{ window.SIGAlerts.processPending(); }}",
|
||||
payload);
|
||||
|
||||
PageScriptRegistrar.RegistraScript(
|
||||
page,
|
||||
script,
|
||||
"Alert");
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
private sealed class AlertRequest
|
||||
{
|
||||
public int Type { get; set; }
|
||||
|
||||
public string Message { get; set; }
|
||||
|
||||
public string AcceptScript { get; set; }
|
||||
|
||||
public int Timeout { get; set; }
|
||||
|
||||
public bool ShowCloseButton { get; set; }
|
||||
|
||||
public string AcceptText { get; set; }
|
||||
|
||||
public string CancelText { get; set; }
|
||||
|
||||
public string SecondButtonText { get; set; }
|
||||
|
||||
public string SecondButtonScript { get; set; }
|
||||
|
||||
public Dictionary<string, object> ToClientDictionary()
|
||||
{
|
||||
return new Dictionary<string, object>
|
||||
{
|
||||
{ "type", Type },
|
||||
{ "message", Message },
|
||||
{ "acceptScript", AcceptScript },
|
||||
{ "timeout", Timeout },
|
||||
{ "showCloseButton", ShowCloseButton },
|
||||
{ "acceptText", AcceptText },
|
||||
{ "cancelText", CancelText },
|
||||
{ "secondButtonText", SecondButtonText },
|
||||
{ "secondButtonScript", SecondButtonScript }
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Web.UI;
|
||||
|
||||
namespace SIG.Web.AppCode.Infrastructure.WebForms
|
||||
{
|
||||
public static class PageScriptRegistrar
|
||||
{
|
||||
private static long _sequence;
|
||||
|
||||
public static void RegistraScript(
|
||||
Page page,
|
||||
string script,
|
||||
string sufijoClave = null,
|
||||
bool agregarEtiquetasScript = true,
|
||||
bool asegurarPuntoYComa = true)
|
||||
{
|
||||
if (page == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(page));
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(script))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
string normalizedScript = script.Trim();
|
||||
|
||||
if (asegurarPuntoYComa &&
|
||||
!normalizedScript.EndsWith(
|
||||
";",
|
||||
StringComparison.Ordinal))
|
||||
{
|
||||
normalizedScript += ";";
|
||||
}
|
||||
|
||||
long ticks = DateTime.UtcNow.Ticks;
|
||||
long sequence = Interlocked.Increment(ref _sequence);
|
||||
string key = string.Format(
|
||||
System.Globalization.CultureInfo.InvariantCulture,
|
||||
"SIG_Script_{0}_{1}{2}",
|
||||
ticks,
|
||||
sequence,
|
||||
NormalizeKeySuffix(sufijoClave));
|
||||
|
||||
ScriptManager.RegisterStartupScript(
|
||||
page,
|
||||
page.GetType(),
|
||||
key,
|
||||
normalizedScript,
|
||||
agregarEtiquetasScript);
|
||||
}
|
||||
|
||||
private static string NormalizeKeySuffix(string suffix)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(suffix))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var result = new StringBuilder("_");
|
||||
|
||||
foreach (char character in suffix.Trim())
|
||||
{
|
||||
if (char.IsLetterOrDigit(character) ||
|
||||
character == '_' ||
|
||||
character == '-')
|
||||
{
|
||||
result.Append(character);
|
||||
}
|
||||
}
|
||||
|
||||
return result.Length == 1
|
||||
? string.Empty
|
||||
: result.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
15
SIG.Web/App_Code/Infrastructure/WebForms/TipoMensaje.cs
Normal file
15
SIG.Web/App_Code/Infrastructure/WebForms/TipoMensaje.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace SIG.Web.AppCode.Infrastructure.WebForms
|
||||
{
|
||||
public enum TipoMensaje
|
||||
{
|
||||
MsgError = 1,
|
||||
MsgInformacion = 2,
|
||||
MsgConfirmacion = 3,
|
||||
MsgAdvertencia = 4,
|
||||
ToastExito = 5,
|
||||
ToastInformacion = 6,
|
||||
ToastError = 7,
|
||||
ToastAdvertencia = 8,
|
||||
MsgDosBotones = 9
|
||||
}
|
||||
}
|
||||
176
SIG.Web/App_Code/Models/Bitacora/BitacoraModels.cs
Normal file
176
SIG.Web/App_Code/Models/Bitacora/BitacoraModels.cs
Normal file
@@ -0,0 +1,176 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Bitacora
|
||||
{
|
||||
public sealed class BitacoraEventoModel
|
||||
{
|
||||
public BitacoraEventoModel()
|
||||
{
|
||||
DiscriminarCamposSinCambios = true;
|
||||
Campos = new List<BitacoraCampoEventoModel>();
|
||||
Relaciones = new List<BitacoraRelacionEventoModel>();
|
||||
}
|
||||
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public BitacoraTipoMovimiento TipoMovimiento { get; set; }
|
||||
public int? CveDefinicionAccion { get; set; }
|
||||
public string LlaveRegistro { get; set; }
|
||||
public string DescripcionMovimiento { get; set; }
|
||||
public int? CveUsuarioAutoriza { get; set; }
|
||||
public DateTime? FechaAutorizacion { get; set; }
|
||||
public bool DiscriminarCamposSinCambios { get; set; }
|
||||
public IList<BitacoraCampoEventoModel> Campos { get; set; }
|
||||
public IList<BitacoraRelacionEventoModel> Relaciones { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraCampoEventoModel
|
||||
{
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public object ValorAnterior { get; set; }
|
||||
public object ValorNuevo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraRelacionEventoModel
|
||||
{
|
||||
public BitacoraTipoRelacion TipoRelacion { get; set; }
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public object Valor { get; set; }
|
||||
public bool VisibleDesarrollador { get; set; }
|
||||
public string DescripcionRelacion { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraContextoModel
|
||||
{
|
||||
public int CveUsuarioEjecuta { get; set; }
|
||||
public string DireccionIP { get; set; }
|
||||
public string NombreEquipo { get; set; }
|
||||
public string Modulo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraFiltroModel
|
||||
{
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string LlaveRegistro { get; set; }
|
||||
public int? CveUsuarioEjecuta { get; set; }
|
||||
public DateTime? FechaInicio { get; set; }
|
||||
public DateTime? FechaFin { get; set; }
|
||||
public string Modulo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraConsultaModel
|
||||
{
|
||||
public BitacoraConsultaModel()
|
||||
{
|
||||
Filtros = new List<BitacoraCampoFiltroModel>();
|
||||
RelacionesMostrar = new List<BitacoraRelacionMostrarModel>();
|
||||
Pagina = 1;
|
||||
RegistrosPorPagina = 10;
|
||||
}
|
||||
|
||||
public IList<BitacoraCampoFiltroModel> Filtros { get; set; }
|
||||
public IList<BitacoraRelacionMostrarModel> RelacionesMostrar { get; set; }
|
||||
public int Pagina { get; set; }
|
||||
public int RegistrosPorPagina { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraCampoFiltroModel
|
||||
{
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public string Valor { get; set; }
|
||||
public bool SoloExistencia { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraRelacionMostrarModel
|
||||
{
|
||||
public int Orden { get; set; }
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string NombreCampoMostrarSQL { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraModel
|
||||
{
|
||||
public BitacoraModel()
|
||||
{
|
||||
Campos = new List<BitacoraCampoModel>();
|
||||
Relaciones = new List<BitacoraRelacionModel>();
|
||||
RelacionesMostrar = new List<BitacoraRelacionValorModel>();
|
||||
}
|
||||
|
||||
public long CveBitacora { get; set; }
|
||||
public int CveTabla { get; set; }
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string NombreTabla { get; set; }
|
||||
public byte CveTipoMovimiento { get; set; }
|
||||
public string TipoMovimiento { get; set; }
|
||||
public int? CveDefinicionAccion { get; set; }
|
||||
public string NombreAccion { get; set; }
|
||||
public string DescripcionAccion { get; set; }
|
||||
public int CveUsuarioEjecuta { get; set; }
|
||||
public string NombreUsuarioEjecuta { get; set; }
|
||||
public int? CveUsuarioAutoriza { get; set; }
|
||||
public DateTime? FechaAutorizacion { get; set; }
|
||||
public string LlaveRegistro { get; set; }
|
||||
public string DescripcionMovimiento { get; set; }
|
||||
public DateTime FechaMovimiento { get; set; }
|
||||
public string DireccionIP { get; set; }
|
||||
public string NombreEquipo { get; set; }
|
||||
public string Modulo { get; set; }
|
||||
public IList<BitacoraCampoModel> Campos { get; set; }
|
||||
public IList<BitacoraRelacionModel> Relaciones { get; set; }
|
||||
public IList<BitacoraRelacionValorModel> RelacionesMostrar { get; set; }
|
||||
|
||||
public bool TieneRelacionesMostrar
|
||||
{
|
||||
get
|
||||
{
|
||||
return RelacionesMostrar != null &&
|
||||
RelacionesMostrar.Count > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class BitacoraCampoModel
|
||||
{
|
||||
public long CveBitacoraCampo { get; set; }
|
||||
public long CveBitacora { get; set; }
|
||||
public int CveCampo { get; set; }
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public string NombreMostrar { get; set; }
|
||||
public string ValorAnterior { get; set; }
|
||||
public string ValorNuevo { get; set; }
|
||||
public string ValorAnteriorMostrar { get; set; }
|
||||
public string ValorNuevoMostrar { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraRelacionModel
|
||||
{
|
||||
public long CveBitacoraRelacion { get; set; }
|
||||
public long CveBitacora { get; set; }
|
||||
public byte CveTipoRelacion { get; set; }
|
||||
public string TipoRelacion { get; set; }
|
||||
public int CveTablaRelacionada { get; set; }
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public int? CveCampoRelacion { get; set; }
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public string LlaveRegistroRelacionada { get; set; }
|
||||
public long? ValorRelacionNumero { get; set; }
|
||||
public string ValorRelacionTexto { get; set; }
|
||||
public bool VisibleDesarrollador { get; set; }
|
||||
public string DescripcionRelacion { get; set; }
|
||||
}
|
||||
|
||||
public sealed class BitacoraRelacionValorModel
|
||||
{
|
||||
public long CveBitacora { get; set; }
|
||||
public int Orden { get; set; }
|
||||
public string NombreTablaSQL { get; set; }
|
||||
public string NombreTabla { get; set; }
|
||||
public string NombreCampoSQL { get; set; }
|
||||
public string NombreCampo { get; set; }
|
||||
public string ValorClave { get; set; }
|
||||
public string ValorMostrar { get; set; }
|
||||
}
|
||||
}
|
||||
15
SIG.Web/App_Code/Models/Bitacora/BitacoraTipoMovimiento.cs
Normal file
15
SIG.Web/App_Code/Models/Bitacora/BitacoraTipoMovimiento.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
namespace SIG.Web.AppCode.Models.Bitacora
|
||||
{
|
||||
public enum BitacoraTipoMovimiento : byte
|
||||
{
|
||||
Agregado = 1,
|
||||
Editado = 2,
|
||||
Eliminado = 3
|
||||
}
|
||||
|
||||
public enum BitacoraTipoRelacion : byte
|
||||
{
|
||||
Directa = 1,
|
||||
Relacionada = 2
|
||||
}
|
||||
}
|
||||
18
SIG.Web/App_Code/Models/Common/ResultadoPaginado.cs
Normal file
18
SIG.Web/App_Code/Models/Common/ResultadoPaginado.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Common
|
||||
{
|
||||
public sealed class ResultadoPaginado<T>
|
||||
{
|
||||
public ResultadoPaginado()
|
||||
{
|
||||
Registros = new List<T>();
|
||||
}
|
||||
|
||||
public IList<T> Registros { get; set; }
|
||||
public int Pagina { get; set; }
|
||||
public int RegistrosPorPagina { get; set; }
|
||||
public int TotalRegistros { get; set; }
|
||||
public int TotalPaginas { get; set; }
|
||||
}
|
||||
}
|
||||
273
SIG.Web/App_Code/Models/Facturacion/CfdiModels.cs
Normal file
273
SIG.Web/App_Code/Models/Facturacion/CfdiModels.cs
Normal file
@@ -0,0 +1,273 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Facturacion
|
||||
{
|
||||
public static class CfdiEstados
|
||||
{
|
||||
public const string Borrador = "BORRADOR";
|
||||
public const string Listo = "LISTO";
|
||||
public const string Timbrado = "TIMBRADO";
|
||||
public const string Error = "ERROR";
|
||||
public const string Revisar = "REVISAR";
|
||||
}
|
||||
|
||||
public static class CfdiIntentoEstados
|
||||
{
|
||||
public const string Pendiente = "PENDIENTE";
|
||||
public const string Exitoso = "EXITOSO";
|
||||
public const string Fallido = "FALLIDO";
|
||||
public const string Indeterminado = "INDETERMINADO";
|
||||
public const string Duplicado = "DUPLICADO";
|
||||
}
|
||||
|
||||
public sealed class CfdiSolicitudModel
|
||||
{
|
||||
public CfdiSolicitudModel()
|
||||
{
|
||||
Conceptos = new List<CfdiConceptoModel>();
|
||||
CfdiRelacionados = new List<CfdiRelacionadoModel>();
|
||||
}
|
||||
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public int CveEmpresa { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string TipoOrigen { get; set; }
|
||||
public long? CveOrigen { get; set; }
|
||||
public string ReferenciaOrigen { get; set; }
|
||||
public string Serie { get; set; }
|
||||
public string Folio { get; set; }
|
||||
public DateTime FechaEmision { get; set; }
|
||||
public string TipoComprobante { get; set; }
|
||||
public string FormaPago { get; set; }
|
||||
public string MetodoPago { get; set; }
|
||||
public string CondicionesPago { get; set; }
|
||||
public string Moneda { get; set; }
|
||||
public decimal? TipoCambio { get; set; }
|
||||
public string Exportacion { get; set; }
|
||||
public string UsoCfdi { get; set; }
|
||||
public string LugarExpedicion { get; set; }
|
||||
public IList<CfdiConceptoModel> Conceptos { get; private set; }
|
||||
public IList<CfdiRelacionadoModel> CfdiRelacionados { get; private set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiEmisorFiscalModel
|
||||
{
|
||||
public int CveEmisorFiscal { get; set; }
|
||||
public int CveEmpresa { get; set; }
|
||||
public string Rfc { get; set; }
|
||||
public string NombreFiscal { get; set; }
|
||||
public string RegimenFiscal { get; set; }
|
||||
public string CodigoPostal { get; set; }
|
||||
public string ProveedorPac { get; set; }
|
||||
public bool AmbienteProduccion { get; set; }
|
||||
public string ReferenciaCredencialPac { get; set; }
|
||||
public string ReferenciaContratoPac { get; set; }
|
||||
public string ReferenciaCertificadoCsd { get; set; }
|
||||
public string ReferenciaLlavePrivadaCsd { get; set; }
|
||||
public string NumeroCertificado { get; set; }
|
||||
public DateTime? VigenciaCertificadoDesde { get; set; }
|
||||
public DateTime? VigenciaCertificadoHasta { get; set; }
|
||||
public string HuellaCertificado { get; set; }
|
||||
public bool EsActivo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiReceptorFiscalModel
|
||||
{
|
||||
public int CveCliente { get; set; }
|
||||
public string Rfc { get; set; }
|
||||
public string NombreFiscal { get; set; }
|
||||
public string CodigoPostal { get; set; }
|
||||
public string RegimenFiscal { get; set; }
|
||||
public string UsoCfdi { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiConceptoModel
|
||||
{
|
||||
public CfdiConceptoModel()
|
||||
{
|
||||
Impuestos = new List<CfdiImpuestoConceptoModel>();
|
||||
}
|
||||
|
||||
public string ClaveProductoServicio { get; set; }
|
||||
public string NumeroIdentificacion { get; set; }
|
||||
public decimal Cantidad { get; set; }
|
||||
public string ClaveUnidad { get; set; }
|
||||
public string Unidad { get; set; }
|
||||
public string Descripcion { get; set; }
|
||||
public decimal ValorUnitario { get; set; }
|
||||
public decimal Descuento { get; set; }
|
||||
public string ObjetoImpuesto { get; set; }
|
||||
public IList<CfdiImpuestoConceptoModel> Impuestos { get; private set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiImpuestoConceptoModel
|
||||
{
|
||||
public bool EsRetencion { get; set; }
|
||||
public decimal Base { get; set; }
|
||||
public string Impuesto { get; set; }
|
||||
public string TipoFactor { get; set; }
|
||||
public decimal? TasaOCuota { get; set; }
|
||||
public decimal Importe { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiRelacionadoModel
|
||||
{
|
||||
public string TipoRelacion { get; set; }
|
||||
public string Uuid { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiDocumentoModel
|
||||
{
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public Guid IdentificadorDocumento { get; set; }
|
||||
public int CveEmpresa { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string TipoOrigen { get; set; }
|
||||
public long? CveOrigen { get; set; }
|
||||
public string ReferenciaOrigen { get; set; }
|
||||
public string VersionCfdi { get; set; }
|
||||
public string Serie { get; set; }
|
||||
public string Folio { get; set; }
|
||||
public DateTime FechaEmision { get; set; }
|
||||
public string TipoComprobante { get; set; }
|
||||
public string FormaPago { get; set; }
|
||||
public string MetodoPago { get; set; }
|
||||
public string CondicionesPago { get; set; }
|
||||
public string Moneda { get; set; }
|
||||
public decimal? TipoCambio { get; set; }
|
||||
public string Exportacion { get; set; }
|
||||
public string LugarExpedicion { get; set; }
|
||||
public decimal Subtotal { get; set; }
|
||||
public decimal Descuento { get; set; }
|
||||
public decimal TotalImpuestosTrasladados { get; set; }
|
||||
public decimal TotalImpuestosRetenidos { get; set; }
|
||||
public decimal Total { get; set; }
|
||||
public string RfcEmisor { get; set; }
|
||||
public string NombreEmisor { get; set; }
|
||||
public string RegimenFiscalEmisor { get; set; }
|
||||
public string RfcReceptor { get; set; }
|
||||
public string NombreReceptor { get; set; }
|
||||
public string DomicilioFiscalReceptor { get; set; }
|
||||
public string RegimenFiscalReceptor { get; set; }
|
||||
public string UsoCfdi { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public byte[] XmlSinTimbrar { get; set; }
|
||||
public byte[] HashXmlSinTimbrar { get; set; }
|
||||
public long? CveCfdiTimbradoVigente { get; set; }
|
||||
public string UuidVigente { get; set; }
|
||||
public byte[] VersionFila { get; set; }
|
||||
public CfdiEmisorFiscalModel EmisorFiscal { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiXmlBuildResultModel
|
||||
{
|
||||
public CfdiDocumentoModel Documento { get; set; }
|
||||
public string Xml { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiTimbradoInicioModel
|
||||
{
|
||||
public long CveCfdiTimbrado { get; set; }
|
||||
public int NumeroIntento { get; set; }
|
||||
public Guid IdSolicitud { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public bool PuedeEnviar { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiTimbradoIntentoModel
|
||||
{
|
||||
public long CveCfdiTimbrado { get; set; }
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public int NumeroIntento { get; set; }
|
||||
public Guid IdSolicitud { get; set; }
|
||||
public string ProveedorPac { get; set; }
|
||||
public string Ambiente { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public bool Exitoso { get; set; }
|
||||
public bool EsDuplicado { get; set; }
|
||||
public string IdOperacionPac { get; set; }
|
||||
public string ReferenciaContratoPac { get; set; }
|
||||
public string CodigoRespuesta { get; set; }
|
||||
public string MensajeRespuesta { get; set; }
|
||||
public string TipoExcepcion { get; set; }
|
||||
public string Uuid { get; set; }
|
||||
public DateTime FechaSolicitud { get; set; }
|
||||
public DateTime? FechaRespuesta { get; set; }
|
||||
public DateTime? FechaTimbrado { get; set; }
|
||||
public string RfcProveedorCertificacion { get; set; }
|
||||
public string NumeroCertificadoEmisor { get; set; }
|
||||
public string NumeroCertificadoSat { get; set; }
|
||||
public string SelloCfdi { get; set; }
|
||||
public string SelloSat { get; set; }
|
||||
public string CadenaTimbre { get; set; }
|
||||
public byte[] XmlTimbrado { get; set; }
|
||||
public byte[] HashXmlTimbrado { get; set; }
|
||||
public byte[] CodigoBidimensional { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiPacSolicitudModel
|
||||
{
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public long CveCfdiTimbrado { get; set; }
|
||||
public Guid IdSolicitud { get; set; }
|
||||
public string RfcEmisor { get; set; }
|
||||
public string ProveedorPac { get; set; }
|
||||
public bool AmbienteProduccion { get; set; }
|
||||
public string ReferenciaCredencialPac { get; set; }
|
||||
public string ReferenciaContratoPac { get; set; }
|
||||
public byte[] XmlSinTimbrar { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiPacResultadoModel
|
||||
{
|
||||
public bool Exitoso { get; set; }
|
||||
public bool ResultadoIndeterminado { get; set; }
|
||||
public string IdOperacionPac { get; set; }
|
||||
public string CodigoRespuesta { get; set; }
|
||||
public string MensajeRespuesta { get; set; }
|
||||
public string TipoExcepcion { get; set; }
|
||||
public string Uuid { get; set; }
|
||||
public DateTime? FechaTimbrado { get; set; }
|
||||
public string RfcProveedorCertificacion { get; set; }
|
||||
public string NumeroCertificadoEmisor { get; set; }
|
||||
public string NumeroCertificadoSat { get; set; }
|
||||
public string SelloCfdi { get; set; }
|
||||
public string SelloSat { get; set; }
|
||||
public string CadenaTimbre { get; set; }
|
||||
public byte[] XmlTimbrado { get; set; }
|
||||
public byte[] CodigoBidimensional { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiTimbradoResultadoModel
|
||||
{
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public long CveCfdiTimbrado { get; set; }
|
||||
public int NumeroIntento { get; set; }
|
||||
public bool TimbradoExitoso { get; set; }
|
||||
public bool EsDuplicado { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public string Uuid { get; set; }
|
||||
public string CodigoRespuesta { get; set; }
|
||||
public string Mensaje { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiArchivoModel
|
||||
{
|
||||
public long CveCfdiDocumento { get; set; }
|
||||
public long? CveCfdiTimbrado { get; set; }
|
||||
public bool EsTimbrado { get; set; }
|
||||
public string NombreArchivo { get; set; }
|
||||
public string TipoContenido { get; set; }
|
||||
public byte[] Contenido { get; set; }
|
||||
public byte[] HashSha256 { get; set; }
|
||||
}
|
||||
|
||||
public sealed class CfdiTimbradoFinalizadoContext
|
||||
{
|
||||
public CfdiDocumentoModel Documento { get; set; }
|
||||
public CfdiTimbradoIntentoModel Intento { get; set; }
|
||||
public int CveUsuarioEjecuta { get; set; }
|
||||
public string NombreDominio { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.Fraccionamientos
|
||||
{
|
||||
public sealed class FraccionamientoModel
|
||||
{
|
||||
public int CveFraccionamiento { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string Cliente { get; set; }
|
||||
public string Fraccionamiento { get; set; }
|
||||
public decimal? Hectareas { get; set; }
|
||||
public string Ubicacion { get; set; }
|
||||
public int CveEstatus { get; set; }
|
||||
public string Estatus { get; set; }
|
||||
public bool EsActivo { get; set; }
|
||||
public int NumeroEtapas { get; set; }
|
||||
public int NumeroLotes { get; set; }
|
||||
public decimal AvanceGlobal { get; set; }
|
||||
public DateTime FechaAlta { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoEtapaModel
|
||||
{
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveFraccionamiento { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public decimal? Hectareas { get; set; }
|
||||
public int Orden { get; set; }
|
||||
public decimal Avance { get; set; }
|
||||
public bool EsActivo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoEtapaAvanceResultModel
|
||||
{
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveFraccionamiento { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public decimal AvanceAnterior { get; set; }
|
||||
public decimal Avance { get; set; }
|
||||
public bool HuboCambio { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoEtapaGisModel
|
||||
{
|
||||
public int CveFraccionamientoEtapaGIS { get; set; }
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public int CveFraccionamiento { get; set; }
|
||||
public int CveCliente { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public string Nombre { get; set; }
|
||||
public string UrlVisualizacion { get; set; }
|
||||
public string NombreAnterior { get; set; }
|
||||
public string UrlVisualizacionAnterior { get; set; }
|
||||
public bool EsNuevo { get; set; }
|
||||
public bool HuboCambio { get; set; }
|
||||
public DateTime FechaAlta { get; set; }
|
||||
public DateTime? FechaModificacion { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoLoteModel
|
||||
{
|
||||
public int CveFraccionamientoLote { get; set; }
|
||||
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
|
||||
public int CveFraccionamiento { get; set; }
|
||||
|
||||
public int CveCliente { get; set; }
|
||||
|
||||
public string Etapa { get; set; }
|
||||
|
||||
public string Nombre { get; set; }
|
||||
|
||||
public string Tipo { get; set; }
|
||||
|
||||
public string Calle { get; set; }
|
||||
|
||||
public string Catastro { get; set; }
|
||||
|
||||
public decimal? MetrosCuadrados { get; set; }
|
||||
|
||||
public string Duplicador { get; set; }
|
||||
|
||||
public bool EsActivo { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoEtapaTramiteModel
|
||||
{
|
||||
public int CveFraccionamientoEtapa { get; set; }
|
||||
public string Etapa { get; set; }
|
||||
public int? CveSolicitud { get; set; }
|
||||
public string Folio { get; set; }
|
||||
public string TipoTramite { get; set; }
|
||||
public string EstatusSolicitud { get; set; }
|
||||
public bool? EsFinal { get; set; }
|
||||
public DateTime? FechaUltimoEstatus { get; set; }
|
||||
public string Comentarios { get; set; }
|
||||
}
|
||||
public sealed class FraccionamientoEstatusOptionModel
|
||||
{
|
||||
public int CveEstatus { get; set; }
|
||||
public string Estatus { get; set; }
|
||||
}
|
||||
|
||||
public sealed class FraccionamientoClienteOptionModel
|
||||
{
|
||||
public int CveCliente { get; set; }
|
||||
public string Cliente { get; set; }
|
||||
public string RFC { get; set; }
|
||||
}
|
||||
}
|
||||
36
SIG.Web/App_Code/Models/General/GeneralCatalogModels.cs
Normal file
36
SIG.Web/App_Code/Models/General/GeneralCatalogModels.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace SIG.Web.AppCode.Models.General
|
||||
{
|
||||
public sealed class PostalCodeLookupModel
|
||||
{
|
||||
public PostalCodeLookupModel()
|
||||
{
|
||||
Colonias = new List<NeighborhoodOptionModel>();
|
||||
}
|
||||
|
||||
public int CvePais { get; set; }
|
||||
public string Pais { get; set; }
|
||||
public int CveEstado { get; set; }
|
||||
public string Estado { get; set; }
|
||||
public int CveMunicipio { get; set; }
|
||||
public string Municipio { get; set; }
|
||||
public int CveLocalidad { get; set; }
|
||||
public string Localidad { get; set; }
|
||||
public string Ciudad { get; set; }
|
||||
public List<NeighborhoodOptionModel> Colonias { get; set; }
|
||||
}
|
||||
|
||||
public sealed class NeighborhoodOptionModel
|
||||
{
|
||||
public int CveColonia { get; set; }
|
||||
public string NombreAsentamiento { get; set; }
|
||||
}
|
||||
|
||||
public sealed class StateOptionModel
|
||||
{
|
||||
public int CveEstado { get; set; }
|
||||
public string ClaveEstado { get; set; }
|
||||
public string NombreEstado { get; set; }
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user