on 07-10-2012 2:29 PM
buenos dias
alguien podria ayudarme tengo una busqueda formeteada que se trae la lista de materiales
de una orden de fabricacion, pero tengo un incoveniente que no se como solucionarlo
cuando en una lista de de materiales existe la misma materia prima con diferente valores
la busqueda formeteada se trae los datos de la orden de fabricacion pero los
articulos que ser repite se los trae con la misma cantidad, no el valor que tiene
realmente la orden de fabricacion, aquie esta como la tengo
SELECT T1.[ItemCode],T0.[DocNum],t2.[Dfltwh]
FROM
OWOR T0
INNER JOIN WOR1 T1 ON T0.DocEntry = T1.DocEntry
inner join oitm t2 on t1.ItemCode = t2.ItemCode
WHERE
T0.[Status]='R'
and T0.[DocNum]=$[OWTR.U_orden]
and t2.InvntItem = 'Y'
and T1.itemcode not like 'F%'
and isnull((select sum(T3.Quantity)
from WTR1 T3 INNER JOIN OWTR T4 ON T3.DocEntry=T4.DOCENTRY
WHERE t3.itemcode=t1.itemcode and T4.U_orden=$[OWTR.U_orden]
group by t3.ItemCode,t4.U_orden),0)
<T1.PlannedQty
ejemplo
producto1 cantidad
xy-001 100 gms
xy-001 100 gms ( cuando en el segunto item la cantidad es difente)
agradecere mucho su ayuda.
gracias
Prueba la Busqueda así
DECLARE
@LineNum INT
DECLARE
@ItemCode NVARCHAR(20),
@DocNum INT,
@DfltWH NVARCHAR(8)
DECLARE C CURSOR FOR
SELECT T1.LineNum
FROM WOR1 T1
INNER JOIN OWTR T0 ON T0.DocEntry=T1.DocEntry
WHERE T0.DocNum=$[OWTR.U_orden]
OPEN C
FETCH NEXT FROM C
INTO @LineNum
WHILE @@fetch_status = 0
BEGIN
SELECT
@ItemCode=A.ItemCode,
@DocNum=B.DocNum,
@DfltWH=C.DfltWH
FROM WOR1 A
INNER JOIN OWOR B ON B.DocEntry=A.DocEntry
INNER JOIN OITM C ON C.ItemCode=A.ItemCode
WHERE B.DocNum=$[OWTR.U_orden] AND A.LineNum=@LineNum AND C.InvntItem='Y' AND A.ItemCode NOT LIKE 'F_%%' AND
ISNULL((SELECT SUM(Y.Quantity) FROM WTR1 Y INNER JOIN OWTR X ON X.DocEntry=Y.DocEntry WHERE Y.ItemCode=A.ItemCode AND X.DocNum=B.DocNum GROUP BY Y.Quantity, X.DocNum),0)<A.PlannedQty
IF @LineNum IS NOT NULL
BEGIN
SELECT @ItemCode,@DocNum,@DfltWH
END
FETCH NEXT FROM C
INTO @LineNum
END
CLOSE C
DEALLOCATE C
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hola
Pruebalo así, agregale los demas filtros al WHERE pero me funcionó así.
SELECT A.ItemCode
FROM
(SELECT CAST(ROW_NUMBER() OVER (ORDER BY T0.ItemCode) AS INT) AS Linea, T0.ItemCode, T1.DocNum, T2.Dfltwh
FROM WOR1 T0
INNER JOIN OWOR T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITM T2 ON T2.ItemCode=T0.ItemCode
WHERE T1.DocNum=$[OWTR.U_orden] AND T2.InvNtItem='Y') AS A
WHERE A.Linea=CAST($[$23.0.0] AS INT)
Atte.
Felipe
gracias por contestar
fijate que la acabo de probar lo unico que paso esto:
tenia que darle click linea por linea para que me trajiera los items,
y segundo los articulos que son los mismo me trae siempre el mismo valor
ejemplo
producto1 cantidad
yy-005 25 grams
xy-001 100 grams
xy-001 100 grams (cuando en la orden de fabricacion era otra cantidad)
y la busqueda sera la misma cantidad
gracias por tu ayuda
Sandra, debes colocar una BF en el item y otra en la cantidad
Esta es para el articulo
SELECT A.ItemCode
FROM
(SELECT CAST(ROW_NUMBER() OVER (ORDER BY T0.LineNum) AS INT) AS Linea, T0.ItemCode, T1.DocNum, T2.Dfltwh
FROM WOR1 T0
INNER JOIN OWOR T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITM T2 ON T2.ItemCode=T0.ItemCode
WHERE T1.DocNum=$[OWTR.U_orden] AND T2.InvNtItem='Y') AS A
WHERE A.Linea=CAST($[$23.0.0] AS INT)
Esta es para la cantidad
SELECT CAST(A.PlannedQty AS NUMERIC(19,6))
FROM
(SELECT CAST(ROW_NUMBER() OVER (ORDER BY T0.LineNum) AS INT) AS Linea, T0.ItemCode, T1.DocNum, T2.Dfltwh, T0.PlannedQty
FROM WOR1 T0
INNER JOIN OWOR T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITM T2 ON T2.ItemCode=T0.ItemCode
WHERE T1.DocNum=$[OWTR.U_orden] AND T2.InvNtItem='Y') AS A
WHERE A.Linea=CAST($[$23.0.0] AS INT)
A la BF de la cantidad le das actualización automática cuando salgas de la columna modificada del articulo y la opción "visualizar valores definidos por el usuario"
Saludos
Quita la referencia de la linea en el query de los items, así traerá todos los items de la OF como una lista desplegable. Luego selecciónalos todos con el shift+clic izquierdo y se insertaran todos. La cantidad se actualizara automáticamente.
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
hola felipe
fijete que este es transaction, pero algunas veces me deja psar el traslado, si me
salgo y vuelvo a entrar al formulario me deja psar. otra vez la misma orden,
tambien si quiero trasladar la orden por partes ejemplos 2 articulos y despues 1
me vuelve ha mostrar la consulta los items que ya he transladado
si me pudieras ayudar te lo agradeceria
--- TRANSFERENCIA A BODEGA DE PRODUCCION
IF ( @object_type = '67' AND @transaction_type IN ('A','U') )
BEGIN
SELECT @cantidadtr= t0.Quantity, @ItemCode = t0.ItemCode,
@orden = t1.U_Orden,@NLinea=T0.[VisOrder], @cantidadorden = SUM(t3.PlannedQty)
from wtr1 t0
inner join owtr t1 on t0.DocEntry = t1.DocEntry
INNER JOIN OWOR T2 ON T1.U_orden = T2.DocNum
INNER JOIN WOR1 T3 ON T2.DocEntry = T3.DocEntry
INNER JOIN OITM T4 ON T0.ItemCode = T4.ItemCode
where t0.DocEntry = @list_of_cols_val_tab_del and
t0.ItemCode = t3.ItemCode
AND
T4.U_Categoria <> '21'
AND YEAR(T2.PostDate)=YEAR(GETDATE())
GROUP BY T3.ItemCode, t0.Quantity,t0.ItemCode,t1.U_Orden,T0.[VisOrder]
select @cantidadacum =SUM(t10.Quantity)
FROM WTR1 T10
INNER JOIN OWTR T11 ON T10.DocEntry = T11.DocEntry
INNER JOIN OWOR T12 ON T11.U_orden = T12.DocNum
INNER JOIN WOR1 T13 ON T12.DocEntry = T13.DocEntry
WHERE T10.ItemCode = T13.ItemCode and
t10.ItemCode = @ItemCode and
T11.U_orden=@orden and
T10.[VisOrder]=@NLinea
GROUP BY T10.ItemCode, T11.U_orden , T10.[VisOrder]
---**
if @cantidadacum > @cantidadorden
begin
set @error = 6
set @error_message = 'OPR - CANTIDAD SOBREPASA LA CANTIDAD PLANIFICADA DE ORDEN - 6' + ' CODIGO: '+@ItemCode
End
end
Buenas
Prueba este TN
IF @object_type=67 AND @transaction_type IN ('A','U')
BEGIN
DECLARE
@ItemCode NVARCHAR(20)
SET @ItemCode = ( SELECT TOP 1 T1.ItemCode
FROM OWTR T0
INNER JOIN WTR1 T1 ON T1.DocEntry=T0.DocEntry
WHERE T0.DocEntry=@list_of_cols_val_tab_del AND
(T1.Quantity+ISNULL((SELECT SUM(Y.Quantity) FROM OWTR X INNER JOIN WTR1 Y ON Y.DocEntry=X.DocEntry WHERE Y.ItemCode=T1.ItemCode AND X.DocEntry<>@list_of_cols_val_tab_del AND X.U_Orden=T0.U_Orden),0))>(SELECT A.PlannedQty FROM OWOR B INNER JOIN WOR1 A ON A.DocEntry=B.DocEntry WHERE A.ItemCode=T1.ItemCode AND B.DocNum=T0.U_Orden)
)
IF @ItemCode IS NOT NULL
BEGIN
SELECT @error=666, @error_message='Cantidad sobrepasa la cantidad planificada en orden para el articulo ' + @ItemCode
END
END
Saludos
Message was edited by: Felipe Loyola Rodriguez
gracias felipe
te he molestado bastante, pero otra cosa,
en la consulta que me enviaste de traerse los items, como puedo
hacer para que si un items ya se traslado que ya no me lo muestre la consulta
esta es la consulta que me enviaste, para la lista de items
SELECT A.ItemCode
FROM
(SELECT CAST(ROW_NUMBER() OVER (ORDER BY T0.LineNum) AS INT) AS Linea, T0.ItemCode, T1.DocNum, T2.Dfltwh
FROM WOR1 T0
INNER JOIN OWOR T1 ON T0.DocEntry=T1.DocEntry
INNER JOIN OITM T2 ON T2.ItemCode=T0.ItemCode
WHERE T1.[Status]='R' AND
T0.itemcode not like 'F%' AND
T1.DocNum=$[OWTR.U_orden] AND T2.InvNtItem='Y') AS A
Si pruebas un cursor que recorra las lineas de la WOR1.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
103 | |
12 | |
11 | |
6 | |
6 | |
4 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.