• 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 'Способ доставки';