Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save LucasAlves011/af0a69c4e72fda53e7fcd5c17f92d425 to your computer and use it in GitHub Desktop.
Save LucasAlves011/af0a69c4e72fda53e7fcd5c17f92d425 to your computer and use it in GitHub Desktop.
cursor itens nfse
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