Jump to content

joeythai

Members
  • Content count

    118
  • Joined

  • Last visited

Community Reputation

0 Comum

1 Follower

About joeythai

Contato

Recent Profile Visitors

1803 profile views
  1. Boa tarde pessoal, Eu criei um formulário em que tenho 3 interações: evento click, change e uma chamada ajax. No evento on change ("select#removal_table_from" )eu faço uma chamada ajax onde eu passo como parametro o id do item selecionado e construo uma tabela dinamica com o próprio javascript, após isto, tenho um input em que o usuario coloca um valor de percentual para que eu possa preencher em 3 colunas da tabela que foi criada dinamicamente: moto_atualizado, carro_atualizado e caminhao_atualizado, até aí tudo bem, o codigo está fazendo isso, porém, como a tabela é criada dinamicamente eu preciso de alguma forma enviar o arrayData para meu backend mas quando faço o calculo dentro do loop apos resposta do meu ajax, os valores desses 3 campos chegam como null, não sei se é possível fazer o que pretendo ou se é ainda não sei como faz <code> $(document).ready(function (event) { let arrayData = []; let percentage; let removal_vehicle; let removal_motorcycle; let removal_tuck; let apply_removal = $('#apply_removal'); // apply_removal.on('click', function () { // percentage = $('#percentage').val(); // $('.table-body tr').each(function () { // let veiculo = $(this).find('.veiculo').text(); // let moto = $(this).find('.moto').text(); // let caminhao = $(this).find('.caminhao').text(); // let removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; // let removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; // let removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100; // arrayData.push({ // removal_vehicle, // removal_motorcycle, // removal_tuck // }) // $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); // $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); // $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); // }); // }); apply_removal.on('click', function () { percentage = $('#percentage').val(); $('.table-body tr').each(function () { let veiculo = $(this).find('.veiculo').text(); let moto = $(this).find('.moto').text(); let caminhao = $(this).find('.caminhao').text(); removal_vehicle = parseFloat(veiculo) + (parseFloat(veiculo) * parseFloat(percentage)) / 100; removal_motorcycle = parseFloat(moto) + (parseFloat(moto) * parseFloat(percentage)) / 100; removal_tuck = parseFloat(caminhao) + (parseFloat(caminhao) * parseFloat(percentage)) / 100; arrayData.push({ removal_vehicle, removal_motorcycle, removal_tuck }) $(this).find('.veiculo_atualizado').val(removal_vehicle.toFixed(2)); $(this).find('.moto_atualizado').val(removal_motorcycle.toFixed(2)); $(this).find('.caminhao_atualizado').val(removal_tuck.toFixed(2)); console.log('Removal Vehicle:', removal_vehicle); console.log('Removal Motorcycle:', removal_motorcycle); console.log('Removal Truck:', removal_tuck); }); }); $('select#removal_table_from').on('change', function (e) { let table_id = $(this).val(); let action = route('removal.removal-values.show', table_id); $.ajax({ type: "GET", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, success: function (data) { $('.table-body').empty(); for (let i = 0; i < data.length; i++) { let carro = parseFloat(data[i].CARRO); let moto = parseFloat(data[i].MOTO); let caminhao = parseFloat(data[i].CAMINHAO); let distancia = data[i].DISTANCIA; let origem = data[i].ORIGEM; let destino = data[i].DESTINO; let localidadeOrigem = data[i].LocalidadeOrigem_ID; let localidadeDestino = data[i].LocalidadeDestino_ID; let newRow = '<tr class="removal-row">' + '<td class="align-middle">' + '<div class="row">' + '<div class="col-1">' + '<span class="font-weight-bold">Origem</span><br>' + '<span class="origem">' + origem + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Destino</span><br>' + '<span class="destino">' + destino + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">KM</span><br>' + '<span class="km">' + distancia + '</span>' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Veículo</span><br>' + '<span class="veiculo">' + carro + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Veículo Atualizado</span><br>' + '<input type="text" class="veiculo_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Moto</span><br>' + '<span class="moto">' + moto + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Moto Atualizado</span><br>' + '<input type="text" class="moto_atualizado">' + '</div>' + '<div class="col-1">' + '<span class="font-weight-bold">Caminhão</span><br>' + '<span class="caminhao">' + caminhao + '</span>' + '</div>' + '<div class="col-2">' + '<span class="font-weight-bold">Caminhão Atualizado</span><br>' + '<input type="text" class="caminhao_atualizado">' + '</div>' + '</div>' + '</div>' + '</td>' + '</tr>'; $('.table-body').append(newRow); //let row = $('.removal-row:last'); // Calcula o valor atualizado e define nos campos diretamente // let veiculo_atualizado = carro + (carro * percentage) / 100; // let moto_atualizado = moto + (moto * percentage) / 100; // let caminhao_atualizado = caminhao + (caminhao * percentage) / 100; // console.log('PORCENTS: ', percentage); //console.log('Veiculo Atualizado:', veiculo_atualizado, 'Moto Atualizado:', moto_atualizado, 'Caminhao Atualizado:', caminhao_atualizado); // Define os valores diretamente nos campos da nova linha // row.find('.veiculo_atualizado').val(veiculo_atualizado.toFixed(2)); // row.find('.moto_atualizado').val(moto_atualizado.toFixed(2)); // row.find('.caminhao_atualizado').val(caminhao_atualizado.toFixed(2)); arrayData.push({ carro, moto, caminhao, distancia, origem, destino, localidadeOrigem, localidadeDestino, removal_vehicle, removal_motorcycle, removal_tuck }); } $('#copy_data_table').val(JSON.stringify(arrayData)); } }); }); //javascript para o formulario de cadastro // $(document).ready(function (event) { $('#uf').change(function () { let code_city = $(this).val(); let deposit = localStorage.getItem('selected_deposit_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city }, success: function (data) { $('#city').empty(); $('#deposit').empty(); for (let i = 0; i < data.cities.length; i++) { $('#city').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '<option>'); } if (data.deposits.length > 0) { for (let i = 0; i < data.deposits.length; i++) { $('#deposit').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '<option>'); } } else { // $('#deposit').prop('disabled', true); // $('#city').prop('disabled', false); } $('#city').trigger('change'); } }); }); $('#deposit').on('change', function () { depositId = $(this).val(); localStorage.setItem('selected_deposit_id', depositId); }); $('#uf_destiny').change(function () { let code_city = $(this).val(); let depositDestiny = localStorage.getItem('selected_deposit_destiny_id'); let action = route('removal.removal-values.cities', code_city); $.ajax({ type: "POST", url: action, headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { code_city: code_city }, success: function (data) { $('#city_destiny').empty(); $('#deposit_destiny').empty(); for (let i = 0; i < data.cities.length; i++) { $('#city_destiny').append('<option value="' + data.cities[i].NM + '">' + data.cities[i].NM + '</option>'); } if (data.deposits.length > 0) { // $('#deposit_destiny').prop('disabled', false); //$('#city_destiny').empty(); // $('#city_destiny').prop('disabled', true); for (let i = 0; i < data.deposits.length; i++) { $('#deposit_destiny').append('<option value="' + data.deposits[i].NM + '">' + data.deposits[i].NM + '</option>'); } } else { // $('#deposit_destiny').prop('disabled', true); // $('#city_destiny').prop('disabled', false); } $('#city_destiny').trigger('change'); } }); }); $('#deposit_destiny').on('change', function () { let depositDestinyId = $(this).val(); localStorage.setItem('selected_deposit_destiny_id', depositDestinyId); }); }); </code>
  2. joeythai

    combobox repetindo registros

    Boa tarde pessoal, eu criei uma página da qual tenho diversos checkbox para marcar, se tiver alguma caixinha marcada eu habilito um botão para fazer o envio ao servidor, porém, está acontecendo um problema que não consegui identificar, o que está acontecendo é o seguinte: Quando eu marco um checkbox apenas, o botão é liberado, eu clico nele e aparece um modal para preencher os dados, e nesse modal tem um combobox com opções criadas em javascript, como tem somente uma caixinha marcada as informações no combobox aparecem perfeitamente, porém, se eu marco 2 checkbox ou mais as opções do combobox se repetem, como se eu tivesse fazendo isso dentro de um looping, o que não é verdade, eis o codigo abaixo: <code> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input id="check-belongings" class="custom-control-input check-belongings" name="" type="checkbox" value=""> <label for="" class="custom-control-label"></label> <div class="col-12"> <div class="md-form mt-0 mb-0 pt-0 pb-0"> <label for="reason">Motivo</label><br><br> <select class="form-control md-select2" style="width: 100%; text-transform: uppercase" id="reason_all_belongings" name="reason_all_belongings" required> </select> </div> </div> <script> $('.check-belongings').click(function () { let belongingsIds = []; let listaMarcados; let optionsReason = []; let option = null; let movementsSelect = document.getElementById("reason_all_belongings"); optionsReason = ['Conferencia', 'Desobstrução', 'Entrega ao Cliente/Propr',' Inspeção', 'Manobra', 'Venda' ]; optionsReason.forEach((reason) => { option = new Option(reason, reason.toLowerCase()); movementsSelect.options[movementsSelect.options.length] = option; }); listaMarcados = document.getElementsByClassName("check-belongings"); for (let loop = 0; loop < listaMarcados.length; loop++) { var item = listaMarcados[loop]; if (item.type == "checkbox" && item.checked) { $('.drop-all-belongings').removeAttr('disabled'); belongingsIds.push(item.value); } else { // $('.drop-all-belongings').attr('disabled', 'disabled'); } } }); </script> </body> </html> </code>
  3. Boa tarde pessoal, eu tenho um ajax em que mando buscar as imagens de um determinado item, pois bem, eu recebo essas imagens, são 3 neste caso, porém quando eu exibo essas imagens no meu slide, somente uma delas é exibida, as outras não, é um slide em que eu preencho com javascript, faço o foeach e no foreach eu aplico um console.log(imagens) ele exibe as 3 certinha, somente no slide que so aparece a primeira, alguém já criou um slide de forma dinamica no estilo que estou fazendo possa me auxiliar ? O codigo é o seguinte: <code> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="modal-body"> <div class="row"> <div class="col-1 align-middle text-center" style="margin-top: 15%;"> <a onclick="plusSlides(-1)"> <i class="fas fa-chevron-left fa-5x"></i></a> </div> <div class="slideBelongings"></div> <div class="col-1 align-middle text-center" style="margin-top: 15%;"> <a onclick="plusSlides(1)"> <i class="fas fa-chevron-right fa-5x"></i></a> </div> <div class="col-10 text-center mySlides"> <div class="numbertext">1 / 4</div> <img src="" class="img-fluid img-belongings" style="max-width: 400px;"> </div> <div class="col-10 text-center mySlides"> <div class="numbertext">2 / 4</div> <img src="" class="img-fluid img-belongings"> </div> <div class="col-10 text-center mySlides"> <div class="numbertext">3 / 4</div> <img src="" class="img-fluid img-belongings"> </div> <div class="col-10 text-center mySlides"> <div class="numbertext">4 / 4</div> <img src="" class="img-fluid img-belongings"> </div> <div class="caption-container"> <p id="caption"></p> </div> <div class="row"> <div class="col-3"> <img src="https://dummyimage.com/600x400/ccc/000&text=foto" class="img-thumbnail"> </div> <div class="col-3"> <img src="https://dummyimage.com/600x400/eee/000&text=foto" class="img-thumbnail"> </div> <div class="col-3"> <img src="https://dummyimage.com/600x400/eee/000&text=foto" class="img-thumbnail"> </div> <div class="col-3"> <img src="https://dummyimage.com/600x400/eee/000&text=foto" class="img-thumbnail"> </div> </div> </div> </div> <script> let getImages = $('#get-images'); $(getImages).click(function() { let lot = $(this).data('lot'); $.ajax({ url: "{{ route('logistic.belongings.get-images') }}", method: 'get', data: { lot: lot }, success: function(response) { images = response.contents; console.log(images) let imgBelongings = document.querySelector('.img-belongings'); let imgThumbnails = document.querySelector('.img-thumbnail'); let $slideBelongings = $('.slideBelongings'); var html = ''; images.forEach(function(image) { imgBelongings.setAttribute('src', image); imgThumbnails.setAttribute('src', image); }); //showSlides(1); // for (i = 0; i < images.length; i++) { // imgBelongings.setAttribute('src', images); // imgThumbnails.setAttribute('src', images); // } } }); }); //Slides let slideIndex = 1; showSlides(slideIndex); function plusSlides(n) { showSlides(slideIndex += n); } function currentSlide(n) { showSlides(slideIndex = n); } function showSlides(n) { // setTimeout(() => { // console.log('showSlides'); let i; let slides = document.getElementsByClassName("mySlides"); let imgThumbnail = document.getElementsByClassName("img-thumbnail"); let captionText = document.getElementById("caption"); if (n > slides.length) { slideIndex = 1 } if (n < 1) { slideIndex = slides.length } for (i = 0; i < slides.length; i++) { slides[i].style.display = "none"; } for (i = 0; i < imgThumbnail.length; i++) { imgThumbnail[i].className = imgThumbnail[i].className.replace(" active", ""); } slides[slideIndex - 1].style.display = "block"; imgThumbnail[slideIndex - 1].className += " active"; captionText.innerHTML = imgThumbnail[slideIndex - 1].alt; //}, 2000); } </script> </body> </html> </code>
  4. joeythai

    2 eventos conflitando

    Muito obrigado, resolveu meu problema, no caso foi a segunda opção. só não estou conseguindo "reagir" para marcar sua resposta como solução.
  5. joeythai

    2 eventos conflitando

    Boa tarde pessoal, Estou tendo um problema com 2 eventos aqui do javascript, eu tenho essa variável numberInstallments que representa um combo select, nesse combo tem 36 opções que representam a quantidade de parcelas, e dependendo da quantidade de parcelas que eu escolho eu imprimo um texto, exemplo: (se for menor ou igual a 11 parcelas) "Estou pagando o valor de <signalValueInstallment>" num total de 11 parcelas. Se eu alterar o valor da parcela e manter a quantidade de parcelas o texto deve permanecer, porém, o <signalValueInstallment> deve ser alterado, esta variável é alterada pelo input que tenho no formulário, nesse input tem outro evento de keyup. Está funcionando mais ou mentos, eu consigo alterar o valor do input e ele altera no texto, o problema é que só está aparecendo o texto 2 que deveria aparecer somente para parcelas superiores a 11 parcelas. Alguem sabe dizer o que está errado aí ?
  6. Boa tarde pessoal, Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens: <code> public function getBillsUnpaid($date) { $results = []; $numberBills = $this->lotModel->select(DB::RAW(" Lotes.ID AS Lote_ID, Compradores.ID as Comprador_ID, Compradores.CompradorWeb_ID, Compradores.NM as NM_Comprador, Lotes.Leilao_ID as Leilao_ID, Lotes.NU as NU_Lote, FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto, REPLACE( (CASE WHEN LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0 THEN CONCAT( LTRIM(RTRIM(Compradores.NM_DDDCel)),'', LTRIM(RTRIM(Compradores.NM_Celular)) ) WHEN LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0 THEN CONCAT( LTRIM(RTRIM(Compradores.NM_DDDTel)),'', LTRIM(RTRIM(Compradores.NM_Telefone)) ) ELSE '' END) ,'-', '') AS NM_Celular, Lotes.VL_Venda, ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca, ISNULL(( SELECT SUM(VL_Cobertura) FROM LotesXPagamentos WHERE Lote_ID = lotes.ID AND Pagamento_ID IS NOT NULL ), 0) as VL_Pago, CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao ")) ->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID') ->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID') ->where('Lotes.ST_Lote', 3) ->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01') ->whereRaw(" ISNULL(( SELECT SUM(VL_Cobertura) FROM LotesXPagamentos WHERE Lote_ID = Lotes.ID AND Pagamento_ID IS NOT NULL ), 0) = 0") ->orderBy('Lotes.NU') ->take(10) ->get(); if(count($numberBills) > 0){ foreach($numberBills as $bills){ $results['CompradorWeb_ID'] = $bills->CompradorWeb_ID; $results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto; $results['VL_Cobranca'] = $bills->VL_Cobranca; $results['Lote_ID'] = $bills->Lote_ID; $results['Comprador_ID'] = $bills->Comprador_ID; $results['NM_Comprador'] = $bills->NM_Comprador; $results['NM_Descricao'] = $bills->NM_Descricao; $results['VL_Pago'] = $bills->VL_Pago; $results['NU_Lote'] = $bills->NU_Lote; $results['Leilao_ID'] = $bills->Leilao_ID; $phones = $this->getPhoneUsers($bills->CompradorWeb_ID); $results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular; return $results; } } } </code> Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
  7. Boa tarde pessoal, Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens: <code> public function getBillsUnpaid($date) { $results = []; $numberBills = $this->lotModel->select(DB::RAW(" Lotes.ID AS Lote_ID, Compradores.ID as Comprador_ID, Compradores.CompradorWeb_ID, Compradores.NM as NM_Comprador, Lotes.Leilao_ID as Leilao_ID, Lotes.NU as NU_Lote, FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto, REPLACE( (CASE WHEN LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0 THEN CONCAT( LTRIM(RTRIM(Compradores.NM_DDDCel)),'', LTRIM(RTRIM(Compradores.NM_Celular)) ) WHEN LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0 THEN CONCAT( LTRIM(RTRIM(Compradores.NM_DDDTel)),'', LTRIM(RTRIM(Compradores.NM_Telefone)) ) ELSE '' END) ,'-', '') AS NM_Celular, Lotes.VL_Venda, ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca, ISNULL(( SELECT SUM(VL_Cobertura) FROM LotesXPagamentos WHERE Lote_ID = lotes.ID AND Pagamento_ID IS NOT NULL ), 0) as VL_Pago, CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao ")) ->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID') ->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID') ->where('Lotes.ST_Lote', 3) ->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01') ->whereRaw(" ISNULL(( SELECT SUM(VL_Cobertura) FROM LotesXPagamentos WHERE Lote_ID = Lotes.ID AND Pagamento_ID IS NOT NULL ), 0) = 0") ->orderBy('Lotes.NU') ->take(10) ->get(); if(count($numberBills) > 0){ foreach($numberBills as $bills){ $results['CompradorWeb_ID'] = $bills->CompradorWeb_ID; $results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto; $results['VL_Cobranca'] = $bills->VL_Cobranca; $results['Lote_ID'] = $bills->Lote_ID; $results['Comprador_ID'] = $bills->Comprador_ID; $results['NM_Comprador'] = $bills->NM_Comprador; $results['NM_Descricao'] = $bills->NM_Descricao; $results['VL_Pago'] = $bills->VL_Pago; $results['NU_Lote'] = $bills->NU_Lote; $results['Leilao_ID'] = $bills->Leilao_ID; $phones = $this->getPhoneUsers($bills->CompradorWeb_ID); $results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular; return $results; } } } </code> Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
  8. joeythai

    Valor Incompleto da coluna

    Boa tarde rapaziada, Criei uma procedure que está trazendo os dados certinhos com exceção de uma coluna(Caminho do Arquivo) está cortando o nome do arquivo que salvo lá. O código é esse: <code> CREATE PROCEDURE dbo.clientes2 @Produto_ID INT = NULL, @Comprador_ID INT = NULL, @NM_Token NVARCHAR(MAX) = NULL, @DocumentoTipo INT = NULL, @NM_CPF CHAR(20) = NULL, @Teste INT = 0 AS SET @Produto_ID = ISNULL(@Produto_ID, 0); SET @Comprador_ID = ISNULL(@Comprador_ID, 0); SET @NM_Token = RTRIM(LTRIM( ISNULL(@NM_Token, '') )); SET @DocumentoTipo = ISNULL(@DocumentoTipo, 0); SET @NM_CPF = RTRIM(LTRIM(@NM_CPF)); SET @Teste = ISNULL(@Teste, 1); IF(@Teste = 1) BEGIN IF(ISNULL(@Comprador_ID,0) > 0 AND @Produto_ID > 0) BEGIN SELECT cliente.ID, cliente.Produto_ID, cliente.Carro_ID, cliente.Coligacao_ID, cliente.Cliente_ID, cliente.Deposito_ID, cliente.DocumentoTipo, CAST(cliente.NM_Arquivo AS nvarchar) as NM_Arquivo, CAST(cliente.NM_Token AS nvarchar) as NM_Token, cliente.NM_Responsavel, cliente.Data_BR, compradores.ID FROM Cliente cliente WITH (NOLOCK) INNER JOIN Produto produto WITH (NOLOCK) ON produto.ID = cliente.Produto_ID INNER JOIN Compradores compradores WITH (NOLOCK) ON compradores.ID = produto.Comprador_ID WHERE compradores.ID = @Comprador_ID AND cliente.Produto_ID = @Prodtuo_ID AND cliente.DocumentoTipo = @DocumentoTipo; END END ELSE BEGIN IF(ISNULL(@Comprador_ID,0) > 0 AND @Produto_ID > 0) BEGIN SELECT cliente.*, compradores.ID FROM Cliente cliente WITH (NOLOCK) INNER JOIN Produto produto WITH (NOLOCK) ON produto.ID = cliente.Produto_ID INNER JOIN Notas notas WITH (NOLOCK) ON notas.ID = produto.NVenda_ID INNER JOIN Compradores compradores WITH (NOLOCK) ON compradores.ID = notas.Comprador_ID WHERE compradores.ID = @Comprador_ID AND cliente.Produto_ID = @Produto_ID AND cliente.DocumentoTipo = DocumentoTipo; END END RETURN; </code> faço um join na tabela clientes, esse campo é de lá, e na tabela clientes o caminho do arquivo está salvo certinho, completo com o nome do arquivo. Alguem tem alguma ideia do que está errado ?
  9. joeythai

    [Resolvido] Formato de Data

    descobri galera, pra quem quiser saber, o T representa o fuso horário, resolvi desta forma com o Carbon: <code> $dateHeader = \Carbon\Carbon::now()->format("Y-m-d\TH:i:s"); </code>
  10. joeythai

    [Resolvido] Formato de Data

    Bom dia pessoal, minha dúvida é simples, vi que alguns arquivos xml tem a saída de data desta forma "2020-01-22T09:18:50", como faço pra imprimir a data desta forma ? E o que significa esse T?] Eu estou usando o Carbon, to tentando encontrar esse padrão na documentação. 2018-05-29T17:47:57 2018-05-29T17:47:57
  11. joeythai

    Retorno de XML Duplicado

    Consegui solucionar o problema pessoal, para isso foi necessário colocar um ob_start() no inicio da função index e um ob_end_clean() antes do retorno da mesma
  12. joeythai

    Retorno de XML Duplicado

    Boa tarde pessoal, Tenho uma API para enviad dados via XML, eu salvo esse xml em um arquivo físico, os dados no arquivo físico me retornam 2 registros com todas as TAGs certinho, porém, quando eu pego a url e mando no browser, esses registros duplicam, alguém sabe o porque disso ? Estou utilizando laravel e a biblioteca DomDocument do PHP. O código esse abaixo: <code> <?php namespace App\Http\Controllers\API\V1\Integracao; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\ValidationException; use App\Services\ToArray; use App\Exceptions\ApiException; use App\Http\Controllers\AppBaseController; use Illuminate\Support\Str; use App\Model\MySql\Site\IntegracaoModel as Integracao; use App\Model\MySql\Site\AuxFotosModel; use DOMDocument; /** * * Classe criada para retornar informações dos imóveis do site da Sodré * e integrar com o Zap e Viva Real * */ class IntegracaoController extends AppBaseController { private $infos; private $integracao; private $urlImagem = "https://fotos.sodresantoro.com.br/fotos.imoveis/"; public function __construct(Integracao $integracao) { $this->integracao = $integracao; } public function index() { $dadosImoveis = $this->integracao->imoveis(); #versao do encoding xml $dom = new DOMDocument("1.0", "UTF-8"); #retirar os espacos em branco $dom->preserveWhiteSpace = false; #gerar o codigo $dom->formatOutput = true; #criando o nó principal (root) $root = $dom->createElement("ListingDataFeed"); $domAttrXMLNS = $dom->createAttribute("xmlns"); $domAttrXMLNS->value = 'http://www.vivareal.com/schemas/1.0/VRSync'; $domAttrXMLNSXSI = $dom->createAttribute("xmlns:xsi"); $domAttrXMLNSXSI->value = "http://www.w3.org/2001/XMLSchema-instance"; $domSchemaLocation = $dom->createAttribute("xsi:schemaLocation"); $domSchemaLocation->value = "http://www.vivareal.com/schemas/1.0/VRSync"; #nó filho $listings = $dom->createElement("Listings"); foreach ($dadosImoveis as $imoveis) { $listing = $dom->createElement("Listing"); $details = $dom->createElement("Details"); $media = $dom->createElement("Media"); foreach ($imoveis->imagens as $key => $imagem) { $this->infos['imagem'] = $this->urlImagem . $imagem->nome; $item = $dom->createElement("Item", $this->infos['imagem']); #adiciona atributos nos elementos $domAttrImage = $dom->createAttribute("medium"); $domAttrImage->value = "image"; $domAttrCap = $dom->createAttribute("caption"); $domAttrCap->value = "img" . $key++; $domAttrPrimary = $dom->createAttribute("primary"); $domAttrPrimary->value = "true"; $item->appendChild($domAttrCap); $item->appendChild($domAttrImage); $media->appendChild($item); } $this->infos['lance_inicial'] = $imoveis->vl_lanceinicial; $this->infos['title'] = $imoveis->title; $this->infos['descricao'] = $imoveis->descricao; $this->infos['lote_id'] = $imoveis->lote_id; $this->infos['endereco'] = $imoveis->Endereco; $this->infos['imagem'] = ''; //Faço o explode para poder fazer o envio(API não aceita casas decimais) //Para consultar: https://developers.grupozap.com/feeds/vrsync/elements/details/#list-price $preco = explode('.', $this->infos['lance_inicial']); $listPrice = $dom->createElement("ListPrice", $preco[0]); $description = $dom->createElement("Description", htmlspecialchars(str_limit($this->infos['descricao'], 2000))); $title = $dom->createElement("Title", $this->infos['title']); $listingID = $dom->createElement("ListingID", $this->infos['lote_id']); $transactionType = $dom->createElement("TransactionType", "For Sale"); $usageType = $dom->createElement("UsageType", "Residential"); $propertyType = $dom->createElement("PropertyType", "Residential / Apartment"); #adiciona os nós $details->appendChild($usageType); $details->appendChild($propertyType); $details->appendChild($description); $details->appendChild($listPrice); $listing->appendChild($title); $listing->appendChild($listingID); $listing->appendChild($transactionType); $listing->appendChild($details); $listing->appendChild($media); $listings->appendChild($listing); } $root->appendChild($listings); $root->appendChild($domAttrXMLNS); $root->appendChild($domAttrXMLNSXSI); $root->appendChild($domSchemaLocation); $dom->appendChild($root); # Para salvar o arquivo, descomente a linha $dom->save("listagem-imoveis.xml"); #cabeçalho da página #header("Content-Type: text/xml"); # imprime o xml na tela print $dom->saveXML(); return response($dom->saveXML()); } public function download() { return response()->file(public_path('listagem-imoveis.xml', 'Imóveis')); } } </code>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.