select DATE_FORMAT(:datainicial, '%d/%m/%Y') as "Vencimento", "Saldo ant." as "Dia", "Contas-->" as s, saldo_caixa as "Saldo caixa", saldo_conta as "Saldo Banco", saldo_caixa + saldo_conta as Disponivel, "Receitas-->" as s, cheque as "Cheque a receber", boleto as "Boeleto a receber", cartao as "Cartao a receber", deposito as "Depósito a receber", outros as "Outros a receber", cheque + boleto + cartao + deposito + outros as "Total a receber", "Despesas-->" as d, boleto_pagar as "Boleto a pagar", deposito_pagar as "Depósito a pagar", outros_pagar as "Outros a pagar", boleto_pagar + deposito_pagar + outros_pagar as "Total a pagar", saldo_caixa + saldo_conta + cheque + boleto + cartao + deposito + outros - (boleto_pagar + deposito_pagar + outros_pagar) as saldo from( select DATE_FORMAT(:datainicial, '%d/%m/%Y') as data, date_format(:datainicial, '%W') as dia, coalesce((select sum(valor) from lanca_caixa where empresa = empresa.codigo and lanca_caixa.data <= :datainicial),0) as saldo_caixa, coalesce((select sum(valor) from lanca_conta where empresa = empresa.codigo and ((case when :conta1 = 0 then true else lanca_conta.conta = :conta1 end) or (case when :conta2 = 0 then true else lanca_conta.conta = :conta2 end) or (case when :conta3 = 0 then true else lanca_conta.conta = :conta3 end)) and lanca_conta.data <= :datainicial),0) as saldo_conta, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.cheque_avista = ct_receber.forma_pagto where ct_receber.empresa = empresa.codigo and ct_receber.vencimento <= :datainicial and ct_receber.status = "A"),0) as cheque, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.boleto = ct_receber.forma_pagto where ct_receber.empresa = empresa.codigo and ct_receber.vencimento <= :datainicial and ct_receber.status = "A"),0) as boleto, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.cartao_avista = ct_receber.forma_pagto where ct_receber.empresa = empresa.codigo and ct_receber.vencimento <= :datainicial and ct_receber.status = "A"),0) as cartao, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and ct_receber.forma_pagto in(parametros.deposito, parametros.pix) where ct_receber.empresa = empresa.codigo and ct_receber.vencimento <= :datainicial and ct_receber.status = "A"),0) as deposito, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and ct_receber.forma_pagto not in(parametros.cheque_avista, parametros.boleto, parametros.cartao_avista, parametros.deposito, parametros.pix) where ct_receber.empresa = empresa.codigo and ct_receber.vencimento <= :datainicial and ct_receber.status = "A"),0) as outros, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and parametros.boleto = ct_pagar.forma_pagto where ct_pagar.empresa = empresa.codigo and ct_pagar.vencimento <= :datainicial and ct_pagar.status = "A"),0) as boleto_pagar, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and ct_pagar.forma_pagto in(parametros.deposito, parametros.pix) where ct_pagar.empresa = empresa.codigo and ct_pagar.vencimento <= :datainicial and ct_pagar.status = "A"),0) as deposito_pagar, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and ct_pagar.forma_pagto not in(parametros.boleto, parametros.deposito) where ct_pagar.empresa = empresa.codigo and ct_pagar.vencimento <= :datainicial and ct_pagar.status = "A"),0) as outros_pagar from empresa where empresa.codigo = :empresa) as t union all select DATE_FORMAT(data, '%d/%m/%Y') as "Vencimento", CASE WHEN dia = 'Monday' THEN 'segunda-feira' WHEN dia = 'Tuesday' THEN 'terça-feira' WHEN dia = 'Wednesday' THEN 'quarta-feira' WHEN dia = 'Thursday' THEN 'quinta-feira' WHEN dia = 'Friday' THEN 'sexta-feira' WHEN dia = 'Saturday' THEN 'sábado' WHEN dia = 'Sunday' THEN 'domingo' ELSE '' end as "Dia", "Contas-->" as s, saldo_caixa as "Saldo caixa", saldo_conta as "Saldo Banco", saldo_caixa + saldo_conta as Disponivel, "Receitas-->" as s, cheque as "Cheque a receber", boleto as "Boeleto a receber", cartao as "Cartao a receber", deposito as "Depósito a receber", outros as "Outros a receber", cheque + boleto + cartao + deposito + outros as "Total a receber", "Despesas-->" as d, boleto_pagar as "Boleto a pagar", deposito_pagar as "Depósito a pagar", outros_pagar as "Outros a pagar", boleto_pagar + deposito_pagar + outros_pagar as "Total a pagar", saldo_caixa + saldo_conta + cheque + boleto + cartao + deposito + outros - (boleto_pagar + deposito_pagar + outros_pagar) as saldo from( select t.generated_date as data, date_format(t.generated_date, '%W') as dia, coalesce((select sum(valor) from lanca_caixa where empresa = t.empresa and lanca_caixa.data = t.generated_date),0) as saldo_caixa, coalesce((select sum(valor) from lanca_conta where empresa = t.empresa and ((case when :conta1 = 0 then true else lanca_conta.conta = :conta1 end) or (case when :conta2 = 0 then true else lanca_conta.conta = :conta2 end) or (case when :conta3 = 0 then true else lanca_conta.conta = :conta3 end)) and lanca_conta.data = t.generated_date),0) as saldo_conta, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.cheque_avista = ct_receber.forma_pagto where ct_receber.empresa = t.empresa and ct_receber.vencimento = generated_date and ct_receber.status = "A"),0) as cheque, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.boleto = ct_receber.forma_pagto where ct_receber.empresa = t.empresa and ct_receber.vencimento = generated_date and ct_receber.status = "A"),0) as boleto, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and parametros.cartao_avista = ct_receber.forma_pagto where ct_receber.empresa = t.empresa and ct_receber.vencimento = generated_date and ct_receber.status = "A"),0) as cartao, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and ct_receber.forma_pagto in(parametros.deposito, parametros.pix) where ct_receber.empresa = t.empresa and ct_receber.vencimento = generated_date and ct_receber.status = "A"),0) as deposito, coalesce((select sum(valor) from ct_receber join parametros on parametros.empresa = ct_receber.empresa and ct_receber.forma_pagto not in(parametros.cheque_avista, parametros.boleto, parametros.cartao_avista, parametros.deposito, parametros.pix) where ct_receber.empresa = t.empresa and ct_receber.vencimento = generated_date and ct_receber.status = "A"),0) as outros, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and parametros.boleto = ct_pagar.forma_pagto where ct_pagar.empresa = t.empresa and ct_pagar.vencimento = generated_date and ct_pagar.status = "A"),0) as boleto_pagar, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and ct_pagar.forma_pagto in(parametros.deposito, parametros.pix) where ct_pagar.empresa = t.empresa and ct_pagar.vencimento = generated_date and ct_pagar.status = "A"),0) as deposito_pagar, coalesce((select sum(valor) from ct_pagar join parametros on parametros.empresa = ct_pagar.empresa and ct_pagar.forma_pagto not in(parametros.boleto, parametros.deposito) where ct_pagar.empresa = t.empresa and ct_pagar.vencimento = generated_date and ct_pagar.status = "A"),0) as outros_pagar from (SELECT 2 as empresa, DATE_ADD(:datainicial, INTERVAL (d1.n + d2.n) DAY) AS generated_date FROM ( SELECT 0 AS n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 ) AS d1 CROSS JOIN ( SELECT 0 AS n UNION ALL SELECT 10 UNION ALL SELECT 20 UNION ALL SELECT 30 UNION ALL SELECT 40 UNION ALL SELECT 50 UNION ALL SELECT 60 UNION ALL SELECT 70 UNION ALL SELECT 80 UNION ALL SELECT 90 ) AS d2 WHERE DATE_ADD(:datainicial, INTERVAL (d1.n + d2.n) DAY) <= :datafinal) as t) as tabela