Está en la página 1de 13

USE nisira_acp

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

SET @C_PVALOR1 = 'NO'


SELECT @C_PVALOR1 = RTRIM(ISNULL(VALOR,'NO')) FROM PEMPRESA
WHERE PARAMETRO = 'AL_RPTGRRVTA_CTA' AND IDEMPRESA = @C_EMPRESA

SET @C_PVALOR2 = 'NO'


SELECT @C_PVALOR2 = RTRIM(ISNULL(VALOR,'NO')) FROM PEMPRESA
WHERE PARAMETRO = 'AL_RPTGRRVTA_FNE' AND IDEMPRESA = @C_EMPRESA

SET @C_PVALOR3 = 'NO'


SELECT @C_PVALOR3 = RTRIM(ISNULL(VALOR,'NO')) FROM PEMPRESA
WHERE PARAMETRO = 'AL_RPTGRRVTA_SGRR' AND IDEMPRESA = @C_EMPRESA

SELECT @DATOS_ADD_REM_VENTA = VALOR FROM PARAMETRO


WHERE IDEMPRESA=@C_EMPRESA AND IDPARAMETRO='AL_DATOS_ADD_REM_VENTA'

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)
)

CREATE TABLE #DEVOLUCIONES (


IDSALIDA CHAR(15)
,IDPRODUCTO_SALIDA VARCHAR(20)
,LOTE_SALIDA VARCHAR(30)
,CANTIDAD_SALIDA NUMERIC(17, 2)
,IDINGRESO CHAR(15)
,IDINGRESO2 CHAR(15)
,IDPRODUCTO_INGRESO VARCHAR(20)
,LOTE_INGRESO VARCHAR(30)
,CANTIDAD_INGRESO NUMERIC(17, 2)
,IGUAL CHAR(2) DEFAULT 'NO'
)

INSERT INTO #TEMPORAL1 (


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
,TD_VTA
)
SELECT
M.IDINGRESOSALIDAALM,
M.IDSUCURSAL,
SU.DESCRIPCION AS SUCURSAL,
M.IDALMACEN,
AL.DESCRIPCION AS ALMACEN,
M.REMISION,
M.FECHA_REM,
M.IDCOBRARPAGARDOC,
M.IDCLIEPROV,
M.RAZON_SOCIAL,
M.FACTURA,
M.FECHA_FAC,
M.IDMONEDA,
M.NOMBRE_CORTO,
M.PROMEDIOMOF,
M.FACTURADOMOF,
M.UTILIDADMOF,
M.FACTOR,
M.TCAMBIO,
M.PROMEDIOMEX ,
M.FACTURADOMEX,
M.UTILIDADMEX,
M.FACTURADO,
M.VENTANA_FAC,
M.VENTANA_REM,
M.IDMOTIVO,
MT.DESCRIPCION AS MOTIVO,
M.IDTIPOVENTA,
TV.DESCRIPCION AS TIPOVENTA,
M.TD_VTA
FROM (
SELECT
I.IDINGRESOSALIDAALM,
I.IDSUCURSAL,
I.IDALMACEN,
I.IDDOCUMENTO + ' ' + I.SERIE + '-' + I.NUMERO AS REMISION,
I.FECHA AS FECHA_REM,
RE.IDREFERENCIA AS IDCOBRARPAGARDOC,
I.IDCLIEPROV,
CLI.RAZON_SOCIAL,
RE.IDDOCUMENTO + ' ' + RTRIM(RE.SERIE) + '-' + RTRIM(RE.NUMERO) AS
FACTURA,
CO.FECHAREGISTRO AS FECHA_FAC,
CO.IDMONEDA,
MON.NOMBRE_CORTO,
CAST(SUM(ISNULL (M.PROMEDIOMOF, 0) * ISNULL(M.CANTIDAD, 0)) AS
NUMERIC(17, 2)) PROMEDIOMOF,
CAST(SUM(
(CASE WHEN ISNULL(DCR.CANTIDAD,0)=0 THEN
CASE MON.TIPO_MONEDA
WHEN 'N' THEN DO.VVENTA
WHEN 'E' THEN DO.VVENTA *
CO.TCAMBIO
ELSE DO.VVENTA / NULLIF(CO.TCMONEDA * CO.TCAMBIO,0)
END
ELSE
CASE MON.TIPO_MONEDA
WHEN 'N' THEN ISNULL(DO.PRECIO,0)*DI.CANTIDAD
WHEN 'E' THEN ISNULL(DO.PRECIO,0)*DI.CANTIDAD *
CO.TCAMBIO
ELSE ISNULL(DO.PRECIO,0)*DI.CANTIDAD /
NULLIF(CO.TCMONEDA * CO.TCAMBIO,0)
END
END) ) AS NUMERIC(17, 2)) AS FACTURADOMOF,
0 AS UTILIDADMOF,
0 AS FACTOR,
I.TCAMBIO,
CAST (SUM (ISNULL(M.PROMEDIOMEX, 0) * ISNULL(M.CANTIDAD, 0))AS
NUMERIC(17, 2)) PROMEDIOMEX ,
CAST(SUM(
(CASE WHEN ISNULL(DCR.CANTIDAD,0)=0 THEN
CASE MON.TIPO_MONEDA
WHEN 'N' THEN DO.VVENTA/NULLIF(CO.TCAMBIO,0)
WHEN 'E' THEN DO.VVENTA
ELSE DO.VVENTA * NULLIF(CO.TCMONEDA,0)
END
ELSE
CASE MON.TIPO_MONEDA
WHEN 'N' THEN
ISNULL(DO.PRECIO,0)*DI.CANTIDAD/NULLIF(CO.TCAMBIO,0)
WHEN 'E' THEN ISNULL(DO.PRECIO,0)*DI.CANTIDAD
ELSE ISNULL(DO.PRECIO,0)*DI.CANTIDAD *
NULLIF(CO.TCMONEDA,0)
END
END)
) AS NUMERIC(17, 2)) AS FACTURADOMEX,
0 AS UTILIDADMEX,
CAST( SUM( CASE WHEN ISNULL(DCR.CANTIDAD,0)=0 THEN
ISNULL(DO.VVENTA, 0) ELSE ISNULL(DO.PRECIO,0)*DI.CANTIDAD END ) AS NUMERIC (17, 2))
AS FACTURADO,
ISNULL(CO.VENTANA, '') AS VENTANA_FAC,
I.VENTANA AS VENTANA_REM,
I.IDMOTIVO,
ISNULL(CO.IDTIPOVENTA,'') AS IDTIPOVENTA,
'' AS TD_VTA
FROM INGRESOSALIDAALM I
LEFT JOIN DINGRESOSALIDAALM DI WITH (NOLOCK) ON (I.IDEMPRESA =
DI.IDEMPRESA AND I.IDINGRESOSALIDAALM = DI.IDINGRESOSALIDAALM)
LEFT JOIN CLIEPROV CLI WITH (NOLOCK) ON CLI.IDCLIEPROV = I.IDCLIEPROV
AND CLI.IDEMPRESA = I.IDEMPRESA
LEFT JOIN MOVALMACEN M ON ( M.IDINGRESOSALIDAALM =
DI.IDINGRESOSALIDAALM AND M.IDEMPRESA = DI.IDEMPRESA AND DI.ITEM = M.ITEM )
INNER JOIN MOTIVOS MO WITH (NOLOCK) ON ( I.IDMOTIVO = MO.IDMOTIVO AND
MO.GRUPO_MOTIVO = 'V' AND MO.TIPO_MOTIVO = 'S' )
LEFT JOIN DOCREFERENCIA RE WITH (NOLOCK) ON ( I.IDINGRESOSALIDAALM =
RE.IDORIGEN AND I.IDEMPRESA = RE.IDEMPRESA AND RE.TABLA='COBRARPAGARDOC' )
LEFT JOIN COBRARPAGARDOC CO ON ( CO.IDCOBRARPAGARDOC = RE.IDREFERENCIA
AND CO.IDEMPRESA = I.IDEMPRESA )
LEFT JOIN MONEDAS MON ON MON.IDMONEDA=CO.IDMONEDA
LEFT JOIN DCOBRARPAGARDOC_REF DCR ON DCR.IDEMPRESA = DI.IDEMPRESA AND
DCR.IDREFERENCIA = DI.IDINGRESOSALIDAALM AND DCR.ITEMREF = DI.ITEM
LEFT JOIN DCOBRARPAGARDOC DO ON ( DO.IDEMPRESA = I.IDEMPRESA AND
DO.IDREFERENCIA = DI.IDINGRESOSALIDAALM AND DO.ITEMREF = DI.ITEM)
OR (DO.IDEMPRESA = DCR.IDEMPRESA AND DO.IDCOBRARPAGARDOC =
DCR.IDCOBRARPAGARDOC AND DO.ITEM = DCR.ITEM)
WHERE ( CONVERT(CHAR(8), I.FECHA, 112) BETWEEN @C_DESDE AND @C_HASTA )
AND ( I.IDESTADO <> 'AN' )
AND ( I.IDSUCURSAL LIKE '%' + RTRIM(@C_SUCURSAL) )
AND ( I.IDALMACEN LIKE '%' + RTRIM(@C_ALMACEN) )
AND ( I.IDEMPRESA = @C_EMPRESA )
AND ( I.IDMOTIVO LIKE '%' + RTRIM(@C_MOTIVO) )
GROUP BY I.IDINGRESOSALIDAALM, I.IDSUCURSAL,
I.IDALMACEN,I.IDCLIEPROV, I.IDDOCUMENTO,
I.SERIE,I.NUMERO,I.FECHA,I.VENTANA,I.IDMOTIVO,RE.IDREFERENCIA,
RE.IDDOCUMENTO, RE.SERIE, RE.NUMERO,
CO.FECHAREGISTRO,CO.IDMONEDA,CLI.RAZON_SOCIAL, CO.VENTANA,
MON.NOMBRE_CORTO, I.TCAMBIO, MON.TIPO_MONEDA, M.PROMEDIOMEX,
ISNULL(CO.IDTIPOVENTA,'')

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

-- POR CONFIGURACION DE CUENTA


IF @C_PVALOR1 = 'SI'
BEGIN
UPDATE T SET T.IDCUENTA = D.IDCUENTAMOF
FROM #TEMPORAL1 T
INNER JOIN DOCTIPOVENTA D ON D.IDEMPRESA = @C_EMPRESA AND
D.IDTIPOVENTA = T.IDTIPOVENTA AND D.IDDOCUMENTO = T.TD_VTA
WHERE ISNULL(T.IDTIPOVENTA,'') <> ''

DELETE T
FROM #TEMPORAL1 T
WHERE LEFT(T.IDCUENTA,2) <> '70'

END

-- POR DOCUMENTOS NO EMITIDOS SIN INGRESO ALMACEN


IF @C_PVALOR2 = 'SI'
BEGIN
DELETE T
FROM #TEMPORAL1 T
INNER JOIN DOCUMENTOS DO ON DO.IDEMPRESA = @C_EMPRESA AND
DO.IDDOCUMENTO = T.TD_VTA
INNER JOIN TIPOVENTA TV ON TV.IDEMPRESA = @C_EMPRESA AND TV.IDTIPOVENTA
= T.IDTIPOVENTA
WHERE DO.ES_NOEMITIDO = 1 AND RTRIM(ISNULL(T.IDINGRESOSALIDAALM,'')) =
'' AND ISNULL(TV.PIDE_SALIDA,0) = 0
END

-- FACTURAS QUE ESTEN CONFIGURADAS QUE SOLICITE DOCUMENTO DE SALIDA Y SE


ENCUENTA SIN GRR
IF @C_PVALOR3 = 'SI'
BEGIN
DELETE T
FROM #TEMPORAL1 T
INNER JOIN TIPOVENTA TV ON TV.IDEMPRESA = @C_EMPRESA AND TV.IDTIPOVENTA
= T.IDTIPOVENTA
WHERE ISNULL(TV.PIDE_SALIDA,0) = 0 AND
RTRIM(ISNULL(T.IDINGRESOSALIDAALM,'')) = ''
END

UPDATE #TEMPORAL1 SET


UTILIDADMOF = FACTURADOMOF-PROMEDIOMOF,
UTILIDADMEX = FACTURADOMEX-PROMEDIOMEX,
FACTOR = FACTURADOMOF/CASE WHEN PROMEDIOMOF=0 THEN 1 ELSE
PROMEDIOMOF END
WHERE IDINGRESOSALIDAALM<>''

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)

INSERT INTO #DEVOLUCIONES (


IDSALIDA
,IDPRODUCTO_SALIDA
,LOTE_SALIDA
,CANTIDAD_SALIDA
,IDINGRESO
,IDINGRESO2
)

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

DELETE FROM #TEMPORAL1


WHERE BORRAR = 'SI'

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)
)

INSERT INTO #TEMPORAL2 (


IDSUCURSAL
,SUCURSAL
,IDPRODUCTO
,DESCRIPCION
,REMITIDO
,VENDIDO
,PROMEDIOMOF
,PROMEDIOMEX
,FACTURAMOF
,FACTURAMEX
,DIFEMOX
,DIFEMEX
)
SELECT
R.IDSUCURSAL,
S.DESCRIPCION AS SUCURSAL,
R.IDPRODUCTO,
P.DESCRIPCION,
SUM(R.CANREM) AS REMITIDO,
SUM(R.CANFAC) AS VENDIDO,
SUM(R.MOFREM) AS PROMEDIOMOF,
SUM(R.MEXREM) AS PROMEDIOMEX,
SUM(R.MOFFAC) AS FACTURAMOF,
SUM(R.MEXFAC) AS FACTURAMEX,
SUM(R.MOFFAC - R.MOFREM) AS DIFEMOF,
SUM(R.MEXFAC - R.MEXREM) AS DIFEMEX
FROM
(
SELECT
M.IDEMPRESA,
M.IDSUCURSAL,
M.IDPRODUCTO,
ISNULL(SUM(ISNULL(M.CANTIDAD, 0)), 0) CANREM,
SUM(ISNULL(M.PROMEDIOMOF, 0) * ISNULL(M.CANTIDAD, 0))
MOFREM,
ISNULL(SUM(ISNULL(M.PROMEDIOMEX, 0) * ISNULL(M.CANTIDAD, 0)), 0)
MEXREM,
0.00
CANFAC,
0.00
MOFFAC,
0.00
MEXFAC
FROM MOVALMACEN M
JOIN MOTIVOS MO WITH (NOLOCK) ON ( M.IDMOTIVO = MO.IDMOTIVO AND
MO.GRUPO_MOTIVO = 'V' AND MO.TIPO_MOTIVO = 'S' )
WHERE CONVERT(CHAR(8), M.FECHA, 112) BETWEEN @C_DESDE AND @C_HASTA
AND M.FACTOR = -1
AND M.IDSUCURSAL LIKE '%' + RTRIM(@C_SUCURSAL)
AND M.IDMOTIVO LIKE '%' + RTRIM(@C_MOTIVO)
AND M.IDEMPRESA = @C_EMPRESA
GROUP BY M.IDPRODUCTO, M.IDSUCURSAL, M.IDEMPRESA

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

También podría gustarte