Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON
GO
--EXEC OBJREPORTES_FACTURAVSREMISION '001', 'N', '20220601', '20220620', 'D','',
'',''
alter PROCEDURE OBJREPORTES_FACTURAVSREMISION
@C_EMPRESA CHAR(3) ,--CODIGO DE EMPRESA
@C_MONEDA CHAR(1) ,--TIPO DE MONEDA NACIONAL O EXTRANJERA
@C_DESDE CHAR(8) ,--FECHA DE INICIO (YYYYMMDD)
@C_HASTA CHAR(8) ,--FECHA FINAL (YYYYMMDD)
@C_TIPO CHAR(1) ,--TIPO PRODUCTO O DOCUMENTO
@C_MOTIVO CHAR(3) ,--MOTIVO DE ALMACEN
@C_SUCURSAL CHAR(3) ,--CODIGO DE SUCURSAL
@C_ALMACEN CHAR(3) --CODIGO DE ALMACEN
WITH ENCRYPTION
AS
BEGIN
DECLARE
@MOF CHAR(2),
@MEX CHAR(2),
@C_PVALOR1 CHAR(2),
@C_PVALOR2 CHAR(2),
@C_PVALOR3 CHAR(2),
@DATOS_ADD_REM_VENTA CHAR(2)
SELECT
@MOF = RTRIM(VALOR)
FROM PEMPRESA WITH (NOLOCK)
WHERE UPPER(PARAMETRO) = 'MOF' AND IDEMPRESA = @C_EMPRESA
SELECT
@MEX = RTRIM(VALOR)
FROM PEMPRESA WITH (NOLOCK)
WHERE UPPER(PARAMETRO) = 'MEX' AND IDEMPRESA = @C_EMPRESA
IF @C_TIPO = 'D'
BEGIN
CREATE TABLE #TEMPORAL1 (
IDINGRESOSALIDAALM CHAR(15)
,IDSUCURSAL CHAR(3)
,SUCURSAL VARCHAR(200)
,IDALMACEN CHAR(3)
,ALMACEN VARCHAR(200)
,REMISION VARCHAR(20)
,FECHA_REM DATETIME
,IDCOBRARPAGARDOC CHAR(15)
,IDCLIEPROV CHAR(11)
,RAZON_SOCIAL VARCHAR(200)
,FACTURA VARCHAR(50) ---- SE AUMENTO NÚMERO DE CARACTERES DE
20 - 50 CASO ADR
,FECHA_FAC DATETIME
,IDMONEDA CHAR(2)
,MONEDA CHAR(10)
,PROMEDIOMOF NUMERIC(17, 2)
,FACTURADOMOF NUMERIC(17, 2)
,UTILIDADMOF NUMERIC(17, 2)
,FACTOR NUMERIC(17, 2)
,TCAMBIO NUMERIC(17, 2)
,PROMEDIOMEX NUMERIC(17, 2)
,FACTURADOMEX NUMERIC(17, 2)
,UTILIDADMEX NUMERIC(17, 2)
,FACTURADO NUMERIC(17, 2)
,VENTANA_FAC VARCHAR(150)
,VENTANA_REM VARCHAR(150)
,IDMOTIVO CHAR(3)
,MOTIVO VARCHAR(100)
,IDTIPOVENTA CHAR(3)
,TIPOVENTA VARCHAR(100)
,IDDEVOLUCION CHAR(15)
,IDDEVOLUCION2 CHAR(15)
,CON_DEVOLUCION CHAR(2) DEFAULT 'NO'
,DEVOLUCION VARCHAR(20) DEFAULT ''
,VENTANA_DEV VARCHAR(100) DEFAULT ''
,BORRAR CHAR(2) DEFAULT 'NO'
,TD_VTA CHAR(3)
,IDCUENTA CHAR(12)
)
UNION ALL
SELECT
'' AS IDINGRESOSALIDAALM,
CO.IDSUCURSAL,
CO.IDALMACEN,
'' AS REMISION,
NULL AS FECHA_REM,
CO.IDCOBRARPAGARDOC AS IDCOBRARPAGARDOC,--RE.IDREFERENCIA
CO.IDCLIEPROV,
CLI.RAZON_SOCIAL,
CO.IDDOCUMENTO + ' ' + LTRIM(RTRIM(CO.SERIE)) + '-' +
LTRIM(RTRIM(CO.NUMERO)) FACTURA,--SERIE,NUMERO REFERENCIA
CO.FECHA AS FECHA_FAC,
MC.IDMONEDA,
MON.NOMBRE_CORTO,
0 AS PROMEDIOMOF,
CAST(CASE MON.TIPO_MONEDA
WHEN 'N' THEN DO.VVENTA
WHEN 'E' THEN DO.VVENTA * CO.TCAMBIO
ELSE DO.VVENTA / CO.TCMONEDA * CO.TCAMBIO END AS
NUMERIC(17, 2)) AS FACTURADOMOF,
0 AS UTILIDADMOF,
0 AS FACTOR,
0,
0 AS PROMEDIOMEX,
CAST( CASE MON.TIPO_MONEDA WHEN 'N' THEN DO.VVENTA / CO.TCAMBIO
WHEN 'E' THEN DO.VVENTA ELSE DO.VVENTA / CO.TCMONEDA END AS NUMERIC(17, 2)) AS
FACTURADOMEX,
0 AS UTILIDADMEX,--ISNULL(MC.IMPORTEMEX,0)-ISNULL(SUM
(ISNULL(M.PROMEDIOMEX,0)*ISNULL(M.CANTIDAD,0)),0) UTILIDADMEX,
0 AS FACTURADO,
ISNULL(CO.VENTANA, '') AS VENTANA_FAC,
'' AS VENTANA_REM,
'' AS IDMOTIVO,
CO.IDTIPOVENTA AS IDTIPOVENTA,
CO.IDDOCUMENTO AS TD_VTA
FROM COBRARPAGARDOC CO
LEFT JOIN CLIEPROV CLI WITH (NOLOCK) ON ( CLI.IDCLIEPROV =
CO.IDCLIEPROV AND CLI.IDEMPRESA = CO.IDEMPRESA )
INNER JOIN MOVCTACTE MC ON ( MC.IDEMPRESA = CO.IDEMPRESA AND
MC.IDORIGEN = CO.IDCOBRARPAGARDOC AND MC.TABLA = 'COBRARPAGARDOC' AND MC.GLOSA NOT
LIKE 'ANTICIPO%')
LEFT JOIN DOCREFERENCIA_CP DCP ON DCP.IDORIGEN = CO.IDCOBRARPAGARDOC
LEFT JOIN MONEDAS MON ON MON.IDMONEDA=MC.IDMONEDA
LEFT JOIN DCOBRARPAGARDOC DO ON ( DO.IDCOBRARPAGARDOC =
CO.IDCOBRARPAGARDOC AND DO.IDEMPRESA = CO.IDEMPRESA)
WHERE ( CONVERT(CHAR(8), CO.FECHA, 112) BETWEEN @C_DESDE AND @C_HASTA )
AND ( CO.IDEMPRESA = @C_EMPRESA )
AND DCP.IDORIGEN IS NULL
AND ( CO.IDSUCURSAL LIKE '%' + RTRIM(@C_SUCURSAL) )
AND ( CO.IDALMACEN LIKE '%' + RTRIM(@C_ALMACEN) )
AND CO.ORIGEN = 'C'
AND CO.IDESTADO <> 'AN'
)M
LEFT JOIN SUCURSALES SU ON SU.IDEMPRESA=@C_EMPRESA AND
SU.IDSUCURSAL=M.IDSUCURSAL
LEFT JOIN ALMACENES AL ON AL.IDEMPRESA=@C_EMPRESA AND
AL.IDSUCURSAL=M.IDSUCURSAL AND AL.IDALMACEN=M.IDALMACEN
LEFT JOIN MOTIVOS MT ON M.IDMOTIVO=MT.IDMOTIVO
LEFT JOIN TIPOVENTA TV ON TV.IDEMPRESA=@C_EMPRESA AND
TV.IDTIPOVENTA=M.IDTIPOVENTA
ORDER BY IDSUCURSAL,REMISION
DELETE T
FROM #TEMPORAL1 T
WHERE LEFT(T.IDCUENTA,2) <> '70'
END
UPDATE T SET
IDDEVOLUCION = D.IDORIGEN
,CON_DEVOLUCION = CASE WHEN D.IDORIGEN IS NULL THEN 'NO' ELSE 'SI'
END
,BORRAR = 'SI'
,DEVOLUCION = I.IDDOCUMENTO + ' ' + I.SERIE + '-' + I.NUMERO
,VENTANA_DEV = I.VENTANA
FROM #TEMPORAL1 T
INNER JOIN DOCREFERENCIA D ON T.IDINGRESOSALIDAALM = D.IDREFERENCIA AND
D.IDEMPRESA = @C_EMPRESA
INNER JOIN INGRESOSALIDAALM I ON D.IDORIGEN = I.IDINGRESOSALIDAALM AND
I.IDEMPRESA = @C_EMPRESA
WHERE I.IDMOTIVO IN (SELECT IDMOTIVO FROM MOTIVOS WHERE DEVOLVENTA = 1)
UPDATE T
SET IDDEVOLUCION2 = D.IDORIGEN
FROM #TEMPORAL1 T
INNER JOIN DOCREFERENCIA D ON T.IDINGRESOSALIDAALM = D.IDREFERENCIA AND
D.IDEMPRESA = @C_EMPRESA
INNER JOIN INGRESOSALIDAALM I ON D.IDORIGEN = I.IDINGRESOSALIDAALM AND
I.IDEMPRESA = @C_EMPRESA AND D.IDORIGEN <> T.IDDEVOLUCION
WHERE I.IDMOTIVO IN (SELECT IDMOTIVO FROM MOTIVOS WHERE DEVOLVENTA = 1)
SELECT
T.IDINGRESOSALIDAALM,
D.IDPRODUCTO,
D.IDLOTEP,
D.CANTIDAD,
T.IDDEVOLUCION,
T.IDDEVOLUCION2
FROM #TEMPORAL1 T
INNER JOIN DINGRESOSALIDAALM D ON T.IDINGRESOSALIDAALM =
D.IDINGRESOSALIDAALM AND D.IDEMPRESA = @C_EMPRESA
WHERE T.CON_DEVOLUCION = 'SI'
UPDATE T
SET IDPRODUCTO_INGRESO = D.IDPRODUCTO
,LOTE_INGRESO = D.IDLOTEP
,CANTIDAD_INGRESO = D.CANTIDAD
FROM #DEVOLUCIONES T
INNER JOIN DINGRESOSALIDAALM D ON T.IDINGRESO = D.IDINGRESOSALIDAALM
AND T.IDPRODUCTO_SALIDA = D.IDPRODUCTO AND T.LOTE_SALIDA = D.IDLOTEP AND
D.IDEMPRESA = @C_EMPRESA
UPDATE T
SET CANTIDAD_INGRESO = ISNULL(CANTIDAD_INGRESO, 0) + D.CANTIDAD
FROM #DEVOLUCIONES T
INNER JOIN DINGRESOSALIDAALM D ON T.IDINGRESO2 = D.IDINGRESOSALIDAALM
AND T.IDPRODUCTO_SALIDA = D.IDPRODUCTO AND T.LOTE_SALIDA = D.IDLOTEP AND
D.IDEMPRESA = @C_EMPRESA
UPDATE #DEVOLUCIONES
SET IGUAL = 'SI'
WHERE IDPRODUCTO_INGRESO = IDPRODUCTO_SALIDA AND LOTE_INGRESO =
LOTE_SALIDA AND CANTIDAD_INGRESO = CANTIDAD_SALIDA
UPDATE T
SET BORRAR = 'NO'
FROM #TEMPORAL1 T
INNER JOIN (SELECT IDSALIDA, COUNT(IGUAL) BORRAR FROM #DEVOLUCIONES
WHERE IGUAL = 'NO'
GROUP BY IDSALIDA
HAVING COUNT(IGUAL) > 0) X ON T.IDINGRESOSALIDAALM = X.IDSALIDA
IF @DATOS_ADD_REM_VENTA = 'SI'
BEGIN
SELECT
T.IDINGRESOSALIDAALM
,T.IDSUCURSAL
,T.SUCURSAL
,T.IDALMACEN
,T.ALMACEN
,T.REMISION
,T.FECHA_REM
,T.IDCOBRARPAGARDOC
,T.IDCLIEPROV
,T.RAZON_SOCIAL
,T.FACTURA
,T.FECHA_FAC
,T.IDMONEDA
,T.MONEDA
,T.PROMEDIOMOF
,T.FACTURADOMOF
,T.UTILIDADMOF
,T.FACTOR
,T.TCAMBIO
,T.PROMEDIOMEX
,T.FACTURADOMEX
,T.UTILIDADMEX
,T.FACTURADO
,T.VENTANA_FAC
,T.VENTANA_REM
,T.IDMOTIVO
,T.MOTIVO
,T.IDTIPOVENTA
,T.TIPOVENTA
,T.IDDEVOLUCION
,T.IDDEVOLUCION2
,T.CON_DEVOLUCION
,T.DEVOLUCION
,T.VENTANA_DEV
,T.TD_VTA
,T.IDCUENTA
,CONVERT(CHAR(5), I.FECHA,24) AS HORA_GUIA
,CONVERT(CHAR(10), I.FECHATRASLADO,103) AS FECHA_DESPACHO
,CONVERT(CHAR(5), I.FECHATRASLADO,24) AS HORA_DESPACHO
,D.DESCRIPCION AS DEPARTAMENTO_DESPACHO
,P.DESCRIPCION AS PROVINCIA_DESPACHO
,U.DESCRIPCION AS DISTRITO_DESPACHO
,TRA.RUC AS RUC_TRANSPORTISTA
,TRA.RAZON_SOCIAL AS TRANSPORTISTA
,VE.DESCRIPCION AS VENDEDOR
,I.DNI AS DOC_CHOFER
,I.CHOFER AS CHOFER
,I.MARCA AS MARCA_VEHICULO
,I.PLACA AS PLACA_VEHICULO
,I.NRO_CONTENEDOR AS ESTATUS
,CONVERT(CHAR(10), I.FECHA1,103) AS FECHA_PROXIMA_LLEGADA
,CONVERT(CHAR(5), I.FECHA1,24) AS HORA_PROXIMA_LLEGADA
FROM #TEMPORAL1 T
INNER JOIN INGRESOSALIDAALM I ON
T.IDINGRESOSALIDAALM=I.IDINGRESOSALIDAALM AND I.IDEMPRESA=@C_EMPRESA
LEFT JOIN UBIGEO U ON I.IDUBIGEOLLEGADA=U.IDUBIGEO
LEFT JOIN DEPARTAMENTO D ON U.IDDEPARTAMENTO=D.IDDEPARTAMENTO
LEFT JOIN PROVINCIAS P ON U.IDDEPARTAMENTO=P.IDDEPARTAMENTO AND
U.IDPROVINCIA=P.IDPROVINCIA
LEFT JOIN CLIEPROV TRA ON I.IDTRANSPORTISTA=TRA.IDCLIEPROV AND
I.IDEMPRESA=TRA.IDEMPRESA
LEFT JOIN COBRARPAGARDOC CB ON
T.IDCOBRARPAGARDOC=CB.IDCOBRARPAGARDOC AND CB.IDEMPRESA=@C_EMPRESA
LEFT JOIN VENDEDOR VE ON CB.IDEMPRESA=VE.IDEMPRESA AND
CB.IDVENDEDOR=VE.IDVENDEDOR
ORDER BY 1
END
ELSE
BEGIN
SELECT
IDINGRESOSALIDAALM
,IDSUCURSAL
,SUCURSAL
,IDALMACEN
,ALMACEN
,REMISION
,FECHA_REM
,IDCOBRARPAGARDOC
,IDCLIEPROV
,RAZON_SOCIAL
,FACTURA
,FECHA_FAC
,IDMONEDA
,MONEDA
,PROMEDIOMOF
,FACTURADOMOF
,UTILIDADMOF
,FACTOR
,TCAMBIO
,PROMEDIOMEX
,FACTURADOMEX
,UTILIDADMEX
,FACTURADO
,VENTANA_FAC
,VENTANA_REM
,IDMOTIVO
,MOTIVO
,IDTIPOVENTA
,TIPOVENTA
,IDDEVOLUCION
,IDDEVOLUCION2
,CON_DEVOLUCION
,DEVOLUCION
,VENTANA_DEV
,TD_VTA
,IDCUENTA
FROM #TEMPORAL1
ORDER BY 1
END
END
IF @C_TIPO = 'P'
BEGIN
CREATE TABLE #TEMPORAL2 (
IDSUCURSAL CHAR(3)
,SUCURSAL VARCHAR(200)
,IDPRODUCTO VARCHAR(20)
,DESCRIPCION VARCHAR(250)
,REMITIDO NUMERIC(17, 2)
,VENDIDO NUMERIC(17, 2)
,PROMEDIOMOF NUMERIC(17, 2)
,PROMEDIOMEX NUMERIC(17, 2)
,FACTURAMOF NUMERIC(17, 2)
,FACTURAMEX NUMERIC(17, 2)
,DIFEMOX NUMERIC(17, 2)
,DIFEMEX NUMERIC(17, 2)
)
UNION
SELECT
D.IDEMPRESA,
C.IDSUCURSAL,
D.IDPRODUCTO,
0.00 AS CANREM,
0.00 AS MOFREM,
0.00 AS MEXREM,
ISNULL(SUM(ISNULL(D.CANTIDAD, 0)), 0) AS CANFAC,
ISNULL(SUM(ISNULL(D.VVENTA, 0) - ISNULL(D.DESCUENTO, 0)), 0) AS
MOFFAC,
ISNULL(SUM(( ISNULL(D.VVENTA, 0) - ISNULL(D.DESCUENTO, 0) ) /
ISNULL(C.TCAMBIO, 1)), 0) MEXFAC
FROM DCOBRARPAGARDOC D
JOIN COBRARPAGARDOC C ON ( D.IDCOBRARPAGARDOC = C.IDCOBRARPAGARDOC AND
D.IDEMPRESA = C.IDEMPRESA )
WHERE CONVERT(CHAR(8), C.FECHA, 112) BETWEEN @C_DESDE AND @C_HASTA
AND C.ORIGEN = 'C'
AND C.IDMONEDA = @MOF
AND C.IDSUCURSAL LIKE '%' + RTRIM(@C_SUCURSAL)
AND C.IDEMPRESA = @C_EMPRESA
GROUP BY C.IDSUCURSAL, D.IDEMPRESA, D.IDPRODUCTO
UNION
SELECT
D.IDEMPRESA,
C.IDSUCURSAL,
D.IDPRODUCTO,
0.00 AS CANREM,
0.00 AS MOFREM,
0.00 AS MEXREM,
ISNULL(SUM(ISNULL(D.CANTIDAD, 0)), 0) AS CANFAC,
ISNULL(SUM(( ISNULL(D.VVENTA, 0) - ISNULL(D.DESCUENTO, 0) ) *
ISNULL(C.TCAMBIO, 1)), 0) AS MOFFAC,
ISNULL(SUM(ISNULL(D.VVENTA, 0) - ISNULL(D.DESCUENTO, 0)), 0) AS
MEXFAC
FROM DCOBRARPAGARDOC D
JOIN COBRARPAGARDOC C ON ( D.IDCOBRARPAGARDOC = C.IDCOBRARPAGARDOC AND
D.IDEMPRESA = C.IDEMPRESA )
WHERE CONVERT(CHAR(8), C.FECHA, 112) BETWEEN @C_DESDE AND @C_HASTA
AND C.ORIGEN = 'C'
AND C.IDMONEDA = @MEX
AND C.IDSUCURSAL LIKE '%' + RTRIM(@C_SUCURSAL)
AND C.IDEMPRESA = @C_EMPRESA
GROUP BY C.IDSUCURSAL, D.IDEMPRESA, D.IDPRODUCTO
) R
LEFT JOIN PRODUCTOS P WITH (NOLOCK) ON ( R.IDPRODUCTO = P.IDPRODUCTO )
LEFT JOIN SUCURSALES S ON R.IDEMPRESA=S.IDEMPRESA AND
R.IDSUCURSAL=S.IDSUCURSAL
GROUP BY R.IDSUCURSAL, R.IDPRODUCTO, P.DESCRIPCION, S.DESCRIPCION
SELECT
IDSUCURSAL
,SUCURSAL
,IDPRODUCTO
,DESCRIPCION
,REMITIDO
,VENDIDO
,PROMEDIOMOF
,PROMEDIOMEX
,FACTURAMOF
,FACTURAMEX
,DIFEMOX
,DIFEMEX
FROM #TEMPORAL2
ORDER BY 1
END
END
GO