Consulta:
Estoy queriendo realizar un circuito de documentos, por ejemplo:
Que no me permita emitir un pago, si no existe una factura, y no dejar cargar la factura si no están las entregas, y así hacia atrás…
Se me ocurrió, hacer una serie de autorizaciones en las cuales voy consultando el documento anterior (Base) y si no tiene algún campo (determinado por mi) completo, se emite el pedido de autorización.
Me pueden indicar como proceder? o si tienen algún material para leer al respecto?
BaseEntry, BaseType y BaseLine
Solución elegida
Para relacionar documentos, debes enlazar los campos de linea BaseEntry, BaseType y BaseLine del documento de destino hacia el documento base. Esos campos están en todos los documentos de marketing, en el "DETALLE o LINEAS". Ofertas, Pedidos, Facturas, Notas de credito y debito, Traslados.
Hola, si te es de utilidad yo hice este query para consultar los niveles de autorización de cada evento y en ese está relacionado el flujo de compras desde que se hace una solicitud hasta la factura.
ResponderBorrarSELECT DISTINCT
A.DocNum AS 'Solicitud de Compra', '>' as procede@, B.DocNum AS 'Oferta de Compra',
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut1.UserSign = usr.USERID
) AS 'Solicita', Aut1d.CreateDate AS 'F.Solicita Aut.', Aut1d.CreateTime AS 'H.Solicita Aut',
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut1d.UserID = usr.USERID
) AS 'Autoriza', Aut1d.UpdateDate AS 'F.Firma Aut.', Aut1d.updatetime AS 'H.Firma Aut.', Aut1.Remarks, C.DocNum AS 'Pedido',
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut2.UserSign = usr.USERID
) AS 'Solicita', Aut2d.CreateDate AS 'F.Solicita Aut.', Aut2d.CreateTime AS 'H.Solicita Aut',
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut2d.UserID = usr.USERID
) AS 'Autoriza', Aut2d.UpdateDate AS 'F.Firma Aut.', Aut2d.updatetime AS 'H.Firma Aut.', Aut2.Remarks, D.Docentry AS 'Entrada de Mercancias', D.DocDate, E.docentry AS 'Factura de Proveedores', E.docduedate,
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut3.UserSign = usr.USERID
) AS 'Solicita', Aut3d.CreateDate AS 'F.Solicita Aut.', Aut3d.CreateTime AS 'H.Solicita Aut',
(
SELECT usr.u_name
FROM ousr AS usr
WHERE Aut3d.UserID = usr.USERID
) AS 'Autoriza', Aut3d.UpdateDate AS 'F.Firma Aut.', Aut3d.updatetime AS 'H.Firma Aut.', Aut3.Remarks, '>' as Pago,
F.DocNum 'Pago Efectuado', CONVERT(nvarchar(10), g.docdate, 103) 'F.Pago'
FROM OPRQ AS A
INNER JOIN
PRQ1 AS A1
ON A.DocEntry = A1.DocEntry
LEFT JOIN
PQT1 AS B1
ON B1.BaseEntry = A.DocEntry
INNER JOIN
OPQT AS B
ON B.DocEntry = B1.DocEntry
LEFT JOIN
POR1 AS C1
ON C1.BaseEntry = B.DocEntry
INNER JOIN
OPOR AS C
ON C.DocEntry = C1.DocEntry
LEFT JOIN
PDN1 AS D1
ON D1.BaseEntry = C.DocEntry
INNER JOIN
OPDN AS D
ON D.DocEntry = D1.DocEntry
LEFT JOIN
PCH1 AS E1
ON E1.BaseEntry = D.DocEntry
INNER JOIN
OPCH AS E
ON E.DocEntry = E1.DocEntry
LEFT JOIN
OWDD AS Aut1
ON Aut1.DocEntry = B.DocEntry
INNER JOIN
WDD1 AS Aut1d
ON Aut1.WddCode = Aut1d.WddCode
LEFT JOIN
OWDD AS Aut2
ON Aut2.DocEntry = C.DocEntry
INNER JOIN
WDD1 AS Aut2d
ON Aut2.WddCode = Aut2d.WddCode
LEFT JOIN
OWDD AS Aut3
ON Aut3.DocEntry = E.DocEntry
INNER JOIN
WDD1 AS Aut3d
ON Aut3.WddCode = Aut3d.WddCode
left join
VPM2 F on e.DocEntry = F.DocEntry
left join
OVPM G on G.docnum = F.docnum
--WHERE A.DocEntry = '21073';