-
Total de itens
118 -
Registro em
-
Última visita
Tudo que joeythai postou
-
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>
-
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>
-
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>
- 2 respostas
-
- javascript
- php
-
(e mais 1 )
Tags:
-
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í ?
-
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.
-
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 ?
-
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 ?
-
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 ?
-
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
-
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>
-
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
-
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>