public static function update($paquete) { if ($idCaja = BbiCaja::getIdCaja($paquete->getTituloVial())) { if ($caja = node_load($idCaja)) { $ewrapperCaja = entity_metadata_wrapper('node', $caja); //Le metemos la fecha, si no hay ninguan todavía... if (!isset($caja->field_caja_fec_primer_vial_lleno['und'][0]['value'])) { $ewrapperCaja->field_caja_fec_primer_vial_lleno->set($paquete->getFechaVialLleno()); } //Le sumamos 1 a viales llenos si no tienen ya fecha de extracción, //quiere decir que ya se metió en la tienda antes. $vial = node_load(bbiLab_getIdNodeByTitle($paquete->getTituloVial())); if (!isset($vial->field_vial_fecha_de_extracci_n['und'][0]['value'])) { $vialesEnCaja = (int) $ewrapperCaja->field_caja_viales_llenos->value() + 1; $ewrapperCaja->field_caja_viales_llenos->set((int) $vialesEnCaja); //Ahora que sabemos que este vial es la primera vez que entra, se puede mandar un email al jefe... $mensaje = 'Ha entrado el vial ' . $paquete->getTituloVial() . ' proveniente del ayuntamiento de ' . $paquete->getAyuntamiento() . ' del veterinario ' . $paquete->getVeterinario(); simple_mail_queue('*****@*****.**', '*****@*****.**', 'ADN Perros ' . 'Nuevo vial de ' . $paquete->getAyuntamiento(), $mensaje); simple_mail_queue('*****@*****.**', '*****@*****.**', 'ADN Perros ' . 'Nuevo vial de ' . $paquete->getAyuntamiento(), $mensaje); } $ewrapperCaja->save(); return TRUE; } } return FALSE; }
public static function process_item($item, $serverName) { $resultado = FALSE; $data = $item->data; $paquete = $data->paquete; //Si no existe el vial se meterá en la cola de errores. if ($vial = node_load(bbiLab_getIdNodeByTitle($paquete->getTituloVial()))) { //Vamos a ver antes de guardar los datos si el vial que viene tiene fecha de extracción, //si no la tiene es que en segcan no devería existir y hay que crearla nueva, //si tiene fecha de extracción se envia para actualizar datos. if (isset($vial->field_vial_fecha_de_extracci_n['und'][0]['value'])) { $operacionParaSegcan = 2; //Lo actualizamos } else { $operacionParaSegcan = 1; //Lo creamos } foreach ($data->operaciones as $operacion) { switch ($operacion) { case 1: //Crear????? nada de momento break; case 2: //actualizar //Primero vamos a ver si es del mismo ayuntamiento y veterinario. if ($vial->field_ayuntamiento['und'][0]['target_id'] != $paquete->getAyuntamiento()) { watchdog('conector', 'Se ha intentado actualizar el vial ' . $paquete->getTituloVial() . ' pero no coincidían los ayntamientos.'); return false; } if ($vial->field_veterinario['und'][0]['target_id'] != $paquete->getVeterinario()) { watchdog('conector', 'Se ha intentado actualizar el vial ' . $paquete->getTituloVial() . ' pero no coincidía el veternianrio.'); return false; } //Antes de guardar el vial vamos a actualizar la caja si viene de un segeco. //Miramos le fecha de vial lleno para saberlo. if ($paquete->getFechaVialLleno()) { BbiCaja::update($paquete); } $resultado = BbiVial::update($paquete); //Si viene el titulo de la chapa la creamos o la editamos si ya está en tienda if ($paquete->getTituloChapa()) { //Mirar si existe la chapa en el vial y se actualiza los datos if ($idChapa = BbiVial::getChapa(bbiLab_getIdNodeByTitle($paquete->getTituloVial()))) { $resultado = BbiChapa::update($paquete, $idChapa); } else { //Si no existe se crea la chapa $resultado = BbiChapa::insert($paquete); } } //No tiene fecha extraccion... y viene de algún segeco // hay que eliminar la chapa, si la hubiese //Esto quiere decir que se ha editado la solicitud y se ha cambiado de vial. if (!$paquete->getFechaVialLleno() && $serverName != 'conectorSegcan') { if ($vial = node_load(bbiLab_getIdNodeByTitle($paquete->getTituloVial()))) { if ($idChapa = BbiVial::getChapa($vial->nid)) { watchdog('prueba vial editado', 'chapa que se va a eliminar ' . $idChapa); //Si teien chapa la eliminamos node_delete($idChapa); watchdog('prueba vial editado', 'chapa eliminada ' . $idChapa); //ahora limpiamos el vial $vial->field_vial_fecha_de_extracci_n['und'] = NULL; $vial->field_vial_estado['und'] = NULL; $vial->field_vial_localizacion['und'][0]['value'] = 3; node_save($vial); watchdog('prueba vial editado', 'vial se ha quitado la fecha de extracción ' . $vial->title); //Le restamos 1 a la caja. $caja = node_load(BbiCaja::getIdCaja($paquete->getTituloVial())); watchdog('prueba vial editado', 'se le va a restar uno a la caja ' . $caja->field_caja_viales_llenos['und'][0]['value']); $caja->field_caja_viales_llenos['und'][0]['value'] -= 1; node_save($caja); watchdog('prueba vial editado', 'se le ha restado una a la caja ' . $caja->field_caja_viales_llenos['und'][0]['value']); } } } //Si viene de segcan habrá que mirar de que ayntamiento es y mandarlo para allí //Si viene de algún ayntamiento hay que mandarlo a segcan $tipoSegeco = BbiConector::getTipoDeSegeco($serverName); if ($tipoSegeco == 'Segcan') { if ($ayto = $paquete->getAyuntamiento()) { //Operaciones para los segecos, $data->operaciones = array(2, 4); //Update vial y chapa si la hubiese BbiBuffer::insert_item_into_buffer($data, $ayto); return TRUE; } else { return FALSE; } } else { //Hay que mandar si es actualizar el vial o es insertar un vial nuevo. //Si viene de algún ayto lo mandamos a segcan, cuando haya mas segcan ya veremos $data->operaciones = array($operacionParaSegcan); BbiBuffer::insert_item_into_buffer($data, 'segcan'); return TRUE; } break; } } } else { watchdog('conector', 'Se ha intentado actualizar el vial ' . $paquete->getTituloVial() . ' pero no existía en la tienda'); } return $resultado; }