on 01-28-2016 8:36 PM
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,
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
102 | |
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.