Buenas tardes, hace ya dos dias que me estoy volviendo loco con este asunto, probe de mil maneras y no lo puedo destrabar.
Por favor necesito una mano, o al menos una idea por donde empezar porque no logro encontrar la solucion.
Dentro de la funcion Eliminar quiero agregar la resta del importe de la fila que se elimino a un total.
Código PHP:
function eliminarFila($id_campo, $cant_campos){
$respuesta = new xajaxResponse();
$respuesta->addRemove("rowDetalle_$id_campo"); //borro el detalle que indica el parametro id_campo
-- $cant_campos; //Resto uno al numero de campos y si es cero borro todo
if($cant_campos == 0){
$respuesta->addRemove("rowDetalle_0");
$respuesta->addAssign("num_campos", "value", "0"); //dejo en cero la cantidad de campos para seguir agregando si asi lo desea el usuario
$respuesta->addAssign("cant_campos", "value", "0");
}
$respuesta->addAssign("cant_campos", "value", $cant_campos);
return $respuesta;
}
en la funcion agregarFila pude hacer la suma del importe agregado al total de esta manera:
Código PHP:
<?
function agregarFila($formulario){
$respuesta = new xajaxResponse();
extract($formulario);
$id_campos = $cant_campos = $num_campos+1;
$str_html_td1 = $cod .'<input type="hidden" id="cod' . $id_campos . '" name="cod' . $id_campos . '" value="' . $cod . '"/>' ;
$str_html_td2 = $descripcion.'<input type="hidden" id="descripcion' . $id_campos . '" name="descripcion' . $id_campos . '" value="' . $descripcion . '"/>' ;
$str_html_td3 = $cantidad .'<input type="hidden" id="cantidad' . $id_campos . '" name="cantidad' . $id_campos . '" value="' . $cantidad . '"/>' ;
$str_html_td4 = $precioconiva .'<input type="hidden" id="precioconiva' . $id_campos . '" name="precioconiva' . $id_campos . '" value="' . $precioconiva . '"/>' ;
$str_html_td5 = $importe.'<input type="hidden" id="importe' . $id_campos . '" name="importe' . $id_campos . '" value="' . $importe . '"/>' ;
$str_html_td6 = '<img src="imagenes/delete.png" width="16" height="16" alt="Eliminar" onclick="if(confirm(\'Realmente desea eliminar este detalle?\')){xajax_eliminarFila('. $id_campos .', proyecto.cant_campos.value);}"/>';
if($num_campos == 0){ // creamos un encabezado de lo contrario solo agragamos la fila
$respuesta->addCreate("tbDetalle", "tr", "rowDetalle_0");
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_01"); //creamos los campos
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_02");
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_03");
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_04");
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_05");
$respuesta->addCreate("rowDetalle_0", "th", "tdDetalle_06");
$respuesta->addAssign("tdDetalle_01", "innerHTML", "Codigo"); //asignamos el contenido
$respuesta->addAssign("tdDetalle_02", "innerHTML", "Descripcion");
$respuesta->addAssign("tdDetalle_03", "innerHTML", "Cantidad");
$respuesta->addAssign("tdDetalle_04", "innerHTML", "P. Unit");
$respuesta->addAssign("tdDetalle_05", "innerHTML", "Importe");
$respuesta->addAssign("tdDetalle_06", "innerHTML", "Eliminar");
}
$idRow = "rowDetalle_$id_campos";
$idTd = "tdDetalle_$id_campos";
$respuesta->addCreate("tbDetalle", "tr", $idRow);
$respuesta->addCreate($idRow, "td", $idTd."1"); //creamos los campos
$respuesta->addCreate($idRow, "td", $idTd."2");
$respuesta->addCreate($idRow, "td", $idTd."3");
$respuesta->addCreate($idRow, "td", $idTd."4");
$respuesta->addCreate($idRow, "td", $idTd."5");
$respuesta->addCreate($idRow, "td", $idTd."6");
/*
* Esta parte podria estar dentro de algun ciclo iterativo */
$respuesta->addAssign($idTd."1", "innerHTML", $str_html_td1); //asignamos el contenido
$respuesta->addAssign($idTd."2", "innerHTML", $str_html_td2);
$respuesta->addAssign($idTd."3", "innerHTML", $str_html_td3);
$respuesta->addAssign($idTd."4", "innerHTML", $str_html_td4);
$respuesta->addAssign($idTd."5", "innerHTML", $str_html_td5);
$respuesta->addAssign($idTd."6", "innerHTML", $str_html_td6);
/* aumentamos el contador de campos */
$respuesta->addAssign("num_campos","value", $id_campos);
$respuesta->addAssign("cant_campos" ,"value", $id_campos);
$total += $importe;
return $respuesta;
}
Pero si a la funcion Eliminar, le agrego: $total -= $importe;
Me descuenta el ultimo importe y no el de la fila eliminada (en el caso que no sea la ultima porsupuesto)
Desde ya gracias por cualquier ayuda
Saludos!