Commit cf8ba39f authored by Patrick Barroca's avatar Patrick Barroca 😁
Browse files

Merge branch 'hotline#89824_document_en_consultation_sur_place' into 'hotline'

hotline#89824 Webservice Carthame : Gestion document sur place et disponibilité

See merge request !3087
parents 9466a3e5 794e42cb
Pipeline #6798 failed with stage
in 32 minutes and 53 seconds
- ticket #89824 : SIGB Carthame : amélioration des indications de disponibilité et de réservabilité
\ No newline at end of file
......@@ -22,7 +22,9 @@ class Class_WebService_SIGB_Carthame_RecordResponseReader {
const STATUT_DISPO = 1;
const STATUT_RESERVE = 3;
const STATUT_PRETE = 4;
const STATUT_PRETE_FONC = 5;
const STATUT_EXCLU = 6;
const STATUT_INCONNU = 0;
const BARCODE_MIN_LEN = 4;
/** @var Class_WebService_XMLParser */
......@@ -34,6 +36,11 @@ class Class_WebService_SIGB_Carthame_RecordResponseReader {
/** @var Class_WebService_SIGB_Exemplaire */
protected $_current_exemplaire;
protected
$_current_exemplaire_status,
$_current_exemplaire_sfn,
$_current_exemplaire_sfp;
/**
* @return Class_WebService_SIGB_Carthame_RecordResponseReader
*/
......@@ -78,13 +85,45 @@ class Class_WebService_SIGB_Carthame_RecordResponseReader {
public function endSFo($data) {
$data = (int)$data;
$this->_current_exemplaire_status = $data;
$this->_current_exemplaire->setReservable(in_array($data, [self::STATUT_DISPO,
self::STATUT_RESERVE,
self::STATUT_PRETE_FONC,
self::STATUT_PRETE]));
}
public function endSFp($data) {
$this->_current_exemplaire_sfp = (string)$data;
}
(self::STATUT_DISPO === $data)
? $this->_current_exemplaire->setDisponibiliteLibre()
: $this->_current_exemplaire->setDisponibiliteIndisponible();
public function endSFn($data) {
$this->_current_exemplaire_sfn = (string)$data;
}
protected function _updateItemAvailability(){
if (self::STATUT_PRETE == $this->_current_exemplaire_status)
return $this->_current_exemplaire->setDisponibiliteEnPret();
if (self::STATUT_RESERVE == $this->_current_exemplaire_status)
return $this->_current_exemplaire->setDisponibiliteDejaReserve();
if (self::STATUT_PRETE_FONC == $this->_current_exemplaire_status)
return (strlen($this->_current_exemplaire_sfp) > 0)
? $this->_current_exemplaire->setDisponibilite($this->_current_exemplaire_sfp)
: $this->_current_exemplaire->setDisponibiliteIndisponible();
if (self::STATUT_EXCLU == $this->_current_exemplaire_status)
return (strlen($this->_current_exemplaire_sfn) > 0)
? $this->_current_exemplaire->setDisponibilite($this->_current_exemplaire_sfn)
: $this->_current_exemplaire->setDisponibiliteExcluDuPret();
if (self::STATUT_DISPO == $this->_current_exemplaire_status)
return $this->_current_exemplaire->setDisponibiliteLibre();
$this->_current_exemplaire->setDisponibiliteIndisponible();
}
......@@ -96,7 +135,25 @@ class Class_WebService_SIGB_Carthame_RecordResponseReader {
public function endF941($data) {
$this->_updateItemAvailability();
$this->_notice->addExemplaire($this->_current_exemplaire);
$this->_wipeExemplaire();
}
protected function _wipeExemplaire(){
$this->_current_exemplaire = null;
$this->_current_exemplaire_status = '';
$this->_current_exemplaire_sfp = '';
$this->_current_exemplaire_sfn = '';
}
public function endReservation($data){
$is_reservable = ( (string)$data == 'T' );
foreach ($this->_notice->getExemplaires() as $exemplaire)
$exemplaire->setReservable($is_reservable && $exemplaire->isReservable());
}
}
?>
\ No newline at end of file
......@@ -65,7 +65,8 @@ class Class_WebService_SIGB_Exemplaire {
'DISPO_TRANSIT' => $this->_('En transit'),
'DISPO_DEJA_RESERVE' => $this->_('Réservé'),
'DISPO_EN_COMMANDE' => $this->_('En commande'),
'DISPO_EN_TRANSFERT' => $this->_('En transfert')
'DISPO_EN_TRANSFERT' => $this->_('En transfert'),
'DISPO_EXCLU_DU_PRET' => $this->_('Exclu du prêt')
];
return isset($messages[$code]) ? $messages[$code]: '';
}
......@@ -363,6 +364,11 @@ class Class_WebService_SIGB_Exemplaire {
return $this;
}
public function setDisponibiliteExcluDuPret() {
$this->setDisponibilite($this->message('DISPO_EXCLU_DU_PRET'));
return $this;
}
public function setDisponibilite($disponibilite){
$this->disponibilite = $disponibilite;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment