-
Delivery.pm
204 205 1 1 package webshop::Delivery; 2 2 3 3 use base "Contenido::Document"; 4 use JSON::XS; 5 our $json = JSON::XS->new->utf8; 6 4 7 sub extra_properties 5 8 { 6 9 return ( … … 12 15 }, 13 16 { 'attr' => 'dtime', 'hidden' => 1 }, 14 17 { 'attr' => 'price', 'type' => 'string', 'rusname' => 'Стоимость доставки (NN или NN%)', default => 0 }, 18 { 'attr' => 'price_modify', 'type' => 'cost_level', 'rusname' => 'Стоимость доставки с учетом стоимости заказа' }, 15 19 { 'attr' => 'abstr', 'type' => 'text', 'rusname' => 'Краткое описание' }, 16 20 { 'attr' => 'fields', 'type' => 'status_multi', 'rusname' => 'Поля, необходимые к заполнению', 17 21 'cases' => [ … … 25 29 ) 26 30 } 27 31 32 sub price_actual 33 { 34 my $self = shift; 35 my $sum = shift; 36 my $price = $self->price; 37 $price = defined $price && $price =~ /^\d+$/ ? $price : 0; 38 39 if ( $sum ) { 40 if ( $self->price_modify ) { 41 my $modify = $json->decode( $self->price_modify ); 42 if ( ref $modify eq 'ARRAY' && @$modify ) { 43 foreach my $mod ( @$modify ) { 44 if ( $mod->{level} <= $sum ) { 45 $price = $mod->{cost}; 46 } 47 } 48 } 49 } 50 return $price; 51 } else { 52 return $price; 53 } 54 } 55 28 56 sub class_name 29 57 { 30 58 return 'Способ доставки';