Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Documentado creado el 19 de Octubre de 2007.
- */
- var error='Debe elegir una opción válida'; //Mensaje de error
- var mostrar = false; //Bandera para mostrar|ocultar la tabla de búsqueda avanzada
- var cuenta_producto = 0; //Número de productos en la lista
- var cons = 0;
- var clave_producto = Array(); //Almacena las claves de los productos, impidiendo que se anexe más de una vez el mismo.
- var datos_producto = Array();
- //set_origenpedido(valor) asigna al campo hidden temporal (tmp_pedido) el valor 0 contrato o 1 particular
- function set_origenpedido(valor){
- var input, combo, tmp;
- combo = document.getElementById('cliente_nombre');
- input = document.getElementById('clave_contrato');
- if(valor == 0){
- combo.setAttribute('disabled', true);
- input.removeAttribute('disabled');
- }
- else{
- input.value='';
- input.setAttribute('disabled', true);
- combo.removeAttribute('disabled');
- }
- tmp = document.getElementById('tmp_pedido');
- tmp.value = valor;
- //Si es un contrato agregar buscar clave del cliente. Si es un particular remover clave del cliente.
- var combo_box = document.getElementById('tipo_busqueda');
- if(tmp.value == 0 && combo_box.options.length == 5){ //Agregar
- var choice;
- choice = document.createElement('option');
- choice.value = 5;
- choice.appendChild(document.createTextNode('Clave del Cliente'));
- combo_box.appendChild(choice);
- }
- else if(tmp.value == 1 && combo_box.options.length == 6){ //Quitar
- combo_box.removeChild(combo_box.lastChild);
- }
- return;
- }
- //showHidden() Muestra u oculta la tabla de búsqueda avanzada
- function showHidden(){
- var tabla_busqueda = document.getElementById('b_avanzada');
- if(!mostrar){
- mostrar = true;
- tabla_busqueda.style.display = 'block';
- }
- else{
- mostrar = false;
- tabla_busqueda.style.display = 'none';
- }
- return;
- }
- //reiniciaControles() Limpia los controles principales de búsqueda avanzada
- function reiniciaControles(){
- var criterio = document.getElementById('criterio');
- criterio.removeAttribute('value');
- criterio.value = '';
- var combo_box = document.getElementById('resultado');
- while(combo_box.childNodes.length > 0)
- combo_box.removeChild(combo_box.childNodes[0]);
- var choice;
- choice = document.createElement('option');
- choice.appendChild(document.createTextNode('---SELECCIONE---'));
- combo_box.appendChild(choice);
- //limpiaPuntosEntrega();
- activarAdd();
- return;
- }
- //buscarCriterio() Búsqueda Avanzada según el tipo seleccionado y el criterio escrito en la Tabla Productos con el script get_producto.
- function buscarCriterio(){
- activarAdd();
- var tipo_busqueda = document.getElementById('tipo_busqueda').value;
- var criterio = document.getElementById('criterio').value;
- if(tipo_busqueda != "" && tipo_busqueda != "---SELECCIONE---"){
- if(criterio != ""){
- if(tipo_busqueda == 5)
- return alert('Aún no esta implementada la opción\nClave del Cliente');
- var ajaxReq = ajaxFunction();
- if(ajaxReq){
- // Create a function that will receive data sent from the server
- ajaxReq.onreadystatechange = function(){
- if(ajaxReq.readyState == 4){
- if(ajaxReq.status == 200){
- //Activese solo para debuguear
- //var valor = ajaxReq.responseText;
- //alert(valor);
- var valor = ajaxReq.responseXML.getElementsByTagName('evaluado')[0].firstChild.data;
- var mensaje = ajaxReq.responseXML.getElementsByTagName('mensaje')[0].firstChild.data;
- if(valor == 1){ //Existen Clientes
- //alert(mensaje);
- var xmlDoc = ajaxReq.responseXML;
- var listaNombres = xmlDoc.getElementsByTagName('nombres')[0];
- var nombresProductoXML = listaNombres.getElementsByTagName('nombre_producto');
- var listaClaves = xmlDoc.getElementsByTagName('claves')[0];
- var clavesClienteXML = listaClaves.getElementsByTagName('clave_producto');
- var nombre_producto = new Array();
- var clave_producto = new Array();
- var currentState = null;
- for(var i=0; i< nombresProductoXML.length; i++){
- currentState = nombresProductoXML[i];
- nombre_producto[i] = currentState.childNodes[0].nodeValue;
- currentState = null;
- currentState = clavesClienteXML[i];
- clave_producto[i] = currentState.childNodes[0].nodeValue;
- }
- //Generar el combo
- var combo_box = document.getElementById('resultado');
- while(combo_box.childNodes.length > 0)
- combo_box.removeChild(combo_box.childNodes[0]);
- // Agrega algunas opciones:
- var choice;
- choice = document.createElement('option');
- choice.appendChild(document.createTextNode('---SELECCIONE---'));
- combo_box.appendChild(choice);
- for(var i=0; i < nombre_producto.length; i++){
- choice = document.createElement('option');
- choice.value = clave_producto[i];
- choice.appendChild(document.createTextNode(nombre_producto[i]));
- combo_box.appendChild(choice);
- }
- }
- else{//No existen Productos
- var combo_box = document.getElementById('resultado');
- while(combo_box.childNodes.length > 0)
- combo_box.removeChild(combo_box.childNodes[0]);
- var choice;
- choice = document.createElement('option');
- choice.appendChild(document.createTextNode('---SELECCIONE---'));
- combo_box.appendChild(choice);
- alert(mensaje);
- }
- }//Valida Status
- }//Valida State
- }//onreadystatechange
- criterio = encodeURI(criterio);
- var aleatorio=Math.random();
- ajaxReq.open("GET", "get_producto.php?act=1&tipo_busqueda="+tipo_busqueda+"&criterio="+criterio+"&rnd="+aleatorio, true);
- ajaxReq.send(null);
- }//Valida Ajax
- else
- alert("El Navegador no soporta llamados al objeto XMLHttpRequest");
- }//Valida Criterio y Tipo_Busqueda
- else
- return alert("Debe escribir un criterio de búsqueda");
- }//Valida Tipo_Busqueda
- else
- return alert(error);
- }
- //Activa el boton para agregar los puntos de entrega en función del cliente seleccionado.
- function activarAdd(){
- var resultado = document.getElementById('resultado').value;
- var anexa_fila = document.getElementById('anexa_producto');
- if(resultado != "" && resultado != "---SELECCIONE---"){
- anexa_fila.removeAttribute("disabled");
- }
- else{
- anexa_fila.setAttribute('disabled', true);
- }
- }
- function getDatos(producto_clave){ //Cero (0) busca si la clave es válida, uno (1) crea la fila con la información de la BD /*accion, */
- var ajaxReq = ajaxFunction();
- if(ajaxReq){
- ajaxReq.onreadystatechange = function(){
- if(ajaxReq.readyState == 4){
- if(ajaxReq.status == 200){ //Activese solo para debuguear
- //var valor = ajaxReq.responseText; alert(valor);
- var valor = ajaxReq.responseXML.getElementsByTagName('evaluado')[0].firstChild.data;
- var mensaje = ajaxReq.responseXML.getElementsByTagName('mensaje')[0].firstChild.data;
- if(valor == 1){ //Existe la Clave del producto
- //alert(mensaje);
- var claveXML = ajaxReq.responseXML.getElementsByTagName('clave_producto')[0].firstChild.data;
- var nombreXML = ajaxReq.responseXML.getElementsByTagName('nombre_producto')[0].firstChild.data;
- var umedidaXML = ajaxReq.responseXML.getElementsByTagName('umedida_producto')[0].firstChild.data;
- var precioXML = ajaxReq.responseXML.getElementsByTagName('precio_producto')[0].firstChild.data;
- //---------------------- Inicia declaración de variables ---------------------------
- var col_nombre= Array('filaprod','producto_id','cantidad','descripcion','umedida','precio','importe', 'Quitar');
- var tabla='valores_producto';
- var valores_control = document.getElementById(tabla); //tbody valores_producto
- var consecutivo = cons++;
- var id_control = cuenta_producto++;
- //---------------------- Termina declaración de variables ---------------------------
- var fila_control = document.createElement("tr");
- fila_control.setAttribute('id',col_nombre[0]+consecutivo);
- var columna_clave = document.createElement('input'); //Tipo text
- var columna_cantidad = document.createElement('input'); //Tipo text
- var columna_descripcion = document.createElement('input'); //Tipo text
- var columna_umedida = document.createElement('input'); //Tipo text
- var columna_precio = document.createElement('input'); //Tipo text
- var columna_importe = document.createElement('input'); //Tipo text
- var btnBorrar = document.createElement('input'); //Tipo button
- set_Atributos(columna_clave, col_nombre[1]+'[]', col_nombre[1]+id_control, claveXML, 8, 0); //Columna de Clave
- columna_clave.onfocus= function(){ this.blur(); };
- set_Atributos(columna_cantidad, col_nombre[2]+'[]', col_nombre[2]+id_control, 0, 4, 0); //Columna de Cantidad
- columna_cantidad.onkeyup=
- function(){
- if(!isNaN(this.value) && this.value > 0){ //alert('Cantidad Válida para '+this.id);
- this.value = parseInt(this.value,10)
- calculaImporte(this.id);
- }
- else{
- var tam = this.id.charAt(this.id.length-1);
- var importe = document.getElementById('importe'+tam);
- importe.value = 0;
- alert('Cantidad Inválida\nPor Favor escriba el # de productos');
- }
- };
- set_Atributos(columna_descripcion, col_nombre[3]+'[]', col_nombre[3]+id_control, nombreXML, 20, 0); //Columna de Descripción
- columna_descripcion.onfocus= function(){ this.blur(); };
- set_Atributos(columna_umedida, col_nombre[4]+'[]', col_nombre[4]+id_control, umedidaXML, 10, 0); //Columna de Unidad de Medida
- columna_umedida.onfocus= function(){ this.blur(); };
- set_Atributos(columna_precio, col_nombre[5]+'[]', col_nombre[5]+id_control, precioXML, 6, 0); //Columna de Precio
- columna_precio.onfocus= function(){ this.blur(); };
- set_Atributos(columna_importe, col_nombre[6]+'[]', col_nombre[6]+id_control, 0, 6, 0); //Columna de Importe
- columna_importe.onfocus= function(){ this.blur(); };
- set_Atributos(btnBorrar,col_nombre[7]+'[]',col_nombre[7]+consecutivo,'Quitar', 6,2); //Columna del botón Quitar
- btnBorrar.onclick= function(){ remove_fila(tabla, col_nombre[0]+consecutivo); }
- fila_control.appendChild(crearColumna(columna_clave)); //Clave
- fila_control.appendChild(crearColumna(columna_cantidad)); //Cantidad
- fila_control.appendChild(crearColumna(columna_descripcion));//Descripción
- fila_control.appendChild(crearColumna(columna_umedida)); //Unidad de Medida
- fila_control.appendChild(crearColumna(columna_precio)); //Precio
- fila_control.appendChild(crearColumna(columna_importe)); //Importe
- fila_control.appendChild(crearColumna(btnBorrar)); //Borrar
- valores_control.appendChild(fila_control);
- }
- else{//No existe el Producto
- alert(mensaje);
- }
- }//Valida Status
- }//Valida State
- }//onreadystatechange
- var aleatorio=Math.random();
- ajaxReq.open("GET", "get_producto.php?act=2&producto_clave="+producto_clave+"&rnd="+aleatorio, true);
- ajaxReq.send(null);
- }//Valida Ajax
- else
- alert("El Navegador no soporta llamados al objeto XMLHttpRequest");
- return;
- }
- //addFila() Agrega los productos del pedido a la tabla TBODY valores_producto, recibe hotkey (false|true) anexo por clave o B. Avanz.
- function addFila(hotkey){
- var arr_ = Array();
- var producto;
- arr_= clave_producto;
- if(hotkey){
- producto = document.getElementById('clave_producto').value;
- if(producto == '' || producto == ' ' || isNaN(producto))
- return alert('Debe escribir la clave del producto!!');
- }
- else{
- producto = document.getElementById('resultado').value;
- }
- var existe = false;
- for(var i=0; i < arr_.length; i++){
- if(producto == arr_[i]){
- existe = true;
- break;
- }
- }
- if(existe){
- alert('El elemento ya fue agregado, por favor ingrese uno diferente');
- return;
- }
- else{
- add_Clave(producto,'producto'); //producto
- //Busqueda de datos consulta ajax
- getDatos(producto); //Crea fila de inputs con la información de la BD /*1, */
- }
- return;
- }
- //set_Atributos() Establece los atributos del elemento creado, en este caso input
- function set_Atributos(input_pe, nombre, id, valor, tamanio, tipo){
- var tipo_input;
- switch(tipo){
- case 0: tipo_input = 'text';
- break;
- case 1: tipo_input = 'hidden';
- break;
- case 2: tipo_input = 'button';
- break;
- default: alert('La opción no es válida');
- break;
- }
- input_pe.setAttribute('type',tipo_input);
- input_pe.setAttribute('name',nombre);
- input_pe.setAttribute('id',id);
- input_pe.setAttribute('value',valor);
- input_pe.setAttribute('size',tamanio);
- return input_pe;
- }
- //crearColumna() Crea una columna para los Inputs recibidos
- function crearColumna(elemento){
- var columna = document.createElement("td");
- columna.appendChild(elemento);
- return columna;
- }
- //remove_fila(tabla, id_elem)
- function remove_fila(tabla, id_elem){
- var cadena ='';
- var tipo;
- switch(tabla){
- case 'valores_producto': cadena = 'Producto'; tipo=0;
- break;
- default: alert('La opción no es válida');
- break;
- }
- var valores_ = document.getElementById(tabla); //tbody
- var val_ = document.getElementById(id_elem);
- if(confirm('Desea Quitar este '+cadena+'\nAl presionar Aceptar será eliminado')){
- //busqueda del valor a borrar
- if (val_.hasChildNodes()){
- var children = val_.childNodes;
- for (var i = 0; i < children.length; i++){
- if(children[i].nodeType == 1){ //http://developer.mozilla.org/en/docs/DOM:element.nodeType //alert(children[i].nodeName);
- if(children[i].hasChildNodes()){
- var td = children[i].childNodes;
- for (var j = 0; j < td.length; j++){ //alert(td[j].nodeName); //Paso por INPUTS
- //alert('nombre: '+td[j].nodeName +'\ntipo: '+td[j].nodeType +'\nvalor: '+td[j].value+'\nid: '+td[j].id+'\nname: '+td[j].name);
- if(tipo == 0){
- if(td[j].name == 'producto_id[]'){
- remove_Clave(td[j].value,'producto');//alert('valor a buscar: '+td[j].value);
- }
- }
- }//Recorrido por lo elementos de la fila (Inputs), tomando solo el valor del campo vehiculo_id o chofer_id
- }//Si tiene hijos (columnas) los revisara uno por uno
- }//Recorre los items de la fila solo si son de tipo Elemento
- }//Pasa el ID de la fila como parametro.
- }//Si tiene hijos entra
- //fin busqueda
- valores_.removeChild(val_);
- alert('Se ha borrado el elemento de la Tabla '+cadena);
- if(tipo == 0){
- cuenta_producto--; //alert('cuenta producto:'+cuenta_producto);
- }
- corrigeID(tabla);
- }
- else{
- alert('El elemento '+cadena+' No será borrado');
- }
- return;
- }
- //add_Clave() Agregar la clave del vehiculo, chofer
- function add_Clave(clave, nombre_arreglo){
- var i=0;
- switch(nombre_arreglo){
- case 'producto': i = clave_producto.length; clave_producto[i]= clave; //var arr_= clave_producto; //contenido
- break;
- default: alert('La opción no es válida');
- break;
- }
- return;
- }
- //remove_Clave() Agregar la clave del productos
- function remove_Clave(clave, nombre_arreglo){
- var i=0;
- var existe=false;
- var pos;
- switch(nombre_arreglo){
- case 'producto': var arr_= clave_producto;
- break;
- default: alert('La opción no es válida');
- break;
- }
- var tmp = new Array();
- for(i=0; i < arr_.length; i++){
- if(arr_[i] == clave){
- pos = i;
- existe = true;
- break;
- }
- }
- if(existe){
- for(j=0, i=0; j < arr_.length; j++){
- if(j != pos){
- tmp[i++]=arr_[j];
- }
- }
- clave_producto = tmp;
- }
- return;
- }
- /* Esta Función cambiará los ID del grupo pasado como parámetro donde 0.- valores_producto
- * Los ID deben quedar en forma secuencial para que las funciones no tengan problemas para acceder a los datos y realizar las operaciones.
- */
- //corrige_ID(tabla_valores)
- function corrigeID(tabla_valores){
- var valores_ = document.getElementById(tabla_valores);
- var nuevo_id = -1;
- var tipo;
- switch(tabla_valores){
- case 'valores_producto': tipo=0; break;
- default: alert('La opción no es válida'); break;
- }
- if (valores_.hasChildNodes()){
- var children = valores_.childNodes;
- for (var i = 0; i < children.length; i++){
- if(children[i].nodeType == 1){ //http://developer.mozilla.org/en/docs/DOM:element.nodeType //alert(children[i].nodeName);
- if(children[i].hasChildNodes()){
- var tr = children[i].childNodes;
- for (var j = 0; j < tr.length; j++){ //alert(tr[j].nodeName);
- if(tr[j].hasChildNodes()){
- var ele = tr[j].childNodes;
- for (var k = 0; k < ele.length; k++){ //alert('nombre: '+ele[k].nodeName +'\ntipo: '+ele[k].nodeType +'\nvalor: '+ele[k].value+'\nid: '+ele[k].id+'\nname: '+ele[k].name);
- if(ele[k].nodeType == 1){ //alert(nuevo_id);
- if(tipo == 0){
- if(ele[k].name == 'producto_id[]')
- ele[k].id = 'producto_id'+nuevo_id;
- if(ele[k].name == 'cantidad[]')
- ele[k].id = 'cantidad'+nuevo_id;
- if(ele[k].name == 'descripcion[]')
- ele[k].id = 'descripcion'+nuevo_id;
- if(ele[k].name == 'umedida[]')
- ele[k].id = 'umedida'+nuevo_id;
- if(ele[k].name == 'precio[]')
- ele[k].id = 'precio'+nuevo_id;
- if(ele[k].name == 'importe[]')
- ele[k].id = 'importe'+nuevo_id;
- }
- }//Cambio de IDs
- }//Recorrido de elementos Input
- }//Evalua si tiene hijos
- }//Recorrido de elementos TD
- nuevo_id++;
- }//Evalua si tiene hijos
- }//Evalua si el nodo es de tipo elemento
- }//Recorrido de los hijos de valores_pe, valores_caseta, valores_vehiculo, valores_chofer
- //Se corrije el contador variable global
- if(tipo == 0)
- cuenta = nuevo_id;
- }//Evalua si tiene hijos el Nodo
- return true;
- }
- //calculaImporte(id_cantidad) recibe el ID del campo cantidad y a partir de este obtiene el precio (multiplica) y lo fija en importe
- function calculaImporte(id_cantidad){
- var tam = id_cantidad.charAt(id_cantidad.length-1);
- var cantidad = document.getElementById(id_cantidad);
- var precio = document.getElementById('precio'+tam);
- var importe = document.getElementById('importe'+tam);
- importe.value = precio.value * cantidad.value;
- return;
- }
- //function validar_llenado() Comprueba que los importes sean mayor a cero y devuelve TRUE. Si no es asi envia un mensaje de error y devuelve FALSE
- function validar_llenado(){
- var i, importe;
- if(cuenta_producto > 0){
- for(i=0; i < cuenta_producto; i++){
- importe = document.getElementById('importe'+i);
- if(importe.value == 0){
- alert('Debe escribir una cantidad para los productos');
- return false;
- }
- }
- }
- else{
- alert('Debe agregar productos a su pedido antes de guardar\nSi no desea guardar presione Cancelar');
- return false;
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement