Created
April 5, 2024 18:23
-
-
Save LucasAlves011/af0a69c4e72fda53e7fcd5c17f92d425 to your computer and use it in GitHub Desktop.
cursor itens nfse
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Cursor c_itens_nota_fiscal(nCdNotaFiscal NUMBER, vTpAgrupamento VARCHAR2, vTpNotaFiscal VARCHAR2, vTextoDescricao VARCHAR2) IS | |
/* agrupamento por texto livre */ | |
SELECT '1' codigo | |
, dbamv.fnc_retorna_ds_servico_rps_imv(nCdNotaFiscal) descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, 1 quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'AG' | |
GROUP BY '1', dbamv.fnc_retorna_ds_servico_rps_imv(nCdNotaFiscal) | |
UNION ALL | |
/* agrupamento por texto livre */ | |
SELECT '1' codigo | |
, Nvl(vTextoDescricao, 'SERVICOS HOSPITALARES') descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'TL' | |
GROUP BY '1', Nvl(vTextoDescricao, 'SERVICOS HOSPITALARES') | |
UNION ALL | |
/* agrupamento por grupo de faturamento */ | |
SELECT to_char(itnota_fiscal.cd_gru_fat) codigo | |
, gru_fat.ds_gru_fat descricao | |
, itnota_fiscal.vl_gru_fat valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GF' | |
GROUP BY to_char(itnota_fiscal.cd_gru_fat), gru_fat.ds_gru_fat , itnota_fiscal.vl_gru_fat | |
UNION ALL | |
/* agrupamento por grupo de faturamento decodificado */ | |
SELECT t.codigo, t.descricao, Sum(t.valor) valor, Count(t.quantidade) quantidade | |
FROM ( | |
SELECT '1' codigo | |
, Decode(gru_fat.tp_gru_fat,'SH','PRESTACAO DE SERVICOS HOSPITALARES', | |
'SD','PRESTACAO DE SERVICOS HOSPITALARES', | |
'OU','PRESTACAO DE SERVICOS HOSPITALARES', | |
'MD','MATERIAIS E MEDICAMENTOS', | |
'MT','MATERIAIS E MEDICAMENTOS', | |
'MM','MATERIAIS E MEDICAMENTOS', | |
'OP','MATERIAIS E MEDICAMENTOS', | |
'SP','HONORARIOS MEDICOS TRANSF. A TERCEIROS' | |
) descricao | |
, itnota_fiscal.vl_gru_fat valor | |
, 1 quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND vTpAgrupamento = 'GD' | |
) t | |
GROUP BY t.codigo, t.descricao | |
UNION all | |
/* agrupamento por procedimento - Sem ser Avulsa (N¿o d¿ para fazer essa configuracao para nota avulsa, pois n¿o tem itfat_nota_fiscal */ | |
SELECT pro_fat.cd_pro_fat codigo | |
, pro_fat.ds_pro_fat descricao | |
, Sum(vl_itfat_nf) valor | |
, sum(itfat_nota_fiscal.qt_itfat_nf) quantidade | |
FROM dbamv.itfat_nota_fiscal | |
, dbamv.pro_fat | |
WHERE itfat_nota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND pro_fat.cd_pro_fat = itfat_nota_fiscal.cd_pro_fat | |
AND vTpAgrupamento = 'PF' | |
AND vTpNotaFiscal <> 'A' | |
GROUP BY pro_fat.cd_pro_fat, pro_fat.ds_pro_fat | |
UNION ALL | |
/* agrupamento por procedimento - NF Avulsa, vai ser agrupada por uma descri¿¿o fixa. */ | |
SELECT '1' codigo | |
, 'SERVICOS HOSPITALARES' descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'PF' | |
AND vTpNotaFiscal = 'A' | |
GROUP BY '1', 'SERVICOS HOSPITALARES' | |
UNION ALL | |
/* agrupamento por grupo de procedimento - opcao 1 nf avulsa */ | |
/* na nota fiscal avulsa existe a possibilidade de informar diretamente o grupo de procedimento da nota */ | |
SELECT To_Char(gru_pro.cd_gru_pro) codigo | |
, gru_pro.ds_gru_pro descricao | |
, Sum(itnota_fiscal_gru_pro.vl_gru_pro) valor | |
, Count(itnota_fiscal_gru_pro.cd_gru_pro) quantidade | |
FROM dbamv.itnota_fiscal_gru_pro | |
, dbamv.gru_pro | |
WHERE gru_pro.cd_gru_pro = itnota_fiscal_gru_pro.cd_gru_pro | |
AND itnota_fiscal_gru_pro.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal = 'A' | |
GROUP BY To_Char(gru_pro.cd_gru_pro) , gru_pro.ds_gru_pro | |
UNION ALL | |
/* agrupamento por grupo de procedimento - opcao 2 nf avulsa */ | |
/* se nao achar a atribui¿¿o direta, eh poss¿vel determinar o grupo de procedimento a partir do grupo de | |
faturamento. esta op¿¿o pode apresentar divergencia de valores, se um grupo de faturamento nao estiver | |
associado a um grupo de procedimento */ | |
SELECT To_Char(gru_pro.cd_gru_pro) cd_gru_fat | |
, gru_pro.ds_gru_pro ds_gru_fat | |
, Sum(itnota_fiscal.vl_gru_fat) vl_gru_fat | |
, Count(itnota_fiscal.cd_gru_fat) qtd | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
, dbamv.gru_pro | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND gru_fat.cd_gru_fat = gru_pro.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal = 'A' | |
AND gru_pro.cd_gru_pro IN (SELECT Max(gp.cd_gru_pro) | |
FROM dbamv.gru_pro gp | |
WHERE gp.cd_gru_fat = gru_fat.cd_gru_fat) | |
AND NOT EXISTS (SELECT 'X' | |
FROM dbamv.itnota_fiscal_gru_pro | |
WHERE itnota_fiscal_gru_pro.cd_nota_fiscal = nCdNotaFiscal) | |
GROUP BY To_Char(gru_pro.cd_gru_pro), gru_pro.ds_gru_pro | |
UNION ALL | |
/* agrupamento por grupo de procedimento - NF Particular e Convenio */ | |
SELECT To_Char(gru_pro.cd_gru_pro) codigo | |
, gru_pro.ds_gru_pro descricao | |
, Sum(vl_itfat_nf) valor | |
, Count(gru_pro.cd_gru_pro) quantidade | |
FROM dbamv.itfat_nota_fiscal | |
, dbamv.pro_fat | |
, dbamv.gru_pro | |
WHERE pro_fat.cd_pro_fat = itfat_nota_fiscal.cd_pro_fat | |
AND pro_fat.cd_gru_pro = gru_pro.cd_gru_pro | |
AND itfat_nota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal <> 'A' | |
GROUP BY To_Char(gru_pro.cd_gru_pro), gru_pro.ds_gru_pro | |
ORDER BY 1; | |
Cursor c_qtd_nota_fiscal(nCdNotaFiscal NUMBER, vTpAgrupamento VARCHAR2, vTpNotaFiscal VARCHAR2, vTextoDescricao VARCHAR2) IS | |
SELECT Count('X') FROM ( | |
/* agrupamento por texto livre */ | |
SELECT '1' codigo | |
, dbamv.fnc_retorna_ds_servico_rps_imv(nCdNotaFiscal) descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, 1 quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'AG' | |
GROUP BY '1', dbamv.fnc_retorna_ds_servico_rps_imv(nCdNotaFiscal) | |
UNION ALL | |
/* agrupamento por texto livre */ | |
SELECT '1' codigo | |
, Nvl(vTextoDescricao, 'SERVICOS HOSPITALARES') descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'TL' | |
GROUP BY '1', Nvl(vTextoDescricao, 'SERVICOS HOSPITALARES') | |
UNION ALL | |
/* agrupamento por grupo de faturamento */ | |
SELECT to_char(itnota_fiscal.cd_gru_fat) codigo | |
, gru_fat.ds_gru_fat descricao | |
, itnota_fiscal.vl_gru_fat valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GF' | |
GROUP BY to_char(itnota_fiscal.cd_gru_fat), gru_fat.ds_gru_fat , itnota_fiscal.vl_gru_fat | |
UNION ALL | |
/* agrupamento por grupo de faturamento decodificado */ | |
SELECT t.codigo, t.descricao, Sum(t.valor) valor, Count(t.quantidade) quantidade | |
FROM ( | |
SELECT '1' codigo | |
, Decode(gru_fat.tp_gru_fat,'SH','PRESTACAO DE SERVICOS HOSPITALARES', | |
'SD','PRESTACAO DE SERVICOS HOSPITALARES', | |
'OU','PRESTACAO DE SERVICOS HOSPITALARES', | |
'MD','MATERIAIS E MEDICAMENTOS', | |
'MT','MATERIAIS E MEDICAMENTOS', | |
'MM','MATERIAIS E MEDICAMENTOS', | |
'OP','MATERIAIS E MEDICAMENTOS', | |
'SP','HONORARIOS MEDICOS TRANSF. A TERCEIROS' | |
) descricao | |
, itnota_fiscal.vl_gru_fat valor | |
, 1 quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND vTpAgrupamento = 'GD' | |
) t | |
GROUP BY t.codigo, t.descricao | |
UNION all | |
/* agrupamento por procedimento - Sem ser Avulsa (N¿o d¿ para fazer essa configuracao para nota avulsa, pois n¿o tem itfat_nota_fiscal */ | |
SELECT pro_fat.cd_pro_fat codigo | |
, pro_fat.ds_pro_fat descricao | |
, Sum(vl_itfat_nf) valor | |
, sum(itfat_nota_fiscal.qt_itfat_nf) quantidade | |
FROM dbamv.itfat_nota_fiscal | |
, dbamv.pro_fat | |
WHERE itfat_nota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND pro_fat.cd_pro_fat = itfat_nota_fiscal.cd_pro_fat | |
AND vTpAgrupamento = 'PF' | |
AND vTpNotaFiscal <> 'A' | |
GROUP BY pro_fat.cd_pro_fat, pro_fat.ds_pro_fat | |
UNION ALL | |
/* agrupamento por procedimento - NF Avulsa, vai ser agrupada por uma descri¿¿o fixa. */ | |
SELECT '1' codigo | |
, 'SERVICOS HOSPITALARES' descricao | |
, Sum(itnota_fiscal.vl_gru_fat) valor | |
, Count(itnota_fiscal.cd_gru_fat) quantidade | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'PF' | |
AND vTpNotaFiscal = 'A' | |
GROUP BY '1', 'SERVICOS HOSPITALARES' | |
UNION ALL | |
/* agrupamento por grupo de procedimento - opcao 1 nf avulsa */ | |
/* na nota fiscal avulsa existe a possibilidade de informar diretamente o grupo de procedimento da nota */ | |
SELECT To_Char(gru_pro.cd_gru_pro) codigo | |
, gru_pro.ds_gru_pro descricao | |
, Sum(itnota_fiscal_gru_pro.vl_gru_pro) valor | |
, Count(itnota_fiscal_gru_pro.cd_gru_pro) quantidade | |
FROM dbamv.itnota_fiscal_gru_pro | |
, dbamv.gru_pro | |
WHERE gru_pro.cd_gru_pro = itnota_fiscal_gru_pro.cd_gru_pro | |
AND itnota_fiscal_gru_pro.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal = 'A' | |
GROUP BY To_Char(gru_pro.cd_gru_pro) , gru_pro.ds_gru_pro | |
UNION ALL | |
/* agrupamento por grupo de procedimento - opcao 2 nf avulsa */ | |
/* se nao achar a atribui¿¿o direta, eh poss¿vel determinar o grupo de procedimento a partir do grupo de | |
faturamento. esta op¿¿o pode apresentar divergencia de valores, se um grupo de faturamento nao estiver | |
associado a um grupo de procedimento */ | |
SELECT To_Char(gru_pro.cd_gru_pro) cd_gru_fat | |
, gru_pro.ds_gru_pro ds_gru_fat | |
, Sum(itnota_fiscal.vl_gru_fat) vl_gru_fat | |
, Count(itnota_fiscal.cd_gru_fat) qtd | |
FROM dbamv.itnota_fiscal | |
, dbamv.gru_fat | |
, dbamv.gru_pro | |
WHERE gru_fat.cd_gru_fat = itnota_fiscal.cd_gru_fat | |
AND gru_fat.cd_gru_fat = gru_pro.cd_gru_fat | |
AND itnota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal = 'A' | |
AND gru_pro.cd_gru_pro IN (SELECT Max(gp.cd_gru_pro) | |
FROM dbamv.gru_pro gp | |
WHERE gp.cd_gru_fat = gru_fat.cd_gru_fat) | |
AND NOT EXISTS (SELECT 'X' | |
FROM dbamv.itnota_fiscal_gru_pro | |
WHERE itnota_fiscal_gru_pro.cd_nota_fiscal = nCdNotaFiscal) | |
GROUP BY To_Char(gru_pro.cd_gru_pro), gru_pro.ds_gru_pro | |
UNION ALL | |
/* agrupamento por grupo de procedimento - NF Particular e Convenio */ | |
SELECT To_Char(gru_pro.cd_gru_pro) codigo | |
, gru_pro.ds_gru_pro descricao | |
, Sum(vl_itfat_nf) valor | |
, Count(gru_pro.cd_gru_pro) quantidade | |
FROM dbamv.itfat_nota_fiscal | |
, dbamv.pro_fat | |
, dbamv.gru_pro | |
WHERE pro_fat.cd_pro_fat = itfat_nota_fiscal.cd_pro_fat | |
AND pro_fat.cd_gru_pro = gru_pro.cd_gru_pro | |
AND itfat_nota_fiscal.cd_nota_fiscal = nCdNotaFiscal | |
AND vTpAgrupamento = 'GP' | |
AND vTpNotaFiscal <> 'A' | |
GROUP BY To_Char(gru_pro.cd_gru_pro), gru_pro.ds_gru_pro | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment