Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sub InitEanFromBiblionumber{
- my $biblionumber = shift;
- my $ean;
- my $record = GetMarcBiblio($biblionumber);
- if ( !$record ) {return '0';}
- my $ean_10a;
- if ( C4::Context->preference("marcflavour") eq "UNIMARC" ) {
- if ( !$record->field('010')) {return '0';}
- if ( !$record->field('010')->subfield("a")) {return '0';}
- $ean_10a=$record->field('010')->subfield("a");
- }
- else{
- if ( !$record->field('020')) {return '0';}
- if ( !$record->field('020')->subfield("a") ) {return '0';}
- $ean_10a=$record->field('020')->subfield("a");
- }
- $ean_10a=~s/\D//g;
- #warn Data::Dumper::Dumper $ean_10a;
- if($ean_10a=~m/^[\d]{13}$/){
- $ean=$ean_10a;
- }
- elsif(($ean_10a=~m/^[\d]{10}$/) or ($ean_10a=~m/^[\d]{9}$/)){
- my $eancalc="978".$ean_10a;
- my @eant=split('',$eancalc);
- 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);
- $ean=substr($eancalc,0,12) .$c13;
- #warn Data::Dumper::Dumper $c13;
- }
- else{
- return '0';
- }
- #warn Data::Dumper::Dumper $ean;
- return $ean;
- }
Add Comment
Please, Sign In to add comment