Autor Tópico: Gerar Boleto  (Lida 2272 vezes)

camila

  • Intermediário
  • ***
  • Mensagens: 102
Gerar Boleto
« Online: Janeiro 14, 2014, 01:43:21 pm »
boa tarde , to precisando muito de ajuda nessa query , coloquei no blank para gerar o boleto mas ñ funciona, alguém pode me dizer o que estou fazendo errado?



sc_lookup(dslogin,"SELECT     boleto.id_boleto,  boleto.codigo_empresa , boleto.valor ,
boleto.vencimento ,
boleto.nossonumero, empresa.codigo_empresa,  empresa.endereco, empresa.cep,
empresa.bairro, empresa.cidade , empresa.estado
FROM boleto INNER  JOIN empresa ON boleto.id_boleto = empresa.codigo  where
boleto.id_boleto = '$id' and boleto.codigo_empresa = '[cod_empresa]' ");


 


if (isset({dslogin}))     // Row found
{
   
   
    $id = {dslogin[0][0]};
   $cod_empresa = {dslogin[0][1]};
    $valor_boleto = {dslogin[0][2]};
    $data_vencimento = {dslogin[0][3]};
   $numero_documento = {dslogin[0][4]};
   $endereco = {dslogin[0][6]};
   $cep = {dslogin[0][7]};
    $cidade = {dslogin[0][9]};
   $estado = {dslogin[0][10]};
   
}

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Gerar Boleto
« Responder #1 Online: Janeiro 14, 2014, 03:35:33 pm »
Camila,

Coloque em modo debug a aplicação e cole o select aqui.

Pode ser que algumas das varia'veis não estejam com valor, por exemplo $id.

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #2 Online: Janeiro 14, 2014, 04:10:01 pm »
criei essa tela de listagem de boleto, onde cada empresa terá seu boleto no inicio do mês quando clico em gerar boleto , o boleto vem com o erro a query de cima estar dentro da app blank.

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #3 Online: Janeiro 14, 2014, 09:49:29 pm »
Não consegui encontrar o ERRO de query.
Oque pode estar errado é a lógica da query, como não temos conhecimento das tabelas fica difícil identificar.

Dê mais detalhes;

Qual a ação esperada?
O que não está fazendo?

//teste

Faz esse comando após o lookup, vamos ver oque está retornando.: 

Código: [Selecionar]
var_dump({dslogin});
exit;

//dúvida

Realmente a FK das tabelas é essa; "boleto.id_boleto = empresa.codigo" ?


« Última modificação: Janeiro 14, 2014, 09:51:35 pm por Almeida »

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #4 Online: Janeiro 15, 2014, 01:15:34 pm »
Almeida,

Existe uma função cadastrar boleto, e outra como listagem de boleto (app consulta) , em listagem de boleto trás todos boletos cadastrado de determinada empresa, o problema é o seguinte quando traz a listagem dos boletos , os boleto tem valor e data de vencimento diferente(obvio), clico no primeiro gera normal o valor e a data, mas nos restantes a data e o valor vem com a data e o valor do primeiro.

sim as FK são "boleto.id_boleto = empresa.codigo"

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #5 Online: Janeiro 15, 2014, 01:30:14 pm »
Almeida,

Existe uma função cadastrar boleto, e outra como listagem de boleto (app consulta) , em listagem de boleto trás todos boletos cadastrado de determinada empresa, o problema é o seguinte quando traz a listagem dos boletos , os boleto tem valor e data de vencimento diferente(obvio), clico no primeiro gera normal o valor e a data, mas nos restantes a data e o valor vem com a data e o valor do primeiro.

sim as FK são "boleto.id_boleto = empresa.codigo"

Estão sendo passado algum parâmetro pela ligação, se sim, tente limpar esses parâmetros após gerar o boleto. Pode ser algum variável global não alterando o valor.

Pode ser também o relacionamento do SQL está buscando apenas esse valor e dada do primeiro

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

Kleyber

  • Expert
  • *****
  • Mensagens: 2239
    • Email
Re:Gerar Boleto
« Responder #6 Online: Janeiro 15, 2014, 02:06:13 pm »
Camila,

o campo boleto.codigo_empresa é numérico? Estou perguntando isto porque na tela que mostraste está trazendo:

boleto.codigo_empresa = 'BURBURINHO'

E pode ser isso que esteja dando problema no join.
« Última modificação: Janeiro 15, 2014, 02:08:13 pm por Kleyber »
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #7 Online: Janeiro 15, 2014, 02:53:45 pm »
Kleyber,

boleto.codigo_empresa é varchar.

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #8 Online: Janeiro 15, 2014, 03:54:02 pm »
Kleyber,

boleto.codigo_empresa é varchar.

E o campo "boleto.id_boleto"?

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #9 Online: Janeiro 15, 2014, 04:14:24 pm »
o boleto.id_boleto é INT

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #10 Online: Janeiro 15, 2014, 04:24:15 pm »
o boleto.id_boleto é INT

Que FK louca é essa. RSRS

As FK tem que ser o mesmo valor e mesmo tipo em ambas tabelas.
Tem um erro grave de Estrutura SQL ai. Coloque aqui pra gente os creates das 2 tabelas.

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #11 Online: Janeiro 15, 2014, 04:58:27 pm »
CREATE TABLE `boleto` (
  `id_boleto` int(11) NOT NULL AUTO_INCREMENT,
  `codigo_empresa` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `id_status_boleto` int(10) NOT NULL,
  `ano` int(4) NOT NULL,
  `mes` int(2) NOT NULL,
  `vencimento` datetime DEFAULT NULL,
  `valor` double(20,2) DEFAULT NULL,
  `pago` char(1) COLLATE latin1_general_ci DEFAULT NULL,
  `data_pagto` datetime DEFAULT NULL,
  `valor_pago` double(20,2) DEFAULT NULL,
  `data_cadastro` datetime DEFAULT NULL,
  `hora_cadastro` varchar(20) COLLATE latin1_general_ci DEFAULT NULL,
  `valor_original` double(20,2) DEFAULT NULL,
  `juros_mora` double(20,2) DEFAULT NULL,
  `isento` char(1) COLLATE latin1_general_ci DEFAULT NULL,
  `juros` double(20,2) DEFAULT NULL,
  `multa` double(20,2) DEFAULT NULL,
  `nossonumero` varchar(255) COLLATE latin1_general_ci DEFAULT NULL,
  `vencimento_real` datetime DEFAULT NULL,
  `percentual_multa` double(20,2) DEFAULT NULL,
  `desconto_abatimento` double(20,2) DEFAULT NULL,
  `outras_deducoes` double(20,2) DEFAULT NULL,
  `outros_acrescimos` double(20,2) DEFAULT NULL,
  `mensagem_boleto` varchar(2000) COLLATE latin1_general_ci DEFAULT NULL,
  `excluir_boleto` char(1) COLLATE latin1_general_ci DEFAULT NULL,
  PRIMARY KEY (`id_boleto`),
  KEY `codigo_empresa` (`codigo_empresa`),
  KEY `id_status_boleto` (`id_status_boleto`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;


CREATE TABLE `empresa` (
  `codigo` int(11) NOT NULL AUTO_INCREMENT,
  `codigo_empresa` varchar(255) DEFAULT NULL,
  `descricao` varchar(255) DEFAULT NULL,
  `data_cadastro` datetime DEFAULT NULL,
  `codigo_usuario_cadastro` int(11) DEFAULT NULL,
  `data_deletado` datetime DEFAULT NULL,
  `codigo_usuario_deletado` int(11) DEFAULT NULL,
  `deletado` int(11) DEFAULT NULL,
  `limite_musica_pedido` int(10) unsigned DEFAULT NULL,
  `senha_administracao` varchar(255) DEFAULT NULL,
  `valor_ficha_musica` double(5,2) DEFAULT NULL,
  `valor_ficha_video` double(5,2) DEFAULT NULL,
  `path_imagens_webservice` varchar(255) DEFAULT NULL,
  `pasta_imagens_webservice` varchar(255) DEFAULT NULL,
  `cpf_cnpj` varchar(255) DEFAULT NULL,
  `nome_razao_social` varchar(255) DEFAULT NULL,
  `nome_fantasia` varchar(255) DEFAULT NULL,
  `endereco` varchar(255) DEFAULT NULL,
  `bairro` varchar(255) DEFAULT NULL,
  `cidade` varchar(255) DEFAULT NULL,
  `estado` varchar(255) DEFAULT NULL,
  `cep` varchar(15) DEFAULT NULL,
  `fone` varchar(255) DEFAULT NULL,
  `cpf_responsavel` varchar(255) DEFAULT NULL,
  `nome_responsavel` varchar(255) DEFAULT NULL,
  `fone_responsavel` varchar(255) DEFAULT NULL,
  `celular_responsavel` varchar(255) DEFAULT NULL,
  `email_responsavel` varchar(255) DEFAULT NULL,
  `latitude` varchar(255) DEFAULT NULL,
  `longitude` varchar(255) DEFAULT NULL,
  `limite_pedido_mesa` int(11) DEFAULT '1',
  `tempo_pedido_mesa` int(11) DEFAULT '15',
  `tempo_carencia_midia` int(11) DEFAULT '15',
  `horario_limite_tarde` time DEFAULT NULL,
  `horario_limite_noite` time DEFAULT NULL,
  `data_atualizacao` datetime DEFAULT NULL,
  `ip_empresa` varchar(255) DEFAULT NULL,
  `tempo_intervalo_ocioso` int(11) DEFAULT '10',
  `duracao_max_midia` int(11) DEFAULT '10',
  `bloqueada` char(1) DEFAULT '1',
  `imagem_empresa` varchar(255) DEFAULT NULL,
  `tempo_limite_usuario` int(11) DEFAULT NULL,
  `codigo_forma_funcionamento` int(11) NOT NULL DEFAULT '1',
  `limite_midia_usuario` int(11) DEFAULT '3',
  `url_facebook` varchar(255) DEFAULT NULL,
  `imagem_empresa_large` varchar(255) DEFAULT NULL,
  `valor_mensalidade` double(15,2) DEFAULT NULL,
  `dia_vencimento` int(2) DEFAULT '5',
  PRIMARY KEY (`codigo`),
  KEY `empresa_index4332` (`codigo_empresa`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;




Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #12 Online: Janeiro 15, 2014, 07:11:36 pm »
Não conheço sua estrutura, mas pelas  nomeclaturas creio que oque relaciona suas duas tabelas é o campo: "codigo_emrpesa".
Camila, não sei se você sabe mas quando se faz um LEFT JOIN, RIGHT OU INNER oque relaciona a 1tb com a 2tb é uma FK(Foreign Key), tem que ser uma chave com valor COMUM entre as duas tabelas, ou seja, um valor que será IGUALMENTE na 1tb e na 2tb.

Outra coisa, na tabela `empresa` o campo `codigo_empresa`, não vi uma UK para ele, ou seja, pode haver 2 empresas diferentes com o mesmo código?
- Se sim, seu select vai retornar um boleto 2 vezes, na primeira vez com os dados de uma empresa, na segunda vez com os dados da outra empresa.

Então teste esse SQL.
Código: [Selecionar]
SELECT
  boleto.id_boleto, 
  boleto.codigo_empresa ,
  boleto.valor,
  boleto.vencimento ,
  boleto.nossonumero,
  empresa.codigo_empresa,
  empresa.endereco,
  empresa.cep,
  empresa.bairro,
  empresa.cidade ,
  empresa.estado
FROM boleto INNER  JOIN empresa ON boleto.codigo_empresa = empresa.codigo_empresa
WHERE boleto.id_boleto = '$id' and
 boleto.codigo_empresa = '[cod_empresa]'

Melhoramento do código:
Poderia ser usado esse relacionamento ao invés desse seu, o resultado será o mesmo, apenas é uma melhoria.
Código: [Selecionar]
FROM boleto INNER  JOIN empresa USING(codigo_empresa)
Comando USING:
Serve para relacionar uma tabela com outra, aonde as FK sejam exatamente iguais.
« Última modificação: Janeiro 15, 2014, 07:35:49 pm por Almeida »

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência

camila

  • Intermediário
  • ***
  • Mensagens: 102
Re:Gerar Boleto
« Responder #13 Online: Janeiro 17, 2014, 12:49:57 pm »
Almeida,
já tinha tentado dessa forma , mas ele da esse erro:

ERRO
Undefined offset: 2
ERRO
Undefined offset: 1

Almeida

  • Expert
  • *****
  • Mensagens: 610
    • Email
Re:Gerar Boleto
« Responder #14 Online: Janeiro 17, 2014, 07:24:17 pm »
Almeida,
já tinha tentado dessa forma , mas ele da esse erro:

ERRO
Undefined offset: 2
ERRO
Undefined offset: 1

Camila, esse erro pode ser algum atributo/variável/campo inexistente, que está sendo chamdo em algum lugar, ou
até mesmo a query errada.

Coloque sua aplicação em modo-debug, veja se algo vai dar errado na query.  Analise as chamadas de atributo/variável/campo, pode ser algum escrito de forma incorreta.

Att.
Eliezer Almeida
eliezeralmeidago@hotmail.com
www.infotecsoft.com.br - Modernidade e Eficiência