Ir para conteúdo
Fórum CódigoFonte.net

edergonsilva

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

  1. Olá pessoal sou novo no fórum. Aqui na empresa temos 2 sistemas, e estou realizando um vínculo de notas fiscais entre os dois sistemas. Para realizar esta façanha, eu criei dois campos 'select' do tipo 'multiple' onde de um lado lista todas as notas disponíveis, e do outro lado mostra as notas fiscais que já foram vinculadas para um registro específico. Para passar as notas de um lado para o outro o usuário precisa dar dois cliques. O problema é que na hora em que o usuário da os dois cliques, o sistema precisa atualizar os dois campos, ou seja, o que foi vinculado deve sumir do primeiro select e aparecer no outro....só que no evento javascript ele executa as 3 funções ao mesmo tempo, ou seja, não dá tempo de fazer a inserção ou o delete no banco de dados e ele não atualiza as informações corretamente. Explicando melhor...qd ele clica por exemplo em uma nota não vinculada o sistema tem que fazer o insert na tabela de vínculos, atualizar o select um para sumir e mostrar no outro select com outra função. Abaixo segue o código das páginas e requisições ajax que eu to fazendo pra ver se alguém tem uma luz: Outro problema é que não funciona no Internet explorer em qualquer versão que seja. Aqui são os dois fieldsets que o sistema mostra na tela inicial: <div id="corpodiv" class="corpo"> <fieldset class="box500" id="esquerda"> <legend><b>Notas Sem Vínculo</b></legend> <p><b><i>Dê dois cliques para vincular a nota</i></b></p> <div id="semvinculo"></div> </fieldset> <fieldset class="box500" id="direita"> <legend><b>Notas da Viagem</b></legend> <p><b><i>Dê dois cliques para excluir o vínculo da nota</i></b></p> <div id="vinculadas"></div> </fieldset> </div> Aqui é o select que ele monta com as informações pra mostrar na tela da parte de não vinculadas (SQL EM ORACLE): <?php include("../dd/ddconn.php"); //conexão include("../dd/ddfuncoes.php"); //funções gerais do sistema $idsessao = $_GET['idsessao']; $cavalo = $_GET['cavalo']; $idviagem = $_GET['idviagem']; $sqlpend = "Select omc.empresa ,omc.nota_fiscal ,to_char(omc.nota_fiscal,'00000000') nf_formatada ,to_char(omc.serie_nota_fiscal,'000') serie_formatada ,omc.serie_nota_fiscal ,omc.remetent ,coo_f_ret_nomredcli(omc.remetent) nom_remetente ,omc.pagador_frete ,coo_f_ret_nomredcli(omc.pagador_frete) nom_pagador_frete From notas Omc JOIN conhecs con on (con.empresa_nota_fiscal = omc.empresa and con.nota_fiscal = omc.nota_fiscal and con.serie_nota_fiscal = omc.serie_nota_fiscal and con.subserie_nf = omc.subserie_nf and con.remetent = omc.remetent) JOIN conhectran cot on (cot.empresa = con.empresa and cot.pconh_transporte = con.pconh_transporte) Where cot.veiculo = '$cavalo' and TO_DATE(to_char(omc.dat_emissao,'ddmmyyyy'),'ddMMYYYY') BETWEEN TO_DATE(to_char(sysdate - 30,'ddMMYYYY'),'ddMMYYYY') and TO_DATE(to_char(sysdate + 30,'ddMMYYYY'),'ddMMYYYY') And Not Exists (Select 1 From Coo_Exp_Vinculo_Notas v Where v.Nota_Fiscal = Omc.Nota_Fiscal And trim(v.Serie_Nota_Fiscal) = trim(Omc.Serie_Nota_Fiscal) And v.Remetente = Omc.Remetent And v.Cliente_Pagador = Omc.Pagador_Frete And v.empresa = omc.empresa) And Not Exists (Select 1 From Coo_Xml_Pre_Nf Xml Where Xml.Nf_Nro = Omc.Nota_Fiscal And trim(Xml.Nf_Serie) = trim(Omc.Serie_Nota_Fiscal) And Xml.Emb_Cnpj = Omc.Remetent And xml.empresa = omc.empresa and xml.cli_pag = omc.pagador_frete) order by omc.nota_fiscal desc"; $conn = conn(); $oparse = oci_parse($conn, $sqlpend); oci_execute($oparse); oci_close($conn); $cont = 0; // echo "<select id='nfsemvinc' multiple='true' size='20' ondblclick='inserir(\"ajax/exp_vinculo_notas.ajax.php?idsessao=$idsessao&cavalo=$cavalo&idviagem=$idviagem\"+$(this).val(),\"ajax/exp_lista_notas_vinc.ajax.php?idsessao=$idsessao&idviagem=$idviagem\",\"vinculadas\",\"ajax/exp_lista_notas_semvinc.ajax.php?idsessao=$idsessao&cavalo=$cavalo&idviagem=$idviagem\"+$(this).val(),\"semvinculo\"); showResultc(\"ajax/exp_lista_notas_semvinc.ajax.php?idsessao=$idsessao&cavalo=$cavalo&idviagem=$idviagem\"+$(this).val(),\"semvinculo\"); showResultd(\"ajax/exp_lista_notas_vinc.ajax.php?idsessao=$idsessao&idviagem=$idviagem\",\"vinculadas\");'>"; while ($ddpend = oci_fetch_array($oparse, OCI_ASSOC)) { $values = "&nota_fiscal=".trim($ddpend['NOTA_FISCAL'])."&serie_nota_fiscal=".trim($ddpend['SERIE_NOTA_FISCAL'])."&remetente=".trim($ddpend['REMETENT'])."&cliente_pagador=".trim($ddpend['PAGADOR_FRETE'])."&empresa=".trim($ddpend['EMPRESA']).""; $text = trim($ddpend['EMPRESA'])." - ".trim($ddpend['NF_FORMATADA'])." - ".trim($ddpend['SERIE_FORMATADA'])." - ".trim($ddpend['NOM_PAGADOR_FRETE']); echo "<option value='$values'>$text</option>"; $cont++; } echo "</select>"; ?> Aqui é a função ajax para inserir as notas: <?php include("../dd/ddconn.php"); //conexão include("../dd/ddfuncoes.php"); //funções gerais do sistema $idsessao = $_GET['idsessao']; $codcliente = $_GET['codcliente']; $conn = conn(); $sql = "insert into vinculo_notas values ((select nvl(max(idvinculo)+1,1) from vinculo_notas),'$nota_fiscal','$serie_nota_fiscal','$remetente','$cliente_pagador','$idviagem','$empresa')"; $ora = oci_parse($conn,$sql); oci_execute($ora); oci_commit($conn); oci_close($conn); ?> A função que o ajax chama pra mostrar as notas vinculadas na tela: <?php include("../dd/ddconn.php"); //conexão include("../dd/ddfuncoes.php"); //funções gerais do sistema $idsessao = $_GET['idsessao']; $cavalo = $_GET['cavalo']; $idviagem = $_GET['idviagem']; $conn = conn(); $sql = "SELECT v.idvinculo ,v.empresa ,v.nota_fiscal ,to_char(v.nota_fiscal,'00000000') nf_formatada ,v.serie_nota_fiscal ,v.remetente ,coo_f_ret_nomredcli(v.remetente) nom_remetente ,v.cliente_pagador ,coo_f_ret_nomredcli(v.cliente_pagador) nom_pagador ,( select cavalo from coo_viagem where idviagem = '$idviagem' ) cavalo ,coo_f_ret_nomredcli(v.cliente_pagador) nom_pagador_frete FROM Vinculo_Notas v WHERE v.idviagem = '$idviagem' order by v.nota_fiscal desc"; $ora = oci_parse($conn, $sql); oci_execute($ora); oci_close($conn); $cont = 0; echo "<select id='nfvinculada' size='20' multiple='true' height='200' ondblclick='deletar(\"ajax/exp_exclusao_notas.ajax.php?idsessao=$idsessao&idviagem=$idviagem\"+$(this).val(),\"ajax/exp_lista_notas_semvinc.ajax.php?idsessao=$idsessao&idviagem=$idviagem\"+$(this).val(),\"semvinculo\",\"ajax/exp_lista_notas_vinc.ajax.php?idsessao=$idsessao&idviagem=$idviagem\"+$(this).val(),\"vinculadas\"); showResultd(\"ajax/exp_lista_notas_vinc.ajax.php?idsessao=$idsessao&idviagem=$idviagem\",\"vinculadas\"); showResultc(\"ajax/exp_lista_notas_semvinc.ajax.php?idsessao=$idsessao&cavalo=$cavalo&idviagem=$idviagem\"+$(this).val(),\"semvinculo\"); '>"; while ($ddvinc = oci_fetch_array($ora, OCI_ASSOC)) { $values = "&idvinculo=".trim($ddvinc['IDVINCULO'])."&cavalo=".$ddvinc['CAVALO']; echo "<option value='$values'>".$ddvinc['EMPRESA']." - ".$ddvinc['NF_FORMATADA']." - ".$ddvinc['SERIE_NOTA_FISCAL']." - ".$ddvinc['NOM_PAGADOR']."</option>"; } echo "</select>"; ?> Abaixo, é a função que o ajax chama para deletar o registro da tabela de vínculos <?php include("../dd/ddconn.php"); //conexão include("../dd/ddfuncoes.php"); //funções gerais do sistema $idsessao = $_GET['idsessao']; $codcliente = $_GET['codcliente']; $conn = conn(); $sql = "delete from Vinculo_Notas v where v.idvinculo = '$idvinculo'"; $ora = oci_parse($conn,$sql); oci_execute($ora); oci_commit($conn); oci_close($conn); ?> e lá vai o ajax que faz a requisição: function deletar(pag,pag1,nmdiv1,pag2,nmdiv2) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttpd=new XMLHttpRequest(); }else {// code for IE6, IE5 xmlhttpd=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttpd.onreadystatechange=function() { if (xmlhttpd.readyState==4 && xmlhttpd.status==200) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari exec1=new XMLHttpRequest(); }else {// code for IE6, IE5 exec1=new ActiveXObject("Microsoft.XMLHTTP"); } exec1.onreadystatechange=function() { if (exec1.readyState==4 && exec1.status==200) { document.getElementById(nmdiv1).value = exec1.responseText; //showResultd(pag1,nmdiv1); //showResultb(pag2,nmdiv2); } } exec1.open("GET",pag1,true); exec1.send(); if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari exec2=new XMLHttpRequest(); }else {// code for IE6, IE5 exec2=new ActiveXObject("Microsoft.XMLHTTP"); } exec2.onreadystatechange=function() { if (exec2.readyState==4 && exec2.status==200) { document.getElementById(nmdiv2).value = exec2.responseText; } } exec2.open("GET",pag2,true); exec2.send(); //document.getElementById(nmdiv).value = xmlhttp.responseText; //showResultd(pag1,nmdiv1); //showResultb(pag2,nmdiv2); } } xmlhttpd.open("GET",pag,true); xmlhttpd.send(); } function inserir(pag,pag3,nmdiv3,pag4,nmdiv4) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttpu=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttpu=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttpu.onreadystatechange=function() { if (xmlhttpu.readyState==4 && xmlhttpu.status==200) { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari exec3=new XMLHttpRequest(); }else {// code for IE6, IE5 exec3=new ActiveXObject("Microsoft.XMLHTTP"); } exec3.onreadystatechange=function() { if (exec3.readyState==4 && exec3.status==200) { document.getElementById(nmdiv3).value = exec3.responseText; //showResultd(pag1,nmdiv1); //showResultb(pag2,nmdiv2); } } exec3.open("GET",pag3,true); exec3.send(); if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari exec4=new XMLHttpRequest(); }else {// code for IE6, IE5 exec4=new ActiveXObject("Microsoft.XMLHTTP"); } exec4.onreadystatechange=function() { if (exec4.readyState==4 && exec4.status==200) { document.getElementById(nmdiv4).value = exec4.responseText; } } exec4.open("GET",pag4,true); exec4.send(); //document.getElementById(nmdiv).value = xmlhttp.responseText; //showResultd(pag1,nmdiv1); //showResultb(pag2,nmdiv2); } } xmlhttpu.open("GET",pag,true); xmlhttpu.send(); }
×
×
  • Criar Novo...