cancel
Showing results for 
Search instead for 
Did you mean: 

Retenciones Informe

former_member263548
Participant
0 Kudos

Buenas tardes estimad@s, tengo un problema y les agradezco si me pueden ayudar, les comento:

En la factura de proveedor incluí 3 UDF (Proveedor - RUC - Fecha Factura) esto para que en el momento de registrar una caja chica y alguna(s) factura(s) aplica una retención se pueda llevar estos datos a un reporte, el problema que tengo es que si la factura tiene 4 líneas y le apliqué retención diferente a las 4, me aparece en el reporte 16 líneas un "juego" por cada retención, les comparto el código y les agradezco su ayuda u otra solución.

SELECT DISTINCT

T3.[CardCode],

T3.[CardName],

T3.[LicTradNum],

T1.[AbsEntry],

T1.[Rate],

T1.[TaxbleAmnt],

T1.[WTAmnt],

T4.[U_Proveedor], T4.[U_RUC], T4.[U_FACTURA]

FROM

[dbo].[PCH5]  T1

INNER JOIN OPCH T2 ON T1.[AbsEntry] = T2.[DocEntry]

INNER JOIN OCRD T3 ON T2.[CardCode] = T3.[CardCode]

INNER JOIN PCH1 T4 ON T2.[DocEntry] = T4.[DocEntry]

Saludos,

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Estimado Oscar,

Si mal no estoy esto debe estar sucediendo porque en tu consulta te falta un cruce de la OCRD con la CRD1.

En la tabla CRD1 existe el campo  "AdresType",  que guarda las  diferentes direcciones del socio de negocios

Cuando es S es para envío

Cuando es B es de facturación

Si todos tus socios de negocios tienen la dirección de facturación, después de hacer el cruce pon al final de tu consulta

where T5. AdresType = 'B'

Lo cual asegura que tu consulta no multiplique las lineas por la cantidad de direcciones que tenga registradas en la CRD1.

Pruebalo y comenta los resultados.

Saludos,

IFV

former_member263548
Participant
0 Kudos

Gracias Iván, a lo mejor no me expliqué de la mejor forma,  ya resolví:

SELECT DISTINCT

  CASE WHEN T0.[CardName] = 'C00001' THEN T0.[DocNum] ELSE T0.[DocNum] END'# de Fact.',

  CASE WHEN T0.[CardName] = 'C00001' THEN T0.[CardCode] ELSE T0.[CardCode] END'Código',

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[U_Proveedor] ELSE T0.[CardName] END'Proveedor',

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[U_RUC] ELSE T2.[VatIdUnCmp] END'RUC',

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[U_FACTURA] ELSE T0.[NumAtCard] END'# Fact. Prov.',

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[U_Coment] ELSE T0.[Comments] END'Comentario',

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[U_RET] ELSE T1.[Rate] END'Tarifa', 

  CASE WHEN T0.[CardName] = 'C00001' THEN T3.[LineTotal] ELSE T1.[TaxbleAmnt] END'Importe Sujeto',

  CASE WHEN T0.[CardName] = 'C00001' THEN ((CONVERT(NUMERIC(18,2), T3.[U_RET]))/100)*T3.[LineTotal] ELSE T1.[WTAmnt] END'Importe Retenido'

FROM

  OPCH T0 

  INNER JOIN PCH5 T1 ON T0.[DocEntry] = T1.[AbsEntry]

  INNER JOIN OCRD T2 ON T0.[CardCode] = T2.[CardCode]

  INNER JOIN PCH1 T3 ON T0.[DocEntry] = T3.[DocEntry]

WHERE

  T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1]

Post Cerrado