SlideShare uma empresa Scribd logo
1 de 31
update sg_colaborador set email = 'samara.martins@unosolucoes.com.br';
update cd_fornecedor set email = 'samara.martins@unosolucoes.com.br';
update cd_cliente set email_cobranca = 'samara.martins@unosolucoes.com.br';
update vd_vendedor_revenda set email = 'emaildaunonaofunciona@gmail.com';
update cd_empresa set email = 'emaildaunonaofunciona@gmail.com';
update cd_cliente_contato set email = 'samara.martins@unosolucoes.com.br';
update cd_cliente set email_cobranca = 'samara.martins@unosolucoes.com.br';
UPDATE `vd_pedido` SET `email_cliente`='samara.martins@unosolucoes.com.br';
UPDATE `vd_ponto_controle` SET
`email_aviso`='samara.martins@unosolucoes.com.br';
UPDATE cd_param_empresa SET valor = 'smtp.gmail.com' WHERE nome_param =
'smtpPadrao';
UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona@gmail.com' WHERE
nome_param = 'emailSMTP';
UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona@gmail.com' WHERE
nome_param = 'usuarioSMTP';
UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona1' WHERE nome_param =
'senhaSMTP';
UPDATE cd_param_empresa SET valor = '587' WHERE nome_param = 'portaSMTP';
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailCobranca';
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailInclusaoProduto';
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailSuporte';
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailAlteracaoCliente';
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailSuporte';
Update `vd_vendedor_revenda` SET `nome_colaborador`='uno',
`email`='emaildaunonaofunciona@gmail.com', `telefone_1`='11111111111',
`ddd_1`=11, `id_usuario`='unosol', `senha`='6348f4fbdb0700923a4c4daa43834433',
`dica_senha`='padrao';
UPDATE `oc_categoria` SET `email`='emaildaunonaofunciona@gmail.com';
UPDATE `cd_param_empresa` SET
`valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE
`nome_param`='urlGeraBoleto';
UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE
`nome_param`='ipBoleto';
UPDATE `cd_param_empresa` SET
`valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE
`nome_param`='urlGeraBoleto';
UPDATE `cd_param_empresa` SET `valor`='/var/www/phpboleto2/files/boletos/' WHERE
`nome_param`='urlArquivosBoleto';
UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE
`nome_param`='ipEmailBoleto';
UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE
`nome_param`='ipBoleto';
UPDATE `cd_parametro` SET `def_valor`='' WHERE `nome_param`='pathBoleto';
UPDATE `cd_parametro` SET
`def_valor`='/home/httpd/html/phpboleto2/files/boletos/' WHERE
`nome_param`='urlArquivosBoleto';
UPDATE `cd_parametro` SET
`def_valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE
`nome_param`='urlGeraBoleto';
UPDATE `cd_parametro` SET `def_valor`='ucommerce.com.br' WHERE
`nome_param`='ipEmailBoleto';
UPDATE `cd_parametro` SET `def_valor`='ucommerce.com.br' WHERE
`nome_param`='ipBoleto';
UPDATE `cd_param_empresa` SET `valor`='samara.martins@unosolucoes.com.br' WHERE
`nome_param`='emailGerenteVendas';
UPDATE at_status SET email_aviso ='samara.martins@unosolucoes.com.br',
email_responsavel ='samara.martins@unosolucoes.com.br';
UPDATE at_status SET email_aviso='samara.martins@unosolucoes.com.br',
email_responsavel='samara.martins@unosolucoes.com.br' ;
UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailSolicitacao';
UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailCobranca';
UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailDestino';
UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE
`nome_param`='emailSuporte';
UPDATE `cd_cliente` SET `email_nfe`='samara.martins@unosolucoes.com.br';
UPDATE `fn_titulo_receber` SET
`email_cliente`='samara.martins@unosolucoes.com.br';
UPDATE `cd_banco` SET `bo_email`='samara.martins@unosolucoes.com.br' ;
UPDATE `sg_colaborador` SET `senha`='c4ca4238a0b923820dcc509a6f75849b';
UPDATE `vd_vendedor_revenda` SET `senha`='c4ca4238a0b923820dcc509a6f75849b';
UPDATE `cd_cliente` SET `cod_colaborador_revenda`=1;
UPDATE `cd_cliente_contato` SET `id_contato`='unosol',
`senha`='c4ca4238a0b923820dcc509a6f75849b' WHERE `cod_cliente`=1 AND
`cod_contato`=1;
UPDATE `cd_cliente_contato` SET `dt_senha`='2099-03-30' WHERE `cod_cliente`=1
AND `cod_contato`=1;
UPDATE cd_param_empresa SET valor = null WHERE nome_param = "ipAplicacao";
UPDATE cd_param_empresa SET valor = null WHERE nome_param =
'emailCopiaPedidosAbertos';
DELETE from sg_crontab;
TRUNCATE sg_crontab;
UPDATE gm_nfe_adm_empresa SET Validade = '16/04/2999' ;
UPDATE gm_nfe_adm_empresa SET CNPJ ='' ;
UPDATE gm_nfe_adm_empresa SET InscEstadual ='' ;
SET storage_engine = "Innodb";
SET FOREIGN_KEY_CHECKS = 0;
SET GLOBAL log_bin_trust_function_creators = 1;
DROP FUNCTION IF EXISTS calcularJurosPagar;
DROP FUNCTION IF EXISTS getDtVencimentoFeriado;
DROP FUNCTION IF EXISTS getSaldoContasPagarFornecedor;
DROP FUNCTION IF EXISTS getSaldoContasPagarFornecedoresPeriodo;
DROP FUNCTION IF EXISTS getValorBaixaContasPagar;
DROP FUNCTION IF EXISTS calcularJurosReceber;
DROP FUNCTION IF EXISTS getSaldoContasReceberCliente;
DROP FUNCTION IF EXISTS getSaldoContasReceberClientesPeriodo;
DROP FUNCTION IF EXISTS getValorBaixaContasReceber;
delimiter //
CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer ,
codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char)
returns decimal(17,2)
BEGIN
declare vlMulta decimal(17,2);
declare vlJuros decimal(17,2);
declare tarifaBoleto decimal(17,2);
declare vlTotalJurosMultaPont decimal(17,2);
declare vlTitulo decimal(17,2);
declare vlBaixa decimal(17,2);
declare vlTituloMenosImpostos decimal(17,2);
declare vlDesconto decimal(17,2);
declare percMulta decimal(17,2);
declare percJuros decimal(17,2);
declare vlSaldo decimal(17,2);
declare mesHoje int;
declare anoHoje int;
declare anoVenc int;
declare diasAtraso int;
declare dataVencimento date;
declare dataUltimaBaixa date;
declare tpJuros int;
set vlMulta = 0.0;
set vlJuros = 0.0;
set tarifaBoleto = 0.0;
set vlTotalJurosMultaPont = 0.0;
set vlTitulo = 0.0;
set vlBaixa = 0.0;
set vlTituloMenosImpostos = 0.0;
set vlDesconto = 0.0;
set percMulta = 0.0;
set percJuros = 0.0;
set vlSaldo = 0.0;
set tpJuros = 0;
SELECT
ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto,
ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta,
ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros,
getValorBaixaContasReceber
(
fn_titulo_receber.cod_empresa,
fn_titulo_receber.cod_titulo,
fn_titulo_receber.cod_parcela ,
fn_titulo_receber.serie ,
dataReferencia
) as vlBaixa,
fn_titulo_receber.vl_total_titulo as vlTitulo,
fn_titulo_receber.vl_total_titulo -
( ifnull( fn_titulo_receber.vl_iss , 0 )
+ ifnull(fn_titulo_receber.vl_ir,0)
+ ifnull( fn_titulo_receber.vl_pis, 0 )
+ ifnull( fn_titulo_receber.vl_cofins , 0 )
+ ifnull( fn_titulo_receber.vl_cs , 0 )
) as
vlTituloMenosImpostos,
ifnull( fn_titulo_receber.tp_juros , 0 )
as tpJuros,
ifnull( fn_titulo_receber.taxa_boleto , 0 )
as tarifaBoleto,
-- Pega a data do vencimento desconsiderando feriados e sábado e
domingo.
getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento)
as dtVencimento,
(
select max(hist.dt_referencia)
from fn_titulo_receber_hist as hist
where
hist.cod_empresa = fn_titulo_receber.cod_empresa
and
hist.cod_titulo = fn_titulo_receber.cod_titulo
and
hist.cod_parcela = fn_titulo_receber.cod_parcela
and
hist.serie = fn_titulo_receber.serie
and
hist.tp_hist = 30
) as dtUltimaBaixa
INTO
vlDesconto,
percMulta,
percJuros,
vlBaixa,
vlTitulo,
vlTituloMenosImpostos,
tpJuros,
tarifaBoleto,
dataVencimento,
dataUltimaBaixa
FROM
fn_titulo_receber
WHERE
fn_titulo_receber.cod_empresa = codEmpresa
and
fn_titulo_receber.cod_titulo = codTitulo
and
fn_titulo_receber.cod_parcela = codParcela
and
fn_titulo_receber.serie = pSerie;
-- ------------------------------------------------------------------------
-- Calcula os juros a partir deste ponto.
-- ------------------------------------------------------------------------
-- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste
caso não calcula juros.
IF ( dataVencimento is null ) THEN
return 0.0;
END IF;
set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
-- Se tÃtulo não estiver vencido
IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <=
DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF ( ifnull(vlBaixa,0) = 0 ) THEN
return 0.0;
ELSE
return ABS(vlSaldo);
END IF;
END IF;
IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento),
'%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
return ABS(vlSaldo);
END IF;
-- Verifica se deverá utilizar a data da última baixa para cálculo dos
-- juros.
IF ( dataUltimaBaixa != null ) THEN
IF ( dataUtimaBaixa > dataVencimento ) THEN
set dataReferencia = dataUltimaBaixa ;
END IF;
END IF;
-- Juros ao dia
IF ( tpJuros = 0 ) THEN
set diasAtraso = DATEDIFF(dataReferencia,dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
-- Juros ao Mês
IF ( tpJuros = 1 ) THEN
set mesHoje = month(dataReferencia);
set anoHoje = year(dataReferencia);
set anoVenc = year(dataVencimento);
set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 );
set diasAtraso = mesHoje - month(dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta;
IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo;
END IF;
return 0.0;
END IF;
IF( retornaSaldo = '1' ) THEN
return vlSaldo + vlMulta + vlJuros - vlDesconto;
END IF;
return vlMulta + vlJuros - vlDesconto;
END
//
CREATE FUNCTION getSaldoContasReceberCliente( codEmpresa integer, codCliente
integer , pDTReferencia char(10) ) returns decimal(17,2)
BEGIN
declare vlSaldo decimal(17,2);
select
sum( calcularJurosReceber(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,
serie ,cast(pDTReferencia as date) , '1' )
) as 'credito'
into
vlSaldo
from
fn_titulo_receber tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_implant < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
tipa.cod_cliente = codCliente
and
(
(
tipa.vl_total_titulo -
( ifnull( tipa.vl_iss , 0 )
+ ifnull( tipa.vl_ir,0)
+ ifnull( tipa.vl_pis, 0 )
+ ifnull( tipa.vl_cofins , 0 )
+ ifnull( tipa.vl_cs , 0 )
)
) -
CASE WHEN
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as hist
where
hist.cod_empresa = tipa.cod_empresa
and
hist.cod_titulo = tipa.cod_titulo
and
hist.cod_parcela = tipa.cod_parcela
and
hist.serie = tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as hist
where
hist.cod_empresa = tipa.cod_empresa
and
hist.cod_titulo = tipa.cod_titulo
and
hist.cod_parcela = tipa.cod_parcela
and
hist.serie = tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
END
) > 0
;
IF ( vlSaldo IS NULL ) THEN
return 0.0;
END IF;
return vlSaldo;
end
//
CREATE FUNCTION getSaldoContasReceberClientesPeriodo( codEmpresa integer,
pDTReferencia char(10) , pDataFinal char(19)) returns decimal(17,2)
BEGIN
declare done INT DEFAULT 0;
declare vlSaldo decimal(17,2);
declare pCliente integer;
declare vlSaldoTotal decimal(17,2);
DECLARE curClientes CURSOR FOR
select
distinct tipaPeriodo.cod_cliente
from
fn_titulo_receber tipaPeriodo
LEFT OUTER JOIN fn_titulo_receber_hist
as hist
ON
hist.cod_empresa =
tipaPeriodo.cod_empresa
and
hist.cod_titulo =
tipaPeriodo.cod_titulo
and
hist.cod_parcela =
tipaPeriodo.cod_parcela
and
hist.serie =
tipaPeriodo.serie
where
tipaPeriodo.cod_empresa =
codEmpresa
and
(
(
hist.dt_referencia between
pDTReferencia and pDataFinal
and
hist.tp_hist = 30
)
or
(
tipaPeriodo.dt_implant
between pDTReferencia and pDataFinal
and
tipaPeriodo.situacao between
10 and 30
)
);
declare CONTINUE HANDLER FOR NOT FOUND SET done = 1;
set vlSaldoTotal = 0;
OPEN curClientes;
read_loop: LOOP
FETCH curClientes INTO pCliente;
-- Verifica se o loop deverá ser terminado
IF done THEN
LEAVE read_loop;
END IF;
select
sum( calcularJurosReceber(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa
.serie,cast(pDTReferencia as date) , '1' )
) as 'credito'
into
vlSaldo
from
fn_titulo_receber tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_implant < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
cod_cliente = pCliente
and
(
(
tipa.vl_total_titulo -
( ifnull( tipa.vl_iss , 0 )
+ ifnull( tipa.vl_ir,0)
+ ifnull( tipa.vl_pis, 0 )
+ ifnull( tipa.vl_cofins , 0 )
+ ifnull( tipa.vl_cs , 0 )
)
) -
CASE WHEN
(
select
sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as
hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.serie =
tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select
sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as
hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.serie =
tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia < cast(
pDTReferencia as date )
)
END
) > 0
;
IF ( vlSaldo IS NULL ) THEN
set vlSaldo = 0.0;
END IF;
SET vlSaldoTotal = vlSaldoTotal + vlSaldo;
END LOOP;
CLOSE curClientes;
return vlSaldoTotal;
end
//
CREATE FUNCTION getValorBaixaContasReceber( codEmpresa integer, pCodTitulo
integer, pCodParcela integer , pSerie char(3) , pDTReferencia char(10) )
returns decimal(17,2)
BEGIN
declare vlBaixa decimal(17,2);
select
sum(
CASE WHEN
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.serie = tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_receber_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.serie =
tipa.serie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
END
) as 'valorBaixa'
into
vlBaixa
from
fn_titulo_receber tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_vencimento < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
tipa.cod_titulo = pCodTitulo
and
tipa.cod_parcela = pCodParcela
and
tipa.serie = pSerie;
IF ( vlBaixa IS NULL ) THEN
return 0.0;
END IF;
return vlBaixa;
end
//
CREATE FUNCTION calcularJurosPagar( codEmpresa integer, codTitulo integer ,
codParcela integer, codFornecedor integer , codEspecie integer , dataReferencia
date , retornaSaldo char) returns decimal(17,2)
BEGIN
declare vlMulta decimal(17,2);
declare vlJuros decimal(17,2);
declare tarifaBoleto decimal(17,2);
declare vlTotalJurosMultaPont decimal(17,2);
declare vlTitulo decimal(17,2);
declare vlBaixa decimal(17,2);
declare vlTituloMenosImpostos decimal(17,2);
declare vlDesconto decimal(17,2);
declare percMulta decimal(17,2);
declare percJuros decimal(17,2);
declare vlSaldo decimal(17,2);
declare mesHoje int;
declare anoHoje int;
declare anoVenc int;
declare diasAtraso int;
declare dataVencimento date;
declare dataUltimaBaixa date;
declare tpJuros int;
set vlMulta = 0.0;
set vlJuros = 0.0;
set tarifaBoleto = 0.0;
set vlTotalJurosMultaPont = 0.0;
set vlTitulo = 0.0;
set vlBaixa = 0.0;
set vlTituloMenosImpostos = 0.0;
set vlDesconto = 0.0;
set percMulta = 0.0;
set percJuros = 0.0;
set vlSaldo = 0.0;
set tpJuros = 0;
SELECT
ifnull(fn_titulo_pagar.vl_desconto ,0.0) as vlDesconto,
ifnull(fn_titulo_pagar.perc_multa,0.0) as percMulta,
ifnulL(fn_titulo_pagar.perc_juros,0.0) as percJuros,
getValorBaixaContasPagar
(
fn_titulo_pagar.cod_empresa,
fn_titulo_pagar.cod_titulo,
fn_titulo_pagar.cod_parcela ,
fn_titulo_pagar.cod_fornecedor ,
fn_titulo_pagar.cod_especie ,
dataReferencia
) as vlBaixa,
fn_titulo_pagar.vl_total_titulo as vlTitulo,
fn_titulo_pagar.vl_total_titulo -
( ifnull( fn_titulo_pagar.vl_iss , 0 )
+ ifnull(fn_titulo_pagar.vl_ir,0)
+ ifnull( fn_titulo_pagar.vl_pis, 0 )
+ ifnull( fn_titulo_pagar.vl_cofins , 0 )
+ ifnull( fn_titulo_pagar.vl_cs , 0 )
) as
vlTituloMenosImpostos,
ifnull( fn_titulo_pagar.tp_juros , 0 )
as tpJuros,
ifnull( fn_titulo_pagar.taxa_boleto , 0 )
as tarifaBoleto,
-- Pega a data do vencimento desconsiderando feriados e sábado e
domingo.
getDtVencimentoFeriado(fn_titulo_pagar.dt_vencimento)
as dtVencimento,
(
select max(hist.dt_referencia)
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa = fn_titulo_pagar.cod_empresa
and
hist.cod_titulo = fn_titulo_pagar.cod_titulo
and
hist.cod_parcela = fn_titulo_pagar.cod_parcela
and
hist.cod_fornecedor =
fn_titulo_pagar.cod_fornecedor
and
hist.cod_especie = fn_titulo_pagar.cod_especie
and
hist.tp_hist = 30
) as dtUltimaBaixa
INTO
vlDesconto,
percMulta,
percJuros,
vlBaixa,
vlTitulo,
vlTituloMenosImpostos,
tpJuros,
tarifaBoleto,
dataVencimento,
dataUltimaBaixa
FROM
fn_titulo_pagar
WHERE
fn_titulo_pagar.cod_empresa = codEmpresa
and
fn_titulo_pagar.cod_titulo = codTitulo
and
fn_titulo_pagar.cod_parcela = codParcela
and
fn_titulo_pagar.cod_fornecedor = codFornecedor
and
fn_titulo_pagar.cod_especie = codEspecie;
--
------------------------------------------------------------------------
-- Calcula os juros a partir deste ponto.
-- ------------------------------------------------------------------------
-- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste
caso não calcula juros.
IF ( dataVencimento is null ) THEN
return 0.0;
END IF;
set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
-- Se tÃtulo não estiver vencido
IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <=
DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF ( ifnull(vlBaixa,0) = 0 ) THEN
return 0.0;
ELSE
return ABS(vlSaldo);
END IF;
END IF;
IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento),
'%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
return ABS(vlSaldo);
END IF;
-- Verifica se deverá utilizar a data da última baixa para cálculo dos
-- juros.
IF ( dataUltimaBaixa != null ) THEN
IF ( dataUtimaBaixa > dataVencimento ) THEN
set dataReferencia = dataUltimaBaixa ;
END IF;
END IF;
-- Juros ao dia
IF ( tpJuros = 0 ) THEN
set diasAtraso = DATEDIFF(dataReferencia,dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
-- Juros ao Mês
IF ( tpJuros = 1 ) THEN
set mesHoje = month(dataReferencia);
set anoHoje = year(dataReferencia);
set anoVenc = year(dataVencimento);
set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 );
set diasAtraso = mesHoje - month(dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta;
IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo;
END IF;
return 0.0;
END IF;
IF( retornaSaldo = '1' ) THEN
return vlSaldo + vlMulta + vlJuros - vlDesconto;
END IF;
return vlMulta + vlJuros - vlDesconto;
END
//
CREATE FUNCTION getDtVencimentoFeriado( dtVencimento date ) returns date
DETERMINISTIC
BEGIN
declare retorno date;
declare feriado date;
declare exitLoop int;
set retorno = dtVencimento;
set exitLoop = 1;
-- Verifica se a data de vencimento é um dia útil.
WHILE ( exitLoop = 1 )
DO
select dt_feriado
into feriado
from cd_feriado
where
dt_feriado between cast(concat(cast(DATE_FORMAT(retorno, '%Y-
%m-%d') as char),' 00:00:00') as date)
and
cast(concat(cast(DATE_FORMAT(retorno, '%Y-
%m-%d') as char),' 23:59:59') as date);
-- Verifica se a data é dia útil
IF( feriado is not null or WEEKDAY(retorno) > 4) THEN
set retorno = DATE_ADD(retorno, INTERVAL 1 DAY);
set feriado = null;
ELSE
set exitLoop = 0;
set feriado = null;
END IF;
END WHILE;
return retorno;
END
//
CREATE FUNCTION getSaldoContasPagarFornecedor( codEmpresa integer, codFornecedor
integer , pDTReferencia char(10) ) returns decimal(17,2)
BEGIN
declare vlSaldo decimal(17,2);
select
sum( calcularJurosPagar(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa.c
od_fornecedor,tipa.cod_especie,cast(pDTReferencia as date) , '1' )
) as 'credito'
into
vlSaldo
from
fn_titulo_pagar tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_implant < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
tipa.cod_fornecedor = codFornecedor
and
(
(
tipa.vl_total_titulo -
( ifnull( tipa.vl_iss , 0 )
+ ifnull( tipa.vl_ir,0)
+ ifnull( tipa.vl_pis, 0 )
+ ifnull( tipa.vl_cofins , 0 )
+ ifnull( tipa.vl_cs , 0 )
)
) -
CASE WHEN
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa = tipa.cod_empresa
and
hist.cod_titulo = tipa.cod_titulo
and
hist.cod_parcela = tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie = tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa = tipa.cod_empresa
and
hist.cod_titulo = tipa.cod_titulo
and
hist.cod_parcela = tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie = tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
END
) > 0
;
IF ( vlSaldo IS NULL ) THEN
return 0.0;
END IF;
return vlSaldo;
end
//
CREATE FUNCTION getSaldoContasPagarFornecedoresPeriodo( codEmpresa integer,
pDTReferencia char(10) , pDataFinal char(19)) returns decimal(17,2)
BEGIN
declare done INT DEFAULT 0;
declare vlSaldo decimal(17,2);
declare pFornecedor integer;
declare vlSaldoTotal decimal(17,2);
DECLARE curFornecedores CURSOR FOR
select
distinct tipaPeriodo.cod_fornecedor
from
fn_titulo_pagar tipaPeriodo
LEFT OUTER JOIN fn_titulo_pagar_hist as
hist
ON
hist.cod_empresa =
tipaPeriodo.cod_empresa
and
hist.cod_titulo =
tipaPeriodo.cod_titulo
and
hist.cod_parcela =
tipaPeriodo.cod_parcela
and
hist.cod_fornecedor =
tipaPeriodo.cod_fornecedor
and
hist.cod_especie =
tipaPeriodo.cod_especie
where
tipaPeriodo.cod_empresa =
codEmpresa
and
(
(
hist.dt_referencia between
pDTReferencia and pDataFinal
and
hist.tp_hist = 30
)
or
(
tipaPeriodo.dt_implant
between pDTReferencia and pDataFinal
and
tipaPeriodo.situacao between
10 and 30
)
);
declare CONTINUE HANDLER FOR NOT FOUND SET done = 1;
set vlSaldoTotal = 0;
OPEN curFornecedores;
read_loop: LOOP
FETCH curFornecedores INTO pFornecedor;
-- Verifica se o loop deverá ser terminado
IF done THEN
LEAVE read_loop;
END IF;
select
sum( calcularJurosPagar(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa.c
od_fornecedor,tipa.cod_especie,cast(pDTReferencia as date) , '1' )
) as 'credito'
into
vlSaldo
from
fn_titulo_pagar tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_implant < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
cod_fornecedor = pFornecedor
and
(
(
tipa.vl_total_titulo -
( ifnull( tipa.vl_iss , 0 )
+ ifnull( tipa.vl_ir,0)
+ ifnull( tipa.vl_pis, 0 )
+ ifnull( tipa.vl_cofins , 0 )
+ ifnull( tipa.vl_cs , 0 )
)
) -
CASE WHEN
(
select
sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie =
tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select
sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie =
tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia < cast(
pDTReferencia as date )
)
END
) > 0
;
IF ( vlSaldo IS NULL ) THEN
set vlSaldo = 0.0;
END IF;
SET vlSaldoTotal = vlSaldoTotal + vlSaldo;
END LOOP;
CLOSE curFornecedores;
return vlSaldoTotal;
end
//
CREATE FUNCTION getValorBaixaContasPagar( codEmpresa integer, pCodTitulo
integer, pCodParcela integer , pCodFornecedor integer , pCodEspecie integer,
pDTReferencia char(10) ) returns decimal(17,2)
BEGIN
declare vlBaixa decimal(17,2);
select
sum(
CASE WHEN
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie =
tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
IS NULL
THEN
0.0
ELSE
(
select sum(ifnull(hist.vl_baixa,0))
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa =
tipa.cod_empresa
and
hist.cod_titulo =
tipa.cod_titulo
and
hist.cod_parcela =
tipa.cod_parcela
and
hist.cod_fornecedor =
tipa.cod_fornecedor
and
hist.cod_especie =
tipa.cod_especie
and
hist.tp_hist = 30
and
hist.dt_referencia <
cast( pDTReferencia as date )
)
END
) as 'valorBaixa'
into
vlBaixa
from
fn_titulo_pagar tipa
where
tipa.situacao between 10 and 30
and
tipa.dt_vencimento < pDTReferencia
and
tipa.cod_empresa = codEmpresa
and
tipa.cod_titulo = pCodTitulo
and
tipa.cod_parcela = pCodParcela
and
tipa.cod_fornecedor = pCodFornecedor
and
tipa.cod_especie = pCodEspecie;
IF ( vlBaixa IS NULL ) THEN
return 0.0;
END IF;
return vlBaixa;
end
//
delimiter ;
DROP FUNCTION IF EXISTS calcularJurosReceber;
delimiter //
CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer ,
codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char)
returns decimal(17,2)
BEGIN
declare vlMulta decimal(17,2);
declare vlJuros decimal(17,2);
declare tarifaBoleto decimal(17,2);
declare vlTotalJurosMultaPont decimal(17,2);
declare vlTitulo decimal(17,2);
declare vlBaixa decimal(17,2);
declare vlTituloMenosImpostos decimal(17,2);
declare vlDesconto decimal(17,2);
declare percMulta decimal(17,2);
declare percJuros decimal(17,2);
declare vlSaldo decimal(17,2);
declare mesHoje int;
declare anoHoje int;
declare anoVenc int;
declare diasAtraso int;
declare dataVencimento date;
declare dataUltimaBaixa date;
declare tpJuros int;
set vlMulta = 0.0;
set vlJuros = 0.0;
set tarifaBoleto = 0.0;
set vlTotalJurosMultaPont = 0.0;
set vlTitulo = 0.0;
set vlBaixa = 0.0;
set vlTituloMenosImpostos = 0.0;
set vlDesconto = 0.0;
set percMulta = 0.0;
set percJuros = 0.0;
set vlSaldo = 0.0;
set tpJuros = 0;
SELECT
ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto,
ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta,
ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros,
getValorBaixaContasReceber
(
fn_titulo_receber.cod_empresa,
fn_titulo_receber.cod_titulo,
fn_titulo_receber.cod_parcela ,
fn_titulo_receber.serie ,
dataReferencia
) as vlBaixa,
fn_titulo_receber.vl_total_titulo as vlTitulo,
fn_titulo_receber.vl_total_titulo -
( ifnull( fn_titulo_receber.vl_iss , 0 )
+ ifnull(fn_titulo_receber.vl_ir,0)
+ ifnull( fn_titulo_receber.vl_pis, 0 )
+ ifnull( fn_titulo_receber.vl_cofins , 0 )
+ ifnull( fn_titulo_receber.vl_cs , 0 )
) as
vlTituloMenosImpostos,
ifnull( fn_titulo_receber.tp_juros , 0 )
as tpJuros,
ifnull( fn_titulo_receber.taxa_boleto , 0 )
as tarifaBoleto,
-- Pega a data do vencimento desconsiderando feriados e sábado e
domingo.
getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento)
as dtVencimento,
(
select max(hist.dt_referencia)
from fn_titulo_receber_hist as hist
where
hist.cod_empresa = fn_titulo_receber.cod_empresa
and
hist.cod_titulo = fn_titulo_receber.cod_titulo
and
hist.cod_parcela = fn_titulo_receber.cod_parcela
and
hist.serie = fn_titulo_receber.serie
and
hist.tp_hist = 30
) as dtUltimaBaixa
INTO
vlDesconto,
percMulta,
percJuros,
vlBaixa,
vlTitulo,
vlTituloMenosImpostos,
tpJuros,
tarifaBoleto,
dataVencimento,
dataUltimaBaixa
FROM
fn_titulo_receber
WHERE
fn_titulo_receber.cod_empresa = codEmpresa
and
fn_titulo_receber.cod_titulo = codTitulo
and
fn_titulo_receber.cod_parcela = codParcela
and
fn_titulo_receber.serie = pSerie;
-- ------------------------------------------------------------------------
-- Calcula os juros a partir deste ponto.
-- ------------------------------------------------------------------------
set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
-- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste
caso não calcula juros.
IF ( dataVencimento is null ) THEN
-- Se deverá retornar saldo, calcula com o desconto.
IF( retornaSaldo = '1' ) THEN
return vlSaldo - vlDesconto;
END IF;
return 0.0;
END IF;
-- Se tÃtulo não estiver vencido
IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <=
DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF ( ifnull(vlBaixa,0) = 0 ) THEN
-- Se deverá retornar saldo, calcula com o desconto.
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
-- Se deverá retornar saldo, calcula com o desconto.
IF( retornaSaldo = '1' ) THEN
return ABS(vlSaldo);
END IF;
return 0.0;
ELSE
-- Se deverá retornar saldo, calcula com o desconto.
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
return ABS(vlSaldo);
END IF;
END IF;
IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento),
'%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
-- Se deverá retornar saldo, calcula com o desconto.
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
return ABS(vlSaldo);
END IF;
-- Verifica se deverá utilizar a data da última baixa para cálculo dos
-- juros.
IF ( dataUltimaBaixa != null ) THEN
IF ( dataUtimaBaixa > dataVencimento ) THEN
set dataReferencia = dataUltimaBaixa ;
END IF;
END IF;
-- Juros ao dia
IF ( tpJuros = 0 ) THEN
set diasAtraso = DATEDIFF(dataReferencia,dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
-- Juros ao Mês
IF ( tpJuros = 1 ) THEN
set mesHoje = month(dataReferencia);
set anoHoje = year(dataReferencia);
set anoVenc = year(dataVencimento);
set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 );
set diasAtraso = mesHoje - month(dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta;
IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo;
END IF;
return 0.0;
END IF;
IF( retornaSaldo = '1' ) THEN
return vlSaldo + vlMulta + vlJuros - vlDesconto;
END IF;
return vlMulta + vlJuros - vlDesconto;
END;
//
delimiter ;
SET GLOBAL log_bin_trust_function_creators = 1;
DROP FUNCTION IF EXISTS calcularJurosReceber;
DROP FUNCTION IF EXISTS calcularJurosPagar;
delimiter //
CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer ,
codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char)
RETURNS decimal(17,2)
BEGIN
declare vlMulta decimal(17,2);
declare vlJuros decimal(17,2);
declare tarifaBoleto decimal(17,2);
declare vlTotalJurosMultaPont decimal(17,2);
declare vlTitulo decimal(17,2);
declare vlBaixa decimal(17,2);
declare vlTituloMenosImpostos decimal(17,2);
declare vlDesconto decimal(17,2);
declare percMulta decimal(17,5);
declare percJuros decimal(17,5);
declare vlSaldo decimal(17,2);
declare mesHoje int;
declare anoHoje int;
declare anoVenc int;
declare diasAtraso int;
declare dataVencimento date;
declare dataUltimaBaixa date;
declare tpJuros int;
set vlMulta = 0.0;
set vlJuros = 0.0;
set tarifaBoleto = 0.0;
set vlTotalJurosMultaPont = 0.0;
set vlTitulo = 0.0;
set vlBaixa = 0.0;
set vlTituloMenosImpostos = 0.0;
set vlDesconto = 0.0;
set percMulta = 0.0;
set percJuros = 0.0;
set vlSaldo = 0.0;
set tpJuros = 0;
SELECT
ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto,
ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta,
ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros,
getValorBaixaContasReceber
(
fn_titulo_receber.cod_empresa,
fn_titulo_receber.cod_titulo,
fn_titulo_receber.cod_parcela ,
fn_titulo_receber.serie ,
dataReferencia
) as vlBaixa,
fn_titulo_receber.vl_total_titulo as vlTitulo,
fn_titulo_receber.vl_total_titulo -
( ifnull( fn_titulo_receber.vl_iss , 0 )
+ ifnull(fn_titulo_receber.vl_ir,0)
+ ifnull( fn_titulo_receber.vl_pis, 0 )
+ ifnull( fn_titulo_receber.vl_cofins , 0 )
+ ifnull( fn_titulo_receber.vl_cs , 0 )
) as
vlTituloMenosImpostos,
ifnull( fn_titulo_receber.tp_juros , 0 )
as tpJuros,
ifnull( fn_titulo_receber.taxa_boleto , 0 )
as tarifaBoleto,
getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento)
as dtVencimento,
(
select max(hist.dt_referencia)
from fn_titulo_receber_hist as hist
where
hist.cod_empresa = fn_titulo_receber.cod_empresa
and
hist.cod_titulo = fn_titulo_receber.cod_titulo
and
hist.cod_parcela = fn_titulo_receber.cod_parcela
and
hist.serie = fn_titulo_receber.serie
and
hist.tp_hist = 30
) as dtUltimaBaixa
INTO
vlDesconto,
percMulta,
percJuros,
vlBaixa,
vlTitulo,
vlTituloMenosImpostos,
tpJuros,
tarifaBoleto,
dataVencimento,
dataUltimaBaixa
FROM
fn_titulo_receber
WHERE
fn_titulo_receber.cod_empresa = codEmpresa
and
fn_titulo_receber.cod_titulo = codTitulo
and
fn_titulo_receber.cod_parcela = codParcela
and
fn_titulo_receber.serie = pSerie;
set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
IF ( dataVencimento is null ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo - vlDesconto;
END IF;
return 0.0;
END IF;
IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <=
DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF ( ifnull(vlBaixa,0) = 0 ) THEN
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
IF( retornaSaldo = '1' ) THEN
return ABS(vlSaldo);
END IF;
return 0.0;
ELSE
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
return ABS(vlSaldo);
END IF;
END IF;
IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento),
'%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN
return vlSaldo - vlDesconto;
END IF;
return ABS(vlSaldo);
END IF;
IF ( dataUltimaBaixa != null ) THEN
IF ( dataUtimaBaixa > dataVencimento ) THEN
set dataReferencia = dataUltimaBaixa ;
END IF;
END IF;
IF ( tpJuros = 0 ) THEN
set diasAtraso = DATEDIFF(dataReferencia,dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
IF ( tpJuros = 1 ) THEN
set mesHoje = month(dataReferencia);
set anoHoje = year(dataReferencia);
set anoVenc = year(dataVencimento);
set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 );
set diasAtraso = mesHoje - month(dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
set vlMulta = TRUNCATE(( vlSaldo + tarifaBoleto ) * percMulta,2);
IF ( ( vlMulta + vlJuros - ifnull( vlDesconto,0) ) IS NULL ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo;
END IF;
return 0.0;
END IF;
IF( retornaSaldo = '1' ) THEN
return vlSaldo + vlMulta + vlJuros - vlDesconto;
END IF;
return vlMulta + vlJuros - vlDesconto;
END//
CREATE FUNCTION calcularJurosPagar( codEmpresa integer, codTitulo integer ,
codParcela integer, codFornecedor integer , codEspecie integer , dataReferencia
date , retornaSaldo char) RETURNS decimal(17,2)
BEGIN
declare vlMulta decimal(17,2);
declare vlJuros decimal(17,2);
declare tarifaBoleto decimal(17,2);
declare vlTotalJurosMultaPont decimal(17,2);
declare vlTitulo decimal(17,2);
declare vlBaixa decimal(17,2);
declare vlTituloMenosImpostos decimal(17,2);
declare vlDesconto decimal(17,2);
declare percMulta decimal(17,5);
declare percJuros decimal(17,5);
declare vlSaldo decimal(17,2);
declare mesHoje int;
declare anoHoje int;
declare anoVenc int;
declare diasAtraso int;
declare dataVencimento date;
declare dataUltimaBaixa date;
declare tpJuros int;
set vlMulta = 0.0;
set vlJuros = 0.0;
set tarifaBoleto = 0.0;
set vlTotalJurosMultaPont = 0.0;
set vlTitulo = 0.0;
set vlBaixa = 0.0;
set vlTituloMenosImpostos = 0.0;
set vlDesconto = 0.0;
set percMulta = 0.0;
set percJuros = 0.0;
set vlSaldo = 0.0;
set tpJuros = 0;
SELECT
ifnull(fn_titulo_pagar.vl_desconto ,0.0) as vlDesconto,
ifnull(fn_titulo_pagar.perc_multa,0.0) as percMulta,
ifnulL(fn_titulo_pagar.perc_juros,0.0) as percJuros,
getValorBaixaContasPagar
(
fn_titulo_pagar.cod_empresa,
fn_titulo_pagar.cod_titulo,
fn_titulo_pagar.cod_parcela ,
fn_titulo_pagar.cod_fornecedor ,
fn_titulo_pagar.cod_especie ,
dataReferencia
) as vlBaixa,
fn_titulo_pagar.vl_total_titulo as vlTitulo,
fn_titulo_pagar.vl_total_titulo -
( ifnull( fn_titulo_pagar.vl_iss , 0 )
+ ifnull(fn_titulo_pagar.vl_ir,0)
+ ifnull( fn_titulo_pagar.vl_pis, 0 )
+ ifnull( fn_titulo_pagar.vl_cofins , 0 )
+ ifnull( fn_titulo_pagar.vl_cs , 0 )
) as
vlTituloMenosImpostos,
ifnull( fn_titulo_pagar.tp_juros , 0 )
as tpJuros,
ifnull( fn_titulo_pagar.taxa_boleto , 0 )
as tarifaBoleto,
getDtVencimentoFeriado(fn_titulo_pagar.dt_vencimento)
as dtVencimento,
(
select max(hist.dt_referencia)
from fn_titulo_pagar_hist as hist
where
hist.cod_empresa = fn_titulo_pagar.cod_empresa
and
hist.cod_titulo = fn_titulo_pagar.cod_titulo
and
hist.cod_parcela = fn_titulo_pagar.cod_parcela
and
hist.cod_fornecedor =
fn_titulo_pagar.cod_fornecedor
and
hist.cod_especie = fn_titulo_pagar.cod_especie
and
hist.tp_hist = 30
) as dtUltimaBaixa
INTO
vlDesconto,
percMulta,
percJuros,
vlBaixa,
vlTitulo,
vlTituloMenosImpostos,
tpJuros,
tarifaBoleto,
dataVencimento,
dataUltimaBaixa
FROM
fn_titulo_pagar
WHERE
fn_titulo_pagar.cod_empresa = codEmpresa
and
fn_titulo_pagar.cod_titulo = codTitulo
and
fn_titulo_pagar.cod_parcela = codParcela
and
fn_titulo_pagar.cod_fornecedor = codFornecedor
and
fn_titulo_pagar.cod_especie = codEspecie;
IF ( dataVencimento is null ) THEN
return 0.0;
END IF;
set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <=
DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
IF ( ifnull(vlBaixa,0) = 0 ) THEN
return 0.0;
ELSE
return ABS(vlSaldo);
END IF;
END IF;
IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento),
'%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN
return ABS(vlSaldo);
END IF;
IF ( dataUltimaBaixa != null ) THEN
IF ( dataUtimaBaixa > dataVencimento ) THEN
set dataReferencia = dataUltimaBaixa ;
END IF;
END IF;
IF ( tpJuros = 0 ) THEN
set diasAtraso = DATEDIFF(dataReferencia,dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
IF ( tpJuros = 1 ) THEN
set mesHoje = month(dataReferencia);
set anoHoje = year(dataReferencia);
set anoVenc = year(dataVencimento);
set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 );
set diasAtraso = mesHoje - month(dataVencimento);
set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros;
set vlJuros = vlJuros * diasAtraso;
END IF;
set vlMulta = TRUNCATE(( vlSaldo + tarifaBoleto ) * percMulta,2);
IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN
IF( retornaSaldo = '1' ) THEN
return vlSaldo;
END IF;
return 0.0;
END IF;
IF( retornaSaldo = '1' ) THEN
return vlSaldo + vlMulta + vlJuros - vlDesconto;
END IF;
return vlMulta + vlJuros - vlDesconto;
END//
CREATE DEFINER=`root`@`%` FUNCTION `SOMA_EMAILS_PEDIDO`(dataInicio CHAR(19),
dataFim CHAR(19), codColaborador integer) RETURNS decimal(10,0)
BEGIN
DECLARE VALOR_TOTAL NUMERIC(17,2);
select sum( valorPedido )
INTO VALOR_TOTAL
from
(
select
pedi.cod_pedido , SUM( distinct pedi.vl_total_produtos) as
valorPedido
from
vd_pedido pedi
inner join vd_pedido_hist hist
on
hist.cod_pedido = pedi.cod_pedido
and
hist.cod_empresa = pedi.cod_empresa
and
tp_historico = 35
and
dt_implant between dataInicio and dataFim
where
pedi.cod_colaborador = codColaborador
group by
pedi.cod_pedido
) as total;
RETURN ifnull(VALOR_TOTAL,0);
END//
delimiter ;
GRANT EXECUTE ON FUNCTION calcularJurosReceber to ROLE;
GRANT EXECUTE ON FUNCTION calcularJurosPagar to ROLE;
PREPARE SCRIPT FROM "SELECT CONCAT('GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE
ON * TO ''', User , '''' , '@''' ,Host , ''';') FROM mysql.user;";
EXECUTE SCRIPT;
DROP PREPARE SCRIPT;
flush privileges;
DROP TRIGGER `tr_vd_pedido_afu`;
DROP TRIGGER `tr_vd_pedido_afi`;
DROP TRIGGER `tr_vd_pedido_afd`;
DROP TRIGGER IF EXISTS tr_vd_pedido_afi;
DELIMITER $$
CREATE TRIGGER tr_vd_pedido_afi AFTER INSERT
ON vd_pedido
FOR EACH ROW
BEGIN
IF NEW.cod_ecommerce = 5 THEN
INSERT INTO vd_pedido_ecommerce ( cod_pedido,
situacao_erp, situacao_ecommerce, dt_ultima_alteracao ) VALUES
( NEW.cod_pedido, NEW.situacao, '_NEAS', now() );
END IF;
END
$$
DELIMITER ;
DROP TRIGGER IF EXISTS tr_vd_pedido_afd
;
DELIMITER $$
CREATE TRIGGER tr_vd_pedido_afd AFTER DELETE
ON vd_pedido
FOR EACH ROW
BEGIN
IF OLD.cod_ecommerce = 5 THEN
DELETE FROM vd_pedido_ecommerce where cod_pedido =
OLD.cod_pedido;
END IF;
END
$$
DELIMITER ;
DROP TRIGGER IF EXISTS tr_vd_pedido_afu
;
DELIMITER $$
CREATE TRIGGER tr_vd_pedido_afu AFTER UPDATE
ON vd_pedido
FOR EACH ROW
BEGIN
IF NEW.cod_ecommerce = 5 AND NEW.situacao != OLD.situacao THEN
UPDATE vd_pedido_ecommerce set situacao_erp =
NEW.situacao , dt_ultima_alteracao = null where cod_pedido = NEW.cod_pedido;
END IF;
END
$$
DELIMITER ;

Mais conteúdo relacionado

Destaque

matura iz likovnog
matura iz likovnogmatura iz likovnog
matura iz likovnoganeeee
 
Stay on Top of Today’s and Tomorrow’s Mobile App Trends
Stay on Top of Today’s and Tomorrow’s Mobile App TrendsStay on Top of Today’s and Tomorrow’s Mobile App Trends
Stay on Top of Today’s and Tomorrow’s Mobile App TrendsInfo-Tech Research Group
 
Develop a Resource Management Strategy for the New Reality
Develop a Resource Management Strategy for the New RealityDevelop a Resource Management Strategy for the New Reality
Develop a Resource Management Strategy for the New RealityInfo-Tech Research Group
 
456 Monster Loch Ness Fr
456 Monster Loch Ness Fr456 Monster Loch Ness Fr
456 Monster Loch Ness Frzalinet
 

Destaque (8)

matura iz likovnog
matura iz likovnogmatura iz likovnog
matura iz likovnog
 
Stay on Top of Today’s and Tomorrow’s Mobile App Trends
Stay on Top of Today’s and Tomorrow’s Mobile App TrendsStay on Top of Today’s and Tomorrow’s Mobile App Trends
Stay on Top of Today’s and Tomorrow’s Mobile App Trends
 
Develop a Resource Management Strategy for the New Reality
Develop a Resource Management Strategy for the New RealityDevelop a Resource Management Strategy for the New Reality
Develop a Resource Management Strategy for the New Reality
 
Enterprise mobility management
Enterprise mobility managementEnterprise mobility management
Enterprise mobility management
 
Perform a Data Audit
Perform a Data AuditPerform a Data Audit
Perform a Data Audit
 
Survive an Impending Audit
Survive an Impending AuditSurvive an Impending Audit
Survive an Impending Audit
 
456 Monster Loch Ness Fr
456 Monster Loch Ness Fr456 Monster Loch Ness Fr
456 Monster Loch Ness Fr
 
Adriana
AdrianaAdriana
Adriana
 

update

  • 1. update sg_colaborador set email = 'samara.martins@unosolucoes.com.br'; update cd_fornecedor set email = 'samara.martins@unosolucoes.com.br'; update cd_cliente set email_cobranca = 'samara.martins@unosolucoes.com.br'; update vd_vendedor_revenda set email = 'emaildaunonaofunciona@gmail.com'; update cd_empresa set email = 'emaildaunonaofunciona@gmail.com'; update cd_cliente_contato set email = 'samara.martins@unosolucoes.com.br'; update cd_cliente set email_cobranca = 'samara.martins@unosolucoes.com.br'; UPDATE `vd_pedido` SET `email_cliente`='samara.martins@unosolucoes.com.br'; UPDATE `vd_ponto_controle` SET `email_aviso`='samara.martins@unosolucoes.com.br'; UPDATE cd_param_empresa SET valor = 'smtp.gmail.com' WHERE nome_param = 'smtpPadrao'; UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona@gmail.com' WHERE nome_param = 'emailSMTP'; UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona@gmail.com' WHERE nome_param = 'usuarioSMTP'; UPDATE cd_param_empresa SET valor = 'emaildaunonaofunciona1' WHERE nome_param = 'senhaSMTP'; UPDATE cd_param_empresa SET valor = '587' WHERE nome_param = 'portaSMTP'; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailCobranca'; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailInclusaoProduto'; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailSuporte'; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailAlteracaoCliente'; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailSuporte'; Update `vd_vendedor_revenda` SET `nome_colaborador`='uno', `email`='emaildaunonaofunciona@gmail.com', `telefone_1`='11111111111', `ddd_1`=11, `id_usuario`='unosol', `senha`='6348f4fbdb0700923a4c4daa43834433', `dica_senha`='padrao'; UPDATE `oc_categoria` SET `email`='emaildaunonaofunciona@gmail.com'; UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE `nome_param`='urlGeraBoleto'; UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE `nome_param`='ipBoleto'; UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE `nome_param`='urlGeraBoleto'; UPDATE `cd_param_empresa` SET `valor`='/var/www/phpboleto2/files/boletos/' WHERE `nome_param`='urlArquivosBoleto'; UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE `nome_param`='ipEmailBoleto'; UPDATE `cd_param_empresa` SET `valor`='http://ucommerce.com.br' WHERE `nome_param`='ipBoleto'; UPDATE `cd_parametro` SET `def_valor`='' WHERE `nome_param`='pathBoleto'; UPDATE `cd_parametro` SET `def_valor`='/home/httpd/html/phpboleto2/files/boletos/' WHERE `nome_param`='urlArquivosBoleto'; UPDATE `cd_parametro` SET `def_valor`='http://ucommerce.com.br/phpboleto2/files/geraboleto.php' WHERE `nome_param`='urlGeraBoleto'; UPDATE `cd_parametro` SET `def_valor`='ucommerce.com.br' WHERE `nome_param`='ipEmailBoleto'; UPDATE `cd_parametro` SET `def_valor`='ucommerce.com.br' WHERE `nome_param`='ipBoleto'; UPDATE `cd_param_empresa` SET `valor`='samara.martins@unosolucoes.com.br' WHERE `nome_param`='emailGerenteVendas'; UPDATE at_status SET email_aviso ='samara.martins@unosolucoes.com.br',
  • 2. email_responsavel ='samara.martins@unosolucoes.com.br'; UPDATE at_status SET email_aviso='samara.martins@unosolucoes.com.br', email_responsavel='samara.martins@unosolucoes.com.br' ; UPDATE `cd_param_empresa` SET `valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailSolicitacao'; UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailCobranca'; UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailDestino'; UPDATE `cd_parametro` SET `def_valor`='emaildaunonaofunciona@gmail.com' WHERE `nome_param`='emailSuporte'; UPDATE `cd_cliente` SET `email_nfe`='samara.martins@unosolucoes.com.br'; UPDATE `fn_titulo_receber` SET `email_cliente`='samara.martins@unosolucoes.com.br'; UPDATE `cd_banco` SET `bo_email`='samara.martins@unosolucoes.com.br' ; UPDATE `sg_colaborador` SET `senha`='c4ca4238a0b923820dcc509a6f75849b'; UPDATE `vd_vendedor_revenda` SET `senha`='c4ca4238a0b923820dcc509a6f75849b'; UPDATE `cd_cliente` SET `cod_colaborador_revenda`=1; UPDATE `cd_cliente_contato` SET `id_contato`='unosol', `senha`='c4ca4238a0b923820dcc509a6f75849b' WHERE `cod_cliente`=1 AND `cod_contato`=1; UPDATE `cd_cliente_contato` SET `dt_senha`='2099-03-30' WHERE `cod_cliente`=1 AND `cod_contato`=1; UPDATE cd_param_empresa SET valor = null WHERE nome_param = "ipAplicacao"; UPDATE cd_param_empresa SET valor = null WHERE nome_param = 'emailCopiaPedidosAbertos'; DELETE from sg_crontab; TRUNCATE sg_crontab; UPDATE gm_nfe_adm_empresa SET Validade = '16/04/2999' ; UPDATE gm_nfe_adm_empresa SET CNPJ ='' ; UPDATE gm_nfe_adm_empresa SET InscEstadual ='' ; SET storage_engine = "Innodb"; SET FOREIGN_KEY_CHECKS = 0; SET GLOBAL log_bin_trust_function_creators = 1; DROP FUNCTION IF EXISTS calcularJurosPagar; DROP FUNCTION IF EXISTS getDtVencimentoFeriado; DROP FUNCTION IF EXISTS getSaldoContasPagarFornecedor; DROP FUNCTION IF EXISTS getSaldoContasPagarFornecedoresPeriodo; DROP FUNCTION IF EXISTS getValorBaixaContasPagar; DROP FUNCTION IF EXISTS calcularJurosReceber; DROP FUNCTION IF EXISTS getSaldoContasReceberCliente; DROP FUNCTION IF EXISTS getSaldoContasReceberClientesPeriodo; DROP FUNCTION IF EXISTS getValorBaixaContasReceber; delimiter // CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer , codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char) returns decimal(17,2) BEGIN declare vlMulta decimal(17,2); declare vlJuros decimal(17,2); declare tarifaBoleto decimal(17,2); declare vlTotalJurosMultaPont decimal(17,2); declare vlTitulo decimal(17,2); declare vlBaixa decimal(17,2); declare vlTituloMenosImpostos decimal(17,2);
  • 3. declare vlDesconto decimal(17,2); declare percMulta decimal(17,2); declare percJuros decimal(17,2); declare vlSaldo decimal(17,2); declare mesHoje int; declare anoHoje int; declare anoVenc int; declare diasAtraso int; declare dataVencimento date; declare dataUltimaBaixa date; declare tpJuros int; set vlMulta = 0.0; set vlJuros = 0.0; set tarifaBoleto = 0.0; set vlTotalJurosMultaPont = 0.0; set vlTitulo = 0.0; set vlBaixa = 0.0; set vlTituloMenosImpostos = 0.0; set vlDesconto = 0.0; set percMulta = 0.0; set percJuros = 0.0; set vlSaldo = 0.0; set tpJuros = 0; SELECT ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto, ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta, ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros, getValorBaixaContasReceber ( fn_titulo_receber.cod_empresa, fn_titulo_receber.cod_titulo, fn_titulo_receber.cod_parcela , fn_titulo_receber.serie , dataReferencia ) as vlBaixa, fn_titulo_receber.vl_total_titulo as vlTitulo, fn_titulo_receber.vl_total_titulo - ( ifnull( fn_titulo_receber.vl_iss , 0 ) + ifnull(fn_titulo_receber.vl_ir,0) + ifnull( fn_titulo_receber.vl_pis, 0 ) + ifnull( fn_titulo_receber.vl_cofins , 0 ) + ifnull( fn_titulo_receber.vl_cs , 0 ) ) as vlTituloMenosImpostos, ifnull( fn_titulo_receber.tp_juros , 0 ) as tpJuros, ifnull( fn_titulo_receber.taxa_boleto , 0 ) as tarifaBoleto, -- Pega a data do vencimento desconsiderando feriados e sábado e domingo. getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento) as dtVencimento, ( select max(hist.dt_referencia) from fn_titulo_receber_hist as hist where
  • 4. hist.cod_empresa = fn_titulo_receber.cod_empresa and hist.cod_titulo = fn_titulo_receber.cod_titulo and hist.cod_parcela = fn_titulo_receber.cod_parcela and hist.serie = fn_titulo_receber.serie and hist.tp_hist = 30 ) as dtUltimaBaixa INTO vlDesconto, percMulta, percJuros, vlBaixa, vlTitulo, vlTituloMenosImpostos, tpJuros, tarifaBoleto, dataVencimento, dataUltimaBaixa FROM fn_titulo_receber WHERE fn_titulo_receber.cod_empresa = codEmpresa and fn_titulo_receber.cod_titulo = codTitulo and fn_titulo_receber.cod_parcela = codParcela and fn_titulo_receber.serie = pSerie; -- ------------------------------------------------------------------------ -- Calcula os juros a partir deste ponto. -- ------------------------------------------------------------------------ -- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste caso não calcula juros. IF ( dataVencimento is null ) THEN return 0.0; END IF; set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0); -- Se tÃtulo não estiver vencido IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF ( ifnull(vlBaixa,0) = 0 ) THEN return 0.0; ELSE return ABS(vlSaldo); END IF; END IF; IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento), '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN return ABS(vlSaldo); END IF;
  • 5. -- Verifica se deverá utilizar a data da última baixa para cálculo dos -- juros. IF ( dataUltimaBaixa != null ) THEN IF ( dataUtimaBaixa > dataVencimento ) THEN set dataReferencia = dataUltimaBaixa ; END IF; END IF; -- Juros ao dia IF ( tpJuros = 0 ) THEN set diasAtraso = DATEDIFF(dataReferencia,dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; -- Juros ao Mês IF ( tpJuros = 1 ) THEN set mesHoje = month(dataReferencia); set anoHoje = year(dataReferencia); set anoVenc = year(dataVencimento); set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 ); set diasAtraso = mesHoje - month(dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta; IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo; END IF; return 0.0; END IF; IF( retornaSaldo = '1' ) THEN return vlSaldo + vlMulta + vlJuros - vlDesconto; END IF; return vlMulta + vlJuros - vlDesconto; END // CREATE FUNCTION getSaldoContasReceberCliente( codEmpresa integer, codCliente integer , pDTReferencia char(10) ) returns decimal(17,2) BEGIN declare vlSaldo decimal(17,2); select sum( calcularJurosReceber(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela, serie ,cast(pDTReferencia as date) , '1' ) ) as 'credito' into vlSaldo from fn_titulo_receber tipa where tipa.situacao between 10 and 30 and
  • 6. tipa.dt_implant < pDTReferencia and tipa.cod_empresa = codEmpresa and tipa.cod_cliente = codCliente and ( ( tipa.vl_total_titulo - ( ifnull( tipa.vl_iss , 0 ) + ifnull( tipa.vl_ir,0) + ifnull( tipa.vl_pis, 0 ) + ifnull( tipa.vl_cofins , 0 ) + ifnull( tipa.vl_cs , 0 ) ) ) - CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) > 0 ;
  • 7. IF ( vlSaldo IS NULL ) THEN return 0.0; END IF; return vlSaldo; end // CREATE FUNCTION getSaldoContasReceberClientesPeriodo( codEmpresa integer, pDTReferencia char(10) , pDataFinal char(19)) returns decimal(17,2) BEGIN declare done INT DEFAULT 0; declare vlSaldo decimal(17,2); declare pCliente integer; declare vlSaldoTotal decimal(17,2); DECLARE curClientes CURSOR FOR select distinct tipaPeriodo.cod_cliente from fn_titulo_receber tipaPeriodo LEFT OUTER JOIN fn_titulo_receber_hist as hist ON hist.cod_empresa = tipaPeriodo.cod_empresa and hist.cod_titulo = tipaPeriodo.cod_titulo and hist.cod_parcela = tipaPeriodo.cod_parcela and hist.serie = tipaPeriodo.serie where tipaPeriodo.cod_empresa = codEmpresa and ( ( hist.dt_referencia between pDTReferencia and pDataFinal and hist.tp_hist = 30 ) or ( tipaPeriodo.dt_implant between pDTReferencia and pDataFinal and tipaPeriodo.situacao between 10 and 30 ) ); declare CONTINUE HANDLER FOR NOT FOUND SET done = 1;
  • 8. set vlSaldoTotal = 0; OPEN curClientes; read_loop: LOOP FETCH curClientes INTO pCliente; -- Verifica se o loop deverá ser terminado IF done THEN LEAVE read_loop; END IF; select sum( calcularJurosReceber(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa .serie,cast(pDTReferencia as date) , '1' ) ) as 'credito' into vlSaldo from fn_titulo_receber tipa where tipa.situacao between 10 and 30 and tipa.dt_implant < pDTReferencia and tipa.cod_empresa = codEmpresa and cod_cliente = pCliente and ( ( tipa.vl_total_titulo - ( ifnull( tipa.vl_iss , 0 ) + ifnull( tipa.vl_ir,0) + ifnull( tipa.vl_pis, 0 ) + ifnull( tipa.vl_cofins , 0 ) + ifnull( tipa.vl_cs , 0 ) ) ) - CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) )
  • 9. IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) > 0 ; IF ( vlSaldo IS NULL ) THEN set vlSaldo = 0.0; END IF; SET vlSaldoTotal = vlSaldoTotal + vlSaldo; END LOOP; CLOSE curClientes; return vlSaldoTotal; end // CREATE FUNCTION getValorBaixaContasReceber( codEmpresa integer, pCodTitulo integer, pCodParcela integer , pSerie char(3) , pDTReferencia char(10) ) returns decimal(17,2) BEGIN declare vlBaixa decimal(17,2); select sum( CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo
  • 10. and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_receber_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.serie = tipa.serie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) as 'valorBaixa' into vlBaixa from fn_titulo_receber tipa where tipa.situacao between 10 and 30 and tipa.dt_vencimento < pDTReferencia and tipa.cod_empresa = codEmpresa and tipa.cod_titulo = pCodTitulo and tipa.cod_parcela = pCodParcela and tipa.serie = pSerie; IF ( vlBaixa IS NULL ) THEN return 0.0; END IF; return vlBaixa; end //
  • 11. CREATE FUNCTION calcularJurosPagar( codEmpresa integer, codTitulo integer , codParcela integer, codFornecedor integer , codEspecie integer , dataReferencia date , retornaSaldo char) returns decimal(17,2) BEGIN declare vlMulta decimal(17,2); declare vlJuros decimal(17,2); declare tarifaBoleto decimal(17,2); declare vlTotalJurosMultaPont decimal(17,2); declare vlTitulo decimal(17,2); declare vlBaixa decimal(17,2); declare vlTituloMenosImpostos decimal(17,2); declare vlDesconto decimal(17,2); declare percMulta decimal(17,2); declare percJuros decimal(17,2); declare vlSaldo decimal(17,2); declare mesHoje int; declare anoHoje int; declare anoVenc int; declare diasAtraso int; declare dataVencimento date; declare dataUltimaBaixa date; declare tpJuros int; set vlMulta = 0.0; set vlJuros = 0.0; set tarifaBoleto = 0.0; set vlTotalJurosMultaPont = 0.0; set vlTitulo = 0.0; set vlBaixa = 0.0; set vlTituloMenosImpostos = 0.0; set vlDesconto = 0.0; set percMulta = 0.0; set percJuros = 0.0; set vlSaldo = 0.0; set tpJuros = 0; SELECT ifnull(fn_titulo_pagar.vl_desconto ,0.0) as vlDesconto, ifnull(fn_titulo_pagar.perc_multa,0.0) as percMulta, ifnulL(fn_titulo_pagar.perc_juros,0.0) as percJuros, getValorBaixaContasPagar ( fn_titulo_pagar.cod_empresa, fn_titulo_pagar.cod_titulo, fn_titulo_pagar.cod_parcela , fn_titulo_pagar.cod_fornecedor , fn_titulo_pagar.cod_especie , dataReferencia ) as vlBaixa, fn_titulo_pagar.vl_total_titulo as vlTitulo, fn_titulo_pagar.vl_total_titulo - ( ifnull( fn_titulo_pagar.vl_iss , 0 ) + ifnull(fn_titulo_pagar.vl_ir,0) + ifnull( fn_titulo_pagar.vl_pis, 0 ) + ifnull( fn_titulo_pagar.vl_cofins , 0 ) + ifnull( fn_titulo_pagar.vl_cs , 0 ) ) as vlTituloMenosImpostos, ifnull( fn_titulo_pagar.tp_juros , 0 )
  • 12. as tpJuros, ifnull( fn_titulo_pagar.taxa_boleto , 0 ) as tarifaBoleto, -- Pega a data do vencimento desconsiderando feriados e sábado e domingo. getDtVencimentoFeriado(fn_titulo_pagar.dt_vencimento) as dtVencimento, ( select max(hist.dt_referencia) from fn_titulo_pagar_hist as hist where hist.cod_empresa = fn_titulo_pagar.cod_empresa and hist.cod_titulo = fn_titulo_pagar.cod_titulo and hist.cod_parcela = fn_titulo_pagar.cod_parcela and hist.cod_fornecedor = fn_titulo_pagar.cod_fornecedor and hist.cod_especie = fn_titulo_pagar.cod_especie and hist.tp_hist = 30 ) as dtUltimaBaixa INTO vlDesconto, percMulta, percJuros, vlBaixa, vlTitulo, vlTituloMenosImpostos, tpJuros, tarifaBoleto, dataVencimento, dataUltimaBaixa FROM fn_titulo_pagar WHERE fn_titulo_pagar.cod_empresa = codEmpresa and fn_titulo_pagar.cod_titulo = codTitulo and fn_titulo_pagar.cod_parcela = codParcela and fn_titulo_pagar.cod_fornecedor = codFornecedor and fn_titulo_pagar.cod_especie = codEspecie; -- ------------------------------------------------------------------------ -- Calcula os juros a partir deste ponto. -- ------------------------------------------------------------------------ -- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste caso não calcula juros. IF ( dataVencimento is null ) THEN return 0.0; END IF; set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
  • 13. -- Se tÃtulo não estiver vencido IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF ( ifnull(vlBaixa,0) = 0 ) THEN return 0.0; ELSE return ABS(vlSaldo); END IF; END IF; IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento), '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN return ABS(vlSaldo); END IF; -- Verifica se deverá utilizar a data da última baixa para cálculo dos -- juros. IF ( dataUltimaBaixa != null ) THEN IF ( dataUtimaBaixa > dataVencimento ) THEN set dataReferencia = dataUltimaBaixa ; END IF; END IF; -- Juros ao dia IF ( tpJuros = 0 ) THEN set diasAtraso = DATEDIFF(dataReferencia,dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; -- Juros ao Mês IF ( tpJuros = 1 ) THEN set mesHoje = month(dataReferencia); set anoHoje = year(dataReferencia); set anoVenc = year(dataVencimento); set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 ); set diasAtraso = mesHoje - month(dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta; IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo; END IF; return 0.0; END IF; IF( retornaSaldo = '1' ) THEN return vlSaldo + vlMulta + vlJuros - vlDesconto; END IF; return vlMulta + vlJuros - vlDesconto; END //
  • 14. CREATE FUNCTION getDtVencimentoFeriado( dtVencimento date ) returns date DETERMINISTIC BEGIN declare retorno date; declare feriado date; declare exitLoop int; set retorno = dtVencimento; set exitLoop = 1; -- Verifica se a data de vencimento é um dia útil. WHILE ( exitLoop = 1 ) DO select dt_feriado into feriado from cd_feriado where dt_feriado between cast(concat(cast(DATE_FORMAT(retorno, '%Y- %m-%d') as char),' 00:00:00') as date) and cast(concat(cast(DATE_FORMAT(retorno, '%Y- %m-%d') as char),' 23:59:59') as date); -- Verifica se a data é dia útil IF( feriado is not null or WEEKDAY(retorno) > 4) THEN set retorno = DATE_ADD(retorno, INTERVAL 1 DAY); set feriado = null; ELSE set exitLoop = 0; set feriado = null; END IF; END WHILE; return retorno; END // CREATE FUNCTION getSaldoContasPagarFornecedor( codEmpresa integer, codFornecedor integer , pDTReferencia char(10) ) returns decimal(17,2) BEGIN declare vlSaldo decimal(17,2); select sum( calcularJurosPagar(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa.c od_fornecedor,tipa.cod_especie,cast(pDTReferencia as date) , '1' ) ) as 'credito' into vlSaldo from fn_titulo_pagar tipa where tipa.situacao between 10 and 30 and tipa.dt_implant < pDTReferencia and tipa.cod_empresa = codEmpresa and tipa.cod_fornecedor = codFornecedor and ( ( tipa.vl_total_titulo - ( ifnull( tipa.vl_iss , 0 ) + ifnull( tipa.vl_ir,0)
  • 15. + ifnull( tipa.vl_pis, 0 ) + ifnull( tipa.vl_cofins , 0 ) + ifnull( tipa.vl_cs , 0 ) ) ) - CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) > 0 ; IF ( vlSaldo IS NULL ) THEN return 0.0;
  • 16. END IF; return vlSaldo; end // CREATE FUNCTION getSaldoContasPagarFornecedoresPeriodo( codEmpresa integer, pDTReferencia char(10) , pDataFinal char(19)) returns decimal(17,2) BEGIN declare done INT DEFAULT 0; declare vlSaldo decimal(17,2); declare pFornecedor integer; declare vlSaldoTotal decimal(17,2); DECLARE curFornecedores CURSOR FOR select distinct tipaPeriodo.cod_fornecedor from fn_titulo_pagar tipaPeriodo LEFT OUTER JOIN fn_titulo_pagar_hist as hist ON hist.cod_empresa = tipaPeriodo.cod_empresa and hist.cod_titulo = tipaPeriodo.cod_titulo and hist.cod_parcela = tipaPeriodo.cod_parcela and hist.cod_fornecedor = tipaPeriodo.cod_fornecedor and hist.cod_especie = tipaPeriodo.cod_especie where tipaPeriodo.cod_empresa = codEmpresa and ( ( hist.dt_referencia between pDTReferencia and pDataFinal and hist.tp_hist = 30 ) or ( tipaPeriodo.dt_implant between pDTReferencia and pDataFinal and tipaPeriodo.situacao between 10 and 30 ) ); declare CONTINUE HANDLER FOR NOT FOUND SET done = 1; set vlSaldoTotal = 0;
  • 17. OPEN curFornecedores; read_loop: LOOP FETCH curFornecedores INTO pFornecedor; -- Verifica se o loop deverá ser terminado IF done THEN LEAVE read_loop; END IF; select sum( calcularJurosPagar(tipa.cod_empresa,tipa.cod_titulo,tipa.cod_parcela,tipa.c od_fornecedor,tipa.cod_especie,cast(pDTReferencia as date) , '1' ) ) as 'credito' into vlSaldo from fn_titulo_pagar tipa where tipa.situacao between 10 and 30 and tipa.dt_implant < pDTReferencia and tipa.cod_empresa = codEmpresa and cod_fornecedor = pFornecedor and ( ( tipa.vl_total_titulo - ( ifnull( tipa.vl_iss , 0 ) + ifnull( tipa.vl_ir,0) + ifnull( tipa.vl_pis, 0 ) + ifnull( tipa.vl_cofins , 0 ) + ifnull( tipa.vl_cs , 0 ) ) ) - CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia <
  • 18. cast( pDTReferencia as date ) ) IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) > 0 ; IF ( vlSaldo IS NULL ) THEN set vlSaldo = 0.0; END IF; SET vlSaldoTotal = vlSaldoTotal + vlSaldo; END LOOP; CLOSE curFornecedores; return vlSaldoTotal; end // CREATE FUNCTION getValorBaixaContasPagar( codEmpresa integer, pCodTitulo integer, pCodParcela integer , pCodFornecedor integer , pCodEspecie integer, pDTReferencia char(10) ) returns decimal(17,2) BEGIN declare vlBaixa decimal(17,2); select sum( CASE WHEN ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where
  • 19. hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) IS NULL THEN 0.0 ELSE ( select sum(ifnull(hist.vl_baixa,0)) from fn_titulo_pagar_hist as hist where hist.cod_empresa = tipa.cod_empresa and hist.cod_titulo = tipa.cod_titulo and hist.cod_parcela = tipa.cod_parcela and hist.cod_fornecedor = tipa.cod_fornecedor and hist.cod_especie = tipa.cod_especie and hist.tp_hist = 30 and hist.dt_referencia < cast( pDTReferencia as date ) ) END ) as 'valorBaixa' into vlBaixa from fn_titulo_pagar tipa where tipa.situacao between 10 and 30 and tipa.dt_vencimento < pDTReferencia and tipa.cod_empresa = codEmpresa and tipa.cod_titulo = pCodTitulo and tipa.cod_parcela = pCodParcela
  • 20. and tipa.cod_fornecedor = pCodFornecedor and tipa.cod_especie = pCodEspecie; IF ( vlBaixa IS NULL ) THEN return 0.0; END IF; return vlBaixa; end // delimiter ; DROP FUNCTION IF EXISTS calcularJurosReceber; delimiter // CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer , codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char) returns decimal(17,2) BEGIN declare vlMulta decimal(17,2); declare vlJuros decimal(17,2); declare tarifaBoleto decimal(17,2); declare vlTotalJurosMultaPont decimal(17,2); declare vlTitulo decimal(17,2); declare vlBaixa decimal(17,2); declare vlTituloMenosImpostos decimal(17,2); declare vlDesconto decimal(17,2); declare percMulta decimal(17,2); declare percJuros decimal(17,2); declare vlSaldo decimal(17,2); declare mesHoje int; declare anoHoje int; declare anoVenc int; declare diasAtraso int; declare dataVencimento date; declare dataUltimaBaixa date; declare tpJuros int; set vlMulta = 0.0; set vlJuros = 0.0; set tarifaBoleto = 0.0; set vlTotalJurosMultaPont = 0.0; set vlTitulo = 0.0; set vlBaixa = 0.0; set vlTituloMenosImpostos = 0.0; set vlDesconto = 0.0; set percMulta = 0.0; set percJuros = 0.0; set vlSaldo = 0.0; set tpJuros = 0; SELECT ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto, ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta, ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros, getValorBaixaContasReceber ( fn_titulo_receber.cod_empresa,
  • 21. fn_titulo_receber.cod_titulo, fn_titulo_receber.cod_parcela , fn_titulo_receber.serie , dataReferencia ) as vlBaixa, fn_titulo_receber.vl_total_titulo as vlTitulo, fn_titulo_receber.vl_total_titulo - ( ifnull( fn_titulo_receber.vl_iss , 0 ) + ifnull(fn_titulo_receber.vl_ir,0) + ifnull( fn_titulo_receber.vl_pis, 0 ) + ifnull( fn_titulo_receber.vl_cofins , 0 ) + ifnull( fn_titulo_receber.vl_cs , 0 ) ) as vlTituloMenosImpostos, ifnull( fn_titulo_receber.tp_juros , 0 ) as tpJuros, ifnull( fn_titulo_receber.taxa_boleto , 0 ) as tarifaBoleto, -- Pega a data do vencimento desconsiderando feriados e sábado e domingo. getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento) as dtVencimento, ( select max(hist.dt_referencia) from fn_titulo_receber_hist as hist where hist.cod_empresa = fn_titulo_receber.cod_empresa and hist.cod_titulo = fn_titulo_receber.cod_titulo and hist.cod_parcela = fn_titulo_receber.cod_parcela and hist.serie = fn_titulo_receber.serie and hist.tp_hist = 30 ) as dtUltimaBaixa INTO vlDesconto, percMulta, percJuros, vlBaixa, vlTitulo, vlTituloMenosImpostos, tpJuros, tarifaBoleto, dataVencimento, dataUltimaBaixa FROM fn_titulo_receber WHERE fn_titulo_receber.cod_empresa = codEmpresa and fn_titulo_receber.cod_titulo = codTitulo and fn_titulo_receber.cod_parcela = codParcela and fn_titulo_receber.serie = pSerie; -- ------------------------------------------------------------------------ -- Calcula os juros a partir deste ponto.
  • 22. -- ------------------------------------------------------------------------ set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0); -- Caso tÃtulo não tenha vencimento é um tÃtulo sem previsaão - neste caso não calcula juros. IF ( dataVencimento is null ) THEN -- Se deverá retornar saldo, calcula com o desconto. IF( retornaSaldo = '1' ) THEN return vlSaldo - vlDesconto; END IF; return 0.0; END IF; -- Se tÃtulo não estiver vencido IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF ( ifnull(vlBaixa,0) = 0 ) THEN -- Se deverá retornar saldo, calcula com o desconto. IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; -- Se deverá retornar saldo, calcula com o desconto. IF( retornaSaldo = '1' ) THEN return ABS(vlSaldo); END IF; return 0.0; ELSE -- Se deverá retornar saldo, calcula com o desconto. IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; return ABS(vlSaldo); END IF; END IF; IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento), '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN -- Se deverá retornar saldo, calcula com o desconto. IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; return ABS(vlSaldo); END IF; -- Verifica se deverá utilizar a data da última baixa para cálculo dos -- juros. IF ( dataUltimaBaixa != null ) THEN IF ( dataUtimaBaixa > dataVencimento ) THEN set dataReferencia = dataUltimaBaixa ; END IF; END IF;
  • 23. -- Juros ao dia IF ( tpJuros = 0 ) THEN set diasAtraso = DATEDIFF(dataReferencia,dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; -- Juros ao Mês IF ( tpJuros = 1 ) THEN set mesHoje = month(dataReferencia); set anoHoje = year(dataReferencia); set anoVenc = year(dataVencimento); set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 ); set diasAtraso = mesHoje - month(dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; set vlMulta = ( vlSaldo + tarifaBoleto ) * percMulta; IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo; END IF; return 0.0; END IF; IF( retornaSaldo = '1' ) THEN return vlSaldo + vlMulta + vlJuros - vlDesconto; END IF; return vlMulta + vlJuros - vlDesconto; END; // delimiter ; SET GLOBAL log_bin_trust_function_creators = 1; DROP FUNCTION IF EXISTS calcularJurosReceber; DROP FUNCTION IF EXISTS calcularJurosPagar; delimiter // CREATE FUNCTION calcularJurosReceber( codEmpresa integer, codTitulo integer , codParcela integer, pSerie char(3) , dataReferencia date , retornaSaldo char) RETURNS decimal(17,2) BEGIN declare vlMulta decimal(17,2); declare vlJuros decimal(17,2); declare tarifaBoleto decimal(17,2); declare vlTotalJurosMultaPont decimal(17,2); declare vlTitulo decimal(17,2); declare vlBaixa decimal(17,2); declare vlTituloMenosImpostos decimal(17,2); declare vlDesconto decimal(17,2); declare percMulta decimal(17,5); declare percJuros decimal(17,5); declare vlSaldo decimal(17,2); declare mesHoje int; declare anoHoje int;
  • 24. declare anoVenc int; declare diasAtraso int; declare dataVencimento date; declare dataUltimaBaixa date; declare tpJuros int; set vlMulta = 0.0; set vlJuros = 0.0; set tarifaBoleto = 0.0; set vlTotalJurosMultaPont = 0.0; set vlTitulo = 0.0; set vlBaixa = 0.0; set vlTituloMenosImpostos = 0.0; set vlDesconto = 0.0; set percMulta = 0.0; set percJuros = 0.0; set vlSaldo = 0.0; set tpJuros = 0; SELECT ifnull(fn_titulo_receber.vl_desconto ,0.0) as vlDesconto, ifnull(fn_titulo_receber.perc_multa,0.0) as percMulta, ifnulL(fn_titulo_receber.perc_juros,0.0) as percJuros, getValorBaixaContasReceber ( fn_titulo_receber.cod_empresa, fn_titulo_receber.cod_titulo, fn_titulo_receber.cod_parcela , fn_titulo_receber.serie , dataReferencia ) as vlBaixa, fn_titulo_receber.vl_total_titulo as vlTitulo, fn_titulo_receber.vl_total_titulo - ( ifnull( fn_titulo_receber.vl_iss , 0 ) + ifnull(fn_titulo_receber.vl_ir,0) + ifnull( fn_titulo_receber.vl_pis, 0 ) + ifnull( fn_titulo_receber.vl_cofins , 0 ) + ifnull( fn_titulo_receber.vl_cs , 0 ) ) as vlTituloMenosImpostos, ifnull( fn_titulo_receber.tp_juros , 0 ) as tpJuros, ifnull( fn_titulo_receber.taxa_boleto , 0 ) as tarifaBoleto, getDtVencimentoFeriado(fn_titulo_receber.dt_vencimento) as dtVencimento, ( select max(hist.dt_referencia) from fn_titulo_receber_hist as hist where hist.cod_empresa = fn_titulo_receber.cod_empresa and hist.cod_titulo = fn_titulo_receber.cod_titulo and hist.cod_parcela = fn_titulo_receber.cod_parcela and hist.serie = fn_titulo_receber.serie and
  • 25. hist.tp_hist = 30 ) as dtUltimaBaixa INTO vlDesconto, percMulta, percJuros, vlBaixa, vlTitulo, vlTituloMenosImpostos, tpJuros, tarifaBoleto, dataVencimento, dataUltimaBaixa FROM fn_titulo_receber WHERE fn_titulo_receber.cod_empresa = codEmpresa and fn_titulo_receber.cod_titulo = codTitulo and fn_titulo_receber.cod_parcela = codParcela and fn_titulo_receber.serie = pSerie; set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0); IF ( dataVencimento is null ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo - vlDesconto; END IF; return 0.0; END IF; IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF ( ifnull(vlBaixa,0) = 0 ) THEN IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; IF( retornaSaldo = '1' ) THEN return ABS(vlSaldo); END IF; return 0.0; ELSE
  • 26. IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; return ABS(vlSaldo); END IF; END IF; IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento), '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF( retornaSaldo = '1' AND vlSaldo > 0 ) THEN return vlSaldo - vlDesconto; END IF; return ABS(vlSaldo); END IF; IF ( dataUltimaBaixa != null ) THEN IF ( dataUtimaBaixa > dataVencimento ) THEN set dataReferencia = dataUltimaBaixa ; END IF; END IF; IF ( tpJuros = 0 ) THEN set diasAtraso = DATEDIFF(dataReferencia,dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; IF ( tpJuros = 1 ) THEN set mesHoje = month(dataReferencia); set anoHoje = year(dataReferencia); set anoVenc = year(dataVencimento); set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 ); set diasAtraso = mesHoje - month(dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; set vlMulta = TRUNCATE(( vlSaldo + tarifaBoleto ) * percMulta,2); IF ( ( vlMulta + vlJuros - ifnull( vlDesconto,0) ) IS NULL ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo; END IF; return 0.0; END IF; IF( retornaSaldo = '1' ) THEN return vlSaldo + vlMulta + vlJuros - vlDesconto; END IF;
  • 27. return vlMulta + vlJuros - vlDesconto; END// CREATE FUNCTION calcularJurosPagar( codEmpresa integer, codTitulo integer , codParcela integer, codFornecedor integer , codEspecie integer , dataReferencia date , retornaSaldo char) RETURNS decimal(17,2) BEGIN declare vlMulta decimal(17,2); declare vlJuros decimal(17,2); declare tarifaBoleto decimal(17,2); declare vlTotalJurosMultaPont decimal(17,2); declare vlTitulo decimal(17,2); declare vlBaixa decimal(17,2); declare vlTituloMenosImpostos decimal(17,2); declare vlDesconto decimal(17,2); declare percMulta decimal(17,5); declare percJuros decimal(17,5); declare vlSaldo decimal(17,2); declare mesHoje int; declare anoHoje int; declare anoVenc int; declare diasAtraso int; declare dataVencimento date; declare dataUltimaBaixa date; declare tpJuros int; set vlMulta = 0.0; set vlJuros = 0.0; set tarifaBoleto = 0.0; set vlTotalJurosMultaPont = 0.0; set vlTitulo = 0.0; set vlBaixa = 0.0; set vlTituloMenosImpostos = 0.0; set vlDesconto = 0.0; set percMulta = 0.0; set percJuros = 0.0; set vlSaldo = 0.0; set tpJuros = 0; SELECT ifnull(fn_titulo_pagar.vl_desconto ,0.0) as vlDesconto, ifnull(fn_titulo_pagar.perc_multa,0.0) as percMulta, ifnulL(fn_titulo_pagar.perc_juros,0.0) as percJuros, getValorBaixaContasPagar ( fn_titulo_pagar.cod_empresa, fn_titulo_pagar.cod_titulo, fn_titulo_pagar.cod_parcela , fn_titulo_pagar.cod_fornecedor , fn_titulo_pagar.cod_especie , dataReferencia ) as vlBaixa, fn_titulo_pagar.vl_total_titulo as vlTitulo, fn_titulo_pagar.vl_total_titulo - ( ifnull( fn_titulo_pagar.vl_iss , 0 ) + ifnull(fn_titulo_pagar.vl_ir,0) + ifnull( fn_titulo_pagar.vl_pis, 0 ) + ifnull( fn_titulo_pagar.vl_cofins , 0 ) + ifnull( fn_titulo_pagar.vl_cs , 0 )
  • 28. ) as vlTituloMenosImpostos, ifnull( fn_titulo_pagar.tp_juros , 0 ) as tpJuros, ifnull( fn_titulo_pagar.taxa_boleto , 0 ) as tarifaBoleto, getDtVencimentoFeriado(fn_titulo_pagar.dt_vencimento) as dtVencimento, ( select max(hist.dt_referencia) from fn_titulo_pagar_hist as hist where hist.cod_empresa = fn_titulo_pagar.cod_empresa and hist.cod_titulo = fn_titulo_pagar.cod_titulo and hist.cod_parcela = fn_titulo_pagar.cod_parcela and hist.cod_fornecedor = fn_titulo_pagar.cod_fornecedor and hist.cod_especie = fn_titulo_pagar.cod_especie and hist.tp_hist = 30 ) as dtUltimaBaixa INTO vlDesconto, percMulta, percJuros, vlBaixa, vlTitulo, vlTituloMenosImpostos, tpJuros, tarifaBoleto, dataVencimento, dataUltimaBaixa FROM fn_titulo_pagar WHERE fn_titulo_pagar.cod_empresa = codEmpresa and fn_titulo_pagar.cod_titulo = codTitulo and fn_titulo_pagar.cod_parcela = codParcela and fn_titulo_pagar.cod_fornecedor = codFornecedor and fn_titulo_pagar.cod_especie = codEspecie; IF ( dataVencimento is null ) THEN return 0.0; END IF; set vlSaldo = vlTituloMenosImpostos - ifnull(vlBaixa,0);
  • 29. IF ( vlSaldo < 0 OR DATE_FORMAT(dataReferencia, '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN IF ( ifnull(vlBaixa,0) = 0 ) THEN return 0.0; ELSE return ABS(vlSaldo); END IF; END IF; IF ( vlSaldo <= 0 AND DATE_FORMAT(ifnull(dataUltimaBaixa,dataVencimento), '%Y-%m-%d') <= DATE_FORMAT(dataVencimento, '%Y-%m-%d') ) THEN return ABS(vlSaldo); END IF; IF ( dataUltimaBaixa != null ) THEN IF ( dataUtimaBaixa > dataVencimento ) THEN set dataReferencia = dataUltimaBaixa ; END IF; END IF; IF ( tpJuros = 0 ) THEN set diasAtraso = DATEDIFF(dataReferencia,dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; IF ( tpJuros = 1 ) THEN set mesHoje = month(dataReferencia); set anoHoje = year(dataReferencia); set anoVenc = year(dataVencimento); set diasAtraso = mesHoje + ((anoHoje - anoVenc) * 12 ); set diasAtraso = mesHoje - month(dataVencimento); set vlJuros = ( vlSaldo + tarifaBoleto ) * percJuros; set vlJuros = vlJuros * diasAtraso; END IF; set vlMulta = TRUNCATE(( vlSaldo + tarifaBoleto ) * percMulta,2); IF ( ( vlMulta + vlJuros - vlDesconto ) IS NULL ) THEN IF( retornaSaldo = '1' ) THEN return vlSaldo; END IF; return 0.0; END IF; IF( retornaSaldo = '1' ) THEN return vlSaldo + vlMulta + vlJuros - vlDesconto; END IF; return vlMulta + vlJuros - vlDesconto; END//
  • 30. CREATE DEFINER=`root`@`%` FUNCTION `SOMA_EMAILS_PEDIDO`(dataInicio CHAR(19), dataFim CHAR(19), codColaborador integer) RETURNS decimal(10,0) BEGIN DECLARE VALOR_TOTAL NUMERIC(17,2); select sum( valorPedido ) INTO VALOR_TOTAL from ( select pedi.cod_pedido , SUM( distinct pedi.vl_total_produtos) as valorPedido from vd_pedido pedi inner join vd_pedido_hist hist on hist.cod_pedido = pedi.cod_pedido and hist.cod_empresa = pedi.cod_empresa and tp_historico = 35 and dt_implant between dataInicio and dataFim where pedi.cod_colaborador = codColaborador group by pedi.cod_pedido ) as total; RETURN ifnull(VALOR_TOTAL,0); END// delimiter ; GRANT EXECUTE ON FUNCTION calcularJurosReceber to ROLE; GRANT EXECUTE ON FUNCTION calcularJurosPagar to ROLE; PREPARE SCRIPT FROM "SELECT CONCAT('GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE ON * TO ''', User , '''' , '@''' ,Host , ''';') FROM mysql.user;"; EXECUTE SCRIPT; DROP PREPARE SCRIPT; flush privileges; DROP TRIGGER `tr_vd_pedido_afu`; DROP TRIGGER `tr_vd_pedido_afi`; DROP TRIGGER `tr_vd_pedido_afd`; DROP TRIGGER IF EXISTS tr_vd_pedido_afi; DELIMITER $$ CREATE TRIGGER tr_vd_pedido_afi AFTER INSERT ON vd_pedido FOR EACH ROW BEGIN IF NEW.cod_ecommerce = 5 THEN INSERT INTO vd_pedido_ecommerce ( cod_pedido, situacao_erp, situacao_ecommerce, dt_ultima_alteracao ) VALUES ( NEW.cod_pedido, NEW.situacao, '_NEAS', now() ); END IF; END $$ DELIMITER ; DROP TRIGGER IF EXISTS tr_vd_pedido_afd ;
  • 31. DELIMITER $$ CREATE TRIGGER tr_vd_pedido_afd AFTER DELETE ON vd_pedido FOR EACH ROW BEGIN IF OLD.cod_ecommerce = 5 THEN DELETE FROM vd_pedido_ecommerce where cod_pedido = OLD.cod_pedido; END IF; END $$ DELIMITER ; DROP TRIGGER IF EXISTS tr_vd_pedido_afu ; DELIMITER $$ CREATE TRIGGER tr_vd_pedido_afu AFTER UPDATE ON vd_pedido FOR EACH ROW BEGIN IF NEW.cod_ecommerce = 5 AND NEW.situacao != OLD.situacao THEN UPDATE vd_pedido_ecommerce set situacao_erp = NEW.situacao , dt_ultima_alteracao = null where cod_pedido = NEW.cod_pedido; END IF; END $$ DELIMITER ;