Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Se declara la variable con el numero de talonario que corresponde al pedido de lista de bodas.
- DECLARE @prefijo_boda INT;
- SET @prefijo_boda = 2006;
- -- Se crea TABLA AUXILIAR desde el TRANSAC filtrando por los que tienen el talonario de pedidos creados exclusivamente para el efecto.
- -- Se contemplan tambien los eliminados, para que inicialmente se puedan tener todos los productos que alguna vez se agregaron a los pedidos
- -- Se limita a los pedidos que tengan una fecha de expiracion no superior al del momento de la consulta, ya que el operador utilizara esa fecha como limitador para la pagina web
- DECLARE @pedidos_boda TABLE(NROTRANS INT, NUMERO INT, OBSERVACION TEXT, OBSPARAFAC TEXT, CODITM INT, CANTIDAD INT, NROTRANSELIM INT);
- INSERT INTO @pedidos_boda
- SELECT T.NROTRANS, T.NUMERO, T.OBSERVACION, T.OBSPARAFAC, M.CODITM, M.CANTIDAD, T.NROTRANSELIM FROM TRANSAC AS T INNER JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS WHERE T.PREFIJO = @prefijo_boda AND T.FECHAEXT >= CAST(CURRENT_TIMESTAMP AS SMALLDATETIME) --AND T.NROTRANSELIM IS NULL
- -- Seleccionamos todos los productos que se hayan agregado como pedido de bodas, agrupados por numero de pedido, y codigo de producto.
- -- Hacemos un select al TRANSAC con un INNER JOIN a la TABLA AUXILIAR, para obtener los demas campos y excluir a los comprobantes que no sean pedidos de lista de boda.
- -- LEFT JOIN a MVSITEMS para ver los detalles del comprobante, y LEFT JOIN a la tabla de ITEMS para ver los detalles del producto
- -- LEFT JOIN a una subconsulta que repite el mismo procedimiento, pero a diferencia del principal que trae todos los productos, este trae solamente los productos que hayan quedado activos en el ultipo pedido activo.
- -- Se cruzan en el JOIN ON numero de pedido y codigo de item, para determinar cuales ya fueron dados de baja, para asi marcar como regalados.
- -- Se realizan subconsultas para las observaciones, ya que las mismas por ser tipo texto, no pueden ser agrupadas.
- SELECT T.NUMERO, M.CODITM, I.DESCRIPCION, M.CANTIDAD, CASE WHEN NR.CODITM IS NULL THEN 'TRUE' ELSE 'FALSE' END AS REGALADO, ((SELECT TOP 1 OBSERVACION FROM @pedidos_boda AS X WHERE X.NUMERO = T.NUMERO)) AS TITULO, ((SELECT TOP 1 OBSPARAFAC FROM @pedidos_boda AS Z WHERE Z.NUMERO = T.NUMERO)) AS DETALLES
- FROM TRANSAC AS T
- INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
- LEFT JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS
- LEFT JOIN ITEMS AS I ON M.CODITM = I.CODITM
- LEFT JOIN (
- SELECT T.NUMERO, M.CODITM, I.DESCRIPCION
- FROM TRANSAC AS T
- INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
- LEFT JOIN MVSITEMS AS M ON T.NROTRANS = M.NROTRANS
- LEFT JOIN ITEMS AS I ON M.CODITM = I.CODITM
- WHERE T.NROTRANS IN (
- SELECT MAX(T.NROTRANS) AS NROTRANS
- FROM TRANSAC AS T
- INNER JOIN @pedidos_boda AS PB ON T.NROTRANS = PB.NROTRANS
- WHERE PB.NROTRANSELIM IS NULL
- GROUP BY T.NUMERO
- )
- )AS NR ON (T.NUMERO = NR.NUMERO) AND (M.CODITM = NR.CODITM)
- GROUP BY T.NUMERO, M.CODITM, I.DESCRIPCION, NR.CODITM, M.CANTIDAD
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement