Você está na página 1de 9

/*

*** ESCRITURA__O CONTBIL FISCAL (ECF) ***


Bloco U: Imunes e Isentas
REGISTRO U001: ABERTURA DO BLOCO U
REGISTRO U990: ENCERRAMENTO DO BLOCO U
*/
SET NOCOUNT ON
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
DECLARE
SET
SET
SET
SET
SET

@USER
@EMPRESA
@DATA_INI
@DATA_FIM
@PER_APUR
@COUNT

AS
AS
AS
AS

AS VARCHAR(20);
VARCHAR(8);
DATE;
DATE;
CHAR(1);
AS INT

@USER
= #USUARIO;
@EMPRESA = #EMPRESA
@DATA_INI = #DATA_INI
@DATA_FIM = #DATA_FIM
@PER_APUR = #PER_APURACAO

INSERT INTO OWECFREG


/************************************************* REGISTRO U030 *******
******************************************/
SELECT @USER, 'U', 'U030', PERIODO AS GRUPO
, CONCAT(
'|U030|', DBO.ECFD(INICIO_PERIODO) , '|', DBO.ECFD(FIM_P
ERIODO), '|'
, PERIODO, '|'
) AS LINHA
FROM DBO.ECF_PERIODO_TRIB (@DATA_INI, @DATA_FIM, @EMPRESA, @PER_APUR)
WHERE ECF_PERIODO_TRIB.FORMA_TRIB = ''
AND ECF_PERIODO_TRIB.PERIODO NOT IN('A01', 'A02','A03','A04','A0
5','A06','A07','A08','A09','A10','A11', 'A12' )
UNION ALL
/************************************************* REGISTRO U100 *******
******************************************/
SELECT USUARIO, BLOCO, REGISTRO, GRUPO
,CONCAT(
'|',REG, '|', CODIGO, '|', DESCRICAO, '|', TIPO, '|', NI
VEL, '|',COD_NAT, '|', COD_CTA_SUP, '|', VAL_CTA_REF_INI
,'|', IND_VAL_CTA_REF_INI,'|', VAL_CTA_REF_FIN,'|', IND_
VAL_CTA_REF_FIN, '|'
)
FROM (
SELECT
USUARIO = @USER, BLOCO = 'U', REGISTRO = 'U100', GRUPO =
ECF_PERIODO_TRIB.PERIODO + 'U100' + RTRIM(OTABECF.CODIGO)
,REG = 'U100'
,CODIGO = RTRIM(OTABECF.CODIGO)
,DESCRICAO =RTRIM(OTABECF.DESCRICAO)

,TIPO = RTRIM(OTABECF.TIPO)
,NIVEL = RTRIM(OTABECF.NIVEL)
,COD_NAT = RTRIM(OTABECF.NATUREZA)
,COD_CTA_SUP = RTRIM(OTABECF.COD_SUP)
,VAL_CTA_REF_INI =(
DBO.ECFN(
ABS(
SUM(
ISNULL(
CASE WHEN ECF_PE
RIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHE
N OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
THEN OWS
LDCTB.SALDO_ANT
ELSE 0
END
ELSE
CASE WHE
N OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND 0 = OWSLDCTB.MES
THEN OWS
LDCTB.SALDO_ANT
ELSE 0
END
END
, 0
)
)
)
, 2
)
)
,IND_VAL_CTA_REF_INI =(
CASE WHEN ECF_PERIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHEN
SUM(
ISNULL(
CASE WHEN OWSLDC
TB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO AND OWSLDCTB.NATUREZA = 'D'
THEN OWSLDCTB.SA
LDO_ANT
ELSE 0
END
, 0
)
) < 0
THEN 'C'
ELSE 'D'
END
ELSE
CASE WHEN
SUM(
ISNULL(
CASE WHEN OWSLDC
TB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND OWSLDCTB.NA
TUREZA = 'D'
THEN OWSLDCTB.SA

LDO_ANT
ELSE 0
END
, 0
)
) < 0
THEN 'C'
ELSE 'D'
END
END
)
,VAL_CTA_REF_FIN = (
DBO.ECFN(
ABS(
SUM(
ISNULL(
CASE WHEN ECF_PE
RIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHE
N OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
THEN OWS
LDCTB.SALDO_ATU
ELSE 0
END
ELSE
CASE WHE
N OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0
THEN OWS
LDCTB.SALDO_ATU
ELSE 0
END
END
, 0
)
)
)
, 2
)
)
,IND_VAL_CTA_REF_FIN=(
CASE WHEN ECF_PERIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHEN
SUM(
ISNULL(
CASE WHEN OWSLDC
TB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO AND OWSLDCTB.NATUREZA = 'D'
THEN OWSLDCTB.SA
LDO_ATU
ELSE 0
END
, 0
)
) < 0
THEN 'C'
ELSE 'D'
END
ELSE

CASE WHEN
SUM(
ISNULL(
CASE
TB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND
TUREZA = 'D'
THEN
LDO_ATU
ELSE
END
, 0
)
) < 0
THEN 'C'
ELSE 'D'
END
END
)

WHEN OWSLDC
OWSLDCTB.NA
OWSLDCTB.SA
0

FROM OPLANECF
INNER JOIN OPLANCON ON OPLANCON.CONTA_CURTA = OPLANECF.CONTA_CUR
TA AND OPLANCON.OHPLANCO_COD = OPLANECF.OHPLANCO_COD
JOIN OECFTRIB ON OECFTRIB.EMPRESA = @EMPRESA AND OECFTRIB.ANO =
YEAR(@DATA_INI)
JOIN OEMPRESA ON OEMPRESA.CODIGO = @EMPRESA AND OEMPRESA.OHPLANC
O_COD = OPLANECF.OHPLANCO_COD
JOIN OTABECF ON OTABECF.CODIGO = OPLANECF.CODIGO AND OTABECF.TAB
ELA = OPLANECF.TABELA
LEFT JOIN OWSLDCTB ON OWSLDCTB.EMPRESA = OEMPRESA.CODIGO
AND OWSLDCTB.OHPLANCO_COD = OEMPRESA.OHPLANCO_COD
AND OWSLDCTB.CTA_LONGA = OPLANECF.CONTA
AND OWSLDCTB.USUARIO = @USER
INNER JOIN DBO.ECF_PERIODO_TRIB(@DATA_INI, @DATA_FIM, @EMPRESA,
@PER_APUR) ECF_PERIODO_TRIB
ON (OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO AND ECF
_PERIODO_TRIB.PERIODO <> 'A00')
OR (OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PER
IODO) AND OWSLDCTB.MES = 0 AND ECF_PERIODO_TRIB.PERIODO = 'A00' )
WHERE

OPLANECF.TABELA = 'U100A' OR OPLANECF.TA


BELA = 'U100B' OR OPLANECF.TABELA = 'U100C'
OR OPLANECF.TABELA = 'U100D' OR OPLANECF
.TABELA = 'U100E'
)
AND (ECF_PERIODO_TRIB.PERIODO = 'A00' OR @PER_AP
UR = 'T')
GROUP BY ECF_PERIODO_TRIB.PERIODO, OTABECF.CODIGO, OTABECF.DESCR
ICAO,
OTABECF.TIPO, OTABECF.NATUREZA, OTABECF.NIVEL, OTABECF.C
OD_SUP, OPLANCON.NATUREZA
) AS REGISTRO_U100
UNION ALL
/************************************************* REGISTRO U150 *******
******************************************/

SELECT USUARIO, BLOCO, REGISTRO, GRUPO


,CONCAT('|', REG, '|', CODIGO, '|', DESCRICAO, '|', TIPO, '|', N
IVEL, '|', COD_NAT, '|', COD_CTA_SUP, '|', VALOR, '|', IND_VALOR, '|')
FROM(
SELECT USUARIO = @USER, BLOCO = 'U', REGISTRO = 'U150', GRUPO =
ECF_PERIODO_TRIB.PERIODO + 'U150' + RTRIM(OTABECF.CODIGO)
,REG = 'U150'
,CODIGO = RTRIM(OTABECF.CODIGO)
,DESCRICAO = RTRIM(OTABECF.DESCRICAO)
,TIPO = RTRIM(OTABECF.TIPO)
,NIVEL = RTRIM(OTABECF.NIVEL)
,COD_NAT = RTRIM(OTABECF.NATUREZA)
,COD_CTA_SUP = RTRIM(OTABECF.COD_SUP)
,VALOR =(
DBO.ECFN(
ABS(
SUM(
ISNULL(
CASE WHEN ECF_PE
RIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHE
N
OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
THEN OWS
LDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
ELSE
CASE WHE
N OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0
THEN OWS
LDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
END
, 0
)
)
)
, 2
)
)
,IND_VALOR =(
CASE WHEN
SUM(
ISNULL(
CASE WHEN ECF_PERIODO_TR
IB.PERIODO <> 'A00'
THEN
CASE WHEN
OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO AND OWSLDCTB.NATUREZA = 'D'
THEN OWSLDCTB.SA
LDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
ELSE
CASE WHEN OWSLDC
TB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND OWSLDCTB.NA
TUREZA = 'D'
THEN OWSLDCTB.SA

LDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
END
, 0
)
THEN
ELSE
END

) < 0
'C'
'D'

)
FROM OPLANECF
INNER JOIN OPLANCON ON OPLANCON.CONTA_CURTA = OPLANECF.C
ONTA_CURTA AND OPLANCON.OHPLANCO_COD = OPLANECF.OHPLANCO_COD
JOIN OECFTRIB ON OECFTRIB.EMPRESA = @EMPRESA AND OECFTRI
B.ANO = YEAR(@DATA_INI)
JOIN OEMPRESA ON OEMPRESA.CODIGO = @EMPRESA AND OEMPRESA
.OHPLANCO_COD = OPLANECF.OHPLANCO_COD
JOIN OTABECF ON OTABECF.CODIGO = OPLANECF.CODIGO AND OTA
BECF.TABELA = OPLANECF.TABELA
LEFT JOIN OWSLDCTB ON OWSLDCTB.EMPRESA = OEMPRESA.CODIGO
AND OWSLDCTB.OHPLANCO_COD = OEMPRESA.OHPLANCO_CO
D
AND OWSLDCTB.CTA_LONGA = OPLANECF.CONTA
AND OWSLDCTB.USUARIO = @USER
JOIN DBO.ECF_PERIODO_TRIB(@DATA_INI, @DATA_FIM, @EMPRESA
, @PER_APUR) ECF_PERIODO_TRIB
ON (OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
AND ECF_PERIODO_TRIB.PERIODO <> 'A00')
OR (OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB
.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND ECF_PERIODO_TRIB.PERIODO = 'A00')
WHERE OECFTRIB.TIP_ESC_PRE = 'C'
AND (OPLANECF.TABELA = 'U150A' OR OPLANECF.TABEL
A = 'U150B' OR OPLANECF.TABELA = 'U150C' OR OPLANECF.TABELA = 'U150D' OR OPLANEC
F.TABELA = 'U150E' )
AND (ECF_PERIODO_TRIB.PERIODO = 'A00' OR @PER_AP
UR = 'T')
GROUP BY ECF_PERIODO_TRIB.PERIODO, OTABECF.CODIGO, OTABE
CF.DESCRICAO,
OTABECF.TIPO, OTABECF.NATUREZA, OTABECF.NIVEL, OTABECF.C
OD_SUP
) AS REGISTRO_U150
UNION ALL
/************************************************* REGISTRO U180
*************************************************/
SELECT
USUARIO, BLOCO, REGISTRO, GRUPO
,CONCAT('|', REG, '|', CODIGO, '|', DESCRICAO, '|', VALO
R, '|')
FROM(
SELECT

USUARIO =
,BLOCO =
,REGISTRO
,GRUPO =

@USER
'U'
= 'U180'
ECF_PERIODO_TRIB.PERIODO + 'U180' + RT

RIM(OTABECF.CODIGO)
,REG = '|U180|'
,CODIGO = RTRIM(OTABECF.CODIGO)
,DESCRICAO = RTRIM(OTABECF.DESCRICAO)
,VALOR =(
DBO.ECFN(
SUM(
ISNULL(
CASE WHEN ECF_PE
RIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHE
N OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
THEN OWS
LDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
ELSE
CASE WHE
N OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0
THEN OW
SLDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
END
, 0
)
)
, 2
)
)
FROM OPLANECF
JOIN OECFTRIB ON OECFTRIB.EMPRESA = @EMPRESA AND OECFTRI
B.ANO = YEAR(@DATA_INI)
JOIN OEMPRESA ON OEMPRESA.CODIGO = @EMPRESA AND OEMPRESA
.OHPLANCO_COD = OPLANECF.OHPLANCO_COD
JOIN OTABECF ON OTABECF.CODIGO = OPLANECF.CODIGO AND OTA
BECF.TABELA = OPLANECF.TABELA
LEFT JOIN OWSLDCTB ON OWSLDCTB.EMPRESA = OEMPRESA.CODIGO
AND OWSLDCTB.OHPLANCO_COD = OEMPRESA.OHPLANCO_CO
D
AND OWSLDCTB.CTA_LONGA = OPLANECF.CONTA
AND OWSLDCTB.USUARIO = @USER
JOIN DBO.ECF_PERIODO_TRIB(@DATA_INI, @DATA_FIM, @EMPRESA
, @PER_APUR) ECF_PERIODO_TRIB
ON (OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
AND ECF_PERIODO_TRIB.PERIODO <> 'A00')
OR (OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB
.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND ECF_PERIODO_TRIB.PERIODO = 'A00')
WHERE OPLANECF.TABELA = 'U180' AND OECFTRIB.TIP_ESC_PRE
= 'C'
AND (@PER_APUR = 'T' OR ECF_PERIODO_TRIB.PERIODO
= 'A00')

GROUP BY ECF_PERIODO_TRIB.PERIODO, OTABECF.CODIGO, OTABE


CF.DESCRICAO,
OTABECF.TIPO, OTABECF.NATUREZA, OTABECF.NIVEL, OTABECF.C
OD_SUP
) AS REGISTRO_U180
UNION ALL
/************************************************* REGISTRO U182
*************************************************/
SELECT
USUARIO, BLOCO, REGISTRO, GRUPO
,CONCAT('|', REG, '|', CODIGO, '|', DESCRICAO, '|', VALO
R, '|' )
FROM(
SELECT
USUARIO =
,BLOCO =
,REGISTRO
,GRUPO =

@USER
'U'
= 'U182'
ECF_PERIODO_TRIB.PERIODO + 'U182' + RT

RIM(OTABECF.CODIGO)
,REG = '|U182|'
,CODIGO = RTRIM(OTABECF.CODIGO)
,DESCRICAO = RTRIM(OTABECF.DESCRICAO)
,VALOR =(
DBO.ECFN(
SUM(
ISNULL(
CASE WHEN ECF_PE
RIODO_TRIB.PERIODO <> 'A00'
THEN
CASE WHE
N OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
THEN OWS
LDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
ELSE
CASE WHE
N OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB.FIM_PERIODO) AND OWSLDCTB.MES = 0
THEN OW
SLDCTB.SALDO_ATU - OWSLDCTB.SALDO_ANT
ELSE 0
END
END
, 0
)
)
, 2
)
)
FROM OPLANECF
JOIN OECFTRIB ON OECFTRIB.EMPRESA = @EMPRESA AND OECFTRI
B.ANO = YEAR(@DATA_INI)
JOIN OEMPRESA ON OEMPRESA.CODIGO = @EMPRESA AND OEMPRESA
.OHPLANCO_COD = OPLANECF.OHPLANCO_COD

JOIN OTABECF ON OTABECF.CODIGO = OPLANECF.CODIGO


AND OTABECF.TABELA = OPLANECF.TABELA
LEFT JOIN OWSLDCTB ON OWSLDCTB.EMPRESA = OEMPRESA.CODIGO
AND OWSLDCTB.OHPLANCO_COD = OEMPRESA.OHPLANCO_CO
D
AND OWSLDCTB.CTA_LONGA = OPLANECF.CONTA
AND OWSLDCTB.USUARIO = @USER
JOIN DBO.ECF_PERIODO_TRIB(@DATA_INI, @DATA_FIM, @EMPRESA
, @PER_APUR) ECF_PERIODO_TRIB
ON (OWSLDCTB.DATA = ECF_PERIODO_TRIB.FIM_PERIODO
AND ECF_PERIODO_TRIB.PERIODO <> 'A00')
OR (OWSLDCTB.ANO = YEAR(ECF_PERIODO_TRIB
.FIM_PERIODO) AND OWSLDCTB.MES = 0 AND ECF_PERIODO_TRIB.PERIODO = 'A00')
WHERE OPLANECF.TABELA = 'U182' AND OECFTRIB.TIP_ESC_PRE
= 'C'
AND (@PER_APUR = 'T' OR ECF_PERIODO_TRIB.PERIODO
= 'A00')
GROUP BY ECF_PERIODO_TRIB.PERIODO, OTABECF.CODIGO, OTABE
CF.DESCRICAO,
OTABECF.TIPO, OTABECF.NATUREZA, OTABECF.NIVEL, OTABECF.C
OD_SUP
) AS REGISTRO_U180

SET @COUNT = @@ROWCOUNT


/* FECHAMENTO */
INSERT INTO OWECFREG
SELECT @USER, 'U', 'U001', '0', '|U001|1|' + CASE WHEN @COUNT > 0 THEN
'0' ELSE '1' END + '|'
INSERT INTO OWECFREG
SELECT @USER, 'U', 'U990', 'Z', '|U990|0|' + CAST((@COUNT+2) AS VARCHAR
(10)) + '|'
SET NOCOUNT OFF
/* RETORNO */
SELECT LINHA FROM OWECFREG WHERE USUARIO=@USER AND BLOCO='U' ORDER BY GRUPO , RE
GISTRO

Você também pode gostar