Guest User

Untitled

a guest
Apr 22nd, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.08 KB | None | 0 0
  1. sub InitEanFromBiblionumber{
  2.     my $biblionumber = shift;
  3.     my $ean;
  4.     my $record = GetMarcBiblio($biblionumber);
  5.     if ( !$record ) {return '0';}
  6.     my $ean_10a;
  7.     if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
  8.         if ( !$record->field('010')) {return '0';}
  9.         if ( !$record->field('010')->subfield("a")) {return '0';}
  10.         $ean_10a=$record->field('010')->subfield("a");
  11.     }
  12.     else{
  13.         if ( !$record->field('020')) {return '0';}
  14.         if ( !$record->field('020')->subfield("a") ) {return '0';}
  15.         $ean_10a=$record->field('020')->subfield("a");
  16.     }
  17.     $ean_10a=~s/\D//g;
  18.     #warn Data::Dumper::Dumper $ean_10a;
  19.     if($ean_10a=~m/^[\d]{13}$/){
  20.         $ean=$ean_10a;
  21.     }
  22.     elsif(($ean_10a=~m/^[\d]{10}$/) or ($ean_10a=~m/^[\d]{9}$/)){
  23.         my $eancalc="978".$ean_10a;
  24.         my @eant=split('',$eancalc);
  25.         my $c13 = ((10-(($eant[0]+3*$eant[1]+$eant[2]+3*$eant[3]+$eant[4]+3*$eant[5]+$eant[6]+3*$eant[7]+$eant[8]+3*$eant[9]+$eant[10]+3*$eant[11])%10))%10);
  26.         $ean=substr($eancalc,0,12) .$c13;
  27.         #warn Data::Dumper::Dumper $c13;
  28.     }
  29.     else{
  30.         return '0';
  31.     }
  32.     #warn Data::Dumper::Dumper $ean;
  33.     return $ean;
  34. }
Add Comment
Please, Sign In to add comment