Tengo un problema con el sig store procedure, como puedo hacer para no tener q repetir y copiar tantas veces.. ya que funciona pero cuando lo jalo a algún reporte me crea errores...
Código SQL:
Ver original--- Exec P5rAdvBitAutor '05', ''
CREATE Proc P5rAdvBitAutor
(
@Vendedor utClave,
@Folio utFolio
)
AS
SET nocount ON
IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST1')
BEGIN
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero1)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
ELSE
BEGIN
IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST2')
BEGIN
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero2)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
ELSE
BEGIN
IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST3')
BEGIN
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero3)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
END
ELSE
BEGIN
IF isnull(@Vendedor,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST1')
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero1)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
ELSE
BEGIN
IF isnull(@Vendedor,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST2')
BEGIN
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero2)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
ELSE
BEGIN
IF isnull(@Vendedor,'') <> ''
BEGIN
IF EXISTS (SELECT t.clientetipo FROM cliente t, OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST3')
BEGIN
SELECT C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario, SUM((od.cantidad*ar.numero3)-(od.totalimpor
te)) AS Descu, O.cliente, c.clientetipo
FROM OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
WHERE O.Empresa = 'Emp1' AND C.clave = O.Cliente AND O.Operacion=PA.Operacion AND O.Folio=PA.Folio AND PA.Autorizado='S' AND O.Vendedor=@Vendedor AND O.Folio=@Folio
AND O.Operacion='ORDVTA' AND O.Folio=A.FOlio AND PA.Operacion='ORDVTA' AND od.articulo=ar.clave AND od.folio=O.folio AND O.cliente=c.clave
GROUP BY O.cliente, c.clientetipo,C.razonsocial, O.Folio, O.Cliente, A.Fecha, O.UsuarioCaptura, O.Documento,O.Vendedor,O.TotalImporte,O.TotalDescuento,O.TotalImpuesto,O.TotalRetencion,O.Total,A.Autorizacion, PA.Autorizado, A.Usuario
ORDER BY O.Folio DESC, A.Fecha DESC
END
END
....ETC SE REPITE OTRA VEZ
lo unico que cambia es el distribuidor y la formula por el artículo, espero me puedan ayudar