La empresa TracFactory S.A. de C.V., dedicada a la comercialización de tractores agrícolas, ha decidido comenzar a digitalizar y automatizar el proceso de envío/recepción de información relacionada con la adquisición de bienes con sus proveedores, por lo tanto, desean crear un equipo que se encargue de ejecutar dicho proyecto con éxito.
Se te ha contratado para intervenir en tareas específicas, las cuales serán detalladas a continuación:
- Crea una base de datos denominada “TFMerchandasing”.
- Crea un esquema llamado “Exchange”.
- Diseña y crea las tablas “Suppliers”, “PurchaseOrders” y “PurchaseOrderDetails” que pertenezcan al esquema “Exchange”.



- Crea una vista llamada “TOPSuppliers”, que al seleccionarse regrese únicamente los 10 proveedores activos con mayor cantidad de órdenes de compras activas con relación al total, es decir, se deberá filtrar por el estatus activo en SupplierStatus/PurchaseOrderStatus y calcular el total por proveedor.
Las columnas que se esperan de regreso deberán ser las siguientes:
- SupplierCode.
- SupplierName.
- CategoryID.
- PurchaseOrderCount (conteo de órdenes de compra).
- PurchaseOrderTotal (suma del importe de órdenes de compra).
- Crea una función “fnPurchaseOrderNumber” que retorne una nomenclatura que sirva para dar formato a la columna PurchaseOrderNumber. La longitud para retornar deberá ser a 12 posiciones y solicitará dos datos: sufijo y valor, por ejemplo, si se envía el sufijo “PO” y valor 10, deberá retornar PO0000000010, o si se envía #PO y valor 501, deberá retornar #PO000000501.
- Diseña un procedimiento almacenado para monitorear que, cada vez que este sea ejecutado, el objeto filtre las líneas de productos que exceden de 3,000 en amount, pero únicamente se aplique para las órdenes de compra de una semana hacía atrás, considerando como fecha de ejecución la fecha que actualmente es proporcionada por el servidor. Las columnas por regresar serán las siguientes:
- PurchaseOrderNumber (con uso de la nomenclatura de la función “fnPurchaseOrderNumber”).
- PurchaseOrderDate.
- PurchaseOrderDelivery.
- Amount.
Importante: el procedimiento almacenado se llamará “PurchaseOrderDetailMonitoring” y no recibe ningún parámetro de entrada, por esta razón deberás hacer uso de una función que te permita obtener la fecha actual del servidor. Se puede usar una variable para una mejor manipulación de este dato, pero es totalmente opcional.
- El administrador del proyecto desea conocer cuando un registro cambia de estatus a cancelado. Se deberá crear una tabla llamada “MonitoringStatus” que almacenará el ID del registro que cambió de estatus, el nombre de la tabla, fecha y hora exacta, por ejemplo:

Importante: la tabla debe estar dentro del mismo esquema previamente definido. Estos registros deberán ser insertados mediante un disparador en las diferentes tablas.
- Crear un procedimiento almacenado “PurchaseOrderTotalByMonth” que tenga como parámetro de entrada el mes y año para que, de acuerdo con esa información, retorne los datos totalizados por proveedor y ordenados de manera descendente, con base en el total por orden de compra como se representa en el siguiente ejemplo:

- Diseña un reporte desde Reporting Services que muestre los datos más relevantes de los proveedores. Solamente se necesita mostrar SupplierCode, SupplierName, CategoryID, BuyerID, CurrencyID y SupplierStatus. El reporte deberá estar en español.
- Diseña un reporte usando Reporting Services, el cual represente la información de órdenes de compra. Para este reporte se deberán aplicar conocimientos de agrupación y agregación, pues se requiere mostrar la cantidad de órdenes de compra activas y canceladas con sus respectivos totales en importe total; todo es por año. Si el total por estatus “cancelado” sobrepasa de los 500,000, se deberá mostrar el valor en color rojo y subrayado.
- Implementa un reporte usando Reporting Services y usar la tabla “MonitoringStatus” para que, por fecha de inicio y fin, se pueda filtrar la información de los registros a los que se les ha modificado su estatus, por lo tanto, se deberán aplicar parámetros de entrada de tipo fecha.
- Crea un esquema de ETL, es decir, la manera en que se procesarán los datos y se enviarán al respectivo sistema que tiene relación con el sitio del portal de proveedores.
Nota: Deberás definir las reglas, técnicas y formatos necesarios para la ejecución del esquema.