Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2010, 10:24
Avatar de Inicia
Inicia
 
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 7 meses
Puntos: 1
Exclamación Problemas con sp ayuda

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
  1. --- Exec P5rAdvBitAutor '05', ''
  2. CREATE Proc P5rAdvBitAutor
  3. (
  4. @Vendedor   utClave,
  5. @Folio      utFolio
  6. )
  7. AS
  8. SET nocount ON
  9.  
  10. IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
  11. BEGIN
  12.  
  13.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST1')
  14. BEGIN
  15.  
  16.     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
  17. te)) AS Descu, O.cliente, c.clientetipo
  18.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  19.         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
  20.                 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
  21. 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
  22.     ORDER BY O.Folio DESC, A.Fecha DESC
  23. END
  24. ELSE
  25. BEGIN
  26.  
  27. IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
  28. BEGIN
  29.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST2')
  30. BEGIN
  31.  
  32.     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
  33. te)) AS Descu, O.cliente, c.clientetipo
  34.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  35.         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
  36.                 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
  37. 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
  38.     ORDER BY O.Folio DESC, A.Fecha DESC
  39. END
  40. ELSE
  41. BEGIN
  42. IF isnull(@Vendedor,'') <> '' AND isnull(@Folio,'') <> ''
  43. BEGIN
  44.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST3')
  45. BEGIN
  46.     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
  47. te)) AS Descu, O.cliente, c.clientetipo
  48.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  49.         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
  50.                 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
  51. 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
  52.     ORDER BY O.Folio DESC, A.Fecha DESC
  53. END
  54.  
  55.  
  56. END
  57. ELSE
  58. BEGIN
  59.     IF isnull(@Vendedor,'') <> ''
  60.     BEGIN
  61.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST1')
  62.  
  63.     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
  64. te)) AS Descu, O.cliente, c.clientetipo
  65.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  66.         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
  67.                 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
  68. 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
  69.     ORDER BY O.Folio DESC, A.Fecha DESC
  70. END
  71. ELSE
  72. BEGIN
  73.     IF isnull(@Vendedor,'') <> ''
  74.     BEGIN
  75.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST2')
  76. BEGIN
  77.  
  78.     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
  79. te)) AS Descu, O.cliente, c.clientetipo
  80.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  81.         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
  82.                 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
  83. 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
  84.     ORDER BY O.Folio DESC, A.Fecha DESC
  85. END
  86. ELSE
  87. BEGIN
  88.     IF isnull(@Vendedor,'') <> ''
  89.     BEGIN
  90.     IF EXISTS (SELECT t.clientetipo FROM cliente t,  OrdVtaEncabezado x WHERE t.clave=x.cliente AND x.folio = @Folio AND clientetipo='DIST3')
  91. BEGIN
  92.     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
  93. te)) AS Descu, O.cliente, c.clientetipo
  94.     FROM    OrdVtaEncabezado AS O, cliente AS C, OrdVtaAutorizacion AS A,P5SysAutorizacion AS PA,ordvtadetalle AS od, articulo AS ar
  95.         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
  96.                 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
  97. 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
  98.     ORDER BY O.Folio DESC, A.Fecha DESC
  99. END
  100.     END
  101. ....ETC SE REPITE OTRA VEZ
lo unico que cambia es el distribuidor y la formula por el artículo, espero me puedan ayudar